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