Warning, /plasma-bigscreen/mycroft-skill-installer/app/qml/InstallerBox.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2020 Aditya Mehra <aix.m@outlook.org> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 import QtQuick 2.9 0008 import QtQml.Models 2.3 0009 import QtQuick.Controls 2.3 0010 import QtQuick.Layouts 1.3 0011 import QtGraphicalEffects 1.0 0012 import org.kde.kirigami 2.12 as Kirigami 0013 import SysInfo 1.0 0014 import "delegates" as Delegates 0015 0016 import "code/Installer.js" as Installer 0017 0018 Popup { 0019 id: skillInstallerBox 0020 width: parent.width / 2 0021 height: parent.height 0022 x: Math.round((parent.width - width) / 2) 0023 y: Math.round((parent.height - height) / 2) 0024 dim: true 0025 property var getArch: SysInfo.getArch() 0026 property var skillInfo 0027 0028 onOpened: { 0029 installUninstallBtn.forceActiveFocus() 0030 } 0031 0032 function checkPlatformSupport() { 0033 console.log("From QML BOX: " + skillInfo.itemUpdateStatus) 0034 var platforms 0035 if(skillInfo.platforms === "all"){ 0036 platforms = ["all"] 0037 } else { 0038 platforms = skillInfo.platforms.split(",") 0039 } 0040 if(platforms.indexOf("all") !== -1){ 0041 return 1 0042 } else { 0043 if(platforms.indexOf(getArch) !== -1){ 0044 return 1 0045 } else { 0046 installUninstallBtn.enabled = false 0047 skiStatusLabl.text = "Unsupported Architecture" 0048 skiStatusArea.visible = true 0049 return 0 0050 } 0051 } 0052 } 0053 0054 background: Rectangle { 0055 color: Kirigami.Theme.backgroundColor 0056 layer.enabled: true 0057 anchors.fill: parent 0058 anchors.margins: Kirigami.Units.gridUnit 0059 layer.effect: DropShadow { 0060 horizontalOffset: 0 0061 verticalOffset: 2 0062 radius: 8.0 0063 samples: 8 0064 color: Qt.rgba(0,0,0,0.6) 0065 } 0066 } 0067 0068 Item { 0069 id: descBox 0070 anchors.fill: parent 0071 anchors.margins: Kirigami.Units.gridUnit 0072 0073 RowLayout { 0074 id: desc 0075 anchors.top: parent.top 0076 width: parent.width 0077 height: parent.height / 4 0078 0079 Image { 0080 id: skiicon 0081 Layout.preferredWidth: Kirigami.Units.iconSizes.huge 0082 Layout.preferredHeight: Kirigami.Units.iconSizes.huge 0083 Layout.alignment: Qt.AlignCenter 0084 Layout.leftMargin: Kirigami.Units.smallSpacing 0085 fillMode: Image.Stretch 0086 source: skillInfo ? (typeof skillInfo.itemPreviewPic !== "undefined" ? skillInfo.itemPreviewPic : "") : "" 0087 } 0088 0089 Kirigami.Heading { 0090 visible: text.length > 0 0091 wrapMode: Text.WordWrap 0092 horizontalAlignment: Text.AlignHCenter 0093 verticalAlignment: Text.AlignVCenter 0094 Layout.fillWidth: true 0095 Layout.fillHeight: true 0096 level: 3 0097 maximumLineCount: 3 0098 elide: Text.ElideRight 0099 color: Kirigami.Theme.textColor 0100 text: skillInfo ? (typeof skillInfo.itemDescription !== "undefined" ? skillInfo.itemDescription : "") : "" 0101 } 0102 } 0103 0104 Kirigami.Separator { 0105 id: descSept1 0106 anchors.top: desc.bottom 0107 anchors.left: parent.left 0108 anchors.right: parent.right 0109 anchors.leftMargin: Kirigami.Units.smallSpacing 0110 anchors.rightMargin: Kirigami.Units.smallSpacing 0111 height: 1 0112 } 0113 0114 Kirigami.Heading { 0115 id: descListHeading 0116 level: 3 0117 anchors.top: descSept1.bottom 0118 width: parent.width 0119 height: Kirigami.Units.gridUnit * 2 0120 anchors.left: parent.left 0121 anchors.leftMargin: Kirigami.Units.smallSpacing 0122 text: "Some Example's To Try: " + "<i>Hey Mycroft..</i>" 0123 } 0124 0125 Kirigami.Separator { 0126 id: descSept2 0127 anchors.top: descListHeading.bottom 0128 anchors.left: parent.left 0129 anchors.right: parent.right 0130 anchors.leftMargin: Kirigami.Units.smallSpacing 0131 anchors.rightMargin: Kirigami.Units.smallSpacing 0132 height: 1 0133 } 0134 0135 Item { 0136 anchors.top: descSept2.bottom 0137 anchors.topMargin: Kirigami.Units.smallSpacing 0138 width: parent.width 0139 height: parent.height / 2 0140 0141 Kirigami.CardsListView { 0142 id: exampleRep 0143 anchors.fill: parent 0144 model: skillInfo ? (typeof skillInfo.examples !== "undefined" ? skillInfo.examples.split(",") : "") : "" 0145 spacing: 1 0146 clip: true 0147 delegate: Delegates.ListDelegate{} 0148 } 0149 } 0150 0151 Rectangle { 0152 id: skiStatusArea 0153 anchors.bottom: installUninstallBtn.top 0154 anchors.bottomMargin: Kirigami.Units.smallSpacing 0155 color: skillInfo ? (typeof skillInfo.itemUpdateStatus !== "undefined" && skillInfo.itemUpdateStatus ? "#33BB5E" : Kirigami.Theme.highlightColor) : "" 0156 height: Kirigami.Units.gridUnit * 2 0157 visible: skillInfo ? (typeof skillInfo.itemInstallStatus !== "undefined" ? skillInfo.itemInstallStatus : "") : "" 0158 width: parent.width 0159 0160 Kirigami.Heading { 0161 id: skiStatusLabl 0162 level: 3 0163 text: skillInfo ? (typeof skillInfo.itemUpdateStatus !== "undefined" && skillInfo.itemUpdateStatus ? "Status: Update Available" : "Status: Installed") : "" 0164 anchors.fill: parent 0165 visible: skiStatusArea.visible 0166 anchors.leftMargin: Kirigami.Units.smallSpacing 0167 } 0168 } 0169 0170 Button { 0171 id: installUninstallBtn 0172 anchors.bottom: parent.bottom 0173 anchors.left: parent.left 0174 anchors.leftMargin: Kirigami.Units.smallSpacing 0175 anchors.rightMargin: Kirigami.Units.smallSpacing 0176 anchors.bottomMargin: Kirigami.Units.smallSpacing 0177 anchors.right: parent.right 0178 height: Kirigami.Units.gridUnit * 2 0179 0180 background: Rectangle { 0181 Kirigami.Theme.colorSet: Kirigami.Theme.Button 0182 color: installUninstallBtn.down ? Kirigami.Theme.highlightColor : Kirigami.Theme.backgroundColor 0183 border.color: installUninstallBtn.activeFocus ? Kirigami.Theme.hoverColor : Kirigami.Theme.disabledTextColor 0184 border.width: 1 0185 } 0186 0187 contentItem: Label { 0188 horizontalAlignment: Text.AlignHCenter 0189 verticalAlignment: Text.AlignVCenter 0190 elide: Text.ElideRight 0191 text: skillInfo ? (skillInfo.itemUpdateStatus ? "Update" : (skillInfo.itemInstallStatus ? "Uninstall" : "Install")) : "" 0192 } 0193 0194 onClicked: { 0195 if(skillInfo.itemUpdateStatus){ 0196 installerArea.initializeUpdater() 0197 } else { 0198 installerArea.initializeInstaller() 0199 } 0200 } 0201 0202 Keys.onReturnPressed: { 0203 clicked() 0204 } 0205 } 0206 } 0207 }