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