1 /*
2    SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "folderconfiguresettingswidget.h"
8 #include "folderconfiguresettingspagewidget.h"
9 #include "folderconfiguretreewidget.h"
10 #include <KConfigGroup>
11 #include <KSharedConfig>
12 #include <QHBoxLayout>
13 #include <QSplitter>
14 namespace
15 {
16 static const char myFolderConfigureSettingsWidgetGroupName[] = "FolderConfigureSettingsWidget";
17 }
FolderConfigureSettingsWidget(QWidget * parent)18 FolderConfigureSettingsWidget::FolderConfigureSettingsWidget(QWidget *parent)
19     : QWidget(parent)
20     , mFolderConfigureTreeWidget(new FolderConfigureTreeWidget(this))
21     , mFolderConfigureSettingsPageWidget(new FolderConfigureSettingsPageWidget(this))
22     , mSplitter(new QSplitter(this))
23 {
24     auto mainLayout = new QHBoxLayout(this);
25     mainLayout->setObjectName(QStringLiteral("mainLayout"));
26     mainLayout->setContentsMargins({});
27 
28     // TODO add label ?
29 
30     mSplitter->setObjectName(QStringLiteral("splitter"));
31     mSplitter->setChildrenCollapsible(false);
32     mainLayout->addWidget(mSplitter);
33 
34     mFolderConfigureTreeWidget->setObjectName(QStringLiteral("mFolderConfigureTreeWidget"));
35     mSplitter->addWidget(mFolderConfigureTreeWidget);
36 
37     mFolderConfigureSettingsPageWidget->setObjectName(QStringLiteral("mFolderConfigureSettingsPageWidget"));
38     mSplitter->addWidget(mFolderConfigureSettingsPageWidget);
39     readConfig();
40 }
41 
~FolderConfigureSettingsWidget()42 FolderConfigureSettingsWidget::~FolderConfigureSettingsWidget()
43 {
44     saveConfig();
45 }
46 
save()47 void FolderConfigureSettingsWidget::save()
48 {
49     const Akonadi::Collection::List collections = mFolderConfigureTreeWidget->listCollections();
50     mFolderConfigureSettingsPageWidget->save(collections);
51 }
52 
readConfig()53 void FolderConfigureSettingsWidget::readConfig()
54 {
55     KConfigGroup grp(KSharedConfig::openStateConfig(), myFolderConfigureSettingsWidgetGroupName);
56     const QList<int> defaultSizes{200, 400};
57     const QList<int> sizes = grp.readEntry("SplitterSize", defaultSizes);
58     mSplitter->setSizes(sizes);
59 }
60 
saveConfig()61 void FolderConfigureSettingsWidget::saveConfig()
62 {
63     const QList<int> sizes = mSplitter->sizes();
64     KConfigGroup grp(KSharedConfig::openStateConfig(), myFolderConfigureSettingsWidgetGroupName);
65     grp.writeEntry("SplitterSize", sizes);
66 }
67