File indexing completed on 2024-05-05 05:21:07
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "notesagentsettingsdialog.h" 0007 0008 #include "knotes-version.h" 0009 #include <KAboutData> 0010 #include <KHelpMenu> 0011 #include <KLocalizedString> 0012 #include <KNotifyConfigWidget> 0013 #include <QIcon> 0014 #include <QMenu> 0015 0016 #include <KConfigGroup> 0017 #include <KSharedConfig> 0018 #include <KWindowConfig> 0019 #include <QApplication> 0020 #include <QDialogButtonBox> 0021 #include <QPushButton> 0022 #include <QTabWidget> 0023 #include <QVBoxLayout> 0024 #include <QWindow> 0025 0026 #include "config/notenetworkconfig.h" 0027 0028 NotesAgentSettingsDialog::NotesAgentSettingsDialog(QWidget *parent) 0029 : QDialog(parent) 0030 , mNotify(new KNotifyConfigWidget(this)) 0031 , mNetworkConfig(new NoteShared::NoteNetworkConfigWidget(this)) 0032 { 0033 setWindowTitle(i18nc("@title:window", "Configure Notes Agent")); 0034 setWindowIcon(QIcon::fromTheme(QStringLiteral("knotes"))); 0035 auto mainLayout = new QVBoxLayout(this); 0036 setModal(true); 0037 0038 auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, this); 0039 QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); 0040 okButton->setDefault(true); 0041 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0042 connect(buttonBox, &QDialogButtonBox::rejected, this, &NotesAgentSettingsDialog::reject); 0043 connect(okButton, &QPushButton::clicked, this, &NotesAgentSettingsDialog::slotOkClicked); 0044 0045 auto tab = new QTabWidget(this); 0046 0047 mNotify->setApplication(QStringLiteral("akonadi_notes_agent")); 0048 tab->addTab(mNotify, i18n("Notify")); 0049 0050 tab->addTab(mNetworkConfig, i18n("Network")); 0051 mNetworkConfig->load(); 0052 0053 mainLayout->addWidget(tab); 0054 mainLayout->addWidget(buttonBox); 0055 readConfig(); 0056 0057 KAboutData aboutData = KAboutData(QStringLiteral("notesagent"), 0058 i18n("Notes Agent"), 0059 QStringLiteral(KNOTES_VERSION), 0060 i18n("Notes Agent."), 0061 KAboutLicense::GPL_V2, 0062 i18n("Copyright (C) 2013-%1 Laurent Montel", QStringLiteral("2024"))); 0063 0064 aboutData.addAuthor(i18n("Laurent Montel"), i18n("Maintainer"), QStringLiteral("montel@kde.org")); 0065 0066 QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("knotes"))); 0067 aboutData.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails")); 0068 0069 auto helpMenu = new KHelpMenu(this, aboutData, true); 0070 // Initialize menu 0071 QMenu *menu = helpMenu->menu(); 0072 helpMenu->action(KHelpMenu::menuAboutApp)->setIcon(QIcon::fromTheme(QStringLiteral("knotes"))); 0073 buttonBox->button(QDialogButtonBox::Help)->setMenu(menu); 0074 } 0075 0076 NotesAgentSettingsDialog::~NotesAgentSettingsDialog() 0077 { 0078 writeConfig(); 0079 } 0080 0081 static const char myConfigGroupName[] = "NotesAgentSettingsDialog"; 0082 void NotesAgentSettingsDialog::readConfig() 0083 { 0084 create(); // ensure a window is created 0085 windowHandle()->resize(QSize(500, 300)); 0086 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(myConfigGroupName)); 0087 KWindowConfig::restoreWindowSize(windowHandle(), group); 0088 resize(windowHandle()->size()); // workaround for QTBUG-40584 0089 } 0090 0091 void NotesAgentSettingsDialog::writeConfig() 0092 { 0093 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(myConfigGroupName)); 0094 KWindowConfig::saveWindowSize(windowHandle(), group); 0095 group.sync(); 0096 } 0097 0098 void NotesAgentSettingsDialog::slotOkClicked() 0099 { 0100 mNotify->save(); 0101 mNetworkConfig->save(); 0102 accept(); 0103 } 0104 0105 #include "moc_notesagentsettingsdialog.cpp"