File indexing completed on 2024-05-12 17:07:45
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "qqml.h" 0010 #include <QAbstractListModel> 0011 #include <QQmlListProperty> 0012 0013 class QuickSetting : public QObject 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(QString text READ text WRITE setText REQUIRED NOTIFY textChanged) 0017 Q_PROPERTY(QString status READ status WRITE setStatus NOTIFY statusChanged) // if no status is explicitly set, On/Off is used by default 0018 Q_PROPERTY(QString icon READ iconName WRITE setIconName REQUIRED NOTIFY iconNameChanged) 0019 Q_PROPERTY(QString settingsCommand READ settingsCommand WRITE setSettingsCommand NOTIFY settingsCommandChanged) 0020 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) 0021 Q_PROPERTY(bool available READ isAvailable WRITE setAvailable NOTIFY availableChanged) 0022 Q_PROPERTY(QQmlListProperty<QObject> children READ children CONSTANT) 0023 Q_CLASSINFO("DefaultProperty", "children") 0024 QML_NAMED_ELEMENT("QuickSetting") 0025 public: 0026 QuickSetting(QObject *parent = nullptr); 0027 0028 QString text() const 0029 { 0030 return m_text; 0031 } 0032 QString status() const 0033 { 0034 return m_status; 0035 } 0036 QString iconName() const 0037 { 0038 return m_iconName; 0039 } 0040 QString settingsCommand() const 0041 { 0042 return m_settingsCommand; 0043 } 0044 bool isEnabled() const 0045 { 0046 return m_enabled; 0047 } 0048 bool isAvailable() const 0049 { 0050 return m_available; 0051 } 0052 0053 void setText(const QString &text); 0054 void setStatus(const QString &status); 0055 void setIconName(const QString &iconName); 0056 void setSettingsCommand(const QString &settingsCommand); 0057 void setEnabled(bool enabled); 0058 void setAvailable(bool available); 0059 QQmlListProperty<QObject> children(); 0060 0061 Q_SIGNALS: 0062 void enabledChanged(bool enabled); 0063 void availableChanged(bool available); 0064 void textChanged(const QString &text); 0065 void statusChanged(const QString &text); 0066 void iconNameChanged(const QString &icon); 0067 void settingsCommandChanged(const QString &settingsCommand); 0068 0069 private: 0070 bool m_enabled = true; 0071 bool m_available = true; 0072 QString m_text; 0073 QString m_status; 0074 QString m_iconName; 0075 QString m_settingsCommand; 0076 QList<QObject *> m_children; 0077 };