File indexing completed on 2024-05-12 05:38:24

0001 /*
0002     SPDX-FileCopyrightText: 2009 Aaron Seigo <aseigo@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QJSValue>
0010 #include <QObject>
0011 #include <QRectF>
0012 #include <QStringList>
0013 
0014 namespace Plasma
0015 {
0016 class Containment;
0017 class Corona;
0018 class Theme;
0019 } // namespace Plasma
0020 
0021 namespace WorkspaceScripting
0022 {
0023 class ScriptEngine;
0024 
0025 class AppInterface : public QObject
0026 {
0027     Q_OBJECT
0028     Q_PROPERTY(bool locked READ coronaLocked WRITE lockCorona)
0029     Q_PROPERTY(bool hasBattery READ hasBattery)
0030     Q_PROPERTY(int screenCount READ screenCount)
0031     Q_PROPERTY(QList<int> activityIds READ activityIds)
0032     Q_PROPERTY(QList<int> panelIds READ panelIds)
0033     Q_PROPERTY(QStringList knownPanelTypes READ knownPanelTypes)
0034     Q_PROPERTY(QStringList knownActivityTypes READ knownActivityTypes)
0035     Q_PROPERTY(QStringList knownWidgetTypes READ knownWidgetTypes)
0036     Q_PROPERTY(QString theme READ theme WRITE setTheme)
0037     Q_PROPERTY(QString applicationVersion READ applicationVersion)
0038     Q_PROPERTY(QString platformVersion READ platformVersion)
0039     Q_PROPERTY(int scriptingVersion READ scriptingVersion)
0040     Q_PROPERTY(bool multihead READ multihead)
0041     Q_PROPERTY(bool multiheadScreen READ multihead)
0042     Q_PROPERTY(QString locale READ locale)
0043     Q_PROPERTY(QString language READ language)
0044     Q_PROPERTY(QString languageId READ languageId)
0045 
0046 public:
0047     explicit AppInterface(ScriptEngine *env);
0048 
0049     bool hasBattery() const;
0050     int screenCount() const;
0051     QList<int> activityIds() const;
0052     QList<int> panelIds() const;
0053 
0054     QStringList knownWidgetTypes() const;
0055     QStringList knownActivityTypes() const;
0056     QStringList knownPanelTypes() const;
0057     QStringList knownContainmentTypes(const QString &type) const;
0058 
0059     QString applicationVersion() const;
0060     QString platformVersion() const;
0061     int scriptingVersion() const;
0062 
0063     QString theme() const;
0064     void setTheme(const QString &name);
0065 
0066     QString locale() const;
0067     QString language() const;
0068     QString languageId() const;
0069 
0070     bool multihead() const;
0071     int multiheadScreen() const;
0072 
0073     bool coronaLocked() const;
0074 
0075 public Q_SLOTS:
0076     QJSValue screenGeometry(int screen) const;
0077     void lockCorona(bool locked);
0078     void sleep(int ms);
0079 
0080 Q_SIGNALS:
0081     void print(const QString &string);
0082 
0083 private:
0084     ScriptEngine *m_env;
0085     QStringList m_knownWidgets;
0086     Plasma::Theme *m_theme;
0087 };
0088 
0089 }