diff --git a/.ci/format.sh b/.ci/format.sh index e1e6c1e4..cdbc0464 100755 --- a/.ci/format.sh +++ b/.ci/format.sh @@ -14,4 +14,17 @@ do clang-format -i "$f" done; +QMLFORMAT_PATH=$(command -v qmlformat || true) + +if [ -n "$QMLFORMAT_PATH" ]; then + QML_FILES=$(find resources -type f -iname "*.qml") + + for f in $QML_FILES + do + $QMLFORMAT_PATH -i "$f" + done; +else + echo "qmlformat not found; skipping qml formatting" +fi + git diff --exit-code diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f84fece..027f1f08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,43 @@ # Changelog +## [0.8.1] -- 2021-01-27 + +### Features + +- `/plain` and `/md` commands to override the current markdown setting. (contributed by lorendb) +- Allow persistent hiding of rooms with a specific tag (or from a community) via a context menu. +- Allow open media messages in an external program immediately. (contributed by rnhmjoj) + +### Improvements + +- Use async dbus connection for notifications. (contributed by lorendb) +- Update Hungarian translations. (contributed by maxigaz) +- Update Finnish translations. (contributed by Priit) +- Update Malayalam translations. (contributed by vachan-maker) +- Update Dutch translations. (contributed by Glael) +- Store splitter size across restarts. +- Add a border around the completer. (contributed by lorendb) +- Request keys for messages with unknown message indices (once per restart, when they are shown). +- Move the database location to XDG_DATA_DIR. (contributed by rnhmjoj) +- Reload the timeline after key backup import. +- Autoclose completer on `space`, when there are no matches. +- Make completer only react, when the mouse cursor is moved. + +### Bugfixes + +- Fix unhandled exception, when a device has no keys. +- Fix some cmake warnings regarding GNUInstallDirs. +- Fix tags being broken. If you have no tags showing up, you may want to logout and login again. +- Fix versionOk being called on the wrong thread. (contributed by Jedi18) +- Fix font tags showing up in media message filenames. +- Fix user profile in dark themes showing the wrong colors. (contributed by lorendb) +- Fix emoji category switching on old Qt versions. (contributed by lorendb) +- Fix old messages being replayed after a limited timeline. +- Fix empty secrets being returned from the wallet breaking verification. +- Make matrix link chat invites create a direct chat. +- Fix focus handling on room change or reply button clicks. +- Fix username completion deleting the character before it. + ## [0.8.0] -- 2021-01-21 ### Highlights diff --git a/CMakeLists.txt b/CMakeLists.txt index d93fb184..c9e29998 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ include(GNUInstallDirs) set(CPACK_PACKAGE_VERSION_MAJOR "0") set(CPACK_PACKAGE_VERSION_MINOR "8") -set(CPACK_PACKAGE_VERSION_PATCH "0") +set(CPACK_PACKAGE_VERSION_PATCH "1") set(PROJECT_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}) set(PROJECT_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR}) set(PROJECT_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH}) @@ -355,13 +355,13 @@ if(USE_BUNDLED_MTXCLIENT) FetchContent_Declare( MatrixClient GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git - GIT_TAG 1e97d3195d366a15a086ca451d082d59972105ba + GIT_TAG v0.4.1 ) set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "") set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") FetchContent_MakeAvailable(MatrixClient) else() - find_package(MatrixClient 0.4.0 REQUIRED) + find_package(MatrixClient 0.4.1 REQUIRED) endif() if(USE_BUNDLED_OLM) include(FetchContent) diff --git a/README.md b/README.md index a1936ed4..be7d076f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ nheko ---- [![Build Status](https://nheko.im/nheko-reborn/nheko/badges/master/pipeline.svg)](https://nheko.im/nheko-reborn/nheko/-/pipelines/latest) [![Build status](https://ci.appveyor.com/api/projects/status/07qrqbfylsg4hw2h/branch/master?svg=true)](https://ci.appveyor.com/project/redsky17/nheko/branch/master) -[![Stable Version](https://img.shields.io/badge/download-stable-green.svg)](https://github.com/Nheko-Reborn/nheko/releases/v0.8.0) +[![Stable Version](https://img.shields.io/badge/download-stable-green.svg)](https://github.com/Nheko-Reborn/nheko/releases/v0.8.1) [![Nightly](https://img.shields.io/badge/download-nightly-green.svg)](https://matrix-static.neko.dev/room/!TshDrgpBNBDmfDeEGN:neko.dev/) [![#nheko-reborn:matrix.org](https://img.shields.io/matrix/nheko-reborn:matrix.org.svg?label=%23nheko-reborn:matrix.org)](https://matrix.to/#/#nheko-reborn:matrix.org) [![AUR: nheko](https://img.shields.io/badge/AUR-nheko-blue.svg)](https://aur.archlinux.org/packages/nheko) @@ -74,7 +74,7 @@ sudo dnf install nheko #### Gentoo Linux ```bash -sudo eselect repository enable matrix +sudo eselect repository enable guru sudo emerge -a nheko ``` diff --git a/appveyor.yml b/appveyor.yml index 87d80d2a..8d1e71a5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,8 +30,8 @@ build_script: # VERSION format: branch-master/branch-1.2 # INSTVERSION format: x.y.z # WINVERSION format: 9999.0.0.123/1.2.0.234 - - if "%APPVEYOR_REPO_TAG%"=="false" set INSTVERSION=0.8.0 - - if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.8.0 + - if "%APPVEYOR_REPO_TAG%"=="false" set INSTVERSION=0.8.1 + - if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.8.1 - if "%APPVEYOR_REPO_TAG%"=="false" if "%APPVEYOR_REPO_BRANCH%"=="master" set INSTVERSION=9999.0 - if "%APPVEYOR_REPO_TAG%"=="false" set WINVERSION=%INSTVERSION%.0.%APPVEYOR_BUILD_NUMBER% # VERSION format: v1.2.3/v1.3.4 @@ -90,9 +90,9 @@ after_build: - copy %BUILD%\deploy\installer\cleanup\package.xml installer\packages\io.github.nhekoreborn.nheko.cleanup\meta - copy %BUILD%\deploy\installer\cleanup\installscript.qs installer\packages\io.github.nhekoreborn.nheko.cleanup\meta # Amend version and date - - sed -i "s/__VERSION__/0.8.0/" installer\config\config.xml - - sed -i "s/__VERSION__/0.8.0/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml - - sed -i "s/__VERSION__/0.8.0/" installer\packages\io.github.nhekoreborn.nheko.cleanup\meta\package.xml + - sed -i "s/__VERSION__/0.8.1/" installer\config\config.xml + - sed -i "s/__VERSION__/0.8.1/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml + - sed -i "s/__VERSION__/0.8.1/" installer\packages\io.github.nhekoreborn.nheko.cleanup\meta\package.xml - sed -i "s/__DATE__/%DATE%/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml - sed -i "s/__DATE__/%DATE%/" installer\packages\io.github.nhekoreborn.nheko.cleanup\meta\package.xml # Copy nheko data diff --git a/io.github.NhekoReborn.Nheko.json b/io.github.NhekoReborn.Nheko.json index fb921f65..e6eeb123 100644 --- a/io.github.NhekoReborn.Nheko.json +++ b/io.github.NhekoReborn.Nheko.json @@ -220,7 +220,8 @@ "name": "mtxclient", "sources": [ { - "commit": "1e97d3195d366a15a086ca451d082d59972105ba", + "commit": "4951190c938740defa0988d98d5e861038622936", + "tag": "v0.4.1", "type": "git", "url": "https://github.com/Nheko-Reborn/mtxclient.git" } diff --git a/resources/langs/nheko_cs.ts b/resources/langs/nheko_cs.ts index 9010c704..22bbd88b 100644 --- a/resources/langs/nheko_cs.ts +++ b/resources/langs/nheko_cs.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Your password. + + + + Device name @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1266,12 +1300,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -1352,6 +1386,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1464,7 +1503,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1487,7 +1526,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts index 48909ba2..9b827a91 100644 --- a/resources/langs/nheko_de.ts +++ b/resources/langs/nheko_de.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Du bist dem Raum beigetreten. @@ -126,7 +126,7 @@ - + Invited user: %1 Eingeladener Benutzer: %1 @@ -274,13 +274,18 @@ Failed to kick %1 from %2: %3 - + Kontte %1 nicht aus %2 entfernen: %3 CommunitiesListItem - + + Hide rooms with this tag or from this community + Verstecke Räume mit diesem Tag oder aus dieser Community + + + All rooms Alle Räume @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + -- Verschlüsseltes Event (Schlüssel passt nicht für diesen Nachrichtenindex) -- + @@ -557,7 +568,7 @@ Alle Dateien (*) - + Failed to upload media. Please try again. Medienupload fehlgeschlagen. Bitte versuche es erneut. @@ -599,7 +610,12 @@ Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Passwort - + + Your password. + Dein Passwort. + + + Device name Gerätename @@ -609,7 +625,17 @@ Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Ein Name für dieses Gerät. Dieser wird der anderen Seite gezeigt, wenn das Gerät verifiziert wird. Wenn nichts angeben wird, wird einer generiert. - + + Homeserver address + Heimserveradresse + + + + server.my:8787 + dein.server:8787 + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 Die Adresse unter der dein Heimserver erreichbar ist. @@ -617,12 +643,20 @@ Beispiel: https://mein.server:8787 - + LOGIN ANMELDEN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + Du hast eine invalide Matrix ID eingegeben. Normalerwise sehen die so aus: @joe:matrix.org + + + Autodiscovery failed. Received malformed response. Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft. @@ -767,7 +801,7 @@ Beispiel: https://mein.server:8787 Schreibe eine Nachricht… - + Emoji Emoji @@ -874,7 +908,7 @@ Beispiel: https://mein.server:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Benutze ein separates profil, wodurch mehrere Accounts und Nhekoinstanzen zur gleichen Zeit verwendet werden können. @@ -977,7 +1011,7 @@ Beispiel: https://mein.server:8787 RoomInfo - + no version stored keine Version gespeichert @@ -1019,7 +1053,7 @@ Beispiel: https://mein.server:8787 Fügt einen Tag hinzu oder entfernt ihn. - + New tag... Add a new tag to the room Neuer Tag... @@ -1119,7 +1153,7 @@ Beispiel: https://mein.server:8787 TimelineModel - + Message redaction failed: %1 Nachricht zurückziehen fehlgeschlagen: %1 @@ -1130,7 +1164,7 @@ Beispiel: https://mein.server:8787 Event konnte nicht verschlüsselt werden, senden wurde abgebrochen! - + Save image Bild speichern @@ -1150,7 +1184,7 @@ Beispiel: https://mein.server:8787 Datei speichern - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Beispiel: https://mein.server:8787 %1 hat das Anklopfen zurückgezogen. - + You joined this room. Du bist dem Raum beigetreten. - + Rejected the knock from %1. Hat das Anklopfen von %1 abgewiesen. @@ -1355,6 +1389,11 @@ Beispiel: https://mein.server:8787 Save as Speichern unter... + + + Open in external program + Öffne in externen Programm + No room open @@ -1467,7 +1506,7 @@ Beispiel: https://mein.server:8787 UserProfile - + Verify Verifizieren @@ -1490,7 +1529,7 @@ Beispiel: https://mein.server:8787 UserSettingsPage - + Minimize to tray Ins Benachrichtigungsfeld minimieren diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts index 36c29389..e24539ce 100644 --- a/resources/langs/nheko_el.ts +++ b/resources/langs/nheko_el.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Όλα τα αρχεία (*) - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Κωδικός - + + Your password. + + + + Device name @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN ΕΙΣΟΔΟΣ - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 Γράψε ένα μήνυμα... - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image Αποθήκευση Εικόνας @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Ελαχιστοποίηση diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts index f354cf87..9919e89e 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 Invited user: %1 @@ -274,13 +274,18 @@ Failed to kick %1 from %2: %3 - + Failed to kick %1 from %2: %3 CommunitiesListItem - + + Hide rooms with this tag or from this community + Hide rooms with this tag or from this community + + + All rooms All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Encrypted Event (No keys found for decryption) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + -- Encrypted Event (Key not valid for this index) -- + @@ -557,7 +568,7 @@ All Files (*) - + Failed to upload media. Please try again. Failed to upload media. Please try again. @@ -599,7 +610,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Password - + + Your password. + Your password. + + + Device name Device name @@ -609,7 +625,17 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used. - + + Homeserver address + Homeserver address + + + + server.my:8787 + server.my:8787 + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 The address that can be used to contact you homeservers client API. @@ -617,12 +643,20 @@ Example: https://server.my:8787 - + LOGIN LOGIN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + Autodiscovery failed. Received malformed response. Autodiscovery failed. Received malformed response. @@ -767,7 +801,7 @@ Example: https://server.my:8787 Write a message… - + Emoji Emoji @@ -874,7 +908,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -977,7 +1011,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored no version stored @@ -1019,7 +1053,7 @@ Example: https://server.my:8787 Adds or removes the specified tag. - + New tag... Add a new tag to the room New tag… @@ -1119,7 +1153,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Message redaction failed: %1 @@ -1130,7 +1164,7 @@ Example: https://server.my:8787 Failed to encrypt event, sending aborted! - + Save image Save image @@ -1150,7 +1184,7 @@ Example: https://server.my:8787 Save file - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Example: https://server.my:8787 %1 redacted their knock. - + You joined this room. You joined this room. - + Rejected the knock from %1. Rejected the knock from %1. @@ -1355,6 +1389,11 @@ Example: https://server.my:8787 Save as Save as + + + Open in external program + Open in external program + No room open @@ -1467,7 +1506,7 @@ Example: https://server.my:8787 UserProfile - + Verify Verify @@ -1490,7 +1529,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Minimize to tray diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts index eb94d4ab..b09d8240 100644 --- a/resources/langs/nheko_eo.ts +++ b/resources/langs/nheko_eo.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Vi aliĝis ĉi tiun ĉambron. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -281,7 +281,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Ĉiuj ĉambroj @@ -475,11 +480,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -558,7 +569,7 @@ Ĉiuj dosieroj (*) - + Failed to upload media. Please try again. @@ -597,7 +608,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Pasvorto - + + Your password. + + + + Device name Aparata nomo @@ -608,7 +624,17 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Nomo por ĉi tiu aparato, montrot al aliaj, kiam kontrolant viajn aparatojn. Se neniom provizitis, defaŭlto uzit. - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 API should be valid for the EO translation of application programming interface. @@ -617,13 +643,21 @@ Ekzemplo: https://servisto.mia:8787 - + LOGIN Maybe shouldn't be imperative? ENSALUTU - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -768,7 +802,7 @@ Ekzemplo: https://servisto.mia:8787 Skribu mesaĝon... - + Emoji @@ -875,7 +909,7 @@ Ekzemplo: https://servisto.mia:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -978,7 +1012,7 @@ Ekzemplo: https://servisto.mia:8787 RoomInfo - + no version stored @@ -1020,7 +1054,7 @@ Ekzemplo: https://servisto.mia:8787 - + New tag... Add a new tag to the room Nova etikedo... @@ -1122,7 +1156,7 @@ Ekzemplo: https://servisto.mia:8787 TimelineModel - + Message redaction failed: %1 @@ -1133,7 +1167,7 @@ Ekzemplo: https://servisto.mia:8787 - + Save image @@ -1153,7 +1187,7 @@ Ekzemplo: https://servisto.mia:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1274,12 +1308,12 @@ Ekzemplo: https://servisto.mia:8787 - + You joined this room. Vi aliĝis ĉi tiun ĉambron. - + Rejected the knock from %1. @@ -1360,6 +1394,11 @@ Ekzemplo: https://servisto.mia:8787 Save as + + + Open in external program + + No room open @@ -1472,7 +1511,7 @@ Ekzemplo: https://servisto.mia:8787 UserProfile - + Verify @@ -1495,7 +1534,7 @@ Ekzemplo: https://servisto.mia:8787 UserSettingsPage - + Minimize to tray diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts index 1a00659b..e3b46f95 100644 --- a/resources/langs/nheko_et.ts +++ b/resources/langs/nheko_et.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Sa liitusid selle jututoaga. @@ -126,7 +126,7 @@ - + Invited user: %1 Kutsutud kasutaja: %1 @@ -274,13 +274,18 @@ Failed to kick %1 from %2: %3 - + Kasutaja %1 väljamüksamine %2 jututoast ei õnnestunud: %3 CommunitiesListItem - + + Hide rooms with this tag or from this community + Peida sellest kogukonnast antud sildiga jututoad + + + All rooms Kõik jututoad @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Krüptitud sündmus (Dekrüptimisvõtmeid ei leidunud) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + -- Krüptitud sündmus (võti pole selle indeksi jaoks sobilik) -- + @@ -557,7 +568,7 @@ Kõik failid (*) - + Failed to upload media. Please try again. Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti. @@ -599,7 +610,12 @@ Kui Nheko ei suuda tuvastada sinu koduserverit, siis ta kuvab sulle andmevälja Salasõna - + + Your password. + Sinu salasõna. + + + Device name Seadme nimi @@ -609,7 +625,17 @@ Kui Nheko ei suuda tuvastada sinu koduserverit, siis ta kuvab sulle andmevälja Selle seadme nimi, mida näidetakse verifitseerimise ajal teisele kasutajatele. Kui sa ise nime ei pane, siis kasutame automaatselt pandud nime. - + + Homeserver address + Koduserveri aadress + + + + server.my:8787 + server.minu:8787 + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 Aadress, mida sinu koduserveri kliendipoole API kasutab. @@ -617,12 +643,20 @@ Näiteks: https://server.minu:8787 - + LOGIN LOGI SISSE - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + Sisestatud Matrix'i kasutajatunnus on vigane - peaks olema @kasutaja:server.tld + + + Autodiscovery failed. Received malformed response. Koduserveri automaatne tuvastamine ei õnnestunud: päringuvastus oli vigane. @@ -767,7 +801,7 @@ Näiteks: https://server.minu:8787 Kirjuta sõnum… - + Emoji Emoji @@ -874,7 +908,7 @@ Näiteks: https://server.minu:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Loo unikaalne profiil, mis võimaldab sul logida samaaegselt sisse erinevatele kasutajakontodele ning käivitada mitu Nheko programmiakent. @@ -977,7 +1011,7 @@ Näiteks: https://server.minu:8787 RoomInfo - + no version stored salvestatud versiooni ei leidu @@ -1019,7 +1053,7 @@ Näiteks: https://server.minu:8787 Lisab või eemaldab selle sildi. - + New tag... Add a new tag to the room Uus silt… @@ -1119,7 +1153,7 @@ Näiteks: https://server.minu:8787 TimelineModel - + Message redaction failed: %1 Sõnumi ümbersõnastamine ebaõnnestus: %1 @@ -1130,7 +1164,7 @@ Näiteks: https://server.minu:8787 Sündmuse krüptimine ei õnnestunud, katkestame saatmise! - + Save image Salvesta pilt @@ -1150,7 +1184,7 @@ Näiteks: https://server.minu:8787 Salvesta fail - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Näiteks: https://server.minu:8787 %1 muutis oma koputust jututoa uksele. - + You joined this room. Sa liitusid jututoaga. - + Rejected the knock from %1. Lükkas tagasi %1 koputuse jututoa uksele. @@ -1355,6 +1389,11 @@ Näiteks: https://server.minu:8787 Save as Salvesta kui + + + Open in external program + Ava välise rakendusega + No room open @@ -1467,7 +1506,7 @@ Näiteks: https://server.minu:8787 UserProfile - + Verify Verifitseeri @@ -1490,7 +1529,7 @@ Näiteks: https://server.minu:8787 UserSettingsPage - + Minimize to tray Vähenda tegumiribale diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts index a5af584c..f4a518e5 100644 --- a/resources/langs/nheko_fi.ts +++ b/resources/langs/nheko_fi.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Kaikki huoneet @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Salattu viesti (salauksen purkuavaimia ei löydetty) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Kaikki Tiedostot (*) - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Salasana - + + Your password. + + + + Device name Laitteen nimi @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN KIRJAUDU - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus. @@ -763,7 +797,7 @@ Example: https://server.my:8787 Kirjoita viesti… - + Emoji Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored ei tallennettua versiota @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Viestin muokkaus epäonnistui: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image Tallenna kuva @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Pienennä ilmoitusalueelle diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts index 1750360b..130bc004 100644 --- a/resources/langs/nheko_fr.ts +++ b/resources/langs/nheko_fr.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Vous avez rejoint ce salon. @@ -126,7 +126,7 @@ - + Invited user: %1 %1 a été invité(e) @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Tous les salons @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Évènement chiffré (pas de clé trouvée pour le déchiffrement) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Tous les types de fichiers (*) - + Failed to upload media. Please try again. Échec de l'envoi du média. Veuillez réessayer. @@ -599,7 +610,12 @@ Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l&apos Mot de passe - + + Your password. + + + + Device name Nom de l'appareil @@ -609,7 +625,17 @@ Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l&apos Un nom pour cet appareil, qui sera montré aux autres utilisateurs lorsque ceux-ci le vérifieront. Si aucun n'est fourni, un nom par défaut est utilisé. - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 L'adresse qui peut être utilisée pour joindre l'API client de votre serveur. @@ -617,12 +643,20 @@ Exemple : https ://monserveur.example.com :8787 - + LOGIN CONNEXION - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Échec de la découverte automatique. Réponse mal formatée reçue. @@ -767,7 +801,7 @@ Exemple : https ://monserveur.example.com :8787 Écrivez un message… - + Emoji Émoji @@ -874,7 +908,7 @@ Exemple : https ://monserveur.example.com :8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Créer un profil unique, vous permettant de vous connecter simultanément à plusieurs comptes et à lancer plusieurs instances de nheko. @@ -977,7 +1011,7 @@ Exemple : https ://monserveur.example.com :8787 RoomInfo - + no version stored pas de version enregistrée @@ -1019,7 +1053,7 @@ Exemple : https ://monserveur.example.com :8787 Ajoute ou retire l'étiquette spécifiée. - + New tag... Add a new tag to the room Nouvelle étiquette… @@ -1119,7 +1153,7 @@ Exemple : https ://monserveur.example.com :8787 TimelineModel - + Message redaction failed: %1 Échec de la suppression du message : %1 @@ -1130,7 +1164,7 @@ Exemple : https ://monserveur.example.com :8787 Échec du chiffrement de l'évènement, envoi abandonné ! - + Save image Enregistrer l'image @@ -1150,7 +1184,7 @@ Exemple : https ://monserveur.example.com :8787 Enregistrer le fichier - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Exemple : https ://monserveur.example.com :8787 %1 ne frappe plus au salon. - + You joined this room. Vous avez rejoint ce salon. - + Rejected the knock from %1. %1 a été rejeté après avoir frappé au salon. @@ -1355,6 +1389,11 @@ Exemple : https ://monserveur.example.com :8787 Save as Enregistrer sous + + + Open in external program + + No room open @@ -1467,7 +1506,7 @@ Exemple : https ://monserveur.example.com :8787 UserProfile - + Verify Vérifier @@ -1490,7 +1529,7 @@ Exemple : https ://monserveur.example.com :8787 UserSettingsPage - + Minimize to tray Réduire à la barre des tâches diff --git a/resources/langs/nheko_hu.ts b/resources/langs/nheko_hu.ts index 39fcd64e..acf5865f 100644 --- a/resources/langs/nheko_hu.ts +++ b/resources/langs/nheko_hu.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Csatlakoztál ehhez a szobához. @@ -126,7 +126,7 @@ - + Invited user: %1 A felhasználó meg lett hívva: %1 @@ -274,13 +274,18 @@ Failed to kick %1 from %2: %3 - + Nem sikerült kirúgni %1 felhasználót %2 szobából: %3 CommunitiesListItem - + + Hide rooms with this tag or from this community + Az ilyen címkével ellátott vagy közösséghez tartozó szobák elrejtése + + + All rooms Az összes szoba @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Titkosított esemény (Nem találhatók kulcsok a titkosítás feloldásához) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + -- Titkosított esemény (a kulcs nem érvényes ehhez az indexhez) -- + @@ -557,7 +568,7 @@ Minden fájl (*) - + Failed to upload media. Please try again. Nem sikerült feltölteni a médiafájlt. Kérlek, próbáld újra! @@ -599,7 +610,12 @@ Ha a Nheko nem tud rátalálni a homeszerveredre, meg fog jelenni egy mező, aho Jelszó - + + Your password. + A jelszavad. + + + Device name Eszköznév @@ -609,7 +625,17 @@ Ha a Nheko nem tud rátalálni a homeszerveredre, meg fog jelenni egy mező, aho Egy név ennek az eszköznek, amely meg fog jelenni mások számára, amikor hitelesíted az eszközeidet. Ha nincs megadva semmi, egy alapértelmezett név lesz használva. - + + Homeserver address + Homeszerver címe + + + + server.my:8787 + szerver.em:8787 + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 A cím, melyen keresztül el lehet érni a homeszervered kliens API-jét. @@ -617,12 +643,20 @@ Példa: https://szerver.em:8787 - + LOGIN BEJELENTKEZÉS - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + Érvénytelen Matrixazonosítót adtál meg. Példa: @janos:matrix.org + + + Autodiscovery failed. Received malformed response. Az automatikus felderítés nem sikerült. Helytelen válasz érkezett. @@ -767,7 +801,7 @@ Példa: https://szerver.em:8787 Írj egy üzenetet… - + Emoji Hangulatjelek @@ -874,7 +908,7 @@ Példa: https://szerver.em:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Egy egyedi profil létrehozása, amellyel be tudsz jelentkezni egyszerre több fiókon keresztül és a Nheko több példányát is tudod futtatni. @@ -977,7 +1011,7 @@ Példa: https://szerver.em:8787 RoomInfo - + no version stored nincs tárolva verzió @@ -1019,7 +1053,7 @@ Példa: https://szerver.em:8787 Hozzáadja vagy eltávolítja az adott címkét. - + New tag... Add a new tag to the room Új címke… @@ -1119,7 +1153,7 @@ Példa: https://szerver.em:8787 TimelineModel - + Message redaction failed: %1 Az üzenet visszavonása nem sikerült: %1 @@ -1130,168 +1164,168 @@ Példa: https://szerver.em:8787 Nem sikerült titkosítani az eseményt, küldés megszakítva! - + Save image - + Kép mentése Save video - + Videó mentése Save audio - + Hang mentése Save file - + Fájl mentése - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) - - + + %1%2 gépel. %1 opened the room to the public. - + %1 nyilvánosan elérhetővé tette a szobát. %1 made this room require and invitation to join. - + %1 beállította, hogy meghívással lehessen csatlakozni ehhez a szobához. %1 made the room open to guests. - + %1 elérhetővé tette a szobát vendégeknek. %1 has closed the room to guest access. - + %1 eltávolította a szoba elérhetőségét vendégek számára. %1 made the room history world readable. Events may be now read by non-joined people. - + %1 olvashatóvá tette a világon bárki számára a szoba előzményeit. Az eseményeket most már azok is láthatják, akik nem csatlakoztak. %1 set the room history visible to members from this point on. - + %1 beállította, hogy a szoba előzményei ezentúl csak a tagok számára legyenek láthatóak. %1 set the room history visible to members since they were invited. - + %1 beállította, hogy a szoba előzményei láthatóak legyenek a tagok számára a meghívásuktól kezdve. %1 set the room history visible to members since they joined the room. - + %1 beállította, hogy a szoba előzményei láthatóak legyenek a tagok számára a csatlakozásuktól kezdve. %1 has changed the room's permissions. - + %1 megváltoztatta a szoba engedélyeit. %1 was invited. - + %1 meg lett hívva. %1 changed their display name and avatar. - + %1 megváltoztatta a megjelenítési nevét és a profilképét. %1 changed their display name. - + %1 megváltoztatta a megjelenítési nevét. %1 changed their avatar. - + %1 megváltoztatta a profilképét. %1 changed some profile info. - + %1 megváltoztatta a profiladatait. %1 joined. - + %1 csatlakozott. %1 rejected their invite. - + %1 elutasította a meghívását. Revoked the invite to %1. - + Meghívás elutasítva a(z) %1 szobába. %1 left the room. - + %1 elhagyta a szobát. Kicked %1. - + %1 ki lett rúgva. Unbanned %1. - + %1 tiltása vissza lett vonva. %1 was banned. - + %1 ki lett tiltva. %1 redacted their knock. - + %1 visszavonta a kopogását. - + You joined this room. Csatlakoztál ehhez a szobához. - + Rejected the knock from %1. - + Kopogás elutasítva tőle: %1. %1 left after having already left! This is a leave event after the user already left and shouldn't happen apart from state resets - + %1 távozott, miután már egyszer távozott! Reason: %1 - + Ok: %1 %1 knocked. - + %1 kopogott. @@ -1299,17 +1333,17 @@ Példa: https://szerver.em:8787 React - + Reakció Reply - + Válasz Options - + Műveletek @@ -1317,47 +1351,52 @@ Példa: https://szerver.em:8787 React - + Reakció Reply - + Válasz Read receipts - + Olvasási jegyek Mark as read - + Megjelölés olvasottként View raw message - + Nyers üzenet megtekintése View decrypted raw message - + Előzőleg titkosított nyers üzenet megtekintése Remove message - + Üzenet eltávolítása Save as - + Mentés másként + + + + Open in external program + Megnyitás külső programban No room open - + Nincs nyitott szoba @@ -1365,7 +1404,7 @@ Példa: https://szerver.em:8787 No encrypted private chat found with this user. Create an encrypted private chat with this user and try again. - + Nem található titkosított privát csevegés ezzel a felhasználóval. Hozz létre egy titkosított privát csevegést vele, és próbáld újra! @@ -1373,38 +1412,38 @@ Példa: https://szerver.em:8787 Back to room list - + Vissza a szobák listájára No room selected - + Nincs kiválasztva szoba Room options - + Szoba beállításai Invite users - + Felhasználók meghívása Members - + Tagok Leave room - + Szoba elhagyása Settings - + Beállítások @@ -1412,12 +1451,12 @@ Példa: https://szerver.em:8787 Show - + Mutat Quit - + Kilépés @@ -1425,411 +1464,419 @@ Példa: https://szerver.em:8787 Logout - + Kijelentkezés Set custom status message - + Egyéni állapotüzenet megadása Custom status message - + Egyéni állapotüzenet Status: - + Állapot: Set presence automatically - + Elérhetőség megadása automatikusan Online - + Bejelentkezve Unavailable - + Nem elérhető Offline - + Kiejelentkezve UserProfile - + Verify - + Hitelesítés Ban the user - + A felhasználó tiltása Start a private chat - + Privát csevegés indítása Kick the user - + A felhasználó kirúgása UserSettingsPage - + Minimize to tray - + Kicsinyítés a tálcára Start in tray - + Indítás a tálcán Group's sidebar - + Csoport oldalsávja Circular Avatars - + Kerekített profilképek profile: %1 - + profil: %1 CALLS - + HÍVÁSOK Cross Signing Keys - + Keresztaláírási kulcsok REQUEST - + LEKÉRÉS DOWNLOAD - + LETÖLTÉS Keep the application running in the background after closing the client window. - + Az alkalmazás azután is a háttérben fut, miután be lett zárva a főablak. Start the application in the background without showing the client window. - + Induljon az alkalmazás a háttérben, a főablak mutatása nélkül. Change the appearance of user avatars in chats. OFF - square, ON - Circle. - + A profilképek megjelenése a csevegésekben. +KI - szögletes, BE - kerek. Show a column containing groups and tags next to the room list. - + Csoportok és címkék megjelenítése a szobák listája mellett egy oszlopban. Decrypt messages in sidebar - + Titkosított üzenetek mutatása az oldalsávban Decrypt the messages shown in the sidebar. Only affects messages in encrypted chats. - + Legyenek feloldva az oldalsávban megjelenő üzenetek. +Csak a titkosított csevegések üzeneteire vonatkozik. Show buttons in timeline - + Gombok mutatása az idővonalban Show buttons to quickly reply, react or access additional options next to each message. - + Gombok mutatása minden egyes üzenet mellett a gyors válaszhoz, reakcióhoz és egyéb műveletek eléréséhez. Limit width of timeline - + Az idővonal szélességének korlátozása Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised - + Az idővonalon megjelenő üzenetek maximális szélességének megadása (pixelben). Ez javíthatja az olvashatóságot, amikor a Nheko teljes méretben van széles képernyőkön. Typing notifications - + Gépelési értesítések Show who is typing in a room. This will also enable or disable sending typing notifications to others. - + Legyen mutatva, hogy éppen ki gépel egy szobában. +Ez be vagy ki is kapcsolja a gépelési értesítések küldését másoknak. Sort rooms by unreads - + Szobák sorrendje olvasatlan üzenetek alapján Display rooms with new messages first. If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room. If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don't seem to consider them as important as the other rooms. - + Az új üzeneteket tartalmazó szobák jelenjenek meg elöl. +Ha ki van kapcsolva, a szobák sorrendje csak a bennük lévő utolsó üzenet dátuma alapján történik. +Ha be van kapcsolva, azok a szobák kerülnek felülre, amelyekhez aktív értesítés tartozik (amelyet a számot tartalmazó kis kör jelez). A némított szobák továbbra is dátum alapján lesznek rendezve, mivel nem valószínű, hogy ezeket annyira fontosnak tartod, mint a többi szobát. Read receipts - + Olvasási jegyek Show if your message was read. Status is displayed next to timestamps. - + Legyen mutatva, ha az üzenetedet elolvasták. +Ez az állapot az üzenetek ideje mellett jelenik meg. Send messages as Markdown - + Üzenetek küldése Markdownként Allow using markdown in messages. When disabled, all messages are sent as a plain text. - + A Markdown használatának engedélyezése az üzenetekben. +Ha ki van kapcsolva, az összes üzenet sima szövegként lesz elküldve. Desktop notifications - + Asztali értesítések Notify about received message when the client is not currently focused. - + Értesítések az érkezett üzenetekről, amikor a főablak éppen nincs fókuszban. Alert on notification - + Riasztás értesítéskor Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion. - + Riasztás megjelenítése, ha üzenet érkezett. +Ettől általában animálttá válik az alkalmazásablakok listáján szereplő ikon. Highlight message on hover - + Üzenetek kiemelése, ha az egérmutató rajtuk van Change the background color of messages when you hover over them. - + Az üzenetek háttérszínének megváltoztatása, ha az egérmutatót föléjük viszed. Large Emoji in timeline - + Hatalmas hangulatjelek az idővonalon Make font size larger if messages with only a few emojis are displayed. - + A betűméret megnövelése, ha az üzenetek csak néhány hangulatjelet tartalmaznak. Share keys with verified users and devices - + Kulcsok megosztása hitelesített felhasználókkal és eszközökkel CACHED - + GYORSÍTÓTÁRAZVA NOT CACHED - + NINCS GYORSÍTÓTÁRAZVA Scale factor - + Nagyítási tényező Change the scale factor of the whole user interface. - + Az egész felhasználói felület méretének szorzótényezője. Font size - + Betűméret Font Family - + Betűtípus Theme - + Téma Ringtone - + Csengőhang Set the notification sound to play when a call invite arrives - + Az értesítőhang megadása, amely akkor szól, ha hívás érkezik Microphone - + Mikrofon Camera - + Kamera Camera resolution - + Kamerafelbontás Camera frame rate - + Kamera képkockasebessége Allow fallback call assist server - + Tartalék hívássegéd szerver engedélyezése Will use turn.matrix.org as assist when your home server does not offer one. - + A turn.matrix.org lesz használva segédnek, ha a homeszerverednek nincs ilyenje. Device ID - + Eszközazonosító Device Fingerprint - + Eszközujjlenyomat Session Keys - + Munkamenetkulcsok IMPORT - + IMPORTÁLÁS EXPORT - + EXPORTÁLÁS ENCRYPTION - + TITKOSÍTÁS GENERAL - + ÁLTALÁNOS INTERFACE - + FELÜLET Touchscreen mode - + Érintő képernyős mód Will prevent text selection in the timeline to make touch scrolling easier. - + Letiltja a szövegkiemelést az idővonalban, hogy könyebb legyen érintéssel görgetni. Emoji Font Family - + Hangulatjelek betűtípusa Automatically replies to key requests from other users, if they are verified. - + Automatikus válasz a más felhasználóktól érkező kulcskérelmekre, ha ők hitelesítve vannak. Master signing key - + Mester-aláírókulcs Your most important key. You don't need to have it cached, since not caching it makes it less likely it can be stolen and it is only needed to rotate your other signing keys. - + A legfontosabb kulcsod. Nem kell gyorsítótáraznod, mivel így kisebb az esélye, hogy ellopják, és csak arra van használva, hogy a többi aláíró kulcsaid váltakozva legyenek. User signing key - + Felhasználói aláírókulcs The key to verify other users. If it is cached, verifying a user will verify all their devices. - + A mások hitelesítésére használt kulcs. Ha gyorsítótárazva van, egy felhasználó hitelesítésekor hitelesítve lesz az összes eszköze. @@ -1854,12 +1901,12 @@ This usually causes the application icon in the task bar to animate in some fash Select a file - + Fájl kiválasztása All Files (*) - + Minden fájl (*) @@ -1947,12 +1994,12 @@ This usually causes the application icon in the task bar to animate in some fash REGISTER - + REGISZTRÁCIÓ LOGIN - + BEJELENTKEZÉS @@ -1978,12 +2025,12 @@ This usually causes the application icon in the task bar to animate in some fash Name - + Név Topic - + Téma @@ -2129,12 +2176,12 @@ Media size: %2 Read receipts - + Olvasási jegyek Close - + Bezárás @@ -2155,7 +2202,7 @@ Media size: %2 Settings - + Beállítások @@ -2259,7 +2306,7 @@ Media size: %2 All Files (*) - + Minden fájl (*) diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts index a8aeeab2..e05cea70 100644 --- a/resources/langs/nheko_it.ts +++ b/resources/langs/nheko_it.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Sei entrato in questa stanza. @@ -126,7 +126,7 @@ - + Invited user: %1 Invitato utente: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Tutte le stanze @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Evento Criptato (Chiavi per la decriptazione non trovate) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Tutti i File (*) - + Failed to upload media. Please try again. Impossibile inviare il file multimediale. Per favore riprova. @@ -599,7 +610,12 @@ Se Nheko non conclude la ricerca del tuo homeserver, ti mostrerà un campo in cu Password - + + Your password. + + + + Device name Nome del dispositivo @@ -609,7 +625,17 @@ Se Nheko non conclude la ricerca del tuo homeserver, ti mostrerà un campo in cu - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 L'indirizzo che può essere usato per contattare le API client del tuo homeserver. @@ -617,12 +643,20 @@ Esempio: https://server.mio:8787 - + LOGIN ACCEDI - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Ricerca automatica fallita. Ricevuta risposta malformata. @@ -767,7 +801,7 @@ Esempio: https://server.mio:8787 Scrivi un messaggio… - + Emoji Emoji @@ -874,7 +908,7 @@ Esempio: https://server.mio:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -977,7 +1011,7 @@ Esempio: https://server.mio:8787 RoomInfo - + no version stored nessuna versione memorizzata @@ -1019,7 +1053,7 @@ Esempio: https://server.mio:8787 Aggiungi o rimuovi il tag specificato. - + New tag... Add a new tag to the room @@ -1119,7 +1153,7 @@ Esempio: https://server.mio:8787 TimelineModel - + Message redaction failed: %1 Oscuramento del messaggio fallito: %1 @@ -1130,7 +1164,7 @@ Esempio: https://server.mio:8787 - + Save image Salva immagine @@ -1150,7 +1184,7 @@ Esempio: https://server.mio:8787 Salva file - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Esempio: https://server.mio:8787 %1 ha oscurato la sua bussata. - + You joined this room. Sei entrato in questa stanza. - + Rejected the knock from %1. Rifiutata la bussata di %1. @@ -1355,6 +1389,11 @@ Esempio: https://server.mio:8787 Save as Salva come + + + Open in external program + + No room open @@ -1467,7 +1506,7 @@ Esempio: https://server.mio:8787 UserProfile - + Verify @@ -1490,7 +1529,7 @@ Esempio: https://server.mio:8787 UserSettingsPage - + Minimize to tray Minimizza nella tray diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts index 78bb8a0a..47cb27b8 100644 --- a/resources/langs/nheko_ja.ts +++ b/resources/langs/nheko_ja.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 招待されたユーザー: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms 全ての部屋 @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- 暗号化イベント (復号鍵が見つかりません) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ 全てのファイル (*) - + Failed to upload media. Please try again. メディアをアップロードできませんでした。やり直して下さい。 @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th パスワード - + + Your password. + + + + Device name デバイス名 @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN ログイン - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. 自動検出できませんでした。不正な形式の応答を受信しました。 @@ -763,7 +797,7 @@ Example: https://server.my:8787 メッセージを書く... - + Emoji 絵文字 @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored バージョンが保存されていません @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 メッセージを編集できませんでした: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image 画像を保存 @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 ファイルを保存 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1264,12 +1298,12 @@ Example: https://server.my:8787 %1がノックを編集しました。 - + You joined this room. - + Rejected the knock from %1. %1からのノックを拒否しました。 @@ -1350,6 +1384,11 @@ Example: https://server.my:8787 Save as 名前を付けて保存 + + + Open in external program + + No room open @@ -1462,7 +1501,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1485,7 +1524,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray トレイへ最小化 diff --git a/resources/langs/nheko_ml.ts b/resources/langs/nheko_ml.ts index 4efe8835..fcceacab 100644 --- a/resources/langs/nheko_ml.ts +++ b/resources/langs/nheko_ml.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. നിങ്ങൾ ഈ മുറിയിൽ ചേർന്നു. @@ -126,7 +126,7 @@ - + Invited user: %1 ക്ഷണിച്ച ഉപയോക്താവ്:% 1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms എല്ലാ മുറികളും @@ -455,7 +460,7 @@ They match! - + അവ പൊരുത്തപ്പെടുന്നു! @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th പാസ്‍വേഡ് - + + Your password. + + + + Device name ഉപകരണത്തിന്റെ പേര് @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 ഒരു സന്ദേശം എഴുതുക…. - + Emoji ഇമോജി @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -909,7 +943,7 @@ Example: https://server.my:8787 Password - + പാസ്‍വേഡ് @@ -967,13 +1001,13 @@ Example: https://server.my:8787 Close - + അടയ്‌ക്കുക RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1040,7 +1074,7 @@ Example: https://server.my:8787 Decline - + നിരസിക്കുക @@ -1109,13 +1143,13 @@ Example: https://server.my:8787 Close - + അടയ്‌ക്കുക TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + നിങ്ങൾ ഈ മുറിയിൽ ചേർന്നു. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray @@ -1851,7 +1890,7 @@ This usually causes the application icon in the task bar to animate in some fash Select a file - + ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക @@ -1926,7 +1965,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -1970,17 +2009,17 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു Name - + പേര് Topic - + വിഷയം @@ -2013,7 +2052,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2031,7 +2070,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2049,7 +2088,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2062,7 +2101,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2075,7 +2114,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2093,7 +2132,7 @@ This usually causes the application icon in the task bar to animate in some fash Cancel - + റദ്ദാക്കു @@ -2108,7 +2147,7 @@ Media size: %2 Cancel - + റദ്ദാക്കു @@ -2131,7 +2170,7 @@ Media size: %2 Close - + അടയ്‌ക്കുക diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts index 19f9474d..d4f6e5f0 100644 --- a/resources/langs/nheko_nl.ts +++ b/resources/langs/nheko_nl.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Je bent lid geworden van deze kamer. @@ -126,7 +126,7 @@ - + Invited user: %1 Gebruiker uitgenodigd: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Alle bestanden (*) - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Wachtwoord - + + Your password. + + + + Device name @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN INLOGGEN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 Typ een bericht... - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image Afbeelding opslaan @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + Je bent lid geworden van deze kamer. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Minimaliseren naar systeemvak diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts index 8c4d64c8..b0f83014 100644 --- a/resources/langs/nheko_pl.ts +++ b/resources/langs/nheko_pl.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Dołączyłeś(-łaś) do tego pokoju. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Wszystkie pokoje @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Zdarzenie szyfrowania (Nie znaleziono kluczy deszyfrujących) + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Wszystkie pliki (*) - + Failed to upload media. Please try again. @@ -598,7 +609,12 @@ Jeżeli Nheko nie odnajdzie Twojego serwera domowego, wyświetli formularz umoż Hasło - + + Your password. + + + + Device name Nazwa urządzenia @@ -608,19 +624,37 @@ Jeżeli Nheko nie odnajdzie Twojego serwera domowego, wyświetli formularz umoż Nazwa dla tego urządzenia, będzie ona widoczna dla innych użytkowników, kiedy będą weryfikować Twoje urządzenia. Jeżeli żadna nie jest podana, używana jest domyślna. - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN ZALOGUJ - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Automatyczne odkrywanie zakończone niepowodzeniem. Otrzymano nieprawidłową odpowiedź. @@ -765,7 +799,7 @@ Example: https://server.my:8787 Napisz wiadomość… - + Emoji Emoji @@ -872,7 +906,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Stwórz unikalny profil, który pozwoli Ci na zalogowanie się do kilku kont jednocześnie i uruchomienie wielu instancji Nheko. @@ -975,7 +1009,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1017,7 +1051,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1117,7 +1151,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Redagowanie wiadomości nie powiodło się: %1 @@ -1128,7 +1162,7 @@ Example: https://server.my:8787 - + Save image Zapisz obraz @@ -1148,7 +1182,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1268,12 +1302,12 @@ Example: https://server.my:8787 - + You joined this room. Dołączyłeś(-łaś) do tego pokoju. - + Rejected the knock from %1. @@ -1354,6 +1388,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1466,7 +1505,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1489,7 +1528,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Zminimalizuj do paska zadań diff --git a/resources/langs/nheko_pt_PT.ts b/resources/langs/nheko_pt_PT.ts index 33637f22..31be9ea9 100644 --- a/resources/langs/nheko_pt_PT.ts +++ b/resources/langs/nheko_pt_PT.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Your password. + + + + Device name @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray diff --git a/resources/langs/nheko_ro.ts b/resources/langs/nheko_ro.ts index c4e195f5..7b36ea59 100644 --- a/resources/langs/nheko_ro.ts +++ b/resources/langs/nheko_ro.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Te-ai alăturat camerei. @@ -126,7 +126,7 @@ - + Invited user: %1 Utilizator invitat: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Toate camerele @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Toate fișierele (*) - + Failed to upload media. Please try again. @@ -599,7 +610,12 @@ Dacă Nheko nu vă poate găsi homeserverul, vă va arăta un câmp pentru intro Parolă - + + Your password. + + + + Device name Nume dispozitiv @@ -609,7 +625,17 @@ Dacă Nheko nu vă poate găsi homeserverul, vă va arăta un câmp pentru intro - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 Adresa la care se poate contacta APIul homeserverului dumneavoastră. @@ -617,12 +643,20 @@ Exemplu: https://serverul.meu:8787 - + LOGIN CONECTARE - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Autodescoperirea a eșuat. Răspunsul primit este defectuos. @@ -767,7 +801,7 @@ Exemplu: https://serverul.meu:8787 - + Emoji @@ -874,7 +908,7 @@ Exemplu: https://serverul.meu:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -977,7 +1011,7 @@ Exemplu: https://serverul.meu:8787 RoomInfo - + no version stored nicio versiune stocată @@ -1019,7 +1053,7 @@ Exemplu: https://serverul.meu:8787 - + New tag... Add a new tag to the room @@ -1119,7 +1153,7 @@ Exemplu: https://serverul.meu:8787 TimelineModel - + Message redaction failed: %1 Redactare mesaj eșuată: %1 @@ -1130,7 +1164,7 @@ Exemplu: https://serverul.meu:8787 - + Save image Salvați imaginea @@ -1150,7 +1184,7 @@ Exemplu: https://serverul.meu:8787 Salvați fișier - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1270,12 +1304,12 @@ Exemplu: https://serverul.meu:8787 %1 și-a redactat ciocănitul. - + You joined this room. Te-ai alăturat camerei. - + Rejected the knock from %1. Ciocănit refuzat de la %1. @@ -1356,6 +1390,11 @@ Exemplu: https://serverul.meu:8787 Save as Salvare ca + + + Open in external program + + No room open @@ -1468,7 +1507,7 @@ Exemplu: https://serverul.meu:8787 UserProfile - + Verify @@ -1491,7 +1530,7 @@ Exemplu: https://serverul.meu:8787 UserSettingsPage - + Minimize to tray Minimizează în bara de notificări diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts index 0e3b48f5..21b31b33 100644 --- a/resources/langs/nheko_ru.ts +++ b/resources/langs/nheko_ru.ts @@ -6,18 +6,18 @@ Calling... - + Вызов... Connecting... - + Соединение... Toggle camera view - + Сменить вид камеры @@ -51,7 +51,7 @@ Cache - + You joined this room. Вы присоединились к этой комнате. @@ -61,17 +61,17 @@ Video Call - Видео Звонок + Видео Звонок Voice Call - Голосовой Звонок + Голосовой Звонок No microphone found. - Микрофон не найден. + Микрофон не найден. @@ -126,7 +126,7 @@ - + Invited user: %1 Приглашенный пользователь: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Все комнаты @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Зашифрованное событие (Нет найдено ключей для дешифрования) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Все файлы (*) - + Failed to upload media. Please try again. Не удалось загрузить медиа. Пожалуйста попробуйте ещё раз @@ -599,7 +610,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Пароль - + + Your password. + + + + Device name Имя устройства @@ -609,7 +625,17 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th Имя устройства, которое будет отображаться для других, когда верифицируют ваше устройство. Если не предоставить имя устройста,то будет использоваться имя по умолчанию. - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 Адрес который будет использоваться для связи клиентского API вашего домашнего сервера. @@ -617,12 +643,20 @@ Example: https://server.my:8787 - + LOGIN ВОЙТИ - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Автообноружение не удалось. Получен поврежденный ответ. @@ -767,7 +801,7 @@ Example: https://server.my:8787 Написать сообщение… - + Emoji Эмоджи @@ -874,7 +908,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Создать уникальный профиль, который позволяет вести несколько аккаунтов и запускать множество сущностей nheko. @@ -977,7 +1011,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored нет сохраненной версии @@ -1019,7 +1053,7 @@ Example: https://server.my:8787 Добавить или удалить выбранные тэг. - + New tag... Add a new tag to the room Добавить новый тег для комнаты @@ -1119,7 +1153,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Ошибка редактирования сообщения: %1 @@ -1130,7 +1164,7 @@ Example: https://server.my:8787 Не удалось зашифровать сообщение, отправка отменена! - + Save image Сохранить изображение @@ -1150,7 +1184,7 @@ Example: https://server.my:8787 Сохранить файл - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1270,12 +1304,12 @@ Example: https://server.my:8787 %1 отредактировал его "стук". - + You joined this room. Вы присоединились к этой комнате. - + Rejected the knock from %1. Отверг "стук" от %1 @@ -1356,6 +1390,11 @@ Example: https://server.my:8787 Save as Сохранить как + + + Open in external program + + No room open @@ -1468,7 +1507,7 @@ Example: https://server.my:8787 UserProfile - + Verify Верифицировать @@ -1491,7 +1530,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray Сворачивать в системную панель diff --git a/resources/langs/nheko_si.ts b/resources/langs/nheko_si.ts index a6e10ad5..6366b35a 100644 --- a/resources/langs/nheko_si.ts +++ b/resources/langs/nheko_si.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. @@ -126,7 +126,7 @@ - + Invited user: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Your password. + + + + Device name @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1265,12 +1299,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -1351,6 +1385,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1463,7 +1502,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1486,7 +1525,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray diff --git a/resources/langs/nheko_sv.ts b/resources/langs/nheko_sv.ts index 70941b51..18266ad4 100644 --- a/resources/langs/nheko_sv.ts +++ b/resources/langs/nheko_sv.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. Du gick med i detta rum. @@ -126,7 +126,7 @@ - + Invited user: %1 Bjöd in användare: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms Alla rum @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Krypterat Event (Inga nycklar kunde hittas för dekryptering) -- + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ Alla Filer (*) - + Failed to upload media. Please try again. Kunde inte ladda upp media. Vänligen försök igen. @@ -599,7 +610,12 @@ Om Nheko inte kan hitta din hemserver automatiskt kommer ett fält dyka upp där Lösenord - + + Your password. + + + + Device name Enhetsnamn @@ -609,7 +625,17 @@ Om Nheko inte kan hitta din hemserver automatiskt kommer ett fält dyka upp där Ett namn för denna enhet. Namnet kommer synas för andra när du verifierar dina enheter. Om du inte förser ett namn kommer ett standardnamn användas. - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 Addressen som kan användas för att kontakta din hemservers klient-API. @@ -617,12 +643,20 @@ Exempel: https://server.my:8787 - + LOGIN INLOGGNING - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. Autouppslag misslyckades. Mottog felkonstruerat svar. @@ -767,7 +801,7 @@ Exempel: https://server.my:8787 Skriv ett meddelande… - + Emoji Emoji @@ -874,7 +908,7 @@ Exempel: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Skapa en unik profil, vilket tillåter dig att logga in på flera konton samtidigt och starta flera instanser av Nheko. @@ -977,7 +1011,7 @@ Exempel: https://server.my:8787 RoomInfo - + no version stored ingen version lagrad @@ -1019,7 +1053,7 @@ Exempel: https://server.my:8787 Lägger till eller tar bort den angivna taggen. - + New tag... Add a new tag to the room Ny tagg… @@ -1119,7 +1153,7 @@ Exempel: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Kunde inte maskera meddelande: %1 @@ -1130,7 +1164,7 @@ Exempel: https://server.my:8787 Kunde inte kryptera event, sändning avbruten! - + Save image Spara bild @@ -1150,7 +1184,7 @@ Exempel: https://server.my:8787 Spara fil - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1269,12 +1303,12 @@ Exempel: https://server.my:8787 %1 maskerade sin knackning. - + You joined this room. Du gick med i detta rum. - + Rejected the knock from %1. Avvisade knackningen från %1. @@ -1355,6 +1389,11 @@ Exempel: https://server.my:8787 Save as Spara som + + + Open in external program + + No room open @@ -1467,7 +1506,7 @@ Exempel: https://server.my:8787 UserProfile - + Verify Bekräfta @@ -1490,7 +1529,7 @@ Exempel: https://server.my:8787 UserSettingsPage - + Minimize to tray Minimera till systemtråg diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts index 2e8b7255..ce25bcbe 100644 --- a/resources/langs/nheko_zh_CN.ts +++ b/resources/langs/nheko_zh_CN.ts @@ -51,7 +51,7 @@ Cache - + You joined this room. 您已加入此房间 @@ -126,7 +126,7 @@ - + Invited user: %1 邀请已发送: %1 @@ -280,7 +280,12 @@ CommunitiesListItem - + + Hide rooms with this tag or from this community + + + + All rooms @@ -474,11 +479,17 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + + + -- Encrypted Event (Key not valid for this index) -- + Placeholder, when the message can't be decrypted with this key since it is not valid for this index + + @@ -557,7 +568,7 @@ 所有文件(*) - + Failed to upload media. Please try again. @@ -596,7 +607,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th 密码 - + + Your password. + + + + Device name 设备名 @@ -606,19 +622,37 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th - + + Homeserver address + + + + + server.my:8787 + + + + The address that can be used to contact you homeservers client API. Example: https://server.my:8787 - + LOGIN 登录 - + + + + + You have entered an invalid Matrix ID e.g @joe:matrix.org + + + + Autodiscovery failed. Received malformed response. @@ -763,7 +797,7 @@ Example: https://server.my:8787 写一条消息… - + Emoji @@ -870,7 +904,7 @@ Example: https://server.my:8787 QCoreApplication - + Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. @@ -973,7 +1007,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -1015,7 +1049,7 @@ Example: https://server.my:8787 - + New tag... Add a new tag to the room @@ -1115,7 +1149,7 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 删除消息失败:%1 @@ -1126,7 +1160,7 @@ Example: https://server.my:8787 - + Save image 保存图像 @@ -1146,7 +1180,7 @@ Example: https://server.my:8787 - + %1 and %2 are typing. Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.) @@ -1264,12 +1298,12 @@ Example: https://server.my:8787 - + You joined this room. 您已加入此房间 - + Rejected the knock from %1. @@ -1350,6 +1384,11 @@ Example: https://server.my:8787 Save as + + + Open in external program + + No room open @@ -1462,7 +1501,7 @@ Example: https://server.my:8787 UserProfile - + Verify @@ -1485,7 +1524,7 @@ Example: https://server.my:8787 UserSettingsPage - + Minimize to tray 最小化至托盘 diff --git a/resources/nheko.appdata.xml b/resources/nheko.appdata.xml index 1352bb76..5e51abd4 100644 --- a/resources/nheko.appdata.xml +++ b/resources/nheko.appdata.xml @@ -43,6 +43,7 @@ https://github.com/Nheko-Reborn/nheko https://github.com/Nheko-Reborn + 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 { diff --git a/resources/res.qrc b/resources/res.qrc index e3998bd1..308d81a6 100644 --- a/resources/res.qrc +++ b/resources/res.qrc @@ -131,6 +131,7 @@ qml/MessageInput.qml qml/MessageView.qml qml/NhekoBusyIndicator.qml + qml/PrivacyScreen.qml qml/Reactions.qml qml/ReplyPopup.qml qml/ScrollHelper.qml diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 07ed3941..db80ecd5 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -333,6 +333,8 @@ ChatPage::ChatPage(QSharedPointer userSettings, QWidget *parent) &ChatPage::initializeMentions, user_mentions_popup_, &popups::UserMentions::initializeMentions); + connect( + this, &ChatPage::chatFocusChanged, view_manager_, &TimelineViewManager::chatFocusChanged); connect(this, &ChatPage::syncUI, this, [this](const mtx::responses::Rooms &rooms) { try { room_list_->cleanupInvites(cache::invites()); diff --git a/src/ChatPage.h b/src/ChatPage.h index 0516f87d..917bd785 100644 --- a/src/ChatPage.h +++ b/src/ChatPage.h @@ -127,7 +127,6 @@ public slots: void receivedSessionKey(const std::string &room_id, const std::string &session_id); void decryptDownloadedSecrets(mtx::secret_storage::AesHmacSha2KeyDescription keyDesc, const SecretsToDecrypt &secrets); - signals: void connectionLost(); void connectionRestored(); @@ -176,6 +175,7 @@ signals: void retrievedPresence(const QString &statusMsg, mtx::presence::PresenceState state); void themeChanged(); void decryptSidebarChanged(); + void chatFocusChanged(const bool focused); //! Signals for device verificaiton void receivedDeviceVerificationAccept( diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp index ec9b856f..15aeb12a 100644 --- a/src/LoginPage.cpp +++ b/src/LoginPage.cpp @@ -120,7 +120,7 @@ LoginPage::LoginPage(QWidget *parent) password_input_ = new TextField(this); password_input_->setLabel(tr("Password")); password_input_->setEchoMode(QLineEdit::Password); - password_input_->setToolTip("Your password."); + password_input_->setToolTip(tr("Your password.")); deviceName_ = new TextField(this); deviceName_->setLabel(tr("Device name")); @@ -129,8 +129,8 @@ LoginPage::LoginPage(QWidget *parent) "If none is provided a default is used.")); serverInput_ = new TextField(this); - serverInput_->setLabel("Homeserver address"); - serverInput_->setPlaceholderText("matrix.org"); + serverInput_->setLabel(tr("Homeserver address")); + serverInput_->setPlaceholderText(tr("server.my:8787")); serverInput_->setToolTip(tr("The address that can be used to contact you homeservers " "client API.\nExample: https://server.my:8787")); serverInput_->hide(); @@ -217,7 +217,7 @@ LoginPage::onMatrixIdEntered() if (!matrixid_input_->isValid()) { error_matrixid_label_->show(); showError(error_matrixid_label_, - "You have entered an invalid Matrix ID e.g @joe:matrix.org"); + tr("You have entered an invalid Matrix ID e.g @joe:matrix.org")); return; } else { error_matrixid_label_->setText(""); @@ -228,7 +228,7 @@ LoginPage::onMatrixIdEntered() user = parse(matrixid_input_->text().toStdString()); } catch (const std::exception &) { showError(error_matrixid_label_, - "You have entered an invalid Matrix ID e.g @joe:matrix.org"); + tr("You have entered an invalid Matrix ID e.g @joe:matrix.org")); return; } @@ -385,7 +385,7 @@ LoginPage::onLoginButtonClicked() if (!matrixid_input_->isValid()) { error_matrixid_label_->show(); showError(error_matrixid_label_, - "You have entered an invalid Matrix ID e.g @joe:matrix.org"); + tr("You have entered an invalid Matrix ID e.g @joe:matrix.org")); return; } else { error_matrixid_label_->setText(""); @@ -396,7 +396,7 @@ LoginPage::onLoginButtonClicked() user = parse(matrixid_input_->text().toStdString()); } catch (const std::exception &) { showError(error_matrixid_label_, - "You have entered an invalid Matrix ID e.g @joe:matrix.org"); + tr("You have entered an invalid Matrix ID e.g @joe:matrix.org")); return; } diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 77269008..ab3c2cf2 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -59,6 +59,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , userSettings_{UserSettings::instance()} { + instance_ = this; + setWindowTitle(0); setObjectName("MainWindow"); @@ -130,6 +132,9 @@ MainWindow::MainWindow(QWidget *parent) SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); connect(chat_page_, SIGNAL(contentLoaded()), this, SLOT(removeOverlayProgressBar())); + + connect(this, &MainWindow::focusChanged, chat_page_, &ChatPage::chatFocusChanged); + connect( chat_page_, &ChatPage::showUserSettingsPage, this, &MainWindow::showUserSettingsPage); @@ -204,6 +209,19 @@ MainWindow::resizeEvent(QResizeEvent *event) QMainWindow::resizeEvent(event); } +bool +MainWindow::event(QEvent *event) +{ + auto type = event->type(); + if (type == QEvent::WindowActivate) { + emit focusChanged(true); + } else if (type == QEvent::WindowDeactivate) { + emit focusChanged(false); + } + + return QMainWindow::event(event); +} + void MainWindow::adjustSideBars() { @@ -296,8 +314,6 @@ MainWindow::showChatPage() &Cache::secretChanged, userSettingsPage_, &UserSettingsPage::updateSecretStatus); - - instance_ = this; } void diff --git a/src/MainWindow.h b/src/MainWindow.h index 0915a849..bb219813 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -61,10 +61,15 @@ class MainWindow : public QMainWindow { Q_OBJECT + Q_PROPERTY(int x READ x CONSTANT) + Q_PROPERTY(int y READ y CONSTANT) + Q_PROPERTY(int width READ width CONSTANT) + Q_PROPERTY(int height READ height CONSTANT) + public: explicit MainWindow(QWidget *parent = nullptr); - static MainWindow *instance() { return instance_; }; + static MainWindow *instance() { return instance_; } void saveCurrentWindowSize(); void openLeaveRoomDialog(const QString &room_id); @@ -88,6 +93,7 @@ protected: void closeEvent(QCloseEvent *event) override; void resizeEvent(QResizeEvent *event) override; void showEvent(QShowEvent *event) override; + bool event(QEvent *event) override; private slots: //! Show or hide the sidebars based on window's size. @@ -115,6 +121,9 @@ private slots: virtual void setWindowTitle(int notificationCount); +signals: + void focusChanged(const bool focused); + private: bool loadJdenticonPlugin(); diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index 0e3bd667..96c07d7c 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -88,14 +88,16 @@ UserSettings::load(std::optional profile) settings.value("user/timeline/message_hover_highlight", false).toBool(); enlargeEmojiOnlyMessages_ = settings.value("user/timeline/enlarge_emoji_only_msg", false).toBool(); - markdown_ = settings.value("user/markdown_enabled", true).toBool(); - typingNotifications_ = settings.value("user/typing_notifications", true).toBool(); - sortByImportance_ = settings.value("user/sort_by_unread", true).toBool(); - readReceipts_ = settings.value("user/read_receipts", true).toBool(); - theme_ = settings.value("user/theme", defaultTheme_).toString(); - font_ = settings.value("user/font_family", "default").toString(); - avatarCircles_ = settings.value("user/avatar_circles", true).toBool(); - decryptSidebar_ = settings.value("user/decrypt_sidebar", true).toBool(); + markdown_ = settings.value("user/markdown_enabled", true).toBool(); + typingNotifications_ = settings.value("user/typing_notifications", true).toBool(); + sortByImportance_ = settings.value("user/sort_by_unread", true).toBool(); + readReceipts_ = settings.value("user/read_receipts", true).toBool(); + theme_ = settings.value("user/theme", defaultTheme_).toString(); + font_ = settings.value("user/font_family", "default").toString(); + avatarCircles_ = settings.value("user/avatar_circles", true).toBool(); + decryptSidebar_ = settings.value("user/decrypt_sidebar", true).toBool(); + privacyScreen_ = settings.value("user/privacy_screen", false).toBool(); + privacyScreenTimeout_ = settings.value("user/privacy_screen_timeout", 0).toInt(); shareKeysWithTrustedUsers_ = settings.value("user/share_keys_with_trusted_users", true).toBool(); mobileMode_ = settings.value("user/mobile_mode", false).toBool(); @@ -292,6 +294,28 @@ UserSettings::setDecryptSidebar(bool state) save(); } +void +UserSettings::setPrivacyScreen(bool state) +{ + if (state == privacyScreen_) { + return; + } + privacyScreen_ = state; + emit privacyScreenChanged(state); + save(); +} + +void +UserSettings::setPrivacyScreenTimeout(int state) +{ + if (state == privacyScreenTimeout_) { + return; + } + privacyScreenTimeout_ = state; + emit privacyScreenTimeoutChanged(state); + save(); +} + void UserSettings::setFontSize(double size) { @@ -539,6 +563,8 @@ UserSettings::save() settings.setValue("avatar_circles", avatarCircles_); settings.setValue("decrypt_sidebar", decryptSidebar_); + settings.setValue("privacy_screen", privacyScreen_); + settings.setValue("privacy_screen_timeout", privacyScreenTimeout_); settings.setValue("share_keys_with_trusted_users", shareKeysWithTrustedUsers_); settings.setValue("mobile_mode", mobileMode_); settings.setValue("font_size", baseFontSize_); @@ -628,6 +654,7 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge startInTrayToggle_ = new Toggle{this}; avatarCircles_ = new Toggle{this}; decryptSidebar_ = new Toggle(this); + privacyScreen_ = new Toggle{this}; shareKeysWithTrustedUsers_ = new Toggle(this); groupViewToggle_ = new Toggle{this}; timelineButtonsToggle_ = new Toggle{this}; @@ -651,11 +678,13 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge cameraResolutionCombo_ = new QComboBox{this}; cameraFrameRateCombo_ = new QComboBox{this}; timelineMaxWidthSpin_ = new QSpinBox{this}; + privacyScreenTimeout_ = new QSpinBox{this}; trayToggle_->setChecked(settings_->tray()); startInTrayToggle_->setChecked(settings_->startInTray()); avatarCircles_->setChecked(settings_->avatarCircles()); decryptSidebar_->setChecked(settings_->decryptSidebar()); + privacyScreen_->setChecked(settings_->privacyScreen()); shareKeysWithTrustedUsers_->setChecked(settings_->shareKeysWithTrustedUsers()); groupViewToggle_->setChecked(settings_->groupView()); timelineButtonsToggle_->setChecked(settings_->buttonsInTimeline()); @@ -675,6 +704,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge startInTrayToggle_->setDisabled(true); } + if (!settings_->privacyScreen()) { + privacyScreenTimeout_->setDisabled(true); + } + avatarCircles_->setFixedSize(64, 48); auto uiLabel_ = new QLabel{tr("INTERFACE"), this}; @@ -715,6 +748,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge timelineMaxWidthSpin_->setMaximum(100'000'000); timelineMaxWidthSpin_->setSingleStep(10); + privacyScreenTimeout_->setMinimum(0); + privacyScreenTimeout_->setMaximum(3600); + privacyScreenTimeout_->setSingleStep(10); + auto callsLabel = new QLabel{tr("CALLS"), this}; callsLabel->setFixedHeight(callsLabel->minimumHeight() + LayoutTopMargin); callsLabel->setAlignment(Qt::AlignBottom); @@ -808,6 +845,15 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge decryptSidebar_, tr("Decrypt the messages shown in the sidebar.\nOnly affects messages in " "encrypted chats.")); + boxWrap(tr("Privacy Screen"), + privacyScreen_, + tr("When the window loses focus, the timeline will\nbe blurred.")); + boxWrap( + tr("Privacy screen timeout (in seconds [0 - 3600])"), + privacyScreenTimeout_, + tr("Set timeout (in seconds) for how long after window loses\nfocus before the screen" + " will be blurred.\nSet to 0 to blur immediately after focus loss. Max value of 1 " + "hour (3600 seconds)")); boxWrap(tr("Show buttons in timeline"), timelineButtonsToggle_, tr("Show buttons to quickly reply, react or access additional options next to each " @@ -1066,7 +1112,15 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge connect(decryptSidebar_, &Toggle::toggled, this, [this](bool enabled) { settings_->setDecryptSidebar(enabled); - emit decryptSidebarChanged(); + }); + + connect(privacyScreen_, &Toggle::toggled, this, [this](bool enabled) { + settings_->setPrivacyScreen(enabled); + if (enabled) { + privacyScreenTimeout_->setEnabled(true); + } else { + privacyScreenTimeout_->setDisabled(true); + } }); connect(shareKeysWithTrustedUsers_, &Toggle::toggled, this, [this](bool enabled) { @@ -1122,6 +1176,11 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge this, [this](int newValue) { settings_->setTimelineMaxWidth(newValue); }); + connect(privacyScreenTimeout_, + qOverload(&QSpinBox::valueChanged), + this, + [this](int newValue) { settings_->setPrivacyScreenTimeout(newValue); }); + connect( sessionKeysImportBtn, &QPushButton::clicked, this, &UserSettingsPage::importSessionKeys); @@ -1155,6 +1214,7 @@ UserSettingsPage::showEvent(QShowEvent *) startInTrayToggle_->setState(settings_->startInTray()); groupViewToggle_->setState(settings_->groupView()); decryptSidebar_->setState(settings_->decryptSidebar()); + privacyScreen_->setState(settings_->privacyScreen()); shareKeysWithTrustedUsers_->setState(settings_->shareKeysWithTrustedUsers()); avatarCircles_->setState(settings_->avatarCircles()); typingNotifications_->setState(settings_->typingNotifications()); @@ -1169,6 +1229,7 @@ UserSettingsPage::showEvent(QShowEvent *) enlargeEmojiOnlyMessages_->setState(settings_->enlargeEmojiOnlyMessages()); deviceIdValue_->setText(QString::fromStdString(http::client()->device_id())); timelineMaxWidthSpin_->setValue(settings_->timelineMaxWidth()); + privacyScreenTimeout_->setValue(settings_->privacyScreenTimeout()); WebRTCSession::instance().refreshDevices(); auto mics = diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h index 15da235b..b65e1efc 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h @@ -67,6 +67,10 @@ class UserSettings : public QObject bool avatarCircles READ avatarCircles WRITE setAvatarCircles NOTIFY avatarCirclesChanged) Q_PROPERTY(bool decryptSidebar READ decryptSidebar WRITE setDecryptSidebar NOTIFY decryptSidebarChanged) + Q_PROPERTY( + bool privacyScreen READ privacyScreen WRITE setPrivacyScreen NOTIFY privacyScreenChanged) + Q_PROPERTY(int privacyScreenTimeout READ privacyScreenTimeout WRITE setPrivacyScreenTimeout + NOTIFY privacyScreenTimeoutChanged) Q_PROPERTY(int timelineMaxWidth READ timelineMaxWidth WRITE setTimelineMaxWidth NOTIFY timelineMaxWidthChanged) Q_PROPERTY(bool mobileMode READ mobileMode WRITE setMobileMode NOTIFY mobileModeChanged) @@ -131,6 +135,8 @@ public: void setAlertOnNotification(bool state); void setAvatarCircles(bool state); void setDecryptSidebar(bool state); + void setPrivacyScreen(bool state); + void setPrivacyScreenTimeout(int state); void setPresence(Presence state); void setRingtone(QString ringtone); void setMicrophone(QString microphone); @@ -154,6 +160,8 @@ public: bool groupView() const { return groupView_; } bool avatarCircles() const { return avatarCircles_; } bool decryptSidebar() const { return decryptSidebar_; } + bool privacyScreen() const { return privacyScreen_; } + int privacyScreenTimeout() const { return privacyScreenTimeout_; } bool markdown() const { return markdown_; } bool typingNotifications() const { return typingNotifications_; } bool sortByImportance() const { return sortByImportance_; } @@ -201,6 +209,8 @@ signals: void alertOnNotificationChanged(bool state); void avatarCirclesChanged(bool state); void decryptSidebarChanged(bool state); + void privacyScreenChanged(bool state); + void privacyScreenTimeoutChanged(int state); void timelineMaxWidthChanged(int state); void mobileModeChanged(bool mode); void fontSizeChanged(double state); @@ -241,6 +251,8 @@ private: bool hasAlertOnNotification_; bool avatarCircles_; bool decryptSidebar_; + bool privacyScreen_; + int privacyScreenTimeout_; bool shareKeysWithTrustedUsers_; bool mobileMode_; int timelineMaxWidth_; @@ -320,6 +332,8 @@ private: Toggle *avatarCircles_; Toggle *useStunServer_; Toggle *decryptSidebar_; + Toggle *privacyScreen_; + QSpinBox *privacyScreenTimeout_; Toggle *shareKeysWithTrustedUsers_; Toggle *mobileMode_; QLabel *deviceFingerprintValue_; diff --git a/src/Utils.cpp b/src/Utils.cpp index 3bb090df..5af5748e 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -55,8 +55,7 @@ utils::codepointIsEmoji(uint code) { // TODO: Be more precise here. return (code >= 0x2600 && code <= 0x27bf) || (code >= 0x2b00 && code <= 0x2bff) || - (code >= 0x1f300 && code <= 0x1f3ff) || (code >= 0x1f000 && code <= 0x1faff) || - code == 0x200d; + (code >= 0x1f000 && code <= 0x1faff) || code == 0x200d || code == 0xfe0f; } QString diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index b16bf1d2..be4bc09e 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -242,9 +242,12 @@ EventStore::receivedSessionKey(const std::string &session_id) return; auto request = pending_key_requests.at(session_id); - pending_key_requests.erase(session_id); - olm::send_key_request_for(request.events.front(), request.request_id, true); + // Don't request keys again until Nheko is restarted (for now) + pending_key_requests[session_id].events.clear(); + + if (!request.events.empty()) + olm::send_key_request_for(request.events.front(), request.request_id, true); for (const auto &e : request.events) { auto idx = idToIndex(e.event_id); @@ -778,7 +781,8 @@ EventStore::fetchMore() if (cache::client()->previousBatchToken(room_id_) != opts.from) { nhlog::net()->warn("Cache cleared while fetching more messages, dropping " "/messages response"); - emit fetchedMore(); + if (!opts.to.empty()) + emit fetchedMore(); return; } if (err) { diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index 97af0065..93451976 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -128,6 +128,10 @@ TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *par "UserProfile needs to be instantiated on the C++ side"); static auto self = this; + qmlRegisterSingletonType( + "im.nheko", 1, 0, "MainWindow", [](QQmlEngine *, QJSEngine *) -> QObject * { + return MainWindow::instance(); + }); qmlRegisterSingletonType( "im.nheko", 1, 0, "TimelineManager", [](QQmlEngine *, QJSEngine *) -> QObject * { return self; diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h index 23a960b8..74128865 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h @@ -36,6 +36,8 @@ class TimelineViewManager : public QObject bool isInitialSync MEMBER isInitialSync_ READ isInitialSync NOTIFY initialSyncChanged) Q_PROPERTY( bool isNarrowView MEMBER isNarrowView_ READ isNarrowView NOTIFY narrowViewChanged) + Q_PROPERTY( + bool isWindowFocused MEMBER isWindowFocused_ READ isWindowFocused NOTIFY focusChanged) public: TimelineViewManager(CallManager *callManager, ChatPage *parent = nullptr); @@ -54,6 +56,7 @@ public: Q_INVOKABLE TimelineModel *activeTimeline() const { return timeline_; } Q_INVOKABLE bool isInitialSync() const { return isInitialSync_; } bool isNarrowView() const { return isNarrowView_; } + bool isWindowFocused() const { return isWindowFocused_; } Q_INVOKABLE void openImageOverlay(QString mxcUrl, QString eventId) const; Q_INVOKABLE QColor userColor(QString id, QColor background); Q_INVOKABLE QString escapeEmoji(QString str) const; @@ -83,11 +86,17 @@ signals: void inviteUsers(QStringList users); void showRoomList(); void narrowViewChanged(); + void focusChanged(); public slots: void updateReadReceipts(const QString &room_id, const std::vector &event_ids); void receivedSessionKey(const std::string &room_id, const std::string &session_id); void initWithMessages(const std::vector &roomIds); + void chatFocusChanged(bool focused) + { + isWindowFocused_ = focused; + emit focusChanged(); + } void setHistoryView(const QString &room_id); TimelineModel *getHistoryView(const QString &room_id) @@ -145,8 +154,9 @@ private: TimelineModel *timeline_ = nullptr; CallManager *callManager_ = nullptr; - bool isInitialSync_ = true; - bool isNarrowView_ = false; + bool isInitialSync_ = true; + bool isNarrowView_ = false; + bool isWindowFocused_ = false; QHash userColors; diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp index 715c1c42..274ed927 100644 --- a/src/ui/UserProfile.cpp +++ b/src/ui/UserProfile.cpp @@ -244,7 +244,7 @@ UserProfile::changeUsername(QString username) if (isGlobalUserProfile()) { // change global http::client()->set_displayname( - username.toStdString(), [this](mtx::http::RequestErr err) { + username.toStdString(), [](mtx::http::RequestErr err) { if (err) { nhlog::net()->warn("could not change username"); return; @@ -408,4 +408,4 @@ UserProfile::getGlobalProfileData() globalAvatarUrl = QString::fromStdString(res.avatar_url); emit avatarUrlChanged(); }); -} \ No newline at end of file +}