mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-24 12:08:50 +03:00
Merge branch 'master' into input_method_height
This commit is contained in:
commit
6642b5a09e
17 changed files with 402 additions and 327 deletions
|
@ -76,9 +76,6 @@ build-macos:
|
|||
stage: build
|
||||
tags: [macos]
|
||||
before_script:
|
||||
#- brew update
|
||||
#- brew reinstall --force python3
|
||||
#- brew bundle --file=./.ci/macos/Brewfile --force --cleanup
|
||||
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
||||
script:
|
||||
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
||||
|
@ -112,6 +109,7 @@ codesign-macos:
|
|||
stage: deploy
|
||||
tags: [macos]
|
||||
before_script:
|
||||
- 'brew upgrade qt@5'
|
||||
- pip3 install dmgbuild
|
||||
script:
|
||||
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
||||
|
|
45
CHANGELOG.md
45
CHANGELOG.md
|
@ -1,5 +1,50 @@
|
|||
# Changelog
|
||||
|
||||
## [0.9.3] -- 2022-03-25
|
||||
|
||||
### Highlights
|
||||
|
||||
- New upload UX
|
||||
- Queue multiple uploads by pasting or dragging multiple files.
|
||||
- Videos will now properly have a thumbnail as well as images.
|
||||
- Duration, width and height is now also properly included so that clients can resize appropriately.
|
||||
- Thumbnails are excluded if they are bigger than the original image. (tastytea)
|
||||
- Improvements for mobile devices (Malte E)
|
||||
- You should now be able to scroll by touching anywhere with no random dead zones.
|
||||
- Preedit text can now be used in a completer and is properly sent
|
||||
- If an input method is active, pressing Enter will not send the current message.
|
||||
|
||||
### Features
|
||||
|
||||
- Optionally always open videos and images in an external program. (math)
|
||||
|
||||
### Improvements
|
||||
|
||||
- Build macOS releases against Qt 5.15.3 to resolve missing spaces after some punctuation.
|
||||
- Send the shortcode as the body for stickers without a body.
|
||||
- Elide long usernames in the timeline. (Malte E)
|
||||
- Cleanup the reply popup. (Malte E)
|
||||
- Use standard buttons where possible. (tastytea)
|
||||
- Various improvements to the bubble layout. (Malte E)
|
||||
- Enable online key backup by default.
|
||||
- Update the bundled gstreamer in our Flatpaks.
|
||||
|
||||
### Translations
|
||||
|
||||
- Indonesian (Linerly)
|
||||
- Estonian (Priit)
|
||||
- Finnish (Priit)
|
||||
- Esperanto (Tirifto)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- Fix hovering the action menu.
|
||||
- Try to avoid using unknown UIA flows.
|
||||
- Don't Components actively in use.
|
||||
- Fix screensharing.
|
||||
- Fix device id when doing SSO logins.
|
||||
|
||||
|
||||
## [0.9.2] -- 2022-03-09
|
||||
|
||||
### Highlights
|
||||
|
|
|
@ -106,7 +106,7 @@ include(GNUInstallDirs)
|
|||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "0")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "9")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "2")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "3")
|
||||
set(PROJECT_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR})
|
||||
set(PROJECT_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR})
|
||||
set(PROJECT_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH})
|
||||
|
|
|
@ -31,8 +31,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.9.2
|
||||
- if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.9.2
|
||||
- if "%APPVEYOR_REPO_TAG%"=="false" set INSTVERSION=0.9.3
|
||||
- if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.9.3
|
||||
- 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
|
||||
|
@ -94,8 +94,8 @@ after_build:
|
|||
- copy %BUILD%\deploy\installer\gui\package.xml installer\packages\io.github.nhekoreborn.nheko\meta
|
||||
- copy %BUILD%\deploy\installer\gui\installscript.qs installer\packages\io.github.nhekoreborn.nheko\meta
|
||||
# Amend version and date
|
||||
- sed -i "s/__VERSION__/0.9.2/" installer\config\config.xml
|
||||
- sed -i "s/__VERSION__/0.9.2/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
||||
- sed -i "s/__VERSION__/0.9.3/" installer\config\config.xml
|
||||
- sed -i "s/__VERSION__/0.9.3/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
||||
- sed -i "s/__DATE__/%DATE%/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
||||
# Copy nheko data
|
||||
- xcopy NhekoData\*.* installer\packages\io.github.nhekoreborn.nheko\data\*.* /s /e /c /y
|
||||
|
|
|
@ -1231,7 +1231,7 @@ Näiteks: https://server.minu:8787</translation>
|
|||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||
<location line="+34"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished">Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti.</translation>
|
||||
<translation>Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2820,9 +2820,9 @@ Põhjus: %4</translation>
|
|||
<message numerus="yes">
|
||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||
<source>Upload %n file(s)</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform></numerusform>
|
||||
<numerusform></numerusform>
|
||||
<translation>
|
||||
<numerusform>Laadi fail üles</numerusform>
|
||||
<numerusform>Laadi %n faili üles</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -3393,13 +3393,15 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
|
|||
<location line="+2"/>
|
||||
<source>Opens images with an external program when tapping the image.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pildile klõpsimisel avab need välises rakenduses.
|
||||
Kui see valik on sisse lülitatud, siis failid jäävad andmekandjale krüptimata kujul ning sa pead neid eraldi kustutama.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Opens videos with an external program when tapping the video.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Videole klõpsimisel avab need välises rakenduses.
|
||||
Kui see valik on sisse lülitatud, siis failid jäävad andmekandjale krüptimata kujul ning sa pead neid eraldi kustutama.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
|
|
@ -95,12 +95,12 @@
|
|||
<message>
|
||||
<location line="+13"/>
|
||||
<source>Unknown microphone: %1</source>
|
||||
<translation>Microphone inconnu : %1</translation>
|
||||
<translation>Microphone inconnu : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+9"/>
|
||||
<source>Unknown camera: %1</source>
|
||||
<translation>Caméra inconnue : %1</translation>
|
||||
<translation>Caméra inconnue : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+14"/>
|
||||
|
@ -147,7 +147,7 @@
|
|||
<message>
|
||||
<location line="+41"/>
|
||||
<source>Failed to open database, logging out!</source>
|
||||
<translation>Impossible d'ouvrir la base de données, déconnexion !</translation>
|
||||
<translation>Impossible d'ouvrir la base de données, déconnexion !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+304"/>
|
||||
|
@ -173,12 +173,12 @@
|
|||
<message>
|
||||
<location line="-445"/>
|
||||
<source>Do you really want to invite %1 (%2)?</source>
|
||||
<translation>Voulez-vous vraiment inviter %1 (%2) ?</translation>
|
||||
<translation>Voulez-vous vraiment inviter %1 (%2) ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+12"/>
|
||||
<source>Failed to invite %1 to %2: %3</source>
|
||||
<translation>Échec de l'invitation de %1 dans %2 : %3</translation>
|
||||
<translation>Échec de l'invitation de %1 dans %2 : %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+34"/>
|
||||
|
@ -203,12 +203,12 @@
|
|||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Do you really want to unban %1 (%2)?</source>
|
||||
<translation>Voulez-vous vraiment annuler le bannissement de %1 (%2) ?</translation>
|
||||
<translation>Voulez-vous vraiment annuler le bannissement de %1 (%2) ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Failed to unban %1 in %2: %3</source>
|
||||
<translation>Échec de l'annulation du bannissement de %1 dans %2 : %3</translation>
|
||||
<translation>Échec de l'annulation du bannissement de %1 dans %2 : %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
|
@ -223,7 +223,7 @@
|
|||
<message>
|
||||
<location line="-892"/>
|
||||
<source>Cache migration failed!</source>
|
||||
<translation>Échec de la migration du cache !</translation>
|
||||
<translation>Échec de la migration du cache !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
|
@ -245,18 +245,18 @@
|
|||
<message>
|
||||
<location line="+93"/>
|
||||
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
|
||||
<translation>Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard.</translation>
|
||||
<translation>Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+34"/>
|
||||
<location line="+111"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Veuillez re-tenter vous reconnecter : %1</translation>
|
||||
<translation>Veuillez re-tenter vous reconnecter : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+43"/>
|
||||
<source>Failed to join room: %1</source>
|
||||
<translation>Impossible de rejoindre le salon : %1</translation>
|
||||
<translation>Impossible de rejoindre le salon : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
@ -266,42 +266,42 @@
|
|||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Failed to remove invite: %1</source>
|
||||
<translation>Impossible de supprimer l'invitation : %1</translation>
|
||||
<translation>Impossible de supprimer l'invitation : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>Room creation failed: %1</source>
|
||||
<translation>Échec de la création du salon : %1</translation>
|
||||
<translation>Échec de la création du salon : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+18"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Impossible de quitter le salon : %1</translation>
|
||||
<translation>Impossible de quitter le salon : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+59"/>
|
||||
<source>Reason for the kick</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Motif de l’expulsion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Enter reason for kicking %1 (%2) or hit enter for no reason:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Saisissez le motif de l'expulsion de %1 (%2), ou appuyez sur entrée pour l'omettre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+15"/>
|
||||
<source>Failed to kick %1 from %2: %3</source>
|
||||
<translation>Échec de l'expulsion de %1 de %2  : %3</translation>
|
||||
<translation>Échec de l'expulsion de %1 de %2 : %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+15"/>
|
||||
<source>Reason for the ban</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Motif du bannissement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Enter reason for banning %1 (%2) or hit enter for no reason:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Saisissez le motif du bannissement de %1 (%2), ou appuyez sur entrée pour l'omettre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/ChatPage.qml" line="+37"/>
|
||||
|
@ -390,12 +390,12 @@
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Enter your recovery key or passphrase to decrypt your secrets:</source>
|
||||
<translation>Entrez votre clé de récupération ou phrase de passe pour déchiffrer vos secrets :</translation>
|
||||
<translation>Entrez votre clé de récupération ou phrase de passe pour déchiffrer vos secrets :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source>
|
||||
<translation>Entrez votre clé de récupération ou votre phrase de passe nommée %1 pour déchiffrer vos secrets :</translation>
|
||||
<translation>Entrez votre clé de récupération ou votre phrase de passe nommée %1 pour déchiffrer vos secrets :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+28"/>
|
||||
|
@ -418,17 +418,17 @@
|
|||
<message>
|
||||
<location line="+13"/>
|
||||
<source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
||||
<translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||
<translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+33"/>
|
||||
<source>They do not match!</source>
|
||||
<translation>Ils sont différents !</translation>
|
||||
<translation>Ils sont différents !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
<source>They match!</source>
|
||||
<translation>Ils sont identiques !</translation>
|
||||
<translation>Ils sont identiques !</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -436,12 +436,12 @@
|
|||
<message>
|
||||
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
||||
<source>Room Settings</source>
|
||||
<translation type="unfinished">Configuration du salon</translation>
|
||||
<translation>Configuration du salon</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location line="+94"/>
|
||||
<source>%n member(s)</source>
|
||||
<translation type="unfinished">
|
||||
<translation>
|
||||
<numerusform>%n membre</numerusform>
|
||||
<numerusform>%n membres</numerusform>
|
||||
</translation>
|
||||
|
@ -449,133 +449,134 @@
|
|||
<message>
|
||||
<location line="+65"/>
|
||||
<source>SETTINGS</source>
|
||||
<translation type="unfinished">CONFIGURATION</translation>
|
||||
<translation>CONFIGURATION</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Notifications</source>
|
||||
<translation type="unfinished">Notifications</translation>
|
||||
<translation>Notifications</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Muted</source>
|
||||
<translation type="unfinished">En sourdine</translation>
|
||||
<translation>En sourdine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Mentions only</source>
|
||||
<translation type="unfinished">Seulement les mentions</translation>
|
||||
<translation>Seulement les mentions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>All messages</source>
|
||||
<translation type="unfinished">Tous les messages</translation>
|
||||
<translation>Tous les messages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Room access</source>
|
||||
<translation type="unfinished">Accès au salon</translation>
|
||||
<translation>Accès au salon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
<source>Anyone and guests</source>
|
||||
<translation type="unfinished">Tous le monde et les invités</translation>
|
||||
<translation>Tous le monde et les invités</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Anyone</source>
|
||||
<translation type="unfinished">Tout le monde</translation>
|
||||
<translation>Tout le monde</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Invited users</source>
|
||||
<translation type="unfinished">Utilisateurs invités</translation>
|
||||
<translation>Utilisateurs invités</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>By knocking</source>
|
||||
<translation type="unfinished">En toquant</translation>
|
||||
<translation>En toquant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Restricted by membership in other rooms</source>
|
||||
<translation type="unfinished">Restreint par l'appartenance à d'autre salons</translation>
|
||||
<translation>Restreint par l'appartenance à d'autre salons</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
<source>Encryption</source>
|
||||
<translation type="unfinished">Chiffrement</translation>
|
||||
<translation>Chiffrement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+21"/>
|
||||
<source>End-to-End Encryption</source>
|
||||
<translation type="unfinished">Chiffrement bout-à-bout</translation>
|
||||
<translation>Chiffrement de bout en bout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||
Please take note that it can't be disabled afterwards.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Le chiffrement est expérimental pour le moment, à vos risques et périls. <br>
|
||||
Veuillez noter qu'il ne pourra plus être désactivé par la suite.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Sticker & Emote Settings</source>
|
||||
<translation type="unfinished">Paramètres des autocollants & emotes</translation>
|
||||
<translation>Paramètres des autocollants & emotes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Change</source>
|
||||
<translation type="unfinished">Modifier</translation>
|
||||
<translation>Modifier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Change what packs are enabled, remove packs or create new ones</source>
|
||||
<translation type="unfinished">Modifier quels paquets sont activés, retirer des paquets ou bien en créer de nouveaux</translation>
|
||||
<translation>Modifier quels paquets sont activés, supprimer des paquets, en créer des nouveaux</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Hidden events</source>
|
||||
<translation type="unfinished">Évènements cachés</translation>
|
||||
<translation>Évènements cachés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<source>Configure</source>
|
||||
<translation type="unfinished">Configurer</translation>
|
||||
<translation>Configurer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Select events to hide in this room</source>
|
||||
<translation type="unfinished">Sélectionner les évènements à cacher dans ce salon</translation>
|
||||
<translation>Sélectionnez les évènements à cacher dans ce salon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>INFO</source>
|
||||
<translation type="unfinished">INFO</translation>
|
||||
<translation>INFO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Internal ID</source>
|
||||
<translation type="unfinished">Identifiant interne</translation>
|
||||
<translation>Identifiant interne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Copied to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Copié dans le presse-papiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>Room Version</source>
|
||||
<translation type="unfinished">Version du salon</translation>
|
||||
<translation>Version du salon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>show less</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>montrer moins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>show more</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>montrer plus</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -659,17 +660,17 @@
|
|||
<message>
|
||||
<location line="+13"/>
|
||||
<source>Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
||||
<translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S'ils diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||
<translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S'ils diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+378"/>
|
||||
<source>They do not match!</source>
|
||||
<translation>Ils sont différents !</translation>
|
||||
<translation>Ils sont différents !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
<source>They match!</source>
|
||||
<translation>Ils sont identiques !</translation>
|
||||
<translation>Ils sont identiques !</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -720,7 +721,7 @@
|
|||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+54"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation>Ce message n'est pas chiffré !</translation>
|
||||
<translation>Ce message n'est pas chiffré !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
@ -753,7 +754,7 @@
|
|||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Key mismatch detected!</source>
|
||||
<translation>Clés non correspondantes détectées !</translation>
|
||||
<translation>Clés non correspondantes détectées !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
|
@ -768,7 +769,7 @@
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Verification messages received out of order!</source>
|
||||
<translation>Messages de vérification reçus dans le désordre !</translation>
|
||||
<translation>Messages de vérification reçus dans le désordre !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
|
@ -813,12 +814,12 @@
|
|||
<message>
|
||||
<location line="+18"/>
|
||||
<source>These events will be <b>shown</b> in %1:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ces évènements seront <b>affichés</b> dans %1 :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>These events will be <b>shown</b> in all rooms:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ces évènements seront <b>affichés</b> dans tous les salons :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+15"/>
|
||||
|
@ -1080,9 +1081,9 @@
|
|||
You can also put your homeserver address there, if your server doesn't support .well-known lookup.
|
||||
Example: @user:server.my
|
||||
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
|
||||
<translation>Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ».
|
||||
<translation>Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ».
|
||||
Vous pouvez également spécifier l'adresse de votre serveur ici, si votre serveur ne supporte pas l'identification .well-known.
|
||||
Exemple : @utilisateur :monserveur.example.com
|
||||
Exemple : @utilisateur :monserveur.example.com
|
||||
Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l'indiquer manuellement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -1120,7 +1121,7 @@ Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l&apos
|
|||
<source>The address that can be used to contact you homeservers client API.
|
||||
Example: https://server.my:8787</source>
|
||||
<translation>L'adresse qui peut être utilisée pour joindre l'API client de votre serveur.
|
||||
Exemple : https ://monserveur.example.com:8787</translation>
|
||||
Exemple : https ://monserveur.example.com:8787</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+30"/>
|
||||
|
@ -1138,7 +1139,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<location line="+58"/>
|
||||
<location line="+109"/>
|
||||
<source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source>
|
||||
<translation>Vous avez entré un identifiant Matrix invalide exemple correct : @moi:monserveur.example.com)</translation>
|
||||
<translation>Vous avez entré un identifiant Matrix invalide exemple correct : @moi:monserveur.example.com)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-139"/>
|
||||
|
@ -1168,27 +1169,27 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+19"/>
|
||||
<source>Sign in with Apple</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Se connecter avec Apple</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Continue with Facebook</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Continuer avec Facebook</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Sign in with Google</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Connexion avec Google</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Sign in with Twitter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Connexion avec Twitter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Login using %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Connexion avec %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+9"/>
|
||||
|
@ -1216,12 +1217,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+1"/>
|
||||
<source>A call is in progress. Log out?</source>
|
||||
<translation>Un appel est en cours. Se déconnecter ?</translation>
|
||||
<translation>Un appel est en cours. Se déconnecter ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Are you sure you want to log out?</source>
|
||||
<translation>Êtes-vous certain de vouloir vous déconnecter ?</translation>
|
||||
<translation>Êtes-vous certain de vouloir vous déconnecter ?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1230,7 +1231,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||
<location line="+34"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished">Échec de l'envoi du média. Veuillez réessayer.</translation>
|
||||
<translation>Échec de l'envoi du média. Veuillez réessayer.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1293,7 +1294,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+13"/>
|
||||
<source>%1 created and configured room: %2</source>
|
||||
<translation>%1 a créé et configuré le salon : %2</translation>
|
||||
<translation>%1 a créé et configuré le salon : %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
|
@ -1399,12 +1400,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+436"/>
|
||||
<source>Reason for removal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Raison de la suppression</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Enter reason for removal or hit enter for no reason:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Entrez la raison de la suppression, ou appuyez sur entrée pour l'omettre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
|
@ -1509,12 +1510,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+19"/>
|
||||
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify an unverified device now? (Please make sure you have one of those devices available.)</source>
|
||||
<translation>Pour permettre à d'autres utilisateurs de confirmer qu'un appareil est vraiment le vôtre, vous pouvez le vérifier. Cela permet également aux sauvegardes de clés de déchiffrement de fonctionner automatiquement sur ces appareils, pour ne pas perdre vos messages chiffrés. Vérifier un appareil maintenant ? (Vérifiez que celui-ci est à proximité).</translation>
|
||||
<translation>Pour permettre à d'autres utilisateurs de confirmer qu'un appareil est vraiment le vôtre, vous pouvez le vérifier. Cela permet également aux sauvegardes de clés de déchiffrement de fonctionner automatiquement sur ces appareils, pour ne pas perdre vos messages chiffrés. Vérifier un appareil maintenant ? (Vérifiez que celui-ci est à proximité).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?</source>
|
||||
<translation>Pour permettre aux autres utilisateurs de vérifier quels appareils de votre compte sont réellement les vôtres, vous pouvez les vérifier. Cela permet également à la sauvegarde des clés de fonctionner automatiquement. Vérifier %1 maintenant ?</translation>
|
||||
<translation>Pour permettre aux autres utilisateurs de vérifier quels appareils de votre compte sont réellement les vôtres, vous pouvez les vérifier. Cela permet également à la sauvegarde des clés de fonctionner automatiquement. Vérifier %1 maintenant ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
|
@ -1602,7 +1603,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location filename="../qml/voip/PlaceCall.qml" line="+41"/>
|
||||
<source>Place a call to %1?</source>
|
||||
<translation>Appeler %1 ?</translation>
|
||||
<translation>Appeler %1 ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
|
@ -1635,7 +1636,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location filename="../qml/delegates/Placeholder.qml" line="+12"/>
|
||||
<source>unimplemented event: </source>
|
||||
<translation>Évènement non implémenté : </translation>
|
||||
<translation>Évènement non implémenté : </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1801,7 +1802,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Cancel Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Annuler les modifications</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1850,7 +1851,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Tag room as:</source>
|
||||
<translation>Étiqueter le salon comme :</translation>
|
||||
<translation>Étiqueter le salon comme :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+14"/>
|
||||
|
@ -2077,7 +2078,8 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<location line="+1"/>
|
||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||
Please take note that it can't be disabled afterwards.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Le chiffrement est expérimental pour le moment, à vos risques et périls. <br>
|
||||
Veuillez noter qu'il ne pourra plus être désactivé par la suite.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
|
@ -2122,7 +2124,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Copied to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Copié dans le presse-papiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
|
@ -2132,17 +2134,17 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+19"/>
|
||||
<source>show less</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>montrer moins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>show more</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>montrer plus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
||||
<source>Failed to enable encryption: %1</source>
|
||||
<translation>Échec de l'activation du chiffrement : %1</translation>
|
||||
<translation>Échec de l'activation du chiffrement : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+249"/>
|
||||
|
@ -2162,13 +2164,13 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Error while reading file: %1</source>
|
||||
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
||||
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+32"/>
|
||||
<location line="+19"/>
|
||||
<source>Failed to upload image: %s</source>
|
||||
<translation>Échec de l'envoi de l'image : %s</translation>
|
||||
<translation>Échec de l'envoi de l'image : %s</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2194,22 +2196,22 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location filename="../qml/Root.qml" line="+319"/>
|
||||
<source>Please enter your login password to continue:</source>
|
||||
<translation>Veuillez saisir votre mot de passe pour continuer :</translation>
|
||||
<translation>Veuillez saisir votre mot de passe pour continuer :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Please enter a valid email address to continue:</source>
|
||||
<translation>Veuillez saisir un courriel valide pour continuer :</translation>
|
||||
<translation>Veuillez saisir un courriel valide pour continuer :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Please enter a valid phone number to continue:</source>
|
||||
<translation>Veuillez saisir un numéro de téléphone valide pour continuer :</translation>
|
||||
<translation>Veuillez saisir un numéro de téléphone valide pour continuer :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Please enter the token, which has been sent to you:</source>
|
||||
<translation>Veuillez entrer le jeton qui vous a été envoyé :</translation>
|
||||
<translation>Veuillez entrer le jeton qui vous a été envoyé :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
|
@ -2222,17 +2224,17 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location filename="../qml/voip/ScreenShare.qml" line="+29"/>
|
||||
<source>Share desktop with %1?</source>
|
||||
<translation>Partager le bureau avec %1  ?</translation>
|
||||
<translation>Partager le bureau avec %1 ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<source>Window:</source>
|
||||
<translation>Fenêtre :</translation>
|
||||
<translation>Fenêtre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+20"/>
|
||||
<source>Frame rate:</source>
|
||||
<translation>Fréquence d'images :</translation>
|
||||
<translation>Fréquence d'images :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
|
@ -2281,7 +2283,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Nheko could not connect to the secure storage to save encryption secrets to. This can have multiple reasons. Check if your D-Bus service is running and you have configured a service like KWallet, Gnome Keyring, KeePassXC or the equivalent for your platform. If you are having trouble, feel free to open an issue here: https://github.com/Nheko-Reborn/nheko/issues</source>
|
||||
<translation>Nheko n'a pas pu se connecter au stockage sécurisé afin d'y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet ; Gnome Keyring ; KeePassXC ou l'équivalent pour votre système. Si vous n'arrivez pas à résoudre le problème, n'hésitez pas à nous en faire part ici : https ://github.com/Nheko-Reborn/nheko/issues</translation>
|
||||
<translation>Nheko n'a pas pu se connecter au stockage sécurisé afin d'y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet ; Gnome Keyring ; KeePassXC ou l'équivalent pour votre système. Si vous n'arrivez pas à résoudre le problème, n'hésitez pas à nous en faire part ici : https ://github.com/Nheko-Reborn/nheko/issues</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2289,7 +2291,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location filename="../qml/SelfVerificationCheck.qml" line="+40"/>
|
||||
<source>This is your recovery key. You will need it to restore access to your encrypted messages and verification keys. Keep this safe. Don't share it with anyone and don't lose it! Do not pass go! Do not collect $200!</source>
|
||||
<translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l'accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas ! Ne passez pas par la case départ et ne recevez pas 20 000 francs !</translation>
|
||||
<translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l'accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas ! Ne passez pas par la case départ et ne recevez pas 20 000 francs !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+33"/>
|
||||
|
@ -2299,7 +2301,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<message>
|
||||
<location line="+9"/>
|
||||
<source>Failed to setup encryption: %1</source>
|
||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+22"/>
|
||||
|
@ -2310,8 +2312,8 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
|||
<location line="+10"/>
|
||||
<source>Hello and welcome to Matrix!
|
||||
It seems like you are new. Before you can securely encrypt your messages, we need to setup a few small things. You can either press accept immediately or adjust a few basic options. We also try to explain a few of the basics. You can skip those parts, but they might prove to be helpful!</source>
|
||||
<translation>Bonjour et bienvenue sur le réseau Matrix !
|
||||
Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d'expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite !</translation>
|
||||
<translation>Bonjour et bienvenue sur le réseau Matrix !
|
||||
Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d'expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+124"/>
|
||||
|
@ -2341,17 +2343,17 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
|||
<message>
|
||||
<location filename="../../src/encryption/SelfVerificationStatus.cpp" line="+43"/>
|
||||
<source>Failed to create keys for cross-signing!</source>
|
||||
<translation>Échec de la création des clés pour l'auto-vérification (cross-signing) !</translation>
|
||||
<translation>Échec de la création des clés pour l'auto-vérification (cross-signing) !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Failed to create keys for online key backup!</source>
|
||||
<translation>Échec de la création de clés pour la sauvegarde en ligne !</translation>
|
||||
<translation>Échec de la création de clés pour la sauvegarde en ligne !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+29"/>
|
||||
<source>Failed to create keys for secure server side secret storage!</source>
|
||||
<translation>Échec de la création des clés pour le stockage sécurisé côté serveur !</translation>
|
||||
<translation>Échec de la création des clés pour le stockage sécurisé côté serveur !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+44"/>
|
||||
|
@ -2361,7 +2363,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
|||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Encryption setup failed: %1</source>
|
||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+140"/>
|
||||
|
@ -2436,7 +2438,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
|||
<message>
|
||||
<location line="+15"/>
|
||||
<source>Verification successful! Both sides verified their devices!</source>
|
||||
<translation>Vérification réussie ! Les deux côtés ont vérifié leur appareil !</translation>
|
||||
<translation>Vérification réussie ! Les deux côtés ont vérifié leur appareil !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+14"/>
|
||||
|
@ -2450,13 +2452,13 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
|||
<location filename="../../src/timeline/TimelineModel.cpp" line="+1256"/>
|
||||
<location line="+17"/>
|
||||
<source>Message redaction failed: %1</source>
|
||||
<translation>Échec de la suppression du message : %1</translation>
|
||||
<translation>Échec de la suppression du message : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+74"/>
|
||||
<location line="+5"/>
|
||||
<source>Failed to encrypt event, sending aborted!</source>
|
||||
<translation>Échec du chiffrement de l'évènement, envoi abandonné !</translation>
|
||||
<translation>Échec du chiffrement de l'évènement, envoi abandonné !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+174"/>
|
||||
|
@ -2648,7 +2650,7 @@ Raison : %4</translation>
|
|||
<location line="+39"/>
|
||||
<source>%1 left after having already left!</source>
|
||||
<comment>This is a leave event after the user already left and shouldn't happen apart from state resets</comment>
|
||||
<translation>%1 a quitté le salon après l'avoir déjà quitté !</translation>
|
||||
<translation>%1 a quitté le salon après l'avoir déjà quitté !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
|
@ -2818,9 +2820,9 @@ Raison : %4</translation>
|
|||
<message numerus="yes">
|
||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||
<source>Upload %n file(s)</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform></numerusform>
|
||||
<numerusform></numerusform>
|
||||
<translation>
|
||||
<numerusform>Mettre en ligne un fichier</numerusform>
|
||||
<numerusform>Mettre en ligne %n fichiers</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -2945,7 +2947,7 @@ Raison : %4</translation>
|
|||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Error while reading file: %1</source>
|
||||
<translation>Erreur lors de la lecture du fichier  : %1</translation>
|
||||
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3062,12 +3064,12 @@ Raison : %4</translation>
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Open images with external program</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ouvrir les images avec un programme externe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Open videos with external program</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ouvrir les vidéos avec un programme externe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
|
@ -3361,18 +3363,19 @@ Le statut est affiché près de la date des messages.</translation>
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Notify about received messages when the client is not currently focused.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Notifier des messages reçus quand le client n'est pas la fenêtre active.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Change the appearance of user avatars in chats.
|
||||
OFF - square, ON - circle.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Changer l'apparence des images de profil dans les discussions.
|
||||
OFF - carré, ON - circulaire.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+60"/>
|
||||
<source>The key to verify your own devices. If it is cached, verifying one of your devices will mark it verified for all your other devices and for users that have verified you.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>La clef pour vérifier vos propres appareils. Si elle est en cache, vérifier un de vos appareils le marquera comme vérifié pour tous vos autres appareils et pour les utilisateurs qui vous ont vérifié.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-64"/>
|
||||
|
@ -3390,13 +3393,15 @@ Typiquement, l'icône de l'application est mise en évidence dans la b
|
|||
<location line="+2"/>
|
||||
<source>Opens images with an external program when tapping the image.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ouvre les images avec un programme externe au clic de l'image.
|
||||
Notez que si cette option est activée, les fichiers sont laissés déchiffrés sur le disque et doivent être supprimés manuellement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Opens videos with an external program when tapping the video.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ouvre les vidéos avec un programme externe au clic de la vidéo.
|
||||
Notez que si cette option est activée, les fichiers sont laissés déchiffrés sur le disque et doivent être supprimés manuellement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
@ -3490,7 +3495,7 @@ be blurred.</source>
|
|||
<message>
|
||||
<location line="-25"/>
|
||||
<source>Enter the passphrase to decrypt the file:</source>
|
||||
<translation>Entrez la phrase de passe pour déchiffrer le fichier :</translation>
|
||||
<translation>Entrez la phrase de passe pour déchiffrer le fichier :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
|
@ -3501,7 +3506,7 @@ be blurred.</source>
|
|||
<message>
|
||||
<location line="-8"/>
|
||||
<source>Enter passphrase to encrypt your session keys:</source>
|
||||
<translation>Entrez une phrase de passe pour chiffrer vos clés de session :</translation>
|
||||
<translation>Entrez une phrase de passe pour chiffrer vos clés de session :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+15"/>
|
||||
|
@ -3788,12 +3793,12 @@ be blurred.</source>
|
|||
<message>
|
||||
<location line="+5"/>
|
||||
<source>You: %1</source>
|
||||
<translation>Vous : %1</translation>
|
||||
<translation>Vous : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>%1: %2</source>
|
||||
<translation>%1 : %2</translation>
|
||||
<translation>%1 : %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
|
|
|
@ -1229,7 +1229,7 @@ Misalnya: https://server.my:8787</translation>
|
|||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||
<location line="+34"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished">Gagal untuk mengunggah media. Silakan coba lagi.</translation>
|
||||
<translation>Gagal untuk mengunggah media. Silakan coba lagi.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2815,8 +2815,8 @@ Alasan: %4</translation>
|
|||
<message numerus="yes">
|
||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||
<source>Upload %n file(s)</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform></numerusform>
|
||||
<translation>
|
||||
<numerusform>Unggah %n file</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -3387,13 +3387,15 @@ Ini biasanya menyebabkan ikon aplikasi di bilah tugas untuk beranimasi.</transla
|
|||
<location line="+2"/>
|
||||
<source>Opens images with an external program when tapping the image.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Membuka gambar dengan sebuah program eksternal ketika mengetuk pada gambar.
|
||||
Dicatat bahwa ketika opsi ini NYALA, file yang terbuka ditinggal tidak terenkripsi pada disk dan harus dihapus secara manual.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Opens videos with an external program when tapping the video.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Membuka video dengan sebuah program eksternal ketika mengetuk pada video.
|
||||
Dicatat bahwa ketika opsi ini NYALA, file yang terbuka ditinggal tidak terenkripsi pada disk dan harus dihapus secara manual.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
|
|
@ -436,12 +436,12 @@
|
|||
<message>
|
||||
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
||||
<source>Room Settings</source>
|
||||
<translation type="unfinished">Kamerinstellingen</translation>
|
||||
<translation>Kamerinstellingen</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location line="+94"/>
|
||||
<source>%n member(s)</source>
|
||||
<translation type="unfinished">
|
||||
<translation>
|
||||
<numerusform>%n deelnemer</numerusform>
|
||||
<numerusform>%n deelnemers</numerusform>
|
||||
</translation>
|
||||
|
@ -449,134 +449,134 @@
|
|||
<message>
|
||||
<location line="+65"/>
|
||||
<source>SETTINGS</source>
|
||||
<translation type="unfinished">INSTELLINGEN</translation>
|
||||
<translation>INSTELLINGEN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Notifications</source>
|
||||
<translation type="unfinished">Meldingen</translation>
|
||||
<translation>Meldingen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Muted</source>
|
||||
<translation type="unfinished">Gedempt</translation>
|
||||
<translation>Gedempt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Mentions only</source>
|
||||
<translation type="unfinished">Alleen vermeldingen</translation>
|
||||
<translation>Alleen vermeldingen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>All messages</source>
|
||||
<translation type="unfinished">Alle berichten</translation>
|
||||
<translation>Alle berichten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Room access</source>
|
||||
<translation type="unfinished">Kamertoegang</translation>
|
||||
<translation>Kamertoegang</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
<source>Anyone and guests</source>
|
||||
<translation type="unfinished">Iedereen (inclusief gasten)</translation>
|
||||
<translation>Iedereen (inclusief gasten)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Anyone</source>
|
||||
<translation type="unfinished">Iedereen</translation>
|
||||
<translation>Iedereen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>Invited users</source>
|
||||
<translation type="unfinished">Uitgenodigde gebruikers</translation>
|
||||
<translation>Uitgenodigde gebruikers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>By knocking</source>
|
||||
<translation type="unfinished">Door aan te kloppen</translation>
|
||||
<translation>Door aan te kloppen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Restricted by membership in other rooms</source>
|
||||
<translation type="unfinished">Beperkt door deelname aan andere kamers</translation>
|
||||
<translation>Beperkt door deelname aan andere kamers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
<source>Encryption</source>
|
||||
<translation type="unfinished">Versleuteling</translation>
|
||||
<translation>Versleuteling</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+21"/>
|
||||
<source>End-to-End Encryption</source>
|
||||
<translation type="unfinished">Eind-tot-eind versleuteling</translation>
|
||||
<translation>Eind-tot-eind versleuteling</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||
Please take note that it can't be disabled afterwards.</source>
|
||||
<translation type="unfinished">Versleuteling is momenteel experimenteel en dingen gaan misschien stuk. <br>
|
||||
<translation>Versleuteling is momenteel experimenteel en dingen gaan misschien stuk. <br>
|
||||
Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Sticker & Emote Settings</source>
|
||||
<translation type="unfinished">Sticker & Emoji instellingen</translation>
|
||||
<translation>Sticker & Emoji instellingen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Change</source>
|
||||
<translation type="unfinished">Bewerken</translation>
|
||||
<translation>Bewerken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Change what packs are enabled, remove packs or create new ones</source>
|
||||
<translation type="unfinished">Verander welke afbeeldingspakketten zijn ingeschakeld, verwijder ze of voeg nieuwe toe</translation>
|
||||
<translation>Verander welke afbeeldingspakketten zijn ingeschakeld, verwijder ze of voeg nieuwe toe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Hidden events</source>
|
||||
<translation type="unfinished">Verborgen gebeurtenissen</translation>
|
||||
<translation>Verborgen gebeurtenissen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<source>Configure</source>
|
||||
<translation type="unfinished">Instellen</translation>
|
||||
<translation>Instellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Select events to hide in this room</source>
|
||||
<translation type="unfinished">Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation>
|
||||
<translation>Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>INFO</source>
|
||||
<translation type="unfinished">INFO</translation>
|
||||
<translation>INFO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Internal ID</source>
|
||||
<translation type="unfinished">Interne ID</translation>
|
||||
<translation>Interne ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Copied to clipboard</source>
|
||||
<translation type="unfinished">Gekopieerd naar klembord</translation>
|
||||
<translation>Gekopieerd naar klembord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>Room Version</source>
|
||||
<translation type="unfinished">Kamerversie</translation>
|
||||
<translation>Kamerversie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>show less</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>minder tonen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>show more</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>meer tonen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1231,7 +1231,7 @@ Voorbeeld: https://mijnserver.nl:8787</translation>
|
|||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||
<location line="+34"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished">Het is niet is gelukt om de media te versturen. Probeer het a.u.b. opnieuw.</translation>
|
||||
<translation>Het is niet is gelukt om de media te versturen. Probeer het a.u.b. opnieuw.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1802,7 +1802,7 @@ Voorbeeld: https://mijnserver.nl:8787</translation>
|
|||
<message>
|
||||
<location line="+16"/>
|
||||
<source>Cancel Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bewerken annuleren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2134,12 +2134,12 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat
|
|||
<message>
|
||||
<location line="+19"/>
|
||||
<source>show less</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>minder tonen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+0"/>
|
||||
<source>show more</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>meer tonen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
||||
|
@ -2820,9 +2820,9 @@ Reden: %4</translation>
|
|||
<message numerus="yes">
|
||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||
<source>Upload %n file(s)</source>
|
||||
<translation type="unfinished">
|
||||
<numerusform></numerusform>
|
||||
<numerusform></numerusform>
|
||||
<translation>
|
||||
<numerusform>Bestand versturen</numerusform>
|
||||
<numerusform>%n bestanden versturen</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -3064,12 +3064,12 @@ Reden: %4</translation>
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Open images with external program</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Open afbeeldingen met externe applicatie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Open videos with external program</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Open videos met externe applicatie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
|
@ -3393,13 +3393,15 @@ Meestal zorgt dit dat het icoon in de taakbalk op een manier animeert of iets de
|
|||
<location line="+2"/>
|
||||
<source>Opens images with an external program when tapping the image.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Opent afbeeldingen met een externe applicatie wanneer op een afbeelding geklikt wordt.
|
||||
Let up dat als deze instelling AAN staat, geopende afbeeldingen zonder versleuteling opgeslagen worden en met de hand moeten worden opgeruimd.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Opens videos with an external program when tapping the video.
|
||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Opent videos met een externe applicatie wanneer op een afbeelding geklikt wordt.
|
||||
Let up dat als deze instelling AAN staat, geopende videos zonder versleuteling opgeslagen worden en met de hand moeten worden opgeruimd.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
|
|
@ -56,7 +56,8 @@
|
|||
<url type="homepage">https://github.com/Nheko-Reborn/nheko</url>
|
||||
<update_contact>https://github.com/Nheko-Reborn</update_contact>
|
||||
<releases>
|
||||
<release date="2021-03-09" version="0.9.2"/>
|
||||
<release date="2022-03-25" version="0.9.3"/>
|
||||
<release date="2022-03-09" version="0.9.2"/>
|
||||
<release date="2021-12-21" version="0.9.1"/>
|
||||
<release date="2021-11-19" version="0.9.0"/>
|
||||
<release date="2021-04-23" version="0.8.2"/>
|
||||
|
|
|
@ -68,7 +68,7 @@ Item {
|
|||
hoverEnabled: true
|
||||
visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || hovered)
|
||||
x: attached ? attachedPos.x : 0
|
||||
y: attached ? attachedPos.y + Nheko.paddingMedium : 0
|
||||
y: attached ? attachedPos.y + Nheko.paddingSmall : 0
|
||||
z: 10
|
||||
|
||||
background: Rectangle {
|
||||
|
@ -362,7 +362,7 @@ Item {
|
|||
|
||||
}
|
||||
|
||||
delegate: ItemDelegate {
|
||||
delegate: Item {
|
||||
id: wrapper
|
||||
|
||||
required property double proportionalHeight
|
||||
|
@ -407,8 +407,71 @@ Item {
|
|||
width: chat.delegateMaxWidth
|
||||
height: section.active ? section.height + timelinerow.height : timelinerow.height
|
||||
|
||||
hoverEnabled: true
|
||||
Loader {
|
||||
id: section
|
||||
|
||||
property int parentWidth: parent.width
|
||||
property string userId: wrapper.userId
|
||||
property string previousMessageUserId: wrapper.previousMessageUserId
|
||||
property string day: wrapper.day
|
||||
property string previousMessageDay: wrapper.previousMessageDay
|
||||
property bool previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent
|
||||
property bool isStateEvent: wrapper.isStateEvent
|
||||
property bool isSender: wrapper.isSender
|
||||
property string userName: wrapper.userName
|
||||
property date timestamp: wrapper.timestamp
|
||||
|
||||
z: 4
|
||||
active: previousMessageUserId !== undefined && previousMessageUserId !== userId || previousMessageDay !== day || previousMessageIsStateEvent !== isStateEvent
|
||||
//asynchronous: true
|
||||
sourceComponent: sectionHeader
|
||||
visible: status == Loader.Ready
|
||||
}
|
||||
|
||||
TimelineRow {
|
||||
id: timelinerow
|
||||
|
||||
proportionalHeight: wrapper.proportionalHeight
|
||||
type: chat.model, wrapper.type
|
||||
typeString: wrapper.typeString
|
||||
originalWidth: wrapper.originalWidth
|
||||
blurhash: wrapper.blurhash
|
||||
body: wrapper.body
|
||||
formattedBody: wrapper.formattedBody
|
||||
eventId: chat.model, wrapper.eventId
|
||||
filename: wrapper.filename
|
||||
filesize: wrapper.filesize
|
||||
url: wrapper.url
|
||||
thumbnailUrl: wrapper.thumbnailUrl
|
||||
duration: wrapper.duration
|
||||
isOnlyEmoji: wrapper.isOnlyEmoji
|
||||
isSender: wrapper.isSender
|
||||
isEncrypted: wrapper.isEncrypted
|
||||
isEditable: wrapper.isEditable
|
||||
isEdited: wrapper.isEdited
|
||||
isStateEvent: wrapper.isStateEvent
|
||||
replyTo: wrapper.replyTo
|
||||
userId: wrapper.userId
|
||||
userName: wrapper.userName
|
||||
roomTopic: wrapper.roomTopic
|
||||
roomName: wrapper.roomName
|
||||
callType: wrapper.callType
|
||||
reactions: wrapper.reactions
|
||||
trustlevel: wrapper.trustlevel
|
||||
encryptionError: wrapper.encryptionError
|
||||
timestamp: wrapper.timestamp
|
||||
status: wrapper.status
|
||||
relatedEventCacheBuster: wrapper.relatedEventCacheBuster
|
||||
y: section.visible && section.active ? section.y + section.height : 0
|
||||
|
||||
onHoveredChanged: {
|
||||
if (!Settings.mobileMode && hovered) {
|
||||
if (!messageActions.hovered) {
|
||||
messageActions.attached = timelinerow;
|
||||
messageActions.model = timelinerow;
|
||||
}
|
||||
}
|
||||
}
|
||||
background: Rectangle {
|
||||
id: scrollHighlight
|
||||
|
||||
|
@ -455,75 +518,6 @@ Item {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: section
|
||||
|
||||
property int parentWidth: parent.width
|
||||
property string userId: wrapper.userId
|
||||
property string previousMessageUserId: wrapper.previousMessageUserId
|
||||
property string day: wrapper.day
|
||||
property string previousMessageDay: wrapper.previousMessageDay
|
||||
property bool previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent
|
||||
property bool isStateEvent: wrapper.isStateEvent
|
||||
property bool isSender: wrapper.isSender
|
||||
property string userName: wrapper.userName
|
||||
property date timestamp: wrapper.timestamp
|
||||
|
||||
z: 4
|
||||
active: previousMessageUserId !== undefined && previousMessageUserId !== userId || previousMessageDay !== day || previousMessageIsStateEvent !== isStateEvent
|
||||
//asynchronous: true
|
||||
sourceComponent: sectionHeader
|
||||
visible: status == Loader.Ready
|
||||
}
|
||||
|
||||
TimelineRow {
|
||||
id: timelinerow
|
||||
|
||||
hovered: messageActions.hovered ? (messageActions.model != undefined && messageActions.model == timelinerow) : wrapper.hovered
|
||||
|
||||
proportionalHeight: wrapper.proportionalHeight
|
||||
type: chat.model, wrapper.type
|
||||
typeString: wrapper.typeString
|
||||
originalWidth: wrapper.originalWidth
|
||||
blurhash: wrapper.blurhash
|
||||
body: wrapper.body
|
||||
formattedBody: wrapper.formattedBody
|
||||
eventId: chat.model, wrapper.eventId
|
||||
filename: wrapper.filename
|
||||
filesize: wrapper.filesize
|
||||
url: wrapper.url
|
||||
thumbnailUrl: wrapper.thumbnailUrl
|
||||
duration: wrapper.duration
|
||||
isOnlyEmoji: wrapper.isOnlyEmoji
|
||||
isSender: wrapper.isSender
|
||||
isEncrypted: wrapper.isEncrypted
|
||||
isEditable: wrapper.isEditable
|
||||
isEdited: wrapper.isEdited
|
||||
isStateEvent: wrapper.isStateEvent
|
||||
replyTo: wrapper.replyTo
|
||||
userId: wrapper.userId
|
||||
userName: wrapper.userName
|
||||
roomTopic: wrapper.roomTopic
|
||||
roomName: wrapper.roomName
|
||||
callType: wrapper.callType
|
||||
reactions: wrapper.reactions
|
||||
trustlevel: wrapper.trustlevel
|
||||
encryptionError: wrapper.encryptionError
|
||||
timestamp: wrapper.timestamp
|
||||
status: wrapper.status
|
||||
relatedEventCacheBuster: wrapper.relatedEventCacheBuster
|
||||
y: section.visible && section.active ? section.y + section.height : 0
|
||||
|
||||
onHoveredChanged: {
|
||||
if (!Settings.mobileMode && hovered) {
|
||||
if (!messageActions.hovered) {
|
||||
messageActions.attached = timelinerow;
|
||||
messageActions.model = timelinerow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Connections {
|
||||
|
@ -729,10 +723,12 @@ Item {
|
|||
|
||||
property string text
|
||||
property string link
|
||||
property string eventId
|
||||
|
||||
function show(text_, link_) {
|
||||
function show(text_, link_, eventId_) {
|
||||
text = text_;
|
||||
link = link_;
|
||||
eventId = eventId_;
|
||||
open();
|
||||
}
|
||||
|
||||
|
@ -754,7 +750,7 @@ Item {
|
|||
visible: true
|
||||
enabled: visible
|
||||
text: qsTr("&Go to quoted message")
|
||||
onTriggered: chat.model.showEvent(eventId)
|
||||
onTriggered: chat.model.showEvent(replyContextMenu.eventId)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
import "./delegates"
|
||||
import "./emoji"
|
||||
import QtQuick 2.12
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.2
|
||||
import QtQuick.Window 2.13
|
||||
import im.nheko 1.0
|
||||
|
||||
Item {
|
||||
AbstractButton {
|
||||
id: r
|
||||
|
||||
required property double proportionalHeight
|
||||
|
@ -46,7 +46,7 @@ Item {
|
|||
required property int status
|
||||
required property int relatedEventCacheBuster
|
||||
|
||||
property bool hovered: false
|
||||
hoverEnabled: true
|
||||
|
||||
width: parent.width
|
||||
height: row.height+(reactionRow.height > 0 ? reactionRow.height-2 : 0 )
|
||||
|
@ -55,21 +55,44 @@ Item {
|
|||
color: (Settings.messageHoverHighlight && hovered) ? Nheko.colors.alternateBase : "transparent"
|
||||
anchors.fill: parent
|
||||
// this looks better without margins
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.RightButton
|
||||
onSingleTapped: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
onLongPressed: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
||||
onDoubleTapped: chat.model.reply = eventId
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
Control {
|
||||
|
||||
onPressAndHold: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
||||
onDoubleClicked: chat.model.reply = eventId
|
||||
|
||||
DragHandler {
|
||||
id: draghandler
|
||||
yAxis.enabled: false
|
||||
xAxis.maximum: 100
|
||||
xAxis.minimum: -100
|
||||
onActiveChanged: {
|
||||
if(!active && (x < -70 || x > 70))
|
||||
chat.model.reply = eventId
|
||||
}
|
||||
}
|
||||
states: State {
|
||||
name: "dragging"
|
||||
when: draghandler.active
|
||||
}
|
||||
transitions: Transition {
|
||||
from: "dragging"
|
||||
to: ""
|
||||
PropertyAnimation {
|
||||
target: r
|
||||
properties: "x"
|
||||
easing.type: Easing.InOutQuad
|
||||
to: 0
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: row
|
||||
property bool bubbleOnRight : isSender && Settings.bubbles
|
||||
anchors.leftMargin: isStateEvent || Settings.smallAvatars? 0 : Nheko.avatarSize+8 // align bubble with section header
|
||||
|
@ -78,20 +101,21 @@ Item {
|
|||
anchors.horizontalCenter: isStateEvent? parent.horizontalCenter : undefined
|
||||
property int maxWidth: (parent.width-(Settings.smallAvatars || isStateEvent? 0 : Nheko.avatarSize+8))*(Settings.bubbles && !isStateEvent? 0.9 : 1)
|
||||
width: Settings.bubbles? Math.min(maxWidth,Math.max(reply.implicitWidth+8,contentItem.implicitWidth+metadata.width+20)) : maxWidth
|
||||
height: msg.height+msg.anchors.margins*2
|
||||
|
||||
leftPadding: 4
|
||||
rightPadding: (Settings.bubbles && !isStateEvent)? 4: 2
|
||||
topPadding: rightPadding
|
||||
bottomPadding: topPadding
|
||||
background: Rectangle {
|
||||
property color userColor: TimelineManager.userColor(userId, Nheko.colors.base)
|
||||
property color bgColor: Nheko.colors.base
|
||||
color: Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2))
|
||||
color: (Settings.bubbles && !isStateEvent) ? Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2)) : "#00000000"
|
||||
radius: 4
|
||||
visible: Settings.bubbles && !isStateEvent
|
||||
}
|
||||
|
||||
contentItem: GridLayout {
|
||||
GridLayout {
|
||||
anchors {
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
margins: (Settings.bubbles && ! isStateEvent)? 4 : 2
|
||||
leftMargin: 4
|
||||
}
|
||||
id: msg
|
||||
rowSpacing: 0
|
||||
columnSpacing: 2
|
||||
|
|
|
@ -33,6 +33,8 @@ Item {
|
|||
fullHeight = height
|
||||
}
|
||||
|
||||
clip: true
|
||||
|
||||
Label {
|
||||
visible: !room && !TimelineManager.isInitialSync && (!roomPreview || !roomPreview.roomid)
|
||||
anchors.centerIn: parent
|
||||
|
|
|
@ -131,6 +131,7 @@ Container {
|
|||
interactive: singlePageMode
|
||||
highlightMoveDuration: container.singlePageMode ? 200 : 0
|
||||
currentIndex: container.singlePageMode ? container.pageIndex : 0
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,9 +5,10 @@
|
|||
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Window 2.15
|
||||
import QtQuick.Controls 2.3
|
||||
import im.nheko 1.0
|
||||
|
||||
Item {
|
||||
AbstractButton {
|
||||
required property int type
|
||||
required property int originalWidth
|
||||
required property double proportionalHeight
|
||||
|
@ -24,6 +25,7 @@ Item {
|
|||
implicitWidth: Math.round(tempWidth*Math.min((timelineView.fullHeight/divisor)/(tempWidth*proportionalHeight), 1))
|
||||
width: Math.min(parent.width,implicitWidth)
|
||||
height: width*proportionalHeight
|
||||
hoverEnabled: true
|
||||
|
||||
property int metadataWidth
|
||||
property bool fitsMetadata: (parent.width - width) > metadataWidth+4
|
||||
|
@ -61,28 +63,17 @@ Item {
|
|||
visible: loaded
|
||||
anchors.fill: parent
|
||||
roomm: room
|
||||
play: !Settings.animateImagesOnHover || mouseArea.hovered
|
||||
play: !Settings.animateImagesOnHover || parent.hovered
|
||||
eventId: parent.eventId
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
//enabled: type == MtxEvent.ImageMessage && (img.status == Image.Ready || mxcimage.loaded)
|
||||
onSingleTapped: {
|
||||
Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId);
|
||||
eventPoint.accepted = true;
|
||||
}
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: mouseArea
|
||||
}
|
||||
onClicked :Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId);
|
||||
|
||||
Item {
|
||||
id: overlay
|
||||
|
||||
anchors.fill: parent
|
||||
visible: mouseArea.hovered
|
||||
visible: parent.hovered
|
||||
|
||||
Rectangle {
|
||||
id: container
|
||||
|
|
|
@ -11,7 +11,7 @@ import QtQuick.Window 2.13
|
|||
import im.nheko 1.0
|
||||
import "../"
|
||||
|
||||
Item {
|
||||
AbstractButton {
|
||||
id: r
|
||||
|
||||
property color userColor: "red"
|
||||
|
@ -57,6 +57,16 @@ Item {
|
|||
color: TimelineManager.userColor(userId, Nheko.colors.base)
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
let link = reply.child.linkAt != undefined && reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight);
|
||||
if (link) {
|
||||
Nheko.openLink(link)
|
||||
} else {
|
||||
room.showEvent(r.eventId)
|
||||
}
|
||||
}
|
||||
onPressAndHold: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight), r.eventId)
|
||||
|
||||
ColumnLayout {
|
||||
id: replyContainer
|
||||
|
||||
|
@ -64,23 +74,9 @@ Item {
|
|||
width: parent.width - 4
|
||||
spacing: 0
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onSingleTapped: {
|
||||
let link = reply.child.linkAt != undefined && reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight);
|
||||
if (link) {
|
||||
Nheko.openLink(link)
|
||||
} else {
|
||||
room.showEvent(r.eventId)
|
||||
}
|
||||
}
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.RightButton
|
||||
onLongPressed: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight))
|
||||
onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight))
|
||||
onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight), r.eventId)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
|
|
|
@ -3708,8 +3708,10 @@ Cache::getImagePacks(const std::string &room_id, std::optional<bool> stickers)
|
|||
auto addPack = [&infos, stickers](const mtx::events::msc2545::ImagePack &pack,
|
||||
const std::string &source_room,
|
||||
const std::string &state_key) {
|
||||
bool pack_matches = !stickers.has_value() ||
|
||||
(stickers.value() ? pack.pack->is_sticker() : pack.pack->is_emoji());
|
||||
bool pack_is_sticker = pack.pack ? pack.pack->is_sticker() : true;
|
||||
bool pack_is_emoji = pack.pack ? pack.pack->is_emoji() : true;
|
||||
bool pack_matches =
|
||||
!stickers.has_value() || (stickers.value() ? pack_is_sticker : pack_is_emoji);
|
||||
|
||||
ImagePackInfo info;
|
||||
info.source_room = source_room;
|
||||
|
|
|
@ -896,11 +896,18 @@ MediaUpload::startUpload()
|
|||
QByteArray ba;
|
||||
QBuffer buffer(&ba);
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
thumbnail_.save(&buffer, "PNG");
|
||||
thumbnail_.save(&buffer, "PNG", 0);
|
||||
if (ba.size() >= (data.size() - data.size() / 10)) {
|
||||
nhlog::ui()->info(
|
||||
"Thumbnail is not a lot smaller than original image, not uploading it");
|
||||
nhlog::ui()->debug(
|
||||
"\n Image size: {:9d}\nThumbnail size: {:9d}", data.size(), ba.size());
|
||||
} else {
|
||||
auto payload = std::string(ba.data(), ba.size());
|
||||
if (encrypt_) {
|
||||
mtx::crypto::BinaryBuf buf;
|
||||
std::tie(buf, thumbnailEncryptedFile) = mtx::crypto::encrypt_file(std::move(payload));
|
||||
std::tie(buf, thumbnailEncryptedFile) =
|
||||
mtx::crypto::encrypt_file(std::move(payload));
|
||||
payload = mtx::crypto::to_string(buf);
|
||||
}
|
||||
thumbnailSize_ = payload.size();
|
||||
|
@ -930,6 +937,7 @@ MediaUpload::startUpload()
|
|||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
auto payload = std::string(data.data(), data.size());
|
||||
if (encrypt_) {
|
||||
|
|
Loading…
Reference in a new issue