Mercurial > minori
view include/gui/dialog/settings.h @ 367:8d45d892be88 default tip
*: instead of pugixml, use Qt XML features
this means we have one extra Qt dependency though...
author | Paper <paper@tflc.us> |
---|---|
date | Sun, 17 Nov 2024 22:55:47 -0500 |
parents | b1f4d1867ab1 |
children |
line wrap: on
line source
#ifndef MINORI_GUI_DIALOG_SETTINGS_H_ #define MINORI_GUI_DIALOG_SETTINGS_H_ #include "core/anime.h" #include "core/config.h" #include "core/session.h" #include "gui/widgets/sidebar.h" #include <QDialog> #include <QDialogButtonBox> #include <QLabel> #include <QListWidget> #include <QLocale> #include <QStackedWidget> #include <QTabWidget> #include <QVBoxLayout> #include <QWidget> class SettingsPage : public QWidget { Q_OBJECT public: SettingsPage(QWidget* parent = nullptr, QString title = ""); void SetTitle(QString title); virtual void SaveInfo() = 0; void AddTab(QWidget* tab, QString title = ""); private: QLabel page_title_; QTabWidget tab_widget_; QVBoxLayout layout_; }; class SettingsPageServices final : public SettingsPage { Q_OBJECT public: SettingsPageServices(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateMainPage(); QWidget* CreateAniListPage(); QWidget* CreateKitsuPage(); decltype(session.config.service) service; }; class SettingsPageApplication final : public SettingsPage { Q_OBJECT public: SettingsPageApplication(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateAnimeListWidget(); QWidget* CreateGeneralWidget(); Theme::Theme theme; QLocale locale; decltype(session.config.anime_list.score_format) format; decltype(session.config.anime_list.language) language; decltype(session.config.anime_list.display_aired_episodes) display_aired_episodes; decltype(session.config.anime_list.display_available_episodes) display_available_episodes; decltype(session.config.anime_list.highlight_anime_if_available) highlight_anime_if_available; decltype(session.config.anime_list.highlighted_anime_above_others) highlighted_anime_above_others; }; class SettingsPageTorrents final : public SettingsPage { Q_OBJECT public: SettingsPageTorrents(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateGeneralWidget(); decltype(session.config.torrents.feed_link) feed_link; }; class SettingsPageRecognition final : public SettingsPage { Q_OBJECT public: SettingsPageRecognition(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreatePlayersWidget(); decltype(session.config.recognition.detect_media_players) detect_media_players; decltype(session.config.recognition.players) players; }; class SettingsPageLibrary final : public SettingsPage { Q_OBJECT public: SettingsPageLibrary(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateFoldersWidget(); decltype(session.config.library.paths) paths; decltype(session.config.library.real_time_monitor) real_time_monitor; }; class SettingsDialog final : public QDialog { Q_OBJECT public: SettingsDialog(QWidget* parent = nullptr); QWidget* CreateServicesMainPage(QWidget* parent); void OnOK(); protected: void showEvent(QShowEvent* event) override; private: QVBoxLayout layout_; QWidget widget_; QHBoxLayout widget_layout_; SideBar sidebar_; QStackedWidget stacked_; SettingsPageServices services_page_; SettingsPageApplication application_page_; SettingsPageTorrents torrents_page_; SettingsPageRecognition recognition_page_; SettingsPageLibrary library_page_; QDialogButtonBox button_box_; }; #endif // MINORI_GUI_DIALOG_SETTINGS_H_