1 /* GUI_PlayerPreferences.cpp */
2 
3 /* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4  *
5  * This file is part of sayonara player
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11 
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16 
17  * You should have received a copy of the GNU General Public License
18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #include "GUI_PlayerPreferences.h"
22 #include "Gui/Preferences/ui_GUI_PlayerPreferences.h"
23 #include "Utils/Settings/Settings.h"
24 #include "Utils/Language/Language.h"
25 
26 
GUI_PlayerPreferences(const QString & identifier)27 GUI_PlayerPreferences::GUI_PlayerPreferences(const QString& identifier) :
28 	Base(identifier) {}
29 
~GUI_PlayerPreferences()30 GUI_PlayerPreferences::~GUI_PlayerPreferences()
31 {
32 	if(ui)
33 	{
34 		delete ui; ui=nullptr;
35 	}
36 }
37 
initUi()38 void GUI_PlayerPreferences::initUi()
39 {
40 	setupParent(this, &ui);
41 
42 	ui->widgetWarning->setVisible(false);
43 
44 	ui->cbLogger->addItem(Lang::get(Lang::Default));
45 	ui->cbLogger->addItem("Debug");
46 	ui->cbLogger->addItem("Develop");
47 	ui->cbLogger->addItem("Crazy");
48 
49 	revert();
50 
51 	connect(ui->cbShowTrayIcon, &QCheckBox::toggled, this, &GUI_PlayerPreferences::showTrayIconToggled);
52 	connect(ui->cbStartInTray, &QCheckBox::toggled, this, &GUI_PlayerPreferences::showTrayIconToggled);
53 	connect(ui->cbCloseToTray, &QCheckBox::toggled, this, &GUI_PlayerPreferences::showTrayIconToggled);
54 
55 	ListenSetting(Set::Logger_Level, GUI_PlayerPreferences::logLevelChanged);
56 }
57 
actionName() const58 QString GUI_PlayerPreferences::actionName() const
59 {
60 	return Lang::get(Lang::Application);
61 }
62 
commit()63 bool GUI_PlayerPreferences::commit()
64 {
65 	SetSetting(Set::Player_Min2Tray, ui->cbCloseToTray->isChecked());
66 	SetSetting(Set::Player_StartInTray, ui->cbStartInTray->isChecked());
67 	SetSetting(Set::Player_ShowTrayIcon, ui->cbShowTrayIcon->isChecked());
68 	SetSetting(Set::Player_NotifyNewVersion, ui->cbUpdateNotifications->isChecked());
69 	SetSetting(Set::Logger_Level, ui->cbLogger->currentIndex());
70 
71 	return true;
72 }
73 
revert()74 void GUI_PlayerPreferences::revert()
75 {
76 	bool showTrayIcon = GetSetting(Set::Player_ShowTrayIcon);
77 
78 	ui->cbStartInTray->setChecked(GetSetting(Set::Player_StartInTray));
79 	ui->cbCloseToTray->setChecked(GetSetting(Set::Player_Min2Tray));
80 	ui->cbUpdateNotifications->setChecked(GetSetting(Set::Player_NotifyNewVersion));
81 	ui->cbShowTrayIcon->setChecked(GetSetting(Set::Player_ShowTrayIcon));
82 	ui->cbLogger->setCurrentIndex(GetSetting(Set::Logger_Level));
83 
84 	showTrayIconToggled(showTrayIcon);
85 }
86 
showTrayIconToggled(bool b)87 void GUI_PlayerPreferences::showTrayIconToggled(bool b)
88 {
89 	Q_UNUSED(b)
90 
91 	bool showWarning =
92 	(
93 		(!ui->cbShowTrayIcon->isChecked()) &&
94 		(ui->cbStartInTray->isChecked() || ui->cbCloseToTray->isChecked())
95 	);
96 
97 	ui->widgetWarning->setVisible(showWarning);
98 }
99 
retranslate()100 void GUI_PlayerPreferences::retranslate()
101 {
102 	ui->retranslateUi(this);
103 
104 	ui->labLogger->setText(Lang::get(Lang::LogLevel));
105 	ui->cbLogger->setItemText(0, Lang::get(Lang::Default));
106 
107 	QString text =
108 		tr("This might cause Sayonara not to show up again.") + " " +
109 		tr("In this case use the '--show' option at the next startup.");
110 
111 	ui->labWarningHeader->setText(Lang::get(Lang::Warning));
112 	ui->labWarning->setText(text);
113 }
114 
logLevelChanged()115 void GUI_PlayerPreferences::logLevelChanged()
116 {
117 	if(ui)
118 	{
119 		int level = GetSetting(Set::Logger_Level);
120 		if(level != ui->cbLogger->currentIndex()){
121 			ui->cbLogger->setCurrentIndex(level);
122 		}
123 	}
124 }
125