Warning, /system/plasma-packagekit/applet/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 Copyright © 2017 Harald Sitter <sitter@kde.org> 0003 0004 This program is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU General Public License as 0006 published by the Free Software Foundation; either version 2 of 0007 the License or (at your option) version 3 or any later version 0008 accepted by the membership of KDE e.V. (or its successor approved 0009 by the membership of KDE e.V.), which shall act as a proxy 0010 defined in Section 14 of version 3 of the license. 0011 0012 This program 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 0015 GNU General Public License for more details. 0016 0017 You should have received a copy of the GNU General Public License 0018 along with this program. If not, see <http://www.gnu.org/licenses/>. 0019 */ 0020 0021 import QtQuick 2.0 0022 import QtQuick.Layouts 1.0 0023 0024 import org.kde.plasma.core 2.1 as PlasmaCore 0025 import org.kde.plasma.extras 2.0 as PlasmaExtras 0026 import org.kde.plasma.plasmoid 2.0 0027 0028 import org.kde.plasma.private.packagekit 0.1 0029 0030 import "../code/role.js" as Role 0031 0032 Item { 0033 id: main 0034 0035 function stateText() { 0036 return Daemon.isRunning ? i18n("PackageKit is Running") : i18n("PackageKit is not Running") 0037 } 0038 0039 function flavorText() { 0040 var options = [''] 0041 0042 if (Daemon.isRunning && Daemon.locked) { 0043 // Running and doing something important. 0044 options = [ 0045 i18n("Aligning the Flux Capacitor"), 0046 i18n("Preparing for brain surgery"), 0047 i18n("Initiating launch sequence"), 0048 i18n("Checking matrix for glitches"), 0049 i18n("Using the Force") 0050 ] 0051 } else if (Daemon.isRunning && !Daemon.locked) { 0052 // Running but not doing anything worthwhile. 0053 options = [ 0054 i18n("Watering the flowers"), 0055 i18n("Having a chat with Systemd"), 0056 i18n("Ordering some pizza"), 0057 i18n("Dusting the bookshelf"), 0058 i18n("Learning the flute") 0059 ] 0060 } else if (!Daemon.isRunning) { 0061 // Not even running 0062 options = [ 0063 i18n("zzzzZZZZZZzz") 0064 ] 0065 } 0066 0067 return options[Math.floor(Math.random() * options.length)]; 0068 } 0069 0070 Layout.minimumHeight: units.gridUnit * 12 0071 Layout.minimumWidth: units.gridUnit * 12 0072 Layout.preferredHeight: units.gridUnit * 20 0073 Layout.preferredWidth: units.gridUnit * 20 0074 // Plasmoid.switchWidth: units.gridUnit * 12 0075 // Plasmoid.switchHeight: units.gridUnit * 12 0076 0077 // State is set through timer so we avoid state-switch spam (see below). 0078 Plasmoid.status: PlasmaCore.Types.PassiveStatus 0079 // FIXME: need to talk to AndreasK about iconing 0080 Plasmoid.icon: "apper" // plasmoid.status === PlasmaCore.Types.ActiveStatus ? "package-install" : "apper" 0081 Plasmoid.toolTipMainText: stateText() 0082 Plasmoid.toolTipSubText: flavorText() 0083 Plasmoid.compactRepresentation: PlasmaCore.IconItem { 0084 source: plasmoid.icon 0085 colorGroup: PlasmaCore.ColorScope.colorGroup 0086 } 0087 0088 Connections { 0089 target: Daemon 0090 onIsRunningChanged: { 0091 plasmoid.toolTipMainText = stateText() 0092 plasmoid.toolTipSubText = flavorText() 0093 } 0094 onLockedChanged: { 0095 plasmoid.toolTipSubText = flavorText() 0096 } 0097 } 0098 0099 StateSwitcher {} 0100 0101 ListView { 0102 anchors.fill: parent 0103 model: FilteredTransactionModel { 0104 id: transactionModel 0105 filters: Role.mappedRoles() // Whitelist 0106 onCountChanged: plasmoid.toolTipSubText = flavorText() 0107 } 0108 delegate: TransactionListItem {} 0109 } 0110 0111 PlasmaExtras.Heading { 0112 anchors.centerIn: parent 0113 level: 3 0114 opacity: 0.6 0115 text: plasmoid.toolTipSubText 0116 visible: transactionModel.count === 0 0117 } 0118 }