Mercurial > minori
view include/gui/dialog/settings.h @ 187:9613d72b097e
*: multiple performance improvements
   like marking `static const` when it makes sense...
date: change old stupid heap-based method to a structure which should
      make copying the thing actually make a copy.
      also many performance-based changes, like removing the std::tie
      dependency and forward-declaring nlohmann json
*: replace every instance of QString::fromUtf8 to Strings::ToQString.
   the main difference is that our function will always convert exactly
   what is in the string, while some other times it would only convert
   up to the nearest NUL byte
| author | Paper <mrpapersonic@gmail.com> | 
|---|---|
| date | Wed, 06 Dec 2023 13:43:54 -0500 | 
| parents | 6fdf0632c003 | 
| children | 649786bae914 | 
line wrap: on
 line source
#ifndef __gui__dialog__settings_h #define __gui__dialog__settings_h #include "core/anime.h" #include "core/config.h" #include "core/session.h" #include <QDialog> #include <QWidget> #include <QLocale> class QLabel; class QTabWidget; class QStackedWidget; class SideBar; 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; }; class SettingsPageServices final : public SettingsPage { Q_OBJECT public: SettingsPageServices(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateMainPage(); QWidget* CreateAniListPage(); QString username; Anime::Services service; }; class SettingsPageApplication final : public SettingsPage { Q_OBJECT public: SettingsPageApplication(QWidget* parent = nullptr); void SaveInfo() override; private: QWidget* CreateAnimeListWidget(); Themes theme; QLocale locale; Anime::TitleLanguage language; bool display_aired_episodes; bool display_available_episodes; bool highlight_anime_if_available; bool 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 SettingsDialog final : public QDialog { Q_OBJECT public: SettingsDialog(QWidget* parent = nullptr); QWidget* CreateServicesMainPage(QWidget* parent); void OnOK(); protected: void showEvent(QShowEvent* event) override; private: SideBar* sidebar; QStackedWidget* stacked; }; #endif // __gui__dialog__settings_h
