1 /*
2 SPDX-FileCopyrightText: 2012-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "selectiontypedialog.h"
8 #include "gui/widgets/selectiontypetreewidget.h"
9
10 #include <KConfigGroup>
11 #include <KLocalizedString>
12 #include <KSharedConfig>
13 #include <QCheckBox>
14 #include <QDialogButtonBox>
15 #include <QHBoxLayout>
16 #include <QPushButton>
17 #include <QVBoxLayout>
18
SelectionTypeDialog(bool backupData,QWidget * parent)19 SelectionTypeDialog::SelectionTypeDialog(bool backupData, QWidget *parent)
20 : QDialog(parent)
21 {
22 setWindowTitle(i18nc("@title:window", "Select Type"));
23 setModal(true);
24
25 auto topLayout = new QVBoxLayout(this);
26
27 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
28 buttonBox->setObjectName(QStringLiteral("buttonbox"));
29
30 QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
31 okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
32 connect(buttonBox, &QDialogButtonBox::accepted, this, &SelectionTypeDialog::accept);
33 connect(buttonBox, &QDialogButtonBox::rejected, this, &SelectionTypeDialog::reject);
34 okButton->setDefault(true);
35
36 mSelectionTreeWidget = new SelectionTypeTreeWidget(backupData, this);
37 mSelectionTreeWidget->setObjectName(QStringLiteral("mSelectionTreeWidget"));
38 topLayout->addWidget(mSelectionTreeWidget);
39
40 mUseTemplateByDefault = new QCheckBox(i18n("Use this template by default"), this);
41 mUseTemplateByDefault->setObjectName(QStringLiteral("mUseTemplateByDefault"));
42 topLayout->addWidget(mUseTemplateByDefault);
43
44 auto hbox = new QHBoxLayout;
45 QPushButton *selectAll = new QPushButton(i18n("Select All"), this);
46 selectAll->setObjectName(QStringLiteral("selectAll"));
47 connect(selectAll, &QPushButton::clicked, this, &SelectionTypeDialog::slotSelectAll);
48 hbox->addWidget(selectAll);
49
50 QPushButton *unselectAll = new QPushButton(i18n("Unselect All"), this);
51 unselectAll->setObjectName(QStringLiteral("unselectAll"));
52 connect(unselectAll, &QPushButton::clicked, this, &SelectionTypeDialog::slotUnselectAll);
53 hbox->addWidget(unselectAll);
54
55 mSaveTemplate = new QPushButton(i18n("Save as Template..."), this);
56 mSaveTemplate->setObjectName(QStringLiteral("mSaveTemplate"));
57 connect(mSaveTemplate, &QPushButton::clicked, this, &SelectionTypeDialog::slotSaveAsTemplate);
58 hbox->addWidget(mSaveTemplate);
59
60 mLoadTemplate = new QPushButton(i18n("Load Template..."), this);
61 mLoadTemplate->setObjectName(QStringLiteral("mLoadTemplate"));
62 connect(mLoadTemplate, &QPushButton::clicked, this, &SelectionTypeDialog::slotLoadTemplate);
63 hbox->addWidget(mLoadTemplate);
64
65 topLayout->addLayout(hbox);
66 topLayout->addWidget(buttonBox);
67 readConfig();
68 }
69
~SelectionTypeDialog()70 SelectionTypeDialog::~SelectionTypeDialog()
71 {
72 saveDefaultTemplate();
73 writeConfig();
74 }
75
writeConfig()76 void SelectionTypeDialog::writeConfig()
77 {
78 KConfigGroup group(KSharedConfig::openStateConfig(), "SelectionTypeDialog");
79 group.writeEntry("Size", size());
80 }
81
readConfig()82 void SelectionTypeDialog::readConfig()
83 {
84 KConfigGroup group(KSharedConfig::openStateConfig(), "SelectionTypeDialog");
85 const QSize sizeDialog = group.readEntry("Size", QSize(600, 400));
86 if (sizeDialog.isValid()) {
87 resize(sizeDialog);
88 }
89 loadDefaultTemplate();
90 }
91
storedType() const92 QHash<Utils::AppsType, Utils::importExportParameters> SelectionTypeDialog::storedType() const
93 {
94 return mSelectionTreeWidget->storedType();
95 }
96
exportedFileInfo() const97 QString SelectionTypeDialog::exportedFileInfo() const
98 {
99 return mSelectionTreeWidget->exportedFileInfo();
100 }
101
removeNotSelectedItems()102 void SelectionTypeDialog::removeNotSelectedItems()
103 {
104 mSelectionTreeWidget->removeNotSelectedItems();
105 mSaveTemplate->hide();
106 mLoadTemplate->hide();
107 mUseTemplateByDefault->hide();
108 }
109
loadTemplate(const QString & fileName)110 void SelectionTypeDialog::loadTemplate(const QString &fileName)
111 {
112 if (!fileName.isEmpty()) {
113 mSelectionTreeWidget->loadTemplate(fileName);
114 }
115 }
116
slotSelectAll()117 void SelectionTypeDialog::slotSelectAll()
118 {
119 mSelectionTreeWidget->selectAllItems();
120 }
121
slotUnselectAll()122 void SelectionTypeDialog::slotUnselectAll()
123 {
124 mSelectionTreeWidget->unSelectAllItems();
125 }
126
slotSaveAsTemplate()127 void SelectionTypeDialog::slotSaveAsTemplate()
128 {
129 mSelectionTreeWidget->saveAsTemplate();
130 }
131
slotLoadTemplate()132 void SelectionTypeDialog::slotLoadTemplate()
133 {
134 mSelectionTreeWidget->loadTemplate();
135 }
136
saveDefaultTemplate()137 void SelectionTypeDialog::saveDefaultTemplate()
138 {
139 if (mUseTemplateByDefault->isChecked()) {
140 mSelectionTreeWidget->saveAsDefaultTemplate();
141 }
142 }
143
loadDefaultTemplate()144 void SelectionTypeDialog::loadDefaultTemplate()
145 {
146 mSelectionTreeWidget->loadDefaultTemplate();
147 }
148