File indexing completed on 2024-05-12 17:07:08

0001 /*
0002     SPDX-FileCopyrightText: 2020 Tobias Fella <fella@posteo.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QString>
0010 #include <QVariant>
0011 
0012 #include <optional>
0013 
0014 #include <KLocalizedString>
0015 
0016 class ComponentChooser : public QObject
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(QVariantList applications MEMBER m_applications NOTIFY applicationsChanged)
0020     Q_PROPERTY(int index MEMBER m_index NOTIFY indexChanged)
0021     Q_PROPERTY(bool isDefaults READ isDefaults NOTIFY isDefaultsChanged)
0022 
0023 public:
0024     ComponentChooser(QObject *parent, const QString &mimeType, const QString &type, const QString &defaultApplication, const QString &dialogText);
0025 
0026     void defaults();
0027     virtual void load();
0028     bool isDefaults() const;
0029     bool isSaveNeeded() const;
0030 
0031     Q_INVOKABLE void select(int index);
0032 
0033     virtual void save() = 0;
0034     void saveMimeTypeAssociation(const QString &mime, const QString &storageId);
0035 
0036     bool isDefault() const;
0037 
0038 Q_SIGNALS:
0039     void applicationsChanged();
0040     void indexChanged();
0041     void isDefaultsChanged();
0042 
0043 protected:
0044     QVariantList m_applications;
0045     int m_index = -1;
0046     std::optional<int> m_defaultIndex;
0047     QString m_mimeType;
0048     QString m_type;
0049     QString m_defaultApplication;
0050     QString m_previousApplication;
0051     QString m_dialogText;
0052 };