diff --git a/__init__.py b/__init__.py index 1980b83..2fb66ea 100644 --- a/__init__.py +++ b/__init__.py @@ -189,9 +189,6 @@ def initialize(self): self.brightness_dict = self.translate_namedvalues("brightness.levels") self.gui["volume"] = 0 - # Prepare GUI Viseme structure - self.gui["viseme"] = {"start": 0, "visemes": []} - store_conf = join(self.file_system.path, 'skill_conf.json') if not self.file_system.exists("skill_conf.json"): self.skill_conf = JsonStorage(store_conf) @@ -201,17 +198,8 @@ def initialize(self): self.skill_conf = JsonStorage(store_conf) try: - # Handle network connection events - self.add_event("mycroft.internet.connected", self.handle_internet_connected) - # Handle the 'busy' visual self.bus.on("mycroft.skill.handler.start", self.on_handler_started) - - self.bus.on("recognizer_loop:sleep", self.on_handler_sleep) - self.bus.on("mycroft.awoken", self.on_handler_awoken) - self.bus.on("enclosure.mouth.reset", self.on_handler_mouth_reset) - self.bus.on("recognizer_loop:audio_output_end", self.on_handler_mouth_reset) - self.bus.on("enclosure.mouth.viseme_list", self.on_handler_speaking) self.bus.on("gui.page.show", self.on_gui_page_show) self.bus.on("gui.page_interaction", self.on_gui_page_interaction) @@ -263,9 +251,6 @@ def initialize(self): self.add_event("system.display.homescreen", self.resting_screen.force_stop) - # Show loading screen while starting up skills. - # self.gui['state'] = 'loading' - # self.gui.show_page('all.qml') # Collect Idle screens and display if skill is restarted self.device_paired = is_paired() @@ -331,18 +316,12 @@ def stop(self, _=None): """Clear override_idle and stop visemes.""" self.log.debug("Stop received") self.resting_screen.stop() - self.gui["viseme"] = {"start": 0, "visemes": []} return False def shutdown(self): """Cleanly shutdown the Skill removing any manual event handlers""" # Gotta clean up manually since not using add_event() self.bus.remove("mycroft.skill.handler.start", self.on_handler_started) - self.bus.remove("recognizer_loop:sleep", self.on_handler_sleep) - self.bus.remove("mycroft.awoken", self.on_handler_awoken) - self.bus.remove("enclosure.mouth.reset", self.on_handler_mouth_reset) - self.bus.remove("recognizer_loop:audio_output_end", self.on_handler_mouth_reset) - self.bus.remove("enclosure.mouth.viseme_list", self.on_handler_speaking) self.bus.remove("gui.page.show", self.on_gui_page_show) self.bus.remove("gui.page_interaction", self.on_gui_page_interaction) self.bus.remove("mycroft.mark2.register_idle", self.resting_screen.on_register) @@ -410,20 +389,6 @@ def on_gui_page_show(self, message): # Set default idle screen timer self.start_idle_event(30) - def on_handler_mouth_reset(self, _): - """ Restore viseme to a smile. """ - pass - - def on_handler_sleep(self, _): - """ Show resting face when going to sleep. """ - self.gui["state"] = "resting" - self.gui.show_page("all.qml") - - def on_handler_awoken(self, _): - """ Show awake face when sleep ends. """ - self.gui["state"] = "awake" - self.gui.show_page("all.qml") - def on_handler_complete(self, message): """ When a skill finishes executing clear the showing page state. """ handler = message.data.get("handler", "") @@ -446,22 +411,6 @@ def on_handler_complete(self, message): # catches the mycroft.skill.handler.complete pass - ##################################################################### - # Manage "speaking" visual - - def on_handler_speaking(self, message): - """Show the speaking page if no skill has registered a page - to be shown in it's place. - """ - if self.device_paired or self.device_backend == "local": - self.gui["viseme"] = message.data - if not self.has_show_page: - self.gui["state"] = "speaking" - self.gui.show_page("all.qml") - # Show idle screen after the visemes are done (+ 2 sec). - viseme_time = message.data["visemes"][-1][1] + 5 - self.start_idle_event(viseme_time) - ##################################################################### # Manage resting screen visual state def cancel_idle_event(self): @@ -495,13 +444,6 @@ def start_idle_event(self, offset=60, weak=False): except Exception as e: self.log.exception(repr(e)) - ##################################################################### - # Manage network - - def handle_internet_connected(self, _): - """ System came online later after booting. """ - self.enclosure.mouth_reset() - ##################################################################### # Web settings diff --git a/setup.py b/setup.py index 158bbbe..ada1540 100755 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ setup( # this is the package name that goes on pip name='ovos-skill-mycroft-gui', - version='0.0.1', + version='0.0.2', description='OVOS mycroft gui skill plugin', url='https://github.com/OpenVoiceOS/skill-ovos-mycroftgui', author='AIIX', diff --git a/ui/Face.qml b/ui/Face.qml deleted file mode 100644 index b82fd69..0000000 --- a/ui/Face.qml +++ /dev/null @@ -1,133 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Item { - id: root - - property bool eyesOpen - property string mouth - property alias mouthItem: mouthItem - - Item { - id: fixedProportionsContainer - - anchors.centerIn: parent - readonly property real proportion: 1.6 - - width: parent.height / parent.width >= proportion ? parent.width : height / 1.6 - height: parent.height / parent.width >= proportion ? width * 1.6 : parent.height - - Item { - anchors { - left: parent.left - top: parent.top - topMargin: parent.height * 0.28 - leftMargin: parent.width * 0.02 - } - - width: parent.width * 0.35 - height: width - Image { - anchors.fill: parent - visible: root.eyesOpen - source: Qt.resolvedUrl("face/Eyeball.svg") - fillMode: Image.PreserveAspectFit - } - Image { - anchors { - left: parent.left - right: parent.right - bottom: parent.bottom - leftMargin: width * 0.001 - rightMargin: width * 0.001 - } - height: width / (sourceSize.width/sourceSize.height) - visible: !root.eyesOpen - source: Qt.resolvedUrl("face/lid.svg") - fillMode: Image.PreserveAspectFit - } - Image { - anchors { - left: parent.left - right: parent.right - top: parent.top - leftMargin: width * 0.001 - rightMargin: width * 0.001 - } - height: width / (sourceSize.width/sourceSize.height) - visible: root.eyesOpen - source: Qt.resolvedUrl("face/upper-lid.svg") - fillMode: Image.PreserveAspectFit - } - } - - Item { - anchors { - right: parent.right - top: parent.top - topMargin: parent.height * 0.28 - rightMargin: parent.width * 0.02 - } - - width: parent.width * 0.35 - height: width - Image { - anchors.fill: parent - visible: root.eyesOpen - source: Qt.resolvedUrl("face/Eyeball.svg") - fillMode: Image.PreserveAspectFit - } - Image { - anchors { - left: parent.left - right: parent.right - bottom: parent.bottom - leftMargin: width * 0.001 - rightMargin: width * 0.001 - } - height: width / (sourceSize.width/sourceSize.height) - visible: !root.eyesOpen - source: Qt.resolvedUrl("face/lid.svg") - fillMode: Image.PreserveAspectFit - } - Image { - anchors { - left: parent.left - right: parent.right - top: parent.top - leftMargin: width * 0.001 - rightMargin: width * 0.001 - } - height: width / (sourceSize.width/sourceSize.height) - visible: root.eyesOpen - source: Qt.resolvedUrl("face/upper-lid.svg") - fillMode: Image.PreserveAspectFit - } - } - - Item { - id: mouthItem - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - bottomMargin: parent.height * 0.26 - } - width: parent.width / 2 - height: smile.implicitHeight - Image { - id: smile - anchors { - left: parent.left - right: parent.right - verticalCenter: parent.verticalCenter - } - fillMode: Image.PreserveAspectFit - source: Qt.resolvedUrl("face/" + root.mouth) - } - } - } -} diff --git a/ui/VolumeBar.qml b/ui/VolumeBar.qml deleted file mode 100644 index f8392e9..0000000 --- a/ui/VolumeBar.qml +++ /dev/null @@ -1,27 +0,0 @@ -import QtQuick 2.4 -import QtQuick.Layouts 1.4 - -Item { - property real strength - - Layout.fillWidth: true - Layout.fillHeight: true - - Rectangle { - anchors.centerIn: parent - width: parent.width/3*2 - radius: width - height: getLength(sessionData.volume, strength) - color: "#40DBB0" - opacity: getOpacity(sessionData.volume) - - Behavior on height { - PropertyAnimation { - property: "height" - duration: 50 - easing.type: Easing.InOutQuad - } - } - } -} - diff --git a/ui/awake.qml b/ui/awake.qml deleted file mode 100644 index da3b78d..0000000 --- a/ui/awake.qml +++ /dev/null @@ -1,11 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Face { - eyesOpen: true - mouth: "Smile.svg" -} diff --git a/ui/face/Eyeball.svg b/ui/face/Eyeball.svg deleted file mode 100644 index 4f88a5d..0000000 --- a/ui/face/Eyeball.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ui/face/GreySmile.svg b/ui/face/GreySmile.svg deleted file mode 100644 index 604742a..0000000 --- a/ui/face/GreySmile.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ui/face/Smile.svg b/ui/face/Smile.svg deleted file mode 100644 index 6e02be9..0000000 --- a/ui/face/Smile.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ui/face/lid.svg b/ui/face/lid.svg deleted file mode 100644 index dc6a0b7..0000000 --- a/ui/face/lid.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ui/face/thinking.json b/ui/face/thinking.json deleted file mode 100644 index 06b7d35..0000000 --- a/ui/face/thinking.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.3.4","fr":60,"ip":0,"op":286,"w":480,"h":800,"nm":"thinking 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"earth","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":-14,"s":[0],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p833_1_0p333_0"],"t":1,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p833_1_0p167_0"],"t":241,"s":[100],"e":[0]},{"t":256}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[239.36,419.36,0],"ix":2},"a":{"a":0,"k":[113.073,113.073,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-29.547],[-29.547,0],[0,29.547],[29.547,0]],"o":[[0,29.547],[29.547,0],[0,-29.547],[-29.547,0]],"v":[[-53.5,0],[0,53.5],[53.5,0],[0,-53.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431606,0.886274516582,0.333333343267,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":24,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[113.5,113.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Right","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-29.547],[-29.547,0],[0,29.547],[29.547,0]],"o":[[0,29.547],[29.547,0],[0,-29.547],[-29.547,0]],"v":[[-53.5,0],[0,53.5],[53.5,0],[0,-53.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431606,0.886274516582,0.333333343267,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":24,"ix":5},"lc":2,"lj":2,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[113.5,113.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":1,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":226,"s":[0],"e":[0]},{"t":241}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":1,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":226,"s":[100],"e":[0]},{"t":241}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":1,"s":[269],"e":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":16,"s":[90],"e":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":226,"s":[90],"e":[269]},{"t":241}],"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":-14,"op":286,"st":-78,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Moon","sr":1,"ks":{"o":{"a":1,"k":[{"t":-14,"s":[0],"h":1},{"t":16,"s":[100],"h":1},{"t":227,"s":[0],"h":1}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":41,"s":[0],"e":[360]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":81,"s":[360],"e":[360]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":102,"s":[360],"e":[720]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":142,"s":[720],"e":[720]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"n":["0p667_1_0p333_0"],"t":163,"s":[720],"e":[1080]},{"t":207}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":16,"s":[242,505,0],"e":[240,337,0],"to":[-0.33341345191002,-28,0],"ti":[0.33341345191002,14.1666669845581,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":31,"s":[240,337,0],"e":[240,420,0],"to":[-0.33341345191002,-14.1666669845581,0],"ti":[0,-13.8333330154419,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":41,"s":[240,420,0],"e":[240,420,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":81,"s":[240,420,0],"e":[240,337,0],"to":[0,-13.8333330154419,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":92,"s":[240,337,0],"e":[240,420,0],"to":[0,0,0],"ti":[0,-13.8333330154419,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":102,"s":[240,420,0],"e":[240,420,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":142,"s":[240,420,0],"e":[240,337,0],"to":[0,-13.8333330154419,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":153,"s":[240,337,0],"e":[240,420,0],"to":[0,0,0],"ti":[0,-13.8333330154419,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"n":"0p667_0p667_0p333_0p333","t":163,"s":[240,420,0],"e":[240,420,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":207,"s":[240,420,0],"e":[240,337,0],"to":[0,-13.8333330154419,0],"ti":[0,-14.1666669845581,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"n":"0p667_1_0p333_0","t":217,"s":[240,337,0],"e":[240,505,0],"to":[0,14.1666669845581,0],"ti":[0,-28,0]},{"t":227}],"ix":2},"a":{"a":0,"k":[12.251,123.251,0],"ix":1},"s":{"a":0,"k":[150,150,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.001,-6.903],[6.904,-0.001],[0.001,6.903],[-6.904,0.001]],"o":[[0.001,6.903],[-6.903,0.001],[-0.001,-6.904],[6.903,-0.001]],"v":[[12.5,-0.002],[0.002,12.5],[-12.5,0.003],[-0.002,-12.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.133333340287,0.654901981354,0.941176474094,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.751,12.751],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-14,"op":286,"st":-58,"bm":0},{"ddd":0,"ind":3,"ty":1,"nm":"Black Solid 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240,400,0],"ix":2},"a":{"a":0,"k":[240,400,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":480,"sh":800,"sc":"#000000","ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/ui/face/upper-lid.svg b/ui/face/upper-lid.svg deleted file mode 100644 index 928c250..0000000 --- a/ui/face/upper-lid.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ui/listening.qml b/ui/listening.qml deleted file mode 100644 index d19e52e..0000000 --- a/ui/listening.qml +++ /dev/null @@ -1,60 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Item { - id: root - - property var volume: sessionData.volume - - function getOpacity(volume) { - if (volume < 2) - return 0.7; - else if (volume < 5) - return 0.8; - else if (volume < 8) - return 0.9; - else - return 1.0; - } - - function getLength(volume, pos) { - var val = (volume * 2) * pos; - if (val < 0) - val = 0; - else if (val > 15) - val = 15; - return 36 + 36 * val; - } - - - RowLayout { - id: frame1 - anchors.centerIn: parent - //Spacing is faked by items black space - spacing: 0 - // Dynamic sizing of 4/6 of the screen size - width: Math.min(root.width, root.height)/6 * 4 - height: width - visible: true - - VolumeBar { - strength: 0.5 - } - VolumeBar { - strength: 0.75 - } - VolumeBar { - strength: 1 - } - VolumeBar { - strength: 0.75 - } - VolumeBar { - strength: 0.5 - } - } -} diff --git a/ui/loading.qml b/ui/loading.qml deleted file mode 100644 index 9d2a22a..0000000 --- a/ui/loading.qml +++ /dev/null @@ -1,28 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Item { - id: root - - Mycroft.AutoFitLabel { - font.weight: Font.Bold - Layout.fillWidth: true - Layout.preferredHeight: proportionalGridUnit * 40 - rightPadding: -font.pixelSize * 0.1 - font.family: "Noto Sans" - font.pixelSize: 50 - color: "#22a7f0" - text: "Loading..." - } - - BusyIndicator { - anchors.centerIn: parent - width: root.contentWidth / 2 - height: root.contentWidth / 2 - running: true - } -} diff --git a/ui/resting.qml b/ui/resting.qml deleted file mode 100644 index ca8677f..0000000 --- a/ui/resting.qml +++ /dev/null @@ -1,11 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Face { - eyesOpen: false - mouth: "GreySmile.svg" -} diff --git a/ui/ring_ball.gif b/ui/ring_ball.gif deleted file mode 100644 index 77ad939..0000000 Binary files a/ui/ring_ball.gif and /dev/null differ diff --git a/ui/speaking.qml b/ui/speaking.qml deleted file mode 100644 index 1e57437..0000000 --- a/ui/speaking.qml +++ /dev/null @@ -1,90 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami - -import Mycroft 1.0 as Mycroft - -Item { - id: root - - property bool speaking: false - property int ref_size: Math.min(root.width, root.height) / 2 - - property var startViseme: sessionData.viseme.start - onStartVisemeChanged: { - root.speaking = true; - } - - function getVisemeImg(viseme){ - return "face/" + viseme + ".svg" - } - - function getVisemeWidth(viseme){ - switch (viseme) { - case "0": return ref_size; - case "1": return 13 / 29 * ref_size; - case "2": return 25 / 29 * ref_size; - case "3": return 17 / 29 * ref_size; - case "4": return 6 / 29 * ref_size; - case "5": return 11 / 29 * ref_size; - case "6": return 9 / 29 * ref_size; - } - } - - Rectangle { - id: mouth_viseme - visible: root.speaking - parent: root - anchors.centerIn: parent - width: 40 - onWidthChanged: stopTimer.restart() - height: width - radius: width / 2 - color: "black" - border.color: "white" - border.width: 20 / 290 * ref_size - Behavior on width { - PropertyAnimation { - property: "width" - duration: 50 - easing.type: Easing.InOutQuad - } - } - } - - Timer { - id: stopTimer - interval: 500 - onTriggered: { - root.speaking = false - } - } - - Timer { - id: tmr - interval: 50 // every 50 ms - running: root.speaking - repeat: true - onTriggered: { - var now = Date.now() / 1000; - var start = sessionData.viseme.start; - var offset = start; - // Compare viseme start/stop with current time and choose viseme - // appropriately - for (var i = 0; i < sessionData.viseme.visemes.length; i++) { - if (sessionData.viseme.start == 0) - break; - if (now >= offset && - now < start + sessionData.viseme.visemes[i][1]) - { - mouth_viseme.width = getVisemeWidth(sessionData.viseme.visemes[i][0]); - offset = start + sessionData.viseme.visemes[i][1]; - return - } - } - // Outside of span show default smile - //return Qt.resolvedUrl(getVisemeImg("Smile")); - } - } -} diff --git a/ui/thinking.qml b/ui/thinking.qml deleted file mode 100644 index 936e57e..0000000 --- a/ui/thinking.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick.Layouts 1.4 -import QtQuick 2.4 -import QtQuick.Controls 2.0 -import org.kde.kirigami 2.4 as Kirigami -import org.kde.plasma.components 3.0 as PlasmaComponents3 - -import Mycroft 1.0 as Mycroft -import org.kde.lottie 1.0 - -Item { - id: "thinking" - - LottieAnimation { - id: thinkingAnimation - anchors.centerIn: parent - height: Math.min(parent.width, parent.height) - source: Qt.resolvedUrl("face/thinking.json") - loops: Animation.Infinite - fillMode: Image.PreserveAspectFit - running: true - } -}