Centre the timline when using bubbles but not in compact mode
This commit is contained in:
@@ -21,7 +21,7 @@ TimelineContainer {
|
|||||||
hoverComponent: hoverActions
|
hoverComponent: hoverActions
|
||||||
innerObject: Control {
|
innerObject: Control {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: audioDelegate.bubbleMaxWidth
|
Layout.maximumWidth: audioDelegate.contentMaxWidth
|
||||||
|
|
||||||
Audio {
|
Audio {
|
||||||
id: audio
|
id: audio
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ TimelineContainer {
|
|||||||
readOnly: true
|
readOnly: true
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
textFormat: Text.RichText
|
textFormat: Text.RichText
|
||||||
Layout.maximumWidth: encryptedDelegate.bubbleMaxWidth
|
Layout.maximumWidth: encryptedDelegate.contentMaxWidth
|
||||||
Layout.leftMargin: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing : 0
|
Layout.leftMargin: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing : 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ TimelineContainer {
|
|||||||
innerObject: RowLayout {
|
innerObject: RowLayout {
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: fileDelegate.bubbleMaxWidth
|
Layout.maximumWidth: fileDelegate.contentMaxWidth
|
||||||
Layout.margins: Kirigami.Units.largeSpacing
|
Layout.margins: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
spacing: Kirigami.Units.largeSpacing
|
spacing: Kirigami.Units.largeSpacing
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ TimelineContainer {
|
|||||||
innerObject: Image {
|
innerObject: Image {
|
||||||
id: img
|
id: img
|
||||||
|
|
||||||
Layout.maximumWidth: imageDelegate.bubbleMaxWidth
|
Layout.maximumWidth: imageDelegate.contentMaxWidth
|
||||||
Layout.maximumHeight: imageDelegate.bubbleMaxWidth / imageDelegate.info.w * imageDelegate.info.h
|
Layout.maximumHeight: imageDelegate.contentMaxWidth / imageDelegate.info.w * imageDelegate.info.h
|
||||||
Layout.preferredWidth: imageDelegate.info.w
|
Layout.preferredWidth: imageDelegate.info.w
|
||||||
Layout.preferredHeight: imageDelegate.info.h
|
Layout.preferredHeight: imageDelegate.info.h
|
||||||
source: model.mediaUrl
|
source: model.mediaUrl
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ TimelineContainer {
|
|||||||
|
|
||||||
innerObject: RichLabel {
|
innerObject: RichLabel {
|
||||||
isEmote: messageDelegate.isEmote
|
isEmote: messageDelegate.isEmote
|
||||||
Layout.maximumWidth: messageDelegate.bubbleMaxWidth
|
Layout.maximumWidth: messageDelegate.contentMaxWidth
|
||||||
|
|
||||||
TapHandler {
|
TapHandler {
|
||||||
acceptedButtons: Qt.RightButton
|
acceptedButtons: Qt.RightButton
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ MouseArea {
|
|||||||
id: replyButton
|
id: replyButton
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: replyName.implicitHeight + (loader.item ? loader.item.height : 0) + Kirigami.Units.largeSpacing
|
implicitHeight: replyName.implicitHeight + (loader.item ? loader.item.height : 0) + Kirigami.Units.largeSpacing
|
||||||
implicitWidth: Math.min(bubbleMaxWidth, Math.max((loader.item ? loader.item.width + Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing : 0), replyName.implicitWidth)) + Kirigami.Units.gridUnit + Kirigami.Units.smallSpacing * 3
|
implicitWidth: Math.min(contentMaxWidth, Math.max((loader.item ? loader.item.width + Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing : 0), replyName.implicitWidth)) + Kirigami.Units.gridUnit + Kirigami.Units.smallSpacing * 3
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
parent.Layout.fillWidth = true;
|
parent.Layout.fillWidth = true;
|
||||||
parent.Layout.preferredWidth = Qt.binding(function() { return implicitWidth; })
|
parent.Layout.preferredWidth = Qt.binding(function() { return implicitWidth; })
|
||||||
parent.Layout.maximumWidth = Qt.binding(function() { return bubbleMaxWidth + Kirigami.Units.largeSpacing * 2; })
|
parent.Layout.maximumWidth = Qt.binding(function() { return contentMaxWidth + Kirigami.Units.largeSpacing * 2; })
|
||||||
}
|
}
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: replyLeftBorder
|
id: replyLeftBorder
|
||||||
@@ -79,7 +79,7 @@ MouseArea {
|
|||||||
id: replyText
|
id: replyText
|
||||||
textMessage: reply.display
|
textMessage: reply.display
|
||||||
textFormat: Text.RichText
|
textFormat: Text.RichText
|
||||||
width: Math.min(implicitWidth, bubbleMaxWidth - Kirigami.Units.largeSpacing * 3)
|
width: Math.min(implicitWidth, contentMaxWidth - Kirigami.Units.largeSpacing * 3)
|
||||||
x: Kirigami.Units.smallSpacing * 3 + replyAvatar.width
|
x: Kirigami.Units.smallSpacing * 3 + replyAvatar.width
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,7 @@ MouseArea {
|
|||||||
readonly property string mediaId: isThumbnail ? content.thumbnailMediaId : content.mediaId
|
readonly property string mediaId: isThumbnail ? content.thumbnailMediaId : content.mediaId
|
||||||
source: "image://mxc/" + mediaId
|
source: "image://mxc/" + mediaId
|
||||||
|
|
||||||
width: bubbleMaxWidth * 0.75 - Kirigami.Units.smallSpacing * 5 - replyAvatar.width
|
width: contentMaxWidth * 0.75 - Kirigami.Units.smallSpacing * 5 - replyAvatar.width
|
||||||
height: reply.content.info.h / reply.content.info.w * width
|
height: reply.content.info.h / reply.content.info.w * width
|
||||||
x: Kirigami.Units.smallSpacing * 3 + replyAvatar.width
|
x: Kirigami.Units.smallSpacing * 3 + replyAvatar.width
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ QQC2.ItemDelegate {
|
|||||||
property bool isEmote: false
|
property bool isEmote: false
|
||||||
property bool cardBackground: true
|
property bool cardBackground: true
|
||||||
|
|
||||||
readonly property int delegateMaxWidth: Math.min(messageListView.width, Kirigami.Units.gridUnit * 40)
|
readonly property int bubbleMaxWidth: Kirigami.Units.gridUnit * 20
|
||||||
readonly property int bubbleMaxWidth: Config.compactLayout && !Config.showAvatarInTimeline ? width - Kirigami.Units.largeSpacing * 4 : (Config.compactLayout ? width - Kirigami.Units.gridUnit * 2 - Kirigami.Units.largeSpacing * 4 : Math.min(width - Kirigami.Units.gridUnit * 2 - Kirigami.Units.largeSpacing * 6, Kirigami.Units.gridUnit * 20))
|
readonly property int delegateMaxWidth: Config.compactLayout ? messageListView.width : Math.min(messageListView.width, Kirigami.Units.gridUnit * 40)
|
||||||
|
readonly property int contentMaxWidth: Config.compactLayout ? width - (Config.showAvatarInTimeline ? Kirigami.Units.gridUnit * 2 : 0) - Kirigami.Units.largeSpacing * 4 : Math.min(width - Kirigami.Units.gridUnit * 2 - Kirigami.Units.largeSpacing * 6, bubbleMaxWidth)
|
||||||
|
|
||||||
property bool showUserMessageOnRight: Config.showLocalMessagesOnRight &&
|
property bool showUserMessageOnRight: Config.showLocalMessagesOnRight &&
|
||||||
model.author.isLocalUser && !Config.compactLayout
|
model.author.isLocalUser && !Config.compactLayout
|
||||||
@@ -38,6 +39,7 @@ QQC2.ItemDelegate {
|
|||||||
bottomPadding: 0
|
bottomPadding: 0
|
||||||
width: delegateMaxWidth
|
width: delegateMaxWidth
|
||||||
background: null
|
background: null
|
||||||
|
|
||||||
property Item hoverComponent
|
property Item hoverComponent
|
||||||
|
|
||||||
// show hover actions
|
// show hover actions
|
||||||
@@ -56,6 +58,33 @@ QQC2.ItemDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state: Config.compactLayout ? "alignLeft" : "alignCentre"
|
||||||
|
// Align left when in compact mode and centre when using bubbles
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "alignLeft"
|
||||||
|
AnchorChanges {
|
||||||
|
target: messageDelegate
|
||||||
|
anchors.horizontalCenter: undefined
|
||||||
|
anchors.left: parent ? parent.left : undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "alignCentre"
|
||||||
|
AnchorChanges {
|
||||||
|
target: messageDelegate
|
||||||
|
anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
|
||||||
|
anchors.left: undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
AnchorAnimation{duration: Kirigami.Units.longDuration; easing.type: Easing.OutCubic}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
height: sectionDelegate.height + Math.max(model.showAuthor ? avatar.height : 0, bubble.implicitHeight) + loader.height + (showAuthor ? Kirigami.Units.largeSpacing : 0)
|
height: sectionDelegate.height + Math.max(model.showAuthor ? avatar.height : 0, bubble.implicitHeight) + loader.height + (showAuthor ? Kirigami.Units.largeSpacing : 0)
|
||||||
|
|
||||||
SectionDelegate {
|
SectionDelegate {
|
||||||
@@ -110,9 +139,6 @@ QQC2.ItemDelegate {
|
|||||||
rightPadding: Config.compactLayout ? Kirigami.Units.largeSpacing : Kirigami.Units.smallSpacing
|
rightPadding: Config.compactLayout ? Kirigami.Units.largeSpacing : Kirigami.Units.smallSpacing
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
|
||||||
// state: Config.compactLayout ? "compactLayout" : "default"
|
|
||||||
state: showUserMessageOnRight ? "userMessageOnRight" : "userMessageOnLeft"
|
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
top: avatar.top
|
top: avatar.top
|
||||||
leftMargin: Kirigami.Units.largeSpacing
|
leftMargin: Kirigami.Units.largeSpacing
|
||||||
@@ -121,7 +147,7 @@ QQC2.ItemDelegate {
|
|||||||
// HACK: anchoring didn't reset anchors.right when switching from parent.right to undefined reliably
|
// HACK: anchoring didn't reset anchors.right when switching from parent.right to undefined reliably
|
||||||
width: Config.compactLayout ? messageDelegate.width - (Config.showAvatarInTimeline ? Kirigami.Units.gridUnit * 2 : 0) + Kirigami.Units.largeSpacing * 2 : implicitWidth
|
width: Config.compactLayout ? messageDelegate.width - (Config.showAvatarInTimeline ? Kirigami.Units.gridUnit * 2 : 0) + Kirigami.Units.largeSpacing * 2 : implicitWidth
|
||||||
|
|
||||||
|
state: showUserMessageOnRight ? "userMessageOnRight" : "userMessageOnLeft"
|
||||||
// states for anchor animations on window resize
|
// states for anchor animations on window resize
|
||||||
// as setting anchors to undefined did not work reliably
|
// as setting anchors to undefined did not work reliably
|
||||||
states: [
|
states: [
|
||||||
@@ -159,7 +185,7 @@ QQC2.ItemDelegate {
|
|||||||
Layout.leftMargin: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing : 0
|
Layout.leftMargin: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing : 0
|
||||||
Layout.rightMargin: Kirigami.Units.largeSpacing
|
Layout.rightMargin: Kirigami.Units.largeSpacing
|
||||||
Layout.preferredWidth: nameLabel.implicitWidth + timeLabel.implicitWidth + Kirigami.Units.largeSpacing * 2
|
Layout.preferredWidth: nameLabel.implicitWidth + timeLabel.implicitWidth + Kirigami.Units.largeSpacing * 2
|
||||||
Layout.maximumWidth: bubbleMaxWidth
|
Layout.maximumWidth: contentMaxWidth
|
||||||
implicitHeight: visible ? nameLabel.implicitHeight : 0
|
implicitHeight: visible ? nameLabel.implicitHeight : 0
|
||||||
|
|
||||||
QQC2.Label {
|
QQC2.Label {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ TimelineContainer {
|
|||||||
innerObject: Video {
|
innerObject: Video {
|
||||||
id: vid
|
id: vid
|
||||||
|
|
||||||
Layout.maximumWidth: videoDelegate.bubbleMaxWidth
|
Layout.maximumWidth: videoDelegate.contentMaxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumHeight: Kirigami.Units.gridUnit * 15
|
Layout.maximumHeight: Kirigami.Units.gridUnit * 15
|
||||||
Layout.minimumHeight: Kirigami.Units.gridUnit * 5
|
Layout.minimumHeight: Kirigami.Units.gridUnit * 5
|
||||||
|
|||||||
Reference in New Issue
Block a user