From d3e140ad0e76d69ce133aa27cfdf27c1660445b6 Mon Sep 17 00:00:00 2001 From: Thomas Frauendorfer Date: Wed, 26 Mar 2008 02:44:32 +0100 Subject: [PATCH] Changed handling of buttons Use PixmapButton in most cases insteas of Button or ToggleButton Moved positions and sizes of the buttons to Skin and let it return QIcons instead of Pixmaps --- src/Skin.cpp | 229 +++++++++++++++++++++--------- src/Skin.h | 103 +++++++------- src/TitleBar.cpp | 43 ++++-- src/TitleBar.h | 10 +- src/equalizer/equalizerwidget.cpp | 27 ++-- src/equalizer/equalizerwidget.h | 9 +- src/mainwindow/maindisplay.cpp | 83 +++++++---- src/mainwindow/maindisplay.h | 23 ++- src/mainwindow/mainwindow.cpp | 1 - src/mainwindow/shadeddisplay.cpp | 14 +- src/mainwindow/shadeddisplay.h | 14 +- src/playlist/playlistwidget.h | 2 - 12 files changed, 344 insertions(+), 214 deletions(-) diff --git a/src/Skin.cpp b/src/Skin.cpp index cd4f2cf..808aab1 100644 --- a/src/Skin.cpp +++ b/src/Skin.cpp @@ -13,6 +13,8 @@ * GNU General Public License for more details. */ +#include + #include "Skin.h" #include @@ -29,27 +31,90 @@ Skin *Skin::getInstance (void) return singleton; } +Skin::Skin () +{ + setSizes (); + setPositions (); +} + +void +Skin::setSizes () +{ + m_sizes.clear (); + m_sizes << QSize ( 9, 9) // BUTTON_MW_MENU + << QSize ( 9, 9) // BUTTON_MW_MINIMIZE + << QSize ( 9, 9) // BUTTON_MW_CLOSE + << QSize ( 9, 9) // BUTTON_MW_SHADE + << QSize (23, 18) // BUTTON_MW_PREV + << QSize (23, 18) // BUTTON_MW_PLAY + << QSize (23, 18) // BUTTON_MW_PAUSE + << QSize (23, 18) // BUTTON_MW_STOP + << QSize (22, 18) // BUTTON_MW_NEXT + << QSize (22, 16) // BUTTON_MW_EJECT + << QSize (23, 12) // BUTTON_MW_EQ + << QSize (23, 12) // BUTTON_MW_PLS + << QSize (46, 15) // BUTTON_MW_SHUFFLE + << QSize (28, 15) // BUTTON_MW_REPEAT + << QSize ( 9, 9) // BUTTON_MW_SHADED_SHADE + << QSize (25, 12) // BUTTON_EQ_ACTIVE + << QSize (33, 12) // BUTTON_EQ_AUTO + << QSize (44, 12) // BUTTON_EQ_PRESET + ; +} + +void +Skin::setPositions () +{ + m_positions.clear (); + m_positions << QPoint ( 6, 3) // BUTTON_MW_MENU + << QPoint (244, 3) // BUTTON_MW_MINIMIZE + << QPoint (264, 3) // BUTTON_MW_CLOSE + << QPoint (254, 3) // BUTTON_MW_SHADE + << QPoint ( 16, 88) // BUTTON_MW_PREV + << QPoint ( 39, 88) // BUTTON_MW_PLAY + << QPoint ( 62, 88) // BUTTON_MW_PAUSE + << QPoint ( 85, 88) // BUTTON_MW_STOP + << QPoint (108, 88) // BUTTON_MW_NEXT + << QPoint (136, 89) // BUTTON_MW_EJECT + << QPoint (219, 58) // BUTTON_MW_EQ + << QPoint (242, 58) // BUTTON_MW_PLS + << QPoint (164, 89) // BUTTON_MW_SHUFFLE + << QPoint (210, 89) // BUTTON_MW_REPEAT + << QPoint (254, 3) // BUTTON_MW_SHADED_SHADE + << QPoint ( 14, 18) // BUTTON_EQ_ACTIVE + << QPoint ( 39, 18) // BUTTON_EQ_AUTO + << QPoint (217, 18) // BUTTON_EQ_PRESET + ; +} + void Skin::BuildEqualizer (void) { QPixmap *img = getPixmap ("eqmain"); if (img) { m_items[EQ_WIN_BG] = img->copy (0, 0, 275, 116); - m_items[EQ_WIN_OFF_0] = img->copy (10, 119, 25, 12); - m_items[EQ_WIN_OFF_1] = img->copy (128, 119, 25, 12); - m_items[EQ_WIN_ON_1] = img->copy (187, 119, 25, 12); - m_items[EQ_WIN_ON_0] = img->copy (69, 119, 25, 12); - - m_items[EQ_WIN_AUTO_OFF_0] = img->copy (35, 119, 33, 12); - m_items[EQ_WIN_AUTO_OFF_1] = img->copy (153, 119, 33, 12); - m_items[EQ_WIN_AUTO_ON_1] = img->copy (212, 119, 33, 12); - m_items[EQ_WIN_AUTO_ON_0] = img->copy (94, 119, 33, 12); - - m_items[EQ_WIN_PRESET_0] = img->copy (224, 164, 44, 12); - m_items[EQ_WIN_PRESET_1] = img->copy (224, 176, 44, 12); m_items[EQ_WIN_GRAPH_BG] = img->copy (0, 294, 113, 19); + QIcon icon; + icon.addPixmap (img->copy ( 10, 119, 25, 12), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (128, 119, 25, 12), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy ( 69, 119, 25, 12), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (187, 119, 25, 12), QIcon::Active, QIcon::On); + m_icons[BUTTON_EQ_ACTIVE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy ( 35, 119, 33, 12), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (153, 119, 33, 12), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy ( 94, 119, 33, 12), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (212, 119, 33, 12), QIcon::Active, QIcon::On); + m_icons[BUTTON_EQ_AUTO] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (224, 164, 44, 12), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (224, 176, 44, 12), QIcon::Active, QIcon::Off); + m_icons[BUTTON_EQ_PRESET] = icon; + for (int i = 0; i < 14; i++) { m_items[EQ_WIN_BAR_POS_0+i] = img->copy (13+15*i, 164, 14, 63); } @@ -333,24 +398,36 @@ Skin::BuildButtons (void) QPixmap *img = getPixmap("cbuttons"); if(img) { - m_items[BTN_PREV_0] = img->copy(0, 0, 23, 18); - m_items[BTN_PREV_1] = img->copy(0, 18, 23, 18); - - m_items[BTN_PLAY_0] = img->copy(23, 0, 23, 18); - m_items[BTN_PLAY_1] = img->copy(23, 18, 23, 18); - - m_items[BTN_PAUSE_0] = img->copy(46, 0, 23, 18); - m_items[BTN_PAUSE_1] = img->copy(46, 18, 23, 18); - - m_items[BTN_STOP_0] = img->copy(69, 0, 23, 18); - m_items[BTN_STOP_1] = img->copy(69, 18, 23, 18); - - m_items[BTN_NEXT_0] = img->copy(92, 0, 22, 18); - m_items[BTN_NEXT_1] = img->copy(92, 18, 22, 18); - - m_items[BTN_EJECT_0] = img->copy(114, 0, 22, 16); - m_items[BTN_EJECT_1] = img->copy(114, 16, 22, 16); - + QIcon icon; + icon.addPixmap (img->copy (0, 0, 23, 18), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (0, 18, 23, 18), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_PREV] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (23, 0, 23, 18), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (23, 18, 23, 18), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_PLAY] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (46, 0, 23, 18), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (46, 18, 23, 18), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_PAUSE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (69, 0, 23, 18), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (69, 18, 23, 18), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_STOP] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (92, 0, 22, 18), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (92, 18, 22, 18), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_NEXT] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (114, 0, 22, 16), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (114, 16, 22, 16), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_EJECT] = icon; + delete img; } else @@ -365,30 +442,34 @@ Skin::BuildToggleButtons (void) if(img) { - m_items[REPEAT_ON_0] = img->copy(0, 30, 28, 15); - m_items[REPEAT_ON_1] = img->copy(0, 45, 28, 15); - - m_items[REPEAT_OFF_0] = img->copy(0, 0, 28, 15); - m_items[REPEAT_OFF_1] = img->copy(0, 15, 28, 15); - - m_items[SHUFFLE_ON_0] = img->copy(28, 30, 46, 15); - m_items[SHUFFLE_ON_1] = img->copy(28, 45, 46, 15); - - m_items[SHUFFLE_OFF_0] = img->copy(28, 0, 46, 15); - m_items[SHUFFLE_OFF_1] = img->copy(28, 15, 46, 15); - - m_items[EQ_ON_0] = img->copy( 0, 73, 23, 12); - m_items[EQ_ON_1] = img->copy(46, 73, 23, 12); - - m_items[EQ_OFF_0] = img->copy( 0, 61, 23, 12); - m_items[EQ_OFF_1] = img->copy(46, 61, 23, 12); - - m_items[PLS_ON_0] = img->copy(23, 73, 23, 12); - m_items[PLS_ON_1] = img->copy(69, 73, 23, 12); - - m_items[PLS_OFF_0] = img->copy(23, 61, 23, 12); - m_items[PLS_OFF_1] = img->copy(69, 61, 23, 12); - + QIcon icon; + icon.addPixmap (img->copy ( 0, 61, 23, 12), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (46, 61, 23, 12), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy ( 0, 73, 23, 12), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (46, 73, 23, 12), QIcon::Active, QIcon::On); + m_icons[BUTTON_MW_EQ] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (23, 61, 23, 12), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (69, 61, 23, 12), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy (23, 73, 23, 12), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (69, 73, 23, 12), QIcon::Active, QIcon::On); + m_icons[BUTTON_MW_PLS] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (28, 0, 46, 15), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (28, 15, 46, 15), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy (28, 30, 46, 15), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (28, 45, 46, 15), QIcon::Active, QIcon::On); + m_icons[BUTTON_MW_SHUFFLE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (0, 0, 28, 15), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (0, 15, 28, 15), QIcon::Active, QIcon::Off); + icon.addPixmap (img->copy (0, 30, 28, 15), QIcon::Normal, QIcon::On); + icon.addPixmap (img->copy (0, 45, 28, 15), QIcon::Active, QIcon::On); + m_icons[BUTTON_MW_REPEAT] = icon; + delete img; } else @@ -403,21 +484,31 @@ Skin::BuildTitleBar (void) if(img) { - m_items[MENUBUTTON_0] = img->copy(0, 0, 9, 9); - m_items[MENUBUTTON_1] = img->copy(0, 9, 9, 9); - - m_items[MINIMIZE_0] = img->copy(9, 0, 9, 9); - m_items[MINIMIZE_1] = img->copy(9, 9, 9, 9); - - m_items[CLOSE_0] = img->copy(18, 0, 9, 9); - m_items[CLOSE_1] = img->copy(18, 9, 9 ,9); - - m_items[SHADE_1_0] = img->copy(0, 18, 9, 9); - m_items[SHADE_1_1] = img->copy(9, 18, 9, 9); - - m_items[SHADE_2_0] = img->copy(0, 27, 9, 9); - m_items[SHADE_2_1] = img->copy(9, 27, 9, 9); - + QIcon icon; + icon.addPixmap (img->copy (0, 0, 9, 9), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (0, 9, 9, 9), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_MENU] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (9, 0, 9, 9), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (9, 9, 9, 9), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_MINIMIZE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (18, 0, 9, 9), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (18, 9, 9, 9), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_CLOSE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (0, 18, 9, 9), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (9, 18, 9, 9), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_SHADE] = icon; + + icon = QIcon (); + icon.addPixmap (img->copy (0, 27, 9, 9), QIcon::Normal, QIcon::Off); + icon.addPixmap (img->copy (9, 27, 9, 9), QIcon::Active, QIcon::Off); + m_icons[BUTTON_MW_SHADED_SHADE] = icon; + m_items[TITLEBAR_0] = img->copy(27, 0, 275, 14); m_items[TITLEBAR_1] = img->copy(27, 15, 275, 14); diff --git a/src/Skin.h b/src/Skin.h index 07b0a5a..63db820 100644 --- a/src/Skin.h +++ b/src/Skin.h @@ -16,14 +16,19 @@ #ifndef __SKIN_H__ #define __SKIN_H__ -#include - -#include -#include +#include +#include #include + +#include +#include +#include +#include + class QDir; -//class Skin : public QWidget +typedef QList QPixmapList; + class Skin : public QObject { Q_OBJECT @@ -33,6 +38,10 @@ class Skin : public QObject void setSkin (const QString& name); static QPixmap getPixmap (const QString&, QDir); + const QSize getSize (uint item) const { return m_sizes[item]; }; + const QPoint getPos (uint item) const { return m_positions[item]; }; + const QIcon getIcon (uint item) const { return m_icons.value(item); }; + const QPixmap getItem (uint part) const { return m_items[part]; } const QPixmap getPls (uint part) const { return m_playlist[part]; } const QPixmap getLetter (uint c) const { return m_letterMap[c]; } @@ -40,6 +49,31 @@ class Skin : public QObject uint getNumberSize () { return m_numbers.size(); } const QByteArray getPLeditValue (QByteArray c) const { return m_pledit_txt[c]; } + enum Buttons { + /* Mainwindow buttons */ + BUTTON_MW_MENU, + BUTTON_MW_MINIMIZE, + BUTTON_MW_CLOSE, + BUTTON_MW_SHADE, + BUTTON_MW_PREV, + BUTTON_MW_PLAY, + BUTTON_MW_PAUSE, + BUTTON_MW_STOP, + BUTTON_MW_NEXT, + BUTTON_MW_EJECT, + BUTTON_MW_EQ, + BUTTON_MW_PLS, + BUTTON_MW_SHUFFLE, + BUTTON_MW_REPEAT, + /* Mainwindow buttons shaded*/ + BUTTON_MW_SHADED_SHADE, + /* Equalizer buttons */ + BUTTON_EQ_ACTIVE, + BUTTON_EQ_AUTO, + BUTTON_EQ_PRESET + /* Playlist buttons */ + }; + enum Part { NONE, MAIN_WINDOW, @@ -49,16 +83,6 @@ class Skin : public QObject MONO_1, STEREO_0, STEREO_1, - MENUBUTTON_0, - MENUBUTTON_1, - MINIMIZE_0, - MINIMIZE_1, - CLOSE_0, - CLOSE_1, - SHADE_1_0, - SHADE_1_1, - SHADE_2_0, - SHADE_2_1, TITLEBAR_0, TITLEBAR_1, STATUSBAR_0, @@ -66,34 +90,6 @@ class Skin : public QObject SEEKBAR, SEEKBAR_POS_0, SEEKBAR_POS_1, - REPEAT_ON_0, - REPEAT_ON_1, - REPEAT_OFF_0, - REPEAT_OFF_1, - SHUFFLE_ON_0, - SHUFFLE_ON_1, - SHUFFLE_OFF_0, - SHUFFLE_OFF_1, - EQ_ON_0, - EQ_ON_1, - EQ_OFF_0, - EQ_OFF_1, - PLS_ON_0, - PLS_ON_1, - PLS_OFF_0, - PLS_OFF_1, - BTN_PREV_0, - BTN_PREV_1, - BTN_PLAY_0, - BTN_PLAY_1, - BTN_PAUSE_0, - BTN_PAUSE_1, - BTN_STOP_0, - BTN_STOP_1, - BTN_NEXT_0, - BTN_NEXT_1, - BTN_EJECT_0, - BTN_EJECT_1, TEXTBG, PIC_PLAY, PIC_PAUSE, @@ -139,16 +135,6 @@ class Skin : public QObject CLUTTER_D, CLUTTER_V, EQ_WIN_BG, - EQ_WIN_ON_0, - EQ_WIN_ON_1, - EQ_WIN_OFF_0, - EQ_WIN_OFF_1, - EQ_WIN_AUTO_ON_0, - EQ_WIN_AUTO_ON_1, - EQ_WIN_AUTO_OFF_0, - EQ_WIN_AUTO_OFF_1, - EQ_WIN_PRESET_0, - EQ_WIN_PRESET_1, EQ_WIN_GRAPH_BG, EQ_WIN_BAR_POS_0, EQ_WIN_BAR_POS_1, @@ -305,9 +291,12 @@ class Skin : public QObject PLS_LST_OPN_1 }; private: - Skin() {}; + Skin(); static Skin *singleton; + void setSizes (); + void setPositions (); + QPixmap *getPixmap (const QString& file); void BuildLetterMap (void); void BuildButtons (void); @@ -324,6 +313,12 @@ class Skin : public QObject QString m_skinname; QString m_path; + QList m_positions; + QList m_sizes; + + QMap m_icons; + + QMap m_items; QMap m_letterMap; QMap m_volume_bar; diff --git a/src/TitleBar.cpp b/src/TitleBar.cpp index 2bb9d94..d5c89dc 100644 --- a/src/TitleBar.cpp +++ b/src/TitleBar.cpp @@ -21,7 +21,7 @@ #include "SkinChooser.h" // #include "MedialibWindow.h" #include "settingsdialog.h" -#include "Button.h" +#include "pixmapbutton.h" #include "BrowseDialog.h" #include "Skin.h" @@ -31,25 +31,35 @@ TitleBar::TitleBar (QWidget *parent, bool shaded) : PixWidget (parent) { MainWindow *mw = dynamic_cast(window ()); m_shaded = shaded; - - setMinimumSize (275, 14); - setMaximumSize (275, 14); + Skin *skin = Skin::getInstance (); - m_menubtn = new Button (this, Skin::MENUBUTTON_0, Skin::MENUBUTTON_1); + setFixedSize (275, 14); + + m_menubtn = new PixmapButton (this); + m_menubtn->resize (skin->getSize (Skin::BUTTON_MW_MENU)); + m_menubtn->move (skin->getPos (Skin::BUTTON_MW_MENU)); connect (m_menubtn, SIGNAL (clicked ()), this, SLOT (showMenu ())); - m_menubtn->move(6, 3); - m_minimize = new Button (this, Skin::MINIMIZE_0, Skin::MINIMIZE_1); + m_minimize = new PixmapButton (this); + m_minimize->resize (skin->getSize (Skin::BUTTON_MW_MINIMIZE)); + m_minimize->move (skin->getPos (Skin::BUTTON_MW_MINIMIZE)); connect (m_minimize, SIGNAL (clicked ()), mw, SLOT (showMinimized ())); - m_minimize->move(244, 3); - m_shadebtn = new Button (this, Skin::SHADE_1_0, Skin::SHADE_1_1); + if (shaded) { + m_shadebtn = new PixmapButton (this); + m_shadebtn->resize (skin->getSize (Skin::BUTTON_MW_SHADED_SHADE)); + m_shadebtn->move (skin->getPos (Skin::BUTTON_MW_SHADED_SHADE)); + } else { + m_shadebtn = new PixmapButton (this); + m_shadebtn->resize (skin->getSize (Skin::BUTTON_MW_SHADE)); + m_shadebtn->move (skin->getPos (Skin::BUTTON_MW_SHADE)); + } connect (m_shadebtn, SIGNAL (clicked()), mw, SLOT (switchDisplay ())); - m_shadebtn->move(254, 3); - m_closebtn = new Button (this, Skin::CLOSE_0, Skin::CLOSE_1); + m_closebtn = new PixmapButton (this); + m_closebtn->resize (skin->getSize (Skin::BUTTON_MW_CLOSE)); + m_closebtn->move (skin->getPos (Skin::BUTTON_MW_CLOSE)); connect (m_closebtn, SIGNAL (clicked()), qApp, SLOT (quit ())); - m_closebtn->move(264, 3); } @@ -139,6 +149,15 @@ TitleBar::setPixmaps (Skin *skin) m_pixmap = m_pixmap_inactive; } + m_menubtn->setIcon (skin->getIcon (Skin::BUTTON_MW_MENU)); + m_minimize->setIcon (skin->getIcon (Skin::BUTTON_MW_MINIMIZE)); + if (m_shaded) { + m_shadebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_SHADED_SHADE)); + } else { + m_shadebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_SHADE)); + } + m_closebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_CLOSE)); + update (); } diff --git a/src/TitleBar.h b/src/TitleBar.h index 716c6ef..cdfa7e3 100644 --- a/src/TitleBar.h +++ b/src/TitleBar.h @@ -20,7 +20,7 @@ class TitleBar; #include "PixWidget.h" -class Button; +class PixmapButton; class Skin; class TitleBar : public PixWidget @@ -46,10 +46,10 @@ class TitleBar : public PixWidget QPixmap m_pixmap_active; QPixmap m_pixmap_inactive; - Button *m_shadebtn; - Button *m_menubtn; - Button *m_closebtn; - Button *m_minimize; + PixmapButton *m_shadebtn; + PixmapButton *m_menubtn; + PixmapButton *m_closebtn; + PixmapButton *m_minimize; bool m_shaded; }; diff --git a/src/equalizer/equalizerwidget.cpp b/src/equalizer/equalizerwidget.cpp index 4b49757..929c7cd 100644 --- a/src/equalizer/equalizerwidget.cpp +++ b/src/equalizer/equalizerwidget.cpp @@ -19,7 +19,7 @@ #include "equalizerwidget.h" #include "mainwindow.h" -#include "Button.h" +#include "pixmapbutton.h" #include "Skin.h" #include "VolumeSlider.h" @@ -58,24 +58,27 @@ EqualizerWidget::EqualizerWidget (QWidget *parent) : QWidget (parent) connect (skin, SIGNAL(skinChanged(Skin *)), this, SLOT(setPixmaps(Skin *))); - m_enable = new ToggleButton(this, Skin::EQ_WIN_ON_0, Skin::EQ_WIN_ON_1, - Skin::EQ_WIN_OFF_0, Skin::EQ_WIN_OFF_1); - m_enable->move(14, 18); + m_enable = new PixmapButton (this); + m_enable->setCheckable (true); + m_enable->resize (skin->getSize (Skin::BUTTON_EQ_ACTIVE)); + m_enable->move (skin->getPos (Skin::BUTTON_EQ_ACTIVE)); // must use signal clicked here, as this button also becomes unchecked if // use_legacy is deactivated connect(m_enable, SIGNAL (clicked (bool)), this, SLOT (setEqualizerEnabled (bool))); - m_auto = new ToggleButton(this, Skin::EQ_WIN_AUTO_ON_0, Skin::EQ_WIN_AUTO_ON_1, - Skin::EQ_WIN_AUTO_OFF_0, Skin::EQ_WIN_AUTO_OFF_1); - m_auto->move(39, 18); + m_auto = new PixmapButton (this); + m_auto->setCheckable (true); + m_auto->resize (skin->getSize (Skin::BUTTON_EQ_AUTO)); + m_auto->move (skin->getPos (Skin::BUTTON_EQ_AUTO)); m_auto->setEnabled(false); // FIXME: needs to be implemented connect(m_auto, SIGNAL(clicked()), parent, SLOT(setEnabled())); - m_preset = new Button(this, Skin::EQ_WIN_PRESET_0, Skin::EQ_WIN_PRESET_1); - m_preset->move(217, 18); + m_preset = new PixmapButton (this); + m_preset->resize (skin->getSize (Skin::BUTTON_EQ_PRESET)); + m_preset->move (skin->getPos (Skin::BUTTON_EQ_PRESET)); m_preset->setEnabled(false); // FIXME: needs to be implemented connect(m_preset, SIGNAL(clicked()), parent, SLOT(setEnabled())); @@ -138,6 +141,10 @@ EqualizerWidget::setPixmaps (Skin *skin) setMinimumSize (m_pixmap.size ()); setMaximumSize (m_pixmap.size ()); + m_enable->setIcon (skin->getIcon (Skin::BUTTON_EQ_ACTIVE)); + m_auto->setIcon (skin->getIcon (Skin::BUTTON_EQ_AUTO)); + m_preset->setIcon (skin->getIcon (Skin::BUTTON_EQ_PRESET)); + update(); } @@ -178,7 +185,7 @@ EqualizerWidget::serverConfigChanged (QString key, QString value) } } if (key == "equalizer.preamp") { - // FIXME: value can be of type floas + // FIXME: value can be of type float m_preamp->setValue (value.toInt ()); } if (key.startsWith ("equalizer.legacy")) { diff --git a/src/equalizer/equalizerwidget.h b/src/equalizer/equalizerwidget.h index 7d3ed97..7069eba 100644 --- a/src/equalizer/equalizerwidget.h +++ b/src/equalizer/equalizerwidget.h @@ -25,8 +25,7 @@ class QPaintEvent; #include "VolumeSlider.h" class XConfig; class Skin; -class Button; -class ToggleButton; +class PixmapButton; //#include @@ -69,9 +68,9 @@ class EqualizerWidget : public QWidget XConfig *m_xconfig; QPixmap m_pixmap; QPixmap m_graph; - ToggleButton *m_enable; - ToggleButton *m_auto; - Button *m_preset; + PixmapButton *m_enable; + PixmapButton *m_auto; + PixmapButton *m_preset; Slider *m_preamp; EqualizerSlider *m_bands[10]; }; diff --git a/src/mainwindow/maindisplay.cpp b/src/mainwindow/maindisplay.cpp index b5630bb..1c36b19 100644 --- a/src/mainwindow/maindisplay.cpp +++ b/src/mainwindow/maindisplay.cpp @@ -22,8 +22,8 @@ #include "maindisplay.h" #include "mainwindow.h" +#include "pixmapbutton.h" #include "TitleBar.h" -#include "Button.h" #include "TextBar.h" #include "NumberDisplay.h" #include "TimeDisplay.h" @@ -38,6 +38,7 @@ #include #include +#include MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) { @@ -129,6 +130,18 @@ MainDisplay::setPixmaps (Skin *skin) setPalette(palette); setFixedSize(QSize(275, 116)); + + /* update buttons*/ + m_prev->setIcon (skin->getIcon (Skin::BUTTON_MW_PREV)); + m_play->setIcon (skin->getIcon (Skin::BUTTON_MW_PLAY)); + m_pause->setIcon (skin->getIcon (Skin::BUTTON_MW_PAUSE)); + m_stop->setIcon (skin->getIcon (Skin::BUTTON_MW_STOP)); + m_next->setIcon (skin->getIcon (Skin::BUTTON_MW_NEXT)); + m_eject->setIcon (skin->getIcon (Skin::BUTTON_MW_EJECT)); + m_eq->setIcon (skin->getIcon (Skin::BUTTON_MW_EQ)); + m_pls->setIcon (skin->getIcon (Skin::BUTTON_MW_PLS)); + m_shuffle->setIcon (skin->getIcon (Skin::BUTTON_MW_SHUFFLE)); + m_repeat->setIcon (skin->getIcon (Skin::BUTTON_MW_REPEAT)); } void @@ -211,36 +224,40 @@ void MainDisplay::SetupToggleButtons (void) { QSettings s; + Skin *skin = Skin::getInstance (); - - m_eq = new ToggleButton (this, Skin::EQ_ON_0, Skin::EQ_ON_1, - Skin::EQ_OFF_0, Skin::EQ_OFF_1); - m_eq->move(219, 58); + m_eq = new PixmapButton (this); + m_eq->setCheckable (true); + m_eq->resize (skin->getSize (Skin::BUTTON_MW_EQ)); + m_eq->move (skin->getPos (Skin::BUTTON_MW_EQ)); m_eq->setChecked (m_mw->getEQ ()->isVisible ()); connect (m_eq, SIGNAL (toggled (bool)), m_mw->getEQ (), SLOT (setVisible (bool))); connect (m_mw->getEQ (), SIGNAL (visibilityChanged (bool)), m_eq, SLOT (setChecked (bool))); - - m_pls = new ToggleButton (this, Skin::PLS_ON_0, Skin::PLS_ON_1, - Skin::PLS_OFF_0, Skin::PLS_OFF_1); - m_pls->move(242, 58); + m_pls = new PixmapButton (this); + m_pls->setCheckable (true); + m_pls->resize (skin->getSize (Skin::BUTTON_MW_PLS)); + m_pls->move (skin->getPos (Skin::BUTTON_MW_PLS)); m_pls->setChecked (m_mw->getPL ()->isVisible ()); connect (m_pls, SIGNAL (toggled (bool)), m_mw->getPL (), SLOT (setVisible (bool))); connect (m_mw->getPL (), SIGNAL (visibilityChanged (bool)), m_pls, SLOT (setChecked (bool))); + // FIXME: Shuffle not yet implemented + // Shuffled play should be done serverside through a service client + m_shuffle = new PixmapButton (this); + m_shuffle->setCheckable (true); + m_shuffle->resize (skin->getSize (Skin::BUTTON_MW_SHUFFLE)); + m_shuffle->move (skin->getPos (Skin::BUTTON_MW_SHUFFLE)); + m_shuffle->setEnabled(false); - m_shuffle = new ToggleButton (this, Skin::SHUFFLE_ON_0, Skin::SHUFFLE_ON_1, - Skin::SHUFFLE_OFF_0, Skin::SHUFFLE_OFF_1); - m_shuffle->move(164, 89); - m_shuffle->setEnabled(false); // FIXME: Disabled button for now, not yet implemented - - m_repeat = new ToggleButton (this, Skin::REPEAT_ON_0, Skin::REPEAT_ON_1, - Skin::REPEAT_OFF_0, Skin::REPEAT_OFF_1); - m_repeat->move(210, 89); + m_repeat = new PixmapButton (this); + m_repeat->setCheckable (true); + m_repeat->resize (skin->getSize (Skin::BUTTON_MW_REPEAT)); + m_repeat->move (skin->getPos (Skin::BUTTON_MW_REPEAT)); connect (m_repeat, SIGNAL (clicked (bool)), this, SLOT (setRepeatAllEnabled (bool))); } @@ -256,35 +273,41 @@ void MainDisplay::SetupPushButtons (void) { XMMSHandler &client = XMMSHandler::getInstance (); + Skin *skin = Skin::getInstance (); /* Normal buttons */ - m_prev = new Button (this, Skin::BTN_PREV_0, Skin::BTN_PREV_1); - m_prev->move(16, 88); + m_prev = new PixmapButton (this); + m_prev->resize (skin->getSize (Skin::BUTTON_MW_PREV)); + m_prev->move (skin->getPos (Skin::BUTTON_MW_PREV)); connect (m_prev, SIGNAL(clicked()), client.xplayback (), SLOT(prev ())); - m_play = new Button (this, Skin::BTN_PLAY_0, Skin::BTN_PLAY_1); - m_play->move(39, 88); + m_play = new PixmapButton (this); + m_play->resize (skin->getSize (Skin::BUTTON_MW_PLAY)); + m_play->move (skin->getPos (Skin::BUTTON_MW_PLAY)); connect (m_play, SIGNAL(clicked()), client.xplayback (), SLOT(play ())); - m_pause = new Button (this, Skin::BTN_PAUSE_0, Skin::BTN_PAUSE_1); - m_pause->move(62, 88); + m_pause = new PixmapButton (this); + m_pause->resize (skin->getSize (Skin::BUTTON_MW_PAUSE)); + m_pause->move (skin->getPos (Skin::BUTTON_MW_PAUSE)); connect (m_pause, SIGNAL(clicked()), client.xplayback (), SLOT(pause ())); - m_stop = new Button (this, Skin::BTN_STOP_0, Skin::BTN_STOP_1); - m_stop->move(85, 88); + m_stop = new PixmapButton (this); + m_stop->resize (skin->getSize (Skin::BUTTON_MW_STOP)); + m_stop->move (skin->getPos (Skin::BUTTON_MW_STOP)); connect (m_stop, SIGNAL(clicked()), client.xplayback (), SLOT(stop ())); - m_next = new Button (this, Skin::BTN_NEXT_0, Skin::BTN_NEXT_1); - m_next->move(108, 88); + m_next = new PixmapButton (this); + m_next->resize (skin->getSize (Skin::BUTTON_MW_NEXT)); + m_next->move (skin->getPos (Skin::BUTTON_MW_NEXT)); connect (m_next, SIGNAL(clicked()), client.xplayback (), SLOT(next ())); - m_eject = new Button (this, Skin::BTN_EJECT_0, Skin::BTN_EJECT_1); - m_eject->move(136, 89); + m_eject = new PixmapButton (this); + m_eject->resize (skin->getSize (Skin::BUTTON_MW_EJECT)); + m_eject->move (skin->getPos (Skin::BUTTON_MW_EJECT)); connect (m_eject, SIGNAL(clicked()), this, SLOT(fileOpen())); } - /* * Methods for interaction with the server configuration */ diff --git a/src/mainwindow/maindisplay.h b/src/mainwindow/maindisplay.h index 8002daa..cdd6b91 100644 --- a/src/mainwindow/maindisplay.h +++ b/src/mainwindow/maindisplay.h @@ -32,8 +32,7 @@ class MainDisplay; #include "Display.h" -class Button; -class ToggleButton; +class PixmapButton; class TextScroller; class TimeDisplay; class SmallNumberDisplay; @@ -83,17 +82,17 @@ class MainDisplay : public SkinDisplay void SetupPushButtons (void); void SetupToggleButtons (void); - Button *m_prev; - Button *m_play; - Button *m_pause; - Button *m_stop; - Button *m_next; - Button *m_eject; + PixmapButton *m_prev; + PixmapButton *m_play; + PixmapButton *m_pause; + PixmapButton *m_stop; + PixmapButton *m_next; + PixmapButton *m_eject; - ToggleButton *m_pls; - ToggleButton *m_eq; - ToggleButton *m_shuffle; - ToggleButton *m_repeat; + PixmapButton *m_pls; + PixmapButton *m_eq; + PixmapButton *m_shuffle; + PixmapButton *m_repeat; MainWindow *m_mw; diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp index edf9f83..fc08e16 100644 --- a/src/mainwindow/mainwindow.cpp +++ b/src/mainwindow/mainwindow.cpp @@ -25,7 +25,6 @@ #include "maindisplay.h" #include "shadeddisplay.h" #include "equalizerwindow.h" -#include "Button.h" #include "Skin.h" #include diff --git a/src/mainwindow/shadeddisplay.cpp b/src/mainwindow/shadeddisplay.cpp index 2fca8b8..5ebabe8 100644 --- a/src/mainwindow/shadeddisplay.cpp +++ b/src/mainwindow/shadeddisplay.cpp @@ -20,7 +20,7 @@ #include "shadeddisplay.h" #include "TitleBar.h" -#include "Button.h" +#include "pixmapbutton.h" #include "SmallNumberDisplay.h" #include "TextBar.h" @@ -46,32 +46,32 @@ ShadedDisplay::ShadedDisplay (QWidget *parent) : SkinDisplay (parent) m_title = new TextScroller (this, 39, 7, "shaded"); m_title->move (79, 4); - m_prev = new Button (this); + m_prev = new PixmapButton (this); m_prev->move(169, 4); m_prev->resize (8, 7); connect (m_prev, SIGNAL(clicked()), client.xplayback (), SLOT(prev ())); - m_play = new Button (this); + m_play = new PixmapButton (this); m_play->move(177, 4); m_play->resize (10, 7); connect (m_play, SIGNAL(clicked()), client.xplayback (), SLOT(play ())); - m_pause = new Button (this); + m_pause = new PixmapButton (this); m_pause->move(187, 4); m_pause->resize (10, 7); connect (m_pause, SIGNAL(clicked()), client.xplayback (), SLOT(pause ())); - m_stop = new Button (this); + m_stop = new PixmapButton (this); m_stop->move(197, 4); m_stop->resize (9, 7); connect (m_stop, SIGNAL(clicked()), client.xplayback (), SLOT(stop ())); - m_next = new Button (this); + m_next = new PixmapButton (this); m_next->move(206, 4); m_next->resize (8, 7); connect (m_next, SIGNAL(clicked()), client.xplayback (), SLOT(next ())); - m_eject = new Button (this); + m_eject = new PixmapButton (this); m_eject->move(216, 4); m_eject->resize (9, 7); connect (m_eject, SIGNAL(clicked()), this, SLOT(fileOpen())); diff --git a/src/mainwindow/shadeddisplay.h b/src/mainwindow/shadeddisplay.h index 72d1229..924ea68 100644 --- a/src/mainwindow/shadeddisplay.h +++ b/src/mainwindow/shadeddisplay.h @@ -22,7 +22,7 @@ class ShadedDisplay; #include "Display.h" class MainWindow; -class Button; +class PixmapButton; class SmallNumberDisplay; class TextScroller; @@ -38,12 +38,12 @@ class ShadedDisplay : public SkinDisplay TextScroller *m_title; private: - Button *m_prev; - Button *m_play; - Button *m_pause; - Button *m_stop; - Button *m_next; - Button *m_eject; + PixmapButton *m_prev; + PixmapButton *m_play; + PixmapButton *m_pause; + PixmapButton *m_stop; + PixmapButton *m_next; + PixmapButton *m_eject; public slots: void setStatus (Xmms::Playback::Status status); diff --git a/src/playlist/playlistwidget.h b/src/playlist/playlistwidget.h index 14f804d..17a43a2 100644 --- a/src/playlist/playlistwidget.h +++ b/src/playlist/playlistwidget.h @@ -24,8 +24,6 @@ class PlaylistWidget; class PlaylistScroller; -#include "Button.h" - class Skin; class PlaylistView; class PlaylistMenu;