summary refs log tree commit diff
path: root/resources/qml
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2021-02-03 03:17:28 +0100
committerGitHub <noreply@github.com>2021-02-03 03:17:28 +0100
commita7150b566631df39d154a968d04b19af324b3815 (patch)
treefb8ecf83dadec49096bb06c01684a53ea980d17e /resources/qml
parentfixed global avatar updation in the dialog (diff)
parentCleanup privacy screen, no more grabImage (diff)
downloadnheko-a7150b566631df39d154a968d04b19af324b3815.tar.xz
Merge branch 'master' into avatar_username_feature
Diffstat (limited to 'resources/qml')
-rw-r--r--resources/qml/Completer.qml3
-rw-r--r--resources/qml/MessageInput.qml16
-rw-r--r--resources/qml/PrivacyScreen.qml126
-rw-r--r--resources/qml/TimelineRow.qml2
-rw-r--r--resources/qml/TimelineView.qml16
-rw-r--r--resources/qml/UserProfile.qml24
6 files changed, 168 insertions, 19 deletions
diff --git a/resources/qml/Completer.qml b/resources/qml/Completer.qml

index 7b71bd7f..27322172 100644 --- a/resources/qml/Completer.qml +++ b/resources/qml/Completer.qml
@@ -11,6 +11,7 @@ Popup { property string completerName property var completer property bool bottomToTop: true + property alias count: listView.count signal completionClicked(string completion) @@ -84,7 +85,7 @@ Popup { anchors.fill: parent hoverEnabled: true - onEntered: popup.currentIndex = model.index + onPositionChanged: popup.currentIndex = model.index onClicked: popup.completionClicked(completer.completionAt(model.index)) Ripple { diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index 12362f57..5d335872 100644 --- a/resources/qml/MessageInput.qml +++ b/resources/qml/MessageInput.qml
@@ -162,6 +162,10 @@ Rectangle { if (event.matches(StandardKey.Paste)) { TimelineManager.timeline.input.paste(false); event.accepted = true; + } else if (event.key == Qt.Key_Space) { + if (popup.opened && popup.count <= 0) + popup.close(); + } else if (event.modifiers == Qt.ControlModifier && event.key == Qt.Key_U) { messageInput.clear(); } else if (event.modifiers == Qt.ControlModifier && event.key == Qt.Key_P) { @@ -202,9 +206,12 @@ Rectangle { while (pos > -1) { var t = messageInput.getText(pos, pos + 1); console.log('"' + t + '"'); - if (t == '@' || t == ' ' || t == '\t') { + if (t == '@') { messageInput.openCompleter(pos, "user"); return ; + } else if (t == ' ' || t == '\t') { + messageInput.openCompleter(pos + 1, "user"); + return ; } else if (t == ':') { messageInput.openCompleter(pos, "emoji"); return ; @@ -255,7 +262,7 @@ Rectangle { Connections { ignoreUnknownSignals: true - onReplyChanged: messageInput.forceActiveFocus(); + onReplyChanged: messageInput.forceActiveFocus() target: TimelineManager.timeline } @@ -267,11 +274,6 @@ Rectangle { onClicked: TimelineManager.timeline.input.paste(true) } - NhekoDropArea { - anchors.fill: parent - roomid: TimelineManager.timeline ? TimelineManager.timeline.roomId() : "" - } - } ScrollBar.vertical: ScrollBar { diff --git a/resources/qml/PrivacyScreen.qml b/resources/qml/PrivacyScreen.qml new file mode 100644
index 00000000..76520706 --- /dev/null +++ b/resources/qml/PrivacyScreen.qml
@@ -0,0 +1,126 @@ +import QtGraphicalEffects 1.0 +import QtQuick 2.12 +import im.nheko 1.0 + +Item { + id: privacyScreen + + property var timelineRoot + property int screenTimeout + + Connections { + target: TimelineManager + onFocusChanged: { + if (TimelineManager.isWindowFocused) { + screenSaverTimer.stop(); + screenSaver.state = "Invisible"; + } else { + if (timelineRoot.visible) + screenSaverTimer.start(); + + } + } + } + + Timer { + id: screenSaverTimer + + interval: screenTimeout * 1000 + running: true + onTriggered: { + screenSaver.state = "Visible"; + } + } + + Item { + id: screenSaver + + state: "Invisible" + anchors.fill: parent + visible: false + states: [ + State { + name: "Visible" + + PropertyChanges { + target: screenSaver + visible: true + } + + PropertyChanges { + target: screenSaver + opacity: 1 + } + + }, + State { + name: "Invisible" + + PropertyChanges { + target: screenSaver + opacity: 0 + } + + PropertyChanges { + target: screenSaver + visible: false + } + + } + ] + transitions: [ + Transition { + from: "Visible" + to: "Invisible" + + SequentialAnimation { + NumberAnimation { + target: screenSaver + property: "opacity" + duration: 250 + easing.type: Easing.InQuad + } + + NumberAnimation { + target: screenSaver + property: "visible" + duration: 0 + } + + } + + }, + Transition { + from: "Invisible" + to: "Visible" + + SequentialAnimation { + NumberAnimation { + target: screenSaver + property: "visible" + duration: 0 + } + + NumberAnimation { + target: screenSaver + property: "opacity" + duration: 500 + easing.type: Easing.InQuad + } + + } + + } + ] + + FastBlur { + id: blur + + anchors.fill: parent + source: timelineRoot + radius: 50 + } + + } + +} diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml
index c4c18e0e..95a025cf 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml
@@ -28,7 +28,7 @@ Item { if (mouse.button === Qt.RightButton) messageContextMenu.show(model.id, model.type, model.isEncrypted, row); else - event.accepted = false; + mouse.accepted = false; } onPressAndHold: { messageContextMenu.show(model.id, model.type, model.isEncrypted, row, mapToItem(timelineRoot, mouse.x, mouse.y)); diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 2eb0a7c5..c03e8d31 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml
@@ -35,7 +35,7 @@ Page { colors: palette model: EmojiProxyModel { - category: EmojiCategory.People + category: Emoji.Category.People sourceModel: EmojiModel { } @@ -194,6 +194,8 @@ Page { } ColumnLayout { + id: timelineLayout + visible: TimelineManager.timeline != null anchors.fill: parent spacing: 0 @@ -278,6 +280,18 @@ Page { } + NhekoDropArea { + anchors.fill: parent + roomid: TimelineManager.timeline ? TimelineManager.timeline.roomId() : "" + } + + } + + PrivacyScreen { + anchors.fill: parent + visible: Settings.privacyScreen + screenTimeout: Settings.privacyScreenTimeout + timelineRoot: timelineLayout } systemInactive: SystemPalette { diff --git a/resources/qml/UserProfile.qml b/resources/qml/UserProfile.qml
index 65c58382..37ae6de8 100644 --- a/resources/qml/UserProfile.qml +++ b/resources/qml/UserProfile.qml
@@ -10,6 +10,8 @@ ApplicationWindow { property var profile + x: MainWindow.x + (MainWindow.width / 2) - (width / 2) + y: MainWindow.y + (MainWindow.height / 2) - (height / 2) height: 650 width: 420 minimumHeight: 420 @@ -17,6 +19,11 @@ ApplicationWindow { color: colors.window title: profile.isGlobalUserProfile ? "Global User Profile" : "Room User Profile" + Shortcut { + sequence: StandardKey.Cancel + onActivated: userProfileDialog.close() + } + ColumnLayout { id: contentL @@ -84,10 +91,9 @@ ApplicationWindow { font.bold: true Layout.alignment: Qt.AlignHCenter selectByMouse: true - onAccepted: { - profile.changeUsername(displayUsername.text) - displayUsername.isUsernameEditingAllowed = false + profile.changeUsername(displayUsername.text); + displayUsername.isUsernameEditingAllowed = false; } ImageButton { @@ -96,18 +102,18 @@ ApplicationWindow { anchors.left: displayUsername.right anchors.verticalCenter: displayUsername.verticalCenter image: displayUsername.isUsernameEditingAllowed ? ":/icons/icons/ui/checkmark.png" : ":/icons/icons/ui/edit.png" - onClicked: { if (displayUsername.isUsernameEditingAllowed) { - profile.changeUsername(displayUsername.text) - displayUsername.isUsernameEditingAllowed = false + profile.changeUsername(displayUsername.text); + displayUsername.isUsernameEditingAllowed = false; } else { - displayUsername.isUsernameEditingAllowed = true - displayUsername.focus = true - displayUsername.selectAll() + displayUsername.isUsernameEditingAllowed = true; + displayUsername.focus = true; + displayUsername.selectAll(); } } } + } MatrixText {