9c6f1903d215f6bb7b7d9b1c651b657e498cf458
[staging/HomeScreen.git] / HomeScreen / src / settingswidget.cpp
1 /*
2  * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "settingswidget.h"
18 #include "ui_settingswidget.h"
19 #include <QSettings>
20 #include "../interfaces/daynightmode.h"
21
22 SettingsWidget::SettingsWidget(QWidget *parent) :
23     QWidget(parent),
24     mp_ui(new Ui::SettingsWidget),
25     mp_translator(0)
26 {
27     // no window decoration
28     setWindowFlags(Qt::FramelessWindowHint);
29
30     // multi-language support
31     mp_translator = new QTranslator();
32     mp_translator->load("homescreen_en_US.qm", ":/translations"); // TODO: read from system
33     QApplication::instance()->installTranslator(mp_translator);
34
35     mp_ui->setupUi(this);
36
37     mp_ui->comboBoxLanguage->addItem(QString("English"), QVariant("homescreen_en_US.qm")); // TODO: make this configurable
38     mp_ui->comboBoxLanguage->addItem(QString("Deutsch"), QVariant("homescreen_de_DE.qm"));
39     mp_ui->comboBoxLanguage->addItem(QString("日本語"), QVariant("homescreen_ja_JP.qm"));
40
41     mp_ui->comboBoxColorScheme->addItem(QString("Default"), QVariant("default")); // TODO: make this configurable
42     mp_ui->comboBoxColorScheme->addItem(QString("Demo 1"), QVariant("demo1"));
43     mp_ui->comboBoxColorScheme->addItem(QString("Demo 2"), QVariant("demo2"));
44
45     QSettings settings;
46     mp_ui->comboBoxLanguage->setCurrentIndex(settings.value("systemsettings/language", 0).toInt());
47     mp_ui->comboBoxColorScheme->setCurrentIndex(settings.value("systemsettings/colorschemeindex", 0).toInt());
48 }
49
50 SettingsWidget::~SettingsWidget()
51 {
52     delete mp_translator;
53     delete mp_ui;
54 }
55
56 void SettingsWidget::updateColorScheme()
57 {
58     QSettings settings;
59     QSettings settings_cs(QApplication::applicationDirPath() +
60                           "/colorschemes/" +
61                           settings.value("systemsettings/colorscheme", "default").toString() +
62                           "/" +
63                           QString::number(settings.value("systemsettings/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) +
64                           ".ini",
65                           QSettings::IniFormat);
66
67     mp_ui->widget_Background->setStyleSheet(settings_cs.value("SettingsWidget/widget_Background").toString());
68     mp_ui->comboBoxLanguage->setStyleSheet(settings_cs.value("SettingsWidget/comboBoxLanguage").toString());
69     mp_ui->comboBoxColorScheme->setStyleSheet(settings_cs.value("SettingsWidget/comboBoxColorScheme").toString());
70     mp_ui->widget_Settings_Icon->setStyleSheet(settings_cs.value("SettingsWidget/widget_Settings_Icon").toString());
71 }
72
73 void SettingsWidget::changeEvent(QEvent* event)
74 {
75     if (QEvent::LanguageChange == event->type())
76     {
77         mp_ui->retranslateUi(this);
78     }
79
80     QWidget::changeEvent(event);
81 }
82
83 void SettingsWidget::on_comboBoxLanguage_currentIndexChanged(const QString &)
84 {
85     if (0 != mp_translator)
86         mp_translator->load(mp_ui->comboBoxLanguage->currentData().toString(), ":/translations");
87
88     QSettings settings;
89     settings.setValue("systemsettings/language", mp_ui->comboBoxLanguage->currentIndex());
90 }
91
92 void SettingsWidget::on_comboBoxColorScheme_currentIndexChanged(const QString &)
93 {
94     QSettings settings;
95     settings.setValue("systemsettings/colorscheme", mp_ui->comboBoxColorScheme->currentData().toString());
96     settings.setValue("systemsettings/colorschemeindex", mp_ui->comboBoxColorScheme->currentIndex());
97     // make sure that everything is written to the settings file before continuing
98     settings.sync();
99
100     emit colorSchemeChanged();
101 }