diff --git a/src/mainwindow/maindisplay.cpp b/src/mainwindow/maindisplay.cpp index 98db743..410d683 100644 --- a/src/mainwindow/maindisplay.cpp +++ b/src/mainwindow/maindisplay.cpp @@ -134,6 +134,8 @@ MainDisplay::setPixmaps (Skin *skin) void MainDisplay::setStatus (Xmms::Playback::Status status) { + m_playstatus->setStatus (status); + if (status == Xmms::Playback::STOPPED) { m_time->setTime(0); m_posbar->setValue (0); diff --git a/src/mainwindow/mainwindow.pri b/src/mainwindow/mainwindow.pri index badaec4..29b741b 100644 --- a/src/mainwindow/mainwindow.pri +++ b/src/mainwindow/mainwindow.pri @@ -1,12 +1,16 @@ HEADERS += clutterbar.h \ mainwindow.h \ maindisplay.h \ + playstatus.h \ + posbar.h \ shadeddisplay.h \ stereomono.h SOURCES += clutterbar.cpp \ mainwindow.cpp \ maindisplay.cpp \ + playstatus.cpp \ + posbar.cpp \ shadeddisplay.cpp \ stereomono.cpp diff --git a/src/PlayStatus.cpp b/src/mainwindow/playstatus.cpp similarity index 57% rename from src/PlayStatus.cpp rename to src/mainwindow/playstatus.cpp index f489109..0cd69a7 100644 --- a/src/PlayStatus.cpp +++ b/src/mainwindow/playstatus.cpp @@ -14,19 +14,22 @@ */ #include + +#include +#include + #include "PlayStatus.h" #include "Skin.h" -PlayStatus::PlayStatus (QWidget *parent) : PixWidget (parent) +PlayStatus::PlayStatus (QWidget *parent) : QWidget (parent) { - setMinimumSize(11, 9); - setMaximumSize(11, 9); + Skin* skin = Skin::getInstance (); + connect (skin, SIGNAL (skinChanged (Skin *)), + this, SLOT (setPixmaps (Skin *))); + + setFixedSize(11, 9); m_status = Xmms::Playback::STOPPED; - - connect (&XMMSHandler::getInstance (), - SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), - this, SLOT(setStatus(Xmms::Playback::Status))); } void @@ -36,21 +39,39 @@ PlayStatus::setPixmaps (Skin *skin) m_pixmap_pause = skin->getItem (Skin::PIC_PAUSE); m_pixmap_stop = skin->getItem (Skin::PIC_STOP); - setStatus (m_status); + update (); } void PlayStatus::setStatus (Xmms::Playback::Status status) { - using Xmms::Playback; - if (status == Playback::STOPPED) { - m_pixmap = m_pixmap_stop; - } else if (status == Playback::PLAYING) { - m_pixmap = m_pixmap_play; - } else if (status == Playback::PAUSED) { - m_pixmap = m_pixmap_pause; - } - + m_status = status; update (); } +void +PlayStatus::paintEvent (QPaintEvent *event) +{ + QPixmap pixmap; + using Xmms::Playback; + switch (m_status) { + case Playback::STOPPED: + pixmap = m_pixmap_stop; + break; + case Playback::PLAYING: + pixmap = m_pixmap_play; + break; + case Playback::PAUSED: + pixmap = m_pixmap_pause; + break; + default: + qWarning ("Unhandled playback status in PlayStatus"); + break; + } + + QPainter p; + p.begin (this); + p.drawPixmap (rect (), pixmap, pixmap.rect ()); + p.end (); +} + diff --git a/src/PlayStatus.h b/src/mainwindow/playstatus.h similarity index 88% rename from src/PlayStatus.h rename to src/mainwindow/playstatus.h index 6601d69..c847cdb 100644 --- a/src/PlayStatus.h +++ b/src/mainwindow/playstatus.h @@ -17,10 +17,11 @@ #define __PLAYSTATUS_H__ #include -#include "XMMSHandler.h" -#include "PixWidget.h" +#include -class PlayStatus : public PixWidget +class Skin; + +class PlayStatus : public QWidget { Q_OBJECT public: @@ -32,6 +33,9 @@ class PlayStatus : public PixWidget void setPixmaps (Skin *skin); void setStatus (Xmms::Playback::Status status); + protected slots: + void paintEvent (QPaintEvent *event); + private: Xmms::Playback::Status m_status; diff --git a/src/PosBar.cpp b/src/mainwindow/posbar.cpp similarity index 100% rename from src/PosBar.cpp rename to src/mainwindow/posbar.cpp diff --git a/src/PosBar.h b/src/mainwindow/posbar.h similarity index 100% rename from src/PosBar.h rename to src/mainwindow/posbar.h diff --git a/src/playlist/playlistmenu.cpp b/src/playlist/playlistmenu.cpp index 985e128..1accdad 100644 --- a/src/playlist/playlistmenu.cpp +++ b/src/playlist/playlistmenu.cpp @@ -28,8 +28,7 @@ PlaylistMenuButton::PlaylistMenuButton (PlaylistMenu *menu, m_pixid2 = pix2; menu->addButton (this); m_menu = menu; - setMinimumSize (22, 18); - setMaximumSize (22, 18); + setFixedSize (22, 18); } PlaylistMenuButton::~PlaylistMenuButton () @@ -62,8 +61,7 @@ PlaylistMenuButton::setPixmaps (Skin *skin) PlaylistMenu::PlaylistMenu (QWidget *parent, uint pix, uint decoration) : PixWidget (parent) { - setMinimumSize (25, 18); - setMaximumSize (25, 18); + setFixedSize (25, 18); m_expanded = new QWidget (parent); m_expanded->hide (); diff --git a/src/playlist/playlistwindow.cpp b/src/playlist/playlistwindow.cpp index 6c2f013..488e6ab 100644 --- a/src/playlist/playlistwindow.cpp +++ b/src/playlist/playlistwindow.cpp @@ -30,7 +30,6 @@ PlaylistWindow::PlaylistWindow (QWidget *parent) : BaseWindow (parent) { QSettings s; - m_mw = dynamic_cast(parent); #ifndef _WIN32 setWindowIcon (QIcon (":icon.png")); #endif @@ -83,7 +82,7 @@ PlaylistWindow::showEvent (QShowEvent *event) { QSettings s; s.setValue ("playlist/visible", true); - m_mw->attachWidgets (); + mw ()->attachWidgets (); emit visibilityChanged (true); } @@ -130,7 +129,7 @@ PlaylistWindow::resizeEvent (QResizeEvent *event) if (s.value("playlist/shaded").toBool ()) { s.setValue ("playlist/size", size ()); } - m_mw->attachWidgets (); + mw ()->attachWidgets (); } void diff --git a/src/playlist/playlistwindow.h b/src/playlist/playlistwindow.h index 5240d3a..e5a78fe 100644 --- a/src/playlist/playlistwindow.h +++ b/src/playlist/playlistwindow.h @@ -61,8 +61,6 @@ class PlaylistWindow : public BaseWindow { Button *m_shadebtn; Button *m_closebtn; - MainWindow *m_mw; - }; #endif // __PLAYLISTWINDOW_H__ diff --git a/src/src.pri b/src/src.pri index b7932e8..71134b4 100644 --- a/src/src.pri +++ b/src/src.pri @@ -14,8 +14,6 @@ HEADERS += PixWidget.h \ TimeDisplay.h \ XMMSHandler.h \ SmallNumberDisplay.h \ - PosBar.h \ - PlayStatus.h \ SkinChooser.h \ settingsdialog.h \ basewindow.h \ @@ -35,8 +33,6 @@ SOURCES += main.cpp \ TimeDisplay.cpp \ XMMSHandler.cpp \ SmallNumberDisplay.cpp \ - PosBar.cpp \ - PlayStatus.cpp \ SkinChooser.cpp \ settingsdialog.cpp \ basewindow.cpp \