diff --git a/CMakeLists.txt b/CMakeLists.txt
index 67eff75e..5abecd4d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -775,7 +775,7 @@ set(QML_SOURCES
resources/qml/dialogs/RoomDirectory.qml
resources/qml/dialogs/RoomMembers.qml
resources/qml/dialogs/AllowedRoomsSettingsDialog.qml
- resources/qml/dialogs/RoomSettings.qml
+ resources/qml/dialogs/RoomSettingsDialog.qml
resources/qml/dialogs/UserProfile.qml
resources/qml/dialogs/IgnoredUsers.qml
resources/qml/emoji/StickerPicker.qml
@@ -805,7 +805,7 @@ qt_add_qml_module(nheko
NO_RESOURCE_TARGET_PATH
RESOURCE_PREFIX "/"
VERSION 1.1
- DEPENDENCIES QtQml QtQuick # https://bugreports.qt.io/browse/QTBUG-102554
+ DEPENDENCIES QtQuick QtQml.Models
QML_FILES
${QML_SOURCES}
SOURCES
@@ -816,6 +816,10 @@ qt_add_qml_module(nheko
# #PREFIX "/"
#)
+set_target_properties(nheko PROPERTIES
+ QT_QMLCACHEGEN_ARGUMENTS "--verbose"
+)
+
#
# Bundle translations
#
diff --git a/resources/qml/EncryptionIndicator.qml b/resources/qml/EncryptionIndicator.qml
index 347220d7..b606a531 100644
--- a/resources/qml/EncryptionIndicator.qml
+++ b/resources/qml/EncryptionIndicator.qml
@@ -2,10 +2,10 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQuick 2.12
-import QtQuick.Controls 2.1
-import QtQuick.Window 2.15
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Window
+import im.nheko
Image {
id: stateImg
diff --git a/resources/qml/ImageButton.qml b/resources/qml/ImageButton.qml
index ddc0b7d8..783a01d0 100644
--- a/resources/qml/ImageButton.qml
+++ b/resources/qml/ImageButton.qml
@@ -4,9 +4,9 @@
pragma ComponentBehavior: Bound
import "./ui"
-import QtQuick 2.3
-import QtQuick.Controls 2.3
-import im.nheko 1.0 // for cursor shape
+import QtQuick
+import QtQuick.Controls
+import im.nheko // for cursor shape
AbstractButton {
id: button
diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml
index 09a8f442..2b1454e4 100644
--- a/resources/qml/Root.qml
+++ b/resources/qml/Root.qml
@@ -245,7 +245,7 @@ Pane {
}
}
function onOpenRoomSettingsDialog(settings) {
- var component = Qt.createComponent("qrc:/resources/qml/dialogs/RoomSettings.qml");
+ var component = Qt.createComponent("qrc:/resources/qml/dialogs/RoomSettingsDialog.qml");
if (component.status == Component.Ready) {
var roomSettings = component.createObject(timelineRoot, {
"roomSettings": settings
diff --git a/resources/qml/delegates/Encrypted.qml b/resources/qml/delegates/Encrypted.qml
index 7aeeb28a..42a61918 100644
--- a/resources/qml/delegates/Encrypted.qml
+++ b/resources/qml/delegates/Encrypted.qml
@@ -2,7 +2,6 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import ".."
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
@@ -38,7 +37,7 @@ Control {
Label {
id: encryptedText
text: {
- switch (encryptionError) {
+ switch (r.encryptionError) {
case Olm.MissingSession:
return qsTr("There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.");
case Olm.MissingSessionIndex:
@@ -63,7 +62,7 @@ Control {
}
Button {
- visible: encryptionError == Olm.MissingSession || encryptionError == Olm.MissingSessionIndex
+ visible: r.encryptionError == Olm.MissingSession || encryptionError == Olm.MissingSessionIndex
text: qsTr("Request key")
onClicked: room.requestKeyForEvent(eventId)
}
diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml
index 9f350123..f15a87a4 100644
--- a/resources/qml/delegates/FileMessage.qml
+++ b/resources/qml/delegates/FileMessage.qml
@@ -32,8 +32,8 @@ Control {
color: palette.light
radius: 22
- height: 44
- width: 44
+ Layout.preferredHeight: 44
+ Layout.preferredWidth: 44
Image {
id: img
@@ -54,7 +54,7 @@ Control {
}
NhekoCursorShape {
- anchors.fill: parent
+ anchors.fill: evRoot.parent
cursorShape: Qt.PointingHandCursor
}
@@ -68,7 +68,7 @@ Control {
Layout.fillWidth: true
Layout.maximumWidth: implicitWidth + 1
- text: filename
+ text: evRoot.filename
textFormat: Text.PlainText
elide: Text.ElideRight
color: palette.text
@@ -79,7 +79,7 @@ Control {
Layout.fillWidth: true
Layout.maximumWidth: implicitWidth + 1
- text: filesize
+ text: evRoot.filesize
textFormat: Text.PlainText
elide: Text.ElideRight
color: palette.text
diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml
index 9c93c25b..18ff11d2 100644
--- a/resources/qml/delegates/ImageMessage.qml
+++ b/resources/qml/delegates/ImageMessage.qml
@@ -34,38 +34,36 @@ AbstractButton {
name: "BlurhashVisible"
PropertyChanges {
- target: blurhash_
- opacity: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) ? 1 : 0
- visible: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash)
+ blurhash_ {
+ opacity: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) ? 1 : 0
+ visible: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash)
+ }
}
PropertyChanges {
- target: img
- opacity: 0
+ img.opacity: 0
}
PropertyChanges {
- target: mxcimage
- opacity: 0
+ mxcimage.opacity: 0
}
},
State {
name: "ImageVisible"
PropertyChanges {
- target: blurhash_
- opacity: 0
- visible: false
+ blurhash_ {
+ opacity: 0
+ visible: false
+ }
}
PropertyChanges {
- target: img
- opacity: 1
+ img.opacity: 1
}
PropertyChanges {
- target: mxcimage
- opacity: 1
+ mxcimage.opacity: 1
}
}
]
diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml
index 99928369..2a47d275 100644
--- a/resources/qml/delegates/PlayableMediaMessage.qml
+++ b/resources/qml/delegates/PlayableMediaMessage.qml
@@ -2,12 +2,10 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import "../"
import "../ui/media"
import QtMultimedia
import QtQuick
import QtQuick.Controls
-import QtQuick.Layouts
import im.nheko
Item {
@@ -47,7 +45,7 @@ Item {
Rectangle {
id: videoContainer
- color: type == MtxEvent.VideoMessage ? palette.window : "transparent"
+ color: content.type == MtxEvent.VideoMessage ? palette.window : "transparent"
width: parent.width
height: parent.height - fileInfoLabel.height
@@ -57,14 +55,14 @@ Item {
Image {
anchors.fill: parent
- source: thumbnailUrl ? thumbnailUrl.replace("mxc://", "image://MxcImage/") + "?scale" : "image://colorimage/:/icons/icons/ui/video-file.svg?" + palette.windowText
+ source: content.thumbnailUrl ? thumbnailUrl.replace("mxc://", "image://MxcImage/") + "?scale" : "image://colorimage/:/icons/icons/ui/video-file.svg?" + palette.windowText
asynchronous: true
fillMode: Image.PreserveAspectFit
VideoOutput {
id: videoOutput
- visible: type == MtxEvent.VideoMessage
+ visible: content.type == MtxEvent.VideoMessage
clip: true
anchors.fill: parent
fillMode: VideoOutput.PreserveAspectFit
@@ -79,7 +77,7 @@ Item {
anchors.left: videoContainer.left
anchors.right: videoContainer.right
anchors.bottom: videoContainer.bottom
- playingVideo: type == MtxEvent.VideoMessage
+ playingVideo: content.type == MtxEvent.VideoMessage
positionValue: mxcmedia.position
duration: mediaLoaded ? mxcmedia.duration : content.duration
mediaLoaded: mxcmedia.loaded
@@ -95,7 +93,7 @@ Item {
id: fileInfoLabel
anchors.top: videoContainer.bottom
- text: body + " [" + filesize + "]"
+ text: content.body + " [" + filesize + "]"
textFormat: Text.RichText
elide: Text.ElideRight
color: palette.text
diff --git a/resources/qml/delegates/Redacted.qml b/resources/qml/delegates/Redacted.qml
index 3c496f08..1bf87f91 100644
--- a/resources/qml/delegates/Redacted.qml
+++ b/resources/qml/delegates/Redacted.qml
@@ -33,7 +33,7 @@ Control {
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
Layout.maximumWidth: implicitWidth + 1
Layout.fillWidth: true
- property var redactedPair: room.formatRedactedEvent(msgRoot.eventId)
+ property var redactedPair: msgRoot.room.formatRedactedEvent(msgRoot.eventId)
text: redactedPair["first"]
wrapMode: Label.WordWrap
diff --git a/resources/qml/delegates/Reply.qml b/resources/qml/delegates/Reply.qml
index ece838b7..ff46347f 100644
--- a/resources/qml/delegates/Reply.qml
+++ b/resources/qml/delegates/Reply.qml
@@ -2,12 +2,10 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import Qt.labs.platform 1.1 as Platform
-import QtQuick 2.12
-import QtQuick.Controls 2.3
-import QtQuick.Layouts 1.2
-import QtQuick.Window 2.13
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Window
+import im.nheko
import "../"
AbstractButton {
@@ -45,7 +43,7 @@ AbstractButton {
id: timelineEvent
isStateEvent: false
- room: room_
+ room: r.room_
eventId: r.eventId
replyTo: ""
mainInset: 4 + Nheko.paddingMedium
diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml
index d17e61d2..3625aea1 100644
--- a/resources/qml/delegates/TextMessage.qml
+++ b/resources/qml/delegates/TextMessage.qml
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
import ".."
-import QtQuick.Controls
import im.nheko
MatrixText {
@@ -18,28 +17,28 @@ MatrixText {
property bool fitsMetadata: false //positionAt(width,height-4) == positionAt(width-metadataWidth-10, height-4)
// table border-collapse doesn't seem to work
- text: "
-
- " + formatted.replace(//g, "").replace(/<\/del>/g, "").replace(//g, "").replace(/<\/strike>/g, "")
+ background-color: ` + palette.text + `;
+ }` : "") + // TODO(Nico): Figure out how to support mobile
+ `
+ ` + formatted.replace(//g, "").replace(/<\/del>/g, "").replace(//g, "").replace(/<\/strike>/g, "")
enabled: !isReply
font.pointSize: (Settings.enlargeEmojiOnlyMessages && isOnlyEmoji > 0 && isOnlyEmoji < 4) ? Settings.fontSize * 3 : Settings.fontSize
diff --git a/resources/qml/dialogs/IgnoredUsers.qml b/resources/qml/dialogs/IgnoredUsers.qml
index 2d8cc920..6d6585f0 100644
--- a/resources/qml/dialogs/IgnoredUsers.qml
+++ b/resources/qml/dialogs/IgnoredUsers.qml
@@ -2,12 +2,13 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQml 2.15
-import QtQuick 2.15
-import QtQuick.Controls 2.15
-import QtQuick.Layouts 2.15
-import QtQuick.Window 2.15
-import im.nheko 1.0
+import QtQml
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Window
+import im.nheko
+import "../"
Window {
id: ignoredUsers
diff --git a/resources/qml/dialogs/RoomSettings.qml b/resources/qml/dialogs/RoomSettingsDialog.qml
similarity index 100%
rename from resources/qml/dialogs/RoomSettings.qml
rename to resources/qml/dialogs/RoomSettingsDialog.qml
diff --git a/resources/qml/voip/CallInviteBar.qml b/resources/qml/voip/CallInviteBar.qml
index d82bd143..419181ca 100644
--- a/resources/qml/voip/CallInviteBar.qml
+++ b/resources/qml/voip/CallInviteBar.qml
@@ -3,10 +3,10 @@
// SPDX-License-Identifier: GPL-3.0-or-later
import "../"
-import QtQuick 2.9
-import QtQuick.Controls 2.3
-import QtQuick.Layouts 1.2
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import im.nheko
Rectangle {
visible: CallManager.haveCallInvite && !Settings.mobileMode
diff --git a/resources/qml/voip/ScreenShare.qml b/resources/qml/voip/ScreenShare.qml
index 7f8665bc..d3661933 100644
--- a/resources/qml/voip/ScreenShare.qml
+++ b/resources/qml/voip/ScreenShare.qml
@@ -3,10 +3,10 @@
// SPDX-License-Identifier: GPL-3.0-or-later
import "../"
-import QtQuick 2.9
-import QtQuick.Controls 2.3
-import QtQuick.Layouts 1.2
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import im.nheko
Popup {
modal: true
diff --git a/resources/qml/voip/VideoCall.qml b/resources/qml/voip/VideoCall.qml
index bd160d3e..f083d998 100644
--- a/resources/qml/voip/VideoCall.qml
+++ b/resources/qml/voip/VideoCall.qml
@@ -2,7 +2,6 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQuick 2.9
import org.freedesktop.gstreamer.GLVideoItem 1.0
GstGLVideoItem {