File indexing completed on 2024-06-09 04:52:51
0001 /* 0002 SPDX-FileCopyrightText: 2015 Martin Steghöfer <martin@steghoefer.eu> 0003 SPDX-FileCopyrightText: 2015-2022 Mladen Milinkovic <max@smoothware.net> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "config.h" 0009 0010 #include "application.h" 0011 #include "appglobal.h" 0012 #include "configs/configdialog.h" 0013 #include "configs/generalconfigwidget.h" 0014 #include "configs/errorsconfigwidget.h" 0015 #include "configs/waveformconfigwidget.h" 0016 #include "configs/playerconfigwidget.h" 0017 #include "videoplayer/videoplayer.h" 0018 #include "speechprocessor/speechprocessor.h" 0019 #include "speechprocessor/speechplugin.h" 0020 0021 #include <KConfigDialog> 0022 #include <KLocalizedString> 0023 0024 #include <sonnet/configwidget.h> 0025 0026 using namespace SubtitleComposer; 0027 0028 ConfigDialog::ConfigDialog(QWidget *parent, const QString &name, KCoreConfigSkeleton *config) : 0029 KConfigDialog(parent, name, config), 0030 m_hasWidgetChanged(false) 0031 { 0032 KPageWidgetItem *item; 0033 0034 // General page 0035 item = addPage(new GeneralConfigWidget(this), i18nc("@title General settings", "General")); 0036 item->setHeader(i18n("General Settings")); 0037 item->setIcon(QIcon::fromTheme(QStringLiteral("preferences-other"))); 0038 0039 // Error Check page 0040 item = addPage(new ErrorsConfigWidget(this), i18nc("@title Error check settings", "Error Check")); 0041 item->setHeader(i18n("Error Check Settings")); 0042 item->setIcon(QIcon::fromTheme(QStringLiteral("games-endturn"))); 0043 0044 // Spelling page 0045 m_sonnetConfigWidget = new Sonnet::ConfigWidget(this); 0046 connect(m_sonnetConfigWidget, &Sonnet::ConfigWidget::configChanged, this, &ConfigDialog::widgetChanged); 0047 item = addPage(m_sonnetConfigWidget, i18nc("@title Spelling settings", "Spelling")); 0048 item->setHeader(i18n("Spelling Settings")); 0049 item->setIcon(QIcon::fromTheme(QStringLiteral("tools-check-spelling"))); 0050 0051 // Waveform page 0052 item = addPage(new WaveformConfigWidget(this), i18nc("@title Waveform settings", "Waveform")); 0053 item->setHeader(i18n("Waveform settings")); 0054 item->setIcon(QIcon::fromTheme(QStringLiteral("waveform"))); 0055 0056 // VideoPlayer page 0057 item = addPage(new PlayerConfigWidget(this), i18nc("@title Video player settings", "Video Player")); 0058 item->setHeader(i18n("Video Player Settings")); 0059 item->setIcon(QIcon::fromTheme(QStringLiteral("mediaplayer"))); 0060 0061 { // SpeechProcessor plugin pages 0062 const SpeechProcessor *speechProcessor = app()->speechProcessor(); 0063 const QMap<QString, SpeechPlugin *> plugins = speechProcessor->plugins(); 0064 for(auto it = plugins.cbegin(); it != plugins.cend(); ++it) { 0065 if(QWidget *configWidget = it.value()->newConfigWidget(nullptr)) { 0066 item = addPage(configWidget, it.value()->config(), it.key()); 0067 item->setHeader(i18nc("@title Speech recognition backend settings", "%1 backend settings", it.key())); 0068 item->setIcon(QIcon::fromTheme(it.key().toLower())); 0069 } 0070 } 0071 } 0072 0073 resize(800, 600); 0074 } 0075 0076 void 0077 ConfigDialog::widgetChanged() 0078 { 0079 m_hasWidgetChanged = true; 0080 updateButtons(); 0081 } 0082 0083 void 0084 ConfigDialog::updateSettings() 0085 { 0086 m_sonnetConfigWidget->save(); 0087 m_hasWidgetChanged = false; 0088 KConfigDialog::updateSettings(); 0089 settingsChangedSlot(); 0090 } 0091 0092 bool 0093 ConfigDialog::hasChanged() 0094 { 0095 return m_hasWidgetChanged || KConfigDialog::hasChanged(); 0096 } 0097