Add push to talk support to homescreen
[apps/homescreen.git] / homescreen / src / chromecontroller.h
diff --git a/homescreen/src/chromecontroller.h b/homescreen/src/chromecontroller.h
new file mode 100644 (file)
index 0000000..2a76002
--- /dev/null
@@ -0,0 +1,42 @@
+#pragma once
+
+#include <QObject>
+#include <QUrl>
+
+class AglSocketWrapper;
+class ChromeController : public QObject
+{
+    Q_OBJECT
+
+    Q_PROPERTY(bool agentPresent READ agentPresent NOTIFY agentPresentChanged)
+    Q_PROPERTY(int chromeState READ chromeState NOTIFY chromeStateChanged)
+
+public:
+    enum ChromeState {
+        Idle = 0,
+        Listening,
+        Thinking,
+        Speaking,
+        MicrophoneOff
+    };
+    Q_ENUM(ChromeState)
+
+    explicit ChromeController(const QUrl &bindingUrl, QObject *parent = nullptr);
+    bool agentPresent() const { return m_agentPresent; }
+    int chromeState() const { return m_chromeState; }
+
+public slots:
+    void pushToTalk();
+
+signals:
+    void agentPresentChanged();
+    void chromeStateChanged();
+
+private:
+    void setChromeState(ChromeState state);
+
+    AglSocketWrapper *m_aglSocket;
+    QString m_voiceAgentId;
+    bool m_agentPresent = false;
+    ChromeState m_chromeState = Idle;
+};