#pragma once #include "backend/qobuzbackend.hpp" #include "view/maintoolbar.hpp" #include "view/maincontent.hpp" #include "view/sidepanel/view.hpp" #include "list/library.hpp" #include #include #include class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QobuzBackend *backend, QWidget *parent = nullptr); static QSize defaultSize() { return {1100, 700}; } private slots: void onLoginSuccess(const QString &token, const QJsonObject &user); void onLoginError(const QString &error); void onFavTracksLoaded(const QJsonObject &result); void onFavAlbumsLoaded(const QJsonObject &result); void onAlbumLoaded(const QJsonObject &album); void onArtistLoaded(const QJsonObject &artist); void onPlaylistLoaded(const QJsonObject &playlist); void onPlayTrackRequested(qint64 trackId); void onSearchAlbumSelected(const QString &albumId); void onSearchArtistSelected(qint64 artistId); void onSearchToggled(bool visible); void showLoginDialog(); void showSettingsDialog(); private: QobuzBackend *m_backend = nullptr; MainToolBar *m_toolBar = nullptr; MainContent *m_content = nullptr; List::Library *m_library = nullptr; SidePanel::View *m_sidePanel = nullptr; QDockWidget *m_libraryDock = nullptr; void setupMenuBar(); void tryRestoreSession(); };