left sidebar: more animated placeholders

This commit is contained in:
end-4
2025-10-14 23:52:46 +02:00
parent 1dd4c4a109
commit 20a3da8a19
3 changed files with 64 additions and 65 deletions
@@ -361,43 +361,11 @@ Inline w/ backslash and round brackets \\(e^{i\\pi} + 1 = 0\\)
}
}
Item { // Placeholder when list is empty
opacity: Ai.messageIDs.length === 0 ? 1 : 0
visible: opacity > 0
anchors.fill: parent
Behavior on opacity {
animation: Appearance.animation.elementMoveEnter.numberAnimation.createObject(this)
}
ColumnLayout {
anchors.centerIn: parent
spacing: 5
CookieWrappedMaterialSymbol {
Layout.alignment: Qt.AlignHCenter
iconSize: 60
text: "neurology"
}
StyledText {
id: widgetNameText
Layout.alignment: Qt.AlignHCenter
font.pixelSize: Appearance.font.pixelSize.larger
font.family: Appearance.font.family.title
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignHCenter
text: Translation.tr("Large language models")
}
StyledText {
id: widgetDescriptionText
Layout.fillWidth: true
font.pixelSize: Appearance.font.pixelSize.small
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
text: Translation.tr("Type /key to get started with online models\nCtrl+O to expand the sidebar\nCtrl+P to detach sidebar into a window")
}
}
PagePlaceholder {
shown: Ai.messageIDs.length === 0
icon: "neurology"
title: Translation.tr("Large language models")
description: Translation.tr("Type /key to get started with online models\nCtrl+O to expand the sidebar\nCtrl+P to detach sidebar into a window")
}
}
@@ -185,34 +185,12 @@ Item {
}
}
Item { // Placeholder when list is empty
opacity: root.responses.length === 0 ? 1 : 0
visible: opacity > 0
anchors.fill: parent
Behavior on opacity {
animation: Appearance.animation.elementMoveEnter.numberAnimation.createObject(this)
}
ColumnLayout {
anchors.centerIn: parent
spacing: 5
CookieWrappedMaterialSymbol {
Layout.alignment: Qt.AlignHCenter
iconSize: 60
text: "bookmark_heart"
}
StyledText {
id: widgetNameText
Layout.alignment: Qt.AlignHCenter
font.pixelSize: Appearance.font.pixelSize.larger
font.family: Appearance.font.family.title
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignHCenter
text: Translation.tr("Anime boorus")
}
}
PagePlaceholder {
id: placeholderItem
shown: root.responses.length === 0
icon: "bookmark_heart"
title: Translation.tr("Anime boorus")
description: ""
}
Item { // Queries awaiting response
@@ -0,0 +1,53 @@
import QtQuick
import QtQuick.Layouts
import qs.modules.common
import qs.modules.common.widgets
Item {
id: root
property bool shown: true
property alias icon: cookieWrappedMaterialSymbol.text
property alias title: widgetNameText.text
property alias description: widgetDescriptionText.text
opacity: shown ? 1 : 0
visible: opacity > 0
anchors {
fill: parent
topMargin: -30 * (1 - opacity)
bottomMargin: 30 * (1 - opacity)
}
Behavior on opacity {
animation: Appearance.animation.elementMoveEnter.numberAnimation.createObject(this)
}
ColumnLayout {
anchors.centerIn: parent
spacing: 5
CookieWrappedMaterialSymbol {
id: cookieWrappedMaterialSymbol
Layout.alignment: Qt.AlignHCenter
iconSize: 60
rotation: -60 * (1 - root.opacity)
}
StyledText {
id: widgetNameText
Layout.alignment: Qt.AlignHCenter
font.pixelSize: Appearance.font.pixelSize.larger
font.family: Appearance.font.family.title
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignHCenter
}
StyledText {
id: widgetDescriptionText
Layout.fillWidth: true
font.pixelSize: Appearance.font.pixelSize.small
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
}
}
}