From 0efc1fafc709e9698197263ed05175f97839443b Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 1 Feb 2021 21:33:38 +0200 Subject: [PATCH] support Grid Container for Ability BasicItems --- .../abilities/client/AppletAbilities.qml | 8 +- .../appletabilities/ContainerGridBindings.qml | 172 ++++++++++++++++++ 2 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 declarativeimports/abilities/client/appletabilities/ContainerGridBindings.qml diff --git a/declarativeimports/abilities/client/AppletAbilities.qml b/declarativeimports/abilities/client/AppletAbilities.qml index 96e5099c8..6c4df0bd5 100644 --- a/declarativeimports/abilities/client/AppletAbilities.qml +++ b/declarativeimports/abilities/client/AppletAbilities.qml @@ -30,7 +30,6 @@ Item { property Item layout: null readonly property bool isLayoutListViewContainer: layout && layout.parent && layout.parent instanceof ListView - readonly property bool isLayoutRowColumnContainer: layout && ((layout instanceof Row) || (layout instanceof Column)) readonly property bool isLayoutGridContainer: layout && layout instanceof Grid readonly property bool inDesktop: plasmoid.location === PlasmaCore.Types.Floating @@ -123,7 +122,7 @@ Item { Loader { id: anchorsLoader - active: isLayoutListViewContainer || isLayoutRowColumnContainer || isLayoutGridContainer + active: isLayoutListViewContainer || isLayoutGridContainer source: "./appletabilities/ContainerAnchorBindings.qml" readonly property Item anchoredItem: isLayoutListViewContainer ? layout.parent : layout @@ -133,4 +132,9 @@ Item { active: isLayoutListViewContainer source: "./appletabilities/ContainerListViewBindings.qml" } + + Loader { + active: isLayoutGridContainer + source: "./appletabilities/ContainerGridBindings.qml" + } } diff --git a/declarativeimports/abilities/client/appletabilities/ContainerGridBindings.qml b/declarativeimports/abilities/client/appletabilities/ContainerGridBindings.qml new file mode 100644 index 000000000..a87c27c1b --- /dev/null +++ b/declarativeimports/abilities/client/appletabilities/ContainerGridBindings.qml @@ -0,0 +1,172 @@ +/* +* 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.plasma.plasmoid 2.0 +import org.kde.plasma.core 2.0 as PlasmaCore + +import org.kde.latte.core 0.2 as LatteCore + +Item { + Binding { + target: _abilityContainer.layout + property: "columns" + value: plasmoid.formFactor === PlasmaCore.Types.Vertical ? 1 : 0 + } + + Binding { + target: _abilityContainer.layout + property: "rows" + value: plasmoid.formFactor === PlasmaCore.Types.Vertical ? 0 : 1 + } + + Binding { + target: _abilityContainer.layout + property: "columnSpacing" + value: 0 + } + + Binding { + target: _abilityContainer.layout + property: "rowSpacing" + value: 0 + } + + Binding { + target: _abilityContainer.layout + property: "flow" + value: plasmoid.formFactor === PlasmaCore.Types.Vertical ? Grid.TopToBottom : Grid.LeftToRight + } + + states: [ + ///Left Edge + State { + name: "leftCenter" + when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Center) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignLeft; verticalItemAlignment: Grid.AlignVCenter; + } + }, + State { + name: "leftTop" + when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Top) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignLeft; verticalItemAlignment: Grid.AlignVCenter; + } + }, + State { + name: "leftBottom" + when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Bottom) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignLeft; verticalItemAlignment: Grid.AlignVCenter; + } + }, + ///Right Edge + State { + name: "rightCenter" + when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Center) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignRight; verticalItemAlignment: Grid.AlignVCenter; + } + }, + State { + name: "rightTop" + when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Top) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignRight; verticalItemAlignment: Grid.AlignVCenter; + } + }, + State { + name: "rightBottom" + when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Bottom) + + PropertyChanges{ + target: _abilityContainer.layout; horizontalItemAlignment: Grid.AlignRight; verticalItemAlignment: Grid.AlignVCenter; + } + }, + ///Bottom Edge + State { + name: "bottomCenter" + when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Center) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignBottom + } + }, + State { + name: "bottomLeft" + when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Left) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignBottom + } + }, + State { + name: "bottomRight" + when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Right) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignBottom + } + }, + ///Top Edge + State { + name: "topCenter" + when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Center) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignTop + } + }, + State { + name: "topLeft" + when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Left) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignTop + } + }, + State { + name: "topRight" + when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Right) + + PropertyChanges{ + target: _abilityContainer.layout; + horizontalItemAlignment: Grid.AlignHCenter; verticalItemAlignment: Grid.AlignTop + } + } + ] + ////////////////END states +}