summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics/rbviewport.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-08-04 09:16:52 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-08-04 09:16:52 +0000
commit49865b23f601e636c9a80b21826fc607f1964eb5 (patch)
treeeb7959fd8aa5c572842e8d295440348cb17fc3cf /utils/themeeditor/graphics/rbviewport.cpp
parent2db08d41536b875f35b055f8e0bb3845b47a7ba3 (diff)
downloadrockbox-49865b23f601e636c9a80b21826fc607f1964eb5.zip
rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.gz
rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.bz2
rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.xz
Theme Editor: Began implementing code generation for movable viewports
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27691 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/graphics/rbviewport.cpp')
-rw-r--r--utils/themeeditor/graphics/rbviewport.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/utils/themeeditor/graphics/rbviewport.cpp b/utils/themeeditor/graphics/rbviewport.cpp
index fe17ebb..33749fd 100644
--- a/utils/themeeditor/graphics/rbviewport.cpp
+++ b/utils/themeeditor/graphics/rbviewport.cpp
@@ -34,16 +34,19 @@
#include "parsetreemodel.h"
#include "tag_table.h"
#include "skin_parser.h"
+#include "skindocument.h"
/* Pixels/second of text scrolling */
const double RBViewport::scrollRate = 30;
-RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
+RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info,
+ ParseTreeNode* pNode)
: RBMovable(info.screen()), foreground(info.screen()->foreground()),
background(info.screen()->background()), textOffset(0,0),
screen(info.screen()), textAlign(Left), showStatusBar(false),
statusBarTexture(":/render/statusbar.png"),
- leftGraphic(0), centerGraphic(0), rightGraphic(0), scrollTime(0)
+ leftGraphic(0), centerGraphic(0), rightGraphic(0), scrollTime(0),
+ node(pNode), doc(info.document())
{
setFlags(ItemIsSelectable | ItemIsMovable | ItemSendsGeometryChanges);
@@ -67,7 +70,6 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
}
else
{
- int param = 0;
QString ident;
int x,y,w,h;
/* Rendering one of the other types of viewport */
@@ -75,7 +77,7 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
{
case '\0':
customUI = false;
- param = 0;
+ baseParam= 0;
break;
case 'l':
@@ -85,13 +87,13 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
if(!screen->viewPortDisplayed(ident))
hide();
info.screen()->loadViewport(ident, this);
- param = 1;
+ baseParam= 1;
break;
case 'i':
/* Custom UI Viewport */
customUI = true;
- param = 1;
+ baseParam= 1;
if(node->params[0].type == skin_tag_parameter::DEFAULT)
{
setVisible(true);
@@ -104,6 +106,7 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
break;
}
/* Now we grab the info common to all viewports */
+ int param = baseParam;
x = node->params[param++].data.number;
if(x < 0)
x = info.screen()->boundingRect().right() + x;
@@ -301,7 +304,15 @@ void RBViewport::showPlaylist(const RBRenderInfo &info, int start,
void RBViewport::saveGeometry()
{
+ QRectF bounds = boundingRect();
+ QPointF origin = pos();
+ node->modParam(static_cast<int>(origin.x()), baseParam);
+ node->modParam(static_cast<int>(origin.y()), baseParam + 1);
+ node->modParam(static_cast<int>(bounds.width()), baseParam + 2);
+ node->modParam(static_cast<int>(bounds.height()), baseParam + 3);
+
+ doc->genCode();
}
void RBViewport::alignLeft()