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