File indexing completed on 2024-05-12 05:12:48

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #pragma once
0009 
0010 #include <Akonadi/Tag>
0011 #include <QDialog>
0012 
0013 #include <QStandardItemModel>
0014 
0015 #include "ui_tagpropertiesdialog.h"
0016 
0017 class TagPropertiesDialog : public QDialog
0018 {
0019     Q_OBJECT
0020 
0021 public:
0022     explicit TagPropertiesDialog(QWidget *parent = nullptr);
0023     explicit TagPropertiesDialog(const Akonadi::Tag &tag, QWidget *parent = nullptr);
0024     ~TagPropertiesDialog() override;
0025 
0026     [[nodiscard]] Akonadi::Tag tag() const;
0027     [[nodiscard]] bool changed() const;
0028 
0029 protected:
0030     void slotAccept();
0031 
0032 private Q_SLOTS:
0033     void addAttributeClicked();
0034     void deleteAttributeClicked();
0035     void attributeChanged(QStandardItem *item);
0036 
0037     void addRIDClicked();
0038     void deleteRIDClicked();
0039     void remoteIdChanged(QStandardItem *item);
0040 
0041 private:
0042     void setupUi();
0043 
0044     Ui::TagPropertiesDialog ui;
0045     Akonadi::Tag mTag;
0046 
0047     QStandardItemModel *mAttributesModel = nullptr;
0048     QStandardItemModel *mRemoteIdsModel = nullptr;
0049 
0050     bool mChanged = false;
0051     QSet<QString> mChangedAttrs;
0052     QSet<QString> mRemovedAttrs;
0053     QSet<QString> mChangedRIDs;
0054     QSet<QString> mRemovedRIDs;
0055 };