Warning, /plasma/latte-dock/declarativeimports/abilities/items/basicitem/ShortcutBadge.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com>
0003 SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005
0006 import QtQuick 2.7
0007 import QtGraphicalEffects 1.0
0008
0009 import org.kde.plasma.plasmoid 2.0
0010 import org.kde.latte.components 1.0 as LatteComponents
0011
0012 Loader{
0013 id: shorcutBadge
0014 active: abilityItem.abilities.shortcuts.showPositionShortcutBadges && !abilityItem.isSeparator && !abilityItem.isHidden && abilityItem.abilities.shortcuts.isEnabled
0015 asynchronous: true
0016 visible: badgeString !== ""
0017
0018 property int fixedIndex:-1
0019
0020 readonly property int maxFixedIndex: abilityItem.abilities.shortcuts.badges.length
0021 readonly property real textColorBrightness: colorBrightness(theme.textColor)
0022 readonly property string badgeString: (shorcutBadge.fixedIndex>=1 && shorcutBadge.fixedIndex<=maxFixedIndex) ?
0023 abilityItem.abilities.shortcuts.badges[shorcutBadge.fixedIndex-1] : ""
0024 readonly property color lightTextColor: textColorBrightness > 127.5 ? theme.textColor : theme.backgroundColor
0025
0026 onActiveChanged: updateShorcutIndex();
0027
0028 Connections {
0029 target: abilityItem
0030 onItemIndexChanged: shortcutBadge.updateShorcutIndex();
0031 }
0032
0033 function updateShorcutIndex() {
0034 if (shorcutBadge.active && abilityItem.abilities.shortcuts.showPositionShortcutBadges) {
0035 fixedIndex = abilityItem.abilities.shortcuts.shortcutIndex(abilityItem.itemIndex);
0036 } else {
0037 fixedIndex = -1;
0038 }
0039 }
0040
0041 function colorBrightness(color) {
0042 return colorBrightnessFromRGB(color.r * 255, color.g * 255, color.b * 255);
0043 }
0044
0045 // formula for brightness according to:
0046 // https://www.w3.org/TR/AERT/#color-contrast
0047 function colorBrightnessFromRGB(r, g, b) {
0048 return (r * 299 + g * 587 + b * 114) / 1000
0049 }
0050
0051 sourceComponent: Item{
0052 Loader{
0053 anchors.fill: taskNumber
0054 active: abilityItem.abilities.myView.itemShadow.isEnabled
0055 && abilityItem.abilities.environment.isGraphicsSystemAccelerated
0056
0057 sourceComponent: DropShadow{
0058 color: abilityItem.abilities.myView.itemShadow.shadowColor
0059 fast: true
0060 samples: 2 * radius
0061 source: taskNumber
0062 radius: abilityItem.abilities.myView.itemShadow.size/2
0063 verticalOffset: 2
0064 }
0065 }
0066
0067 LatteComponents.BadgeText {
0068 id: taskNumber
0069 // when iconSize < 48, height is always = 24, height / iconSize > 50%
0070 // we prefer center aligned badges to top-left aligned ones
0071 property bool centerInParent: abilityItem.abilities.metrics.iconSize < 48
0072
0073 anchors.left: centerInParent? undefined : parent.left
0074 anchors.top: centerInParent? undefined : parent.top
0075 anchors.centerIn: centerInParent? parent : undefined
0076 minimumWidth: 0.4 * (abilityItem.parabolicItem.zoom * abilityItem.abilities.metrics.iconSize)
0077 height: Math.max(24, 0.4 * (abilityItem.parabolicItem.zoom * abilityItem.abilities.metrics.iconSize))
0078
0079 style3d: abilityItem.abilities.myView.badgesIn3DStyle
0080 textValue: shorcutBadge.badgeString
0081 borderColor: shortcutBadge.lightTextColor
0082
0083 showNumber: false
0084 showText: true
0085
0086 proportion: 0
0087 radiusPerCentage: 100
0088 }
0089 }
0090 }