From 481bcf263292d2eeb13891ae5a4ff0116d7e7c50 Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Thu, 24 Jun 2010 18:55:04 +0000 Subject: Theme Editor: Renderer now allows multiple viewports to share an identifier git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27112 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/graphics/rbscreen.cpp | 39 ++++++++++++++++++++++++++------- utils/themeeditor/graphics/rbscreen.h | 7 ++---- 2 files changed, 33 insertions(+), 13 deletions(-) (limited to 'utils/themeeditor') diff --git a/utils/themeeditor/graphics/rbscreen.cpp b/utils/themeeditor/graphics/rbscreen.cpp index a090c2f9f2..d37050b0b5 100644 --- a/utils/themeeditor/graphics/rbscreen.cpp +++ b/utils/themeeditor/graphics/rbscreen.cpp @@ -70,8 +70,11 @@ RBScreen::~RBScreen() QMap::iterator i; for(i = fonts.begin(); i != fonts.end(); i++) - if(*i) - delete (*i); + delete (*i); + + QMap*>::iterator it; + for(it = namedViewports.begin(); it != namedViewports.end(); it++) + delete (*it); } QPainterPath RBScreen::shape() const @@ -99,13 +102,30 @@ void RBScreen::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, } } +void RBScreen::loadViewport(QString name, RBViewport *view) +{ + QList* list; + if(namedViewports.value(name, 0) == 0) + { + list = new QList; + list->append(view); + namedViewports.insert(name, list); + } + else + { + list = namedViewports.value(name, 0); + list->append(view); + } +} + void RBScreen::showViewport(QString name) { if(namedViewports.value(name, 0) == 0) return; - namedViewports.value(name)->show(); - update(); + QList* list = namedViewports.value(name, 0); + for(int i = 0; i < list->count(); i++) + list->at(i)->show(); } void RBScreen::loadFont(int id, RBFont* font) @@ -143,11 +163,14 @@ void RBScreen::makeCustomUI(QString id) { if(namedViewports.value(id, 0) != 0) { - QMap::iterator i; + QMap*>::iterator i; for(i = namedViewports.begin(); i != namedViewports.end(); i++) - (*i)->clearCustomUI(); - namedViewports.value(id)->makeCustomUI(); - namedViewports.value(id)->show(); + for(int j = 0; j < (*i)->count(); j++) + (*i)->at(j)->clearCustomUI(); + for(int i = 0; i < namedViewports.value(id)->count(); i++) + namedViewports.value(id)->at(i)->makeCustomUI(); + for(int i = 0; i < namedViewports.value(id)->count(); i++) + namedViewports.value(id)->at(i)->show(); } } diff --git a/utils/themeeditor/graphics/rbscreen.h b/utils/themeeditor/graphics/rbscreen.h index 95a110a4d5..f35aef680b 100644 --- a/utils/themeeditor/graphics/rbscreen.h +++ b/utils/themeeditor/graphics/rbscreen.h @@ -46,10 +46,7 @@ public: int getWidth() const{ return width; } int getHeight() const{ return height; } - void loadViewport(QString name, RBViewport* view) - { - namedViewports.insert(name, view); - } + void loadViewport(QString name, RBViewport* view); void showViewport(QString name); void loadImage(QString name, RBImage* image) @@ -78,7 +75,7 @@ private: ProjectModel* project; - QMap namedViewports; + QMap*> namedViewports; QMap images; QMap* settings; QMap fonts; -- cgit