diff --git a/imports/Spectral/Component/AutoListView.qml b/imports/Spectral/Component/AutoListView.qml
index 2b6bddb85..1fca55100 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 ceaf84d40..124625bae 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 8bd6bac72..ec07de62a 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 be95df5d9..e80d2139f 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 c8754885c..c3520f1c0 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 593b232fa..35ee4a13a 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 25714f05f..7a9779aad 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 4f176fa35..e4302bbec 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 ba586d459..2457424f0 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 71e032e92..6f031001d 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 e58ed3e74..ca66bdcbb 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 6db3e26ec..d0221356c 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 2c3a262bd..2c4c20abf 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 c7050de5a..000000000
--- 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 f64751fa6..000000000
--- 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 fc59f408b..184861e39 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 423c49223..0299fd5c2 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 4432e2137..9749aa93f 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 f221ef262..efe053df9 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 312fe231a..c1a3d6644 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 62c7c74f5..802e07b8e 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 8c5b1a6a0..497f79a64 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 2221b5bd2..9cdc0d06f 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 e3c95ff00..eb291d567 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 7d9dc3d12..a341ec68f 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 8e0bca33d..db01b5346 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 c55874503..e6ecec625 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 3eb48c15b..fb7a9662a 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 52081fe91..be7d25ed2 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 dd7ca6285..228c61031 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 6ed3a49df..c594d108a 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 9ae861ed3..a1b0934cf 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