File indexing completed on 2024-05-12 05:36:09

0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <QObject>
0007 #include <QString>
0008 #include <qqmlregistration.h>
0009 
0010 class ShellDBusObject : public QObject
0011 {
0012     Q_OBJECT
0013     QML_ELEMENT
0014     QML_SINGLETON
0015     Q_CLASSINFO("D-Bus Interface", "org.kde.plasmashell")
0016 
0017 public:
0018     ShellDBusObject(QObject *parent = nullptr);
0019 
0020     // called by QML
0021     Q_INVOKABLE void registerObject();
0022 
0023 Q_SIGNALS:
0024     Q_SCRIPTABLE void doNotDisturbChanged();
0025     Q_SCRIPTABLE void isActionDrawerOpenChanged();
0026     Q_SCRIPTABLE void isTaskSwitcherVisibleChanged();
0027     Q_SCRIPTABLE void openActionDrawerRequested();
0028     Q_SCRIPTABLE void closeActionDrawerRequested();
0029     Q_SCRIPTABLE void openAppLaunchAnimationRequested(QString splashIcon, QString title, qreal x, qreal y, qreal sourceIconSize);
0030     Q_SCRIPTABLE void closeAppLaunchAnimationRequested();
0031     Q_SCRIPTABLE void openHomeScreenRequested();
0032     Q_SCRIPTABLE void resetHomeScreenPositionRequested();
0033     Q_SCRIPTABLE void showVolumeOSDRequested();
0034 
0035 public Q_SLOTS:
0036     Q_SCRIPTABLE bool doNotDisturb();
0037     Q_SCRIPTABLE void setDoNotDisturb(bool value);
0038 
0039     // TODO: Account for multiple action drawers?
0040     Q_SCRIPTABLE bool isActionDrawerOpen();
0041     Q_SCRIPTABLE void setIsActionDrawerOpen(bool value);
0042 
0043     Q_SCRIPTABLE bool isTaskSwitcherVisible();
0044     Q_SCRIPTABLE void setIsTaskSwitcherVisible(bool value);
0045 
0046     Q_SCRIPTABLE void openActionDrawer();
0047     Q_SCRIPTABLE void closeActionDrawer();
0048 
0049     Q_SCRIPTABLE void openAppLaunchAnimation(QString splashIcon, QString title, qreal x, qreal y, qreal sourceIconSize);
0050     Q_SCRIPTABLE void closeAppLaunchAnimation();
0051 
0052     Q_SCRIPTABLE void openHomeScreen();
0053     Q_SCRIPTABLE void resetHomeScreenPosition();
0054     Q_SCRIPTABLE void showVolumeOSD();
0055 
0056 private:
0057     bool m_initialized = false;
0058 
0059     bool m_doNotDisturb = false;
0060     bool m_isActionDrawerOpen = false;
0061     bool m_isTaskSwitcherVisible = false;
0062 };