Warning, /plasma/latte-dock/declarativeimports/abilities/items/basicitem/HiddenSpacer.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2016 Smith AR <audoban@openmailbox.org> 0003 SPDX-FileCopyrightText: 2016 Michail Vourlakos <mvourlakos@gmail.com> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.0 0008 0009 import org.kde.plasma.core 2.0 as PlasmaCore 0010 import org.kde.latte.core 0.2 as LatteCore 0011 0012 Item{ 0013 id: hiddenSpacer 0014 width: plasmoid.formFactor === PlasmaCore.Types.Vertical ? abilityItem.parabolicItem.width : nHiddenSize 0015 height: plasmoid.formFactor === PlasmaCore.Types.Vertical ? nHiddenSize : abilityItem.parabolicItem.height 0016 0017 visible: (rightSpacer ? index === abilityItem.abilities.indexer.lastVisibleItemIndex : index === abilityItem.abilities.indexer.firstVisibleItemIndex) 0018 || (separatorSpace > 0) 0019 || abilityItem.isHiddenSpacerForcedShow 0020 0021 property bool neighbourSeparator: rightSpacer ? abilityItem.headItemIsVisibleSeparator : abilityItem.tailItemIsVisibleSeparator 0022 property bool rightSpacer: false 0023 0024 property int separatorSpace: neighbourSeparator && !abilityItem.isSeparator && abilityItem.abilities.parabolic.isEnabled 0025 && !(abilityItem.abilities.indexer.separators.length>0 && abilityItem.isSeparatorInRealLength) ? 0026 (LatteCore.Environment.separatorLength/2) : 0 0027 0028 property real nScale: 0 0029 property real nHiddenSize: 0 0030 0031 readonly property int maxSize: Math.max(0,Math.ceil(0.55*abilityItem.abilities.metrics.iconSize) - abilityItem.abilities.metrics.totals.lengthEdges) 0032 0033 Binding{ 0034 target: hiddenSpacer 0035 property: "nHiddenSize" 0036 when: !hiddenSizeDelayer.running && itemIndex > -1 //! helps to solve BUGLOCALREF: #1 0037 value: { 0038 if (abilityItem.isHidden) { 0039 return 0; 0040 } else if (!abilityItem.parabolicItem.isUpdatingOnlySpacers) { 0041 return (nScale > 0) ? (maxSize * nScale) + separatorSpace : separatorSpace; 0042 } else { 0043 return (nScale > 0) ? (abilityItem.abilities.metrics.iconSize * nScale) + separatorSpace : separatorSpace; 0044 } 0045 } 0046 } 0047 0048 Connections{ 0049 target: abilityItem 0050 onContainsMouseChanged: { 0051 if (!abilityItem.containsMouse && !abilityItem.isHiddenSpacerForcedShow) { 0052 hiddenSpacer.nScale = 0; 0053 } 0054 } 0055 } 0056 0057 Behavior on nHiddenSize { 0058 id: animatedBehavior 0059 enabled: abilityItem.isHiddenSpacerAnimated || restoreAnimation.running 0060 NumberAnimation{ duration: 3 * abilityItem.animationTime } 0061 } 0062 0063 Behavior on nHiddenSize { 0064 id: directBehavior 0065 enabled: !animatedBehavior.enabled 0066 NumberAnimation { duration: 0 } 0067 } 0068 0069 Loader{ 0070 active: abilityItem.abilities.debug.spacersEnabled 0071 0072 sourceComponent: Rectangle{ 0073 width: abilityItem.isHorizontal ? hiddenSpacer.width : 1 0074 height: abilityItem.isHorizontal ? 1 : hiddenSpacer.height 0075 x: abilityItem.isHorizontal ? 0 : hiddenSpacer.width/2 0076 y: abilityItem.isHorizontal ? hiddenSpacer.height/2 : 0 0077 0078 border.width: 1 0079 border.color: "red" 0080 color: "transparent" 0081 } 0082 } 0083 0084 //! Delayer 0085 onSeparatorSpaceChanged: { 0086 if (!hiddenSizeDelayer.running) { 0087 hiddenSizeDelayer.start(); 0088 } 0089 } 0090 0091 //! BUGLOCALREF: #1 0092 //! Timer that helps to avoid binding loops from head/tailItemIsVisibleSeparator by delaying to update the spacer size 0093 //! This solution needs confirmation. That specific binding loop is very nasty as it breaks the tasks model consistency 0094 //! somehow when switching between different activities and the model contains separators that become shown and hidden 0095 //! during the activity change 0096 Timer { 0097 id: hiddenSizeDelayer 0098 interval: 400 0099 } 0100 }