launcher: loader content
This commit is contained in:
parent
d06d8b870f
commit
302a82da2d
4 changed files with 61 additions and 51 deletions
|
|
@ -11,7 +11,6 @@ import QtQuick
|
|||
Item {
|
||||
id: root
|
||||
|
||||
required property var wrapper
|
||||
required property PersistentProperties visibilities
|
||||
required property var panels
|
||||
|
||||
|
|
@ -21,9 +20,6 @@ Item {
|
|||
implicitWidth: listWrapper.width + padding * 2
|
||||
implicitHeight: searchWrapper.height + listWrapper.height + padding * 2
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
Item {
|
||||
id: listWrapper
|
||||
|
||||
|
|
@ -37,7 +33,7 @@ Item {
|
|||
ContentList {
|
||||
id: list
|
||||
|
||||
wrapper: root.wrapper
|
||||
content: root
|
||||
visibilities: root.visibilities
|
||||
panels: root.panels
|
||||
search: search
|
||||
|
|
@ -129,23 +125,19 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: forceActiveFocus()
|
||||
|
||||
Connections {
|
||||
target: root.visibilities
|
||||
|
||||
function onLauncherChanged(): void {
|
||||
if (root.visibilities.launcher)
|
||||
search.focus = true;
|
||||
else {
|
||||
if (!root.visibilities.launcher)
|
||||
search.text = "";
|
||||
const current = list.currentList;
|
||||
if (current)
|
||||
current.currentIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function onSessionChanged(): void {
|
||||
if (root.visibilities.launcher && !root.visibilities.session)
|
||||
search.focus = true;
|
||||
if (!root.visibilities.session)
|
||||
search.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import QtQuick.Controls
|
|||
Item {
|
||||
id: root
|
||||
|
||||
required property var wrapper
|
||||
required property var content
|
||||
required property PersistentProperties visibilities
|
||||
required property var panels
|
||||
required property TextField search
|
||||
|
|
@ -77,7 +77,6 @@ Item {
|
|||
id: appList
|
||||
|
||||
active: false
|
||||
asynchronous: true
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
|
@ -92,7 +91,6 @@ Item {
|
|||
id: wallpaperList
|
||||
|
||||
active: false
|
||||
asynchronous: true
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
|
|
@ -102,7 +100,7 @@ Item {
|
|||
search: root.search
|
||||
visibilities: root.visibilities
|
||||
panels: root.panels
|
||||
wrapper: root.wrapper
|
||||
content: root.content
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ PathView {
|
|||
required property TextField search
|
||||
required property PersistentProperties visibilities
|
||||
required property var panels
|
||||
required property var wrapper
|
||||
required property var content
|
||||
|
||||
readonly property int itemWidth: Config.launcher.sizes.wallpaperWidth * 0.8 + Appearance.padding.larger * 2
|
||||
|
||||
|
|
@ -24,7 +24,7 @@ PathView {
|
|||
|
||||
// Screen width - 4x outer rounding - 2x max side thickness (cause centered)
|
||||
let outerMargins = Math.max(Config.border.thickness, panels.bar.implicitWidth);
|
||||
if (panels.popouts.hasCurrent && panels.popouts.currentCenter + panels.popouts.nonAnimHeight / 2 > screen.height - wrapper.implicitHeight - Config.border.thickness * 2)
|
||||
if (panels.popouts.hasCurrent && panels.popouts.currentCenter + panels.popouts.nonAnimHeight / 2 > screen.height - content.implicitHeight - Config.border.thickness * 2)
|
||||
outerMargins = panels.bar.implicitWidth + panels.popouts.nonAnimWidth;
|
||||
const maxWidth = screen.width - Config.border.rounding * 4 - outerMargins * 2;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.components
|
||||
import qs.config
|
||||
import Quickshell
|
||||
|
|
@ -9,48 +11,66 @@ Item {
|
|||
required property PersistentProperties visibilities
|
||||
required property var panels
|
||||
|
||||
readonly property bool shouldBeActive: visibilities.launcher && Config.launcher.enabled
|
||||
property int contentHeight
|
||||
|
||||
visible: height > 0
|
||||
implicitHeight: 0
|
||||
implicitWidth: content.implicitWidth
|
||||
|
||||
states: State {
|
||||
name: "visible"
|
||||
when: root.visibilities.launcher && Config.launcher.enabled
|
||||
|
||||
PropertyChanges {
|
||||
root.implicitHeight: content.implicitHeight
|
||||
onShouldBeActiveChanged: {
|
||||
if (shouldBeActive) {
|
||||
hideAnim.stop();
|
||||
showAnim.start();
|
||||
} else {
|
||||
showAnim.stop();
|
||||
hideAnim.start();
|
||||
}
|
||||
}
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: ""
|
||||
to: "visible"
|
||||
SequentialAnimation {
|
||||
id: showAnim
|
||||
|
||||
Anim {
|
||||
target: root
|
||||
property: "implicitHeight"
|
||||
duration: Appearance.anim.durations.expressiveDefaultSpatial
|
||||
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
|
||||
}
|
||||
},
|
||||
Transition {
|
||||
from: "visible"
|
||||
to: ""
|
||||
|
||||
Anim {
|
||||
target: root
|
||||
property: "implicitHeight"
|
||||
easing.bezierCurve: Appearance.anim.curves.emphasized
|
||||
}
|
||||
Anim {
|
||||
target: root
|
||||
property: "implicitHeight"
|
||||
to: root.contentHeight
|
||||
duration: Appearance.anim.durations.expressiveDefaultSpatial
|
||||
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
|
||||
}
|
||||
]
|
||||
ScriptAction {
|
||||
script: root.implicitHeight = Qt.binding(() => content.implicitHeight)
|
||||
}
|
||||
}
|
||||
|
||||
Content {
|
||||
SequentialAnimation {
|
||||
id: hideAnim
|
||||
|
||||
ScriptAction {
|
||||
script: root.implicitHeight = root.implicitHeight
|
||||
}
|
||||
Anim {
|
||||
target: root
|
||||
property: "implicitHeight"
|
||||
to: 0
|
||||
easing.bezierCurve: Appearance.anim.curves.emphasized
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: content
|
||||
|
||||
wrapper: root
|
||||
visibilities: root.visibilities
|
||||
panels: root.panels
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
Component.onCompleted: {
|
||||
root.contentHeight = implicitHeight;
|
||||
active = Qt.binding(() => root.shouldBeActive || root.visible);
|
||||
}
|
||||
|
||||
sourceComponent: Content {
|
||||
visibilities: root.visibilities
|
||||
panels: root.panels
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue