summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models
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
parent8da13a5d4bd69884242cdb4170d451239aa23d03 (diff)
downloadrockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.tar.gz
rockbox-2f68e5be5964a24d68b7cd7816228ce340da3845.zip
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')
-rw-r--r--utils/themeeditor/models/parsetreemodel.cpp42
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp2
2 files changed, 41 insertions, 3 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index ccae865290..47b24174b7 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -290,7 +290,9 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
290 settings.insert("themebase", base.canonicalPath()); 290 settings.insert("themebase", base.canonicalPath());
291 } 291 }
292 292
293 /* Finding imagebase and determining remote/wps status */
293 bool remote = false; 294 bool remote = false;
295 bool wps = false;
294 if(file) 296 if(file)
295 { 297 {
296 QString skinFile = *file; 298 QString skinFile = *file;
@@ -304,14 +306,50 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
304 QString extension = decomp.last(); 306 QString extension = decomp.last();
305 if(extension[0] == 'r') 307 if(extension[0] == 'r')
306 remote = true; 308 remote = true;
309 if(extension.right(3) == "wps")
310 wps = true;
311 }
312
313 /* Rendering SBS, if necessary */
314 RBScreen* sbsScreen = 0;
315 if(wps && device->data("rendersbs").toBool())
316 {
317 QString sbsFile = settings.value(remote ? "rsbs" : "sbs", "");
318 sbsFile.replace("/.rockbox" , settings.value("themebase",""));
319
320 if(QFile::exists(sbsFile))
321 {
322 QFile sbs(sbsFile);
323 sbs.open(QFile::ReadOnly | QFile::Text);
324 ParseTreeModel sbsModel(QString(sbs.readAll()).toAscii());
325
326 if(sbsModel.root != 0)
327 {
328 RBRenderInfo sbsInfo(&sbsModel, project, &settings, device,
329 sbsScreen);
330
331 sbsScreen = new RBScreen(sbsInfo, remote);
332 scene->addItem(sbsScreen);
333
334 sbsInfo = RBRenderInfo(&sbsModel, project, &settings, device,
335 sbsScreen);
336 sbsModel.root->render(sbsInfo);
337 }
338
339 }
307 } 340 }
308 341
309 RBScreen* screen = 0; 342 RBScreen* screen = 0;
310 RBRenderInfo info(this, project, &settings, device, screen); 343 RBRenderInfo info(this, project, &settings, device, screen);
311 344
312 /* Adding the screen */ 345 /* Adding the screen */
313 screen = new RBScreen(info, remote); 346 if(sbsScreen)
314 scene->addItem(screen); 347 screen = new RBScreen(info, remote, sbsScreen->getCustomUI());
348 else
349 screen = new RBScreen(info, remote);
350
351 if(!sbsScreen)
352 scene->addItem(screen);
315 353
316 info = RBRenderInfo(this, project, &settings, device, screen); 354 info = RBRenderInfo(this, project, &settings, device, screen);
317 355
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index f1ee3b27ca..ae83f1aadf 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -629,7 +629,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
629 { 629 {
630 case 'd': 630 case 'd':
631 /* %wd */ 631 /* %wd */
632 /* Disable SBS rendering */ 632 info.screen()->breakSBS();
633 return true; 633 return true;
634 634
635 case 'e': 635 case 'e':