mirror of
https://github.com/KDE/latte-dock.git
synced 2024-12-24 05:33:50 +03:00
AppletAbilities takes responsibility for Layout
--applets abilities will anchor the layout properly and at the same time update its values accordingly
This commit is contained in:
parent
8847208d6e
commit
90b8a7e502
@ -19,6 +19,9 @@
|
||||
|
||||
import QtQuick 2.7
|
||||
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
|
||||
import org.kde.latte.abilities.client 0.1 as AbilityClient
|
||||
|
||||
Item {
|
||||
@ -26,6 +29,18 @@ Item {
|
||||
property Item bridge: null
|
||||
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
|
||||
|| plasmoid.location === PlasmaCore.Types.Desktop
|
||||
|
||||
readonly property int alignment: _containment.alignment
|
||||
readonly property int location: inDesktop ? PlasmaCore.Types.BottomEdge : plasmoid.location
|
||||
readonly property int thickness: _animations.hasThicknessAnimation ? _metrics.mask.thickness.zoomedForItems :
|
||||
_metrics.mask.thickness.normalForItems
|
||||
|
||||
//! basic
|
||||
readonly property alias animations: _animations
|
||||
readonly property alias containment: _containment
|
||||
@ -104,4 +119,15 @@ Item {
|
||||
id: _userRequests
|
||||
bridge: _abilityContainer.bridge
|
||||
}
|
||||
|
||||
|
||||
Loader {
|
||||
active: isLayoutListViewContainer || isLayoutRowColumnContainer || isLayoutGridContainer
|
||||
source: "./appletabilities/ContainerAnchorBindings.qml"
|
||||
}
|
||||
|
||||
Loader {
|
||||
active: isLayoutListViewContainer
|
||||
source: "./appletabilities/ContainerListViewBindings.qml"
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Copyright 2021 Michail Vourlakos <mvourlakos@gmail.com>
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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 {
|
||||
//! ListView Layout States
|
||||
states: [
|
||||
///Bottom Edge
|
||||
State {
|
||||
name: "bottomCenter"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Center)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "bottomLeft"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Left)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "bottomRight"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.BottomEdge && _abilityContainer.alignment===LatteCore.Types.Right)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
///Top Edge
|
||||
State {
|
||||
name: "topCenter"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Center)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "topLeft"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Left)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "topRight"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.TopEdge && _abilityContainer.alignment===LatteCore.Types.Right)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
////Left Edge
|
||||
State {
|
||||
name: "leftCenter"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Center)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "leftTop"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Top)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "leftBottom"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.LeftEdge && _abilityContainer.alignment===LatteCore.Types.Bottom)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
///Right Edge
|
||||
State {
|
||||
name: "rightCenter"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Center)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "rightTop"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Top)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "rightBottom"
|
||||
when: (_abilityContainer.location===PlasmaCore.Types.RightEdge && _abilityContainer.alignment===LatteCore.Types.Bottom)
|
||||
|
||||
AnchorChanges {
|
||||
target: layout.parent
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2021 Michail Vourlakos <mvourlakos@gmail.com>
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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.parent
|
||||
property: "width"
|
||||
value: plasmoid.formFactor !== PlasmaCore.Types.Vertical ? _abilityContainer.layout.parent.contentWidth :
|
||||
_abilityContainer.thickness
|
||||
}
|
||||
|
||||
Binding {
|
||||
target: _abilityContainer.layout.parent
|
||||
property: "height"
|
||||
value: plasmoid.formFactor !== PlasmaCore.Types.Vertical ? _abilityContainer.thickness :
|
||||
_abilityContainer.layout.parent.contentHeight
|
||||
}
|
||||
|
||||
Binding {
|
||||
target: _abilityContainer.layout.parent
|
||||
property: "boundsBehavior"
|
||||
value: Flickable.StopAtBounds
|
||||
}
|
||||
|
||||
Binding {
|
||||
target: _abilityContainer.layout.parent
|
||||
property: "orientation"
|
||||
value: plasmoid.formFactor === PlasmaCore.Types.Vertical ? Qt.Vertical : Qt.Horizontal
|
||||
}
|
||||
}
|
@ -975,18 +975,6 @@ Item {
|
||||
|
||||
ListView {
|
||||
id:icList
|
||||
anchors.bottom: (root.location === PlasmaCore.Types.BottomEdge) ? parent.bottom : undefined
|
||||
anchors.top: (root.location === PlasmaCore.Types.TopEdge) ? parent.top : undefined
|
||||
anchors.left: (root.location === PlasmaCore.Types.LeftEdge) ? parent.left : undefined
|
||||
anchors.right: (root.location === PlasmaCore.Types.RightEdge) ? parent.right : undefined
|
||||
|
||||
anchors.horizontalCenter: !root.vertical ? parent.horizontalCenter : undefined
|
||||
anchors.verticalCenter: root.vertical ? parent.verticalCenter : undefined
|
||||
|
||||
width: !root.vertical ? contentWidth : mouseHandler.maxThickness
|
||||
height: root.vertical ? contentHeight : mouseHandler.maxThickness
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
orientation: plasmoid.formFactor === PlasmaCore.Types.Vertical ? Qt.Vertical : Qt.Horizontal
|
||||
delegate: Task.TaskItem{
|
||||
abilities: appletAbilities
|
||||
}
|
||||
@ -1332,10 +1320,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "bottomLeft"
|
||||
@ -1345,10 +1329,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "bottomRight"
|
||||
@ -1358,10 +1338,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
///Top Edge
|
||||
State {
|
||||
@ -1372,10 +1348,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:undefined; horizontalCenter:parent.horizontalCenter; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "topLeft"
|
||||
@ -1385,10 +1357,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "topRight"
|
||||
@ -1398,10 +1366,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
////Left Edge
|
||||
State {
|
||||
@ -1412,10 +1376,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "leftTop"
|
||||
@ -1425,10 +1385,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:parent.top; bottom:undefined; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "leftBottom"
|
||||
@ -1438,10 +1394,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:parent.left; right:undefined; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
///Right Edge
|
||||
State {
|
||||
@ -1452,10 +1404,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:parent.verticalCenter}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "rightTop"
|
||||
@ -1465,10 +1413,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:parent.top; bottom:undefined; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "rightBottom"
|
||||
@ -1478,10 +1422,6 @@ Item {
|
||||
target: barLine
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
AnchorChanges {
|
||||
target: icList
|
||||
anchors{ top:undefined; bottom:parent.bottom; left:undefined; right:parent.right; horizontalCenter:undefined; verticalCenter:undefined}
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user