Port most Avatar usage to new KirigamiAddons Avatar

(cherry picked from commit 847f41e1ad)
This commit is contained in:
Carl Schwan
2023-07-21 11:17:15 +02:00
parent b380c74b0e
commit 410befa4bf
21 changed files with 263 additions and 174 deletions

View File

@@ -8,6 +8,7 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Templates 2.15 as T
import org.kde.kirigami 2.20 as Kirigami
import org.kde.kirigamiaddons.delegates 1.0 as Delegates
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
Delegates.RoundedItemDelegate {
id: root
@@ -30,7 +31,7 @@ Delegates.RoundedItemDelegate {
onTapped: root.contextMenuRequested()
}
contentItem: Kirigami.Avatar {
contentItem: KirigamiComponents.Avatar {
source: root.source
name: root.text
}

View File

@@ -8,6 +8,8 @@ import QtQuick.Controls 2.15 as QQC2
import Qt.labs.qmlmodels 1.0
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.delegates 1.0 as Delegates
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -43,6 +45,7 @@ QQC2.Popup {
rightPadding: 0
topPadding: 0
bottomPadding: 0
implicitHeight: Math.min(completions.contentHeight, Kirigami.Units.gridUnit * 10)
contentItem: ListView {
@@ -53,23 +56,35 @@ QQC2.Popup {
currentIndex: 0
keyNavigationWraps: true
highlightMoveDuration: 100
delegate: Kirigami.BasicListItem {
text: model.text
subtitle: model.subtitle ?? ""
labelItem.textFormat: Text.PlainText
subtitleItem.textFormat: Text.PlainText
leading: RowLayout {
Kirigami.Avatar {
visible: model.icon !== "invalid"
Layout.preferredWidth: height
Layout.fillHeight: true
source: model.icon === "invalid" ? "" : ("image://mxc/" + model.icon)
name: model.text
delegate: Delegates.RoundedItemDelegate {
id: completionDelegate
required property int index
required property string displayName
required property string subtitle
required property string iconName
text: displayName
contentItem: RowLayout {
KirigamiComponents.Avatar {
visible: completionDelegate.iconName !== "invalid"
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
Layout.preferredHeight: Kirigami.Units.iconSizes.medium
source: completionDelegate.iconName === "invalid" ? "" : ("image://" + completionDelegate.iconName)
name: completionDelegate.text
}
Delegates.SubtitleContentItem {
itemDelegate: completionDelegate
labelItem.textFormat: Text.PlainText
subtitle: completionDelegate.subtitle ?? ""
subtitleItem.textFormat: Text.PlainText
}
}
onClicked: completionMenu.chatDocumentHandler.complete(model.index)
onClicked: completionMenu.chatDocumentHandler.complete(completionDelegate.index)
}
}
background: Rectangle {
color: Kirigami.Theme.backgroundColor
}

View File

@@ -6,7 +6,8 @@ import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15 as QQC2
import org.kde.kirigami 2.14 as Kirigami
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -40,7 +41,7 @@ GridLayout {
implicitWidth: Kirigami.Units.smallSpacing
color: userColor
}
Kirigami.Avatar {
KirigamiComponents.Avatar {
id: replyAvatar
implicitWidth: Kirigami.Units.iconSizes.small

View File

@@ -9,6 +9,7 @@ import QtLocation 5.15
import QtPositioning 5.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -44,7 +45,7 @@ MapQuickItem {
isMask: true
color: parent.color
}
Kirigami.Avatar {
KirigamiComponents.Avatar {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
visible: root.asset === "m.self"

View File

@@ -5,6 +5,7 @@ import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
Flow {
id: root
@@ -17,11 +18,11 @@ Flow {
spacing: -avatarSize / 2
Repeater {
id: avatarFlowRepeater
delegate: Kirigami.Avatar {
topInset: Kirigami.Units.smallSpacing / 2
topPadding: Kirigami.Units.smallSpacing / 2
implicitWidth: avatarSize
implicitHeight: avatarSize + Kirigami.Units.smallSpacing / 2
delegate: KirigamiComponents.Avatar {
required property var modelData
implicitWidth: root.avatarSize
implicitHeight: root.avatarSize
name: modelData.displayName
source: modelData.avatarSource

View File

@@ -7,6 +7,7 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -93,7 +94,7 @@ Item {
implicitWidth: Kirigami.Units.smallSpacing
color: root.author.color
}
Kirigami.Avatar {
KirigamiComponents.Avatar {
id: replyAvatar
implicitWidth: Kirigami.Units.iconSizes.small

View File

@@ -6,6 +6,7 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -21,14 +22,23 @@ RowLayout {
implicitHeight: Math.max(label.contentHeight, stateAvatar.implicitHeight)
Kirigami.Avatar {
KirigamiComponents.Avatar {
id: stateAvatar
Layout.preferredWidth: Kirigami.Units.iconSizes.small
Layout.preferredHeight: Kirigami.Units.iconSizes.small
name: root.name
color: root.color
Rectangle {
radius: height
height: 4
width: 4
color: root.color
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor

View File

@@ -6,6 +6,7 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -71,34 +72,61 @@ QQC2.Control {
Flow {
visible: columnLayout.folded
spacing: -Kirigami.Units.iconSizes.small / 2
Repeater {
model: authorList
delegate: Kirigami.Avatar {
topInset: Kirigami.Units.smallSpacing / 2
topPadding: Kirigami.Units.smallSpacing / 2
delegate: Item {
id: avatarDelegate
required property var modelData
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small + Kirigami.Units.smallSpacing / 2
name: modelData.displayName
source: modelData.avatarSource
color: modelData.color
KirigamiComponents.Avatar {
y: Kirigami.Units.smallSpacing / 2
implicitWidth: Kirigami.Units.iconSizes.small
implicitHeight: Kirigami.Units.iconSizes.small
name: parent.modelData.displayName
source: parent.modelData.avatarSource
color: parent.modelData.color
Rectangle {
radius: height
height: 4
width: 4
color: avatarDelegate.modelData.color
anchors.centerIn: parent
}
}
}
}
QQC2.Label {
id: excessAuthorsLabel
text: model.excessAuthors
visible: model.excessAuthors !== ""
color: Kirigami.Theme.textColor
horizontalAlignment: Text.AlignHCenter
background: Kirigami.ShadowedRectangle {
color: Kirigami.Theme.backgroundColor
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.View
color: Kirigami.Theme.backgroundColor
radius: height / 2
shadow.size: Kirigami.Units.smallSpacing
shadow.color: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.10)
border.color: Kirigami.ColorUtils.tintWithAlpha(color, Kirigami.Theme.textColor, 0.15)
border.width: 1
shadow {
size: Kirigami.Units.smallSpacing
color: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.10)
}
border {
color: Kirigami.ColorUtils.tintWithAlpha(color, Kirigami.Theme.textColor, 0.15)
width: 1
}
}
height: Kirigami.Units.iconSizes.small + Kirigami.Units.smallSpacing
@@ -125,13 +153,13 @@ QQC2.Control {
visible: !columnLayout.folded
}
QQC2.ToolButton {
icon.name: (!columnLayout.folded ? "go-up" : "go-down")
icon.width: Kirigami.Units.iconSizes.small
icon.height: Kirigami.Units.iconSizes.small
onClicked: {
columnLayout.toggleFolded()
icon {
name: (!columnLayout.folded ? "go-up" : "go-down")
width: Kirigami.Units.iconSizes.small
height: Kirigami.Units.iconSizes.small
}
onClicked: columnLayout.toggleFolded()
}
}
Repeater {

View File

@@ -6,6 +6,7 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.neochat 1.0
@@ -353,15 +354,10 @@ ColumnLayout {
}
}
Kirigami.Avatar {
KirigamiComponents.Avatar {
id: avatar
width: visible || Config.showAvatarInTimeline ? Kirigami.Units.gridUnit * 2 + Kirigami.Units.smallSpacing * 2 : 0
width: visible || Config.showAvatarInTimeline ? Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2: 0
height: width
padding: Kirigami.Units.smallSpacing
topInset: Kirigami.Units.smallSpacing
bottomInset: Kirigami.Units.smallSpacing
leftInset: Kirigami.Units.smallSpacing
rightInset: Kirigami.Units.smallSpacing
anchors {
left: parent.left
leftMargin: Kirigami.Units.smallSpacing