File indexing completed on 2024-06-16 05:00:38

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "utils.h"
0010 #include <QMap>
0011 #include <QTreeWidget>
0012 
0013 class QTreeWidgetItem;
0014 
0015 class SelectionTypeTreeWidget : public QTreeWidget
0016 {
0017     Q_OBJECT
0018 public:
0019     explicit SelectionTypeTreeWidget(bool backupData, QWidget *parent = nullptr);
0020     ~SelectionTypeTreeWidget() override;
0021 
0022     [[nodiscard]] QMap<Utils::AppsType, Utils::importExportParameters> storedType() const;
0023 
0024     void selectAllItems();
0025     void unSelectAllItems();
0026 
0027     void saveAsTemplate();
0028 
0029     void loadTemplate(const QString &fileName = QString());
0030     void saveAsDefaultTemplate();
0031     void loadDefaultTemplate();
0032     [[nodiscard]] QString exportedFileInfo();
0033     void removeNotSelectedItems();
0034 
0035 private:
0036     void slotItemChanged(QTreeWidgetItem *, int);
0037 
0038     enum ActionType { action = Qt::UserRole + 1 };
0039 
0040     void initialize(bool backupData);
0041     void setSelectItems(bool b);
0042     void changeState(QTreeWidgetItem *item, bool b);
0043     void createSubItem(QTreeWidgetItem *parent, Utils::StoredType type);
0044     void setParameters(const QMap<Utils::AppsType, Utils::importExportParameters> &params);
0045 
0046     [[nodiscard]] Utils::importExportParameters typeChecked(QTreeWidgetItem *parent) const;
0047     void initializeSubItem(QTreeWidgetItem *item, Utils::StoredTypes types);
0048     void loadFileName(const QString &fileName);
0049     [[nodiscard]] QString templateSelectionToString();
0050     bool removeNotSelectedItem(QTreeWidgetItem *parent);
0051 
0052     QTreeWidgetItem *mKmailItem = nullptr;
0053     QTreeWidgetItem *mKalarmItem = nullptr;
0054     QTreeWidgetItem *mKaddressbookItem = nullptr;
0055     QTreeWidgetItem *mKorganizerItem = nullptr;
0056     QTreeWidgetItem *mKNotesItem = nullptr;
0057     QTreeWidgetItem *mAkregatorItem = nullptr;
0058 };