Warning, /plasma-bigscreen/mycroft-skill-installer/app/qml/InstallerArea.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 org.kde.kirigami 2.12 as Kirigami
0012 import QMLTermWidget 1.0
0013
0014 import "code/Installer.js" as Installer
0015 import "code/SkillUtils.js" as SkillUtils
0016
0017 Drawer {
0018 id: mainInstallerDrawer
0019 edge: Qt.BottomEdge
0020 width: window.width
0021 height: window.height / 2
0022 dragMargin: 0
0023 interactive: true
0024 dim: false
0025
0026 property var currentPos
0027 property bool hasSystemDeps
0028
0029 function initializeInstaller() {
0030 Installer.initInstallation()
0031 }
0032
0033 function initializeUpdater() {
0034 Installer.initUpdate()
0035 }
0036
0037 ColumnLayout {
0038 anchors.fill: parent
0039
0040 Rectangle {
0041 id: pBarRect
0042 visible: true
0043 color: Kirigami.Theme.backgroundColor
0044 Layout.fillWidth: true
0045 Layout.preferredHeight: Kirigami.Units.gridUnit * 4
0046
0047 Label {
0048 id: installStep
0049 visible: text.length > 0
0050 anchors.top: parent.top
0051 anchors.left: parent.left
0052 anchors.right: parent.right
0053 anchors.leftMargin: Kirigami.Units.largeSpacing
0054 anchors.rightMargin: Kirigami.Units.largeSpacing
0055 height: Kirigami.Units.gridUnit * 2
0056 wrapMode: Text.WordWrap
0057 horizontalAlignment: Text.AlignLeft
0058 maximumLineCount: 1
0059 elide: Text.ElideRight
0060 color: Kirigami.Theme.textColor
0061 }
0062
0063 ProgressBar {
0064 id: pBar
0065 anchors.top: installStep.bottom
0066 anchors.topMargin: Kirigami.Units.largeSpacing
0067 anchors.left: parent.left
0068 anchors.right: parent.right
0069 anchors.leftMargin: Kirigami.Units.largeSpacing
0070 anchors.rightMargin: Kirigami.Units.largeSpacing
0071 anchors.bottom: parent.bottom
0072 }
0073 }
0074
0075 Kirigami.Separator {
0076 Layout.fillWidth: true
0077 Layout.preferredHeight: 1
0078 }
0079
0080 Rectangle {
0081 id: terminalArea
0082 Layout.fillWidth: true
0083 Layout.preferredHeight: parent.height - (pBarRect.height + Kirigami.Units.largeSpacing)
0084 visible: true
0085 color: Kirigami.Theme.backgroundColor
0086
0087 // @disable-check M300
0088 QMLTermWidget {
0089 id: terminal
0090 anchors.top: parent.top
0091 anchors.bottom: parent.bottom
0092 anchors.left: parent.left
0093 anchors.right: parent.right
0094 anchors.margins: 8
0095 font.family: "Monospace"
0096 font.pointSize: 8
0097 colorScheme: "cool-retro-term"
0098 // @disable-check M300
0099 session: QMLTermSession{
0100 id: mainsession
0101 property bool hasFinished: false
0102 initialWorkingDirectory: "$HOME"
0103 onMatchFound: {
0104 console.log("found at: %1 %2 %3 %4".arg(startColumn).arg(startLine).arg(endColumn).arg(endLine));
0105 }
0106 onNoMatchFound: {
0107 console.log("not found");
0108 }
0109 onFinished: {
0110 switch(currentPos){
0111 case "cleanInstallerCompleted":
0112 hasFinished = true;
0113 if(hasSystemDeps){
0114 Installer.getSysDepInstallerOne()
0115 }
0116 else {
0117 Installer.getInstallers()
0118 }
0119 break;
0120 case "cleanInstallerSysDepOneCompleted":
0121 hasFinished = true;
0122 Installer.cleanSysDepInstallerFileTwo()
0123 break
0124 case "cleanInstallerSysDepTwoCompleted":
0125 hasFinished = true;
0126 Installer.cleanSysDepInstallerFileThree()
0127 break
0128 case "installerOneDownloaded":
0129 hasFinished = true;
0130 Installer.getSysDepInstallerTwo()
0131 break
0132 case "installerTwoDownloaded":
0133 hasFinished = true;
0134 Installer.getSysDepInstallerThree()
0135 break
0136 case "installerDownloaded":
0137 hasFinished = true;
0138 if(hasSystemDeps){
0139 Installer.setPermissionSysDepInstallerOne()
0140 } else {
0141 Installer.setPermission()
0142 }
0143 break;
0144
0145 case "permissionOneSet":
0146 hasFinished = true;
0147 Installer.setPermissionSysDepInstallerTwo()
0148 break
0149
0150 case "permissionTwoSet":
0151 hasFinished = true;
0152 Installer.setPermissionSysDepInstallerThree()
0153 break
0154
0155 case "permissionSet":
0156 hasFinished = true;
0157 if(hasSystemDeps){
0158 Installer.runSysDepInstallerOne()
0159 } else {
0160 Installer.runInstallers()
0161 }
0162 break;
0163
0164 case "installerOneFinished":
0165 hasFinished = true;
0166 Installer.runSysDepInstallerTwo()
0167 break;
0168
0169 case "installerFinished":
0170 hasFinished = true
0171 //getSkillStatus()
0172 Installer.cleanBranchInstaller()
0173 break;
0174 case "cleanBranchInstallerCompleted":
0175 hasFinished = true
0176 Installer.getBranchInstaller()
0177 break;
0178 case "branchInstallerDownloaded":
0179 hasFinished = true
0180 Installer.setPermissionBranchInstaller()
0181 break;
0182 case "branchPermissionSet":
0183 hasFinished = true
0184 Installer.runBranchInstallers()
0185 break;
0186 case "branchInstallerFinished":
0187 hasFinished = true
0188 installStep.text = "INFO - Installation Completed"
0189 SkillUtils.delay(3000, function() {
0190 installerBox.close()
0191 installerView.updateInstallerModel()
0192 mainInstallerDrawer.close()
0193 })
0194 break;
0195 case "installDesktopFile":
0196 hasFinished = true
0197 Installer.cleanDesktopFileInstaller()
0198 break;
0199 case "cleanDesktopInstallerCompleted":
0200 hasFinished = true
0201 Installer.getDesktopFileInstaller()
0202 break;
0203 case "desktopFileInstallerDownloaded":
0204 hasFinished = true
0205 Installer.setPermissionDesktopFileInstaller()
0206 break;
0207 case "desktopFilePermissionSet":
0208 hasFinished = true
0209 Installer.runDesktopFileInstallers();
0210 break;
0211 case "desktopFileInstallerFinished":
0212 hasFinished = true
0213 installStep.text = "INFO - Installation Completed"
0214 SkillUtils.delay(3000, function() {
0215 installerBox.close()
0216 installerView.updateInstallerModel()
0217 mainInstallerDrawer.close()
0218 })
0219 break;
0220 //RemoverLogic
0221 case "cleanRemoverCompleted":
0222 hasFinished = true
0223 Installer.getRemovers()
0224 break;
0225 case "cleanRemoverOneCompleted":
0226 hasFinished = true
0227 Installer.cleanRemoverTwo()
0228 break;
0229 case "removerDownloaded":
0230 hasFinished = true
0231 Installer.setPermissionRemover()
0232 break;
0233 case "permissionSetRemover":
0234 hasFinished = true
0235 Installer.runRemover()
0236 break;
0237 case "getRemoveDesktopFile":
0238 hasFinished = true
0239 Installer.getRemoveDesktopFile()
0240 break;
0241 case "setRemoveDesktopFilePerm":
0242 hasFinished = true
0243 Installer.setRemoveDesktopFilePerm()
0244 break;
0245 case "removerDesktopFilePermsSet":
0246 hasFinished = true
0247 Installer.runRemoverDesktopFile()
0248 break;
0249 case "removerFinished":
0250 hasFinished = true
0251 installStep.text = "INFO - Uninstall Completed"
0252 SkillUtils.delay(3000, function() {
0253 installerBox.close()
0254 installerView.updateInstallerModel()
0255 mainInstallerDrawer.close()
0256 })
0257 break;
0258 case "updaterCleared":
0259 hasFinished = true
0260 Installer.getUpdater()
0261 break;
0262 case "updaterDownloaded":
0263 hasFinished = true
0264 Installer.setUpdaterPermission()
0265 break;
0266 case "updaterPermsSet":
0267 hasFinished = true
0268 Installer.runUpdater()
0269 break;
0270 case "updaterFinished":
0271 hasFinished = true
0272 installStep.text = "INFO - Update Completed"
0273 SkillUtils.delay(3000, function() {
0274 installerBox.close()
0275 installerView.updateInstallerModel()
0276 mainInstallerDrawer.close()
0277 })
0278 break;
0279 }
0280 }
0281 }
0282
0283 QMLTermScrollbar {
0284 terminal: terminal
0285 width: 20
0286 Rectangle {
0287 opacity: 0.4
0288 anchors.margins: 5
0289 radius: width * 0.5
0290 anchors.fill: parent
0291 }
0292 }
0293 }
0294 }
0295 }
0296 }