summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models/parsetreemodel.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-07-03 22:57:42 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-07-03 22:57:42 +0000
commit2f68e5be5964a24d68b7cd7816228ce340da3845 (patch)
treef3099d16b09d1cd6ac1f7d431978e84413ef4759 /utils/themeeditor/models/parsetreemodel.cpp
parent8da13a5d4bd69884242cdb4170d451239aa23d03 (diff)
downloadrockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.zip
rockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.tar.gz
rockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.tar.bz2
rockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.tar.xz
Theme Editor: SBS will now render underneath WPS, if both are present in project
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27265 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/models/parsetreemodel.cpp')
-rw-r--r--utils/themeeditor/models/parsetreemodel.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index ccae865..47b2417 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -290,7 +290,9 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
settings.insert("themebase", base.canonicalPath());
}
+ /* Finding imagebase and determining remote/wps status */
bool remote = false;
+ bool wps = false;
if(file)
{
QString skinFile = *file;
@@ -304,14 +306,50 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
QString extension = decomp.last();
if(extension[0] == 'r')
remote = true;
+ if(extension.right(3) == "wps")
+ wps = true;
+ }
+
+ /* Rendering SBS, if necessary */
+ RBScreen* sbsScreen = 0;
+ if(wps && device->data("rendersbs").toBool())
+ {
+ QString sbsFile = settings.value(remote ? "rsbs" : "sbs", "");
+ sbsFile.replace("/.rockbox" , settings.value("themebase",""));
+
+ if(QFile::exists(sbsFile))
+ {
+ QFile sbs(sbsFile);
+ sbs.open(QFile::ReadOnly | QFile::Text);
+ ParseTreeModel sbsModel(QString(sbs.readAll()).toAscii());
+
+ if(sbsModel.root != 0)
+ {
+ RBRenderInfo sbsInfo(&sbsModel, project, &settings, device,
+ sbsScreen);
+
+ sbsScreen = new RBScreen(sbsInfo, remote);
+ scene->addItem(sbsScreen);
+
+ sbsInfo = RBRenderInfo(&sbsModel, project, &settings, device,
+ sbsScreen);
+ sbsModel.root->render(sbsInfo);
+ }
+
+ }
}
RBScreen* screen = 0;
RBRenderInfo info(this, project, &settings, device, screen);
/* Adding the screen */
- screen = new RBScreen(info, remote);
- scene->addItem(screen);
+ if(sbsScreen)
+ screen = new RBScreen(info, remote, sbsScreen->getCustomUI());
+ else
+ screen = new RBScreen(info, remote);
+
+ if(!sbsScreen)
+ scene->addItem(screen);
info = RBRenderInfo(this, project, &settings, device, screen);