diff --git a/Equalizer.cpp b/Equalizer.cpp new file mode 100644 index 0000000..faba4dd --- /dev/null +++ b/Equalizer.cpp @@ -0,0 +1,95 @@ +#include "MainWindow.h" +#include "TitleBar.h" +#include "Equalizer.h" +#include "Button.h" + +EqualizerWindow::EqualizerWindow (QWidget *parent) : QMainWindow (parent) +{ + m_mw = dynamic_cast(parent); + + setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint); + setAttribute (Qt::WA_DeleteOnClose); + + m_equalizer = new EqualizerWidget (this); + m_equalizer->show(); + + setCentralWidget (m_equalizer); + + setMinimumSize (275, 116); + setMaximumSize (275, 116); +} + +EqualizerWindow::~EqualizerWindow (void) +{ +} + +void +EqualizerWindow::setEnabled (void) +{ + qDebug ("test"); +} + + +EqualizerWidget::EqualizerWidget (QWidget *parent) : QWidget (parent) +{ + Skin *skin = Skin::getInstance (); + + 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); + + connect(m_enable, SIGNAL(clicked()), parent, SLOT(setEnabled())); + + 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); + + 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); + + connect(m_preset, SIGNAL(clicked()), parent, SLOT(setEnabled())); +} + +EqualizerWidget::~EqualizerWidget (void) +{ +} + +void +EqualizerWidget::mouseMoveEvent (QMouseEvent *event) +{ +} + +void +EqualizerWidget::setPixmaps (Skin *skin) +{ + m_pixmap = skin->getItem(Skin::EQ_WIN_BG); + m_graph = skin->getItem(Skin::EQ_WIN_GRAPH_BG); + + setMinimumSize (m_pixmap.size ()); + setMaximumSize (m_pixmap.size ()); + + update(); +} + +void +EqualizerWidget::paintEvent (QPaintEvent *event) +{ + if (m_pixmap.isNull ()) { + return; + } + QPainter(paint); + QRect r; + + paint.begin(this); + + paint.drawPixmap(rect(), m_pixmap, m_pixmap.rect()); + r.setRect(86, 17, 113, 19); + paint.drawPixmap(r, m_graph, m_graph.rect()); + + paint.end(); +} diff --git a/Equalizer.h b/Equalizer.h new file mode 100644 index 0000000..98e0068 --- /dev/null +++ b/Equalizer.h @@ -0,0 +1,55 @@ +#ifndef __EQUALIZER_H__ +#define __EQUALIZER_H__ + +class Skin; +class Button; +class MainWindow; +class TitleBar; +class ToggleButton; + +#include + +#include +#include +#include +#include +#include + +#include "Display.h" + +class EqualizerWidget : public QWidget +{ + Q_OBJECT + public: + EqualizerWidget(QWidget *parent); + ~EqualizerWidget(); + void mouseMoveEvent(QMouseEvent *); + void paintEvent (QPaintEvent *event); + + public slots: + void setPixmaps(Skin *skin); + private: + QPixmap m_pixmap; + QPixmap m_graph; + ToggleButton *m_enable; + ToggleButton *m_auto; + Button *m_preset; +}; + +class EqualizerWindow : public QMainWindow +{ + Q_OBJECT + public: + EqualizerWindow(QWidget *parent); + ~EqualizerWindow(); + + public slots: + void setEnabled (void); + + private: + MainWindow *m_mw; + EqualizerWidget *m_equalizer; +}; + + +#endif diff --git a/MainDisplay.cpp b/MainDisplay.cpp index c96fefa..9001b2c 100644 --- a/MainDisplay.cpp +++ b/MainDisplay.cpp @@ -189,6 +189,10 @@ MainDisplay::SetupToggleButtons (void) 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); + if (!s.value ("equalizer/hidden").toBool ()) + m_pls->toggleOn (); + + connect (m_eq, SIGNAL(clicked()), this, SLOT(toggleEQ())); m_shuffle = new ToggleButton (this, Skin::SHUFFLE_ON_0, Skin::SHUFFLE_ON_1, Skin::SHUFFLE_OFF_0, Skin::SHUFFLE_OFF_1); @@ -204,6 +208,13 @@ MainDisplay::togglePL (void) { m_mw->togglePL(false); } + +void +MainDisplay::toggleEQ (void) +{ + m_mw->toggleEQ(false); +} + void MainDisplay::toggleTime (void) { diff --git a/MainDisplay.h b/MainDisplay.h index a821bd4..03f77f8 100644 --- a/MainDisplay.h +++ b/MainDisplay.h @@ -49,6 +49,7 @@ class MainDisplay : public SkinDisplay MainDisplay (QWidget *parent); ~MainDisplay (); ToggleButton *GetPls() {return m_pls;}; + ToggleButton *GetEq() {return m_eq;}; TextScroller *m_text; TimeDisplay *m_time; @@ -71,6 +72,7 @@ class MainDisplay : public SkinDisplay void setPlaytime (uint time); void setMediainfo (const Xmms::PropDict &); void togglePL(void); + void toggleEQ(void); void toggleTime(void); protected: diff --git a/MainWindow.cpp b/MainWindow.cpp index c1e8f47..0f7351f 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -7,6 +7,7 @@ #include "Playlist.h" #include "MainDisplay.h" #include "ShadedDisplay.h" +#include "Equalizer.h" #include #include @@ -111,6 +112,25 @@ MainWindow::togglePL (bool UpdateButton) } +void +MainWindow::toggleEQ (bool UpdateButton) +{ + QSettings s; + + if(UpdateButton) + { + getMD()->GetEq()->toggleOn(); + } + + if (s.value ("equalizer/hidden").toBool ()) { + m_equalizer->show (); + s.setValue ("equalizer/hidden", false); + } else { + m_equalizer->hide (); + s.setValue ("equalizer/hidden", true); + } +} + int main (int argc, char **argv) { @@ -132,6 +152,7 @@ main (int argc, char **argv) MainWindow *mw = new MainWindow (NULL); PlaylistWindow *playlistwin = new PlaylistWindow (mw); + EqualizerWindow *eqwin = new EqualizerWindow (mw); /* * Now that everything is initialized @@ -147,6 +168,7 @@ main (int argc, char **argv) mw->show (); mw->setPL (playlistwin); + mw->setEQ (eqwin); if (!settings.contains ("playlist/pos")) settings.setValue ("playlist/pos", QPoint (mw->pos().x(), @@ -162,6 +184,12 @@ main (int argc, char **argv) else playlistwin->show (); + if (settings.value("equalizer/hidden").toBool ()) + eqwin->hide (); + else + eqwin->show (); + + #ifdef HAVE_SERVERBROWSER ServerBrowserWindow *browser = new ServerBrowserWindow (mw); browser->show (); diff --git a/MainWindow.h b/MainWindow.h index 5925b24..74fd150 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -28,6 +28,7 @@ class Skin; class MainDisplay; class ShadedDisplay; class PlaylistWindow; +class EqualizerWindow; class MainWindow : public QMainWindow { @@ -41,9 +42,13 @@ class MainWindow : public QMainWindow PlaylistWindow *getPL () { return m_playlistwin; } void setPL (PlaylistWindow *p) { m_playlistwin = p; } + void setEQ (EqualizerWindow *e) { m_equalizer = e; } + void raisePL (void); void moveEvent (QMoveEvent *event); + void togglePL (bool UpdateButton); + void toggleEQ (bool UpdateButton); bool isTimemodeReverse(void) { QSettings s; return s.value("MainWindow/timemodereverse").toBool(); } void setTimemodeReverse(bool b) { QSettings s; return s.setValue("MainWindow/timemodereverse",b); } @@ -56,6 +61,7 @@ class MainWindow : public QMainWindow MainDisplay *m_display; ShadedDisplay *m_shaded; PlaylistWindow *m_playlistwin; + EqualizerWindow *m_equalizer; }; diff --git a/Skin.cpp b/Skin.cpp index 48dbbcb..59dc7c5 100644 --- a/Skin.cpp +++ b/Skin.cpp @@ -11,6 +11,33 @@ Skin *Skin::getInstance (void) return singleton; } +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_ON_0] = img->copy (10, 119, 25, 12); + m_items[EQ_WIN_ON_1] = img->copy (128, 119, 25, 12); + m_items[EQ_WIN_OFF_1] = img->copy (187, 119, 25, 12); + m_items[EQ_WIN_OFF_0] = img->copy (69, 119, 25, 12); + + m_items[EQ_WIN_AUTO_ON_0] = img->copy (35, 119, 33, 12); + m_items[EQ_WIN_AUTO_ON_1] = img->copy (153, 119, 33, 12); + m_items[EQ_WIN_AUTO_OFF_1] = img->copy (212, 119, 33, 12); + m_items[EQ_WIN_AUTO_OFF_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); + + delete img; + } else { + setSkin(":CleanAMP/"); + } +} + void Skin::BuildPlaylist (void) { @@ -144,6 +171,7 @@ Skin::setSkin (const QString& name) BuildToggleButtons(); BuildTitleBar(); BuildOther(); + BuildEqualizer (); m_letterMap.clear(); BuildLetterMap(); diff --git a/Skin.h b/Skin.h index 98b6ad3..d32aea5 100644 --- a/Skin.h +++ b/Skin.h @@ -160,7 +160,20 @@ class Skin : public QWidget CLUTTER_I, 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, }; + enum PlaylistParts { PLS_CORNER_UL_0, PLS_CORNER_UL_1, @@ -253,7 +266,6 @@ class Skin : public QWidget PLS_LST_OPN_0, PLS_LST_OPN_1 }; - private: Skin() {}; static Skin *singleton; @@ -268,6 +280,7 @@ class Skin : public QWidget void BuildNumbers (void); void BuildPlaylist (void); void ParsePLEdit (void); + void BuildEqualizer (void); QString m_skinname; @@ -279,6 +292,7 @@ class Skin : public QWidget QMap m_balance; QMap m_numbers; QMap m_playlist; + QMap m_equalizer; QMap m_pledit_txt; QList m_buttons; diff --git a/SkinChooser.cpp b/SkinChooser.cpp index 15a246c..c14187b 100644 --- a/SkinChooser.cpp +++ b/SkinChooser.cpp @@ -40,7 +40,7 @@ SkinList::SkinList (QWidget *parent) : QListWidget (parent) QString path; path.append (QDir::homePath()); - path.append ("/.xmms2/clients/promoe/skins/"); + path.append ("/.config/xmms2/clients/promoe/skins/"); QDir d; new SkinChooserItem (QIcon (":CleanAMP/main.png"), "CleanAMP (default)", ":CleanAMP/", this); diff --git a/promoe.pro b/promoe.pro index 86b695f..2d85d2d 100644 --- a/promoe.pro +++ b/promoe.pro @@ -24,6 +24,7 @@ SOURCES += XmmsQT4.cpp \ PlaylistMenu.cpp \ VolumeSlider.cpp \ ClutterBar.cpp \ + Equalizer.cpp \ HEADERS += XmmsQT4.h \ @@ -52,6 +53,7 @@ HEADERS += XmmsQT4.h \ PlaylistMenu.h \ VolumeSlider.h \ ClutterBar.h \ + Equalizer.h \