From 9a5f0643ee45beb141e9221343bfa4e2e03032fc Mon Sep 17 00:00:00 2001 From: jarbasal Date: Thu, 27 Aug 2020 09:33:57 +0100 Subject: [PATCH 01/13] gui play video common play --- mycroft/enclosure/gui.py | 32 +++ mycroft/res/ui/SYSTEM_VideoPlayer.qml | 192 +++++++++++++ mycroft/res/ui/SeekControl.qml | 272 ++++++++++++++++++ mycroft/res/ui/images/back.png | Bin 0 -> 1772 bytes mycroft/res/ui/images/history.png | Bin 0 -> 2186 bytes mycroft/res/ui/images/home.png | Bin 0 -> 1446 bytes mycroft/res/ui/images/information.png | Bin 0 -> 2708 bytes mycroft/res/ui/images/media-album-track.svg | 13 + .../res/ui/images/media-playback-pause.svg | 61 ++++ .../res/ui/images/media-playback-start.svg | 61 ++++ .../res/ui/images/media-playlist-repeat.svg | 13 + .../res/ui/images/media-playlist-shuffle.svg | 13 + .../res/ui/images/media-repeat-playlist.svg | 13 + mycroft/res/ui/images/media-repeat-track.svg | 13 + mycroft/res/ui/images/media-skip-backward.svg | 13 + mycroft/res/ui/images/media-skip-forward.svg | 13 + mycroft/res/ui/images/search.png | Bin 0 -> 2385 bytes mycroft/res/ui/images/spinner.gif | Bin 0 -> 97623 bytes mycroft/skills/mycroft_skill/mycroft_skill.py | 33 +++ 19 files changed, 742 insertions(+) create mode 100644 mycroft/res/ui/SYSTEM_VideoPlayer.qml create mode 100644 mycroft/res/ui/SeekControl.qml create mode 100644 mycroft/res/ui/images/back.png create mode 100644 mycroft/res/ui/images/history.png create mode 100644 mycroft/res/ui/images/home.png create mode 100644 mycroft/res/ui/images/information.png create mode 100644 mycroft/res/ui/images/media-album-track.svg create mode 100644 mycroft/res/ui/images/media-playback-pause.svg create mode 100644 mycroft/res/ui/images/media-playback-start.svg create mode 100644 mycroft/res/ui/images/media-playlist-repeat.svg create mode 100644 mycroft/res/ui/images/media-playlist-shuffle.svg create mode 100644 mycroft/res/ui/images/media-repeat-playlist.svg create mode 100644 mycroft/res/ui/images/media-repeat-track.svg create mode 100644 mycroft/res/ui/images/media-skip-backward.svg create mode 100644 mycroft/res/ui/images/media-skip-forward.svg create mode 100644 mycroft/res/ui/images/search.png create mode 100644 mycroft/res/ui/images/spinner.gif diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 6a667cc538dc..ff664e9e0afb 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -38,6 +38,7 @@ def __init__(self, skill): self.skill = skill self.on_gui_changed_callback = None self.config = Configuration.get() + self.video_info = None @property def remote_url(self): @@ -339,6 +340,37 @@ def show_url(self, url, override_idle=None, self.show_page("SYSTEM_UrlFrame.qml", override_idle, override_animations) + def play_video(self, url, title="", override_idle=True): + """ Play video stream """ + self["playStatus"] = "play" + self["video"] = url + self["title"] = title + self.video_info = {"title": title, "url": url} + self.show_page("SYSTEM_VideoPlayer.qml", + override_idle=override_idle) + + @property + def is_playing_video(self): + return self.video_info is not None + + def pause_video(self): + """Pause video playback.""" + if self.is_playing_video: + self["playStatus"] = "pause" + + def stop_video(self): + """Stop video playback.""" + # TODO detect end of media playback from gui + if self.is_playing_video: + self["playStatus"] = "stop" + self.clear() + self.video_info = None + + def resume_video(self): + """Resume paused video playback.""" + if self.__session_data.get("playStatus", "stop") == "pause": + self["playStatus"] = "play" + def shutdown(self): """Shutdown gui interface. diff --git a/mycroft/res/ui/SYSTEM_VideoPlayer.qml b/mycroft/res/ui/SYSTEM_VideoPlayer.qml new file mode 100644 index 000000000000..1ffc4a626728 --- /dev/null +++ b/mycroft/res/ui/SYSTEM_VideoPlayer.qml @@ -0,0 +1,192 @@ +import QtMultimedia 5.12 +import QtQuick.Layouts 1.4 +import QtQuick 2.9 +import QtQuick.Controls 2.12 as Controls +import org.kde.kirigami 2.10 as Kirigami +import QtQuick.Window 2.3 +import QtGraphicalEffects 1.0 + +import Mycroft 1.0 as Mycroft +import "." as Local + +Mycroft.Delegate { + id: root + + property var videoSource: sessionData.video + property var videoStatus: sessionData.playStatus + property var videoThumb: sessionData.videoThumb + property var videoTitle: sessionData.title + + //The player is always fullscreen + fillWidth: true + background: Rectangle { + color: "black" + } + leftPadding: 0 + topPadding: 0 + rightPadding: 0 + bottomPadding: 0 + + onEnabledChanged: syncStatusTimer.restart() + onVideoSourceChanged: syncStatusTimer.restart() + Component.onCompleted: { + syncStatusTimer.restart() + } + + Keys.onDownPressed: { + controlBarItem.opened = true + controlBarItem.forceActiveFocus() + } + + onFocusChanged: { + console.log("focus changed") + video.forceActiveFocus(); + } + + Connections { + target: Window.window + onVisibleChanged: { + if(video.playbackState == MediaPlayer.PlayingState) { + video.stop() + } + } + } + + + // Sometimes can't be restarted reliably immediately, put it in a timer + Timer { + id: syncStatusTimer + interval: 0 + onTriggered: { + if (enabled && videoStatus == "play") { + video.play(); + } else if (videoStatus == "stop") { + video.stop(); + } else { + video.pause(); + } + } + } + + Timer { + id: delaytimer + } + + function delay(delayTime, cb) { + delaytimer.interval = delayTime; + delaytimer.repeat = false; + delaytimer.triggered.connect(cb); + delaytimer.start(); + } + + controlBar: Local.SeekControl { + id: seekControl + anchors { +// left: parent.left +// right: parent.right + bottom: parent.bottom + } + title: videoTitle + videoControl: video + duration: video.duration + playPosition: video.position + onSeekPositionChanged: video.seek(seekPosition); + z: 1000 + } + + Item { + id: videoRoot + anchors.fill: parent + + Rectangle { + id: infomationBar + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + visible: false + color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.6) + implicitHeight: vidTitle.implicitHeight + Kirigami.Units.largeSpacing * 2 + z: 1001 + + onVisibleChanged: { + delay(15000, function() { + infomationBar.visible = false; + }) + } + + Controls.Label { + id: vidTitle + visible: true + maximumLineCount: 2 + wrapMode: Text.Wrap + anchors.left: parent.left + anchors.leftMargin: Kirigami.Units.largeSpacing + anchors.verticalCenter: parent.verticalCenter + text: videoTitle + z: 100 + } + } + + Image { + id: thumbart + anchors.fill: parent + fillMode: Image.PreserveAspectFit + source: root.videoThumb + enabled: root.videoStatus == "stop" ? 1 : 0 + visible: root.videoStatus == "stop" ? 1 : 0 + } + + Video { + id: video + anchors.fill: parent + focus: true + autoLoad: true + autoPlay: false + source: videoSource + readonly property string currentStatus: root.enabled ? root.videoStatus : "pause" + + onFocusChanged: { + if(focus){ + console.log("focus in video") + } + } + + onCurrentStatusChanged: { + switch(currentStatus){ + case "stop": + video.stop(); + break; + case "pause": + video.pause() + break; + case "play": + video.play() + delay(6000, function() { + infomationBar.visible = false; + }) + break; + } + } + + Keys.onReturnPressed: { + video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play() + } + + Keys.onDownPressed: { + controlBarItem.opened = true + controlBarItem.forceActiveFocus() + } + + MouseArea { + anchors.fill: parent + onClicked: { + controlBarItem.opened = !controlBarItem.opened + } + } + + onStatusChanged: { + console.log("Status Changed") + } + } + } +} diff --git a/mycroft/res/ui/SeekControl.qml b/mycroft/res/ui/SeekControl.qml new file mode 100644 index 000000000000..fd12eda0a4fc --- /dev/null +++ b/mycroft/res/ui/SeekControl.qml @@ -0,0 +1,272 @@ +import QtMultimedia 5.12 +import QtQuick.Layouts 1.4 +import QtQuick 2.9 +import QtQuick.Controls 2.12 as Controls +import org.kde.kirigami 2.10 as Kirigami +import QtQuick.Templates 2.2 as Templates +import QtGraphicalEffects 1.0 + +import Mycroft 1.0 as Mycroft + +Item { + id: seekControl + property bool opened: false + property int duration: 0 + property int playPosition: 0 + property int seekPosition: 0 + property bool enabled: true + property bool seeking: false + property var videoControl + property string title + + clip: true + implicitWidth: parent.width + implicitHeight: mainLayout.implicitHeight + Kirigami.Units.largeSpacing * 2 + opacity: opened + + onOpenedChanged: { + if (opened) { + hideTimer.restart(); + } + } + + onFocusChanged: { + if(focus) { + backButton.forceActiveFocus() + } + } + + Timer { + id: hideTimer + interval: 5000 + onTriggered: { + seekControl.opened = false; + videoRoot.forceActiveFocus(); + } + } + + Rectangle { + width: parent.width + height: parent.height + color: Qt.rgba(0, 0, 0, 0.8) + //color: "white" + y: opened ? 0 : parent.height + + ColumnLayout { + id: mainLayout + + anchors { + fill: parent + margins: Kirigami.Units.largeSpacing + } + + RowLayout { + id: mainLayout2 + Layout.fillHeight: true + Controls.RoundButton { + id: backButton + Layout.preferredWidth: parent.width > 600 ? Kirigami.Units.iconSizes.large : Kirigami.Units.iconSizes.medium + Layout.preferredHeight: Layout.preferredWidth + highlighted: focus ? 1 : 0 + z: 1000 + + background: Rectangle { + radius: 200 + color: Qt.rgba(0, 0, 0, 0.9) + border.width: 1 + border.color: "white" + } + + contentItem: Item { + Image { + width: parent.width > 600 ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.small + height: width + anchors.centerIn: parent + source: "images/back.png" + } + } + + onClicked: { + Mycroft.MycroftController.sendRequest("mycroft.gui.screen.close", {}); + video.stop(); + } + KeyNavigation.up: video + KeyNavigation.right: button + Keys.onReturnPressed: { + hideTimer.restart(); + Mycroft.MycroftController.sendRequest("mycroft.gui.screen.close", {}); + video.stop(); + } + onFocusChanged: { + hideTimer.restart(); + } + } + Controls.RoundButton { + id: button + Layout.preferredWidth: parent.width > 600 ? Kirigami.Units.iconSizes.large : Kirigami.Units.iconSizes.medium + Layout.preferredHeight: Layout.preferredWidth + highlighted: focus ? 1 : 0 + z: 1000 + + background: Rectangle { + radius: 200 + color: Qt.rgba(0, 0, 0, 0.9) + border.width: 1 + border.color: "white" + } + + contentItem: Item { + Image { + width: parent.width > 600 ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.small + height: width + anchors.centerIn: parent + source: videoControl.playbackState === MediaPlayer.PlayingState ? "images/media-playback-pause.svg" : "images/media-playback-start.svg" + } + } + + onClicked: { + video.playbackState === MediaPlayer.PlayingState ? video.pause() : video.play(); + hideTimer.restart(); + } + KeyNavigation.up: video + KeyNavigation.left: backButton + KeyNavigation.right: slider + Keys.onReturnPressed: { + video.playbackState === MediaPlayer.PlayingState ? video.pause() : video.play(); + hideTimer.restart(); + } + onFocusChanged: { + hideTimer.restart(); + } + } + + Templates.Slider { + id: slider + Layout.fillWidth: true + Layout.alignment: Qt.AlignVCenter + implicitHeight: Kirigami.Units.gridUnit + value: seekControl.playPosition + from: 0 + to: seekControl.duration + z: 1000 + property bool navSliderItem + property int minimumValue: 0 + property int maximumValue: 20 + onMoved: { + seekControl.seekPosition = value; + hideTimer.restart(); + } + + onNavSliderItemChanged: { + if(slider.navSliderItem){ + recthandler.color = "red" + } else if (slider.focus) { + recthandler.color = Kirigami.Theme.linkColor + } + } + + onFocusChanged: { + if(!slider.focus){ + recthandler.color = Kirigami.Theme.textColor + } else { + recthandler.color = Kirigami.Theme.linkColor + } + } + + handle: Rectangle { + id: recthandler + x: slider.position * (parent.width - width) + implicitWidth: Kirigami.Units.gridUnit + implicitHeight: implicitWidth + radius: width + color: Kirigami.Theme.textColor + } + background: Item { + Rectangle { + id: groove + anchors { + verticalCenter: parent.verticalCenter + left: parent.left + right: parent.right + } + radius: height + height: Math.round(Kirigami.Units.gridUnit/3) + color: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.3) + Rectangle { + anchors { + left: parent.left + top: parent.top + bottom: parent.bottom + } + radius: height + color: Kirigami.Theme.highlightColor + width: slider.position * (parent.width - slider.handle.width/2) + slider.handle.width/2 + } + } + + Controls.Label { + anchors { + left: parent.left + top: groove.bottom + topMargin: Kirigami.Units.smallSpacing + } + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + text: formatTime(playPosition) + color: "white" + } + + Controls.Label { + anchors { + right: parent.right + top: groove.bottom + topMargin: Kirigami.Units.smallSpacing + } + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + text: formatTime(duration) + } + } + KeyNavigation.up: video + KeyNavigation.left: button + Keys.onReturnPressed: { + hideTimer.restart(); + if(!navSliderItem){ + navSliderItem = true + } else { + navSliderItem = false + } + } + + Keys.onLeftPressed: { + console.log("leftPressedonSlider") + hideTimer.restart(); + if(navSliderItem) { + video.seek(video.position - 5000) + } else { + button.forceActiveFocus() + } + } + + Keys.onRightPressed: { + hideTimer.restart(); + if(navSliderItem) { + video.seek(video.position + 5000) + } + } + } + + } + } + } + + + function formatTime(timeInMs) { + if (!timeInMs || timeInMs <= 0) return "0:00" + var seconds = timeInMs / 1000; + var minutes = Math.floor(seconds / 60) + seconds = Math.floor(seconds % 60) + if (seconds < 10) seconds = "0" + seconds; + return minutes + ":" + seconds + } +} diff --git a/mycroft/res/ui/images/back.png b/mycroft/res/ui/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..6955e2e18698e6eed206f5139313e7f5068d268c GIT binary patch literal 1772 zcmV>0zi%HedC$x+9UCVtO%jVz=psl(cf^E}3c5pxLSI(fgPqtiH@IcKl+_GbqN64BYKbnWx5Kl5kU4Da)-^?iHK zzJ$Q~&r4Ou0hrDt>J$Ds$VydbGLbqd5ecd~9RIFaA%p;cAr-jmgQ^Y%AcqkEsyh3h z-(wXJzK9G0P{9#ORp(NIf)#)$A_D-l<0wj17f^!Yzz+cW0%*lCl&Zc#2?{Xw(=_b~ zU_SuGF_x;nM+qEvezjWd24Ht*;MYj7jA=UT{BpTm0AK_KuE@E`;w7{&)lUd(t%RPWb+I`(q8peoLCBy$IhI_@Jtz4B-DM zBK?YTktfyzd=UvDgfo*Q*_iWCWmRp6G44x}q!8JZ>Y?*P2n`whJk(NEZHzJQEeiY) zLg-R(_z}Rs41Ou!p>%kRaaWPxhnyX8qVM!0fc{C6{2oH+mh)I6V~ksh2EWLsc>zEl z00#~Jtvi~DI$QJ8H0=RkU!I3GGx+B-QD^Y0)oND&yYj*Za1j%A2EV<%Jpr(lPwLho z{A}&tXaN5jCh8OZPX_R(Fj1fIe=ykX-^xUN!vD$u{yj|8*?E5U^K%3E_c2k2ov*6P z4c7cenW)3gSJfp3o&O9I_1XDv8o-~!M18LL3k=}TuRSKq&)9#_0RE!dX~Oa|{%0G& zf0yumPJmek@INGcpPm1p!KvOSgzppnGz0jn2;V3C+YR7P!G(Cy%{q6S07>xY`0D2RC z=PDj2@F9e7c8qaD&O;qi)rKTV4#XHqvlI2dKkJk|sXNR7eut_y#TX9~e&?%n96En+ zk|fPJ#GscK^gVF%$m5};Hn1ptj9gzmXFE-~I8 zW8}pir#t_14R-!e)t73P6_zsz&N7l-avvKylu?41YcX+I|!f`|99Y5f|Ujmw1`MQP6DSAsOk!%uYL@m z1b!u0Y9K+ohz!c^QDk|knm2~LV<16AL>f2={7!;J1`?zq(nJaTZVcxe-CZ=2sXAQ_ z0L(R#U<_0ByBy3mlHdZS>UR=60h_v*srr@SAtMPUGEKkB!VDt`u4bBkC&ArD5=>^A zekZ{#MjOMaOw;cqm|`Ts9Zb`&1lJl#FpX*YmEbZX31%`)zY<(xv@v{~Y5J95oY5qB zw)P?v%h%b#SR)DMPy)Xaj51mdUZDhjB^VAs3?{+C?05{-Q;A3rk)Z%81`;f$1U@%~ zK}1dm@RxxE?{hiuxfBEdrvhj*kYG6{flmpdh@70gdpPgo>7Q{DI9(0^^ak*UfdpT2 z5;$EB(lqS>U>CnzRL2rjtJSUmwi-yVmJ&FXpj)KHIQIiwOZ}QN#Iw4Zw(~aoozB1tWybA8N8!lAAmlb1b!v>)IfrRBGR7{ zIJ{Vt$*{~|IXEOD11W*iNua7r3?wK67)%NLO7NC}1XU3^gA(}N6TE73hnbFGs(vTI zJU*VzN$^76cNPI?Vxqp!4xa98^NUC$_W{L_;jvDP{t<*o&>iYf&X|WR3DSzro+IWz+~!6f=M;-uV5neDZzCBZa9(troREs0iaTd-G=o5 O0000~P)^FaiKsol9-4J z28oHpT|uEpB}$AKFjc`QAP8>MP!Odn-Dy96^tHBSX5L-qE`|I3d-uLO=bUfOY-i34 z5F$i~5FtW@2oWMgh!7z{gzyRsh#rQwMz@J$63#;=axn&Z7>-=@NAHe5oj@5%@iX>f zFDg)ORGlFNbQnJqcVaxU&=;u*KdM1Fj-eRqj6Zt3voo8M`4;Ws2p4lC(}L7^tWYqF zAM+@kqLKUg6nhQ@1i%zt!Oy7|PjWyH@dQrg4{V`+RPk;04mbt8nCs~-?qQz*lE60C zU%_g+k6$<;U=$Dl2XPm@!*fgv3<(6l2U$yR@f(NQr@+u>ya7hB3iB*|R*xE-L=#To z6j~5L1SyCj12IG_l+ub>##Y~Ff=tEtxXkq5x8r@3pc*x(K{HMntpLDeq#%kIV(5o_ z%)wyO{J&@v(A$}PH`gC%a;kHbMa)mMBx--ozFfdvtTI*d3pD&|{X==egovMO&=lWOwU;0Qii8 zf?`+Y6HMZEY3)~VnEMM90^r>W3a)oe2LfQeV$8qP!%p~NMNg38rtmtc`B!+iJS70G zlv1$4J;AR_h2H1GO!O0pE_J-bo%TOK8t+-|%Tzp*WfFb1Ch|tZx-hshjh2rS5-`jncZoK_p6yZ<(Z2ms0RX`3Bo*_D)=`NwBx2^i_0I5RlC8gxc-Z))BH$T>s2u00@vy(5pCzn!3O}LILkOC{w2g z0AQt1!+bsU-(M1&9T^}39u;c%jvfNWiMJ@73^SUW062v8qT~wM7uGt5$-<|r0snR+ zPMg^uLz&=3Du?PIK-`kH1!;rYsKr6yi&+i{AOK7gyf}{I2o^pNKAq~k2S^k40DGK` zvHE9ilDWzrI&K1EgijB*?dt}p5ma?qV7DV3F{cEGS5>sE6LNpUV)F}bIO$+lImF7GAq%PyU8p3S` zqbb3li+G0lhRN-369-cMRums<2=P;9vQdZ_&LVZS=TTfrkdbWCHzN8H`@&iWfQy|nNa@$6W7c4QaI9Dsm*~9U+JU|p0{hK*fig4lu zR?Kgc^^2mkHO#e4fas9M?~GZCt=aX0CDz=Q0GP_#75RTBSZJkFlr4v?JCYqQD73Xd z2!JVEuaI|umzyPl^MoaQXh$ilUQlSa=Z@$9U8YEWYvH!GoWq1=6$`&#XiqUKUQnoG z6O!|#$qpoWKVxbsOy_UHFNfHy7t>y#!Tk7nqbxqHJRdS!m1Zvqi#Iq?%ZwKkLTfrK z^SE0rP5Nbl@Qb&dsguYHmg>z5i)Vt)V7a6>h$_AlZ;j1#s*=hJmb#G^7w;C=vgR~- zcPN^`4MGhoIneo@o6HNAx||X_l%I8xcaW)4^JUxPKWT|d2)$sL7fF%4g}--5oTm8S z7)gS}W4hX9cQ5e9d;rYg0+QrvnM4BMW|vcBx_QAek5giESi~H;M9!4-Q7>!Lvx^rj z_x8Xlm61z=G06l-Z<<`(3tGK4-$cbcB&q)r&54q1>ui#O73<_x(m{HnJA4PL_A{lY zR*QS&ogHV5GBxQW{Dyu~$6(*+85Bn;4gNI&|1 z-YBg7|Ix%990xeMLZg7C34^n1{ObG$Dx>-B*uiU<1(+qG;}Vs@yqEu)D1RgUNk}08 z_T#T6uSVR=*7n_{7!6d=Bfi1;G%GwXem}n4b1?~7$V6Jgk7`hkGHk&*qtq?E{JCD=zhMj#it z=+p6+e{d9~*oS@ChYFM%)n{->J4A>OAwq-*5h6s05FtW@2;mF<1Mt4vd;Ei49{>OV M07*qoM6N<$f^0wjp#T5? literal 0 HcmV?d00001 diff --git a/mycroft/res/ui/images/home.png b/mycroft/res/ui/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..c6fdf598b3bd717bc1520ac7fd7ad521484e55af GIT binary patch literal 1446 zcmb7^`!^GO9LK+#&1@rD%G?^6p>!Q`sW#V<%cGP_n=CT-OA+O98Eqmxu01VLi?EZ0 zqEHG?O9=5ix#hO4JcpxVJ#$=#hkxKX=Q*GA{=DDkea`2n&pEG5cQ=X>N&^J|P;zp# zJH6@5Eh)%vZo!EQU7IHF?@X}+8(Z`64X zKwWR=;PuJ=Vk?lc;+F&w5zZn{E8-Y&p>r0#iLUQ(>m8BAd{_vJRNth|BS1WmTzvO; zICK0KiJLoC)WUn06b&rHWLfd}sMx*2jc%@YG9j=5##kt*YR@^Vg;Pt~anwr60}1en zL1JA9>JgMfMjwJdP0DGATwOfLgb99efT~@X4rHe|r(r3G1ND+M(~a6PiJE@n{00>Y zJJdh=n7+e`v9QMsNxLZKPGP5N1l5K2+wrMchB6{h4jZ1dC0b?KL)8+NKrq7=$SM1A4o+XlWk*8fo&SYY`K;nZf;03Jo%+K9wLL#`$W}>vJ>{EKjJg%l`V`RCIhMnN&Af5ag8 zcYtowI{uClb^c84jPzivqF?zi)a8`xVG4D)lN#VXbSyQ@XK6HpyN6xDefT9LU?_U} z@zy(@sM~hWYSSnNWH!85*D2R0cxFyJ@%(^Fp3)6c=5v7;%Q?S^|G?gO)uPRT$}GQ> zJR|O-C>F*q!aVzxe;0u5rk_E8+LY*b1%x|?+sHaLYqK+3B+jGz>%>(%P*PruV zg?aB4X&K5+;<5eq59uYW>qi2e_B@>kA9t@XSzjTV>7%&s(&Am z6i%EQ9Nfy33&-4N#;6#k$I>D9G#b z!ibd$>qY6OFVI#mle#K4q15mwNS2e_&koX)Z4(*IdQFhN&F9g=#1P`A#m{E#N}Vq} zRbwpEL-ZhcW-hRSDj;?KGh}2&!nk4tC{l`8MYSHpJhXOPADLYEwtiF17s`UEV91U@ z7xMoDbXsNWaIlmw7{-p9u@;lQU`&>)W`-;gn^05OBwO1Oj!f{)QEw~Tw@FmsWbbBI IZ9`A{7oop#+W-In literal 0 HcmV?d00001 diff --git a/mycroft/res/ui/images/information.png b/mycroft/res/ui/images/information.png new file mode 100644 index 0000000000000000000000000000000000000000..828d77c9cf012f658ff21c5a2364a77bef06086a GIT binary patch literal 2708 zcmV;F3TyR=P)m6({xsuK=$DF96Q~??`G20_YhL z3M zjb`?5Gi$SCq1ntHH?#L=#U4CBWC%$zGn)h4;ihXzMl-MixJFWQ5P;cu;HNH|PaAFn z9+I@Lr^14IfbeXbAMWDfl_`&U`+>Q@5=rf;@Bn5u7q}bf7qXsX*aUnU*ilVSpehsJ zhiC=ug1~n{90I;0=?B#c3916=S(o1cECB`vp1Z^<;Ce|ry%j*-V$K7=mjkaQ;Q%mQ z(jUF`0A^MXYydtI_$&)YfNui#0Tl@emGl6o1J9;lUSDan6RjlP1X$c6P=&}p&&9Dp zfxp=B3rVx%P7W0#>DicnksJBF0%x(~Nnl2thf)+X`BU77JRxvZF{}eV5!a$oEc@w> z{HegQKz_w>F|gLm>f_i@ipv8`1Xcql27aoB-$=TmyE%bkApb0)Wz4>Tld5A0a4pbY zt_ajk@&^L10q+Z3^cWTc*GeiY9%RZSKKtc{Kz@&77Vzz=g#bssfR(^BPmQ(@_%pDB z=uSXC-~+%ok3(65q^GL#PG)w8r^m8ha8uRJp6y&STjAlewVK(eQfCI`cz}!DLXS@{ z;1)>>i_MzN>{4JU(G4SCuu;-SOPLvzBY<5**R8yoJ4;$$0{Pjsjd4Wh7f$x*S-&so z_E?j^tXna&-+4&>3`y&=3syyqisMJOUjZfoM?HGpo6YP)u?oN$WF~N#XXHOF>DT3~ znB|D&Rp2gw*)7JhAQe@oK$;#vo|+cWY3 zR!VA#@dCzt&z}FgW;UW*0x&aNJh{QcdGXRx;(if$&a>wi(e3H(g#a^K4}9D=_7(Hd z8Mo}c-@}103V5?4b9Charus;J1xHk~hoAdb*;!4|0?7H{g@JeP@nJKYT9OBFikSwS z>FZOws0ZeoS?{6*;1a(&U;!SNkO3}_`Szyn_mJer^^c)FyOuyQt zVu*mBnb~S!Oo14m`~4s@TjEB35-+(l9~8G88`ZS=O;%2 ziAFErQvey44Q3lI1f&BQU?M=q%?ShfDa`}2G5zm%u?XvX1ET;~5DQz*|K78gZ1ZIS4#N^7cta)e)T;8#Vvmp~g0&*0bf=bl6obEH!<_;vL;AYPoDA(V4XGcp;X{<;BaRRHjwV1{%HAXN8E zxd7^d8PY9))?kKo3m_on0FhjZpurHV)-2&Jd%#d0r0~`)^NG;yZ0RIbi zNG-N!fF@vXuth4dGXpdd)x!-)AGT#AH3M6NEmDas*_FWU!4|1Q3veJSfZyX+P5glF zVU4{S`2HJt!30uTT!4_au zpfY3BG}Mt%<8O7 zPM7WDfo}vGdW(l8z0_IjyiNt+yuj;jS{UFTy4>3-wm!hUz^-6VuW)BEg))m0fTX>^ zt-+?=U@Ne&m>(=k0IreZV&Lgu+nUD_V5X$TVt%-;NDq+xbDEj$#*^xzE{W}S5iChZ z@uyVmgOWBB{cL3zbtl#b~tb7VaT%n9DM<}ey~ zt(1=G<#+&y+RJPN&IvZJ8C)*ux2684lFP)owShL^e8Q#DTERW#kl&pUknONNhUkjX zNr8hN!%|>|B&(VL^2BgHup#i!W8{AhXe%Y|$0`6Pf=?2iChi?LsT$S+lXIu(% z23c&?!gH33R|AuXdhG?ohsS`aaeLT`l#7@22cjm6I|6U9;1OUZU~#zpiVMJrU=uJ7 z_*dYs{KyL21zgvisa{obfKGCPUckdn!2!ji8MwlQ)QX{!9w7T=o1`ze1&fxzYteK3 zGb&AfMFmhGIed(0OEpv>=@^Z`ZIUJf+p6(~J#xsw%;o`K2l@rhkKymYXDD!gFHr)> z$qj}BKL;)gv7Q@&N8QPzs-o&$!*W8x4qzH^A?Ynrxd1pt(j)ZHJLv`U3-i z{=g7mgv%xRyVpQqkn + + + + + diff --git a/mycroft/res/ui/images/media-playback-pause.svg b/mycroft/res/ui/images/media-playback-pause.svg new file mode 100644 index 000000000000..972dfa2f09d8 --- /dev/null +++ b/mycroft/res/ui/images/media-playback-pause.svg @@ -0,0 +1,61 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-playback-start.svg b/mycroft/res/ui/images/media-playback-start.svg new file mode 100644 index 000000000000..4627f98824b3 --- /dev/null +++ b/mycroft/res/ui/images/media-playback-start.svg @@ -0,0 +1,61 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-playlist-repeat.svg b/mycroft/res/ui/images/media-playlist-repeat.svg new file mode 100644 index 000000000000..01c10dd4465f --- /dev/null +++ b/mycroft/res/ui/images/media-playlist-repeat.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/media-playlist-shuffle.svg b/mycroft/res/ui/images/media-playlist-shuffle.svg new file mode 100644 index 000000000000..2afeacb92afd --- /dev/null +++ b/mycroft/res/ui/images/media-playlist-shuffle.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/media-repeat-playlist.svg b/mycroft/res/ui/images/media-repeat-playlist.svg new file mode 100644 index 000000000000..da303aeb5a77 --- /dev/null +++ b/mycroft/res/ui/images/media-repeat-playlist.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/media-repeat-track.svg b/mycroft/res/ui/images/media-repeat-track.svg new file mode 100644 index 000000000000..f6575cb86aae --- /dev/null +++ b/mycroft/res/ui/images/media-repeat-track.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/media-skip-backward.svg b/mycroft/res/ui/images/media-skip-backward.svg new file mode 100644 index 000000000000..a61734c7dc67 --- /dev/null +++ b/mycroft/res/ui/images/media-skip-backward.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/media-skip-forward.svg b/mycroft/res/ui/images/media-skip-forward.svg new file mode 100644 index 000000000000..3ea6d40a0870 --- /dev/null +++ b/mycroft/res/ui/images/media-skip-forward.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/mycroft/res/ui/images/search.png b/mycroft/res/ui/images/search.png new file mode 100644 index 0000000000000000000000000000000000000000..51ae3558a5b170d102bbba4aa203b926a86c965e GIT binary patch literal 2385 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 Date: Thu, 27 Aug 2020 09:55:56 +0100 Subject: [PATCH 02/13] gui play video common play --- mycroft/res/ui/images/history.png | Bin 2186 -> 0 bytes mycroft/res/ui/images/home.png | Bin 1446 -> 0 bytes mycroft/res/ui/images/information.png | Bin 2708 -> 0 bytes mycroft/res/ui/images/media-album-track.svg | 13 ------------- mycroft/res/ui/images/media-playlist-repeat.svg | 13 ------------- .../res/ui/images/media-playlist-shuffle.svg | 13 ------------- mycroft/res/ui/images/media-repeat-playlist.svg | 13 ------------- mycroft/res/ui/images/media-repeat-track.svg | 13 ------------- mycroft/res/ui/images/media-skip-backward.svg | 13 ------------- mycroft/res/ui/images/media-skip-forward.svg | 13 ------------- mycroft/res/ui/images/search.png | Bin 2385 -> 0 bytes mycroft/res/ui/images/spinner.gif | Bin 97623 -> 0 bytes 12 files changed, 91 deletions(-) delete mode 100644 mycroft/res/ui/images/history.png delete mode 100644 mycroft/res/ui/images/home.png delete mode 100644 mycroft/res/ui/images/information.png delete mode 100644 mycroft/res/ui/images/media-album-track.svg delete mode 100644 mycroft/res/ui/images/media-playlist-repeat.svg delete mode 100644 mycroft/res/ui/images/media-playlist-shuffle.svg delete mode 100644 mycroft/res/ui/images/media-repeat-playlist.svg delete mode 100644 mycroft/res/ui/images/media-repeat-track.svg delete mode 100644 mycroft/res/ui/images/media-skip-backward.svg delete mode 100644 mycroft/res/ui/images/media-skip-forward.svg delete mode 100644 mycroft/res/ui/images/search.png delete mode 100644 mycroft/res/ui/images/spinner.gif diff --git a/mycroft/res/ui/images/history.png b/mycroft/res/ui/images/history.png deleted file mode 100644 index 584b9f954764fdf1361a0d5ed909d269eda16777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 zcmV;52zB>~P)^FaiKsol9-4J z28oHpT|uEpB}$AKFjc`QAP8>MP!Odn-Dy96^tHBSX5L-qE`|I3d-uLO=bUfOY-i34 z5F$i~5FtW@2oWMgh!7z{gzyRsh#rQwMz@J$63#;=axn&Z7>-=@NAHe5oj@5%@iX>f zFDg)ORGlFNbQnJqcVaxU&=;u*KdM1Fj-eRqj6Zt3voo8M`4;Ws2p4lC(}L7^tWYqF zAM+@kqLKUg6nhQ@1i%zt!Oy7|PjWyH@dQrg4{V`+RPk;04mbt8nCs~-?qQz*lE60C zU%_g+k6$<;U=$Dl2XPm@!*fgv3<(6l2U$yR@f(NQr@+u>ya7hB3iB*|R*xE-L=#To z6j~5L1SyCj12IG_l+ub>##Y~Ff=tEtxXkq5x8r@3pc*x(K{HMntpLDeq#%kIV(5o_ z%)wyO{J&@v(A$}PH`gC%a;kHbMa)mMBx--ozFfdvtTI*d3pD&|{X==egovMO&=lWOwU;0Qii8 zf?`+Y6HMZEY3)~VnEMM90^r>W3a)oe2LfQeV$8qP!%p~NMNg38rtmtc`B!+iJS70G zlv1$4J;AR_h2H1GO!O0pE_J-bo%TOK8t+-|%Tzp*WfFb1Ch|tZx-hshjh2rS5-`jncZoK_p6yZ<(Z2ms0RX`3Bo*_D)=`NwBx2^i_0I5RlC8gxc-Z))BH$T>s2u00@vy(5pCzn!3O}LILkOC{w2g z0AQt1!+bsU-(M1&9T^}39u;c%jvfNWiMJ@73^SUW062v8qT~wM7uGt5$-<|r0snR+ zPMg^uLz&=3Du?PIK-`kH1!;rYsKr6yi&+i{AOK7gyf}{I2o^pNKAq~k2S^k40DGK` zvHE9ilDWzrI&K1EgijB*?dt}p5ma?qV7DV3F{cEGS5>sE6LNpUV)F}bIO$+lImF7GAq%PyU8p3S` zqbb3li+G0lhRN-369-cMRums<2=P;9vQdZ_&LVZS=TTfrkdbWCHzN8H`@&iWfQy|nNa@$6W7c4QaI9Dsm*~9U+JU|p0{hK*fig4lu zR?Kgc^^2mkHO#e4fas9M?~GZCt=aX0CDz=Q0GP_#75RTBSZJkFlr4v?JCYqQD73Xd z2!JVEuaI|umzyPl^MoaQXh$ilUQlSa=Z@$9U8YEWYvH!GoWq1=6$`&#XiqUKUQnoG z6O!|#$qpoWKVxbsOy_UHFNfHy7t>y#!Tk7nqbxqHJRdS!m1Zvqi#Iq?%ZwKkLTfrK z^SE0rP5Nbl@Qb&dsguYHmg>z5i)Vt)V7a6>h$_AlZ;j1#s*=hJmb#G^7w;C=vgR~- zcPN^`4MGhoIneo@o6HNAx||X_l%I8xcaW)4^JUxPKWT|d2)$sL7fF%4g}--5oTm8S z7)gS}W4hX9cQ5e9d;rYg0+QrvnM4BMW|vcBx_QAek5giESi~H;M9!4-Q7>!Lvx^rj z_x8Xlm61z=G06l-Z<<`(3tGK4-$cbcB&q)r&54q1>ui#O73<_x(m{HnJA4PL_A{lY zR*QS&ogHV5GBxQW{Dyu~$6(*+85Bn;4gNI&|1 z-YBg7|Ix%990xeMLZg7C34^n1{ObG$Dx>-B*uiU<1(+qG;}Vs@yqEu)D1RgUNk}08 z_T#T6uSVR=*7n_{7!6d=Bfi1;G%GwXem}n4b1?~7$V6Jgk7`hkGHk&*qtq?E{JCD=zhMj#it z=+p6+e{d9~*oS@ChYFM%)n{->J4A>OAwq-*5h6s05FtW@2;mF<1Mt4vd;Ei49{>OV M07*qoM6N<$f^0wjp#T5? diff --git a/mycroft/res/ui/images/home.png b/mycroft/res/ui/images/home.png deleted file mode 100644 index c6fdf598b3bd717bc1520ac7fd7ad521484e55af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmb7^`!^GO9LK+#&1@rD%G?^6p>!Q`sW#V<%cGP_n=CT-OA+O98Eqmxu01VLi?EZ0 zqEHG?O9=5ix#hO4JcpxVJ#$=#hkxKX=Q*GA{=DDkea`2n&pEG5cQ=X>N&^J|P;zp# zJH6@5Eh)%vZo!EQU7IHF?@X}+8(Z`64X zKwWR=;PuJ=Vk?lc;+F&w5zZn{E8-Y&p>r0#iLUQ(>m8BAd{_vJRNth|BS1WmTzvO; zICK0KiJLoC)WUn06b&rHWLfd}sMx*2jc%@YG9j=5##kt*YR@^Vg;Pt~anwr60}1en zL1JA9>JgMfMjwJdP0DGATwOfLgb99efT~@X4rHe|r(r3G1ND+M(~a6PiJE@n{00>Y zJJdh=n7+e`v9QMsNxLZKPGP5N1l5K2+wrMchB6{h4jZ1dC0b?KL)8+NKrq7=$SM1A4o+XlWk*8fo&SYY`K;nZf;03Jo%+K9wLL#`$W}>vJ>{EKjJg%l`V`RCIhMnN&Af5ag8 zcYtowI{uClb^c84jPzivqF?zi)a8`xVG4D)lN#VXbSyQ@XK6HpyN6xDefT9LU?_U} z@zy(@sM~hWYSSnNWH!85*D2R0cxFyJ@%(^Fp3)6c=5v7;%Q?S^|G?gO)uPRT$}GQ> zJR|O-C>F*q!aVzxe;0u5rk_E8+LY*b1%x|?+sHaLYqK+3B+jGz>%>(%P*PruV zg?aB4X&K5+;<5eq59uYW>qi2e_B@>kA9t@XSzjTV>7%&s(&Am z6i%EQ9Nfy33&-4N#;6#k$I>D9G#b z!ibd$>qY6OFVI#mle#K4q15mwNS2e_&koX)Z4(*IdQFhN&F9g=#1P`A#m{E#N}Vq} zRbwpEL-ZhcW-hRSDj;?KGh}2&!nk4tC{l`8MYSHpJhXOPADLYEwtiF17s`UEV91U@ z7xMoDbXsNWaIlmw7{-p9u@;lQU`&>)W`-;gn^05OBwO1Oj!f{)QEw~Tw@FmsWbbBI IZ9`A{7oop#+W-In diff --git a/mycroft/res/ui/images/information.png b/mycroft/res/ui/images/information.png deleted file mode 100644 index 828d77c9cf012f658ff21c5a2364a77bef06086a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2708 zcmV;F3TyR=P)m6({xsuK=$DF96Q~??`G20_YhL z3M zjb`?5Gi$SCq1ntHH?#L=#U4CBWC%$zGn)h4;ihXzMl-MixJFWQ5P;cu;HNH|PaAFn z9+I@Lr^14IfbeXbAMWDfl_`&U`+>Q@5=rf;@Bn5u7q}bf7qXsX*aUnU*ilVSpehsJ zhiC=ug1~n{90I;0=?B#c3916=S(o1cECB`vp1Z^<;Ce|ry%j*-V$K7=mjkaQ;Q%mQ z(jUF`0A^MXYydtI_$&)YfNui#0Tl@emGl6o1J9;lUSDan6RjlP1X$c6P=&}p&&9Dp zfxp=B3rVx%P7W0#>DicnksJBF0%x(~Nnl2thf)+X`BU77JRxvZF{}eV5!a$oEc@w> z{HegQKz_w>F|gLm>f_i@ipv8`1Xcql27aoB-$=TmyE%bkApb0)Wz4>Tld5A0a4pbY zt_ajk@&^L10q+Z3^cWTc*GeiY9%RZSKKtc{Kz@&77Vzz=g#bssfR(^BPmQ(@_%pDB z=uSXC-~+%ok3(65q^GL#PG)w8r^m8ha8uRJp6y&STjAlewVK(eQfCI`cz}!DLXS@{ z;1)>>i_MzN>{4JU(G4SCuu;-SOPLvzBY<5**R8yoJ4;$$0{Pjsjd4Wh7f$x*S-&so z_E?j^tXna&-+4&>3`y&=3syyqisMJOUjZfoM?HGpo6YP)u?oN$WF~N#XXHOF>DT3~ znB|D&Rp2gw*)7JhAQe@oK$;#vo|+cWY3 zR!VA#@dCzt&z}FgW;UW*0x&aNJh{QcdGXRx;(if$&a>wi(e3H(g#a^K4}9D=_7(Hd z8Mo}c-@}103V5?4b9Charus;J1xHk~hoAdb*;!4|0?7H{g@JeP@nJKYT9OBFikSwS z>FZOws0ZeoS?{6*;1a(&U;!SNkO3}_`Szyn_mJer^^c)FyOuyQt zVu*mBnb~S!Oo14m`~4s@TjEB35-+(l9~8G88`ZS=O;%2 ziAFErQvey44Q3lI1f&BQU?M=q%?ShfDa`}2G5zm%u?XvX1ET;~5DQz*|K78gZ1ZIS4#N^7cta)e)T;8#Vvmp~g0&*0bf=bl6obEH!<_;vL;AYPoDA(V4XGcp;X{<;BaRRHjwV1{%HAXN8E zxd7^d8PY9))?kKo3m_on0FhjZpurHV)-2&Jd%#d0r0~`)^NG;yZ0RIbi zNG-N!fF@vXuth4dGXpdd)x!-)AGT#AH3M6NEmDas*_FWU!4|1Q3veJSfZyX+P5glF zVU4{S`2HJt!30uTT!4_au zpfY3BG}Mt%<8O7 zPM7WDfo}vGdW(l8z0_IjyiNt+yuj;jS{UFTy4>3-wm!hUz^-6VuW)BEg))m0fTX>^ zt-+?=U@Ne&m>(=k0IreZV&Lgu+nUD_V5X$TVt%-;NDq+xbDEj$#*^xzE{W}S5iChZ z@uyVmgOWBB{cL3zbtl#b~tb7VaT%n9DM<}ey~ zt(1=G<#+&y+RJPN&IvZJ8C)*ux2684lFP)owShL^e8Q#DTERW#kl&pUknONNhUkjX zNr8hN!%|>|B&(VL^2BgHup#i!W8{AhXe%Y|$0`6Pf=?2iChi?LsT$S+lXIu(% z23c&?!gH33R|AuXdhG?ohsS`aaeLT`l#7@22cjm6I|6U9;1OUZU~#zpiVMJrU=uJ7 z_*dYs{KyL21zgvisa{obfKGCPUckdn!2!ji8MwlQ)QX{!9w7T=o1`ze1&fxzYteK3 zGb&AfMFmhGIed(0OEpv>=@^Z`ZIUJf+p6(~J#xsw%;o`K2l@rhkKymYXDD!gFHr)> z$qj}BKL;)gv7Q@&N8QPzs-o&$!*W8x4qzH^A?Ynrxd1pt(j)ZHJLv`U3-i z{=g7mgv%xRyVpQqkn - - - - - diff --git a/mycroft/res/ui/images/media-playlist-repeat.svg b/mycroft/res/ui/images/media-playlist-repeat.svg deleted file mode 100644 index 01c10dd4465f..000000000000 --- a/mycroft/res/ui/images/media-playlist-repeat.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/media-playlist-shuffle.svg b/mycroft/res/ui/images/media-playlist-shuffle.svg deleted file mode 100644 index 2afeacb92afd..000000000000 --- a/mycroft/res/ui/images/media-playlist-shuffle.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/media-repeat-playlist.svg b/mycroft/res/ui/images/media-repeat-playlist.svg deleted file mode 100644 index da303aeb5a77..000000000000 --- a/mycroft/res/ui/images/media-repeat-playlist.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/media-repeat-track.svg b/mycroft/res/ui/images/media-repeat-track.svg deleted file mode 100644 index f6575cb86aae..000000000000 --- a/mycroft/res/ui/images/media-repeat-track.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/media-skip-backward.svg b/mycroft/res/ui/images/media-skip-backward.svg deleted file mode 100644 index a61734c7dc67..000000000000 --- a/mycroft/res/ui/images/media-skip-backward.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/media-skip-forward.svg b/mycroft/res/ui/images/media-skip-forward.svg deleted file mode 100644 index 3ea6d40a0870..000000000000 --- a/mycroft/res/ui/images/media-skip-forward.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/mycroft/res/ui/images/search.png b/mycroft/res/ui/images/search.png deleted file mode 100644 index 51ae3558a5b170d102bbba4aa203b926a86c965e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2385 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 Date: Sun, 20 Sep 2020 21:43:03 +0100 Subject: [PATCH 03/13] override animations --- mycroft/enclosure/gui.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index ff664e9e0afb..343041373eab 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -340,17 +340,20 @@ def show_url(self, url, override_idle=None, self.show_page("SYSTEM_UrlFrame.qml", override_idle, override_animations) - def play_video(self, url, title="", override_idle=True): + def play_video(self, url, title="", override_idle=True, + override_animations=None): """ Play video stream """ self["playStatus"] = "play" self["video"] = url self["title"] = title self.video_info = {"title": title, "url": url} self.show_page("SYSTEM_VideoPlayer.qml", - override_idle=override_idle) + override_idle=override_idle, + override_animations=override_animations) @property def is_playing_video(self): + """Returns video playback status""" return self.video_info is not None def pause_video(self): From db97895deca57e1898ac5c3eb40d01c5d3a8e1d2 Mon Sep 17 00:00:00 2001 From: jarbasal Date: Mon, 21 Sep 2020 03:40:23 +0100 Subject: [PATCH 04/13] move event handlers --- mycroft/enclosure/gui.py | 34 +++++++++++++++++++ mycroft/skills/mycroft_skill/mycroft_skill.py | 32 ----------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 343041373eab..8def87000d3b 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -54,6 +54,40 @@ def setup_default_handlers(self): msg_type = self.build_message_type('set') self.skill.add_event(msg_type, self.gui_set) + # TODO can we rename this namespace to mycroft.playback.XXX ? + self.skill.add_event('mycroft.audio.service.pause', + self.__handle_gui_pause) + self.skill.add_event('mycroft.audio.service.resume', + self.__handle_gui_resume) + self.skill.add_event('mycroft.audio.service.stop', + self.__handle_gui_stop) + self.skill.add_event('mycroft.audio.service.track_info', + self.__handle_gui_track_info) + self.skill.add_event('mycroft.audio.queue_end', + self.__handle_gui_stop) + + # Audio Service bus messages + def __handle_gui_resume(self, message): + """Resume video playback in gui""" + self.resume_video() + + def __handle_gui_stop(self, message): + """Stop video playback in gui""" + self.stop_video() + + def __handle_gui_pause(self, message): + """Pause video playback in gui""" + self.pause_video() + + def __handle_gui_track_info(self, message): + """Answer request information of current playing track. + Needed for handling stop """ + if self.video_info: + self.skill.bus.emit( + message.reply('mycroft.audio.service.track_info_reply', + self.video_info)) + return self.video_info + def register_handler(self, event, handler): """Register a handler for GUI events. diff --git a/mycroft/skills/mycroft_skill/mycroft_skill.py b/mycroft/skills/mycroft_skill/mycroft_skill.py index 7606b5313d26..a06a490778b7 100644 --- a/mycroft/skills/mycroft_skill/mycroft_skill.py +++ b/mycroft/skills/mycroft_skill/mycroft_skill.py @@ -259,38 +259,6 @@ def bind(self, bus): # Initialize the SkillGui self.gui.setup_default_handlers() - # TODO can we rename this namespace to mycroft.playback.XXX ? - self.add_event('mycroft.audio.service.pause', - self.__handle_gui_pause) - self.add_event('mycroft.audio.service.resume', - self.__handle_gui_resume) - self.add_event('mycroft.audio.service.stop', - self.__handle_gui_stop) - self.add_event('mycroft.audio.service.track_info', - self.__handle_gui_track_info) - - # Audio Service bus messages - def __handle_gui_resume(self, message): - """Resume video playback in gui""" - self.gui.resume_video() - - def __handle_gui_stop(self, message): - """Stop video playback in gui""" - self.gui.stop_video() - - def __handle_gui_pause(self, message): - """Pause video playback in gui""" - self.gui.pause_video() - - def __handle_gui_track_info(self, message): - """Answer request information of current playing track. - Needed for handling stop """ - if self.gui.video_info: - self.bus.emit( - message.reply('mycroft.audio.service.track_info_reply', - self.gui.video_info)) - return self.gui.video_info - def _register_system_event_handlers(self): """Add all events allowing the standard interaction with the Mycroft system. From 9bafbdfc4aef4f9a8e8a7fb77b5d311879c5b66b Mon Sep 17 00:00:00 2001 From: jarbasal Date: Mon, 21 Sep 2020 03:52:06 +0100 Subject: [PATCH 05/13] gui playback status --- mycroft/enclosure/gui.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 8def87000d3b..cb307a1ea633 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -14,12 +14,19 @@ # """ Interface for interacting with the Mycroft gui qml viewer. """ from os.path import join - +from enum import IntEnum from mycroft.configuration import Configuration from mycroft.messagebus.message import Message from mycroft.util import resolve_resource_file +class GUIPlaybackStatus(IntEnum): + STOPPED = 0 + PLAYING = 1 + PAUSED = 2 + UNDEFINED = 3 + + class SkillGUI: """SkillGUI - Interface to the Graphical User Interface @@ -386,19 +393,33 @@ def play_video(self, url, title="", override_idle=True, override_animations=override_animations) @property - def is_playing_video(self): - """Returns video playback status""" + def is_video_displayed(self): + """Returns whether the gui is in a video playback state. + Eg if the video is paused, it would still be displayed on screen + but the video itself is not "playing" so to speak""" return self.video_info is not None + @property + def playback_status(self): + """Returns gui playback status, + indicates if gui is playing, paused or stopped""" + if self.__session_data.get("playStatus", -1) == "play": + return GUIPlaybackStatus.PLAYING + if self.__session_data.get("playStatus", -1) == "pause": + return GUIPlaybackStatus.PAUSED + if self.__session_data.get("playStatus", -1) == "stop": + return GUIPlaybackStatus.STOPPED + return GUIPlaybackStatus.UNDEFINED + def pause_video(self): """Pause video playback.""" - if self.is_playing_video: + if self.is_video_displayed: self["playStatus"] = "pause" def stop_video(self): """Stop video playback.""" - # TODO detect end of media playback from gui - if self.is_playing_video: + # TODO detect end of media playback from gui and call this + if self.is_video_displayed: self["playStatus"] = "stop" self.clear() self.video_info = None From 8a921eea9af48dffee3c14639cbf3899f141051d Mon Sep 17 00:00:00 2001 From: Aditya Mehra Date: Tue, 22 Sep 2020 03:31:59 +0530 Subject: [PATCH 06/13] Use SVGs, implement repeat and end media status, add loading indicator, cleanup qml --- mycroft/enclosure/gui.py | 23 ++- mycroft/res/ui/SYSTEM_VideoPlayer.qml | 141 +++++++++++-------- mycroft/res/ui/SeekControl.qml | 43 +++--- mycroft/res/ui/images/back.svg | 79 +++++++++++ mycroft/res/ui/images/media-fullscreen.svg | 135 ++++++++++++++++++ mycroft/res/ui/images/media-mute.svg | 130 +++++++++++++++++ mycroft/res/ui/images/media-next.svg | 96 +++++++++++++ mycroft/res/ui/images/media-pause.svg | 95 +++++++++++++ mycroft/res/ui/images/media-play.svg | 86 ++++++++++++ mycroft/res/ui/images/media-previous.svg | 96 +++++++++++++ mycroft/res/ui/images/media-repeat.svg | 154 +++++++++++++++++++++ mycroft/res/ui/images/media-stop.svg | 87 ++++++++++++ mycroft/res/ui/images/media-unmute.svg | 137 ++++++++++++++++++ 13 files changed, 1224 insertions(+), 78 deletions(-) create mode 100644 mycroft/res/ui/images/back.svg create mode 100644 mycroft/res/ui/images/media-fullscreen.svg create mode 100644 mycroft/res/ui/images/media-mute.svg create mode 100644 mycroft/res/ui/images/media-next.svg create mode 100644 mycroft/res/ui/images/media-pause.svg create mode 100644 mycroft/res/ui/images/media-play.svg create mode 100644 mycroft/res/ui/images/media-previous.svg create mode 100644 mycroft/res/ui/images/media-repeat.svg create mode 100644 mycroft/res/ui/images/media-stop.svg create mode 100644 mycroft/res/ui/images/media-unmute.svg diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index cb307a1ea633..6862e8701fb7 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -72,6 +72,8 @@ def setup_default_handlers(self): self.__handle_gui_track_info) self.skill.add_event('mycroft.audio.queue_end', self.__handle_gui_stop) + self.skill.gui.register_handler('video.media.playback.ended', + self.__handle_gui_stop) # Audio Service bus messages def __handle_gui_resume(self, message): @@ -381,12 +383,29 @@ def show_url(self, url, override_idle=None, self.show_page("SYSTEM_UrlFrame.qml", override_idle, override_animations) - def play_video(self, url, title="", override_idle=True, + def play_video(self, url, title="", repeat=None, override_idle=True, override_animations=None): - """ Play video stream """ + """ Play video stream + + Arguments: + url (str): URL of video source + title (str): Title of media to be displayed + repeat (boolean, int): + True: Infinitly loops the current video track + (int): Loops the video track for specified number of + times. + override_idle (boolean, int): + True: Takes over the resting page indefinitely + (int): Delays resting page for the specified number of + seconds. + override_animations (boolean): + True: Disables showing all platform skill animations. + False: 'Default' always show animations. + """ self["playStatus"] = "play" self["video"] = url self["title"] = title + self["playerRepeat"] = repeat self.video_info = {"title": title, "url": url} self.show_page("SYSTEM_VideoPlayer.qml", override_idle=override_idle, diff --git a/mycroft/res/ui/SYSTEM_VideoPlayer.qml b/mycroft/res/ui/SYSTEM_VideoPlayer.qml index 1ffc4a626728..b4cdb6dfe6f4 100644 --- a/mycroft/res/ui/SYSTEM_VideoPlayer.qml +++ b/mycroft/res/ui/SYSTEM_VideoPlayer.qml @@ -5,7 +5,6 @@ import QtQuick.Controls 2.12 as Controls import org.kde.kirigami 2.10 as Kirigami import QtQuick.Window 2.3 import QtGraphicalEffects 1.0 - import Mycroft 1.0 as Mycroft import "." as Local @@ -14,10 +13,11 @@ Mycroft.Delegate { property var videoSource: sessionData.video property var videoStatus: sessionData.playStatus + property var videoRepeat: sessionData.playerRepeat property var videoThumb: sessionData.videoThumb property var videoTitle: sessionData.title + property bool busyIndicate: false - //The player is always fullscreen fillWidth: true background: Rectangle { color: "black" @@ -29,6 +29,7 @@ Mycroft.Delegate { onEnabledChanged: syncStatusTimer.restart() onVideoSourceChanged: syncStatusTimer.restart() + Component.onCompleted: { syncStatusTimer.restart() } @@ -39,10 +40,43 @@ Mycroft.Delegate { } onFocusChanged: { - console.log("focus changed") video.forceActiveFocus(); } + onVideoRepeatChanged: { + if(typeof videoRepeat !== "undefined" && typeof videoRepeat == "boolean"){ + if(videoRepeat){ + video.loops = MediaPlayer.Infinite + video.flushMode = VideoOutput.LastFrame + } + } else if(typeof videoRepeat !== "undefined" && typeof videoRepeat == "number"){ + if(videoRepeat > 1){ + video.loops = videoRepeat + video.flushMode = VideoOutput.LastFrame + } + } else { + video.loops = 1 + video.flushMode = VideoOutput.EmptyFrame + } + } + + onVideoStatusChanged: { + switch(videoStatus){ + case "stop": + video.stop(); + break; + case "pause": + video.pause() + break; + case "play": + video.play() + delay(6000, function() { + infomationBar.visible = false; + }) + break; + } + } + Connections { target: Window.window onVisibleChanged: { @@ -52,8 +86,6 @@ Mycroft.Delegate { } } - - // Sometimes can't be restarted reliably immediately, put it in a timer Timer { id: syncStatusTimer interval: 0 @@ -73,20 +105,18 @@ Mycroft.Delegate { } function delay(delayTime, cb) { - delaytimer.interval = delayTime; - delaytimer.repeat = false; - delaytimer.triggered.connect(cb); - delaytimer.start(); + delaytimer.interval = delayTime; + delaytimer.repeat = false; + delaytimer.triggered.connect(cb); + delaytimer.start(); } controlBar: Local.SeekControl { id: seekControl anchors { -// left: parent.left -// right: parent.right bottom: parent.bottom } - title: videoTitle + title: videoTitle videoControl: video duration: video.duration playPosition: video.position @@ -96,10 +126,10 @@ Mycroft.Delegate { Item { id: videoRoot - anchors.fill: parent - - Rectangle { - id: infomationBar + anchors.fill: parent + + Rectangle { + id: infomationBar anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top @@ -125,53 +155,21 @@ Mycroft.Delegate { text: videoTitle z: 100 } - } - - Image { - id: thumbart - anchors.fill: parent - fillMode: Image.PreserveAspectFit - source: root.videoThumb - enabled: root.videoStatus == "stop" ? 1 : 0 - visible: root.videoStatus == "stop" ? 1 : 0 } - + Video { id: video anchors.fill: parent focus: true autoLoad: true autoPlay: false + loops: 1 source: videoSource - readonly property string currentStatus: root.enabled ? root.videoStatus : "pause" - - onFocusChanged: { - if(focus){ - console.log("focus in video") - } - } - - onCurrentStatusChanged: { - switch(currentStatus){ - case "stop": - video.stop(); - break; - case "pause": - video.pause() - break; - case "play": - video.play() - delay(6000, function() { - infomationBar.visible = false; - }) - break; - } - } Keys.onReturnPressed: { video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play() } - + Keys.onDownPressed: { controlBarItem.opened = true controlBarItem.forceActiveFocus() @@ -179,13 +177,48 @@ Mycroft.Delegate { MouseArea { anchors.fill: parent - onClicked: { - controlBarItem.opened = !controlBarItem.opened + onClicked: { + controlBarItem.opened = !controlBarItem.opened } } onStatusChanged: { - console.log("Status Changed") + console.log(status) + if(status == MediaPlayer.EndOfMedia) { + triggerGuiEvent("video.media.playback.ended", {}) + busyIndicatorPop.enabled = false + } + if(status == MediaPlayer.Loading) { + busyIndicatorPop.visible = true + busyIndicatorPop.enabled = true + } + if(status == MediaPlayer.Loaded || status == MediaPlayer.Buffered){ + busyIndicatorPop.visible = false + busyIndicatorPop.enabled = false + } + } + + Rectangle { + id: busyIndicatorPop + width: parent.width + height: parent.height + color: Qt.rgba(0, 0, 0, 0.2) + visible: false + enabled: false + + Controls.BusyIndicator { + id: busyIndicate + running: busyIndicate + anchors.centerIn: parent + } + + onEnabledChanged: { + if(busyIndicatorPop.enabled){ + busyIndicate.running = true + } else { + busyIndicate.running = false + } + } } } } diff --git a/mycroft/res/ui/SeekControl.qml b/mycroft/res/ui/SeekControl.qml index fd12eda0a4fc..7cda31b09b10 100644 --- a/mycroft/res/ui/SeekControl.qml +++ b/mycroft/res/ui/SeekControl.qml @@ -39,7 +39,7 @@ Item { Timer { id: hideTimer interval: 5000 - onTriggered: { + onTriggered: { seekControl.opened = false; videoRoot.forceActiveFocus(); } @@ -49,7 +49,6 @@ Item { width: parent.width height: parent.height color: Qt.rgba(0, 0, 0, 0.8) - //color: "white" y: opened ? 0 : parent.height ColumnLayout { @@ -72,17 +71,17 @@ Item { background: Rectangle { radius: 200 - color: Qt.rgba(0, 0, 0, 0.9) - border.width: 1 + color: "#1a1a1a" + border.width: 1.25 border.color: "white" } contentItem: Item { Image { - width: parent.width > 600 ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.small + width: parent.width - Kirigami.Units.largeSpacing height: width anchors.centerIn: parent - source: "images/back.png" + source: "images/back.svg" } } @@ -95,7 +94,7 @@ Item { Keys.onReturnPressed: { hideTimer.restart(); Mycroft.MycroftController.sendRequest("mycroft.gui.screen.close", {}); - video.stop(); + video.stop(); } onFocusChanged: { hideTimer.restart(); @@ -110,17 +109,17 @@ Item { background: Rectangle { radius: 200 - color: Qt.rgba(0, 0, 0, 0.9) - border.width: 1 + color: "#1a1a1a" + border.width: 1.25 border.color: "white" } contentItem: Item { Image { - width: parent.width > 600 ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.small + width: parent.width - Kirigami.Units.largeSpacing height: width anchors.centerIn: parent - source: videoControl.playbackState === MediaPlayer.PlayingState ? "images/media-playback-pause.svg" : "images/media-playback-start.svg" + source: videoControl.playbackState === MediaPlayer.PlayingState ? "images/media-pause.svg" : "images/media-play.svg" } } @@ -227,18 +226,18 @@ Item { text: formatTime(duration) } } - KeyNavigation.up: video - KeyNavigation.left: button - Keys.onReturnPressed: { - hideTimer.restart(); - if(!navSliderItem){ - navSliderItem = true + KeyNavigation.up: video + KeyNavigation.left: button + Keys.onReturnPressed: { + hideTimer.restart(); + if(!navSliderItem){ + navSliderItem = true } else { navSliderItem = false } } - - Keys.onLeftPressed: { + + Keys.onLeftPressed: { console.log("leftPressedonSlider") hideTimer.restart(); if(navSliderItem) { @@ -246,9 +245,9 @@ Item { } else { button.forceActiveFocus() } - } - - Keys.onRightPressed: { + } + + Keys.onRightPressed: { hideTimer.restart(); if(navSliderItem) { video.seek(video.position + 5000) diff --git a/mycroft/res/ui/images/back.svg b/mycroft/res/ui/images/back.svg new file mode 100644 index 000000000000..eaf775bac2fc --- /dev/null +++ b/mycroft/res/ui/images/back.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-fullscreen.svg b/mycroft/res/ui/images/media-fullscreen.svg new file mode 100644 index 000000000000..0ce22138e575 --- /dev/null +++ b/mycroft/res/ui/images/media-fullscreen.svg @@ -0,0 +1,135 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-mute.svg b/mycroft/res/ui/images/media-mute.svg new file mode 100644 index 000000000000..fac83baa966c --- /dev/null +++ b/mycroft/res/ui/images/media-mute.svg @@ -0,0 +1,130 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-next.svg b/mycroft/res/ui/images/media-next.svg new file mode 100644 index 000000000000..1c5a5262f8d4 --- /dev/null +++ b/mycroft/res/ui/images/media-next.svg @@ -0,0 +1,96 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-pause.svg b/mycroft/res/ui/images/media-pause.svg new file mode 100644 index 000000000000..06d0241fa527 --- /dev/null +++ b/mycroft/res/ui/images/media-pause.svg @@ -0,0 +1,95 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-play.svg b/mycroft/res/ui/images/media-play.svg new file mode 100644 index 000000000000..ab08c7cc6253 --- /dev/null +++ b/mycroft/res/ui/images/media-play.svg @@ -0,0 +1,86 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-previous.svg b/mycroft/res/ui/images/media-previous.svg new file mode 100644 index 000000000000..1dc4d094e5ab --- /dev/null +++ b/mycroft/res/ui/images/media-previous.svg @@ -0,0 +1,96 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-repeat.svg b/mycroft/res/ui/images/media-repeat.svg new file mode 100644 index 000000000000..ea57dd894ae3 --- /dev/null +++ b/mycroft/res/ui/images/media-repeat.svg @@ -0,0 +1,154 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-stop.svg b/mycroft/res/ui/images/media-stop.svg new file mode 100644 index 000000000000..ae86a1951f6f --- /dev/null +++ b/mycroft/res/ui/images/media-stop.svg @@ -0,0 +1,87 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/mycroft/res/ui/images/media-unmute.svg b/mycroft/res/ui/images/media-unmute.svg new file mode 100644 index 000000000000..6988c01636f9 --- /dev/null +++ b/mycroft/res/ui/images/media-unmute.svg @@ -0,0 +1,137 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + From fe43b26dd513cd26b24baee6d4e2d73784cd07a2 Mon Sep 17 00:00:00 2001 From: Aditya Mehra Date: Wed, 17 Feb 2021 13:43:44 +0530 Subject: [PATCH 07/13] update gui enclosure --- mycroft/enclosure/gui.py | 46 +++++++++++++++---- mycroft/skills/mycroft_skill/mycroft_skill.py | 1 - 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 6862e8701fb7..bb56f4b242cb 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -47,6 +47,16 @@ def __init__(self, skill): self.config = Configuration.get() self.video_info = None + @property + def connected(self): + """Returns True if at least 1 gui is connected, else False""" + if self.skill.bus: + reply = self.skill.bus.wait_for_response( + Message("gui.status.request"), "gui.status.request.response") + if reply: + return reply.data["connected"] + return False + @property def remote_url(self): """Returns configuration value for url of remote-server.""" @@ -144,12 +154,20 @@ def __getitem__(self, key): """Implements get part of dict-like behaviour with named keys.""" return self.__session_data[key] + def get(self, *args, **kwargs): + """Implements the get method for accessing dict keys.""" + return self.__session_data.get(*args, **kwargs) + def __contains__(self, key): """Implements the "in" operation.""" return self.__session_data.__contains__(key) def clear(self): - """Reset the value dictionary, and remove namespace from GUI.""" + """Reset the value dictionary, and remove namespace from GUI. + + This method does not close the GUI for a Skill. For this purpose see + the `release` method. + """ self.__session_data = {} self.page = None self.skill.bus.emit(Message("gui.clear.namespace", @@ -258,9 +276,15 @@ def remove_pages(self, page_names): # Convert pages to full reference page_urls = [] for name in page_names: - page = self.skill.find_resource(name, 'ui') + if name.startswith("SYSTEM"): + page = resolve_resource_file(join('ui', name)) + else: + page = self.skill.find_resource(name, 'ui') if page: - page_urls.append("file://" + page) + if self.config.get('remote'): + page_urls.append(self.remote_url + "/" + page) + else: + page_urls.append("file://" + page) else: raise FileNotFoundError("Unable to find page: {}".format(name)) @@ -283,7 +307,6 @@ def show_text(self, text, title=None, override_idle=None, True: Disables showing all platform skill animations. False: 'Default' always show animations. """ - self.clear() self["text"] = text self["title"] = title self.show_page("SYSTEM_TextFrame.qml", override_idle, @@ -308,7 +331,6 @@ def show_image(self, url, caption=None, True: Disables showing all platform skill animations. False: 'Default' always show animations. """ - self.clear() self["image"] = url self["title"] = title self["caption"] = caption @@ -335,7 +357,6 @@ def show_animated_image(self, url, caption=None, True: Disables showing all platform skill animations. False: 'Default' always show animations. """ - self.clear() self["image"] = url self["title"] = title self["caption"] = caption @@ -358,7 +379,6 @@ def show_html(self, html, resource_url=None, override_idle=None, True: Disables showing all platform skill animations. False: 'Default' always show animations. """ - self.clear() self["html"] = html self["resourceLocation"] = resource_url self.show_page("SYSTEM_HtmlFrame.qml", override_idle, @@ -378,11 +398,19 @@ def show_url(self, url, override_idle=None, True: Disables showing all platform skill animations. False: 'Default' always show animations. """ - self.clear() self["url"] = url self.show_page("SYSTEM_UrlFrame.qml", override_idle, override_animations) + def release(self): + """Signal that this skill is no longer using the GUI, + allow different platforms to properly handle this event. + Also calls self.clear() to reset the state variables + Platforms can close the window or go back to previous page""" + self.clear() + self.skill.bus.emit(Message("mycroft.gui.screen.close", + {"skill_id": self.skill.skill_id})) + def play_video(self, url, title="", repeat=None, override_idle=True, override_animations=None): """ Play video stream @@ -455,4 +483,4 @@ def shutdown(self): reference to make ref counting warning more precise. """ self.clear() - self.skill = None + self.skill = None diff --git a/mycroft/skills/mycroft_skill/mycroft_skill.py b/mycroft/skills/mycroft_skill/mycroft_skill.py index a06a490778b7..322f2bc29acf 100644 --- a/mycroft/skills/mycroft_skill/mycroft_skill.py +++ b/mycroft/skills/mycroft_skill/mycroft_skill.py @@ -255,7 +255,6 @@ def bind(self, bus): self.event_scheduler.set_id(self.skill_id) self._enclosure = EnclosureAPI(bus, self.name) self._register_system_event_handlers() - # Initialize the SkillGui self.gui.setup_default_handlers() From 1b230833a1ba09122924390cc76d8736cfd28465 Mon Sep 17 00:00:00 2001 From: Aditya Mehra Date: Wed, 17 Feb 2021 13:46:04 +0530 Subject: [PATCH 08/13] fix pep8 errors --- mycroft/enclosure/gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index bb56f4b242cb..917bc7e50c25 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -483,4 +483,4 @@ def shutdown(self): reference to make ref counting warning more precise. """ self.clear() - self.skill = None + self.skill = None From 60bf3acefd7708364c594db9916075e1dd0c9815 Mon Sep 17 00:00:00 2001 From: Aditya Mehra Date: Wed, 17 Feb 2021 16:56:48 +0530 Subject: [PATCH 09/13] close screen instead of only clearing data and fix back button call --- mycroft/enclosure/gui.py | 3 ++- mycroft/res/ui/SeekControl.qml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 1b38d037898b..7a428475d311 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -478,7 +478,8 @@ def stop_video(self): # TODO detect end of media playback from gui and call this if self.is_video_displayed: self["playStatus"] = "stop" - self.clear() + self.skill.bus.emit(Message("mycroft.gui.screen.close", + {"skill_id": self.skill.skill_id})) self.video_info = None def resume_video(self): diff --git a/mycroft/res/ui/SeekControl.qml b/mycroft/res/ui/SeekControl.qml index 7cda31b09b10..30c48bc2492c 100644 --- a/mycroft/res/ui/SeekControl.qml +++ b/mycroft/res/ui/SeekControl.qml @@ -86,14 +86,14 @@ Item { } onClicked: { - Mycroft.MycroftController.sendRequest("mycroft.gui.screen.close", {}); + triggerGuiEvent("video.media.playback.ended", {}) video.stop(); } KeyNavigation.up: video KeyNavigation.right: button Keys.onReturnPressed: { hideTimer.restart(); - Mycroft.MycroftController.sendRequest("mycroft.gui.screen.close", {}); + triggerGuiEvent("video.media.playback.ended", {}) video.stop(); } onFocusChanged: { From 08b659e15c1641cf2aa94f3bdaa16b91dccfc106 Mon Sep 17 00:00:00 2001 From: Kris Gesling Date: Tue, 30 Mar 2021 21:38:31 +0930 Subject: [PATCH 10/13] delete unused image --- mycroft/res/ui/images/back.png | Bin 1772 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mycroft/res/ui/images/back.png diff --git a/mycroft/res/ui/images/back.png b/mycroft/res/ui/images/back.png deleted file mode 100644 index 6955e2e18698e6eed206f5139313e7f5068d268c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmV>0zi%HedC$x+9UCVtO%jVz=psl(cf^E}3c5pxLSI(fgPqtiH@IcKl+_GbqN64BYKbnWx5Kl5kU4Da)-^?iHK zzJ$Q~&r4Ou0hrDt>J$Ds$VydbGLbqd5ecd~9RIFaA%p;cAr-jmgQ^Y%AcqkEsyh3h z-(wXJzK9G0P{9#ORp(NIf)#)$A_D-l<0wj17f^!Yzz+cW0%*lCl&Zc#2?{Xw(=_b~ zU_SuGF_x;nM+qEvezjWd24Ht*;MYj7jA=UT{BpTm0AK_KuE@E`;w7{&)lUd(t%RPWb+I`(q8peoLCBy$IhI_@Jtz4B-DM zBK?YTktfyzd=UvDgfo*Q*_iWCWmRp6G44x}q!8JZ>Y?*P2n`whJk(NEZHzJQEeiY) zLg-R(_z}Rs41Ou!p>%kRaaWPxhnyX8qVM!0fc{C6{2oH+mh)I6V~ksh2EWLsc>zEl z00#~Jtvi~DI$QJ8H0=RkU!I3GGx+B-QD^Y0)oND&yYj*Za1j%A2EV<%Jpr(lPwLho z{A}&tXaN5jCh8OZPX_R(Fj1fIe=ykX-^xUN!vD$u{yj|8*?E5U^K%3E_c2k2ov*6P z4c7cenW)3gSJfp3o&O9I_1XDv8o-~!M18LL3k=}TuRSKq&)9#_0RE!dX~Oa|{%0G& zf0yumPJmek@INGcpPm1p!KvOSgzppnGz0jn2;V3C+YR7P!G(Cy%{q6S07>xY`0D2RC z=PDj2@F9e7c8qaD&O;qi)rKTV4#XHqvlI2dKkJk|sXNR7eut_y#TX9~e&?%n96En+ zk|fPJ#GscK^gVF%$m5};Hn1ptj9gzmXFE-~I8 zW8}pir#t_14R-!e)t73P6_zsz&N7l-avvKylu?41YcX+I|!f`|99Y5f|Ujmw1`MQP6DSAsOk!%uYL@m z1b!u0Y9K+ohz!c^QDk|knm2~LV<16AL>f2={7!;J1`?zq(nJaTZVcxe-CZ=2sXAQ_ z0L(R#U<_0ByBy3mlHdZS>UR=60h_v*srr@SAtMPUGEKkB!VDt`u4bBkC&ArD5=>^A zekZ{#MjOMaOw;cqm|`Ts9Zb`&1lJl#FpX*YmEbZX31%`)zY<(xv@v{~Y5J95oY5qB zw)P?v%h%b#SR)DMPy)Xaj51mdUZDhjB^VAs3?{+C?05{-Q;A3rk)Z%81`;f$1U@%~ zK}1dm@RxxE?{hiuxfBEdrvhj*kYG6{flmpdh@70gdpPgo>7Q{DI9(0^^ak*UfdpT2 z5;$EB(lqS>U>CnzRL2rjtJSUmwi-yVmJ&FXpj)KHIQIiwOZ}QN#Iw4Zw(~aoozB1tWybA8N8!lAAmlb1b!v>)IfrRBGR7{ zIJ{Vt$*{~|IXEOD11W*iNua7r3?wK67)%NLO7NC}1XU3^gA(}N6TE73hnbFGs(vTI zJU*VzN$^76cNPI?Vxqp!4xa98^NUC$_W{L_;jvDP{t<*o&>iYf&X|WR3DSzro+IWz+~!6f=M;-uV5neDZzCBZa9(troREs0iaTd-G=o5 O0000 Date: Tue, 30 Mar 2021 21:39:18 +0930 Subject: [PATCH 11/13] remove duplicate connected property --- mycroft/enclosure/gui.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 7a428475d311..547e45fd0498 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -57,16 +57,6 @@ def connected(self): return reply.data["connected"] return False - @property - def connected(self): - """Returns True if at least 1 gui is connected, else False""" - if self.skill.bus: - reply = self.skill.bus.wait_for_response( - Message("gui.status.request"), "gui.status.request.response") - if reply: - return reply.data["connected"] - return False - @property def remote_url(self): """Returns configuration value for url of remote-server.""" From a1d52f8868d50b9d86620071c2084b0e26553dc9 Mon Sep 17 00:00:00 2001 From: Kris Gesling Date: Tue, 30 Mar 2021 21:43:21 +0930 Subject: [PATCH 12/13] pylint --- mycroft/enclosure/gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mycroft/enclosure/gui.py b/mycroft/enclosure/gui.py index 547e45fd0498..df0492e47fd9 100644 --- a/mycroft/enclosure/gui.py +++ b/mycroft/enclosure/gui.py @@ -469,7 +469,7 @@ def stop_video(self): if self.is_video_displayed: self["playStatus"] = "stop" self.skill.bus.emit(Message("mycroft.gui.screen.close", - {"skill_id": self.skill.skill_id})) + {"skill_id": self.skill.skill_id})) self.video_info = None def resume_video(self): From 67bdc75c93f85f825958d1a717f61d0d236f22a8 Mon Sep 17 00:00:00 2001 From: Kris Gesling Date: Tue, 30 Mar 2021 22:11:03 +0930 Subject: [PATCH 13/13] Add tests for video playback --- test/unittests/enclosure/test_gui.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/test/unittests/enclosure/test_gui.py b/test/unittests/enclosure/test_gui.py index 9af11e4f4285..c46dc32a85f2 100644 --- a/test/unittests/enclosure/test_gui.py +++ b/test/unittests/enclosure/test_gui.py @@ -16,7 +16,7 @@ from unittest import TestCase, mock -from mycroft.enclosure.gui import SkillGUI +from mycroft.enclosure.gui import SkillGUI, GUIPlaybackStatus from mycroft.messagebus import Message from mycroft.util.file_utils import resolve_resource_file @@ -106,6 +106,29 @@ def test_show_html(self): self.assertEqual(sent_message.data['page'], [page_url]) self.assertEqual(self.gui['html'], html) + def test_video_playback(self): + self.assertEqual(self.gui.playback_status, GUIPlaybackStatus.UNDEFINED) + self.assertEqual(self.gui.is_video_displayed, False) + video_url = "https://downloads.mycroft.ai/assets/tests/test.mp4" + video_title = "Logo animation" + self.gui.play_video(video_url, video_title) + sent_message = self.mock_skill.bus.emit.call_args_list[-1][0][0] + page_path = resolve_resource_file('ui/SYSTEM_VideoPlayer.qml') + page_url = 'file://{}'.format(page_path) + self.assertEqual(sent_message.data['page'], [page_url]) + self.assertEqual(self.gui['video'], video_url) + self.assertEqual(self.gui['title'], video_title) + self.assertEqual(self.gui.get('repeat'), None) + self.assertEqual(self.gui.is_video_displayed, True) + self.assertEqual(self.gui.playback_status, GUIPlaybackStatus.PLAYING) + self.gui.pause_video() + self.assertEqual(self.gui.playback_status, GUIPlaybackStatus.PAUSED) + self.gui.resume_video() + self.assertEqual(self.gui.playback_status, GUIPlaybackStatus.PLAYING) + self.gui.stop_video() + self.assertEqual(self.gui.playback_status, GUIPlaybackStatus.STOPPED) + self.assertEqual(self.gui.is_video_displayed, False) + def test_send_event(self): """Check that send_event sends message using the correct format.""" params = 'Not again'