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"