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 }