From ea489b3c7bdd1327a56b38585fa8d9b61f15b7af Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sun, 31 Jan 2021 13:41:03 +0200 Subject: [PATCH] fixes for ParabolicEffect client ability --- .../abilities/client/AppletAbilities.qml | 107 ++++++++++++++++++ .../abilities/client/Indexer.qml | 18 +++ .../abilities/client/ParabolicEffect.qml | 21 ++-- declarativeimports/abilities/client/qmldir | 1 + 4 files changed, 136 insertions(+), 11 deletions(-) create mode 100644 declarativeimports/abilities/client/AppletAbilities.qml diff --git a/declarativeimports/abilities/client/AppletAbilities.qml b/declarativeimports/abilities/client/AppletAbilities.qml new file mode 100644 index 000000000..559813001 --- /dev/null +++ b/declarativeimports/abilities/client/AppletAbilities.qml @@ -0,0 +1,107 @@ +/* +* Copyright 2021 Michail Vourlakos +* +* This file is part of Latte-Dock +* +* Latte-Dock is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* Latte-Dock is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +import QtQuick 2.7 + +import org.kde.latte.abilities.client 0.1 as AbilityClient + +Item { + id: _abilityContainer + property Item bridge: null + property Item layout: null + + //! basic + readonly property alias animations: _animations + readonly property alias containment: _containment + readonly property alias debug: _debug + readonly property alias indexer: _indexer + readonly property alias indicators: _indicators + readonly property alias metrics: _metrics + readonly property alias myView: _myView + readonly property alias parabolic: _parabolic + readonly property alias shortcuts: _shortcuts + readonly property alias requires: _requires + readonly property alias thinTooltip: _thinTooltip + readonly property alias userRequests: _userRequests + + AbilityClient.Animations { + id: _animations + bridge: _abilityContainer.bridge + } + + AbilityClient.Containment { + id: _containment + bridge: _abilityContainer.bridge + } + + AbilityClient.Debug { + id: _debug + bridge: _abilityContainer.bridge + } + + AbilityClient.Indexer { + id: _indexer + bridge: _abilityContainer.bridge + layout: _abilityContainer.layout + } + + AbilityClient.Indicators { + id: _indicators + bridge: _abilityContainer.bridge + } + + AbilityClient.Metrics { + id: _metrics + bridge: _abilityContainer.bridge + parabolic: _parabolic + } + + AbilityClient.MyView { + id: _myView + bridge: _abilityContainer.bridge + } + + AbilityClient.ParabolicEffect { + id: _parabolic + bridge: _abilityContainer.bridge + indexer: _indexer + layout: _abilityContainer.layout + } + + AbilityClient.PositionShortcuts { + id: _shortcuts + bridge: _abilityContainer.bridge + indexer: _indexer + } + + AbilityClient.ThinTooltip { + id: _thinTooltip + bridge: _abilityContainer.bridge + } + + AbilityClient.Requirements{ + id: _requires + bridge: _abilityContainer.bridge + } + + AbilityClient.UserRequests { + id: _userRequests + bridge: _abilityContainer.bridge + } +} diff --git a/declarativeimports/abilities/client/Indexer.qml b/declarativeimports/abilities/client/Indexer.qml index fe6ebb929..00adc129b 100644 --- a/declarativeimports/abilities/client/Indexer.qml +++ b/declarativeimports/abilities/client/Indexer.qml @@ -33,6 +33,7 @@ AbilityDefinition.Indexer { readonly property bool headAppletIsSeparator: isActive ? bridge.indexer.headAppletIsSeparator : false readonly property bool isReady: !updateIsBlocked readonly property int maxIndex: 99999 + readonly property alias itemsCount: _privates.itemsCount readonly property alias visibleItemsCount: _privates.visibleItemsCount readonly property alias firstVisibleItemIndex: _privates.firstVisibleItemIndex readonly property alias lastVisibleItemIndex: _privates.lastVisibleItemIndex @@ -41,6 +42,7 @@ AbilityDefinition.Indexer { id: _privates property int firstVisibleItemIndex: -1 property int lastVisibleItemIndex: -1 + property int itemsCount: 0 property int visibleItemsCount: 0 } @@ -166,6 +168,22 @@ AbilityDefinition.Indexer { } } + Binding { + target: _privates + property: "itemsCount" + value: { + var count = 0; + for(var i=0; i=0) { + count = count + 1; + } + } + + return count; + } + } + Binding { target: _indexer property: "separators" diff --git a/declarativeimports/abilities/client/ParabolicEffect.qml b/declarativeimports/abilities/client/ParabolicEffect.qml index ee31a4b4f..89f2e3e8b 100644 --- a/declarativeimports/abilities/client/ParabolicEffect.qml +++ b/declarativeimports/abilities/client/ParabolicEffect.qml @@ -25,6 +25,7 @@ import org.kde.latte.abilities.definition 0.1 as AbilityDefinition AbilityDefinition.ParabolicEffect { id: parabolic property Item bridge: null + property Item indexer: null property Item layout: null isEnabled: ref.parabolic.isEnabled @@ -45,8 +46,6 @@ AbilityDefinition.ParabolicEffect { return false; } - readonly property int itemsCount: layout ? layout.children.length : 0 - readonly property AbilityDefinition.ParabolicEffect local: AbilityDefinition.ParabolicEffect { id: _localref readonly property bool directRenderingEnabled: _localref._privates.directRenderingEnabled @@ -146,7 +145,7 @@ AbilityDefinition.ParabolicEffect { function hostRequestUpdateLowerItemScale(newScale, step){ //! function called from host - sglUpdateLowerItemScale(itemsCount-1, newScale, step); + sglUpdateLowerItemScale(indexer.itemsCount-1, newScale, step); } function hostRequestUpdateHigherItemScale(newScale, step){ @@ -156,22 +155,22 @@ AbilityDefinition.ParabolicEffect { function sltTrackLowerItemScale(delegateIndex, newScale, step){ //! send update signal to host - if (latteBridge) { + if (bridge) { if (delegateIndex === -1) { - latteBridge.parabolic.clientRequestUpdateLowerItemScale(newScale, step); + bridge.parabolic.clientRequestUpdateLowerItemScale(newScale, step); } else if (newScale === 1 && delegateIndex>=0) { - latteBridge.parabolic.clientRequestUpdateLowerItemScale(1, 0); + bridge.parabolic.clientRequestUpdateLowerItemScale(1, 0); } } } function sltTrackHigherItemScale(delegateIndex, newScale, step) { //! send update signal to host - if (latteBridge) { - if (delegateIndex >= itemsCount) { - latteBridge.parabolic.clientRequestUpdateHigherItemScale(newScale, step); - } else if (newScale === 1 && delegateIndex= indexer.itemsCount) { + bridge.parabolic.clientRequestUpdateHigherItemScale(newScale, step); + } else if (newScale === 1 && delegateIndex