File indexing completed on 2024-05-12 05:35:37

0001 /*
0002  *  SPDX-FileCopyrightText: 2015-2016 Ivan Cukic <ivan.cukic@kde.org>
0003  *  SPDX-FileCopyrightText: 2023 Ismael Asensio <isma.af@gmail.com>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006  */
0007 
0008 #pragma once
0009 
0010 #include <PlasmaActivities/Controller>
0011 
0012 #include <QKeySequence>
0013 #include <QtQml/QQmlModuleRegistration>
0014 
0015 class ActivityConfig : public QObject
0016 {
0017     Q_OBJECT
0018 
0019     Q_PROPERTY(QString activityId READ activityId WRITE setActivityId NOTIFY activityIdChanged)
0020     Q_PROPERTY(QString name MEMBER m_name NOTIFY infoChanged)
0021     Q_PROPERTY(QString description MEMBER m_description NOTIFY infoChanged)
0022     Q_PROPERTY(QString iconName MEMBER m_iconName NOTIFY infoChanged)
0023     Q_PROPERTY(bool isPrivate MEMBER m_private NOTIFY infoChanged)
0024     Q_PROPERTY(QKeySequence shortcut MEMBER m_shortcut NOTIFY infoChanged)
0025     Q_PROPERTY(bool isSaveNeeded READ isSaveNeeded NOTIFY infoChanged)
0026     Q_PROPERTY(bool inhibitScreen MEMBER m_inhibitScreen NOTIFY infoChanged)
0027     Q_PROPERTY(bool inhibitSleep MEMBER m_inhibitSleep NOTIFY infoChanged)
0028 
0029 public:
0030     explicit ActivityConfig(QObject *parent = nullptr);
0031     ~ActivityConfig();
0032 
0033 public:
0034     QString activityId() const;
0035     void setActivityId(const QString &activityId);
0036 
0037     bool isSaveNeeded();
0038 
0039     Q_INVOKABLE void save();
0040 
0041 private:
0042     void load();
0043     void reset();
0044     void createActivity();
0045 
0046 Q_SIGNALS:
0047     void activityIdChanged();
0048     void infoChanged();
0049 
0050 private:
0051     QString m_activityId;
0052 
0053     QString m_name;
0054     QString m_description;
0055     QString m_iconName;
0056     bool m_private;
0057     QKeySequence m_shortcut;
0058     bool m_inhibitScreen = false;
0059     bool m_savedInhibitScreen = false;
0060     bool m_inhibitSleep = false;
0061     bool m_savedInhibitSleep = false;
0062 
0063     KActivities::Controller m_activities;
0064     bool m_savedPrivate = false;
0065 };