00001 #ifndef __CONTROLPANEL__ 00002 #define __CONTROLPANEL__ 00003 00004 #include <qpushbutton.h> 00005 #include <qwidget.h> 00006 #include <qlayout.h> 00007 #include <qlcdnumber.h> 00008 #include <qtimer.h> 00009 #include <qlabel.h> 00010 #include <qslider.h> 00011 #include <qframe.h> 00012 #include <qdir.h> 00013 #include <qpopupmenu.h> 00014 #include <vector> 00015 00016 #include "mpdcom.h" 00017 #include "playlistwindow.h" 00018 #include "configdialog.h" 00019 #include "waskin.h" 00020 #include "gbutton.h" 00021 #include "gtextview.h" 00022 #include "gslider.h" 00023 00029 class ControlPanel : public QWidget 00030 { 00031 Q_OBJECT 00032 private: 00033 class Display : public QLCDNumber 00034 { 00035 public: 00036 inline Display(QWidget *parent) : QLCDNumber(parent), reverseCounter(false) { } 00037 00038 protected: 00039 virtual void mousePressEvent(QMouseEvent *); 00040 00041 public: 00042 bool reverseCounter; 00043 }; 00044 00045 public: 00046 ControlPanel( QWidget *parent=0, const char *name=0, WFlags f=0 ); 00047 00048 void setSkin(WASkin *); 00049 void playListClosed(void); 00050 00051 protected slots: 00052 void slotUpdateDisplay(void); 00053 void slotReceiveUpdate(const MpdCom::Status &); 00054 void slotLockVolume(void); 00055 void slotReverseVolume(int); 00056 void slotReleaseVolume(void); 00057 void slotLockBalance(void); 00058 void slotReverseBalance(int); 00059 void slotReleaseBalance(void); 00060 void slotLockSeek(void); 00061 void slotSetSeek(int); 00062 void slotReleaseSeek(void); 00063 void slotShowPlaylist(bool); 00064 void slotShowSettings(void); 00065 void slotError(const QString &); 00066 void slotAbout(void); 00067 void slotOpenSkin(void); 00068 void slotRebuildSkinMenu(void); 00069 void slotEjectPressed(bool); 00070 00071 protected: 00072 virtual void closeEvent(QCloseEvent *); 00073 virtual void paintEvent(QPaintEvent *); 00074 virtual void mouseMoveEvent(QMouseEvent *); 00075 virtual void mousePressEvent(QMouseEvent *); 00076 virtual void mouseReleaseEvent(QMouseEvent *); 00077 virtual void keyPressEvent(QKeyEvent *); 00078 00079 private: 00080 WASkin defaultSkin; 00081 GButton btPrev, btPlay, btPause, btStop, btNext, btEject; 00082 GButton btEq, btPl, btShuffle, btRepeat; 00083 GTextView txTitle, txKbps, txKHz; 00084 GSlider slVolume, slBalance; 00085 GSlider slPosition; 00086 GButton btMin, btMax, btClose; 00087 00088 QTimer timer, dirTimer; 00089 QDir dir; 00090 QPopupMenu mainMenu; 00091 QPopupMenu skinMenu; 00092 std::vector<WASkin *> skins; 00093 bool countMode; 00094 bool volumeEdit; 00095 bool balanceEdit; 00096 bool seekEdit; 00097 bool mouseDown; 00098 int actualX, actualY, lastX, lastY, lastGlobalX, lastGlobalY; 00099 int elapsed; 00100 MpdCom::Status status; 00101 MpdCom mpdCom; 00102 MpdCom playlistMpdCom; 00103 PlaylistWindow plw; 00104 ConfigDialog configDialog; 00105 WASkin * skin; 00106 }; 00107 00108 #endif