1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 
4 #include "directory_ui/directorycontroller.h"
5 #include "playlists_ui/playlistscontroller.h"
6 #include "playlist_ui/playlistcontroller.h"
7 #include "playback/playbackcontroller.h"
8 #include "config/local.h"
9 #include "config/global.h"
10 #include "playback/dispatch.h"
11 #include "busyspinner.h"
12 #include "trayicon.h"
13 #include "volumecontrol.h"
14 #include "mainmenu.h"
15 #include "statusbarlabel.h"
16 #include "shortcuts.h"
17 #include "playback_log_ui/playbackloguicontroller.h"
18 #include "sort_ui/sortmenu.h"
19 #include "ipc/instance.h"
20 #include "sleeplock.h"
21 
22 #include <QMainWindow>
23 #include <QtGlobal>
24 
25 #if defined(MPRIS_ENABLE)
26   #include "dbus/mpris.h"
27 #endif
28 
29 QT_BEGIN_NAMESPACE
30 namespace Ui { class MainWindow; }
31 QT_END_NAMESPACE
32 
33 class MainWindow : public QMainWindow {
34   Q_OBJECT
35 
36 public:
37   MainWindow(const QStringList &args, IPC::Instance *instance, Config::Local &local_c, Config::Global &global_c, QWidget *parent = nullptr);
38   ~MainWindow() override;
39 
40 public slots:
41   void toggleHidden();
42 
43 private:
44   Ui::MainWindow *ui;
45   DirectoryUi::Controller *library;
46   PlaylistsUi::Controller *playlists;
47   PlaylistUi::Controller *playlist;
48   Playback::Controller *player;
49   Playback::Dispatch *dispatch;
50   Config::Local &local_conf;
51   Config::Global &global_conf;
52   BusySpinner *spinner;
53   TrayIcon *trayicon;
54   VolumeControl *volume;
55   MainMenu *main_menu;
56   StatusBarLabel *status_label;
57   QLabel *status_label_right;
58 #if defined(MPRIS_ENABLE)
59   Mpris *mpris;
60 #endif
61   Shortcuts *shortcuts;
62   PlaybackLogUi::Controller *playback_log;
63   SortUi::SortMenu *sort_menu;
64   SleepLock *sleep_lock;
65 
66   int streamBuffer();
67   void setupUiSettings();
68   void setupOrderCombobox();
69   void setupPerPlaylistOrderCombobox();
70   void setupFollowCursorCheckbox();
71   void setupVolumeControl();
72   void setupTrayIcon();
73   void setupPlaybackDispatch();
74   void setupStatusBar();
75 #if defined(MPRIS_ENABLE)
76   void setupMpris();
77 #endif
78   void setupShortcuts();
79   void setupMainMenu();
80   void setupWindowTitle();
81   void setupPlaybackLog();
82   void setupSortMenu();
83   void setupSleepLock();
84 
85   void preloadPlaylist(const QStringList &args);
86 
87 protected:
88   void closeEvent(QCloseEvent *event) override;
89   void changeEvent(QEvent *) override;
90 };
91 #endif // MAINWINDOW_H
92