Warning, /plasma/plasma-desktop/applets/kimpanel/package/contents/ui/StatusIcon.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2014 Weng Xuetian <wengxt@gmail.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.0
0008 import QtQuick.Layouts 1.1
0009 import org.kde.plasma.plasmoid 2.0
0010 import org.kde.plasma.core as PlasmaCore
0011 import org.kde.plasma.components 3.0 as PlasmaComponents3
0012 import org.kde.kquickcontrolsaddons 2.0
0013 import org.kde.kirigami 2.20 as Kirigami
0014
0015 Item {
0016 id: statusIcon
0017 property string icon;
0018 property string label;
0019 property string tip;
0020 property string hint;
0021 signal triggered(variant button);
0022 property int iconSize: Kirigami.Units.iconSizes.roundedIconSize(Math.min(width, height))
0023
0024 opacity: 'disable' == hint ? 0.3 : 1
0025
0026 function extractLabelString(l) {
0027 if (l.length >= 2 && l.charCodeAt(0) < 127 && l.charCodeAt(1) < 127) {
0028 return l.substring(0, 2);
0029 } else {
0030 return l.substring(0, 1);
0031 }
0032 }
0033
0034 Kirigami.Icon {
0035 id: imageIcon
0036 anchors.centerIn: parent
0037 width: iconSize
0038 height: iconSize
0039 scale: mouseArea.pressed ? 0.9 : 1
0040 source: statusIcon.icon
0041 visible: statusIcon.icon.length > 0
0042 animated: false
0043 // active: mouseArea.containsMouse
0044 }
0045 PlasmaComponents3.Label {
0046 id: textIcon
0047 anchors.centerIn: parent
0048 width: iconSize
0049 height: iconSize
0050 scale: (mouseArea.pressed ? 0.9 : 1)
0051 // a reasonable large size to make Text.Fit work
0052 minimumPointSize: 0
0053 font.pointSize: 1024
0054 fontSizeMode: Text.Fit
0055 verticalAlignment: Text.AlignVCenter
0056 horizontalAlignment: Text.AlignHCenter
0057 text: extractLabelString(label)
0058 textFormat: Text.PlainText
0059 visible: icon.length == 0
0060 }
0061
0062 MouseArea {
0063 id: mouseArea
0064 anchors.fill: parent
0065 hoverEnabled: true
0066 acceptedButtons: Qt.LeftButton | Qt.RightButton
0067 onClicked: {
0068 statusIcon.triggered(mouse.button);
0069 }
0070
0071 PlasmaCore.ToolTipArea {
0072 anchors.fill: parent
0073 mainText: statusIcon.label
0074 subText: statusIcon.tip
0075 icon: statusIcon.icon
0076 }
0077 }
0078 }