aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/src/chromecontroller.h
diff options
context:
space:
mode:
Diffstat (limited to 'homescreen/src/chromecontroller.h')
-rw-r--r--homescreen/src/chromecontroller.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/homescreen/src/chromecontroller.h b/homescreen/src/chromecontroller.h
new file mode 100644
index 0000000..2a76002
--- /dev/null
+++ b/homescreen/src/chromecontroller.h
@@ -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;
+};