From 4212dbe265ce03e7d1f88cd0b42e5014f1e0894c Mon Sep 17 00:00:00 2001 From: Black Hat Date: Thu, 6 Dec 2018 19:12:42 +0800 Subject: [PATCH 1/3] Init Qt 5.12. --- .../Component/Timeline/ImageDelegate.qml | 1 - imports/Spectral/Component/Timeline/qmldir | 1 + imports/Spectral/Panel/RoomPanel.qml | 103 ++++++------------ 3 files changed, 36 insertions(+), 69 deletions(-) diff --git a/imports/Spectral/Component/Timeline/ImageDelegate.qml b/imports/Spectral/Component/Timeline/ImageDelegate.qml index 362882a..71e032e 100644 --- a/imports/Spectral/Component/Timeline/ImageDelegate.qml +++ b/imports/Spectral/Component/Timeline/ImageDelegate.qml @@ -75,7 +75,6 @@ ColumnLayout { source: "image://mxc/" + (content.thumbnail_url ? content.thumbnail_url : content.url) sourceSize.width: Math.min(256, messageListView.width) - sourceSize.height: 256 layer.enabled: true layer.effect: OpacityMask { diff --git a/imports/Spectral/Component/Timeline/qmldir b/imports/Spectral/Component/Timeline/qmldir index f77ced3..aaa54ce 100644 --- a/imports/Spectral/Component/Timeline/qmldir +++ b/imports/Spectral/Component/Timeline/qmldir @@ -2,3 +2,4 @@ module Spectral.Component.Timeline MessageDelegate 2.0 MessageDelegate.qml StateDelegate 2.0 StateDelegate.qml SectionDelegate 2.0 SectionDelegate.qml +ImageDelegate 2.0 ImageDelegate.qml diff --git a/imports/Spectral/Panel/RoomPanel.qml b/imports/Spectral/Panel/RoomPanel.qml index ad8c5da..8e0bca3 100644 --- a/imports/Spectral/Panel/RoomPanel.qml +++ b/imports/Spectral/Panel/RoomPanel.qml @@ -2,6 +2,7 @@ import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Layouts 1.3 import QtQuick.Controls.Material 2.2 +import Qt.labs.qmlmodels 1.0 import Spectral.Component 2.0 import Spectral.Component.Emoji 2.0 @@ -69,6 +70,36 @@ Item { onClicked: roomDrawer.open() } + DelegateChooser { + id: delegateChooser + + role: "eventType" + choices: [ + DelegateChoice { + roleValue: "state" + delegate: StateDelegate { + width: messageListView.width + } + }, + DelegateChoice { + roleValue: "emote" + delegate: StateDelegate {} + }, + DelegateChoice { + roleValue: "message" + delegate: MessageDelegate {} + }, + DelegateChoice { + roleValue: "notice" + delegate: MessageDelegate {} + }, + DelegateChoice { + roleValue: "image" + delegate: ImageDelegate {} + } + ] + } + AutoListView { Layout.fillWidth: true Layout.maximumWidth: 960 @@ -121,69 +152,7 @@ Item { } } - delegate: ColumnLayout { - width: parent.width - implicitHeight: 32 - - id: delegateColumn - - spacing: 4 - - SectionDelegate { - Layout.alignment: Qt.AlignHCenter - Layout.margins: 4 - - visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 - } - - Loader { - Layout.maximumWidth: delegateColumn.width - Layout.alignment: item ? item.alignment : 0 - - source: { - switch (eventType) { - case "message": - case "notice": - return "qrc:/imports/Spectral/Component/Timeline/MessageDelegate.qml" - case "emote": - case "state": - return "qrc:/imports/Spectral/Component/Timeline/StateDelegate.qml" - case "image": - return "qrc:/imports/Spectral/Component/Timeline/ImageDelegate.qml" - default: - return "" - } - } - } - - // Read marker - RowLayout { - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - - visible: readMarker === true - - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: 2 - - color: Material.accent - } - - Label { - text: "And Now" - color: Material.accent - verticalAlignment: Text.AlignVCenter - } - - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: 2 - - color: Material.accent - } - } - } + delegate: delegateChooser RoundButton { width: 64 @@ -236,21 +205,19 @@ Item { Popup { property string sourceText - x: (window.width - width) / 2 - y: (window.height - height) / 2 + anchors.centerIn: parent width: 480 id: sourceDialog parent: ApplicationWindow.overlay - modal: true - padding: 16 closePolicy: Dialog.CloseOnEscape | Dialog.CloseOnPressOutside contentItem: ScrollView { + clip: true TextArea { readOnly: true selectByMouse: true @@ -328,7 +295,7 @@ Item { function goToEvent(eventID) { var index = messageEventModel.eventIDToIndex(eventID) if (index === -1) return -// messageListView.currentIndex = sortedMessageEventModel.mapFromSource(index) + // messageListView.currentIndex = sortedMessageEventModel.mapFromSource(index) messageListView.positionViewAtIndex(sortedMessageEventModel.mapFromSource(index), ListView.Contain) } From 66e2d996203dab3e8200e15e0603c212d3292ae3 Mon Sep 17 00:00:00 2001 From: Hazy Fish Date: Fri, 7 Dec 2018 09:18:42 +0800 Subject: [PATCH 2/3] Update QtQuick. --- imports/Spectral/Component/AutoListView.qml | 2 +- imports/Spectral/Component/AutoMouseArea.qml | 2 +- imports/Spectral/Component/AutoTextField.qml | 4 +- imports/Spectral/Component/Avatar.qml | 4 +- .../Spectral/Component/Emoji/EmojiPicker.qml | 6 +- imports/Spectral/Component/MaterialIcon.qml | 6 +- imports/Spectral/Component/ScrollHelper.qml | 4 +- imports/Spectral/Component/SplitView.qml | 4 +- .../Timeline/DownloadableContent.qml | 6 +- .../Component/Timeline/ImageDelegate.qml | 8 +- .../Component/Timeline/MessageDelegate.qml | 12 +- .../Component/Timeline/SectionDelegate.qml | 4 +- .../Component/Timeline/StateDelegate.qml | 8 +- .../Component/Timeline/TimelineImage.qml | 34 ----- .../Component/Timeline/TimelineLabel.qml | 17 --- imports/Spectral/Effect/CircleMask.qml | 2 +- imports/Spectral/Effect/ElevationEffect.qml | 2 +- imports/Spectral/Effect/RippleEffect.qml | 4 +- imports/Spectral/Font/CommonFont.qml | 4 +- imports/Spectral/Font/MaterialFont.qml | 2 +- imports/Spectral/Menu/MessageContextMenu.qml | 4 +- imports/Spectral/Menu/RoomContextMenu.qml | 4 +- imports/Spectral/Panel/RoomDrawer.qml | 6 +- imports/Spectral/Panel/RoomHeader.qml | 6 +- imports/Spectral/Panel/RoomListPanel.qml | 6 +- imports/Spectral/Panel/RoomPanel.qml | 136 +++++++++++++----- imports/Spectral/Panel/RoomPanelInput.qml | 12 +- imports/Spectral/Setting/Setting.qml | 2 +- include/libqmatrixclient | 2 +- qml/main.qml | 6 +- qtquickcontrols2.conf | 1 + res.qrc | 2 - 32 files changed, 169 insertions(+), 153 deletions(-) delete mode 100644 imports/Spectral/Component/Timeline/TimelineImage.qml delete mode 100644 imports/Spectral/Component/Timeline/TimelineLabel.qml diff --git a/imports/Spectral/Component/AutoListView.qml b/imports/Spectral/Component/AutoListView.qml index 2b6bddb..1fca551 100644 --- a/imports/Spectral/Component/AutoListView.qml +++ b/imports/Spectral/Component/AutoListView.qml @@ -1,4 +1,4 @@ -import QtQuick 2.9 +import QtQuick 2.12 ListView { ScrollHelper { diff --git a/imports/Spectral/Component/AutoMouseArea.qml b/imports/Spectral/Component/AutoMouseArea.qml index ceaf84d..124625b 100644 --- a/imports/Spectral/Component/AutoMouseArea.qml +++ b/imports/Spectral/Component/AutoMouseArea.qml @@ -1,4 +1,4 @@ -import QtQuick 2.9 +import QtQuick 2.12 import Spectral.Setting 0.1 diff --git a/imports/Spectral/Component/AutoTextField.qml b/imports/Spectral/Component/AutoTextField.qml index 8bd6bac..ec07de6 100644 --- a/imports/Spectral/Component/AutoTextField.qml +++ b/imports/Spectral/Component/AutoTextField.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 TextField { selectByMouse: true diff --git a/imports/Spectral/Component/Avatar.qml b/imports/Spectral/Component/Avatar.qml index be95df5..e80d213 100644 --- a/imports/Spectral/Component/Avatar.qml +++ b/imports/Spectral/Component/Avatar.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtGraphicalEffects 1.0 Item { diff --git a/imports/Spectral/Component/Emoji/EmojiPicker.qml b/imports/Spectral/Component/Emoji/EmojiPicker.qml index c875488..c3520f1 100644 --- a/imports/Spectral/Component/Emoji/EmojiPicker.qml +++ b/imports/Spectral/Component/Emoji/EmojiPicker.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral.Component 2.0 diff --git a/imports/Spectral/Component/MaterialIcon.qml b/imports/Spectral/Component/MaterialIcon.qml index 593b232..35ee4a1 100644 --- a/imports/Spectral/Component/MaterialIcon.qml +++ b/imports/Spectral/Component/MaterialIcon.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral.Setting 0.1 import Spectral.Font 0.1 diff --git a/imports/Spectral/Component/ScrollHelper.qml b/imports/Spectral/Component/ScrollHelper.qml index 25714f0..7a9779a 100644 --- a/imports/Spectral/Component/ScrollHelper.qml +++ b/imports/Spectral/Component/ScrollHelper.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 MouseArea { id: root diff --git a/imports/Spectral/Component/SplitView.qml b/imports/Spectral/Component/SplitView.qml index 4f176fa..e4302bb 100644 --- a/imports/Spectral/Component/SplitView.qml +++ b/imports/Spectral/Component/SplitView.qml @@ -37,8 +37,8 @@ ** ****************************************************************************/ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 import QtQuick.Window 2.1 import Spectral.Setting 0.1 diff --git a/imports/Spectral/Component/Timeline/DownloadableContent.qml b/imports/Spectral/Component/Timeline/DownloadableContent.qml index ba586d4..2457424 100644 --- a/imports/Spectral/Component/Timeline/DownloadableContent.qml +++ b/imports/Spectral/Component/Timeline/DownloadableContent.qml @@ -1,6 +1,6 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Controls.Material 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 +import QtQuick.Controls.Material 2.4 import Qt.labs.platform 1.0 Item { diff --git a/imports/Spectral/Component/Timeline/ImageDelegate.qml b/imports/Spectral/Component/Timeline/ImageDelegate.qml index 71e032e..6f03100 100644 --- a/imports/Spectral/Component/Timeline/ImageDelegate.qml +++ b/imports/Spectral/Component/Timeline/ImageDelegate.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import QtGraphicalEffects 1.0 import Spectral 0.1 @@ -11,8 +11,6 @@ import Spectral.Component 2.0 import Spectral.Font 0.1 ColumnLayout { - readonly property int alignment: sentByMe ? Qt.AlignRight : Qt.AlignLeft - readonly property bool avatarVisible: !sentByMe && (aboveAuthor !== author || aboveSection !== section || aboveEventType === "state" || aboveEventType === "emote" || aboveEventType === "other") readonly property bool sentByMe: author === currentRoom.localUser diff --git a/imports/Spectral/Component/Timeline/MessageDelegate.qml b/imports/Spectral/Component/Timeline/MessageDelegate.qml index e58ed3e..ca66bdc 100644 --- a/imports/Spectral/Component/Timeline/MessageDelegate.qml +++ b/imports/Spectral/Component/Timeline/MessageDelegate.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral 0.1 import Spectral.Setting 0.1 @@ -10,14 +10,14 @@ import Spectral.Component 2.0 import Spectral.Font 0.1 ColumnLayout { - readonly property int alignment: sentByMe ? Qt.AlignRight : Qt.AlignLeft - readonly property bool avatarVisible: !sentByMe && (aboveAuthor !== author || aboveSection !== section || aboveEventType === "state" || aboveEventType === "emote" || aboveEventType === "other") readonly property bool sentByMe: author === currentRoom.localUser signal saveFileAs() signal openExternally() + Layout.alignment: sentByMe ? Qt.AlignRight : Qt.AlignLeft + id: root spacing: 0 @@ -34,8 +34,6 @@ ColumnLayout { } RowLayout { - Layout.alignment: sentByMe ? Qt.AlignRight : Qt.AlignLeft - z: -5 id: messageRow diff --git a/imports/Spectral/Component/Timeline/SectionDelegate.qml b/imports/Spectral/Component/Timeline/SectionDelegate.qml index 6db3e26..d022135 100644 --- a/imports/Spectral/Component/Timeline/SectionDelegate.qml +++ b/imports/Spectral/Component/Timeline/SectionDelegate.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 Label { text: section + " • " + Qt.formatTime(time, "hh:mm") diff --git a/imports/Spectral/Component/Timeline/StateDelegate.qml b/imports/Spectral/Component/Timeline/StateDelegate.qml index 2c3a262..2c4c20a 100644 --- a/imports/Spectral/Component/Timeline/StateDelegate.qml +++ b/imports/Spectral/Component/Timeline/StateDelegate.qml @@ -1,13 +1,11 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral.Setting 0.1 Label { - readonly property int alignment: Qt.AlignHCenter - text: "" + author.displayName + " " + display color: Material.accent diff --git a/imports/Spectral/Component/Timeline/TimelineImage.qml b/imports/Spectral/Component/Timeline/TimelineImage.qml deleted file mode 100644 index c7050de..0000000 --- a/imports/Spectral/Component/Timeline/TimelineImage.qml +++ /dev/null @@ -1,34 +0,0 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 - -Item { - property alias source: baseImage.source - property alias sourceSize: baseImage.sourceSize.width - - readonly property bool loading: baseImage.status == Image.Loading - - signal clicked() - - width: loading ? 128 : baseImage.implicitWidth - height: loading ? progressBar.height : baseImage.implicitHeight - - id: rekt - - Image { id: baseImage } - - ProgressBar { - width: parent.width - visible: loading - - id: progressBar - - indeterminate: true - } - - MouseArea { - anchors.fill: parent - propagateComposedEvents: true - - onClicked: rekt.clicked() - } -} diff --git a/imports/Spectral/Component/Timeline/TimelineLabel.qml b/imports/Spectral/Component/Timeline/TimelineLabel.qml deleted file mode 100644 index f64751f..0000000 --- a/imports/Spectral/Component/Timeline/TimelineLabel.qml +++ /dev/null @@ -1,17 +0,0 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Controls.Material 2.2 - -import Spectral.Setting 0.1 - -Label { - property bool coloredBackground - - color: coloredBackground ? "white": Material.foreground - - wrapMode: Label.Wrap - linkColor: coloredBackground ? "white" : Material.accent - textFormat: Text.RichText - - onLinkActivated: Qt.openUrlExternally(link) -} diff --git a/imports/Spectral/Effect/CircleMask.qml b/imports/Spectral/Effect/CircleMask.qml index fc59f40..184861e 100644 --- a/imports/Spectral/Effect/CircleMask.qml +++ b/imports/Spectral/Effect/CircleMask.qml @@ -1,4 +1,4 @@ -import QtQuick 2.9 +import QtQuick 2.12 import QtGraphicalEffects 1.0 Item { diff --git a/imports/Spectral/Effect/ElevationEffect.qml b/imports/Spectral/Effect/ElevationEffect.qml index 423c492..0299fd5 100644 --- a/imports/Spectral/Effect/ElevationEffect.qml +++ b/imports/Spectral/Effect/ElevationEffect.qml @@ -1,4 +1,4 @@ -import QtQuick 2.9 +import QtQuick 2.12 import QtGraphicalEffects 1.0 /*! diff --git a/imports/Spectral/Effect/RippleEffect.qml b/imports/Spectral/Effect/RippleEffect.qml index 4432e21..9749aa9 100644 --- a/imports/Spectral/Effect/RippleEffect.qml +++ b/imports/Spectral/Effect/RippleEffect.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtGraphicalEffects 1.0 import Spectral.Component 2.0 diff --git a/imports/Spectral/Font/CommonFont.qml b/imports/Spectral/Font/CommonFont.qml index f221ef2..efe053d 100644 --- a/imports/Spectral/Font/CommonFont.qml +++ b/imports/Spectral/Font/CommonFont.qml @@ -1,6 +1,6 @@ pragma Singleton -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 Item { property alias font: materialLabel.font diff --git a/imports/Spectral/Font/MaterialFont.qml b/imports/Spectral/Font/MaterialFont.qml index 312fe23..c1a3d66 100644 --- a/imports/Spectral/Font/MaterialFont.qml +++ b/imports/Spectral/Font/MaterialFont.qml @@ -1,5 +1,5 @@ pragma Singleton -import QtQuick 2.9 +import QtQuick 2.12 FontLoader { source: "qrc:/assets/font/material.ttf" diff --git a/imports/Spectral/Menu/MessageContextMenu.qml b/imports/Spectral/Menu/MessageContextMenu.qml index 62c7c74..802e07b 100644 --- a/imports/Spectral/Menu/MessageContextMenu.qml +++ b/imports/Spectral/Menu/MessageContextMenu.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 Menu { property var root: null diff --git a/imports/Spectral/Menu/RoomContextMenu.qml b/imports/Spectral/Menu/RoomContextMenu.qml index 8c5b1a6..497f79a 100644 --- a/imports/Spectral/Menu/RoomContextMenu.qml +++ b/imports/Spectral/Menu/RoomContextMenu.qml @@ -1,5 +1,5 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import Spectral 0.1 Menu { diff --git a/imports/Spectral/Panel/RoomDrawer.qml b/imports/Spectral/Panel/RoomDrawer.qml index 2221b5b..9cdc0d0 100644 --- a/imports/Spectral/Panel/RoomDrawer.qml +++ b/imports/Spectral/Panel/RoomDrawer.qml @@ -1,6 +1,6 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Controls.Material 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 +import QtQuick.Controls.Material 2.4 import QtQuick.Layouts 1.3 import Spectral.Component 2.0 diff --git a/imports/Spectral/Panel/RoomHeader.qml b/imports/Spectral/Panel/RoomHeader.qml index e3c95ff..eb291d5 100644 --- a/imports/Spectral/Panel/RoomHeader.qml +++ b/imports/Spectral/Panel/RoomHeader.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral 0.1 import Spectral.Effect 2.0 diff --git a/imports/Spectral/Panel/RoomListPanel.qml b/imports/Spectral/Panel/RoomListPanel.qml index 7d9dc3d..a341ec6 100644 --- a/imports/Spectral/Panel/RoomListPanel.qml +++ b/imports/Spectral/Panel/RoomListPanel.qml @@ -1,8 +1,8 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral.Component 2.0 import Spectral.Menu 2.0 diff --git a/imports/Spectral/Panel/RoomPanel.qml b/imports/Spectral/Panel/RoomPanel.qml index 8e0bca3..db01b53 100644 --- a/imports/Spectral/Panel/RoomPanel.qml +++ b/imports/Spectral/Panel/RoomPanel.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Qt.labs.qmlmodels 1.0 import Spectral.Component 2.0 @@ -70,36 +70,6 @@ Item { onClicked: roomDrawer.open() } - DelegateChooser { - id: delegateChooser - - role: "eventType" - choices: [ - DelegateChoice { - roleValue: "state" - delegate: StateDelegate { - width: messageListView.width - } - }, - DelegateChoice { - roleValue: "emote" - delegate: StateDelegate {} - }, - DelegateChoice { - roleValue: "message" - delegate: MessageDelegate {} - }, - DelegateChoice { - roleValue: "notice" - delegate: MessageDelegate {} - }, - DelegateChoice { - roleValue: "image" - delegate: ImageDelegate {} - } - ] - } - AutoListView { Layout.fillWidth: true Layout.maximumWidth: 960 @@ -152,7 +122,105 @@ Item { } } - delegate: delegateChooser + delegate: DelegateChooser { + role: "eventType" + + DelegateChoice { + roleValue: "state" + delegate: ColumnLayout { + width: messageListView.width + spacing: 4 + + SectionDelegate { + Layout.alignment: Qt.AlignHCenter + Layout.margins: 4 + + visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 + } + + StateDelegate { + Layout.maximumWidth: parent.width + Layout.alignment: Qt.AlignHCenter + } + } + } + + DelegateChoice { + roleValue: "emote" + delegate: ColumnLayout { + width: messageListView.width + spacing: 4 + + SectionDelegate { + Layout.alignment: Qt.AlignHCenter + Layout.margins: 4 + + visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 + } + + StateDelegate { + Layout.maximumWidth: parent.width + Layout.alignment: Qt.AlignHCenter + } + } + } + + DelegateChoice { + roleValue: "message" + delegate: ColumnLayout { + width: messageListView.width + spacing: 4 + + SectionDelegate { + Layout.alignment: Qt.AlignHCenter + Layout.margins: 4 + + visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 + } + + MessageDelegate { + } + } + } + + DelegateChoice { + roleValue: "notice" + delegate: ColumnLayout { + width: messageListView.width + spacing: 4 + + SectionDelegate { + Layout.alignment: Qt.AlignHCenter + Layout.margins: 4 + + visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 + } + + MessageDelegate { + } + } + } + + DelegateChoice { + roleValue: "image" + delegate: ColumnLayout { + width: messageListView.width + spacing: 4 + + SectionDelegate { + Layout.alignment: Qt.AlignHCenter + Layout.margins: 4 + + visible: section !== aboveSection || Math.abs(time - aboveTime) > 600000 + } + + ImageDelegate { + Layout.maximumWidth: parent.width + Layout.alignment: Qt.AlignHCenter + } + } + } + } RoundButton { width: 64 diff --git a/imports/Spectral/Panel/RoomPanelInput.qml b/imports/Spectral/Panel/RoomPanelInput.qml index c558745..e6ecec6 100644 --- a/imports/Spectral/Panel/RoomPanelInput.qml +++ b/imports/Spectral/Panel/RoomPanelInput.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Spectral.Component 2.0 import Spectral.Component.Emoji 2.0 @@ -167,6 +167,8 @@ Control { spacing: 0 ToolButton { + Layout.preferredWidth: 48 + Layout.preferredHeight: 48 Layout.alignment: Qt.AlignBottom id: uploadButton @@ -186,6 +188,8 @@ Control { } ToolButton { + Layout.preferredWidth: 48 + Layout.preferredHeight: 48 Layout.alignment: Qt.AlignBottom id: cancelReplyButton @@ -364,6 +368,8 @@ Control { } ToolButton { + Layout.preferredWidth: 48 + Layout.preferredHeight: 48 Layout.alignment: Qt.AlignBottom id: emojiButton diff --git a/imports/Spectral/Setting/Setting.qml b/imports/Spectral/Setting/Setting.qml index 3eb48c1..fb7a966 100644 --- a/imports/Spectral/Setting/Setting.qml +++ b/imports/Spectral/Setting/Setting.qml @@ -1,5 +1,5 @@ pragma Singleton -import QtQuick 2.9 +import QtQuick 2.12 import Qt.labs.settings 1.0 Settings { diff --git a/include/libqmatrixclient b/include/libqmatrixclient index 52081fe..be7d25e 160000 --- a/include/libqmatrixclient +++ b/include/libqmatrixclient @@ -1 +1 @@ -Subproject commit 52081fe91724e5f2a82c55f0e6230d8841dd859a +Subproject commit be7d25ed22abd07a254bfb8ff6c30de4fcc79e6a diff --git a/qml/main.qml b/qml/main.qml index dd7ca62..228c610 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -1,7 +1,7 @@ -import QtQuick 2.9 -import QtQuick.Controls 2.2 +import QtQuick 2.12 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 -import QtQuick.Controls.Material 2.2 +import QtQuick.Controls.Material 2.4 import Qt.labs.settings 1.0 import Qt.labs.platform 1.0 as Platform diff --git a/qtquickcontrols2.conf b/qtquickcontrols2.conf index 6ed3a49..c594d10 100644 --- a/qtquickcontrols2.conf +++ b/qtquickcontrols2.conf @@ -7,6 +7,7 @@ Style=Material [Material] Theme=Light +Variant=Dense Primary=#344955 Accent=#673AB7 Foreground=#1D333E diff --git a/res.qrc b/res.qrc index 9ae861e..a1b0934 100644 --- a/res.qrc +++ b/res.qrc @@ -33,8 +33,6 @@ imports/Spectral/Panel/RoomHeader.qml imports/Spectral/Component/ScrollHelper.qml imports/Spectral/Component/AutoListView.qml - imports/Spectral/Component/Timeline/TimelineImage.qml - imports/Spectral/Component/Timeline/TimelineLabel.qml imports/Spectral/Component/AutoTextField.qml imports/Spectral/Panel/RoomPanelInput.qml imports/Spectral/Component/SplitView.qml From 8300d022b2e47503e4f7e32fbe1d193003448bb2 Mon Sep 17 00:00:00 2001 From: Black Hat Date: Sat, 15 Dec 2018 10:46:18 +0800 Subject: [PATCH 3/3] Update libqmatrixclient. Enable member lazy loading. Some Qt 5.12 fix. --- imports/Spectral/Component/Timeline/MessageDelegate.qml | 6 ++---- imports/Spectral/Panel/RoomDrawer.qml | 2 +- imports/Spectral/Panel/RoomListPanel.qml | 6 +++++- include/libqmatrixclient | 2 +- src/controller.cpp | 9 ++++++++- src/imageprovider.cpp | 1 + src/spectralroom.cpp | 2 -- src/spectralroom.h | 1 - src/userlistmodel.cpp | 4 ---- 9 files changed, 18 insertions(+), 15 deletions(-) diff --git a/imports/Spectral/Component/Timeline/MessageDelegate.qml b/imports/Spectral/Component/Timeline/MessageDelegate.qml index ca66bdc..0fe10c3 100644 --- a/imports/Spectral/Component/Timeline/MessageDelegate.qml +++ b/imports/Spectral/Component/Timeline/MessageDelegate.qml @@ -68,10 +68,8 @@ ColumnLayout { Control { Layout.maximumWidth: messageListView.width - (!sentByMe ? 32 + messageRow.spacing : 0) - 48 - topPadding: 8 - bottomPadding: 8 - leftPadding: 16 - rightPadding: 16 + verticalPadding: 8 + horizontalPadding: 16 background: Rectangle { color: sentByMe ? "#009DC2" : eventType === "notice" ? "#4285F4" : "#673AB7" diff --git a/imports/Spectral/Panel/RoomDrawer.qml b/imports/Spectral/Panel/RoomDrawer.qml index 9cdc0d0..bb6edd2 100644 --- a/imports/Spectral/Panel/RoomDrawer.qml +++ b/imports/Spectral/Panel/RoomDrawer.qml @@ -48,7 +48,7 @@ Drawer { wrapMode: Label.Wrap horizontalAlignment: Text.AlignHCenter - text: room ? room.memberCount + " Members" : "No Member Count" + text: room ? room.totalMemberCount + " Members" : "No Member Count" } RowLayout { diff --git a/imports/Spectral/Panel/RoomListPanel.qml b/imports/Spectral/Panel/RoomListPanel.qml index a341ec6..2ee2792 100644 --- a/imports/Spectral/Panel/RoomListPanel.qml +++ b/imports/Spectral/Panel/RoomListPanel.qml @@ -813,7 +813,11 @@ Rectangle { inviteDialog.currentRoom = currentRoom inviteDialog.open() } else { - leaveRoom(enteredRoom) + if (enteredRoom) { + enteredRoom.displayed = false + leaveRoom(enteredRoom) + } + currentRoom.displayed = true enterRoom(currentRoom) enteredRoom = currentRoom } diff --git a/include/libqmatrixclient b/include/libqmatrixclient index be7d25e..fcc8d2c 160000 --- a/include/libqmatrixclient +++ b/include/libqmatrixclient @@ -1 +1 @@ -Subproject commit be7d25ed22abd07a254bfb8ff6c30de4fcc79e6a +Subproject commit fcc8d2ca615fce6e42bf1cf6585d60f94a2db926 diff --git a/src/controller.cpp b/src/controller.cpp index 8992e9c..4c87a97 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -42,7 +42,12 @@ Controller::Controller(QObject* parent) QTimer::singleShot(0, this, SLOT(invokeLogin())); } -Controller::~Controller() {} +Controller::~Controller() { + for (Connection* c : m_connections) { + c->stopSync(); + c->saveState(); + } +} inline QString accessTokenFileName(const AccountSettings& account) { QString fileName = account.userId(); @@ -107,6 +112,8 @@ void Controller::addConnection(Connection* c) { m_connections.push_back(c); + c->setLazyLoading(true); + connect(c, &Connection::syncDone, this, [=] { emit syncDone(); c->sync(30000); diff --git a/src/imageprovider.cpp b/src/imageprovider.cpp index c4abc1f..72d8030 100644 --- a/src/imageprovider.cpp +++ b/src/imageprovider.cpp @@ -29,6 +29,7 @@ QImage ImageProvider::requestImage(const QString& id, QSize* pSize, QUrl mxcUri{id}; QImage result = image(mxcUri, requestedSize); + if (result.isNull()) return {}; if (!requestedSize.isEmpty() && result.size() != requestedSize) { QImage scaled = result.scaled(requestedSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); diff --git a/src/spectralroom.cpp b/src/spectralroom.cpp index e003d61..79ef501 100644 --- a/src/spectralroom.cpp +++ b/src/spectralroom.cpp @@ -195,8 +195,6 @@ QDateTime SpectralRoom::lastActiveTime() { return messageEvents().rbegin()->get()->timestamp(); } -float SpectralRoom::orderForTag(QString name) { return tag(name).order; } - int SpectralRoom::savedTopVisibleIndex() const { return firstDisplayedMarker() == timelineEdge() ? 0 diff --git a/src/spectralroom.h b/src/spectralroom.h index 21474ca..309a565 100644 --- a/src/spectralroom.h +++ b/src/spectralroom.h @@ -66,7 +66,6 @@ class SpectralRoom : public Room { } } - Q_INVOKABLE float orderForTag(QString name); Q_INVOKABLE int savedTopVisibleIndex() const; Q_INVOKABLE int savedBottomVisibleIndex() const; Q_INVOKABLE void saveViewport(int topIndex, int bottomIndex); diff --git a/src/userlistmodel.cpp b/src/userlistmodel.cpp index 4fc65e8..851cd09 100644 --- a/src/userlistmodel.cpp +++ b/src/userlistmodel.cpp @@ -34,12 +34,8 @@ void UserListModel::setRoom(QMatrixClient::Room* room) { connect(m_currentRoom, &Room::memberRenamed, this, &UserListModel::userAdded); { - QElapsedTimer et; - et.start(); m_users = m_currentRoom->users(); std::sort(m_users.begin(), m_users.end(), room->memberSorter()); - qDebug() << "Sorting" << m_users.size() << "user(s) in" - << m_currentRoom->displayName() << "took" << et; } for (User* user : m_users) { connect(user, &User::avatarChanged, this, &UserListModel::avatarChanged);