File indexing completed on 2024-05-05 05:21:14
0001 /* 0002 SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org> 0003 SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "knoteconfigmodule.h" 0009 0010 #include "config/noteactionconfig.h" 0011 #include "config/notenetworkconfig.h" 0012 #include "knotesglobalconfig.h" 0013 #include "notesharedglobalconfig.h" 0014 #include "print/knoteprintselectthemecombobox.h" 0015 #include <config-knotes.h> 0016 0017 #include "configdialog/knotecollectionconfigwidget.h" 0018 #include "configdialog/knotedisplayconfigwidget.h" 0019 #include "configdialog/knoteeditorconfigwidget.h" 0020 #include <KAuthorized> 0021 #include <KLocalizedString> 0022 0023 #include <KNSWidgets/Dialog> 0024 #include <QCheckBox> 0025 #include <QLabel> 0026 #include <QLineEdit> 0027 #include <QPushButton> 0028 #include <QToolButton> 0029 #include <QVBoxLayout> 0030 #include <QWhatsThis> 0031 0032 KNoteDisplayConfig::KNoteDisplayConfig(QObject *parent, const KPluginMetaData &data) 0033 : KCModule(parent, data) 0034 { 0035 auto lay = new QVBoxLayout(widget()); 0036 QWidget *w = new KNoteDisplayConfigWidget(true, widget()); 0037 lay->addWidget(w); 0038 lay->addStretch(); 0039 addConfig(KNotesGlobalConfig::self(), w); 0040 load(); 0041 } 0042 0043 void KNoteDisplayConfig::load() 0044 { 0045 KCModule::load(); 0046 } 0047 0048 void KNoteDisplayConfig::save() 0049 { 0050 KCModule::save(); 0051 } 0052 0053 KNoteEditorConfig::KNoteEditorConfig(QObject *parent, const KPluginMetaData &data) 0054 : KCModule(parent, data) 0055 { 0056 auto lay = new QVBoxLayout(widget()); 0057 QWidget *w = new KNoteEditorConfigWidget(widget()); 0058 lay->addWidget(w); 0059 lay->addStretch(); 0060 addConfig(KNotesGlobalConfig::self(), w); 0061 load(); 0062 } 0063 0064 void KNoteEditorConfig::save() 0065 { 0066 KCModule::save(); 0067 } 0068 0069 void KNoteEditorConfig::load() 0070 { 0071 KCModule::load(); 0072 } 0073 0074 KNoteMiscConfig::KNoteMiscConfig(QObject *parent, const KPluginMetaData &data) 0075 : KCModule(parent, data) 0076 { 0077 auto lay = new QVBoxLayout(widget()); 0078 // lay->setContentsMargins(0, 0, 0, 0); 0079 0080 auto kcfg_SystemTrayShowNotes = new QCheckBox(i18n("Show number of notes in tray icon"), widget()); 0081 0082 kcfg_SystemTrayShowNotes->setObjectName(QLatin1StringView("kcfg_SystemTrayShowNotes")); 0083 lay->addWidget(kcfg_SystemTrayShowNotes); 0084 0085 auto hbox = new QHBoxLayout; 0086 lay->addLayout(hbox); 0087 auto label_DefaultTitle = new QLabel(i18n("Default Title:"), widget()); 0088 hbox->addWidget(label_DefaultTitle); 0089 0090 mDefaultTitle = new QLineEdit(widget()); 0091 label_DefaultTitle->setBuddy(mDefaultTitle); 0092 hbox->addWidget(mDefaultTitle); 0093 0094 auto howItWorks = new QLabel(i18n("<a href=\"whatsthis\">How does this work?</a>")); 0095 connect(howItWorks, &QLabel::linkActivated, this, &KNoteMiscConfig::slotHelpLinkClicked); 0096 lay->addWidget(howItWorks); 0097 0098 addConfig(KNotesGlobalConfig::self(), widget()); 0099 howItWorks->setContextMenuPolicy(Qt::NoContextMenu); 0100 lay->addStretch(); 0101 load(); 0102 connect(mDefaultTitle, &QLineEdit::textChanged, this, &KNoteMiscConfig::markAsChanged); 0103 } 0104 0105 void KNoteMiscConfig::load() 0106 { 0107 KCModule::load(); 0108 mDefaultTitle->setText(NoteShared::NoteSharedGlobalConfig::self()->defaultTitle()); 0109 } 0110 0111 void KNoteMiscConfig::save() 0112 { 0113 KCModule::save(); 0114 NoteShared::NoteSharedGlobalConfig::self()->setDefaultTitle(mDefaultTitle->text()); 0115 NoteShared::NoteSharedGlobalConfig::self()->save(); 0116 } 0117 0118 void KNoteMiscConfig::defaults() 0119 { 0120 KCModule::defaults(); 0121 const bool bUseDefaults = NoteShared::NoteSharedGlobalConfig::self()->useDefaults(true); 0122 mDefaultTitle->setText(NoteShared::NoteSharedGlobalConfig::self()->defaultTitle()); 0123 NoteShared::NoteSharedGlobalConfig::self()->useDefaults(bUseDefaults); 0124 } 0125 0126 void KNoteMiscConfig::slotHelpLinkClicked(const QString &) 0127 { 0128 const QString help = i18n( 0129 "<qt>" 0130 "<p>You can customize title note. " 0131 "You can use:</p>" 0132 "<ul>" 0133 "<li>%d current date (short format)</li>" 0134 "<li>%l current date (long format)</li>" 0135 "<li>%t current time</li>" 0136 "</ul>" 0137 "</qt>"); 0138 0139 QWhatsThis::showText(QCursor::pos(), help); 0140 } 0141 0142 KNotePrintConfig::KNotePrintConfig(QObject *parent, const KPluginMetaData &data) 0143 : KCModule(parent, data) 0144 { 0145 auto lay = new QVBoxLayout(widget()); 0146 auto w = new QWidget(widget()); 0147 lay->addWidget(w); 0148 auto layout = new QGridLayout(w); 0149 layout->setContentsMargins(0, 0, 0, 0); 0150 0151 auto label_PrintAction = new QLabel(i18n("Theme:"), widget()); 0152 layout->addWidget(label_PrintAction, 0, 0); 0153 0154 mSelectTheme = new KNotePrintSelectThemeComboBox(widget()); 0155 connect(mSelectTheme, &QComboBox::activated, this, &KNotePrintConfig::slotThemeChanged); 0156 label_PrintAction->setBuddy(mSelectTheme); 0157 layout->addWidget(mSelectTheme, 0, 1); 0158 if (KAuthorized::authorize(QStringLiteral("ghns"))) { 0159 auto getNewTheme = new QToolButton; 0160 getNewTheme->setIcon(QIcon::fromTheme(QStringLiteral("get-hot-new-stuff"))); 0161 getNewTheme->setToolTip(i18n("Download new printing themes")); 0162 connect(getNewTheme, &QToolButton::clicked, this, &KNotePrintConfig::slotDownloadNewThemes); 0163 layout->addWidget(getNewTheme, 0, 2); 0164 } 0165 lay->addStretch(); 0166 load(); 0167 } 0168 0169 void KNotePrintConfig::slotDownloadNewThemes() 0170 { 0171 auto newStuffDialog = new KNSWidgets::Dialog(QStringLiteral("kwinswitcher.knsrc")); 0172 connect(newStuffDialog, &KNSWidgets::Dialog::finished, this, [newStuffDialog, this]() { 0173 if (!newStuffDialog->changedEntries().isEmpty()) { 0174 mSelectTheme->loadThemes(); 0175 } 0176 newStuffDialog->deleteLater(); 0177 }); 0178 newStuffDialog->open(); 0179 } 0180 0181 void KNotePrintConfig::slotThemeChanged() 0182 { 0183 markAsChanged(); 0184 } 0185 0186 void KNotePrintConfig::save() 0187 { 0188 KNotesGlobalConfig::self()->setTheme(mSelectTheme->selectedTheme()); 0189 } 0190 0191 void KNotePrintConfig::load() 0192 { 0193 mSelectTheme->loadThemes(); 0194 } 0195 0196 void KNotePrintConfig::defaults() 0197 { 0198 mSelectTheme->selectDefaultTheme(); 0199 markAsChanged(); 0200 } 0201 0202 KNoteCollectionConfig::KNoteCollectionConfig(QObject *parent, const KPluginMetaData &data) 0203 : KCModule(parent, data) 0204 { 0205 auto lay = new QHBoxLayout(widget()); 0206 mCollectionConfigWidget = new KNoteCollectionConfigWidget(widget()); 0207 lay->addWidget(mCollectionConfigWidget); 0208 connect(mCollectionConfigWidget, &KNoteCollectionConfigWidget::emitChanged, this, &KNoteCollectionConfig::markAsChanged); 0209 load(); 0210 } 0211 0212 void KNoteCollectionConfig::save() 0213 { 0214 mCollectionConfigWidget->save(); 0215 } 0216 0217 void KNoteCollectionConfig::load() 0218 { 0219 // Nothing 0220 } 0221 0222 #include "moc_knoteconfigmodule.cpp"