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 {