summary refs log tree commit diff
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/langs/nheko_de.ts346
-rw-r--r--resources/langs/nheko_el.ts314
-rw-r--r--resources/langs/nheko_en.ts356
-rw-r--r--resources/langs/nheko_fi.ts338
-rw-r--r--resources/langs/nheko_fr.ts314
-rw-r--r--resources/langs/nheko_nl.ts314
-rw-r--r--resources/langs/nheko_pl.ts328
-rw-r--r--resources/langs/nheko_ru.ts328
-rw-r--r--resources/langs/nheko_zh_CN.ts328
-rw-r--r--resources/qml/Avatar.qml51
-rw-r--r--resources/qml/EncryptionIndicator.qml24
-rw-r--r--resources/qml/ImageButton.qml29
-rw-r--r--resources/qml/MatrixText.qml33
-rw-r--r--resources/qml/StatusIndicator.qml38
-rw-r--r--resources/qml/TimelineRow.qml122
-rw-r--r--resources/qml/TimelineView.qml185
-rw-r--r--resources/qml/delegates/FileMessage.qml57
-rw-r--r--resources/qml/delegates/ImageMessage.qml23
-rw-r--r--resources/qml/delegates/MessageDelegate.qml55
-rw-r--r--resources/qml/delegates/NoticeMessage.qml8
-rw-r--r--resources/qml/delegates/Pill.qml14
-rw-r--r--resources/qml/delegates/Placeholder.qml7
-rw-r--r--resources/qml/delegates/PlayableMediaMessage.qml164
-rw-r--r--resources/qml/delegates/TextMessage.qml6
-rw-r--r--resources/res.qrc17
25 files changed, 2604 insertions, 1195 deletions
diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts

index e92bf966..59c6dffd 100644 --- a/resources/langs/nheko_de.ts +++ b/resources/langs/nheko_de.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="de"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>In Datei speichern</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>Hochladen des Bildes fehlgeschlagen. Bitte versuche es erneut.</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>Hochladen der Datei fehlgeschlagen. Bitte versuche es erneut.</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation> </message> <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>Hochladen der Audiodatei fehlgeschlagen. Bitte versuche es erneut.</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>Hochladen der Videodatei fehlgeschlagen. Bitte versuche es erneut.</translation> - </message> - <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Wiederherstellung des OLM Accounts fehlgeschlagen. Bitte logge dich erneut ein.</translation> </message> @@ -42,18 +19,18 @@ <translation>Gespeicherte Nachrichten konnten nicht wiederhergestellt werden. Bitte melde Dich erneut an.</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation>Fehler beim Setup der Verschlüsselungsschlüssel. Servermeldung: %1 %2. Bitte versuche es später erneut.</translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>Bitte melde dich erneut an: %1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>Raum konnte nicht erstellt werden: %1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Datei speichern</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Bild speichern</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation>Verschlüsselt</translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Teilnehmerliste</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation>gelöscht</translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation>Verschlüsselung aktiviert</translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation>unimplementiertes event: </translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation>keine Version gespeichert</translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Raum verlassen</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Akzeptieren</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>Verschlüsselt</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation>Fehlgeschlagen</translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>Erhalten</translation> + <location line="+1"/> + <source>Sent</source> + <translation>Gesendet</translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>Gelesen</translation> + <location line="+1"/> + <source>Received</source> + <translation>Empfangen</translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>Gesendet</translation> + <location line="+1"/> + <source>Read</source> + <translation>Gelesen</translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>Versende Datei</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Schreibe eine Nachricht…</translation> </message> @@ -375,7 +365,7 @@ <translation>Emoji</translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Datei auswählen</translation> </message> @@ -391,32 +381,9 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>Nachricht zurückziehen fehlgeschlagen: %1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation>Antworten</translation> - </message> - <message> - <location line="+11"/> - <source>Options</source> - <translation>Optionen</translation> - </message> -</context> -<context> - <name>TimelineView</name> - <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>Verschlüsselung aktiv</translation> - </message> + <name>TimelineModel</name> <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> <translation>-- verschlüsselter Event (keine Schlüssel zur Entschlüsselung gefunden) --</translation> @@ -440,16 +407,87 @@ <translation>-- Entschlüsselungsfehler (%1) --</translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> <translation>-- verschlüsselter Event (Unbekannter Eventtyp) --</translation> </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation>Nachricht zurückziehen fehlgeschlagen: %1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation>Bild speichern</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation>Video speichern</translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation>Audiodatei speichern</translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation>Datei speichern</translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation>Antworten</translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation>Optionen</translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation>Lesebestätigungen</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation>Als gelesen markieren</translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation>Zeige rohen Nachrichteninhalt</translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation>Nachricht löschen</translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation>Speichern als...</translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation>Kein Raum geöffnet</translation> + </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>Raumoptionen</translation> </message> @@ -515,7 +553,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Ins Benachrichtigungsfeld minimieren</translation> </message> @@ -531,6 +569,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation>Runde Profilbilder</translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Schreibbenachrichtigungen</translation> </message> @@ -605,7 +648,7 @@ <translation>ALLGEMEINES</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation>Öffne Sessions Datei</translation> </message> @@ -825,7 +868,7 @@ Medien-Größe: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Lesebestätigungen</translation> </message> @@ -951,7 +994,7 @@ Medien-Größe: %2 <translation>Aktivierung der Verschlüsselung fehlgeschlagen: %1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>Wähle einen Avatar</translation> </message> @@ -978,19 +1021,6 @@ Medien-Größe: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation>Dieser Raum</translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation>Alle Räume</translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1013,7 +1043,7 @@ Medien-Größe: %2 <translation>Gespräch beginnen</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>Geräte</translation> </message> @@ -1064,69 +1094,103 @@ Medien-Größe: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> - <translation>%1 einen Audioclip</translation> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> + <translation>Du hast eine Audiodatei gesendet.</translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> - <translation>%1 ein Bild</translation> + <source>%1 sent an audio clip</source> + <translation>%1 hat eine Audiodatei gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation>Du hast ein Bild gesendet.</translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> - <translation>%1 eine Datei</translation> + <source>%1 sent an image</source> + <translation>%1 hat ein Bild gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> + <translation>Du hast eine Datei gesendet.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a file</source> + <translation>%1 hat eine Datei gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation>Du hast ein Video gesendet.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation>%1 hat ein Video gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> + <translation>Du hast einen Sticker gesendet.</translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> - <translation>%1 einen Videoclip</translation> + <source>%1 sent a sticker</source> + <translation>%1 hat einen Sticker gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> + <translation>Du hast eine Benachrichtigung gesendet.</translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> - <translation>%1 einen Sticker</translation> + <source>%1 sent a notification</source> + <translation>%1 hat eine Benachrichtigung gesendet.</translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> + <translation>Du: %1</translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> - <translation>1% eine Benachrichtigung</translation> + <source>%1: %2</source> + <translation>%1: %2</translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> - <translation>1% eine verschüsselte Nachricht</translation> + <source>You sent an encrypted message</source> + <translation>Du hast eine verschlüsselte Nachricht gesendet.</translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> - <translation type="unfinished"></translation> + <location line="+3"/> + <source>%1 sent an encrypted message</source> + <translation>%1 hat eine verschlüsselte Nachricht gesendet.</translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> - <translation type="unfinished"></translation> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> + <translation>Dieser Raum</translation> + </message> + <message> + <location line="+1"/> + <source>All Rooms</source> + <translation>Alle Räume</translation> </message> </context> <context> <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> - <translation>Du</translation> - </message> - <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1146,7 +1210,7 @@ Medien-Größe: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation>Unbekannter Nachrichtentyp</translation> </message> diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index 700c3d57..fe65785b 100644 --- a/resources/langs/nheko_el.ts +++ b/resources/langs/nheko_el.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="el"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Αποθήκευση</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -42,18 +19,18 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation type="unfinished"></translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> - <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Αποθήκευση</translation> - </message> -</context> -<context> - <name>ImageItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Αποθήκευση Εικόνας</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Μέλη</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Βγές</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Αποδοχή</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> + <location line="+1"/> + <source>Sent</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> + <location line="+1"/> + <source>Received</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> + <location line="+1"/> + <source>Read</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Γράψε ένα μήνυμα...</translation> </message> @@ -375,7 +365,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Διάλεξε ένα αρχείο</translation> </message> @@ -391,65 +381,113 @@ </message> </context> <context> - <name>TimelineItem</name> + <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> + <source>-- Encrypted Event (No keys found for decryption) --</source> + <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>-- Decryption Error (failed to communicate with DB) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>-- Decryption Error (%1) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+25"/> + <source>-- Encrypted Event (Unknown event type) --</source> + <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+39"/> - <source>Reply</source> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Αποθήκευση Εικόνας</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <source>Options</source> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TimelineView</name> + <name>TimelineRow</name> <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> <translation type="unfinished"></translation> </message> <message> - <location line="+65"/> - <source>-- Encrypted Event (No keys found for decryption) --</source> - <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <location line="+14"/> + <source>Options</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <source>-- Decryption Error (failed to communicate with DB) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <location line="+12"/> + <source>Read receipts</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <location line="+4"/> + <source>Mark as read</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <source>-- Decryption Error (%1) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <location line="+3"/> + <source>View raw message</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <source>-- Encrypted Event (Unknown event type) --</source> - <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation type="unfinished"></translation> </message> @@ -515,7 +553,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Ελαχιστοποίηση</translation> </message> @@ -531,6 +569,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation type="unfinished"></translation> </message> @@ -605,7 +648,7 @@ <translation>ΓΕΝΙΚΑ</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation type="unfinished"></translation> </message> @@ -823,7 +866,7 @@ Media size: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation type="unfinished"></translation> </message> @@ -949,7 +992,7 @@ Media size: %2 <translation type="unfinished"></translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -976,19 +1019,6 @@ Media size: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1011,7 +1041,7 @@ Media size: %2 <translation type="unfinished"></translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -1062,69 +1092,103 @@ Media size: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1144,7 +1208,7 @@ Media size: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index edb95313..49ea7439 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="en"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Save File</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>Failed to upload image. Please try again.</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>Failed to upload file. Please try again.</translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>Failed to upload audio. Please try again.</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>Failed to upload video. Please try again.</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Failed to restore OLM account. Please login again.</translation> </message> @@ -42,18 +19,18 @@ <translation>Failed to restore save data. Please login again.</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>Please try to login again: %1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>Room creation failed: %1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> - <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Save File</translation> - </message> -</context> -<context> - <name>ImageItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Save image</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Room members</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation>no version stored</translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Leave room</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Accept</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>Encrypted</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>Delivered</translation> + <location line="+1"/> + <source>Sent</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>Seen</translation> + <location line="+1"/> + <source>Received</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>Sent</translation> + <location line="+1"/> + <source>Read</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>Send a file</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Write a message…</translation> </message> @@ -375,7 +365,7 @@ <translation>Emoji</translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Select a file</translation> </message> @@ -391,65 +381,113 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>Message redaction failed: %1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation>Reply</translation> - </message> - <message> - <location line="+11"/> - <source>Options</source> - <translation>Options</translation> - </message> -</context> -<context> - <name>TimelineView</name> + <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>Encryption is enabled</translation> - </message> - <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> - <translation>-- Encrypted Event (No keys found for decryption) --</translation> + <translation type="unfinished">-- Encrypted Event (No keys found for decryption) --</translation> </message> <message> <location line="+15"/> <source>-- Decryption Error (failed to communicate with DB) --</source> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> - <translation>-- Decryption Error (failed to communicate with DB) --</translation> + <translation type="unfinished">-- Decryption Error (failed to communicate with DB) --</translation> </message> <message> <location line="+19"/> <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> - <translation>-- Decryption Error (failed to retrieve megolm keys from db) --</translation> + <translation type="unfinished">-- Decryption Error (failed to retrieve megolm keys from db) --</translation> </message> <message> <location line="+12"/> <source>-- Decryption Error (%1) --</source> <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> - <translation>-- Decryption Error (%1) --</translation> + <translation type="unfinished">-- Decryption Error (%1) --</translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> - <translation>-- Encrypted Event (Unknown event type) --</translation> + <translation type="unfinished">-- Encrypted Event (Unknown event type) --</translation> + </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation type="unfinished">Message redaction failed: %1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Save image</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Read receipts</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>Room options</translation> </message> @@ -515,7 +553,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Minimize to tray</translation> </message> @@ -531,6 +569,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Typing notifications</translation> </message> @@ -605,7 +648,7 @@ <translation>GENERAL</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation>Open Sessions File</translation> </message> @@ -825,7 +868,7 @@ Media size: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Read receipts</translation> </message> @@ -953,7 +996,7 @@ Media size: %2 <translation>Failed to enable encryption: %1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>Select an avatar</translation> </message> @@ -980,19 +1023,6 @@ Media size: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation>This Room</translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation>All Rooms</translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1015,7 +1045,7 @@ Media size: %2 <translation>Start a conversation</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>Devices</translation> </message> @@ -1066,69 +1096,103 @@ Media size: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> - <translation>%1 an audio clip</translation> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> - <translation>%1 an image</translation> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> - <translation>%1 a file</translation> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> - <translation>%1 a video clip</translation> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> - <translation>%1 a sticker</translation> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> - <translation>%1 a notification</translation> + <source>%1: %2</source> + <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> - <translation>%1 an encrypted message</translation> + <source>You sent an encrypted message</source> + <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> - <translation>sent</translation> + <location line="+3"/> + <source>%1 sent an encrypted message</source> + <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> - <translation>sent</translation> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> + <translation type="unfinished">This Room</translation> + </message> + <message> + <location line="+1"/> + <source>All Rooms</source> + <translation type="unfinished">All Rooms</translation> </message> </context> <context> <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> - <translation>You</translation> - </message> - <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation>sent a file.</translation> </message> @@ -1148,7 +1212,7 @@ Media size: %2 <translation>sent a video.</translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation>Unknown Message Type</translation> </message> diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index 89eb33b7..4bb20e30 100644 --- a/resources/langs/nheko_fi.ts +++ b/resources/langs/nheko_fi.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="fi"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Tallenna tiedosto</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>Kuvan lähettäminen epäonnistui. Ole hyvä ja yritä uudelleen.</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>Tiedoston lähettäminen epäonnistui. Ole hyvä ja yritä uudelleen.</translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>Äänitiedoston lähettäminen epäonnistui. Ole hyvä ja yritä uudelleen.</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>Videon lähettäminen epäonnistui. Ole hyvä ja yritä uudelleen.</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>OLM-tilin palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation> </message> @@ -42,18 +19,18 @@ <translation>Tallennettujen tietojen palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation>Salausavainten lähetys epäonnistui. Palvelimen vastaus: %1 %2. Ole hyvä ja yritä uudelleen myöhemmin.</translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>Huoneen luominen epäonnistui: %1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Tallenna tiedosto</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Tallenna kuva</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Huoneen jäsenet</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation>ei tallennettua versiota</translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Poistu huoneesta</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Hyväksy</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>Salattu</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>Toimitettu</translation> + <location line="+1"/> + <source>Sent</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>Luettu</translation> + <location line="+1"/> + <source>Received</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>Lähetetty</translation> + <location line="+1"/> + <source>Read</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>Lähetä tiedosto</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Kirjoita viesti…</translation> </message> @@ -375,7 +365,7 @@ <translation>Emoji</translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Valitse tiedosto</translation> </message> @@ -391,65 +381,113 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>Viestin poisto epäonnistui: %1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation>Vastaa</translation> - </message> - <message> - <location line="+11"/> - <source>Options</source> - <translation>Asetukset</translation> - </message> -</context> -<context> - <name>TimelineView</name> + <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>Salaus on käytössä</translation> - </message> - <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> - <translation>-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation> + <translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation> </message> <message> <location line="+15"/> <source>-- Decryption Error (failed to communicate with DB) --</source> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> - <translation>-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation> + <translation type="unfinished">-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation> </message> <message> <location line="+19"/> <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> - <translation>-- Virhe purkaessa salausta (megolm-avaimien hakeminen tietokannasta epäonnistui) --</translation> + <translation type="unfinished">-- Virhe purkaessa salausta (megolm-avaimien hakeminen tietokannasta epäonnistui) --</translation> </message> <message> <location line="+12"/> <source>-- Decryption Error (%1) --</source> <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> - <translation>-- Virhe purkaessa salausta (%1) --</translation> + <translation type="unfinished">-- Virhe purkaessa salausta (%1) --</translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> - <translation>-- Salattu viesti (tuntematon viestityyppi) --</translation> + <translation type="unfinished">-- Salattu viesti (tuntematon viestityyppi) --</translation> + </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation type="unfinished">Viestin poisto epäonnistui: %1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Tallenna kuva</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Lukukuittaukset</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>Huonevaihtoehdot</translation> </message> @@ -515,7 +553,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Pienennä ilmoitusalueelle</translation> </message> @@ -531,6 +569,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Kirjoitusilmoitukset</translation> </message> @@ -605,7 +648,7 @@ <translation>YLEISET ASETUKSET</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation>Avaa Istuntoavaintiedosto</translation> </message> @@ -825,7 +868,7 @@ Median koko: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Lukukuittaukset</translation> </message> @@ -953,7 +996,7 @@ Median koko: %2 <translation>Salauksen aktivointi epäonnistui: %1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>Valitse profiilikuva</translation> </message> @@ -980,19 +1023,6 @@ Median koko: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1015,7 +1045,7 @@ Median koko: %2 <translation>Aloita keskustelu</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>Laitteet</translation> </message> @@ -1066,69 +1096,103 @@ Median koko: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> - <translation>Sinä</translation> - </message> - <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1148,7 +1212,7 @@ Median koko: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 42f82b0f..8ef22268 100644 --- a/resources/langs/nheko_fr.ts +++ b/resources/langs/nheko_fr.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="fr"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Enregistrer le fichier</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -42,18 +19,18 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation type="unfinished"></translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Enregistrer le fichier</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Enregistrer l&apos;image</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Membres du salon</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -278,7 +268,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -286,12 +276,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Quitter le salon</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Accepter</translation> </message> @@ -332,36 +322,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> + <location line="+1"/> + <source>Sent</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> + <location line="+1"/> + <source>Received</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> + <location line="+1"/> + <source>Read</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Écrivez un message...</translation> </message> @@ -376,7 +366,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Sélectionnez un fichier</translation> </message> @@ -392,65 +382,113 @@ </message> </context> <context> - <name>TimelineItem</name> + <name>TimelineModel</name> + <message> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> + <source>-- Encrypted Event (No keys found for decryption) --</source> + <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>-- Decryption Error (failed to communicate with DB) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>-- Decryption Error (%1) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> + <location line="+25"/> + <source>-- Encrypted Event (Unknown event type) --</source> + <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+39"/> - <source>Reply</source> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Enregistrer l&apos;image</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <source>Options</source> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TimelineView</name> + <name>TimelineRow</name> <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> <translation type="unfinished"></translation> </message> <message> - <location line="+65"/> - <source>-- Encrypted Event (No keys found for decryption) --</source> - <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <location line="+14"/> + <source>Options</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <source>-- Decryption Error (failed to communicate with DB) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Accusés de lecture</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <location line="+3"/> + <source>View raw message</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <source>-- Decryption Error (%1) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <location line="+4"/> + <source>Redact message</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <source>-- Encrypted Event (Unknown event type) --</source> - <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation type="unfinished"></translation> </message> @@ -516,7 +554,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Réduire à la barre des tâches</translation> </message> @@ -532,6 +570,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Notifications d&apos;écriture</translation> </message> @@ -606,7 +649,7 @@ <translation>GÉNÉRAL</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation type="unfinished"></translation> </message> @@ -826,7 +869,7 @@ Taille du média : %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Accusés de lecture</translation> </message> @@ -952,7 +995,7 @@ Taille du média : %2 <translation type="unfinished"></translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -979,19 +1022,6 @@ Taille du média : %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1014,7 +1044,7 @@ Taille du média : %2 <translation type="unfinished"></translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -1065,69 +1095,103 @@ Taille du média : %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1147,7 +1211,7 @@ Taille du média : %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index 53840f82..aaeae41c 100644 --- a/resources/langs/nheko_nl.ts +++ b/resources/langs/nheko_nl.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="nl_NL"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Bestand opslaan</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -42,18 +19,18 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation type="unfinished"></translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Bestand opslaan</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Afbeelding opslaan</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Kamerleden</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Kamer verlaten</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Accepteren</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> + <location line="+1"/> + <source>Sent</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> + <location line="+1"/> + <source>Received</source> <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> + <location line="+1"/> + <source>Read</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Typ een bericht...</translation> </message> @@ -375,7 +365,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Kies een bestand</translation> </message> @@ -391,65 +381,113 @@ </message> </context> <context> - <name>TimelineItem</name> + <name>TimelineModel</name> + <message> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> + <source>-- Encrypted Event (No keys found for decryption) --</source> + <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>-- Decryption Error (failed to communicate with DB) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+19"/> + <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>-- Decryption Error (%1) --</source> + <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <translation type="unfinished"></translation> + </message> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> + <location line="+25"/> + <source>-- Encrypted Event (Unknown event type) --</source> + <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+39"/> - <source>Reply</source> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Afbeelding opslaan</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> <translation type="unfinished"></translation> </message> <message> - <location line="+11"/> - <source>Options</source> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>TimelineView</name> + <name>TimelineRow</name> <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> <translation type="unfinished"></translation> </message> <message> - <location line="+65"/> - <source>-- Encrypted Event (No keys found for decryption) --</source> - <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> + <location line="+14"/> + <source>Options</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> - <source>-- Decryption Error (failed to communicate with DB) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Leesbevestigingen</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> <translation type="unfinished"></translation> </message> <message> - <location line="+19"/> - <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> + <location line="+3"/> + <source>View raw message</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> - <source>-- Decryption Error (%1) --</source> - <comment>Placeholder, when the message can&apos;t be decrypted. In this case, the Olm decrytion returned an error, which is passed ad %1</comment> + <location line="+4"/> + <source>Redact message</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> - <source>-- Encrypted Event (Unknown event type) --</source> - <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation type="unfinished"></translation> </message> @@ -515,7 +553,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Minimaliseren naar systeemvak</translation> </message> @@ -531,6 +569,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Meldingen bij typen van berichten</translation> </message> @@ -605,7 +648,7 @@ <translation>ALGEMEEN</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation type="unfinished"></translation> </message> @@ -825,7 +868,7 @@ Mediagrootte: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Leesbevestigingen</translation> </message> @@ -951,7 +994,7 @@ Mediagrootte: %2 <translation type="unfinished"></translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -978,19 +1021,6 @@ Mediagrootte: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1013,7 +1043,7 @@ Mediagrootte: %2 <translation type="unfinished"></translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -1064,69 +1094,103 @@ Mediagrootte: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1146,7 +1210,7 @@ Mediagrootte: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index f4f98dbb..b7c3878d 100644 --- a/resources/langs/nheko_pl.ts +++ b/resources/langs/nheko_pl.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="pl"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Zapisz plik</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>Nie udało się wysłać obrazu. Spróbuj ponownie.</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>Nie udało się wysłać pliku. Spróbuj ponownie.</translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>Nie udało się wysłać pliku dźwiękowego. Spróbuj ponownie.</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>Nie udało się wysłać filmu. Spróbuj ponownie.</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Nie udało się przywrócić konta OLM. Spróbuj zalogować się ponownie.</translation> </message> @@ -42,18 +19,18 @@ <translation>Nie udało się przywrócić zapisanych danych. Spróbuj zalogować się ponownie.</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>Spróbuj zalogować się ponownie: %1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>Tworzenie pokoju nie powiodło się: %1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Zapisz plik</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Zapisz obraz</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Członkowie pokoju</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Opuść pokój</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Akceptuj</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>Szyfrowana</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>Dostarczono</translation> + <location line="+1"/> + <source>Sent</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>Wyświetlona</translation> + <location line="+1"/> + <source>Received</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>Wysłana</translation> + <location line="+1"/> + <source>Read</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>Wyślij plik</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Napisz wiadomość…</translation> </message> @@ -375,7 +365,7 @@ <translation>Emoji</translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Wybierz plik</translation> </message> @@ -391,32 +381,9 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>Redagowanie wiadomości nie powiodło się: %1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineModel</name> <message> - <location line="+11"/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TimelineView</name> - <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>Szyfrowanie jest włączone</translation> - </message> - <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> <translation type="unfinished"></translation> @@ -440,16 +407,87 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> <translation type="unfinished"></translation> </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation type="unfinished">Redagowanie wiadomości nie powiodło się: %1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Zapisz obraz</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Potwierdzenia przeczytania</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>Ustawienia pokoju</translation> </message> @@ -516,7 +554,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Zminimalizuj do paska zadań</translation> </message> @@ -532,6 +570,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Powiadomienia o pisaniu</translation> </message> @@ -606,7 +649,7 @@ <translation>OGÓLNE</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation type="unfinished"></translation> </message> @@ -826,7 +869,7 @@ Rozmiar multimediów: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Potwierdzenia przeczytania</translation> </message> @@ -955,7 +998,7 @@ Rozmiar multimediów: %2 <translation>Nie udało się włączyć szyfrowania: %1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>Wybierz awatar</translation> </message> @@ -982,19 +1025,6 @@ Rozmiar multimediów: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1017,7 +1047,7 @@ Rozmiar multimediów: %2 <translation>Rozpocznij rozmowę</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>Urządzenia</translation> </message> @@ -1068,69 +1098,103 @@ Rozmiar multimediów: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1150,7 +1214,7 @@ Rozmiar multimediów: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 04285c72..3069cdad 100644 --- a/resources/langs/nheko_ru.ts +++ b/resources/langs/nheko_ru.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="ru"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>Сохранить файл</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>Не удалось загрузить изображение. Пожалуйста, попробуйте еще раз.</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>Не удалось загрузить файл. Пожалуйста, попробуйте еще раз.</translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>Не удалось загрузить аудио. Пожалуйста, попробуйте еще раз.</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>Не удалось загрузить видео. Пожалуйста, попробуйте еще раз.</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Не удалось восстановить учетную запись OLM. Пожалуйста, войдите снова.</translation> </message> @@ -42,18 +19,18 @@ <translation>Не удалось восстановить сохраненные данные. Пожалуйста, войдите снова.</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation>Не удалось настроить ключи шифрования. Ответ сервера:%1 %2. Пожалуйста, попробуйте позже.</translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>Повторите попытку входа: %1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>Не удалось создать комнату: %1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>Сохранить файл</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>Сохранить изображение</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>Участники комнаты</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>Покинуть комнату</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>Принять</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>Зашифровано</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>Доставлено</translation> + <location line="+1"/> + <source>Sent</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>Прочитано</translation> + <location line="+1"/> + <source>Received</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>Отправлено</translation> + <location line="+1"/> + <source>Read</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>Отправить файл</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>Написать сообщение...</translation> </message> @@ -375,7 +365,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>Выберите файл</translation> </message> @@ -391,32 +381,9 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>Ошибка редактирования сообщения: %1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineModel</name> <message> - <location line="+11"/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TimelineView</name> - <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>Шифрование включено</translation> - </message> - <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> <translation type="unfinished"></translation> @@ -440,16 +407,87 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> <translation type="unfinished"></translation> </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation type="unfinished">Ошибка редактирования сообщения: %1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">Сохранить изображение</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">Подтверждать прочтение</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>Настройки комнаты</translation> </message> @@ -516,7 +554,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>Сворачивать в системную панель</translation> </message> @@ -532,6 +570,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>Сообщать о наборе сообщения</translation> </message> @@ -606,7 +649,7 @@ <translation>ГЛАВНОЕ</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation>Открыть файл сеансов</translation> </message> @@ -827,7 +870,7 @@ Media size: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>Подтверждать прочтение</translation> </message> @@ -954,7 +997,7 @@ Media size: %2 <translation>Не удалось включить шифрование: %1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>Выберите аватар</translation> </message> @@ -981,19 +1024,6 @@ Media size: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1016,7 +1046,7 @@ Media size: %2 <translation>Начать разговор</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>Устройства</translation> </message> @@ -1067,69 +1097,103 @@ Media size: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1149,7 +1213,7 @@ Media size: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index 1e539e64..31ca068c 100644 --- a/resources/langs/nheko_zh_CN.ts +++ b/resources/langs/nheko_zh_CN.ts
@@ -2,37 +2,14 @@ <!DOCTYPE TS> <TS version="2.1" language="zh_CN"> <context> - <name>AudioItem</name> - <message> - <location filename="../../src/timeline/widgets/AudioItem.cpp" line="+118"/> - <source>Save File</source> - <translation>保存文件</translation> - </message> -</context> -<context> <name>ChatPage</name> <message> - <location filename="../../src/ChatPage.cpp" line="+330"/> - <source>Failed to upload image. Please try again.</source> - <translation>上传图像失败。请重试。</translation> - </message> - <message> - <location line="+45"/> - <source>Failed to upload file. Please try again.</source> - <translation>上传文件失败,请重试。</translation> - </message> - <message> - <location line="+43"/> - <source>Failed to upload audio. Please try again.</source> - <translation>上传音频失败。请重试。</translation> - </message> - <message> - <location line="+42"/> - <source>Failed to upload video. Please try again.</source> - <translation>上传视频失败。请重试。</translation> + <location filename="../../src/ChatPage.cpp" line="+346"/> + <source>Failed to upload media. Please try again.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+380"/> + <location line="+389"/> <source>Failed to restore OLM account. Please login again.</source> <translation>恢复 OLM 账户失败。请重新登录。</translation> </message> @@ -42,18 +19,18 @@ <translation>恢复保存的数据失败。请重新登录。</translation> </message> <message> - <location line="+198"/> + <location line="+181"/> <source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> <location line="+51"/> - <location line="+153"/> + <location line="+155"/> <source>Please try to login again: %1</source> <translation>请尝试再次登录:%1</translation> </message> <message> - <location line="-45"/> + <location line="-47"/> <source>Room creation failed: %1</source> <translation>创建聊天室失败:%1</translation> </message> @@ -116,19 +93,11 @@ </message> </context> <context> - <name>FileItem</name> + <name>EncryptionIndicator</name> <message> - <location filename="../../src/timeline/widgets/FileItem.cpp" line="+107"/> - <source>Save File</source> - <translation>保存文件</translation> - </message> -</context> -<context> - <name>ImageItem</name> - <message> - <location filename="../../src/timeline/widgets/ImageItem.cpp" line="+241"/> - <source>Save image</source> - <translation>保存图像</translation> + <location filename="../qml/EncryptionIndicator.qml" line="+11"/> + <source>Encrypted</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -200,7 +169,7 @@ <context> <name>MemberList</name> <message> - <location filename="../../src/dialogs/MemberList.cpp" line="+96"/> + <location filename="../../src/dialogs/MemberList.cpp" line="+89"/> <source>Room members</source> <translation>聊天室成员</translation> </message> @@ -211,6 +180,27 @@ </message> </context> <context> + <name>MessageDelegate</name> + <message> + <location filename="../qml/delegates/MessageDelegate.qml" line="+43"/> + <source>redacted</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>Encryption enabled</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Placeholder</name> + <message> + <location filename="../qml/delegates/Placeholder.qml" line="+4"/> + <source>unimplemented event: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>QuickSwitcher</name> <message> <location filename="../../src/QuickSwitcher.cpp" line="+71"/> @@ -277,7 +267,7 @@ <context> <name>RoomInfo</name> <message> - <location filename="../../src/Cache.cpp" line="+2205"/> + <location filename="../../src/Cache.cpp" line="+2307"/> <source>no version stored</source> <translation type="unfinished"></translation> </message> @@ -285,12 +275,12 @@ <context> <name>RoomInfoListItem</name> <message> - <location filename="../../src/RoomInfoListItem.cpp" line="+93"/> + <location filename="../../src/RoomInfoListItem.cpp" line="+95"/> <source>Leave room</source> <translation>离开聊天室</translation> </message> <message> - <location line="+181"/> + <location line="+161"/> <source>Accept</source> <translation>接受</translation> </message> @@ -331,36 +321,36 @@ <context> <name>StatusIndicator</name> <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+107"/> - <source>Encrypted</source> - <translation>加密的</translation> + <location filename="../qml/StatusIndicator.qml" line="+13"/> + <source>Failed</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Delivered</source> - <translation>已送达</translation> + <location line="+1"/> + <source>Sent</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Seen</source> - <translation>已阅读</translation> + <location line="+1"/> + <source>Received</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+3"/> - <source>Sent</source> - <translation>已发送</translation> + <location line="+1"/> + <source>Read</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TextInputWidget</name> <message> - <location filename="../../src/TextInputWidget.cpp" line="+507"/> + <location filename="../../src/TextInputWidget.cpp" line="+502"/> <source>Send a file</source> <translation>发送一个文件</translation> </message> <message> <location line="+13"/> - <location filename="../../src/TextInputWidget.h" line="+164"/> + <location filename="../../src/TextInputWidget.h" line="+161"/> <source>Write a message...</source> <translation>写一条消息...</translation> </message> @@ -375,7 +365,7 @@ <translation></translation> </message> <message> - <location line="+75"/> + <location line="+72"/> <source>Select a file</source> <translation>选择一个文件</translation> </message> @@ -391,32 +381,9 @@ </message> </context> <context> - <name>TimelineItem</name> - <message> - <location filename="../../src/timeline/TimelineItem.cpp" line="+85"/> - <source>Message redaction failed: %1</source> - <translation>删除消息失败:%1</translation> - </message> - <message> - <location line="+39"/> - <source>Reply</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineModel</name> <message> - <location line="+11"/> - <source>Options</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TimelineView</name> - <message> - <location filename="../../src/timeline/TimelineView.cpp" line="+245"/> - <source>Encryption is enabled</source> - <translation>加密已启用</translation> - </message> - <message> - <location line="+65"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+835"/> <source>-- Encrypted Event (No keys found for decryption) --</source> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment> <translation type="unfinished"></translation> @@ -440,16 +407,87 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> + <location line="+25"/> <source>-- Encrypted Event (Unknown event type) --</source> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet</comment> <translation type="unfinished"></translation> </message> + <message> + <location line="+54"/> + <source>Message redaction failed: %1</source> + <translation type="unfinished">删除消息失败:%1</translation> + </message> + <message> + <location line="+453"/> + <source>Save image</source> + <translation type="unfinished">保存图像</translation> + </message> + <message> + <location line="+2"/> + <source>Save video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save audio</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Save file</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineRow</name> + <message> + <location filename="../qml/TimelineRow.qml" line="+57"/> + <source>Reply</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Read receipts</source> + <translation type="unfinished">阅读回执</translation> + </message> + <message> + <location line="+4"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>View raw message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Redact message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Save as</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineView</name> + <message> + <location filename="../qml/TimelineView.qml" line="+24"/> + <source>No room open</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TopRoomBar</name> <message> - <location filename="../../src/TopRoomBar.cpp" line="+79"/> + <location filename="../../src/TopRoomBar.cpp" line="+78"/> <source>Room options</source> <translation>聊天室选项</translation> </message> @@ -514,7 +552,7 @@ <context> <name>UserSettingsPage</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+166"/> + <location filename="../../src/UserSettingsPage.cpp" line="+171"/> <source>Minimize to tray</source> <translation>最小化至托盘</translation> </message> @@ -530,6 +568,11 @@ </message> <message> <location line="+9"/> + <source>Circular Avatars</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+9"/> <source>Typing notifications</source> <translation>打字通知</translation> </message> @@ -604,7 +647,7 @@ <translation>通用</translation> </message> <message> - <location line="+156"/> + <location line="+161"/> <source>Open Sessions File</source> <translation>打开会话文件</translation> </message> @@ -824,7 +867,7 @@ Media size: %2 <context> <name>dialogs::ReadReceipts</name> <message> - <location filename="../../src/dialogs/ReadReceipts.cpp" line="+121"/> + <location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/> <source>Read receipts</source> <translation>阅读回执</translation> </message> @@ -951,7 +994,7 @@ Media size: %2 <translation>启用加密失败:%1</translation> </message> <message> - <location line="+149"/> + <location line="+148"/> <source>Select an avatar</source> <translation>选择一个头像</translation> </message> @@ -978,19 +1021,6 @@ Media size: %2 </message> </context> <context> - <name>dialogs::UserMentions</name> - <message> - <location filename="../../src/dialogs/UserMentions.cpp" line="+53"/> - <source>This Room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>All Rooms</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>dialogs::UserProfile</name> <message> <location filename="../../src/dialogs/UserProfile.cpp" line="+63"/> @@ -1013,7 +1043,7 @@ Media size: %2 <translation>开始一个聊天</translation> </message> <message> - <location line="+57"/> + <location line="+56"/> <source>Devices</source> <translation>设备</translation> </message> @@ -1072,69 +1102,103 @@ Media size: %2 <context> <name>message-description sent:</name> <message> - <location filename="../../src/Utils.h" line="+104"/> - <source>%1 an audio clip</source> + <location filename="../../src/Utils.h" line="+95"/> + <source>You sent an audio clip</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 an image</source> + <source>%1 sent an audio clip</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a file</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a file</source> + <source>%1 sent a file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 sent a video</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a sticker</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a video clip</source> + <source>%1 sent a sticker</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You sent a notification</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a sticker</source> + <source>%1 sent a notification</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>You: %1</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>%1 a notification</source> + <source>%1: %2</source> <translation type="unfinished"></translation> </message> <message> <location line="+7"/> - <source>%1 an encrypted message</source> + <source>You sent an encrypted message</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>message-description:</name> <message> - <location line="-26"/> - <source>sent</source> - <comment>For when someone else is the sender</comment> + <location line="+3"/> + <source>%1 sent an encrypted message</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>message-description: </name> + <name>popups::UserMentions</name> <message> - <location line="-2"/> - <source>sent</source> - <comment>For when you are the sender</comment> + <location filename="../../src/popups/UserMentions.cpp" line="+61"/> + <source>This Room</source> <translation type="unfinished"></translation> </message> -</context> -<context> - <name>utils</name> <message> - <location filename="../../src/Utils.cpp" line="+46"/> - <location filename="../../src/Utils.h" line="+55"/> - <source>You</source> + <location line="+1"/> + <source>All Rooms</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>utils</name> <message> - <location line="+219"/> + <location filename="../../src/Utils.cpp" line="+282"/> <source>sent a file.</source> <translation type="unfinished"></translation> </message> @@ -1154,7 +1218,7 @@ Media size: %2 <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/Utils.h" line="-23"/> + <location filename="../../src/Utils.h" line="+4"/> <source>Unknown Message Type</source> <translation type="unfinished"></translation> </message> diff --git a/resources/qml/Avatar.qml b/resources/qml/Avatar.qml new file mode 100644
index 00000000..a53f057b --- /dev/null +++ b/resources/qml/Avatar.qml
@@ -0,0 +1,51 @@ +import QtQuick 2.6 +import QtGraphicalEffects 1.0 +import Qt.labs.settings 1.0 + +Rectangle { + id: avatar + width: 48 + height: 48 + radius: settings.avatar_circles ? height/2 : 3 + + Settings { + id: settings + category: "user" + property bool avatar_circles: true + } + + property alias url: img.source + property string displayName + + Text { + anchors.fill: parent + text: String.fromCodePoint(displayName.codePointAt(0)) + color: colors.text + font.pixelSize: avatar.height/2 + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + + Image { + id: img + anchors.fill: parent + asynchronous: true + fillMode: Image.PreserveAspectCrop + mipmap: true + smooth: false + + sourceSize.width: avatar.width + sourceSize.height: avatar.height + + layer.enabled: true + layer.effect: OpacityMask { + maskSource: Rectangle { + anchors.fill: parent + width: avatar.width + height: avatar.height + radius: settings.avatar_circles ? height/2 : 3 + } + } + } + color: colors.dark +} diff --git a/resources/qml/EncryptionIndicator.qml b/resources/qml/EncryptionIndicator.qml new file mode 100644
index 00000000..905cf934 --- /dev/null +++ b/resources/qml/EncryptionIndicator.qml
@@ -0,0 +1,24 @@ +import QtQuick 2.5 +import QtQuick.Controls 2.1 +import im.nheko 1.0 + +Rectangle { + id: indicator + color: "transparent" + width: 16 + height: 16 + ToolTip.visible: ma.containsMouse && indicator.visible + ToolTip.text: qsTr("Encrypted") + MouseArea{ + id: ma + anchors.fill: parent + hoverEnabled: true + } + + Image { + id: stateImg + anchors.fill: parent + source: "image://colorimage/:/icons/icons/ui/lock.png?"+colors.buttonText + } +} + diff --git a/resources/qml/ImageButton.qml b/resources/qml/ImageButton.qml new file mode 100644
index 00000000..dc576e18 --- /dev/null +++ b/resources/qml/ImageButton.qml
@@ -0,0 +1,29 @@ +import QtQuick 2.3 +import QtQuick.Controls 2.3 + +Button { + property string image: undefined + + id: button + + flat: true + + // disable background, because we don't want a border on hover + background: Item { + } + + Image { + id: buttonImg + // Workaround, can't get icon.source working for now... + anchors.fill: parent + source: "image://colorimage/" + image + "?" + (button.hovered ? colors.highlight : colors.buttonText) + } + + MouseArea + { + id: mouseArea + anchors.fill: parent + onPressed: mouse.accepted = false + cursorShape: Qt.PointingHandCursor + } +} diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml new file mode 100644
index 00000000..46e74711 --- /dev/null +++ b/resources/qml/MatrixText.qml
@@ -0,0 +1,33 @@ +import QtQuick 2.5 +import QtQuick.Controls 2.3 + +TextEdit { + textFormat: TextEdit.RichText + readOnly: true + wrapMode: Text.Wrap + selectByMouse: true + color: colors.text + + onLinkActivated: { + if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) chat.model.openUserProfile(/^https:\/\/matrix.to\/#\/(@.*)$/.exec(link)[1]) + else if (/^https:\/\/matrix.to\/#\/(![^\/]*)$/.test(link)) timelineManager.setHistoryView(/^https:\/\/matrix.to\/#\/(!.*)$/.exec(link)[1]) + else if (/^https:\/\/matrix.to\/#\/(![^\/]*)\/(\$.*)$/.test(link)) { + var match = /^https:\/\/matrix.to\/#\/(![^\/]*)\/(\$.*)$/.exec(link) + timelineManager.setHistoryView(match[1]) + chat.positionViewAtIndex(chat.model.idToIndex(match[2]), ListView.Contain) + } + else Qt.openUrlExternally(link) + } + MouseArea + { + anchors.fill: parent + onPressed: mouse.accepted = false + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + } + + ToolTip { + visible: parent.hoveredLink + text: parent.hoveredLink + palette: colors + } +} diff --git a/resources/qml/StatusIndicator.qml b/resources/qml/StatusIndicator.qml new file mode 100644
index 00000000..91e8f769 --- /dev/null +++ b/resources/qml/StatusIndicator.qml
@@ -0,0 +1,38 @@ +import QtQuick 2.5 +import QtQuick.Controls 2.1 +import im.nheko 1.0 + +Rectangle { + id: indicator + property int state: 0 + color: "transparent" + width: 16 + height: 16 + ToolTip.visible: ma.containsMouse && state != MtxEvent.Empty + ToolTip.text: switch (state) { + case MtxEvent.Failed: return qsTr("Failed") + case MtxEvent.Sent: return qsTr("Sent") + case MtxEvent.Received: return qsTr("Received") + case MtxEvent.Read: return qsTr("Read") + default: return "" + } + MouseArea{ + id: ma + anchors.fill: parent + hoverEnabled: true + } + + Image { + id: stateImg + // Workaround, can't get icon.source working for now... + anchors.fill: parent + source: switch (indicator.state) { + case MtxEvent.Failed: return "image://colorimage/:/icons/icons/ui/remove-symbol.png?" + colors.buttonText + case MtxEvent.Sent: return "image://colorimage/:/icons/icons/ui/clock.png?" + colors.buttonText + case MtxEvent.Received: return "image://colorimage/:/icons/icons/ui/checkmark.png?" + colors.buttonText + case MtxEvent.Read: return "image://colorimage/:/icons/icons/ui/double-tick-indicator.png?" + colors.buttonText + default: return "" + } + } +} + diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml new file mode 100644
index 00000000..2c2ed02a --- /dev/null +++ b/resources/qml/TimelineRow.qml
@@ -0,0 +1,122 @@ +import QtQuick 2.6 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.2 +import QtQuick.Window 2.2 + +import im.nheko 1.0 + +import "./delegates" + +RowLayout { + property var view: chat + + anchors.leftMargin: avatarSize + 4 + anchors.left: parent.left + anchors.right: parent.right + + height: Math.max(contentItem.height, 16) + + Column { + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop + + //property var replyTo: model.replyTo + + //Text { + // property int idx: timelineManager.timeline.idToIndex(replyTo) + // text: "" + (idx != -1 ? timelineManager.timeline.data(timelineManager.timeline.index(idx, 0), 2) : "nothing") + //} + MessageDelegate { + id: contentItem + + width: parent.width + height: childrenRect.height + } + } + + StatusIndicator { + state: model.state + Layout.alignment: Qt.AlignRight | Qt.AlignTop + Layout.preferredHeight: 16 + } + + EncryptionIndicator { + visible: model.isEncrypted + Layout.alignment: Qt.AlignRight | Qt.AlignTop + Layout.preferredHeight: 16 + } + + ImageButton { + Layout.alignment: Qt.AlignRight | Qt.AlignTop + Layout.preferredHeight: 16 + id: replyButton + + image: ":/icons/icons/ui/mail-reply.png" + ToolTip { + visible: replyButton.hovered + text: qsTr("Reply") + palette: colors + } + + onClicked: view.model.replyAction(model.id) + } + ImageButton { + Layout.alignment: Qt.AlignRight | Qt.AlignTop + Layout.preferredHeight: 16 + id: optionsButton + + image: ":/icons/icons/ui/vertical-ellipsis.png" + ToolTip { + visible: optionsButton.hovered + text: qsTr("Options") + palette: colors + } + + onClicked: contextMenu.open() + + Menu { + y: optionsButton.height + id: contextMenu + palette: colors + + MenuItem { + text: qsTr("Read receipts") + onTriggered: view.model.readReceiptsAction(model.id) + } + MenuItem { + text: qsTr("Mark as read") + } + MenuItem { + text: qsTr("View raw message") + onTriggered: view.model.viewRawMessage(model.id) + } + MenuItem { + text: qsTr("Redact message") + onTriggered: view.model.redactEvent(model.id) + } + MenuItem { + visible: model.type == MtxEvent.ImageMessage || model.type == MtxEvent.VideoMessage || model.type == MtxEvent.AudioMessage || model.type == MtxEvent.FileMessage || model.type == MtxEvent.Sticker + text: qsTr("Save as") + onTriggered: timelineManager.timeline.saveMedia(model.id) + } + } + } + + Text { + Layout.alignment: Qt.AlignRight | Qt.AlignTop + text: model.timestamp.toLocaleTimeString("HH:mm") + color: inactiveColors.text + + MouseArea{ + id: ma + anchors.fill: parent + hoverEnabled: true + } + + ToolTip { + visible: ma.containsMouse + text: Qt.formatDateTime(model.timestamp, Qt.DefaultLocaleLongDate) + palette: colors + } + } +} diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml new file mode 100644
index 00000000..1a1900ad --- /dev/null +++ b/resources/qml/TimelineView.qml
@@ -0,0 +1,185 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.2 +import QtGraphicalEffects 1.0 +import QtQuick.Window 2.2 + +import im.nheko 1.0 + +import "./delegates" + +Item { + property var colors: currentActivePalette + property var systemInactive: SystemPalette { colorGroup: SystemPalette.Disabled } + property var inactiveColors: currentInactivePalette ? currentInactivePalette : systemInactive + property int avatarSize: 40 + + Rectangle { + anchors.fill: parent + color: colors.window + + Text { + visible: !timelineManager.timeline && !timelineManager.isInitialSync + anchors.centerIn: parent + text: qsTr("No room open") + font.pointSize: 24 + color: colors.windowText + } + + BusyIndicator { + anchors.centerIn: parent + running: timelineManager.isInitialSync + height: 200 + width: 200 + } + + ListView { + id: chat + + cacheBuffer: 2000 + + visible: timelineManager.timeline != null + anchors.fill: parent + + anchors.leftMargin: 4 + anchors.rightMargin: scrollbar.width + + model: timelineManager.timeline + + boundsBehavior: Flickable.StopAtBounds + + onVerticalOvershootChanged: contentY = contentY - verticalOvershoot + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.NoButton + propagateComposedEvents: true + z: -1 + onWheel: { + if (wheel.angleDelta != 0) { + chat.contentY = chat.contentY - wheel.angleDelta.y + wheel.accepted = true + chat.forceLayout() + chat.updatePosition() + } + } + } + + onModelChanged: { + if (model) { + currentIndex = model.currentIndex + if (model.currentIndex == count - 1) { + positionViewAtEnd() + } else { + positionViewAtIndex(model.currentIndex, ListView.End) + } + } + } + + ScrollBar.vertical: ScrollBar { + id: scrollbar + parent: chat.parent + anchors.top: chat.top + anchors.left: chat.right + anchors.bottom: chat.bottom + onPressedChanged: if (!pressed) chat.updatePosition() + } + + property bool atBottom: false + onCountChanged: { + if (atBottom) { + var newIndex = count - 1 // last index + positionViewAtEnd() + currentIndex = newIndex + model.currentIndex = newIndex + } + + if (contentHeight < height && model) { + model.fetchHistory(); + } + } + + onAtYBeginningChanged: if (atYBeginning) { chat.model.currentIndex = 0; chat.currentIndex = 0; model.fetchHistory(); } + + function updatePosition() { + for (var y = chat.contentY + chat.height; y > chat.height; y -= 9) { + var i = chat.itemAt(100, y); + if (!i) continue; + if (!i.isFullyVisible()) continue; + chat.model.currentIndex = i.getIndex(); + chat.currentIndex = i.getIndex() + atBottom = i.getIndex() == count - 1; + break; + } + } + onMovementEnded: updatePosition() + + spacing: 4 + delegate: TimelineRow { + function isFullyVisible() { + return height > 1 && (y - chat.contentY - 1) + height < chat.height + } + function getIndex() { + return index; + } + } + + section { + property: "section" + delegate: Column { + topPadding: 4 + bottomPadding: 4 + spacing: 8 + + width: parent.width + height: (section.includes(" ") ? dateBubble.height + 8 + userName.height : userName.height) + 8 + + Label { + id: dateBubble + anchors.horizontalCenter: parent.horizontalCenter + visible: section.includes(" ") + text: chat.model.formatDateSeparator(new Date(Number(section.split(" ")[1]))) + color: colors.windowText + + height: contentHeight * 1.2 + width: contentWidth * 1.2 + horizontalAlignment: Text.AlignHCenter + background: Rectangle { + radius: parent.height / 2 + color: colors.dark + } + } + Row { + height: userName.height + spacing: 4 + Avatar { + width: avatarSize + height: avatarSize + url: chat.model.avatarUrl(section.split(" ")[0]).replace("mxc://", "image://MxcImage/") + displayName: chat.model.displayName(section.split(" ")[0]) + + MouseArea { + anchors.fill: parent + onClicked: chat.model.openUserProfile(section.split(" ")[0]) + cursorShape: Qt.PointingHandCursor + } + } + + Text { + id: userName + text: chat.model.escapeEmoji(chat.model.displayName(section.split(" ")[0])) + color: chat.model.userColor(section.split(" ")[0], colors.window) + textFormat: Text.RichText + + MouseArea { + anchors.fill: parent + onClicked: chat.model.openUserProfile(section.split(" ")[0]) + cursorShape: Qt.PointingHandCursor + } + } + } + } + } + } + } +} diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml new file mode 100644
index 00000000..2c911c5e --- /dev/null +++ b/resources/qml/delegates/FileMessage.qml
@@ -0,0 +1,57 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.2 + +Rectangle { + radius: 10 + color: colors.dark + height: row.height + 24 + width: parent ? parent.width : undefined + + RowLayout { + id: row + + anchors.centerIn: parent + width: parent.width - 24 + + spacing: 15 + + Rectangle { + id: button + color: colors.light + radius: 22 + height: 44 + width: 44 + Image { + id: img + anchors.centerIn: parent + + source: "qrc:/icons/icons/ui/arrow-pointing-down.png" + fillMode: Image.Pad + + } + MouseArea { + anchors.fill: parent + onClicked: timelineManager.timeline.saveMedia(model.id) + cursorShape: Qt.PointingHandCursor + } + } + ColumnLayout { + id: col + + Text { + Layout.fillWidth: true + text: model.body + textFormat: Text.PlainText + elide: Text.ElideRight + color: colors.text + } + Text { + Layout.fillWidth: true + text: model.filesize + textFormat: Text.PlainText + elide: Text.ElideRight + color: colors.text + } + } + } +} diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml new file mode 100644
index 00000000..1b6e5729 --- /dev/null +++ b/resources/qml/delegates/ImageMessage.qml
@@ -0,0 +1,23 @@ +import QtQuick 2.6 + +import im.nheko 1.0 + +Item { + width: Math.min(parent ? parent.width : undefined, model.width) + height: width * model.proportionalHeight + + Image { + id: img + anchors.fill: parent + + source: model.url.replace("mxc://", "image://MxcImage/") + asynchronous: true + fillMode: Image.PreserveAspectFit + + MouseArea { + enabled: model.type == MtxEvent.ImageMessage + anchors.fill: parent + onClicked: timelineManager.openImageOverlay(model.url, model.id) + } + } +} diff --git a/resources/qml/delegates/MessageDelegate.qml b/resources/qml/delegates/MessageDelegate.qml new file mode 100644
index 00000000..178dfd86 --- /dev/null +++ b/resources/qml/delegates/MessageDelegate.qml
@@ -0,0 +1,55 @@ +import QtQuick 2.6 +import im.nheko 1.0 + +DelegateChooser { + //role: "type" //< not supported in our custom implementation, have to use roleValue + roleValue: model.type + + DelegateChoice { + roleValue: MtxEvent.TextMessage + TextMessage {} + } + DelegateChoice { + roleValue: MtxEvent.NoticeMessage + NoticeMessage {} + } + DelegateChoice { + roleValue: MtxEvent.EmoteMessage + TextMessage {} + } + DelegateChoice { + roleValue: MtxEvent.ImageMessage + ImageMessage {} + } + DelegateChoice { + roleValue: MtxEvent.Sticker + ImageMessage {} + } + DelegateChoice { + roleValue: MtxEvent.FileMessage + FileMessage {} + } + DelegateChoice { + roleValue: MtxEvent.VideoMessage + PlayableMediaMessage {} + } + DelegateChoice { + roleValue: MtxEvent.AudioMessage + PlayableMediaMessage {} + } + DelegateChoice { + roleValue: MtxEvent.Redacted + Pill { + text: qsTr("redacted") + } + } + DelegateChoice { + roleValue: MtxEvent.Encryption + Pill { + text: qsTr("Encryption enabled") + } + } + DelegateChoice { + Placeholder {} + } +} diff --git a/resources/qml/delegates/NoticeMessage.qml b/resources/qml/delegates/NoticeMessage.qml new file mode 100644
index 00000000..a392eb5b --- /dev/null +++ b/resources/qml/delegates/NoticeMessage.qml
@@ -0,0 +1,8 @@ +import ".." + +MatrixText { + text: model.formattedBody + width: parent ? parent.width : undefined + font.italic: true + color: inactiveColors.text +} diff --git a/resources/qml/delegates/Pill.qml b/resources/qml/delegates/Pill.qml new file mode 100644
index 00000000..53a9684e --- /dev/null +++ b/resources/qml/delegates/Pill.qml
@@ -0,0 +1,14 @@ +import QtQuick 2.5 +import QtQuick.Controls 2.1 + +Label { + color: inactiveColors.text + horizontalAlignment: Text.AlignHCenter + + height: contentHeight * 1.2 + width: contentWidth * 1.2 + background: Rectangle { + radius: parent.height / 2 + color: colors.dark + } +} diff --git a/resources/qml/delegates/Placeholder.qml b/resources/qml/delegates/Placeholder.qml new file mode 100644
index 00000000..4c0e68c3 --- /dev/null +++ b/resources/qml/delegates/Placeholder.qml
@@ -0,0 +1,7 @@ +import ".." + +MatrixText { + text: qsTr("unimplemented event: ") + model.type + width: parent ? parent.width : undefined + color: inactiveColors.text +} diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml new file mode 100644
index 00000000..d0d4d7cb --- /dev/null +++ b/resources/qml/delegates/PlayableMediaMessage.qml
@@ -0,0 +1,164 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.2 +import QtQuick.Controls 2.1 +import QtMultimedia 5.6 + +import im.nheko 1.0 + +Rectangle { + id: bg + radius: 10 + color: colors.dark + height: content.height + 24 + width: parent ? parent.width : undefined + + Column { + id: content + width: parent.width - 24 + anchors.centerIn: parent + + Rectangle { + id: videoContainer + visible: model.type == MtxEvent.VideoMessage + width: Math.min(parent.width, model.width ? model.width : 400) // some media has 0 as size... + height: width*model.proportionalHeight + Image { + anchors.fill: parent + source: model.thumbnailUrl.replace("mxc://", "image://MxcImage/") + asynchronous: true + fillMode: Image.PreserveAspectFit + + VideoOutput { + anchors.fill: parent + fillMode: VideoOutput.PreserveAspectFit + source: media + } + } + } + + RowLayout { + width: parent.width + Text { + id: positionText + text: "--:--:--" + color: colors.text + } + Slider { + Layout.fillWidth: true + id: progress + value: media.position + from: 0 + to: media.duration + + onMoved: media.seek(value) + //indeterminate: true + function updatePositionTexts() { + function formatTime(date) { + var hh = date.getUTCHours(); + var mm = date.getUTCMinutes(); + var ss = date.getSeconds(); + if (hh < 10) {hh = "0"+hh;} + if (mm < 10) {mm = "0"+mm;} + if (ss < 10) {ss = "0"+ss;} + return hh+":"+mm+":"+ss; + } + positionText.text = formatTime(new Date(media.position)) + durationText.text = formatTime(new Date(media.duration)) + } + onValueChanged: updatePositionTexts() + } + Text { + id: durationText + text: "--:--:--" + color: colors.text + } + } + + RowLayout { + width: parent.width + + spacing: 15 + + Rectangle { + id: button + color: colors.light + radius: 22 + height: 44 + width: 44 + Image { + id: img + anchors.centerIn: parent + + source: "qrc:/icons/icons/ui/arrow-pointing-down.png" + fillMode: Image.Pad + + } + MouseArea { + anchors.fill: parent + onClicked: { + switch (button.state) { + case "": timelineManager.timeline.cacheMedia(model.id); break; + case "stopped": + media.play(); console.log("play"); + button.state = "playing" + break + case "playing": + media.pause(); console.log("pause"); + button.state = "stopped" + break + } + } + cursorShape: Qt.PointingHandCursor + } + MediaPlayer { + id: media + onError: console.log(errorString) + onStatusChanged: if(status == MediaPlayer.Loaded) progress.updatePositionTexts() + onStopped: button.state = "stopped" + } + + Connections { + target: timelineManager.timeline + onMediaCached: { + if (mxcUrl == model.url) { + media.source = "file://" + cacheUrl + button.state = "stopped" + console.log("media loaded: " + mxcUrl + " at " + cacheUrl) + } + console.log("media cached: " + mxcUrl + " at " + cacheUrl) + } + } + + states: [ + State { + name: "stopped" + PropertyChanges { target: img; source: "qrc:/icons/icons/ui/play-sign.png" } + }, + State { + name: "playing" + PropertyChanges { target: img; source: "qrc:/icons/icons/ui/pause-symbol.png" } + } + ] + } + ColumnLayout { + id: col + + Text { + Layout.fillWidth: true + text: model.body + textFormat: Text.PlainText + elide: Text.ElideRight + color: colors.text + } + Text { + Layout.fillWidth: true + text: model.filesize + textFormat: Text.PlainText + elide: Text.ElideRight + color: colors.text + } + } + } + } +} + diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml new file mode 100644
index 00000000..f984b32f --- /dev/null +++ b/resources/qml/delegates/TextMessage.qml
@@ -0,0 +1,6 @@ +import ".." + +MatrixText { + text: model.formattedBody.replace("<pre>", "<pre style='white-space: pre-wrap'>") + width: parent ? parent.width : undefined +} diff --git a/resources/res.qrc b/resources/res.qrc
index ad27af5a..53406c48 100644 --- a/resources/res.qrc +++ b/resources/res.qrc
@@ -114,4 +114,21 @@ <file>styles/nheko.qss</file> <file>styles/nheko-dark.qss</file> </qresource> + <qresource prefix="/"> + <file>qml/TimelineView.qml</file> + <file>qml/Avatar.qml</file> + <file>qml/ImageButton.qml</file> + <file>qml/MatrixText.qml</file> + <file>qml/StatusIndicator.qml</file> + <file>qml/EncryptionIndicator.qml</file> + <file>qml/TimelineRow.qml</file> + <file>qml/delegates/MessageDelegate.qml</file> + <file>qml/delegates/TextMessage.qml</file> + <file>qml/delegates/NoticeMessage.qml</file> + <file>qml/delegates/ImageMessage.qml</file> + <file>qml/delegates/PlayableMediaMessage.qml</file> + <file>qml/delegates/FileMessage.qml</file> + <file>qml/delegates/Pill.qml</file> + <file>qml/delegates/Placeholder.qml</file> + </qresource> </RCC>