summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models/parsetreemodel.cpp
diff options
context:
space:
mode:
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 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