File indexing completed on 2023-05-30 10:42:09
0001 /* 0002 This file is part of Kiten, a KDE Japanese Reference Tool... 0003 SPDX-FileCopyrightText: 2001 Jason Katz-Brown <jason@katzbrown.com> 0004 SPDX-FileCopyrightText: 2005 Paul Temple <paul.temple@gmx.net> 0005 SPDX-FileCopyrightText: 2006 Joseph Kerian <jkerian@gmail.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include "configuredialog.h" 0011 0012 #include <KLocalizedString> 0013 0014 #include <QString> 0015 #include <QStringList> 0016 #include <QTabWidget> 0017 #include <QWidget> 0018 0019 #include "kitenconfig.h" 0020 0021 // Generated from UI files 0022 #include "ui_configfont.h" 0023 #include "ui_configlearn.h" 0024 #include "ui_configsearching.h" 0025 0026 // Our template for managing individual dict type's settings 0027 #include "dictionarypreferencedialog.h" 0028 // The dictionary file selector widget 0029 #include "configdictionaryselector.h" 0030 // The sorting selection widget 0031 #include "configsortingpage.h" 0032 // To get the list of dictionary Types and to interface with dictType objects 0033 #include "dictionarymanager.h" 0034 0035 ConfigureDialog::ConfigureDialog(QWidget *parent, KitenConfigSkeleton *config) 0036 : KConfigDialog(parent, QStringLiteral("Settings"), config) 0037 { 0038 // TODO: Figure out why these pages are unmanaged... is this needed? 0039 addPage(makeDictionaryFileSelectionPage(NULL, config), i18n("Dictionaries"), QStringLiteral("help-contents")); 0040 0041 QWidget *widget; 0042 widget = new QWidget(); 0043 Ui::ConfigSearching cs; 0044 cs.setupUi(widget); 0045 addPage(widget, i18n("Searching"), QStringLiteral("edit-find")); 0046 0047 widget = new QWidget(); 0048 Ui::ConfigLearn cl; 0049 cl.setupUi(widget); 0050 addPage(widget, i18n("Learn"), QStringLiteral("draw-freehand")); 0051 0052 widget = new QWidget(); 0053 Ui::ConfigFont cf; 0054 cf.setupUi(widget); 0055 addPage(widget, i18n("Font"), QStringLiteral("preferences-desktop-font")); 0056 0057 addPage(makeDictionaryPreferencesPage(NULL, config), 0058 i18nc("@title:group the settings for the dictionary display", "Display"), 0059 QStringLiteral("format-indent-more")); 0060 addPage(makeSortingPage(NULL, config), i18n("Results Sorting"), QStringLiteral("format-indent-more")); 0061 0062 setHelp(QString(), QStringLiteral("kiten")); 0063 0064 connect(this, &KConfigDialog::widgetModified, this, &ConfigureDialog::updateConfiguration); 0065 } 0066 0067 void ConfigureDialog::updateConfiguration() 0068 { 0069 Q_EMIT settingsChanged(QString()); 0070 } 0071 0072 ConfigureDialog::~ConfigureDialog() 0073 { 0074 } 0075 0076 QWidget *ConfigureDialog::makeDictionaryFileSelectionPage(QWidget *parent, KitenConfigSkeleton *config) 0077 { 0078 QTabWidget *tabWidget = new QTabWidget(parent); 0079 0080 foreach (const QString &dict, config->dictionary_list()) { 0081 QWidget *newTab = new ConfigDictionarySelector(dict, tabWidget, config); 0082 if (newTab) { 0083 connect(newTab, SIGNAL(widgetChanged()), this, SIGNAL(widgetModified())); 0084 connect(this, SIGNAL(updateWidgetsSignal()), newTab, SLOT(updateWidgets())); 0085 connect(this, SIGNAL(updateWidgetsDefaultSignal()), newTab, SLOT(updateWidgetsDefault())); 0086 connect(this, SIGNAL(updateSettingsSignal()), newTab, SLOT(updateSettings())); 0087 tabWidget->addTab(newTab, dict); 0088 } 0089 } 0090 0091 return tabWidget; 0092 } 0093 0094 QWidget *ConfigureDialog::makeDictionaryPreferencesPage(QWidget *parent, KitenConfigSkeleton *config) 0095 { 0096 QStringList dictTypes = DictionaryManager::listDictFileTypes(); 0097 0098 QTabWidget *tabWidget = new QTabWidget(parent); 0099 0100 QMap<QString, DictionaryPreferenceDialog *> dialogList = DictionaryManager::generatePreferenceDialogs(config, parent); 0101 0102 foreach (DictionaryPreferenceDialog *dialog, dialogList) { 0103 connect(this, &ConfigureDialog::updateWidgetsSignal, dialog, &DictionaryPreferenceDialog::updateWidgets); 0104 connect(this, &ConfigureDialog::updateWidgetsDefaultSignal, dialog, &DictionaryPreferenceDialog::updateWidgetsDefault); 0105 connect(this, &ConfigureDialog::updateSettingsSignal, dialog, &DictionaryPreferenceDialog::updateSettings); 0106 0107 tabWidget->addTab(dialog, dialog->name()); 0108 } 0109 0110 return tabWidget; 0111 } 0112 0113 QWidget *ConfigureDialog::makeSortingPage(QWidget *parent, KitenConfigSkeleton *config) 0114 { 0115 ConfigSortingPage *newPage = new ConfigSortingPage(parent, config); 0116 0117 connect(newPage, &ConfigSortingPage::widgetChanged, this, &KConfigDialog::widgetModified); 0118 0119 connect(this, &ConfigureDialog::updateWidgetsSignal, newPage, &ConfigSortingPage::updateWidgets); 0120 connect(this, &ConfigureDialog::updateWidgetsDefaultSignal, newPage, &ConfigSortingPage::updateWidgetsDefault); 0121 connect(this, &ConfigureDialog::updateSettingsSignal, newPage, &ConfigSortingPage::updateSettings); 0122 0123 return newPage; 0124 } 0125 0126 void ConfigureDialog::updateWidgets() 0127 { 0128 Q_EMIT updateWidgetsSignal(); 0129 } 0130 0131 void ConfigureDialog::updateWidgetsDefault() 0132 { 0133 Q_EMIT updateWidgetsDefaultSignal(); 0134 } 0135 0136 void ConfigureDialog::updateSettings() 0137 { 0138 Q_EMIT updateSettingsSignal(); 0139 } 0140 0141 bool ConfigureDialog::isDefault() 0142 { 0143 return false; 0144 // Always show the defaults button.... perhaps make a workaround later 0145 }