summaryrefslogtreecommitdiff
path: root/app/pebbledinterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/pebbledinterface.h')
-rw-r--r--app/pebbledinterface.h69
1 files changed, 46 insertions, 23 deletions
diff --git a/app/pebbledinterface.h b/app/pebbledinterface.h
index 0a6f15d..51efa12 100644
--- a/app/pebbledinterface.h
+++ b/app/pebbledinterface.h
@@ -2,48 +2,57 @@
#define PEBBLEDINTERFACE_H
#include <QObject>
-#include <QtDBus/QtDBus>
-#include <QDBusArgument>
+#include <QUrl>
+#include <QHash>
+#include <QUuid>
+#include <QImage>
+#include <QDBusInterface>
+
+class OrgPebbledWatchInterface;
class PebbledInterface : public QObject
{
Q_OBJECT
+ Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
+ Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
+ Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
+ Q_PROPERTY(QString name READ name NOTIFY nameChanged)
+ Q_PROPERTY(QString address READ address NOTIFY addressChanged)
+ Q_PROPERTY(QString appUuid READ appUuid NOTIFY appUuidChanged)
- static QString PEBBLED_SYSTEMD_UNIT;
- static QString PEBBLED_DBUS_SERVICE;
- static QString PEBBLED_DBUS_PATH;
- static QString PEBBLED_DBUS_IFACE;
+ Q_PROPERTY(QStringList appSlots READ appSlots NOTIFY appSlotsChanged)
+ Q_PROPERTY(QVariantList allApps READ allApps NOTIFY allAppsChanged)
- Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
- bool enabled() const;
+public:
+ explicit PebbledInterface(QObject *parent = 0);
- Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
+ bool enabled() const;
bool active() const;
-
- Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
bool connected() const;
+ QString name() const;
+ QString address() const;
+ QString appUuid() const;
- Q_PROPERTY(QVariantMap pebble READ pebble NOTIFY pebbleChanged)
- QVariantMap pebble() const;
+ QStringList appSlots() const;
+ QVariantList allApps() const;
- Q_PROPERTY(QString name READ name NOTIFY nameChanged)
- QString name() const;
+ Q_INVOKABLE QVariantMap appInfoByUuid(const QString& uuid) const;
- Q_PROPERTY(QString address READ address NOTIFY addressChanged)
- QString address() const;
+ Q_INVOKABLE QUrl configureApp(const QString &uuid);
+ Q_INVOKABLE bool isAppInstalled(const QString &uuid) const;
-public:
- explicit PebbledInterface(QObject *parent = 0);
+ QImage menuIconForApp(const QUuid &uuid) const;
signals:
void enabledChanged();
void activeChanged();
-
void connectedChanged();
- void pebbleChanged();
void nameChanged();
void addressChanged();
+ void appUuidChanged();
+ void appSlotsChanged();
+ void allAppsChanged();
public slots:
void setEnabled(bool);
@@ -53,16 +62,30 @@ public slots:
void disconnect();
void reconnect();
+ void setAppConfiguration(const QString &uuid, const QString &data);
+
+ void launchApp(const QString &uuid);
+ void uploadApp(const QString &uuid, int slot);
+ void unloadApp(int slot);
+
private slots:
+ void onWatchConnectedChanged();
void getUnitProperties();
void onPropertiesChanged(QString interface, QMap<QString, QVariant> changed, QStringList invalidated);
- void onPebbleChanged();
+ void refreshAppSlots();
+ void refreshAllApps();
private:
QDBusInterface *systemd;
+ OrgPebbledWatchInterface *watch;
QDBusObjectPath unitPath;
+ QVariantMap unitProperties;
- QVariantMap properties;
+ // Cached properties
+ QStringList _appSlots;
+ QVariantList _apps;
+ QHash<QUuid, int> _appsByUuid;
+ QHash<QUuid, QImage> _appMenuIcons;
};
#endif // PEBBLEDINTERFACE_H