blob: b472e8eae40c659ece207f6bbe9e23c28483baf2 [file] [log] [blame]
Robert Bieber02c37742010-06-17 20:44:11 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2010 Robert Bieber
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#ifndef RBSCREEN_H
23#define RBSCREEN_H
24
25#include <QGraphicsItem>
26
27#include "projectmodel.h"
Robert Biebere1d8a3d2010-06-21 20:11:58 +000028#include "rbrenderinfo.h"
Robert Bieberac9287b2010-06-22 07:55:50 +000029#include "rbimage.h"
Robert Bieber6d615662010-06-23 20:18:31 +000030#include "rbfont.h"
Robert Bieber81149792010-06-30 19:35:00 +000031#include "rbalbumart.h"
32#include "rbviewport.h"
Robert Bieber02c37742010-06-17 20:44:11 +000033
34class RBScreen : public QGraphicsItem
35{
36
37public:
Robert Bieber5300c702010-06-26 05:51:07 +000038 RBScreen(const RBRenderInfo& info, bool remote = false,
39 QGraphicsItem *parent = 0);
Robert Bieber02c37742010-06-17 20:44:11 +000040 virtual ~RBScreen();
41
42 QPainterPath shape() const;
43 QRectF boundingRect() const;
44 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
45 QWidget *widget);
46
Robert Bieberd8827b52010-06-18 21:10:01 +000047 int getWidth() const{ return width; }
48 int getHeight() const{ return height; }
49
Robert Bieber481bcf22010-06-24 18:55:04 +000050 void loadViewport(QString name, RBViewport* view);
Robert Biebere1d8a3d2010-06-21 20:11:58 +000051 void showViewport(QString name);
Robert Bieber1fbea622010-06-29 21:09:29 +000052 bool viewPortDisplayed(QString name)
53 {
54 return displayedViewports.contains(name);
55 }
Robert Bieber02c37742010-06-17 20:44:11 +000056
Robert Bieberac9287b2010-06-22 07:55:50 +000057 void loadImage(QString name, RBImage* image)
58 {
59 images.insert(name, image);
Robert Bieberd3027052010-06-23 07:18:22 +000060 image->hide();
Robert Bieberac9287b2010-06-22 07:55:50 +000061 }
62 RBImage* getImage(QString name){ return images.value(name, 0); }
63
Robert Bieber6d615662010-06-23 20:18:31 +000064 void loadFont(int id, RBFont* font);
65 RBFont* getFont(int id);
66
Robert Bieberac9287b2010-06-22 07:55:50 +000067 void setBackdrop(QString filename);
Robert Bieber273b9d62010-06-25 05:14:13 +000068 bool hasBackdrop(){ return backdrop != 0; }
Robert Bieberdeab1bb2010-06-23 19:41:30 +000069 void makeCustomUI(QString id);
Robert Bieberac9287b2010-06-22 07:55:50 +000070
Robert Bieber02c37742010-06-17 20:44:11 +000071 static QColor stringToColor(QString str, QColor fallback);
72
Robert Bieber273b9d62010-06-25 05:14:13 +000073 QColor foreground(){ return fgColor; }
74 QColor background(){ return bgColor; }
75
Robert Bieber81149792010-06-30 19:35:00 +000076 void setAlbumArt(RBAlbumArt* art){ albumArt = art; }
77 void showAlbumArt(RBViewport* view)
78 {
79 if(albumArt)
80 {
81 albumArt->setParentItem(view);
Robert Bieberf0937002010-07-01 02:49:44 +000082 albumArt->position();
Robert Bieber81149792010-06-30 19:35:00 +000083 albumArt->show();
84 }
85 }
86
Robert Bieberd8827b52010-06-18 21:10:01 +000087
Robert Bieber02c37742010-06-17 20:44:11 +000088private:
89 int width;
90 int height;
91 QColor bgColor;
92 QColor fgColor;
93 QPixmap* backdrop;
Robert Bieberac9287b2010-06-22 07:55:50 +000094 QString themeBase;
Robert Bieber02c37742010-06-17 20:44:11 +000095
96 ProjectModel* project;
97
Robert Bieber481bcf22010-06-24 18:55:04 +000098 QMap<QString, QList<RBViewport*>*> namedViewports;
Robert Bieberac9287b2010-06-22 07:55:50 +000099 QMap<QString, RBImage*> images;
100 QMap<QString, QString>* settings;
Robert Bieber6d615662010-06-23 20:18:31 +0000101 QMap<int, RBFont*> fonts;
Robert Bieber1fbea622010-06-29 21:09:29 +0000102 QList<QString> displayedViewports;
Robert Biebere1d8a3d2010-06-21 20:11:58 +0000103
Robert Bieber81149792010-06-30 19:35:00 +0000104 RBAlbumArt* albumArt;
Robert Bieber02c37742010-06-17 20:44:11 +0000105};
106
107#endif // RBSCREEN_H