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 };