Mercurial > minori
diff src/dialog/settings/application.cpp @ 7:07a9095eaeed
Update
Refactored some code, moved some around
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Thu, 24 Aug 2023 23:11:38 -0400 |
parents | 1d82f6e04d7d |
children |
line wrap: on
line diff
--- a/src/dialog/settings/application.cpp Wed Aug 16 00:49:17 2023 -0400 +++ b/src/dialog/settings/application.cpp Thu Aug 24 23:11:38 2023 -0400 @@ -1,13 +1,13 @@ #include "settings.h" #include "anilist.h" -#include "window.h" +#include "session.h" #include <QGroupBox> #include <QComboBox> #include <QCheckBox> #include <QPushButton> #include <QSizePolicy> -QWidget* SettingsPageApplication::CreateAnimeListPage() { +QWidget* SettingsPageApplication::CreateAnimeListWidget() { QWidget* result = new QWidget(this); result->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); @@ -23,6 +23,7 @@ QVBoxLayout* double_click_layout = new QVBoxLayout; double_click_layout->addWidget(dc_combo_box_label); double_click_layout->addWidget(dc_combo_box); + double_click_layout->setMargin(0); double_click_widget->setLayout(double_click_layout); /* Actions/Middle click */ @@ -34,6 +35,7 @@ QVBoxLayout* middle_click_layout = new QVBoxLayout; middle_click_layout->addWidget(mc_combo_box_label); middle_click_layout->addWidget(mc_combo_box); + middle_click_layout->setMargin(0); middle_click_widget->setLayout(middle_click_layout); /* Actions */ @@ -47,15 +49,27 @@ QLabel* lang_combo_box_label = new QLabel(tr("Title language preference:"), appearance_group_box); QComboBox* lang_combo_box = new QComboBox(appearance_group_box); + lang_combo_box->addItem(tr("Romaji")); + lang_combo_box->addItem(tr("Native")); lang_combo_box->addItem(tr("English")); + connect(lang_combo_box, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this](int index){ + language = static_cast<enum AnimeTitleLanguage>(index); + }); + lang_combo_box->setCurrentIndex(language); + QCheckBox* hl_anime_box = new QCheckBox(tr("Highlight anime if next episode is available in library folders"), appearance_group_box); QCheckBox* hl_above_anime_box = new QCheckBox(tr("Display highlighted anime above others"), appearance_group_box); - hl_above_anime_box->setEnabled((hl_anime_box->checkState() == Qt::Unchecked) ? 0 : 1); - hl_above_anime_box->setStyleSheet("margin-left: 10px;"); - - connect(hl_anime_box, &QCheckBox::stateChanged, this, [hl_above_anime_box](int state){ + connect(hl_anime_box, &QCheckBox::stateChanged, this, [this, hl_above_anime_box](int state){ + highlight_anime_if_available = (state == Qt::Unchecked) ? false : true; hl_above_anime_box->setEnabled(state); }); + connect(hl_above_anime_box, &QCheckBox::stateChanged, this, [this](int state){ + highlight_anime_if_available = (state == Qt::Unchecked) ? false : true; + }); + hl_anime_box->setCheckState(highlight_anime_if_available ? Qt::Checked : Qt::Unchecked); + hl_above_anime_box->setCheckState(highlighted_anime_above_others ? Qt::Checked : Qt::Unchecked); + hl_above_anime_box->setEnabled(hl_anime_box->checkState() != Qt::Unchecked); + hl_above_anime_box->setStyleSheet("margin-left: 10px;"); /* Appearance */ QVBoxLayout* appearance_layout = new QVBoxLayout; @@ -68,12 +82,21 @@ QGroupBox* progress_group_box = new QGroupBox(tr("Progress"), result); progress_group_box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); - QCheckBox* display_aired_episodes = new QCheckBox(tr("Display aired episodes (estimated)"), progress_group_box); - QCheckBox* display_available_episodes = new QCheckBox(tr("Display available episodes in library folders"), progress_group_box); + QCheckBox* progress_display_aired_episodes = new QCheckBox(tr("Display aired episodes (estimated)"), progress_group_box); + connect(progress_display_aired_episodes, &QCheckBox::stateChanged, this, [this](int state){ + display_aired_episodes = (state == Qt::Unchecked) ? false : true; + }); + progress_display_aired_episodes->setCheckState(display_aired_episodes ? Qt::Checked : Qt::Unchecked); + + QCheckBox* progress_display_available_episodes = new QCheckBox(tr("Display available episodes in library folders"), progress_group_box); + connect(progress_display_available_episodes, &QCheckBox::stateChanged, this, [this](int state){ + display_available_episodes = (state == Qt::Unchecked) ? false : true; + }); + progress_display_available_episodes->setCheckState(display_available_episodes ? Qt::Checked : Qt::Unchecked); QVBoxLayout* progress_layout = new QVBoxLayout; - progress_layout->addWidget(display_aired_episodes); - progress_layout->addWidget(display_available_episodes); + progress_layout->addWidget(progress_display_aired_episodes); + progress_layout->addWidget(progress_display_available_episodes); progress_group_box->setLayout(progress_layout); QVBoxLayout* full_layout = new QVBoxLayout; @@ -86,10 +109,19 @@ } void SettingsPageApplication::SaveInfo() { - + session.config.anime_list.language = language; + session.config.anime_list.highlighted_anime_above_others = highlighted_anime_above_others; + session.config.anime_list.highlight_anime_if_available = highlight_anime_if_available; + session.config.anime_list.display_aired_episodes = display_aired_episodes; + session.config.anime_list.display_available_episodes = display_available_episodes; } SettingsPageApplication::SettingsPageApplication(QWidget* parent) : SettingsPage(parent, tr("Application")) { - AddTab(CreateAnimeListPage(), tr("Anime list")); + language = session.config.anime_list.language; + highlighted_anime_above_others = session.config.anime_list.highlighted_anime_above_others; + highlight_anime_if_available = session.config.anime_list.highlight_anime_if_available; + display_aired_episodes = session.config.anime_list.display_aired_episodes; + display_available_episodes = session.config.anime_list.display_available_episodes; + AddTab(CreateAnimeListWidget(), tr("Anime list")); }