Singletonify Skin class
This commit is contained in:
parent
4e46089c01
commit
fa4fc01a31
16 changed files with 103 additions and 115 deletions
|
@ -3,12 +3,12 @@
|
|||
|
||||
SkinDisplay::SkinDisplay (QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
m_mw = parent;
|
||||
|
||||
connect (dynamic_cast<MainWindow *>(parent)->getSkin (),
|
||||
SIGNAL (skinChanged (Skin *)),
|
||||
this,
|
||||
SLOT (setPixmaps (Skin *)));
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps (Skin *)));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -8,17 +8,6 @@ MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent)
|
|||
setWindowFlags(Qt::FramelessWindowHint);
|
||||
setGeometry(100, 100, 275, 116);
|
||||
|
||||
/*
|
||||
* Initialize the Handler that will
|
||||
* update the display and the buttons
|
||||
*/
|
||||
m_handler = XMMSHandler::getInstance();
|
||||
|
||||
/*
|
||||
* Initialize skin, but don't open one
|
||||
*/
|
||||
skin = new Skin ();
|
||||
|
||||
/*
|
||||
* The MainDisplay is the mainwindow non-shaded mode
|
||||
*/
|
||||
|
@ -43,7 +32,8 @@ MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent)
|
|||
|
||||
MainWindow::~MainWindow ()
|
||||
{
|
||||
delete skin;
|
||||
delete Skin::getInstance ();
|
||||
delete XMMSHandler::getInstance();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -65,11 +55,6 @@ MainWindow::switchDisplay ()
|
|||
|
||||
}
|
||||
|
||||
Skin *
|
||||
MainWindow::getSkin(void)
|
||||
{
|
||||
return skin;
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::togglePL (void)
|
||||
|
@ -91,7 +76,7 @@ main (int argc, char **argv)
|
|||
|
||||
MainWindow *mw = new MainWindow (NULL);
|
||||
|
||||
PlaylistWindow *playlistwin = new PlaylistWindow (NULL, mw->getSkin ());
|
||||
PlaylistWindow *playlistwin = new PlaylistWindow (NULL);
|
||||
|
||||
/*
|
||||
* Now that everything is initialized
|
||||
|
@ -103,7 +88,7 @@ main (int argc, char **argv)
|
|||
settings.setValue ("skin/path", "./CleanAMP/");
|
||||
}
|
||||
|
||||
mw->getSkin ()->setSkin (settings.value("skin/path").toString ());
|
||||
Skin::getInstance()->setSkin (settings.value("skin/path").toString ());
|
||||
|
||||
mw->show ();
|
||||
mw->setPL (playlistwin);
|
||||
|
|
|
@ -28,9 +28,6 @@ class MainWindow : public QMainWindow
|
|||
MainWindow (QWidget *parent);
|
||||
~MainWindow (void);
|
||||
|
||||
Skin *getSkin (void);
|
||||
|
||||
XMMSHandler *getHandler () { return m_handler; }
|
||||
MainDisplay *getMD () { return m_display; }
|
||||
ShadedDisplay *getSD () { return m_shaded; }
|
||||
|
||||
|
@ -43,9 +40,7 @@ class MainWindow : public QMainWindow
|
|||
|
||||
private:
|
||||
bool m_isshaded;
|
||||
Skin *skin;
|
||||
|
||||
XMMSHandler *m_handler;
|
||||
MainDisplay *m_display;
|
||||
ShadedDisplay *m_shaded;
|
||||
PlaylistWindow *m_playlistwin;
|
||||
|
|
|
@ -33,20 +33,16 @@ NumberDisplay::setPixmaps (Skin *skin)
|
|||
void
|
||||
NumberDisplay::setNumber (uint n1, uint n2)
|
||||
{
|
||||
if (m_n1 == n1 && m_n2 == n2) {
|
||||
/* Do nothing */
|
||||
return;
|
||||
if (m_n1 != n1 || m_n2 != n2) {
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
m_n1 = n1;
|
||||
m_n2 = n2;
|
||||
|
||||
setPixmaps (skin);
|
||||
}
|
||||
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent ())->getMW();
|
||||
|
||||
m_n1 = n1;
|
||||
m_n2 = n2;
|
||||
|
||||
setPixmaps (mw->getSkin());
|
||||
}
|
||||
|
||||
NumberDisplay::~NumberDisplay ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,19 +3,11 @@
|
|||
|
||||
PixWidget::PixWidget (QWidget *parent) : QWidget (parent)
|
||||
{
|
||||
Skin *s;
|
||||
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||
if (!mw) {
|
||||
PlaylistWindow *pl = dynamic_cast<PlaylistWindow*>(window ());
|
||||
if (!pl) {
|
||||
qDebug ("What are you?!");
|
||||
}
|
||||
s = pl->getSkin ();
|
||||
} else {
|
||||
s = mw->getSkin ();
|
||||
}
|
||||
Skin *skin = Skin::getInstance();
|
||||
m_pixmap = QPixmap(0,0);
|
||||
connect (s, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps(Skin *)));
|
||||
}
|
||||
|
||||
|
||||
|
|
61
Playlist.cpp
61
Playlist.cpp
|
@ -39,8 +39,13 @@ dragButton::mouseMoveEvent (QMouseEvent *event)
|
|||
|
||||
PlaylistScroller::PlaylistScroller (PlaylistWindow *parent) : QWidget (parent)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
m_pixmap = QPixmap(0,0);
|
||||
connect (parent->getSkin(), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
m_button = new PlaylistScrollButton (this, Skin::PLS_SCROLL_0, Skin::PLS_SCROLL_1);
|
||||
m_button->move (0, 0);
|
||||
}
|
||||
|
@ -70,12 +75,13 @@ PlaylistScroller::paintEvent (QPaintEvent *event)
|
|||
paint.end ();
|
||||
}
|
||||
|
||||
PlaylistWindow::PlaylistWindow (QWidget *parent, Skin *skin) : QMainWindow (parent)
|
||||
PlaylistWindow::PlaylistWindow (QWidget *parent) : QMainWindow (parent)
|
||||
{
|
||||
m_skin = skin;
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
setWindowFlags (Qt::FramelessWindowHint);
|
||||
connect (m_skin, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
setActive (underMouse ());
|
||||
|
||||
|
@ -127,7 +133,6 @@ PlaylistWindow::mouseMoveEvent (QMouseEvent *event)
|
|||
void
|
||||
PlaylistWindow::setPixmaps (Skin *skin)
|
||||
{
|
||||
m_skin = skin;
|
||||
setActive (m_active);
|
||||
resize (size().width(), size().height());
|
||||
}
|
||||
|
@ -148,35 +153,33 @@ PlaylistWindow::leaveEvent (QEvent *event)
|
|||
void
|
||||
PlaylistWindow::setActive (bool active)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
m_active = active;
|
||||
|
||||
if (!m_skin) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_corner3 = m_skin->getPls (Skin::PLS_LCBAR);
|
||||
m_corner4 = m_skin->getPls (Skin::PLS_RCBAR);
|
||||
m_corner3 = skin->getPls (Skin::PLS_LCBAR);
|
||||
m_corner4 = skin->getPls (Skin::PLS_RCBAR);
|
||||
|
||||
if (active) {
|
||||
m_corner1 = m_skin->getPls (Skin::PLS_CORNER_UL_0);
|
||||
m_corner2 = m_skin->getPls (Skin::PLS_CORNER_UR_0);
|
||||
m_titlebar = m_skin->getPls (Skin::PLS_TBAR_0);
|
||||
m_tfill = m_skin->getPls (Skin::PLS_TFILL_0);
|
||||
m_bfill = m_skin->getPls (Skin::PLS_BFILL_0);
|
||||
m_lfill = m_skin->getPls (Skin::PLS_LFILL_0);
|
||||
m_rfill = m_skin->getPls (Skin::PLS_RFILL_0);
|
||||
m_rfill2 = m_skin->getPls (Skin::PLS_RFILL2_0);
|
||||
m_rfill3 = m_skin->getPls (Skin::PLS_RFILL3_0);
|
||||
m_corner1 = skin->getPls (Skin::PLS_CORNER_UL_0);
|
||||
m_corner2 = skin->getPls (Skin::PLS_CORNER_UR_0);
|
||||
m_titlebar = skin->getPls (Skin::PLS_TBAR_0);
|
||||
m_tfill = skin->getPls (Skin::PLS_TFILL_0);
|
||||
m_bfill = skin->getPls (Skin::PLS_BFILL_0);
|
||||
m_lfill = skin->getPls (Skin::PLS_LFILL_0);
|
||||
m_rfill = skin->getPls (Skin::PLS_RFILL_0);
|
||||
m_rfill2 = skin->getPls (Skin::PLS_RFILL2_0);
|
||||
m_rfill3 = skin->getPls (Skin::PLS_RFILL3_0);
|
||||
} else {
|
||||
m_corner1 = m_skin->getPls (Skin::PLS_CORNER_UL_1);
|
||||
m_corner2 = m_skin->getPls (Skin::PLS_CORNER_UR_1);
|
||||
m_titlebar = m_skin->getPls (Skin::PLS_TBAR_1);
|
||||
m_tfill = m_skin->getPls (Skin::PLS_TFILL_1);
|
||||
m_bfill = m_skin->getPls (Skin::PLS_BFILL_1);
|
||||
m_lfill = m_skin->getPls (Skin::PLS_LFILL_1);
|
||||
m_rfill = m_skin->getPls (Skin::PLS_RFILL_1);
|
||||
m_rfill2 = m_skin->getPls (Skin::PLS_RFILL2_1);
|
||||
m_rfill3 = m_skin->getPls (Skin::PLS_RFILL3_1);
|
||||
m_corner1 = skin->getPls (Skin::PLS_CORNER_UL_1);
|
||||
m_corner2 = skin->getPls (Skin::PLS_CORNER_UR_1);
|
||||
m_titlebar = skin->getPls (Skin::PLS_TBAR_1);
|
||||
m_tfill = skin->getPls (Skin::PLS_TFILL_1);
|
||||
m_bfill = skin->getPls (Skin::PLS_BFILL_1);
|
||||
m_lfill = skin->getPls (Skin::PLS_LFILL_1);
|
||||
m_rfill = skin->getPls (Skin::PLS_RFILL_1);
|
||||
m_rfill2 = skin->getPls (Skin::PLS_RFILL2_1);
|
||||
m_rfill3 = skin->getPls (Skin::PLS_RFILL3_1);
|
||||
}
|
||||
|
||||
update ();
|
||||
|
|
|
@ -59,11 +59,10 @@ class PlaylistWindow : public QMainWindow {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PlaylistWindow (QWidget *parent, Skin *skin);
|
||||
PlaylistWindow (QWidget *parent);
|
||||
~PlaylistWindow () {}
|
||||
|
||||
void setActive (bool);
|
||||
Skin *getSkin (void) { return m_skin; }
|
||||
|
||||
public slots:
|
||||
void setPixmaps (Skin *skin);
|
||||
|
@ -92,8 +91,6 @@ class PlaylistWindow : public QMainWindow {
|
|||
|
||||
bool m_active;
|
||||
|
||||
Skin *m_skin;
|
||||
|
||||
int m_diffx;
|
||||
int m_diffy;
|
||||
|
||||
|
|
|
@ -42,9 +42,11 @@ PlaylistItem::text (void)
|
|||
PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent)
|
||||
{
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
PlaylistWindow *pl = dynamic_cast<PlaylistWindow*>(window ());
|
||||
connect (pl->getSkin (), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||
m_font = NULL;
|
||||
m_fontmetrics = NULL;
|
||||
m_items = new QList<PlaylistItem *>;
|
||||
|
@ -52,12 +54,17 @@ PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent)
|
|||
m_itemmap = new QHash<uint, PlaylistItem *>;
|
||||
m_offset = 0;
|
||||
|
||||
connect (xmmsh, SIGNAL(playlistList(QList<uint>)), this, SLOT(playlistList(QList<uint>)));
|
||||
connect (xmmsh, SIGNAL(currentID(uint)), this, SLOT(currentID(uint)));
|
||||
connect (xmmsh, SIGNAL(playlistList(QList<uint>)),
|
||||
this, SLOT(playlistList(QList<uint>)));
|
||||
|
||||
connect (xmmsh, SIGNAL(currentID(uint)),
|
||||
this, SLOT(currentID(uint)));
|
||||
|
||||
connect (xmmsh, SIGNAL(mediainfoChanged(uint, QHash<QString, QString>)),
|
||||
this, SLOT(mediainfoChanged(uint, QHash<QString, QString>)));
|
||||
this, SLOT(mediainfoChanged(uint, QHash<QString, QString>)));
|
||||
|
||||
connect (xmmsh, SIGNAL(playlistChanged(QHash<QString, QString>)),
|
||||
this, SLOT(playlistChanged(QHash<QString, QString>)));
|
||||
this, SLOT(playlistChanged(QHash<QString, QString>)));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
10
Skin.cpp
10
Skin.cpp
|
@ -1,5 +1,15 @@
|
|||
#include "Skin.h"
|
||||
|
||||
Skin *Skin::singleton = NULL;
|
||||
|
||||
Skin *Skin::getInstance (void)
|
||||
{
|
||||
if (!singleton) {
|
||||
singleton = new Skin ();
|
||||
}
|
||||
|
||||
return singleton;
|
||||
}
|
||||
|
||||
Skin::Skin (void)
|
||||
{
|
||||
|
|
3
Skin.h
3
Skin.h
|
@ -15,6 +15,7 @@ class Skin : public QWidget
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
static Skin *getInstance (void);
|
||||
Skin ();
|
||||
~Skin();
|
||||
|
||||
|
@ -191,6 +192,8 @@ class Skin : public QWidget
|
|||
PLS_RCBAR
|
||||
};
|
||||
private:
|
||||
static Skin *singleton;
|
||||
|
||||
QPixmap *Skin::getPixmap (string file);
|
||||
void Parse (string file);
|
||||
void BuildLetterMap (void);
|
||||
|
|
|
@ -53,11 +53,14 @@ SkinList::SkinList (QWidget *parent) : QListWidget (parent)
|
|||
void
|
||||
SkinList::changeSkin (QListWidgetItem *item)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
QSettings settings;
|
||||
|
||||
SkinChooser *sc = dynamic_cast<SkinChooser *>(window());
|
||||
qDebug ("change skin to %s", qPrintable (item->text()));
|
||||
sc->getMW()->getSkin ()->setSkin (QDir::homePath()+"/.xmms2/clients/promoe/skins/"+item->text());
|
||||
|
||||
skin->setSkin (QDir::homePath()+"/.xmms2/clients/promoe/skins/"+item->text());
|
||||
|
||||
settings.setValue ("skin/path", QDir::homePath()+"/.xmms2/clients/promoe/skins/"+item->text());
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ BarButton::mouseMoveEvent (QMouseEvent *event)
|
|||
|
||||
Slider::Slider (QWidget *parent, uint bg, uint bnormal, uint bpressed, bool vertical) : PixWidget (parent)
|
||||
{
|
||||
MainWindow *mw = dynamic_cast<MainWindow *>(window ());
|
||||
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||
|
||||
m_bg = bg;
|
||||
m_vertical = vertical;
|
||||
|
@ -55,7 +55,9 @@ Slider::Slider (QWidget *parent, uint bg, uint bnormal, uint bpressed, bool vert
|
|||
|
||||
m_button = new BarButton (this, bnormal, bpressed);
|
||||
m_button->move (0, 0);
|
||||
connect (m_button, SIGNAL(clicked ()), mw->getHandler (), SLOT (setPlaytime ()));
|
||||
|
||||
connect (m_button, SIGNAL(clicked ()),
|
||||
xmmsh, SLOT (setPlaytime ()));
|
||||
|
||||
if (m_vertical) {
|
||||
m_pix = size().width()-m_button->size().width();
|
||||
|
|
|
@ -11,7 +11,6 @@ SmallNumberDisplay::SmallNumberDisplay (QWidget *parent, int w) : PixWidget (par
|
|||
void
|
||||
SmallNumberDisplay::setPixmaps (Skin *skin)
|
||||
{
|
||||
m_skin = skin;
|
||||
drawNumber ();
|
||||
}
|
||||
|
||||
|
@ -29,21 +28,18 @@ SmallNumberDisplay::setNumber (int num, int len)
|
|||
void
|
||||
SmallNumberDisplay::drawNumber ()
|
||||
{
|
||||
|
||||
if (!m_skin) {
|
||||
return;
|
||||
}
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
QPainter paint;
|
||||
paint.begin (&m_pixmap);
|
||||
paint.drawPixmap (m_pixmap.rect (),
|
||||
m_skin->getItem (Skin::TEXTBG),
|
||||
skin->getItem (Skin::TEXTBG),
|
||||
m_pixmap.rect ());
|
||||
|
||||
for (int i = 0; i < m_num; i++) {
|
||||
paint.drawPixmap (QRect (i*5, 0, 4, 6),
|
||||
m_skin->getLetter (m_nums[i]),
|
||||
m_skin->getLetter (m_nums[i]).rect ());
|
||||
skin->getLetter (m_nums[i]),
|
||||
skin->getLetter (m_nums[i]).rect ());
|
||||
}
|
||||
|
||||
paint.end ();
|
||||
|
|
|
@ -24,8 +24,6 @@ class SmallNumberDisplay : public PixWidget
|
|||
int m_w;
|
||||
|
||||
void drawNumber (void);
|
||||
|
||||
Skin *m_skin;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
23
TextBar.cpp
23
TextBar.cpp
|
@ -4,11 +4,10 @@
|
|||
|
||||
TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
|
||||
m_skin = mw->getSkin();
|
||||
|
||||
connect (m_skin, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
|
||||
connect (skin, SIGNAL (skinChanged (Skin *)),
|
||||
this, SLOT (setPixmaps(Skin *)));
|
||||
|
||||
m_h = h;
|
||||
m_w = w;
|
||||
|
@ -75,6 +74,8 @@ TextScroller::setText (const QString &text)
|
|||
void
|
||||
TextScroller::drawBitmapFont (const QString &text)
|
||||
{
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
int width = text.length() * 6;
|
||||
QString (temp) = text.toLower ();
|
||||
|
||||
|
@ -93,9 +94,9 @@ TextScroller::drawBitmapFont (const QString &text)
|
|||
paint.begin (&m_pixmap);
|
||||
paint.fillRect (m_pixmap.rect(), Qt::white);
|
||||
for (uint i = 0; i < strlen (t); i++) {
|
||||
QPixmap p = m_skin->getLetter (t[i]);
|
||||
QPixmap p = skin->getLetter (t[i]);
|
||||
if (!p) {
|
||||
p = m_skin->getLetter(' ');
|
||||
p = skin->getLetter(' ');
|
||||
}
|
||||
|
||||
paint.drawPixmap (QRect (i * 6, m_y, 4, 6),
|
||||
|
@ -110,7 +111,9 @@ TextScroller::drawBitmapFont (const QString &text)
|
|||
void
|
||||
TextScroller::drawQtFont (const QString &text)
|
||||
{
|
||||
QFont font(m_skin->getPLeditValue ("font"));
|
||||
Skin *skin = Skin::getInstance ();
|
||||
|
||||
QFont font(skin->getPLeditValue ("font"));
|
||||
font.setPixelSize (m_fontsize);
|
||||
|
||||
QFontMetrics fM(font);
|
||||
|
@ -132,12 +135,12 @@ TextScroller::drawQtFont (const QString &text)
|
|||
QPainter paint;
|
||||
paint.begin (&m_pixmap);
|
||||
paint.drawPixmap (m_pixmap.rect (),
|
||||
m_skin->getItem (Skin::TEXTBG),
|
||||
m_skin->getItem (Skin::TEXTBG).rect ());
|
||||
skin->getItem (Skin::TEXTBG),
|
||||
skin->getItem (Skin::TEXTBG).rect ());
|
||||
|
||||
paint.setFont (font);
|
||||
QColor c;
|
||||
c.setNamedColor (m_skin->getPLeditValue ("normal"));
|
||||
c.setNamedColor (skin->getPLeditValue ("normal"));
|
||||
paint.setPen (c);
|
||||
paint.drawText (m_pixmap.rect (),
|
||||
Qt::AlignLeft | Qt::AlignVCenter,
|
||||
|
|
|
@ -45,8 +45,6 @@ class TextScroller : public QWidget
|
|||
|
||||
QTimer *m_timer;
|
||||
|
||||
Skin *m_skin;
|
||||
|
||||
void drawBitmapFont (const QString &text);
|
||||
void drawQtFont (const QString &text);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue