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/TopBar.qml b/resources/qml/TopBar.qml
index b7cd3ff0..6d1cc445 100644
--- a/resources/qml/TopBar.qml
+++ b/resources/qml/TopBar.qml
@@ -56,11 +56,11 @@ Pane {
Layout.row: 0
displayName: communityName
enabled: false
- height: fontMetrics.lineSpacing
+ implicitHeight: fontMetrics.lineSpacing
+ implicitWidth: fontMetrics.lineSpacing
roomid: communityId
url: avatarUrl.replace("mxc://", "image://MxcImage/")
visible: roomid && room.parentSpace.isLoaded && ("space:" + room.parentSpace.roomid != Communities.currentTagId)
- width: fontMetrics.lineSpacing
}
Label {
id: communityLabel
@@ -98,11 +98,11 @@ Pane {
Layout.rowSpan: 2
displayName: roomName
enabled: false
- height: Nheko.avatarSize
+ implicitHeight: Nheko.avatarSize
+ implicitWidth: Nheko.avatarSize
roomid: roomId
url: avatarUrl.replace("mxc://", "image://MxcImage/")
userid: isDirect ? directChatOtherUserId : ""
- width: Nheko.avatarSize
}
Label {
Layout.column: 2
diff --git a/resources/qml/UploadBox.qml b/resources/qml/UploadBox.qml
index 990fa422..1d9415e5 100644
--- a/resources/qml/UploadBox.qml
+++ b/resources/qml/UploadBox.qml
@@ -2,8 +2,6 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import "./components"
-import "./ui"
import QtQuick 2.9
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.3
diff --git a/resources/qml/components/AdaptiveLayout.qml b/resources/qml/components/AdaptiveLayout.qml
index eea74006..86a0d4b6 100644
--- a/resources/qml/components/AdaptiveLayout.qml
+++ b/resources/qml/components/AdaptiveLayout.qml
@@ -2,10 +2,9 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQuick 2.12
-import QtQuick.Controls 2.5
-import QtQuick.Layouts 1.12
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import im.nheko
Container {
//Component.onCompleted: {
diff --git a/resources/qml/components/AdaptiveLayoutElement.qml b/resources/qml/components/AdaptiveLayoutElement.qml
index 5d003f05..9c8d4622 100644
--- a/resources/qml/components/AdaptiveLayoutElement.qml
+++ b/resources/qml/components/AdaptiveLayoutElement.qml
@@ -2,9 +2,7 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQuick 2.12
-import QtQuick.Controls 2.5
-import QtQuick.Layouts 1.12
+import QtQuick
Item {
property int minimumWidth: 100
diff --git a/resources/qml/components/AvatarListTile.qml b/resources/qml/components/AvatarListTile.qml
index dad20e52..75c69098 100644
--- a/resources/qml/components/AvatarListTile.qml
+++ b/resources/qml/components/AvatarListTile.qml
@@ -3,10 +3,9 @@
// SPDX-License-Identifier: GPL-3.0-or-later
import ".."
-import QtQuick 2.15
-import QtQuick.Controls 2.15
-import QtQuick.Layouts 1.15
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Layouts
+import im.nheko
Rectangle {
id: tile
@@ -36,12 +35,13 @@ Rectangle {
when: hovered.hovered && !(index == selectedIndex)
PropertyChanges {
- target: tile
- background: palette.dark
- importantText: palette.brightText
- unimportantText: palette.brightText
- bubbleBackground: palette.highlight
- bubbleText: palette.highlightedText
+ tile {
+ background: palette.dark
+ importantText: palette.brightText
+ unimportantText: palette.brightText
+ bubbleBackground: palette.highlight
+ bubbleText: palette.highlightedText
+ }
}
},
@@ -50,12 +50,13 @@ Rectangle {
when: index == selectedIndex
PropertyChanges {
- target: tile
- background: palette.highlight
- importantText: palette.highlightedText
- unimportantText: palette.highlightedText
- bubbleBackground: palette.highlightedText
- bubbleText: palette.highlight
+ tile {
+ background: palette.highlight
+ importantText: palette.highlightedText
+ unimportantText: palette.highlightedText
+ bubbleBackground: palette.highlightedText
+ bubbleText: palette.highlight
+ }
}
}
@@ -75,8 +76,8 @@ Rectangle {
enabled: false
Layout.alignment: Qt.AlignVCenter
- height: avatarSize
- width: avatarSize
+ implicitHeight: avatarSize
+ implicitWidth: avatarSize
url: tile.avatarUrl.replace("mxc://", "image://MxcImage/")
displayName: title
crop: tile.crop
@@ -88,7 +89,6 @@ Rectangle {
Layout.alignment: Qt.AlignLeft
Layout.fillWidth: true
Layout.minimumWidth: 100
- width: parent.width - avatar.width
Layout.preferredWidth: parent.width - avatar.width
spacing: Nheko.paddingSmall
diff --git a/resources/qml/components/MainWindowDialog.qml b/resources/qml/components/MainWindowDialog.qml
index 10c07aae..3372d429 100644
--- a/resources/qml/components/MainWindowDialog.qml
+++ b/resources/qml/components/MainWindowDialog.qml
@@ -2,11 +2,9 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import Qt.labs.platform 1.1 as P
-import QtQuick 2.15
-import QtQuick.Controls 2.15
-import QtQuick.Layouts 1.3
-import im.nheko 1.0
+import QtQuick
+import QtQuick.Controls
+import im.nheko
Dialog {
default property alias inner: scroll.data
diff --git a/resources/qml/components/ReorderableListview.qml b/resources/qml/components/ReorderableListview.qml
index 1e8ab7b0..689f8267 100644
--- a/resources/qml/components/ReorderableListview.qml
+++ b/resources/qml/components/ReorderableListview.qml
@@ -2,10 +2,9 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
-import QtQuick 2.15
-import QtQml.Models 2.1
-import im.nheko 1.0
-import ".."
+import QtQuick
+import QtQml.Models
+import im.nheko
Item {
id: root
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..3f31e7ed 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
@@ -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: "
- <style type=\"text/css\">
- code { background-color: " + palette.alternateBase + "; white-space: pre-wrap; }
- pre { background-color: " + palette.alternateBase + "; white-space: pre-wrap; }
+ text: `
+ <style type="text/css">
+ code { background-color: ` + palette.alternateBase + `; white-space: pre-wrap; }
+ pre { background-color: ` + palette.alternateBase + `; white-space: pre-wrap; }
table {
border-width: 1px;
border-collapse: collapse;
border-style: solid;
- border-color: " + palette.text + ";
- background-color: " + palette.alternateBase + ";
+ border-color: ` + palette.text + `;
+ background-color: ` + palette.alternateBase + `;
}
table th,
table td {
- padding: " + Math.ceil(fontMetrics.lineSpacing/2) + "px;
+ padding: ` + Math.ceil(fontMetrics.lineSpacing/2) + `px;
}
blockquote { margin-left: 1em; }
- " + (!Settings.mobileMode ? "span[data-mx-spoiler] {
+ ` + (!Settings.mobileMode ? `span[data-mx-spoiler] {
color: transparent;
- background-color: " + palette.text + ";
- }" : "") + // TODO(Nico): Figure out how to support mobile
- "</style>
- " + formatted.replace(/<del>/g, "<s>").replace(/<\/del>/g, "</s>").replace(/<strike>/g, "<s>").replace(/<\/strike>/g, "</s>")
+ background-color: ` + palette.text + `;
+ }` : "") + // TODO(Nico): Figure out how to support mobile
+ `</style>
+ ` + formatted.replace(/<del>/g, "<s>").replace(/<\/del>/g, "</s>").replace(/<strike>/g, "<s>").replace(/<\/strike>/g, "</s>")
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
new file mode 100644
index 00000000..6d6585f0
--- /dev/null
+++ b/resources/qml/dialogs/IgnoredUsers.qml
@@ -0,0 +1,84 @@
+// SPDX-FileCopyrightText: Nheko Contributors
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import QtQml
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import QtQuick.Window
+import im.nheko
+import "../"
+
+Window {
+ id: ignoredUsers
+
+ title: qsTr("Ignored users")
+ flags: Qt.WindowCloseButtonHint | Qt.WindowTitleHint
+ height: 650
+ width: 420
+ minimumHeight: 420
+ color: palette.window
+
+ ListView {
+ id: view
+ anchors.fill: parent
+ spacing: Nheko.paddingMedium
+ footerPositioning: ListView.OverlayFooter
+
+ model: TimelineManager.ignoredUsers
+ header: ColumnLayout {
+ Text {
+ Layout.fillWidth: true
+ Layout.maximumWidth: view.width
+ wrapMode: Text.Wrap
+ color: palette.text
+ text: qsTr("Ignoring a user hides their messages (they can still see yours!).")
+ }
+
+ Item { Layout.preferredHeight: Nheko.paddingLarge }
+ }
+ delegate: RowLayout {
+ property var profile: TimelineManager.getGlobalUserProfile(modelData)
+
+ width: view.width
+
+ Avatar {
+ enabled: false
+ displayName: profile.displayName
+ userid: profile.userid
+ url: profile.avatarUrl.replace("mxc://", "image://MxcImage/")
+ }
+
+ Text {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignLeft
+ elide: Text.ElideRight
+ color: palette.text
+ text: modelData
+ }
+
+ ImageButton {
+ Layout.preferredHeight: 24
+ Layout.preferredWidth: 24
+ image: ":/icons/icons/ui/dismiss.svg"
+ hoverEnabled: true
+ ToolTip.visible: hovered
+ ToolTip.text: qsTr("Stop Ignoring.")
+ onClicked: profile.ignored = false
+ }
+ }
+ footer: DialogButtonBox {
+ z: 2
+ width: view.width
+ alignment: Qt.AlignRight
+ standardButtons: DialogButtonBox.Ok
+ onAccepted: ignoredUsers.close()
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: palette.window
+ }
+ }
+ }
+}
diff --git a/resources/qml/dialogs/RoomSettings.qml b/resources/qml/dialogs/RoomSettingsDialog.qml
index 1ff6876e..73dcac8c 100644
--- a/resources/qml/dialogs/RoomSettings.qml
+++ b/resources/qml/dialogs/RoomSettingsDialog.qml
@@ -551,8 +551,8 @@ ApplicationWindow {
id: confirmEncryptionDialog
title: qsTr("End-to-End Encryption")
- text: qsTr("Encryption is currently experimental and things might break unexpectedly. <br>
- Please take note that it can't be disabled afterwards.")
+ text: qsTr(`Encryption is currently experimental and things might break unexpectedly. <br>
+ Please take note that it can't be disabled afterwards.`)
modality: Qt.NonModal
onAccepted: {
if (roomSettings.isEncryptionEnabled)
diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml
index b54b52a4..6cf747e3 100644
--- a/resources/qml/dialogs/UserProfile.qml
+++ b/resources/qml/dialogs/UserProfile.qml
@@ -292,13 +292,24 @@ ApplicationWindow {
ImageButton {
Layout.preferredHeight: 24
Layout.preferredWidth: 24
+ image: ":/icons/icons/ui/volume-off-indicator.svg"
+ hoverEnabled: true
+ ToolTip.visible: hovered
+ ToolTip.text: profile.ignored ? qsTr("Unignore the user.") : qsTr("Ignore the user.")
+ buttonTextColor: profile.ignored ? Nheko.theme.red : palette.buttonText
+ onClicked: profile.ignored = !profile.ignored
+ visible: !profile.isSelf
+ }
+
+ ImageButton {
+ Layout.preferredHeight: 24
+ Layout.preferredWidth: 24
image: ":/icons/icons/ui/refresh.svg"
hoverEnabled: true
ToolTip.visible: hovered
ToolTip.text: qsTr("Refresh device list.")
onClicked: profile.refreshDevices()
}
-
}
TabBar {
diff --git a/resources/qml/pages/UserSettingsPage.qml b/resources/qml/pages/UserSettingsPage.qml
index 7159a2f6..2dc4684d 100644
--- a/resources/qml/pages/UserSettingsPage.qml
+++ b/resources/qml/pages/UserSettingsPage.qml
@@ -234,6 +234,24 @@ Rectangle {
}
DelegateChoice {
+ roleValue: UserSettingsModel.ManageIgnoredUsers
+ Button {
+ text: qsTr("MANAGE")
+ onClicked: {
+ var dialog = ignoredUsersDialog.createObject();
+ dialog.show();
+ destroyOnClose(dialog);
+ }
+
+ Component {
+ id: ignoredUsersDialog
+
+ IgnoredUsers {}
+ }
+ }
+ }
+
+ DelegateChoice {
Text {
text: model.value
}
diff --git a/resources/qml/ui/Ripple.qml b/resources/qml/ui/Ripple.qml
index 911b88cf..9d871419 100644
--- a/resources/qml/ui/Ripple.qml
+++ b/resources/qml/ui/Ripple.qml
@@ -3,7 +3,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick
-import QtQuick.Controls
Item {
id: ripple
diff --git a/resources/qml/ui/media/MediaControls.qml b/resources/qml/ui/media/MediaControls.qml
index bd5f6ddc..0519a194 100644
--- a/resources/qml/ui/media/MediaControls.qml
+++ b/resources/qml/ui/media/MediaControls.qml
@@ -198,13 +198,11 @@ Rectangle {
when: Settings.mobileMode || volumeButton.hovered || volumeSlider.hovered || volumeSlider.pressed
PropertyChanges {
- target: volumeSlider
- Layout.preferredWidth: 100
+ volumeSlider.implicitWidth: 100
}
PropertyChanges {
- target: volumeSlider
- opacity: 1
+ volumeSlider.opacity: 1
}
}
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 {
|