File indexing completed on 2024-05-26 05:27:12
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "pimdataexporterconfiguredialog.h" 0008 #include "gui/widgets/pimdataexporterconfigurewidget.h" 0009 #include <KConfigGroup> 0010 #include <KLocalizedString> 0011 #include <KSharedConfig> 0012 #include <QDialogButtonBox> 0013 #include <QPushButton> 0014 #include <QVBoxLayout> 0015 0016 #ifdef WITH_KUSERFEEDBACK 0017 #include "userfeedback/userfeedbackmanager.h" 0018 #include <KUserFeedback/FeedbackConfigWidget> 0019 #include <KUserFeedback/Provider> 0020 #endif 0021 0022 #include <KWindowConfig> 0023 #include <QWindow> 0024 0025 namespace 0026 { 0027 static const char myPimDataExporterConfigureDialogGroupName[] = "PimDataExporterConfigureDialog"; 0028 } 0029 PimDataExporterConfigureDialog::PimDataExporterConfigureDialog(QWidget *parent) 0030 : KPageDialog(parent) 0031 , mConfigureWidget(new PimDataExporterConfigureWidget(this)) 0032 { 0033 setFaceType(KPageDialog::List); 0034 setWindowTitle(i18nc("@title:window", "Configure PimDataExporter")); 0035 0036 // General page 0037 auto generalConfigureWiget = new QWidget(this); 0038 auto layout = new QVBoxLayout(generalConfigureWiget); 0039 mConfigureWidget->setObjectName(QLatin1StringView("configurewidget")); 0040 0041 layout->addWidget(mConfigureWidget); 0042 0043 auto generalPageWidgetPage = new KPageWidgetItem(mConfigureWidget, i18n("General")); 0044 generalPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("network-workgroup"))); 0045 addPage(generalPageWidgetPage); 0046 0047 #ifdef WITH_KUSERFEEDBACK 0048 auto userFeedBackWidget = new QWidget; 0049 userFeedBackWidget->setObjectName(QLatin1StringView("userFeedBackWidget")); 0050 0051 mUserFeedbackWidget = new KUserFeedback::FeedbackConfigWidget(this); 0052 0053 auto userFeedBackLayout = new QHBoxLayout(userFeedBackWidget); 0054 userFeedBackLayout->setContentsMargins(0, 0, 0, 0); 0055 userFeedBackLayout->addWidget(mUserFeedbackWidget); 0056 0057 mUserFeedbackWidget->setFeedbackProvider(UserFeedBackManager::self()->userFeedbackProvider()); 0058 auto userFeedBackPageWidgetPage = new KPageWidgetItem(userFeedBackWidget, i18n("User Feedback")); 0059 userFeedBackPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("preferences-other"))); 0060 addPage(userFeedBackPageWidgetPage); 0061 #endif 0062 0063 buttonBox()->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0064 0065 connect(buttonBox(), &QDialogButtonBox::accepted, this, &PimDataExporterConfigureDialog::accept); 0066 connect(buttonBox(), &QDialogButtonBox::rejected, this, &PimDataExporterConfigureDialog::reject); 0067 readConfig(); 0068 } 0069 0070 PimDataExporterConfigureDialog::~PimDataExporterConfigureDialog() 0071 { 0072 writeConfig(); 0073 } 0074 0075 void PimDataExporterConfigureDialog::slotAccepted() 0076 { 0077 mConfigureWidget->save(); 0078 #ifdef WITH_KUSERFEEDBACK 0079 // set current active mode + write back the config for future starts 0080 UserFeedBackManager::self()->userFeedbackProvider()->setTelemetryMode(mUserFeedbackWidget->telemetryMode()); 0081 UserFeedBackManager::self()->userFeedbackProvider()->setSurveyInterval(mUserFeedbackWidget->surveyInterval()); 0082 #endif 0083 accept(); 0084 } 0085 0086 void PimDataExporterConfigureDialog::readConfig() 0087 { 0088 create(); // ensure a window is created 0089 windowHandle()->resize(QSize(600, 400)); 0090 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(myPimDataExporterConfigureDialogGroupName)); 0091 KWindowConfig::restoreWindowSize(windowHandle(), group); 0092 resize(windowHandle()->size()); // workaround for QTBUG-40584 0093 } 0094 0095 void PimDataExporterConfigureDialog::writeConfig() 0096 { 0097 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(myPimDataExporterConfigureDialogGroupName)); 0098 KWindowConfig::saveWindowSize(windowHandle(), group); 0099 group.sync(); 0100 } 0101 0102 #include "moc_pimdataexporterconfiguredialog.cpp"