From e1d8a3dc63391098f9381a3cb33d73e69b46c006 Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Mon, 21 Jun 2010 20:11:58 +0000 Subject: Theme Editor: Reworked information passing among render functions, now loads all viewports and shows Custom UI viewport in blue git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27026 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/models/parsetreemodel.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'utils/themeeditor/models/parsetreemodel.cpp') diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index 41cecc4..4e94bfa 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp @@ -29,6 +29,8 @@ #include #include +#include +#include ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): QAbstractItemModel(parent) @@ -270,23 +272,40 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value, return true; } -QGraphicsScene* ParseTreeModel::render(ProjectModel* project) +QGraphicsScene* ParseTreeModel::render(ProjectModel* project, + const QString* file) { scene->clear(); /* Setting the background */ scene->setBackgroundBrush(QBrush(QPixmap(":/render/scenebg.png"))); + /* Preparing settings */ + QMap settings; + if(project) + settings = project->getSettings(); + + /* Setting themebase if it can't be derived from the project */ + if(settings.value("themebase", "") == "" && file && QFile::exists(*file)) + { + QDir base(*file); + base.cdUp(); + settings.insert("themebase", base.canonicalPath()); + } + + RBScreen* screen = 0; + RBRenderInfo info(this, project, &settings, screen); + /* Adding the screen */ - RBScreen* screen = new RBScreen(project); + screen = new RBScreen(info); scene->addItem(screen); - RBRenderInfo info(this, project, screen); + info = RBRenderInfo(this, project, &settings, screen); + /* Rendering the tree */ if(root) root->render(info); - return scene; } -- cgit v1.1