diff --git a/Button.cpp b/Button.cpp index bcc2081..4047467 100644 --- a/Button.cpp +++ b/Button.cpp @@ -1,22 +1,28 @@ #include "Button.h" -#include "MainWindow.h" #include "Display.h" Button::Button (QWidget *parent, uint normal, uint pressed) : PixWidget (parent) { - MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW(); + m_name_normal = normal; + m_name_pressed = pressed; +} - m_pixmap_normal = mw->getSkin ()->getItem (normal); - m_pixmap_pressed = mw->getSkin ()->getItem (pressed); +Button::~Button () +{ +} + +void +Button::setPixmaps(Skin *skin) +{ + m_pixmap_normal = skin->getItem (m_name_normal); + m_pixmap_pressed = skin->getItem (m_name_pressed); m_pixmap = m_pixmap_normal; m_func = NULL; setMinimumSize (m_pixmap.size ()); setMaximumSize (m_pixmap.size ()); -} -Button::~Button () -{ + update(); } void Button::mousePressEvent (QMouseEvent *event) @@ -49,22 +55,37 @@ ToggleButton::ToggleButton (QWidget *parent, uint on_normal, uint on_pressed, uint off_normal, uint off_pressed) : Button (parent, off_normal, off_pressed) { - MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW(); - m_pixmap_on_normal = mw->getSkin()->getItem(on_normal); - m_pixmap_on_pressed = mw->getSkin()->getItem(on_pressed); - m_pixmap_off_normal = mw->getSkin()->getItem(off_normal); - m_pixmap_off_pressed = mw->getSkin()->getItem(off_pressed); + m_name_on_normal = on_normal; + m_name_on_pressed = on_pressed; + m_name_off_normal = off_normal; + m_name_off_pressed = off_pressed; m_func = clicked; m_userdata = (void *)this; m_func2 = NULL; m_userdata2 = NULL; - - toggleOn (false); } + +void +ToggleButton::setPixmaps(Skin *skin) +{ + m_pixmap_on_normal = skin->getItem(m_name_on_normal); + m_pixmap_on_pressed = skin->getItem(m_name_on_pressed); + m_pixmap_off_normal = skin->getItem(m_name_off_normal); + m_pixmap_off_pressed = skin->getItem(m_name_off_pressed); + + toggleOn(m_toggled_on); + + setMinimumSize (m_pixmap.size ()); + setMaximumSize (m_pixmap.size ()); + + update(); +} + + void ToggleButton::runFunc () { diff --git a/Button.h b/Button.h index 984d5f0..352b6fe 100644 --- a/Button.h +++ b/Button.h @@ -14,10 +14,16 @@ class Button : public PixWidget ~Button (); void setFunc (void (*func)(void *userdata), void *userdata) { m_func = func; m_userdata = userdata; } + public slots: + void setPixmaps(Skin *skin); + protected: void mousePressEvent (QMouseEvent *event); void mouseReleaseEvent (QMouseEvent *event); + uint m_name_normal; + uint m_name_pressed; + QPixmap m_pixmap_normal; QPixmap m_pixmap_pressed; void (*m_func)(void *userdata); @@ -37,10 +43,18 @@ class ToggleButton : public Button bool getOn () const { return m_toggled_on; } void runFunc (); + public slots: + void setPixmaps(Skin *skin); + private: void (*m_func2)(void *userdata); void *m_userdata2; + uint m_name_on_normal; + uint m_name_on_pressed; + uint m_name_off_normal; + uint m_name_off_pressed; + QPixmap m_pixmap_on_normal; QPixmap m_pixmap_on_pressed; QPixmap m_pixmap_off_normal; diff --git a/Display.cpp b/Display.cpp index b67abba..6c66728 100644 --- a/Display.cpp +++ b/Display.cpp @@ -1,9 +1,17 @@ #include "Display.h" +#include "MainWindow.h" SkinDisplay::SkinDisplay (QWidget *parent) : QWidget(parent) { m_noDrag = false; m_mw = parent; + + connect(((MainWindow *)m_mw)->getSkin(), SIGNAL(skinChanged(Skin *)), this, SLOT(setPixmaps(Skin *))); +} + +void +SkinDisplay::setPixmaps (Skin *skin) +{ } void diff --git a/Display.h b/Display.h index e330ce6..9065d22 100644 --- a/Display.h +++ b/Display.h @@ -24,6 +24,8 @@ class SkinDisplay : public QWidget void setNoDrag(bool d) { m_noDrag = d; } QWidget *getMW() const { return m_mw; } + public slots: + virtual void setPixmaps(Skin *skin); protected: void mousePressEvent (QMouseEvent *); diff --git a/MainDisplay.cpp b/MainDisplay.cpp index 13066bf..43e0488 100644 --- a/MainDisplay.cpp +++ b/MainDisplay.cpp @@ -4,16 +4,6 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) { - QPalette palette = QPalette(); - QBrush brush = QBrush(Qt::TexturePattern); - - brush.setTexture((((MainWindow *)m_mw)->getSkin()->getItem(Skin::MAIN_WINDOW))); - palette.setBrush(QPalette::Background, brush); - setPalette(palette); - - setMaximumSize(QSize(275, 116)); - setMinimumSize(QSize(275, 116)); - m_tbar = new TitleBar(this, false); m_tbar->move(0, 0); m_tbar->resize(275, 14); @@ -32,6 +22,19 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) } +void +MainDisplay::setPixmaps (Skin *skin) +{ + QPalette palette = QPalette(); + QBrush brush = QBrush(Qt::TexturePattern); + brush.setTexture(skin->getItem(Skin::MAIN_WINDOW)); + palette.setBrush(QPalette::Background, brush); + setPalette(palette); + + setMaximumSize(QSize(275, 116)); + setMinimumSize(QSize(275, 116)); +} + void MainDisplay::SetupToggleButtons (void) { diff --git a/MainDisplay.h b/MainDisplay.h index 3d95181..56d26cd 100644 --- a/MainDisplay.h +++ b/MainDisplay.h @@ -25,6 +25,8 @@ class MainDisplay : public SkinDisplay public: MainDisplay (QWidget *parent); ~MainDisplay (); + public slots: + void setPixmaps(Skin *skin); protected: void SetupPushButtons (void); void MainDisplay::SetupToggleButtons (void); diff --git a/MainWindow.cpp b/MainWindow.cpp index 17f2b45..21bb3e6 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -8,6 +8,8 @@ MainWindow::MainWindow () skin = new Skin("Debian"); MainDisplay *display = new MainDisplay(this); setCentralWidget(display); + + skin->setSkin("./CleanAMP/"); display->show(); } diff --git a/NumberDisplay.cpp b/NumberDisplay.cpp index ba664d4..99d48c5 100644 --- a/NumberDisplay.cpp +++ b/NumberDisplay.cpp @@ -14,6 +14,22 @@ NumberDisplay::NumberDisplay (QWidget *parent, uint w, uint startpx) : PixWidget setNumber (0,0); } +void +NumberDisplay::setPixmaps (Skin *skin) +{ + QBrush b (Qt::TexturePattern); + b.setTexture (skin->getNumber (10)); + + QPainter paint; + paint.begin (&m_pixmap); + paint.fillRect (m_pixmap.rect (), b); + paint.drawPixmap (m_startpx, 0, skin->getNumber (m_n1)); + paint.drawPixmap (m_startpx+12, 0, skin->getNumber (m_n2)); + paint.end(); + + update (); +} + void NumberDisplay::setNumber (uint n1, uint n2) { @@ -22,17 +38,7 @@ NumberDisplay::setNumber (uint n1, uint n2) m_n1 = n1; m_n2 = n2; - QBrush b (Qt::TexturePattern); - b.setTexture (mw->getSkin ()->getNumber (10)); - - QPainter paint; - paint.begin (&m_pixmap); - paint.fillRect (m_pixmap.rect (), b); - paint.drawPixmap (m_startpx, 0, mw->getSkin ()->getNumber (n1)); - paint.drawPixmap (m_startpx+12, 0, mw->getSkin ()->getNumber (n2)); - paint.end(); - - update (); + setPixmaps (mw->getSkin()); } NumberDisplay::~NumberDisplay () diff --git a/NumberDisplay.h b/NumberDisplay.h index 9c0ff06..029fec6 100644 --- a/NumberDisplay.h +++ b/NumberDisplay.h @@ -15,9 +15,12 @@ class NumberDisplay : public PixWidget public: NumberDisplay (QWidget *parent, uint, uint); ~NumberDisplay (); - + void setNumber (uint, uint); + public slots: + void setPixmaps (Skin *skin); + protected: int m_w; int m_startpx; diff --git a/PixWidget.cpp b/PixWidget.cpp index fdb1ab4..aa0564c 100644 --- a/PixWidget.cpp +++ b/PixWidget.cpp @@ -1,9 +1,14 @@ #include "PixWidget.h" +#include "MainWindow.h" PixWidget::PixWidget (QWidget *parent) : QWidget (parent) { + MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW(); + m_pixmap = QPixmap(0,0); + + connect (mw->getSkin(), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *))); } @@ -12,6 +17,11 @@ PixWidget::~PixWidget () } +void +PixWidget::setPixmaps(Skin *skin) +{ +} + /* * Since almost every Widget I have here * is done by drawing self.pixmap onto self diff --git a/PixWidget.h b/PixWidget.h index 6593d6c..16c7193 100644 --- a/PixWidget.h +++ b/PixWidget.h @@ -7,6 +7,7 @@ #include #include +#include "Skin.h" class PixWidget : public QWidget { @@ -15,6 +16,8 @@ class PixWidget : public QWidget PixWidget(QWidget *parent = 0); ~PixWidget(); void paintEvent (QPaintEvent *event); + public slots: + virtual void setPixmaps(Skin *skin); protected: QPixmap m_pixmap; }; diff --git a/Skin.cpp b/Skin.cpp index 7826d89..fbbc219 100644 --- a/Skin.cpp +++ b/Skin.cpp @@ -10,15 +10,7 @@ Skin::Skin (string m_skinname) : m_skinname (m_skinname) m_balance = new QHash; m_pledit_txt = new QHash; m_numbers = new QHash; - - BuildLetterMap(); - BuildButtons(); - BuildToggleButtons(); - BuildSliders(); - BuildOther(); - BuildTitleBar(); - BuildNumbers(); - ParsePLEdit(); + m_letterMap = new QHash; } @@ -26,66 +18,35 @@ Skin::~Skin () { } -void -Skin::BuildNumbers (void) -{ - uint num = 11; - - QPixmap *img = GetPixmap("numbers.bmp"); - if (!img) { - num = 12; - img = GetPixmap ("nums_ex.bmp"); - } - - for (uint i = 0; i < num; i++) { - m_numbers->insert (i, img->copy (i*9, 0, 9, 13)); - } - - delete img; - -} void -Skin::ParsePLEdit (void) +Skin::setSkin (QString name) { - QDir dir; - QString path; + m_path = name; - dir.setPath (m_path); - dir.setFilter (QDir::Files); + m_items->clear(); + BuildButtons(); + BuildToggleButtons(); + BuildTitleBar(); + BuildOther(); - QFileInfoList list = dir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFileInfo fileInfo = list.at(i); - if (fileInfo.fileName().toLower() == "pledit.txt") { - path += fileInfo.filePath (); - break; - } - } + m_letterMap->clear(); + BuildLetterMap(); - if (path.isNull ()) { - qDebug ("trasigt!"); - return; - } + BuildSliders(); - QFile file (path); + m_pledit_txt->clear(); + ParsePLEdit(); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; - - while (!file.atEnd ()) { - QByteArray line = file.readLine (); - QList l = line.split ('='); - if (l.count () == 2) { - m_pledit_txt->insert (l[0].toLower (), l[1].trimmed()); - } else if (line.length() == 0) { - break; - } - } + m_numbers->clear(); + BuildNumbers(); + emit skinChanged(this); } -QPixmap *Skin::GetPixmap (string file) + +QPixmap * +Skin::getPixmap (string file) { /* check for files in zip and check if file exists */ @@ -108,164 +69,11 @@ QPixmap *Skin::GetPixmap (string file) /*return new QPixmap ((m_path+file).c_str());*/ } -void Skin::BuildToggleButtons (void) + +void +Skin::BuildLetterMap (void) { - QPixmap *img = GetPixmap("shufrep.bmp"); - - m_items->insert(REPEAT_ON_0, img->copy(0, 30, 28, 15)); - m_items->insert(REPEAT_ON_1, img->copy(0, 45, 28, 15)); - - m_items->insert(REPEAT_OFF_0, img->copy(0, 0, 28, 15)); - m_items->insert(REPEAT_OFF_1, img->copy(0, 15, 28, 15)); - - m_items->insert(SHUFFLE_ON_0, img->copy(28, 30, 46, 15)); - m_items->insert(SHUFFLE_ON_1, img->copy(28, 45, 46, 15)); - - m_items->insert(SHUFFLE_OFF_0, img->copy(28, 0, 46, 15)); - m_items->insert(SHUFFLE_OFF_1, img->copy(28, 15, 46, 15)); - - m_items->insert(EQ_ON_0, img->copy( 0, 73, 23, 12)); - m_items->insert(EQ_ON_1, img->copy(46, 73, 23, 12)); - - m_items->insert(EQ_OFF_0, img->copy( 0, 61, 23, 12)); - m_items->insert(EQ_OFF_1, img->copy(46, 61, 23, 12)); - - m_items->insert(PLS_ON_0, img->copy(23, 73, 23, 12)); - m_items->insert(PLS_ON_1, img->copy(69, 73, 23, 12)); - - m_items->insert(PLS_OFF_0, img->copy(23, 61, 23, 12)); - m_items->insert(PLS_OFF_1, img->copy(69, 61, 23, 12)); - - delete img; -} - -void Skin::BuildSliders (void) -{ - QPixmap *img; - - img = GetPixmap("volume.bmp"); - for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) { - m_volume_bar->insert(i, img->copy(0, i*15, 68, 13)); - } - delete img; - - img = GetPixmap("balance.bmp"); - if (!img) { - img = GetPixmap("volume.bmp"); - } - - for (int i = BALANCE_POS_MIN; i < BALANCE_POS_MAX; i++) { - m_balance->insert(i, img->copy(9, i*15, 38, 13)); - } - delete img; -} - -void Skin::BuildTitleBar (void) -{ - QPixmap *img = GetPixmap("titlebar.bmp"); - - m_items->insert(MENUBUTTON_0, img->copy(0, 0, 9, 9)); - m_items->insert(MENUBUTTON_1, img->copy(0, 9, 9, 9)); - - m_items->insert(MINIMIZE_0, img->copy(9, 0, 9, 9)); - m_items->insert(MINIMIZE_1, img->copy(9, 9, 9, 9)); - - m_items->insert(CLOSE_0, img->copy(18, 0, 9, 9)); - m_items->insert(CLOSE_1, img->copy(18, 9, 9 ,9)); - - m_items->insert(SHADE_1_0, img->copy(0, 18, 9, 9)); - m_items->insert(SHADE_1_1, img->copy(9, 18, 9, 9)); - - m_items->insert(SHADE_2_0, img->copy(0, 27, 9, 9)); - m_items->insert(SHADE_2_1, img->copy(9, 27, 9, 9)); - - m_items->insert(TITLEBAR_0, img->copy(27, 0, 275, 14)); - m_items->insert(TITLEBAR_1, img->copy(27, 15, 275, 14)); - - m_items->insert(STATUSBAR_0, img->copy(27, 29, 275, 14)); - m_items->insert(STATUSBAR_1, img->copy(27, 29+13, 275, 14)); - - delete img; -} - - -void Skin::BuildButtons (void) -{ - QPixmap *img = GetPixmap("cbuttons.bmp"); - - m_items->insert (BTN_PREV_0, img->copy(0, 0, 23, 18)); - m_items->insert (BTN_PREV_1, img->copy(0, 18, 23, 18)); - - m_items->insert (BTN_PLAY_0, img->copy(23, 0, 23, 18)); - m_items->insert (BTN_PLAY_1, img->copy(23, 18, 23, 18)); - - m_items->insert (BTN_PAUSE_0, img->copy(46, 0, 23, 18)); - m_items->insert (BTN_PAUSE_1, img->copy(46, 18, 23, 18)); - - m_items->insert (BTN_STOP_0, img->copy(69, 0, 23, 18)); - m_items->insert (BTN_STOP_1, img->copy(69, 18, 23, 18)); - - m_items->insert (BTN_NEXT_0, img->copy(92, 0, 22, 18)); - m_items->insert (BTN_NEXT_1, img->copy(92, 18, 22, 18)); - - m_items->insert (BTN_EJECT_0, img->copy(114, 0, 22, 16)); - m_items->insert (BTN_EJECT_1, img->copy(114, 16, 22, 16)); - - delete img; -} - -void Skin::BuildOther (void) -{ - QPixmap *img, *part; - QPainter(painter); - - img = GetPixmap("monoster.bmp"); - - m_items->insert (MONO_0, img->copy(29, 0, 27, 12)); - m_items->insert (MONO_1, img->copy(29, 12, 27, 12)); - - m_items->insert (STEREO_0, img->copy(0, 0, 29, 12)); - m_items->insert (STEREO_1, img->copy(0, 12, 29, 12)); - - img = GetPixmap("playpaus.bmp"); - - part = new QPixmap(11, 9); - painter.begin(part); - painter.drawPixmap (0, 0, 3, 9, *img, 36, 0, 3, 9); - painter.drawPixmap (3, 0, 8, 9, *img, 1, 0, 8, 9); - painter.end(); - m_items->insert (PIC_PLAY, part->copy()); - delete part; - - part = new QPixmap(11, 9); - painter.begin(part); - painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9); - painter.drawPixmap (2, 0, 9, 9, *img, 9, 0, 9, 9); - painter.end(); - m_items->insert (PIC_PAUSE, part->copy()); - delete part; - - part = new QPixmap(11, 9); - painter.begin(part); - painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9); - painter.drawPixmap (2, 0, 9, 9, *img, 18, 0, 9, 9); - painter.end(); - m_items->insert (PIC_STOP, part->copy()); - delete part; - - delete img; - - img = GetPixmap ("main.bmp"); - m_items->insert (MAIN_WINDOW, img->copy()); - m_items->insert (ABOUT_0, img->copy(247, 83, 20, 25)); - m_items->insert (ABOUT_1, img->copy(247, 83, 20, 24)); - delete img; -} - - -void Skin::BuildLetterMap (void) -{ - QPixmap *img = GetPixmap("text.bmp"); + QPixmap *img = getPixmap("text.bmp"); QList >(letters); for (int i = 0; i < 3; i++) { @@ -278,7 +86,6 @@ void Skin::BuildLetterMap (void) delete img; - m_letterMap = new QHash; /* alphabet */ for (uint i = 97; i < 123; i++) { @@ -324,3 +131,228 @@ void Skin::BuildLetterMap (void) /* text background */ m_items->insert (TEXTBG, letters[2][6]); } + + +void +Skin::BuildButtons (void) +{ + QPixmap *img = getPixmap("cbuttons.bmp"); + + m_items->insert (BTN_PREV_0, img->copy(0, 0, 23, 18)); + m_items->insert (BTN_PREV_1, img->copy(0, 18, 23, 18)); + + m_items->insert (BTN_PLAY_0, img->copy(23, 0, 23, 18)); + m_items->insert (BTN_PLAY_1, img->copy(23, 18, 23, 18)); + + m_items->insert (BTN_PAUSE_0, img->copy(46, 0, 23, 18)); + m_items->insert (BTN_PAUSE_1, img->copy(46, 18, 23, 18)); + + m_items->insert (BTN_STOP_0, img->copy(69, 0, 23, 18)); + m_items->insert (BTN_STOP_1, img->copy(69, 18, 23, 18)); + + m_items->insert (BTN_NEXT_0, img->copy(92, 0, 22, 18)); + m_items->insert (BTN_NEXT_1, img->copy(92, 18, 22, 18)); + + m_items->insert (BTN_EJECT_0, img->copy(114, 0, 22, 16)); + m_items->insert (BTN_EJECT_1, img->copy(114, 16, 22, 16)); + + delete img; +} + + +void +Skin::BuildToggleButtons (void) +{ + QPixmap *img = getPixmap("shufrep.bmp"); + + m_items->insert(REPEAT_ON_0, img->copy(0, 30, 28, 15)); + m_items->insert(REPEAT_ON_1, img->copy(0, 45, 28, 15)); + + m_items->insert(REPEAT_OFF_0, img->copy(0, 0, 28, 15)); + m_items->insert(REPEAT_OFF_1, img->copy(0, 15, 28, 15)); + + m_items->insert(SHUFFLE_ON_0, img->copy(28, 30, 46, 15)); + m_items->insert(SHUFFLE_ON_1, img->copy(28, 45, 46, 15)); + + m_items->insert(SHUFFLE_OFF_0, img->copy(28, 0, 46, 15)); + m_items->insert(SHUFFLE_OFF_1, img->copy(28, 15, 46, 15)); + + m_items->insert(EQ_ON_0, img->copy( 0, 73, 23, 12)); + m_items->insert(EQ_ON_1, img->copy(46, 73, 23, 12)); + + m_items->insert(EQ_OFF_0, img->copy( 0, 61, 23, 12)); + m_items->insert(EQ_OFF_1, img->copy(46, 61, 23, 12)); + + m_items->insert(PLS_ON_0, img->copy(23, 73, 23, 12)); + m_items->insert(PLS_ON_1, img->copy(69, 73, 23, 12)); + + m_items->insert(PLS_OFF_0, img->copy(23, 61, 23, 12)); + m_items->insert(PLS_OFF_1, img->copy(69, 61, 23, 12)); + + delete img; +} + + +void +Skin::BuildTitleBar (void) +{ + QPixmap *img = getPixmap("titlebar.bmp"); + + m_items->insert(MENUBUTTON_0, img->copy(0, 0, 9, 9)); + m_items->insert(MENUBUTTON_1, img->copy(0, 9, 9, 9)); + + m_items->insert(MINIMIZE_0, img->copy(9, 0, 9, 9)); + m_items->insert(MINIMIZE_1, img->copy(9, 9, 9, 9)); + + m_items->insert(CLOSE_0, img->copy(18, 0, 9, 9)); + m_items->insert(CLOSE_1, img->copy(18, 9, 9 ,9)); + + m_items->insert(SHADE_1_0, img->copy(0, 18, 9, 9)); + m_items->insert(SHADE_1_1, img->copy(9, 18, 9, 9)); + + m_items->insert(SHADE_2_0, img->copy(0, 27, 9, 9)); + m_items->insert(SHADE_2_1, img->copy(9, 27, 9, 9)); + + m_items->insert(TITLEBAR_0, img->copy(27, 0, 275, 14)); + m_items->insert(TITLEBAR_1, img->copy(27, 15, 275, 14)); + + m_items->insert(STATUSBAR_0, img->copy(27, 29, 275, 14)); + m_items->insert(STATUSBAR_1, img->copy(27, 29+13, 275, 14)); + + delete img; +} + + +void +Skin::BuildOther (void) +{ + QPixmap *img, *part; + QPainter(painter); + + img = getPixmap("monoster.bmp"); + m_items->insert (MONO_0, img->copy(29, 0, 27, 12)); + m_items->insert (MONO_1, img->copy(29, 12, 27, 12)); + m_items->insert (STEREO_0, img->copy(0, 0, 29, 12)); + m_items->insert (STEREO_1, img->copy(0, 12, 29, 12)); + delete img; + + + img = getPixmap("playpaus.bmp"); + + part = new QPixmap(11, 9); + painter.begin(part); + painter.drawPixmap (0, 0, 3, 9, *img, 36, 0, 3, 9); + painter.drawPixmap (3, 0, 8, 9, *img, 1, 0, 8, 9); + painter.end(); + m_items->insert (PIC_PLAY, part->copy()); + delete part; + + part = new QPixmap(11, 9); + painter.begin(part); + painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9); + painter.drawPixmap (2, 0, 9, 9, *img, 9, 0, 9, 9); + painter.end(); + m_items->insert (PIC_PAUSE, part->copy()); + delete part; + + part = new QPixmap(11, 9); + painter.begin(part); + painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9); + painter.drawPixmap (2, 0, 9, 9, *img, 18, 0, 9, 9); + painter.end(); + m_items->insert (PIC_STOP, part->copy()); + delete part; + + delete img; + + + img = getPixmap ("main.bmp"); + m_items->insert (MAIN_WINDOW, img->copy()); + m_items->insert (ABOUT_0, img->copy(247, 83, 20, 25)); + m_items->insert (ABOUT_1, img->copy(247, 83, 20, 24)); + delete img; +} + + +void +Skin::BuildSliders (void) +{ + QPixmap *img; + + img = getPixmap("volume.bmp"); + for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) { + m_volume_bar->insert(i, img->copy(0, i*15, 68, 13)); + } + delete img; + + img = getPixmap("balance.bmp"); + if (!img) { + img = getPixmap("volume.bmp"); + } + + for (int i = BALANCE_POS_MIN; i < BALANCE_POS_MAX; i++) { + m_balance->insert(i, img->copy(9, i*15, 38, 13)); + } + delete img; +} + + +void +Skin::BuildNumbers (void) +{ + uint num = 11; + + QPixmap *img = getPixmap("numbers.bmp"); + if (!img) { + num = 12; + img = getPixmap ("nums_ex.bmp"); + } + + for (uint i = 0; i < num; i++) { + m_numbers->insert (i, img->copy (i*9, 0, 9, 13)); + } + + delete img; + +} + + +void +Skin::ParsePLEdit (void) +{ + QDir dir; + QString path; + + dir.setPath (m_path); + dir.setFilter (QDir::Files); + + QFileInfoList list = dir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) { + QFileInfo fileInfo = list.at(i); + if (fileInfo.fileName().toLower() == "pledit.txt") { + path += fileInfo.filePath (); + break; + } + } + + if (path.isNull ()) { + qDebug ("trasigt!"); + return; + } + + QFile file (path); + + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return; + + while (!file.atEnd ()) { + QByteArray line = file.readLine (); + QList l = line.split ('='); + if (l.count () == 2) { + m_pledit_txt->insert (l[0].toLower (), l[1].trimmed()); + } else if (line.length() == 0) { + break; + } + } + +} diff --git a/Skin.h b/Skin.h index 8301472..301952a 100644 --- a/Skin.h +++ b/Skin.h @@ -18,17 +18,8 @@ class Skin : public QWidget Skin(string m_skinname); ~Skin(); - QPixmap *Pixmap (string file); - void Parse (string file); - void BuildLetterMap (void); - void BuildButtons (void); - void BuildToggleButtons (void); - void BuildTitleBar (void); - void BuildSliders (void); - void BuildOther (void); - void BuildNumbers (void); - void Skin::ParsePLEdit (void); - + void setSkin (QString name); + const QPixmap getItem (uint part) const { return m_items->value(part); } const QPixmap getVol (uint p) const { return m_volume_bar->value(p); } const QPixmap getBal (uint p) const { return m_balance->value(p); } @@ -157,7 +148,18 @@ class Skin : public QWidget PIC_STOP, }; private: - QPixmap *Skin::GetPixmap (string file); + QPixmap *Skin::getPixmap (string file); + void Parse (string file); + void BuildLetterMap (void); + void BuildButtons (void); + void BuildToggleButtons (void); + void BuildTitleBar (void); + void BuildSliders (void); + void BuildOther (void); + void BuildNumbers (void); + void ParsePLEdit (void); + + string m_skinname; QString m_path; @@ -169,6 +171,9 @@ class Skin : public QWidget QHash *m_pledit_txt; QList m_buttons; + + signals: + void skinChanged (Skin *skin); }; #endif diff --git a/TextBar.cpp b/TextBar.cpp index f3fc033..ee7de64 100644 --- a/TextBar.cpp +++ b/TextBar.cpp @@ -6,12 +6,14 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent) { MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW(); + m_skin = mw->getSkin(); + + connect (m_skin, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *))); m_h = h; m_w = w; m_x_off = 0; m_x2_off = 0; - m_skin = mw->getSkin (); setMinimumSize(m_w + 2, m_h); setMaximumSize(m_w + 2, m_h); @@ -25,24 +27,28 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent) m_timer = new QTimer (this); connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ())); - QPalette pal = palette (); - QBrush b = QBrush (Qt::TexturePattern); - b.setTexture (mw->getSkin ()->getItem (Skin::TEXTBG)); - pal.setBrush (QPalette::Window, b); - setPalette (pal); - setAutoFillBackground (true); - setText (QString::fromUtf8 ("Promoe 0.1")); //setText (QString::fromUtf8 ("Okerueu etuoduå öästö åntöå dS !! !¤ ¤ % % & & ¤")); } +void +TextScroller::setPixmaps (Skin *skin) +{ + QPalette pal = palette (); + QBrush b = QBrush (Qt::TexturePattern); + b.setTexture (skin->getItem (Skin::TEXTBG)); + pal.setBrush (QPalette::Window, b); + setPalette (pal); + + setText (QString::fromUtf8 ("Promoe 0.1")); + update(); +} void TextScroller::addOffset () { - if (m_x2_off > 0) { m_x2_off --; } else if (m_x_off < m_pixmap.size().width()) { diff --git a/TextBar.h b/TextBar.h index 18fa0fc..38554e8 100644 --- a/TextBar.h +++ b/TextBar.h @@ -26,6 +26,7 @@ class TextScroller : public QWidget public slots: void addOffset (); + void setPixmaps(Skin *skin); protected: QPixmap m_pixmap;