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"));
 }