File indexing completed on 2024-04-21 03:41: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"