1 /*
2    SPDX-FileCopyrightText: 2013-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #include "kcmknotessummary.h"
7 
8 #include <Akonadi/Notes/NoteUtils>
9 
10 #include <PimCommonAkonadi/CheckedCollectionWidget>
11 
12 #include <Akonadi/ETMViewStateSaver>
13 
14 #include "knotes_kontact_plugin_debug.h"
15 #include <KAboutData>
16 #include <KAcceleratorManager>
17 #include <KCheckableProxyModel>
18 #include <KLocalizedString>
19 #include <KPluginFactory>
20 #include <KSharedConfig>
21 
22 #include <QCheckBox>
23 #include <QTreeView>
24 #include <QVBoxLayout>
25 
26 K_PLUGIN_CLASS_WITH_JSON(KCMKNotesSummary, "kcmknotessummary.json")
27 
KCMKNotesSummary(QWidget * parent,const QVariantList & args)28 KCMKNotesSummary::KCMKNotesSummary(QWidget *parent, const QVariantList &args)
29     : KCModule(parent, args)
30 {
31     initGUI();
32 
33     connect(mCheckedCollectionWidget->folderTreeView(), &QAbstractItemView::clicked, this, &KCMKNotesSummary::modified);
34 
35     KAcceleratorManager::manage(this);
36 
37     load();
38 
39     auto about = new KAboutData(QStringLiteral("kcmknotessummary"),
40                                 i18n("kcmknotessummary"),
41                                 QString(),
42                                 i18n("Notes Summary Configuration Dialog"),
43                                 KAboutLicense::GPL,
44                                 i18n("Copyright © 2013-2021 Laurent Montel <montel@kde.org>"));
45     about->addAuthor(ki18n("Laurent Montel").toString(), QString(), QStringLiteral("montel@kde.org"));
46     setAboutData(about);
47 }
48 
modified()49 void KCMKNotesSummary::modified()
50 {
51     Q_EMIT changed(true);
52 }
53 
initGUI()54 void KCMKNotesSummary::initGUI()
55 {
56     auto layout = new QVBoxLayout(this);
57     layout->setContentsMargins(0, 0, 0, 0);
58 
59     mCheckedCollectionWidget = new PimCommon::CheckedCollectionWidget(Akonadi::NoteUtils::noteMimeType());
60     layout->addWidget(mCheckedCollectionWidget);
61 }
62 
initFolders()63 void KCMKNotesSummary::initFolders()
64 {
65     KSharedConfigPtr _config = KSharedConfig::openConfig(QStringLiteral("kcmknotessummaryrc"));
66 
67     mModelState = new KViewStateMaintainer<Akonadi::ETMViewStateSaver>(_config->group("CheckState"), this);
68     mModelState->setSelectionModel(mCheckedCollectionWidget->selectionModel());
69 }
70 
loadFolders()71 void KCMKNotesSummary::loadFolders()
72 {
73     mModelState->restoreState();
74 }
75 
storeFolders()76 void KCMKNotesSummary::storeFolders()
77 {
78     KConfig config(QStringLiteral("kcmknotessummaryrc"));
79     mModelState->saveState();
80     config.sync();
81 }
82 
load()83 void KCMKNotesSummary::load()
84 {
85     initFolders();
86     loadFolders();
87 
88     Q_EMIT changed(false);
89 }
90 
save()91 void KCMKNotesSummary::save()
92 {
93     storeFolders();
94 
95     Q_EMIT changed(false);
96 }
97 
defaults()98 void KCMKNotesSummary::defaults()
99 {
100     Q_EMIT changed(true);
101 }
102 
103 #include "kcmknotessummary.moc"
104