aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/src/chromecontroller.h
diff options
context:
space:
mode:
authorNaveen Bobbili <nbobbili@amazon.com>2019-04-28 20:51:16 -0700
committerJan-Simon Möller <jsmoeller@linuxfoundation.org>2019-11-12 15:32:46 +0100
commit0349f05f5885987952a2d8de03983b36722b264e (patch)
tree95c2f3a30447831deda72625c8a60f077ac671ee /homescreen/src/chromecontroller.h
parent0bdd39b247661c1a0406d450d578d4ff3fd171b0 (diff)
Add push to talk support to homescreen
Reworked version of Alexa specific changes from ICS to add push to talk button for voice services to homescreen media area. v2: change config.xml to audiomixer v3: reworked to not be Alexa specific: - Now use the default voiceagent if available, instead of hard-coding Alexa usage - The Alexa logo for the button has been replaced with a generic microphone icon derived from the radio application's launcher icon. This is a placeholder until a new icon is provided by LF graphics team. Meeting any Amazon requirements around Alexa chrome is now envisioned as being provided for with a TBD voiceagent API enhancement. - The QML for the PTT button has been moved to MediaAreaBlank.qml, which seems a more logical location for it ATM. It is likely that the MediaArea QML should be simplified in a future change, as it currently contains a signficant amount of unused code. - The PTT button has been moved to the left hand side of the media area, as this seems more sensible if demonstrating driver usage. - The delay on fade-out of the master volume slider has been lowered to 3 seconds from 5, with the PTT button present it started seeming excessive during testing. - Some extra debug messages have been added to make tracking the voiceagent state more straightforward. Bug-AGL: SPEC-2764, Signed-off-by: Naveen Bobbili <nbobbili@amazon.com> Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I398bf7aebc5c9b459b1fce94511eee3698c08347
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;
+};