1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Began in implementing tag rendering, %X tag now recognized

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27043 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-06-22 07:55:50 +00:00
parent 08d09e678f
commit ac9287bdb5
11 changed files with 177 additions and 18 deletions

View file

@ -32,6 +32,8 @@
#include <QMap>
#include <QDir>
#include <iostream>
ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
QAbstractItemModel(parent)
{
@ -293,6 +295,16 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
settings.insert("themebase", base.canonicalPath());
}
if(file)
{
QString skinFile = *file;
QStringList decomp = skinFile.split("/");
skinFile = decomp[decomp.count() - 1];
skinFile.chop(skinFile.length() - skinFile.lastIndexOf("."));
settings.insert("imagepath", settings.value("themebase","") + "/wps/" +
skinFile);
}
RBScreen* screen = 0;
RBRenderInfo info(this, project, &settings, screen);

View file

@ -475,6 +475,7 @@ ParseTreeNode* ParseTreeNode::getParent() const
return parent;
}
/* This version is called for the root node and for viewports */
void ParseTreeNode::render(const RBRenderInfo& info)
{
/* Parameters don't get rendered */
@ -500,5 +501,41 @@ void ParseTreeNode::render(const RBRenderInfo& info)
}
rendered = new RBViewport(element, info);
for(int i = element->params_count; i < children.count(); i++)
children[i]->render(info, dynamic_cast<RBViewport*>(rendered));
}
/* This version is called for logical lines and such */
void ParseTreeNode::render(const RBRenderInfo &info, RBViewport* viewport)
{
if(element->type == LINE)
{
for(int i = 0; i < children.count(); i++)
children[i]->render(info, viewport);
viewport->newline();
}
else if(element->type == TAG)
{
QString filename;
/* Two switch statements to narrow down the tag name */
switch(element->tag->name[0])
{
case 'X':
switch(element->tag->name[1])
{
case '\0':
/* %X tag */
filename = QString(element->params[0].data.text);
info.screen()->setBackdrop(filename);
break;
}
break;
}
}
}

View file

@ -60,6 +60,7 @@ public:
}
void render(const RBRenderInfo& info);
void render(const RBRenderInfo &info, RBViewport* viewport);
private:
ParseTreeNode* parent;