1 #ifndef TRAYICON_H 2 #define TRAYICON_H 3 4 #include "track.h" 5 #include "config/global.h" 6 7 #include <QObject> 8 #include <QIcon> 9 #include <QSystemTrayIcon> 10 #include <QMainWindow> 11 #include <QMenu> 12 13 class TrayIcon : public QObject { 14 Q_OBJECT 15 public: 16 explicit TrayIcon(QMainWindow *parent, Config::Global &global_c); 17 18 signals: 19 void startTriggered(); 20 void stopTriggered(); 21 void nextTriggered(); 22 void prevTriggered(); 23 void pauseTriggered(); 24 25 void clicked(); 26 27 public slots: 28 void hide(); 29 void on_playerStarted(const Track &track); 30 void on_playerStopped(); 31 void on_playerPaused(const Track &track); 32 void on_playerProgress(const Track &track, int current_seconds); 33 34 private: 35 QSystemTrayIcon *trayicon; 36 QMenu *menu; 37 38 Config::Global &global_conf; 39 40 QAction *quit; 41 QAction *play; 42 QAction *pause; 43 QAction *stop; 44 QAction *next; 45 QAction *prev; 46 QAction *now_playing; 47 QString time_text(const Track &track, int pos) const; 48 void update_menu_now_playing(const Track &track, int pos); 49 }; 50 51 #endif // TRAYICON_H 52