mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
Theme Editor: Co Used a more efficient/less error-prone system for rendering SBS documents underneath WPS documents
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27765 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
77b682571f
commit
d1a392a0e9
10 changed files with 71 additions and 45 deletions
|
|
@ -23,12 +23,11 @@
|
|||
|
||||
RBRenderInfo::RBRenderInfo(ParseTreeModel* model, ProjectModel* project,
|
||||
SkinDocument* doc, QMap<QString, QString>* settings,
|
||||
DeviceState* device, RBScreen* screen,
|
||||
RBScreen* sbsScreen)
|
||||
DeviceState* device, RBScreen* screen)
|
||||
:mProject(project), mDoc(doc),
|
||||
mSettings(settings),
|
||||
mDevice(device), mScreen(screen),
|
||||
mSbsScreen(sbsScreen), mModel(model)
|
||||
mModel(model)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -44,7 +43,6 @@ RBRenderInfo::RBRenderInfo(const RBRenderInfo &other)
|
|||
mDevice = other.mDevice;
|
||||
mDoc = other.mDoc;
|
||||
mScreen = other.mScreen;
|
||||
mSbsScreen = other.mSbsScreen;
|
||||
mModel = other.mModel;
|
||||
}
|
||||
|
||||
|
|
@ -55,7 +53,6 @@ const RBRenderInfo& RBRenderInfo::operator=(const RBRenderInfo& other)
|
|||
mDevice = other.mDevice;
|
||||
mDoc = other.mDoc;
|
||||
mScreen = other.mScreen;
|
||||
mSbsScreen = other.mSbsScreen;
|
||||
mModel = other.mModel;
|
||||
|
||||
return *this;
|
||||
|
|
|
|||
|
|
@ -35,8 +35,7 @@ class RBRenderInfo
|
|||
public:
|
||||
RBRenderInfo(ParseTreeModel* model, ProjectModel* project,
|
||||
SkinDocument* doc, QMap<QString, QString>* settings,
|
||||
DeviceState* device, RBScreen* screen,
|
||||
RBScreen* sbsScreen = 0);
|
||||
DeviceState* device, RBScreen* screen);
|
||||
RBRenderInfo();
|
||||
RBRenderInfo(const RBRenderInfo& other);
|
||||
virtual ~RBRenderInfo();
|
||||
|
|
@ -48,7 +47,6 @@ public:
|
|||
SkinDocument* document() const{ return mDoc; }
|
||||
QMap<QString, QString>* settings() const{ return mSettings; }
|
||||
RBScreen* screen() const{ return mScreen; }
|
||||
RBScreen* sbsScreen() const{ return mSbsScreen; }
|
||||
ParseTreeModel* model() const{ return mModel; }
|
||||
|
||||
private:
|
||||
|
|
@ -57,7 +55,6 @@ private:
|
|||
QMap<QString, QString>* mSettings;
|
||||
DeviceState* mDevice;
|
||||
RBScreen* mScreen;
|
||||
RBScreen* mSbsScreen;
|
||||
ParseTreeModel* mModel;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include <QGraphicsItem>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
|
@ -33,4 +34,3 @@ RBScene::RBScene(QObject* parent)
|
|||
RBScene::~RBScene()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
|
||||
#include <QGraphicsScene>
|
||||
|
||||
class RBScreen;
|
||||
|
||||
class RBScene : public QGraphicsScene
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
RBScreen::RBScreen(const RBRenderInfo& info, bool remote,
|
||||
QGraphicsItem *parent)
|
||||
:QGraphicsItem(parent), backdrop(0), project(project),
|
||||
albumArt(0), customUI(0)
|
||||
albumArt(0), customUI(0), defaultView(0)
|
||||
{
|
||||
|
||||
setAcceptHoverEvents(true);
|
||||
|
|
@ -221,11 +221,29 @@ void RBScreen::makeCustomUI(QString id)
|
|||
}
|
||||
}
|
||||
|
||||
void RBScreen::endSbsRender()
|
||||
{
|
||||
sbsChildren = children();
|
||||
|
||||
QList<int> keys = fonts.keys();
|
||||
for(QList<int>::iterator i = keys.begin(); i != keys.end(); i++)
|
||||
{
|
||||
if(*i > 2)
|
||||
fonts.remove(*i);
|
||||
}
|
||||
|
||||
images.clear();
|
||||
namedViewports.clear();
|
||||
displayedViewports.clear();
|
||||
}
|
||||
|
||||
void RBScreen::breakSBS()
|
||||
{
|
||||
width = fullWidth;
|
||||
height = fullHeight;
|
||||
setParentItem(0);
|
||||
for(QList<QGraphicsItem*>::iterator i = sbsChildren.begin()
|
||||
; i != sbsChildren.end(); i++)
|
||||
(*i)->hide();
|
||||
if(defaultView)
|
||||
defaultView->makeFullScreen();
|
||||
}
|
||||
|
||||
QColor RBScreen::stringToColor(QString str, QColor fallback)
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void setDefault(RBViewport* view){ defaultView = view; }
|
||||
void endSbsRender();
|
||||
void breakSBS();
|
||||
|
||||
protected:
|
||||
|
|
@ -111,6 +113,9 @@ private:
|
|||
|
||||
RBAlbumArt* albumArt;
|
||||
RBViewport* customUI;
|
||||
RBViewport* defaultView;
|
||||
|
||||
QList<QGraphicsItem*> sbsChildren;
|
||||
};
|
||||
|
||||
#endif // RBSCREEN_H
|
||||
|
|
|
|||
|
|
@ -56,6 +56,16 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info,
|
|||
customUI = false;
|
||||
font = screen->getFont(1);
|
||||
|
||||
screen->setDefault(this);
|
||||
|
||||
if(screen->getCustomUI())
|
||||
{
|
||||
RBViewport* cui = screen->getCustomUI();
|
||||
size = cui->boundingRect();
|
||||
setPos(cui->pos());
|
||||
|
||||
}
|
||||
|
||||
/* Making sure the default viewport can't be graphically manipulated */
|
||||
setFlag(ItemIsSelectable, false);
|
||||
setFlag(ItemIsMovable, false);
|
||||
|
|
@ -299,6 +309,12 @@ void RBViewport::showPlaylist(const RBRenderInfo &info, int start,
|
|||
}
|
||||
}
|
||||
|
||||
void RBViewport::makeFullScreen()
|
||||
{
|
||||
size = screen->boundingRect();
|
||||
setPos(screen->pos());
|
||||
}
|
||||
|
||||
void RBViewport::saveGeometry()
|
||||
{
|
||||
QRectF bounds = boundingRect();
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ public:
|
|||
void showPlaylist(const RBRenderInfo& info, int start, skin_element* id3,
|
||||
skin_element* noId3);
|
||||
|
||||
void makeFullScreen();
|
||||
|
||||
protected:
|
||||
void saveGeometry();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue