Warning, /utilities/mycroft-plasmoid/plasmoid/contents/ui/FullRepresentation.qml is written in an unsupported language. File is not indexed.
0001 /* Copyright 2019 Aditya Mehra <aix.m@outlook.com> 0002 Copyright 2018 Marco Martin <mart@kde.org> 0003 0004 This library is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Lesser General Public 0006 License as published by the Free Software Foundation; either 0007 version 2.1 of the License, or (at your option) version 3, or any 0008 later version accepted by the membership of KDE e.V. (or its 0009 successor approved by the membership of KDE e.V.), which shall 0010 act as a proxy defined in Section 6 of version 3 of the license. 0011 0012 This library is distributed in the hope that it will be useful, 0013 but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0015 Lesser General Public License for more details. 0016 0017 You should have received a copy of the GNU Lesser General Public 0018 License along with this library. If not, see <http://www.gnu.org/licenses/>. 0019 */ 0020 0021 import QtQuick 2.9 0022 import QtQml.Models 2.2 0023 import QtQuick.Controls 2.2 as Controls 0024 import QtQuick.Layouts 1.3 0025 import org.kde.plasma.core 2.0 as PlasmaCore 0026 import org.kde.plasma.components 2.0 as PlasmaComponents 0027 import org.kde.plasma.extras 2.0 as PlasmaExtras 0028 import org.kde.plasma.plasmoid 2.0 0029 import org.kde.kirigami 2.5 as Kirigami 0030 import org.kde.private.mycroftplasmoid 1.0 as MycroftPlasmoid 0031 import Mycroft 1.0 as Mycroft 0032 0033 Item { 0034 id: root 0035 implicitWidth: Kirigami.Units.gridUnit * 20 0036 implicitHeight: Kirigami.Units.gridUnit * 32 0037 property bool cfg_notifications: plasmoid.configuration.notifications 0038 property var incomingString 0039 0040 Connections { 0041 target: Mycroft.MycroftController 0042 onIntentRecevied: { 0043 if(type == "recognizer_loop:utterance") { 0044 incomingString = data.utterances[0] 0045 } 0046 } 0047 } 0048 0049 Item { 0050 id: topBar 0051 anchors.top: parent.top 0052 anchors.left: parent.left 0053 anchors.right: parent.right 0054 height: Kirigami.Units.gridUnit * 4 0055 0056 ColumnLayout{ 0057 anchors.fill: parent 0058 0059 TopBarViewComponent { 0060 id: topBarView 0061 Layout.fillWidth: true 0062 Layout.preferredHeight: Kirigami.Units.gridUnit * 2 0063 } 0064 0065 PlasmaCore.SvgItem { 0066 Layout.fillWidth: true 0067 Layout.preferredHeight: horlineSvg.elementSize("horizontal-line").height 0068 0069 elementId: "horizontal-line" 0070 svg: PlasmaCore.Svg { 0071 id: horlineSvg2; 0072 imagePath: "widgets/line" 0073 } 0074 } 0075 0076 PlasmaComponents.TabBar { 0077 id: tabBar 0078 visible: true 0079 Layout.fillWidth: true 0080 Layout.preferredHeight: Kirigami.Units.gridUnit * 1.5 0081 0082 PlasmaComponents.TabButton { 0083 id: mycroftTab 0084 iconSource: "go-home" 0085 text: i18n("Conversation") 0086 } 0087 0088 PlasmaComponents.TabButton { 0089 id: mycroftSkillsTab 0090 iconSource: "games-hint" 0091 text: i18n("Hints & Tips") 0092 } 0093 0094 PlasmaComponents.TabButton { 0095 id: mycroftMSMinstTab 0096 iconSource: "kmouth-phresebook-new" 0097 text: i18n("Skill Browser") 0098 } 0099 } 0100 0101 PlasmaCore.SvgItem { 0102 Layout.fillWidth: true 0103 Layout.preferredHeight: horlineSvg.elementSize("horizontal-line").height 0104 0105 elementId: "horizontal-line" 0106 svg: PlasmaCore.Svg { 0107 id: horlineSvg; 0108 imagePath: "widgets/line" 0109 } 0110 } 0111 } 0112 } 0113 0114 ColumnLayout { 0115 anchors.left: parent.left 0116 anchors.right: parent.right 0117 anchors.bottom: bottomBar.top 0118 anchors.top: topBar.bottom 0119 anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0120 opacity: Mycroft.MycroftController.status == Mycroft.MycroftController.Open 0121 visible: tabBar.currentTab == mycroftTab; 0122 0123 Behavior on opacity { 0124 OpacityAnimator { 0125 duration: Kirigami.Units.longDuration 0126 easing.type: Easing.InOutCubic 0127 } 0128 } 0129 0130 Item { 0131 id: delegateItem 0132 Layout.fillWidth: true 0133 Layout.fillHeight: true 0134 0135 Mycroft.SkillView { 0136 id: skillView 0137 anchors.fill: parent 0138 Kirigami.Theme.colorSet: Kirigami.Theme.View 0139 anchors.margins: Kirigami.Units.largeSpacing 0140 clip: true 0141 onCurrentItemChanged: { 0142 backgroundVisible = false 0143 } 0144 0145 Connections { 0146 id: mycroftConnection 0147 target: Mycroft.MycroftController 0148 0149 onFallbackTextRecieved: { 0150 Mycroft.MycroftController.sendRequest("skill.desktop.applet.conversation", {"query": incomingString, "speak": data.utterance}) 0151 if (!plasmoid.expanded && cfg_notifications == true) { 0152 var post = data.utterance; 0153 var title = "Mycroft's Reply:" 0154 var notiftext = " " + post; 0155 MycroftPlasmoid.Notify.mycroftResponse(title, notiftext); 0156 } 0157 } 0158 } 0159 } 0160 } 0161 } 0162 0163 Item { 0164 id: bottomBar 0165 anchors.bottom: root.bottom 0166 anchors.left: root.left 0167 anchors.right: root.right 0168 height: Kirigami.Units.gridUnit * 2 0169 0170 BottomBarViewComponent { 0171 id: bottomBarView 0172 } 0173 } 0174 0175 Image { 0176 anchors.centerIn: parent 0177 opacity: Mycroft.MycroftController.status != Mycroft.MycroftController.Open 0178 source: "../images/logo.png" 0179 0180 Behavior on opacity { 0181 OpacityAnimator { 0182 duration: Kirigami.Units.longDuration 0183 easing.type: Easing.InOutCubic 0184 } 0185 } 0186 } 0187 0188 ColumnLayout { 0189 id: mycroftSkillscolumntab 0190 visible: tabBar.currentTab == mycroftSkillsTab; 0191 anchors.left: parent.left 0192 anchors.right: parent.right 0193 anchors.bottom: bottomBar.top 0194 anchors.top: topBar.bottom 0195 anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0196 anchors.bottomMargin: Kirigami.Units.smallSpacing 0197 0198 HintsViewComponent { 0199 id: hintsView 0200 } 0201 } 0202 0203 ColumnLayout { 0204 id: mycroftMsmColumn 0205 visible: tabBar.currentTab == mycroftMSMinstTab; 0206 anchors.left: parent.left 0207 anchors.right: parent.right 0208 anchors.bottom: bottomBar.top 0209 anchors.top: topBar.bottom 0210 anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0211 anchors.bottomMargin: Kirigami.Units.smallSpacing 0212 0213 SkillsInstallerComponent{ 0214 id: skillsInstallerView 0215 } 0216 } 0217 }