Warning, /plasma/plasma-desktop/applets/kicker/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.15 0008 import QtQuick.Layouts 1.15 0009 0010 import org.kde.plasma.components 3.0 as PlasmaComponents3 0011 import org.kde.plasma.core as PlasmaCore 0012 import org.kde.ksvg 1.0 as KSvg 0013 import org.kde.plasma.plasmoid 2.0 0014 import org.kde.kirigami 2.20 as Kirigami 0015 0016 import org.kde.plasma.private.kicker 0.1 as Kicker 0017 0018 PlasmoidItem { 0019 id: kicker 0020 0021 anchors.fill: parent 0022 0023 signal reset 0024 0025 property bool isDash: Plasmoid.pluginName === "org.kde.plasma.kickerdash" 0026 0027 switchWidth: isDash || !fullRepresentationItem ? 0 :fullRepresentationItem.Layout.minimumWidth 0028 switchHeight: isDash || !fullRepresentationItem ? 0 :fullRepresentationItem.Layout.minimumHeight 0029 0030 // this is a bit of a hack to prevent Plasma from spawning a dialog on its own when we're Dash 0031 preferredRepresentation: isDash ?fullRepresentation : null 0032 0033 compactRepresentation: isDash ? null : compactRepresentation 0034 fullRepresentation: isDash ? compactRepresentation : menuRepresentation 0035 0036 property Component itemListDialogComponent: Qt.createComponent(Qt.resolvedUrl("./ItemListDialog.qml")) 0037 property Item dragSource: null 0038 0039 property QtObject globalFavorites: rootModel.favoritesModel 0040 property QtObject systemFavorites: rootModel.systemFavoritesModel 0041 0042 Plasmoid.icon: Plasmoid.configuration.useCustomButtonImage ? Plasmoid.configuration.customButtonImage : Plasmoid.configuration.icon 0043 0044 onSystemFavoritesChanged: { 0045 systemFavorites.favorites = Plasmoid.configuration.favoriteSystemActions; 0046 } 0047 0048 function action_menuedit() { 0049 processRunner.runMenuEditor(); 0050 } 0051 0052 function updateSvgMetrics() { 0053 lineSvg.horLineHeight = lineSvg.elementSize("horizontal-line").height; 0054 lineSvg.vertLineWidth = lineSvg.elementSize("vertical-line").width; 0055 } 0056 0057 Component { 0058 id: compactRepresentation 0059 CompactRepresentation {} 0060 } 0061 0062 Component { 0063 id: menuRepresentation 0064 MenuRepresentation {} 0065 } 0066 0067 Kicker.RootModel { 0068 id: rootModel 0069 0070 autoPopulate: false 0071 0072 appNameFormat: Plasmoid.configuration.appNameFormat 0073 flat: kicker.isDash || Plasmoid.configuration.limitDepth 0074 sorted: Plasmoid.configuration.alphaSort 0075 showSeparators: !kicker.isDash 0076 // TODO: appletInterface property now can be ported to "applet" and have the real Applet* assigned directly 0077 appletInterface: kicker 0078 0079 showAllApps: kicker.isDash 0080 showAllAppsCategorized: true 0081 showTopLevelItems: !kicker.isDash 0082 showRecentApps: Plasmoid.configuration.showRecentApps 0083 showRecentDocs: Plasmoid.configuration.showRecentDocs 0084 recentOrdering: Plasmoid.configuration.recentOrdering 0085 0086 onShowRecentAppsChanged: { 0087 Plasmoid.configuration.showRecentApps = showRecentApps; 0088 } 0089 0090 onShowRecentDocsChanged: { 0091 Plasmoid.configuration.showRecentDocs = showRecentDocs; 0092 } 0093 0094 onRecentOrderingChanged: { 0095 Plasmoid.configuration.recentOrdering = recentOrdering; 0096 } 0097 0098 Component.onCompleted: { 0099 favoritesModel.initForClient("org.kde.plasma.kicker.favorites.instance-" + Plasmoid.id) 0100 0101 if (!Plasmoid.configuration.favoritesPortedToKAstats) { 0102 if (favoritesModel.count < 1) { 0103 favoritesModel.portOldFavorites(Plasmoid.configuration.favoriteApps); 0104 } 0105 Plasmoid.configuration.favoritesPortedToKAstats = true; 0106 } 0107 } 0108 } 0109 0110 Connections { 0111 target: globalFavorites 0112 0113 function onFavoritesChanged() { 0114 Plasmoid.configuration.favoriteApps = target.favorites; 0115 } 0116 } 0117 0118 Connections { 0119 target: systemFavorites 0120 0121 function onFavoritesChanged() { 0122 Plasmoid.configuration.favoriteSystemActions = target.favorites; 0123 } 0124 } 0125 0126 Connections { 0127 target: Plasmoid.configuration 0128 0129 function onFavoriteAppsChanged() { 0130 globalFavorites.favorites = Plasmoid.configuration.favoriteApps; 0131 } 0132 0133 function onFavoriteSystemActionsChanged() { 0134 systemFavorites.favorites = Plasmoid.configuration.favoriteSystemActions; 0135 } 0136 } 0137 0138 Kicker.RunnerModel { 0139 id: runnerModel 0140 0141 appletInterface: kicker 0142 0143 favoritesModel: globalFavorites 0144 0145 runners: { 0146 const results = ["krunner_services", "krunner_systemsettings"]; 0147 0148 if (kicker.isDash) { 0149 results.push("krunner_sessions", "krunner_powerdevil", "calculator", "unitconverter"); 0150 } 0151 0152 if (Plasmoid.configuration.useExtraRunners) { 0153 results.push(...Plasmoid.configuration.extraRunners); 0154 } 0155 0156 return results; 0157 } 0158 } 0159 0160 Kicker.DragHelper { 0161 id: dragHelper 0162 0163 dragIconSize: Kirigami.Units.iconSizes.medium 0164 } 0165 0166 Kicker.ProcessRunner { 0167 id: processRunner 0168 } 0169 0170 Kicker.WindowSystem { 0171 id: windowSystem 0172 } 0173 0174 KSvg.FrameSvgItem { 0175 id: highlightItemSvg 0176 0177 visible: false 0178 0179 imagePath: "widgets/viewitem" 0180 prefix: "hover" 0181 } 0182 0183 KSvg.FrameSvgItem { 0184 id: listItemSvg 0185 0186 visible: false 0187 0188 imagePath: "widgets/listitem" 0189 prefix: "normal" 0190 } 0191 0192 KSvg.Svg { 0193 id: lineSvg 0194 imagePath: "widgets/line" 0195 0196 property int horLineHeight 0197 property int vertLineWidth 0198 } 0199 0200 PlasmaComponents3.Label { 0201 id: toolTipDelegate 0202 0203 width: contentWidth 0204 height: undefined 0205 0206 property Item toolTip 0207 0208 text: toolTip ? toolTip.text : "" 0209 textFormat: Text.PlainText 0210 } 0211 0212 Timer { 0213 id: justOpenedTimer 0214 0215 repeat: false 0216 interval: 600 0217 } 0218 0219 Connections { 0220 target: kicker 0221 0222 function onExpandedChanged(expanded) { 0223 if (expanded) { 0224 windowSystem.monitorWindowVisibility(Plasmoid.fullRepresentationItem); 0225 justOpenedTimer.start(); 0226 } else { 0227 kicker.reset(); 0228 } 0229 } 0230 } 0231 0232 function resetDragSource() { 0233 dragSource = null; 0234 } 0235 0236 function enableHideOnWindowDeactivate() { 0237 Plasmoid.hideOnWindowDeactivate = true; 0238 } 0239 0240 Plasmoid.contextualActions: [ 0241 PlasmaCore.Action { 0242 text: i18n("Edit Applications…") 0243 icon.name: "kmenuedit" 0244 visible: Plasmoid.immutability !== PlasmaCore.Types.SystemImmutable 0245 onTriggered: processRunner.runMenuEditor() 0246 } 0247 ] 0248 0249 Component.onCompleted: { 0250 if (Plasmoid.hasOwnProperty("activationTogglesExpanded")) { 0251 Plasmoid.activationTogglesExpanded = !kicker.isDash 0252 } 0253 0254 windowSystem.focusIn.connect(enableHideOnWindowDeactivate); 0255 kicker.hideOnWindowDeactivate = true; 0256 0257 updateSvgMetrics(); 0258 PlasmaCore.Theme.themeChanged.connect(updateSvgMetrics); 0259 0260 rootModel.refreshed.connect(reset); 0261 0262 dragHelper.dropped.connect(resetDragSource); 0263 } 0264 }