| 1 | /* |
| 2 | SPDX-FileCopyrightText: 2015 Kai Uwe Broulik <kde@privat.broulik.de> |
| 3 | |
| 4 | SPDX-License-Identifier: GPL-2.0-or-later |
| 5 | */ |
| 6 | |
| 7 | #ifndef ICONDIALOG_H |
| 8 | #define ICONDIALOG_H |
| 9 | |
| 10 | #include <QObject> |
| 11 | #include <QString> |
| 12 | #include <qqmlregistration.h> |
| 13 | |
| 14 | class KIconDialog; |
| 15 | |
| 16 | /*! |
| 17 | * \qmltype IconDialog |
| 18 | * \inqmlmodule org.kde.iconthemes |
| 19 | */ |
| 20 | class IconDialog : public QObject |
| 21 | { |
| 22 | Q_OBJECT |
| 23 | QML_ELEMENT |
| 24 | |
| 25 | /*! |
| 26 | * \qmlproperty string IconDialog::iconName |
| 27 | * The name or path of the icon the user has selected |
| 28 | */ |
| 29 | Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged) |
| 30 | /*! |
| 31 | * \qmlproperty int IconDialog::iconSize |
| 32 | * The desired size of icons |
| 33 | */ |
| 34 | Q_PROPERTY(int iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged) |
| 35 | /*! |
| 36 | * \qmlproperty string IconDialog::title |
| 37 | * The title to use for the dialog |
| 38 | */ |
| 39 | Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) |
| 40 | /*! |
| 41 | * \qmlproperty bool IconDialog::user |
| 42 | * Begin with the "user icons" instead of "system icons" |
| 43 | */ |
| 44 | Q_PROPERTY(bool user READ user WRITE setUser NOTIFY userChanged) |
| 45 | /*! |
| 46 | * \qmlproperty string IconDialog::customLocation |
| 47 | * Use a custom location, only local directory paths are allowed |
| 48 | */ |
| 49 | Q_PROPERTY(QString customLocation READ customLocation WRITE setCustomLocation NOTIFY customLocationChanged) |
| 50 | /*! |
| 51 | * \qmlproperty enumeration IconDialog::modality |
| 52 | * Window modality, default is Qt.NonModal |
| 53 | */ |
| 54 | Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged) |
| 55 | /*! |
| 56 | * \qmlproperty string IconDialog::visible |
| 57 | * Whether the dialog is currently visible, setting this property to true |
| 58 | * is the same as calling show() |
| 59 | */ |
| 60 | Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged) |
| 61 | |
| 62 | public: |
| 63 | explicit IconDialog(QObject *parent = nullptr); |
| 64 | ~IconDialog() override; |
| 65 | |
| 66 | QString iconName() const; |
| 67 | |
| 68 | int iconSize() const; |
| 69 | void setIconSize(int iconSize); |
| 70 | |
| 71 | QString title() const; |
| 72 | void setTitle(const QString &title); |
| 73 | |
| 74 | bool user() const; |
| 75 | void setUser(bool user); |
| 76 | |
| 77 | QString customLocation() const; |
| 78 | void setCustomLocation(const QString &customLocation); |
| 79 | |
| 80 | Qt::WindowModality modality() const; |
| 81 | void setModality(Qt::WindowModality modality); |
| 82 | |
| 83 | bool visible() const; |
| 84 | void setVisible(bool visible); |
| 85 | |
| 86 | /*! |
| 87 | * \qmlmethod void IconDialog::open |
| 88 | */ |
| 89 | Q_INVOKABLE void open(); |
| 90 | |
| 91 | /*! |
| 92 | * \qmlmethod void IconDialog::close |
| 93 | */ |
| 94 | Q_INVOKABLE void close(); |
| 95 | |
| 96 | Q_SIGNALS: |
| 97 | void iconNameChanged(const QString &iconName); |
| 98 | void iconSizeChanged(int iconSize); |
| 99 | void titleChanged(const QString &title); |
| 100 | void userChanged(bool user); |
| 101 | void customLocationChanged(const QString &customLocation); |
| 102 | void modalityChanged(Qt::WindowModality modality); |
| 103 | void visibleChanged(); |
| 104 | void accepted(); |
| 105 | void rejected(); |
| 106 | |
| 107 | private: |
| 108 | bool eventFilter(QObject *watched, QEvent *event) override; |
| 109 | |
| 110 | QScopedPointer<KIconDialog> m_dialog; |
| 111 | |
| 112 | QString m_iconName; |
| 113 | int m_iconSize; |
| 114 | bool m_user; |
| 115 | QString m_customLocation; |
| 116 | Qt::WindowModality m_modality; |
| 117 | }; |
| 118 | |
| 119 | #endif // ICONDIALOG_H |
| 120 | |