File indexing completed on 2025-01-26 03:29:46
0001 /*************************************************************************** 0002 * Copyright (C) 2005 by Joshua Keel <joshuakeel@gmail.com> * 0003 * (C) 2007-2014 by Jeremy Whiting <jpwhiting@kde.org> * 0004 * * 0005 * This program is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 0019 ***************************************************************************/ 0020 0021 #include "mainsettings.h" 0022 0023 #include <KConfig> 0024 #include <KConfigDialog> 0025 #include <KLocalizedString> 0026 #include <KMessageBox> 0027 0028 #include <QPushButton> 0029 #include <QStandardPaths> 0030 #include <QLoggingCategory> 0031 0032 #include <sharedkvtmlfiles.h> 0033 #include "kanagramsettings.h" 0034 #include "kanagramgame.h" 0035 0036 Q_DECLARE_LOGGING_CATEGORY(KANAGRAM) 0037 0038 MainSettings::MainSettings(QWidget *parent) : QWidget(parent) 0039 { 0040 setupUi( this ); 0041 0042 slotToggleAdvancedSettings(); 0043 populateLanguageBox(); 0044 connect(scoringPointCheckbox, &QCheckBox::toggled, this, &MainSettings::slotToggleAdvancedSettings); 0045 0046 //the language code/name 0047 QLocale languageLocale(KanagramSettings::dataLanguage()); 0048 0049 // select the current language 0050 languageComboBox->setCurrentIndex(languageComboBox->findText(languageLocale.nativeLanguageName())); 0051 0052 // Connect after we set the current language from settings. 0053 connect(languageComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &MainSettings::widgetModified); 0054 0055 #ifndef HAVE_SPEECH 0056 kcfg_enablePronunciation->hide(); 0057 #endif 0058 } 0059 0060 MainSettings::~MainSettings() 0061 { 0062 } 0063 0064 void MainSettings::slotToggleAdvancedSettings() 0065 { 0066 bool enable = scoringPointCheckbox->isChecked(); 0067 textCorrectAnswer->setVisible(enable); 0068 kcfg_correctAnswerScore->setVisible(enable); 0069 textIncorrectAnswer->setVisible(enable); 0070 kcfg_incorrectAnswerScore->setVisible(enable); 0071 textRevealAnswer->setVisible(enable); 0072 kcfg_revealAnswerScore->setVisible(enable); 0073 textSkippedWord->setVisible(enable); 0074 kcfg_skippedWordScore->setVisible(enable); 0075 } 0076 0077 void MainSettings::populateLanguageBox() 0078 { 0079 QStringList languages = SharedKvtmlFiles::languages(); 0080 0081 //the language code/name 0082 for (int i = 0; i < languages.count(); ++i) 0083 { 0084 QLocale languageLocale(languages[i]); 0085 0086 // get the language name 0087 QString languageName = languageLocale.nativeLanguageName(); 0088 if (languageName.isEmpty() || languageName == QLatin1Char('C')) 0089 { 0090 languageName = i18nc("@item:inlistbox no language for that locale", "None"); 0091 } 0092 languageComboBox->addItem(languageName, languages[i]); 0093 } 0094 } 0095 0096 bool MainSettings::saveLanguage() 0097 { 0098 int index = languageComboBox->currentIndex(); 0099 QString language = languageComboBox->itemData(index).toString(); 0100 qCDebug(KANAGRAM) << "Writing new default language: " << language; 0101 if (KanagramSettings::dataLanguage() != language) { 0102 KanagramSettings::setDataLanguage(language); 0103 KanagramSettings::self()->save(); 0104 return true; 0105 } 0106 return false; 0107 } 0108 0109 #include "moc_mainsettings.cpp"