Compare commits
86 Commits
work/tobia
...
v24.08.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
588266d7c3 | ||
|
|
258e799138 | ||
|
|
73cd253e25 | ||
|
|
eee81329a4 | ||
|
|
9b425e5a54 | ||
|
|
fb83d5cff8 | ||
|
|
21cabeb20c | ||
|
|
bed04cc59f | ||
|
|
18db04d073 | ||
|
|
0f05c1b921 | ||
|
|
765292e0e9 | ||
|
|
7c27308a59 | ||
|
|
b574e68164 | ||
|
|
66d16dd16b | ||
|
|
b1c810c242 | ||
|
|
8f0b3a16f1 | ||
|
|
043519784b | ||
|
|
aafe42c4cc | ||
|
|
d9b9b18872 | ||
|
|
18e26c9e3a | ||
|
|
19c93e9d82 | ||
|
|
af6187706e | ||
|
|
bf18fcbbba | ||
|
|
ee5502d7bf | ||
|
|
d8d6a4ef3b | ||
|
|
2803c6fd58 | ||
|
|
f2f6406403 | ||
|
|
63dc8a5857 | ||
|
|
3dafc62f04 | ||
|
|
5be112e0e2 | ||
|
|
b15ee49691 | ||
|
|
fa5872ec5a | ||
|
|
54061c744f | ||
|
|
b6dac3bbdf | ||
|
|
3a838596c5 | ||
|
|
cc22e80adc | ||
|
|
1c0a5edd2e | ||
|
|
47408d536d | ||
|
|
fc21eea7e7 | ||
|
|
ca95eb3505 | ||
|
|
639cbed343 | ||
|
|
be3cffaf3a | ||
|
|
7af520d0ae | ||
|
|
d145177014 | ||
|
|
75aa2c0e8d | ||
|
|
7eda952aa2 | ||
|
|
22d0d84fee | ||
|
|
941a724381 | ||
|
|
7e880c6663 | ||
|
|
22315b810c | ||
|
|
d0c41d5224 | ||
|
|
a7e06375fd | ||
|
|
e638f61ff1 | ||
|
|
2218b39a50 | ||
|
|
b34936a017 | ||
|
|
5b3e650854 | ||
|
|
86d85c6ce7 | ||
|
|
863e20394a | ||
|
|
908dcea75e | ||
|
|
c59d5bc75d | ||
|
|
ff4ba4df9c | ||
|
|
0c1494e74a | ||
|
|
18d4da8b42 | ||
|
|
9680cbbb38 | ||
|
|
3b5ba470b6 | ||
|
|
e1066aede2 | ||
|
|
2bf4ed26f0 | ||
|
|
b460b588a8 | ||
|
|
05270c38bf | ||
|
|
18afad83db | ||
|
|
d390433b2b | ||
|
|
0017be1c0f | ||
|
|
63eda3796d | ||
|
|
3246076a0b | ||
|
|
e905cdd151 | ||
|
|
0372074beb | ||
|
|
09e97f2bdb | ||
|
|
8e324c16f3 | ||
|
|
2bb55eece7 | ||
|
|
2877e40647 | ||
|
|
768ec242fa | ||
|
|
194751627f | ||
|
|
bc701c51d9 | ||
|
|
35939b4af4 | ||
|
|
a178b8b6ca | ||
|
|
a6994318de |
@@ -8,13 +8,13 @@ cmake_minimum_required(VERSION 3.16)
|
|||||||
|
|
||||||
# KDE Applications version, managed by release script.
|
# KDE Applications version, managed by release script.
|
||||||
set(RELEASE_SERVICE_VERSION_MAJOR "24")
|
set(RELEASE_SERVICE_VERSION_MAJOR "24")
|
||||||
set(RELEASE_SERVICE_VERSION_MINOR "11")
|
set(RELEASE_SERVICE_VERSION_MINOR "08")
|
||||||
set(RELEASE_SERVICE_VERSION_MICRO "70")
|
set(RELEASE_SERVICE_VERSION_MICRO "2")
|
||||||
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
|
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
|
||||||
|
|
||||||
project(NeoChat VERSION ${RELEASE_SERVICE_VERSION})
|
project(NeoChat VERSION ${RELEASE_SERVICE_VERSION})
|
||||||
|
|
||||||
set(KF_MIN_VERSION "6.4")
|
set(KF_MIN_VERSION "6.0")
|
||||||
set(QT_MIN_VERSION "6.5")
|
set(QT_MIN_VERSION "6.5")
|
||||||
|
|
||||||
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
|
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
|
||||||
@@ -38,6 +38,7 @@ include(KDEGitCommitHooks)
|
|||||||
include(ECMCheckOutboundLicense)
|
include(ECMCheckOutboundLicense)
|
||||||
include(ECMQtDeclareLoggingCategory)
|
include(ECMQtDeclareLoggingCategory)
|
||||||
include(ECMAddAndroidApk)
|
include(ECMAddAndroidApk)
|
||||||
|
include(ECMQmlModule)
|
||||||
if (NOT ANDROID)
|
if (NOT ANDROID)
|
||||||
include(KDEClangFormat)
|
include(KDEClangFormat)
|
||||||
endif()
|
endif()
|
||||||
@@ -59,7 +60,6 @@ set_package_properties(Qt6 PROPERTIES
|
|||||||
PURPOSE "Basic application components"
|
PURPOSE "Basic application components"
|
||||||
)
|
)
|
||||||
|
|
||||||
qt_policy(SET QTP0001 NEW)
|
|
||||||
if (QT_KNOWN_POLICY_QTP0004)
|
if (QT_KNOWN_POLICY_QTP0004)
|
||||||
qt_policy(SET QTP0004 NEW)
|
qt_policy(SET QTP0004 NEW)
|
||||||
endif ()
|
endif ()
|
||||||
|
|||||||
@@ -274,7 +274,6 @@ void TextHandlerTest::receiveRichInPlainOut_data()
|
|||||||
QTest::newRow("ampersand") << QStringLiteral("a & b") << QStringLiteral("a & b");
|
QTest::newRow("ampersand") << QStringLiteral("a & b") << QStringLiteral("a & b");
|
||||||
QTest::newRow("quote") << QStringLiteral(""a and b"") << QStringLiteral("\"a and b\"");
|
QTest::newRow("quote") << QStringLiteral(""a and b"") << QStringLiteral("\"a and b\"");
|
||||||
QTest::newRow("new line") << QStringLiteral("new<br>line") << QStringLiteral("new\nline");
|
QTest::newRow("new line") << QStringLiteral("new<br>line") << QStringLiteral("new\nline");
|
||||||
QTest::newRow("unescape") << QStringLiteral("can't") << QStringLiteral("can't");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextHandlerTest::receiveRichInPlainOut()
|
void TextHandlerTest::receiveRichInPlainOut()
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
<summary xml:lang="ca">Xategeu amb els vostres amics a Matrix</summary>
|
<summary xml:lang="ca">Xategeu amb els vostres amics a Matrix</summary>
|
||||||
<summary xml:lang="ca-valencia">Xategeu amb els vostres amics a Matrix</summary>
|
<summary xml:lang="ca-valencia">Xategeu amb els vostres amics a Matrix</summary>
|
||||||
<summary xml:lang="cs">Mluvte se svými přáteli na Matrixu</summary>
|
<summary xml:lang="cs">Mluvte se svými přáteli na Matrixu</summary>
|
||||||
|
<summary xml:lang="de">Mit den Freunden auf Matrix unterhalten</summary>
|
||||||
<summary xml:lang="en-GB">Chat with your friends on matrix</summary>
|
<summary xml:lang="en-GB">Chat with your friends on matrix</summary>
|
||||||
<summary xml:lang="eo">Babilu kun viaj amikoj sur matrix</summary>
|
<summary xml:lang="eo">Babilu kun viaj amikoj sur matrix</summary>
|
||||||
<summary xml:lang="es">Charle con sus amigos en matrix</summary>
|
<summary xml:lang="es">Charle con sus amigos en matrix</summary>
|
||||||
@@ -85,12 +86,14 @@
|
|||||||
<p xml:lang="ar">نيوتشات هو تطبيق دردشة يتيح لك الاستفادة الكاملة من شبكة Matrix. فهو يوفر لك طريقة آمنة لإرسال الرسائل النصية ومقاطع الفيديو والملفات الصوتية إلى عائلتك وزملائك وأصدقائك.</p>
|
<p xml:lang="ar">نيوتشات هو تطبيق دردشة يتيح لك الاستفادة الكاملة من شبكة Matrix. فهو يوفر لك طريقة آمنة لإرسال الرسائل النصية ومقاطع الفيديو والملفات الصوتية إلى عائلتك وزملائك وأصدقائك.</p>
|
||||||
<p xml:lang="ca">El NeoChat és una aplicació de xat que us permet aprofitar plenament la xarxa Matrix. Proporciona una manera segura d'enviar missatges de text, vídeos i arxius d'àudio a la vostra família, companys i amics.</p>
|
<p xml:lang="ca">El NeoChat és una aplicació de xat que us permet aprofitar plenament la xarxa Matrix. Proporciona una manera segura d'enviar missatges de text, vídeos i arxius d'àudio a la vostra família, companys i amics.</p>
|
||||||
<p xml:lang="ca-valencia">NeoChat és una aplicació de xat que us permet aprofitar plenament la xarxa Matrix. Proporciona una manera segura d'enviar missatges de text, vídeos i arxius d'àudio a la vostra família, companys i amics.</p>
|
<p xml:lang="ca-valencia">NeoChat és una aplicació de xat que us permet aprofitar plenament la xarxa Matrix. Proporciona una manera segura d'enviar missatges de text, vídeos i arxius d'àudio a la vostra família, companys i amics.</p>
|
||||||
|
<p xml:lang="de">NeoChat ist eine Anwendung für Unterhaltungen mit allen Vorteilen des Matrix-Netzwerkes. Sie bietet eine sichere Möglichkeit zum Versenden von Nachrichten, Videos und Audiodateien and die Familienmitglieder.</p>
|
||||||
<p xml:lang="en-GB">NeoChat is a chat app that lets you take full advantage of the Matrix network. It provides you with a secure way to send text messages, videos and audio files to your family, colleagues and friends.</p>
|
<p xml:lang="en-GB">NeoChat is a chat app that lets you take full advantage of the Matrix network. It provides you with a secure way to send text messages, videos and audio files to your family, colleagues and friends.</p>
|
||||||
<p xml:lang="eo">NeoChat estas babilej-apo, kiu ebligas al vi plene profiti de la Matrix-reto. Ĝi provizas al vi sekuran manieron sendi tekstmesaĝojn, filmetojn kaj sondosierojn al via familio, kolegoj kaj amikoj.</p>
|
<p xml:lang="eo">NeoChat estas babilej-apo, kiu ebligas al vi plene profiti de la Matrix-reto. Ĝi provizas al vi sekuran manieron sendi tekstmesaĝojn, filmetojn kaj sondosierojn al via familio, kolegoj kaj amikoj.</p>
|
||||||
<p xml:lang="es">NeoChat es una aplicación de chat que le permite aprovechar al máximo la red Matrix. Le proporciona un modo seguro de enviar mensajes de texto, vídeos y archivos de sonido a su familia, colegas y amigos.</p>
|
<p xml:lang="es">NeoChat es una aplicación de chat que le permite aprovechar al máximo la red Matrix. Le proporciona un modo seguro de enviar mensajes de texto, vídeos y archivos de sonido a su familia, colegas y amigos.</p>
|
||||||
<p xml:lang="eu">NeoChat, Matrix sarearen abantaila guztiei probetsua ateratzeko aukera ematen dizun berriketa aplikaizo bat da. Zure familiari, kideei eta lagunei testu mezuak, bideoak eta audio fitxategiak era seguruan bidaltzeko aukera ematen dizu.</p>
|
<p xml:lang="eu">NeoChat, Matrix sarearen abantaila guztiei probetsua ateratzeko aukera ematen dizun berriketa aplikaizo bat da. Zure familiari, kideei eta lagunei testu mezuak, bideoak eta audio fitxategiak era seguruan bidaltzeko aukera ematen dizu.</p>
|
||||||
<p xml:lang="fi">NeoChat on keskustelusovellus, jolla Matrix-verkosta saa täyden hyödyn. Se tarjoaa salatun kanavan lähettää perheelle, työkavereille ja ystäville tekstiviestejä sekä video- ja äänitiedostoja.</p>
|
<p xml:lang="fi">NeoChat on keskustelusovellus, jolla Matrix-verkosta saa täyden hyödyn. Se tarjoaa salatun kanavan lähettää perheelle, työkavereille ja ystäville tekstiviestejä sekä video- ja äänitiedostoja.</p>
|
||||||
<p xml:lang="fr">NeoChat est une application de discussions vous permettant de profiter pleinement du réseau Matrix. Elle vous offre un moyen sécurisé d'envoyer des messages de texte, des vidéos et des fichiers audio à votre famille, vos collègues et vos ami(e)s.</p>
|
<p xml:lang="fr">NeoChat est une application de discussions vous permettant de profiter pleinement du réseau Matrix. Elle vous offre un moyen sécurisé d'envoyer des messages de texte, des vidéos et des fichiers audio à votre famille, vos collègues et vos ami(e)s.</p>
|
||||||
|
<p xml:lang="gl">NeoChat é unha aplicación de conversa que lle permite usar todas as funcionalidades da rede Matrix. Fornece unha forma segura de enviar mensaxes de texto e ficheiros de vídeo e son a familiares, amizades ou no traballo.</p>
|
||||||
<p xml:lang="he">NeoChat הוא יישום התכתבות שמאפשר לך לנצל את רשת Matrix במלואה. הוא מספק דרך מאובטחת לשליחת הודעות כתובות, סרטונים וקובצי שמע למשפחה, לעמיתים לעבודה ולחברים.</p>
|
<p xml:lang="he">NeoChat הוא יישום התכתבות שמאפשר לך לנצל את רשת Matrix במלואה. הוא מספק דרך מאובטחת לשליחת הודעות כתובות, סרטונים וקובצי שמע למשפחה, לעמיתים לעבודה ולחברים.</p>
|
||||||
<p xml:lang="hu">A NeoChat egy olyan csevegőalkalmazás, amellyel teljes mértékben kihasználhatja a Matrix hálózatot. Biztonságos módot biztosít szöveges üzenetek, videók és hangfájlok küldéséhez családtagjainak, kollégáinak és barátainak.</p>
|
<p xml:lang="hu">A NeoChat egy olyan csevegőalkalmazás, amellyel teljes mértékben kihasználhatja a Matrix hálózatot. Biztonságos módot biztosít szöveges üzenetek, videók és hangfájlok küldéséhez családtagjainak, kollégáinak és barátainak.</p>
|
||||||
<p xml:lang="ia">NeoChat es un app de conversation que te permitte prender avantage plen del rete Matrix. Il te forni un modo secur de inviar messages de texto, videos e files audio a tui familia, collegas e amicos.</p>
|
<p xml:lang="ia">NeoChat es un app de conversation que te permitte prender avantage plen del rete Matrix. Il te forni un modo secur de inviar messages de texto, videos e files audio a tui familia, collegas e amicos.</p>
|
||||||
@@ -110,6 +113,7 @@
|
|||||||
<p xml:lang="ar">يهدف نيوتشات إلى أن يكون تطبيقًا كامل الميزات لمواصفات ماتركس. على هذا النحو يتم دعم كل شيء في المواصفات المستقرة الحالية مع الاستثناءات الملحوظة لـ VoIP والخيوط وبعض جوانب التشفير من طرف إلى طرف. هناك عدد قليل من الإغفالات الصغيرة الأخرى بسبب حقيقة أن مواصفات ماتركس تتطور باستمرار ، ولكن يبقى الهدف توفير الدعم النهائي للمواصفات بأكملها.</p>
|
<p xml:lang="ar">يهدف نيوتشات إلى أن يكون تطبيقًا كامل الميزات لمواصفات ماتركس. على هذا النحو يتم دعم كل شيء في المواصفات المستقرة الحالية مع الاستثناءات الملحوظة لـ VoIP والخيوط وبعض جوانب التشفير من طرف إلى طرف. هناك عدد قليل من الإغفالات الصغيرة الأخرى بسبب حقيقة أن مواصفات ماتركس تتطور باستمرار ، ولكن يبقى الهدف توفير الدعم النهائي للمواصفات بأكملها.</p>
|
||||||
<p xml:lang="ca">NeoChat pretén ser una aplicació amb totes les característiques per a l'especificació de Matrix. Com a tal, s'ha implementat tota l'especificació actual estable amb les notables excepcions de la VoIP, fils i alguns aspectes de l'encriptatge d'extrem a extrem. Hi ha algunes altres omissions més petites a causa del fet que l'especificació de Matrix està evolucionant constantment, però l'objectiu segueix sent proporcionar suport eventual per a tota l'especificació.</p>
|
<p xml:lang="ca">NeoChat pretén ser una aplicació amb totes les característiques per a l'especificació de Matrix. Com a tal, s'ha implementat tota l'especificació actual estable amb les notables excepcions de la VoIP, fils i alguns aspectes de l'encriptatge d'extrem a extrem. Hi ha algunes altres omissions més petites a causa del fet que l'especificació de Matrix està evolucionant constantment, però l'objectiu segueix sent proporcionar suport eventual per a tota l'especificació.</p>
|
||||||
<p xml:lang="ca-valencia">NeoChat pretén ser una aplicació amb totes les característiques per a l'especificació de Matrix. Com a tal, s'ha implementat tota l'especificació actual estable amb les notables excepcions de la VoIP, fils i alguns aspectes de l'encriptació d'extrem a extrem. Hi ha algunes altres omissions més xicotetes a causa del fet que l'especificació de Matrix està evolucionant constantment, però l'objectiu seguix sent proporcionar suport eventual per a tota l'especificació.</p>
|
<p xml:lang="ca-valencia">NeoChat pretén ser una aplicació amb totes les característiques per a l'especificació de Matrix. Com a tal, s'ha implementat tota l'especificació actual estable amb les notables excepcions de la VoIP, fils i alguns aspectes de l'encriptació d'extrem a extrem. Hi ha algunes altres omissions més xicotetes a causa del fet que l'especificació de Matrix està evolucionant constantment, però l'objectiu seguix sent proporcionar suport eventual per a tota l'especificació.</p>
|
||||||
|
<p xml:lang="de">NeoChat versucht eine vollumfängliche Anwendung für die Spezifikation von Matrix zu sein. Damit wird alles der aktuellen stabilen Spezifikation mit den erwähnenswerten Ausnahmen von VoIP, Diskussionsfäden und ein paar Teilen der Ende-zu-Ende-Verschlüsselung unterstützt. Zudem sind andere kleinere Auslassungen vorhanden, da sich die Matrixspezifikation ständig weiterentwickelt. Nichtsdestotrotz soll letztendlich die gesamte Spezifikation unterstützt werden.</p>
|
||||||
<p xml:lang="en-GB">NeoChat aims to be a fully featured application for the Matrix specification. As such everything in the current stable specification with the notable exceptions of VoIP, threads and some aspects of End-to-End Encryption are supported. There are a few other smaller omissions due to the fact that the Matrix spec is constantly evolving but the aim remains to provide eventual support for the entire spec.</p>
|
<p xml:lang="en-GB">NeoChat aims to be a fully featured application for the Matrix specification. As such everything in the current stable specification with the notable exceptions of VoIP, threads and some aspects of End-to-End Encryption are supported. There are a few other smaller omissions due to the fact that the Matrix spec is constantly evolving but the aim remains to provide eventual support for the entire spec.</p>
|
||||||
<p xml:lang="eo">NeoChat celas esti plene kapabla aplikaĵo por la Matrix-specifo. Kiel tia, ĉio en la nuna stabila specifo kun la rimarkindaj esceptoj de VoIP, fadenoj kaj kelkaj aspektoj de Fin-al-Fina Ĉifrado estas subtenataj. Estas kelkaj aliaj pli malgrandaj preterlasoj pro la fakto, ke la Matrix-speco konstante evoluas, sed la celo restas provizi finfine subtenon por la tuta specifaĵo.</p>
|
<p xml:lang="eo">NeoChat celas esti plene kapabla aplikaĵo por la Matrix-specifo. Kiel tia, ĉio en la nuna stabila specifo kun la rimarkindaj esceptoj de VoIP, fadenoj kaj kelkaj aspektoj de Fin-al-Fina Ĉifrado estas subtenataj. Estas kelkaj aliaj pli malgrandaj preterlasoj pro la fakto, ke la Matrix-speco konstante evoluas, sed la celo restas provizi finfine subtenon por la tuta specifaĵo.</p>
|
||||||
<p xml:lang="es">NeoChat pretende ser una aplicación con todas las funciones para la especificación de Matrix. Como tal, admite todo en la especificación estable actual, con las notables excepciones de VoIP, subprocesos y algunas funciones de cifrado de extremo a extremo. Existen algunas omisiones menos importantes debido al hecho de que la especificación de Matrix está en constante evolución, pero el objetivo sigue siendo brindar compatibilidad final con toda la especificación.</p>
|
<p xml:lang="es">NeoChat pretende ser una aplicación con todas las funciones para la especificación de Matrix. Como tal, admite todo en la especificación estable actual, con las notables excepciones de VoIP, subprocesos y algunas funciones de cifrado de extremo a extremo. Existen algunas omisiones menos importantes debido al hecho de que la especificación de Matrix está en constante evolución, pero el objetivo sigue siendo brindar compatibilidad final con toda la especificación.</p>
|
||||||
@@ -139,6 +143,7 @@
|
|||||||
<p xml:lang="ar">نظرًا لطبيعة تطوير مواصفات ماتركس، يدعم نيوتشات أيضًا العديد من الميزات غير المستقرة وهي:</p>
|
<p xml:lang="ar">نظرًا لطبيعة تطوير مواصفات ماتركس، يدعم نيوتشات أيضًا العديد من الميزات غير المستقرة وهي:</p>
|
||||||
<p xml:lang="ca">A causa de la naturalesa del desenvolupament de l'especificació de Matrix, el NeoChat també implementa nombroses característiques inestables. Actualment són:</p>
|
<p xml:lang="ca">A causa de la naturalesa del desenvolupament de l'especificació de Matrix, el NeoChat també implementa nombroses característiques inestables. Actualment són:</p>
|
||||||
<p xml:lang="ca-valencia">A causa de la naturalea del desenvolupament de l'especificació de Matrix, NeoChat també implementa nombroses característiques inestables. Actualment són:</p>
|
<p xml:lang="ca-valencia">A causa de la naturalea del desenvolupament de l'especificació de Matrix, NeoChat també implementa nombroses característiques inestables. Actualment són:</p>
|
||||||
|
<p xml:lang="de">Durch die Weiterentwicklung der Matrix-Spezifikation unterstützt auch NeoChat einige als noch instabil gekennzeichnete Funktionen. Derzeit sind das:</p>
|
||||||
<p xml:lang="en-GB">Due to the nature of the Matrix specification development NeoChat also supports numerous unstable features. Currently these are:</p>
|
<p xml:lang="en-GB">Due to the nature of the Matrix specification development NeoChat also supports numerous unstable features. Currently these are:</p>
|
||||||
<p xml:lang="eo">Pro la naturo de la Matrix-specifevoluo NeoChat ankaŭ subtenas multajn malstabilajn funkciojn. Nuntempe ĉi tiuj estas:</p>
|
<p xml:lang="eo">Pro la naturo de la Matrix-specifevoluo NeoChat ankaŭ subtenas multajn malstabilajn funkciojn. Nuntempe ĉi tiuj estas:</p>
|
||||||
<p xml:lang="es">Debido a la naturaleza del desarrollo de la especificación de Matrix, NeoChat también permite numerosas funciones no estables, como:</p>
|
<p xml:lang="es">Debido a la naturaleza del desarrollo de la especificación de Matrix, NeoChat también permite numerosas funciones no estables, como:</p>
|
||||||
@@ -293,6 +298,7 @@
|
|||||||
<caption xml:lang="ar">العرض الرئيسة مع قائمة الغرف والدردشات و معلومات الغرفة</caption>
|
<caption xml:lang="ar">العرض الرئيسة مع قائمة الغرف والدردشات و معلومات الغرفة</caption>
|
||||||
<caption xml:lang="ca">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
<caption xml:lang="ca">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
||||||
<caption xml:lang="ca-valencia">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
<caption xml:lang="ca-valencia">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
||||||
|
<caption xml:lang="de">Hauptansicht mit Raumliste, Unterhaltung und Raum-Informationen</caption>
|
||||||
<caption xml:lang="en-GB">Main view with room list, chat, and room information</caption>
|
<caption xml:lang="en-GB">Main view with room list, chat, and room information</caption>
|
||||||
<caption xml:lang="eo">Ĉefa vido kun ĉambra listo, babilejo kaj ĉambra informo</caption>
|
<caption xml:lang="eo">Ĉefa vido kun ĉambra listo, babilejo kaj ĉambra informo</caption>
|
||||||
<caption xml:lang="es">Vista principal con la lista de salas, chat e información de la sala</caption>
|
<caption xml:lang="es">Vista principal con la lista de salas, chat e información de la sala</caption>
|
||||||
@@ -326,12 +332,14 @@
|
|||||||
<caption xml:lang="ar">اكتشف مجتمعات جديدة مع فضاءات ماتركس</caption>
|
<caption xml:lang="ar">اكتشف مجتمعات جديدة مع فضاءات ماتركس</caption>
|
||||||
<caption xml:lang="ca">Descobriu comunitats noves amb els espais de Matrix</caption>
|
<caption xml:lang="ca">Descobriu comunitats noves amb els espais de Matrix</caption>
|
||||||
<caption xml:lang="ca-valencia">Descobriu comunitats noves amb els espais de Matrix</caption>
|
<caption xml:lang="ca-valencia">Descobriu comunitats noves amb els espais de Matrix</caption>
|
||||||
|
<caption xml:lang="de">Neue Gemeinschaften mit den Umgebungen von Matrix erkunden</caption>
|
||||||
<caption xml:lang="en-GB">Discover new communities with Matrix Spaces</caption>
|
<caption xml:lang="en-GB">Discover new communities with Matrix Spaces</caption>
|
||||||
<caption xml:lang="eo">Malkovru novajn komunumojn per Matrix Spaces</caption>
|
<caption xml:lang="eo">Malkovru novajn komunumojn per Matrix Spaces</caption>
|
||||||
<caption xml:lang="es">Descubra nuevas comunidades con los espacios de Matrix</caption>
|
<caption xml:lang="es">Descubra nuevas comunidades con los espacios de Matrix</caption>
|
||||||
<caption xml:lang="eu">Ezagutu komunitate berriak Matrixeko Tokiak erabiliz</caption>
|
<caption xml:lang="eu">Ezagutu komunitate berriak Matrixeko Tokiak erabiliz</caption>
|
||||||
<caption xml:lang="fi">Löydä uusia yhteisöjä Matrix Spacesillä</caption>
|
<caption xml:lang="fi">Löydä uusia yhteisöjä Matrix Spacesillä</caption>
|
||||||
<caption xml:lang="fr">Découvrez de nouvelles communautés avec les espaces sous Matrix</caption>
|
<caption xml:lang="fr">Découvrez de nouvelles communautés avec les espaces sous Matrix</caption>
|
||||||
|
<caption xml:lang="gl">Descubra novas comunidades dos espazos de Matrix.</caption>
|
||||||
<caption xml:lang="he">אפשר להיחשף לקהילות חדשות דרך Matrix Spaces</caption>
|
<caption xml:lang="he">אפשר להיחשף לקהילות חדשות דרך Matrix Spaces</caption>
|
||||||
<caption xml:lang="hu">Fedezzen fel új közösségeket a Matrix Terek segítségével</caption>
|
<caption xml:lang="hu">Fedezzen fel új közösségeket a Matrix Terek segítségével</caption>
|
||||||
<caption xml:lang="ia">Discoperi nove communitate con Matrix Spaces (Spatios de Matrix)</caption>
|
<caption xml:lang="ia">Discoperi nove communitate con Matrix Spaces (Spatios de Matrix)</caption>
|
||||||
@@ -361,6 +369,7 @@
|
|||||||
<caption xml:lang="ar">العرض الرئيسة مع قائمة الغرف والدردشات و معلومات الغرفة</caption>
|
<caption xml:lang="ar">العرض الرئيسة مع قائمة الغرف والدردشات و معلومات الغرفة</caption>
|
||||||
<caption xml:lang="ca">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
<caption xml:lang="ca">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
||||||
<caption xml:lang="ca-valencia">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
<caption xml:lang="ca-valencia">Vista principal amb la llista de sales, xats i informació de les sales</caption>
|
||||||
|
<caption xml:lang="de">Hauptansicht mit Raumliste, Unterhaltung und Raum-Informationen</caption>
|
||||||
<caption xml:lang="en-GB">Main view with room list, chat, and room information</caption>
|
<caption xml:lang="en-GB">Main view with room list, chat, and room information</caption>
|
||||||
<caption xml:lang="eo">Ĉefa vido kun ĉambra listo, babilejo kaj ĉambra informo</caption>
|
<caption xml:lang="eo">Ĉefa vido kun ĉambra listo, babilejo kaj ĉambra informo</caption>
|
||||||
<caption xml:lang="es">Vista principal con la lista de salas, chat e información de la sala</caption>
|
<caption xml:lang="es">Vista principal con la lista de salas, chat e información de la sala</caption>
|
||||||
@@ -395,6 +404,7 @@
|
|||||||
<caption xml:lang="ca">Pantalla d'inici de sessió</caption>
|
<caption xml:lang="ca">Pantalla d'inici de sessió</caption>
|
||||||
<caption xml:lang="ca-valencia">Pantalla d'inici de sessió</caption>
|
<caption xml:lang="ca-valencia">Pantalla d'inici de sessió</caption>
|
||||||
<caption xml:lang="cs">Přihlašovací obrazovka</caption>
|
<caption xml:lang="cs">Přihlašovací obrazovka</caption>
|
||||||
|
<caption xml:lang="de">Anmeldebildschirm</caption>
|
||||||
<caption xml:lang="en-GB">Login screen</caption>
|
<caption xml:lang="en-GB">Login screen</caption>
|
||||||
<caption xml:lang="eo">Ensaluta ekrano</caption>
|
<caption xml:lang="eo">Ensaluta ekrano</caption>
|
||||||
<caption xml:lang="es">Pantalla de inicio de sesión</caption>
|
<caption xml:lang="es">Pantalla de inicio de sesión</caption>
|
||||||
@@ -427,6 +437,9 @@
|
|||||||
<content_attribute id="social-chat">intense</content_attribute>
|
<content_attribute id="social-chat">intense</content_attribute>
|
||||||
</content_rating>
|
</content_rating>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="24.08.2" date="2024-10-10"/>
|
||||||
|
<release version="24.08.1" date="2024-09-12"/>
|
||||||
|
<release version="24.08.0" date="2024-08-22"/>
|
||||||
<release version="24.05.2" date="2024-07-04"/>
|
<release version="24.05.2" date="2024-07-04"/>
|
||||||
<release version="24.05.1" date="2024-06-13"/>
|
<release version="24.05.1" date="2024-06-13"/>
|
||||||
<release version="24.05.0" date="2024-05-23"/>
|
<release version="24.05.0" date="2024-05-23"/>
|
||||||
|
|||||||
426
po/ar/neochat.po
426
po/ar/neochat.po
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: neochat\n"
|
"Project-Id-Version: neochat\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2024-08-07 00:40+0000\n"
|
"POT-Creation-Date: 2024-10-07 02:28+0000\n"
|
||||||
"PO-Revision-Date: 2023-12-12 01:02+0100\n"
|
"PO-Revision-Date: 2023-12-12 01:02+0100\n"
|
||||||
"Last-Translator: Enol P. <enolp@softastur.org>\n"
|
"Last-Translator: Enol P. <enolp@softastur.org>\n"
|
||||||
"Language-Team: Asturian <alministradores@softastur.org>\n"
|
"Language-Team: Asturian <alministradores@softastur.org>\n"
|
||||||
@@ -88,7 +88,7 @@ msgctxt "@action:button"
|
|||||||
msgid "Cancel reply"
|
msgid "Cancel reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:132
|
#: src/controller.cpp:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"The reason for using push notifications, as in: '[Push notifications are "
|
"The reason for using push notifications, as in: '[Push notifications are "
|
||||||
@@ -96,47 +96,47 @@ msgctxt ""
|
|||||||
msgid "Receiving notifications for new messages"
|
msgid "Receiving notifications for new messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:211
|
#: src/controller.cpp:229
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error: %1"
|
msgid "Network Error: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access token wasn't found"
|
msgid "Access token wasn't found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Maybe it was deleted?"
|
msgid "Maybe it was deleted?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access to keychain was denied."
|
msgid "Access to keychain was denied."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please allow NeoChat to read the access token"
|
msgid "Please allow NeoChat to read the access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No keychain available."
|
msgid "No keychain available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:243
|
#: src/controller.cpp:265
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unable to read access token"
|
msgid "Unable to read access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:339
|
#: src/controller.cpp:357
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Receiving push notifications"
|
msgid "Receiving push notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -363,7 +363,7 @@ msgid "Custom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
||||||
#: src/models/userlistmodel.cpp:114
|
#: src/models/userlistmodel.cpp:118
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
||||||
@@ -372,13 +372,11 @@ msgid "%1 (%2)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
||||||
#: src/models/messagecontentmodel.cpp:236 src/models/messageeventmodel.cpp:440
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted]</i>"
|
msgid "<i>[This message was deleted]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/models/messagecontentmodel.cpp:237
|
#: src/eventhandler.cpp:297
|
||||||
#: src/models/messageeventmodel.cpp:441
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted: %1]</i>"
|
msgid "<i>[This message was deleted: %1]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -738,12 +736,12 @@ msgctxt "The location being downloaded to"
|
|||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:90 src/login.cpp:105
|
#: src/login.cpp:88 src/login.cpp:103
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error"
|
msgid "Network Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:98
|
#: src/login.cpp:96
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Login Failed: %1"
|
msgid "Login Failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -812,7 +810,7 @@ msgid "Loading…"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
@@ -853,7 +851,7 @@ msgstr ""
|
|||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:152
|
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:149
|
||||||
#: src/settings/NetworkProxyPage.qml:95
|
#: src/settings/NetworkProxyPage.qml:95
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
@@ -1457,7 +1455,7 @@ msgctxt "As in 'The user's own emojis"
|
|||||||
msgid "Own Emojis"
|
msgid "Own Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/messagecontentmodel.cpp:229
|
#: src/models/messagecontentmodel.cpp:223
|
||||||
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Loading reply"
|
msgid "Loading reply"
|
||||||
@@ -1692,13 +1690,13 @@ msgctxt "Notification type"
|
|||||||
msgid "Call invitation"
|
msgid "Call invitation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:69
|
#: src/models/reactionmodel.cpp:64
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Separate the usernames of users"
|
msgctxt "Separate the usernames of users"
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:76
|
#: src/models/reactionmodel.cpp:71
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%1 is the number of other users"
|
msgctxt "%1 is the number of other users"
|
||||||
msgid " and %1 other"
|
msgid " and %1 other"
|
||||||
@@ -1706,7 +1704,7 @@ msgid_plural " and %1 others"
|
|||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:80
|
#: src/models/reactionmodel.cpp:75
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
||||||
msgid "%2 reacted with %3"
|
msgid "%2 reacted with %3"
|
||||||
@@ -1759,139 +1757,133 @@ msgstr ""
|
|||||||
msgid "Space creation failed: %1"
|
msgid "Space creation failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1403
|
#: src/neochatroom.cpp:1439
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Report sent successfully."
|
msgid "Report sent successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1724 src/neochatroom.cpp:1732
|
#: src/neochatroom.cpp:1764 src/neochatroom.cpp:1772
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
||||||
msgid "Lat: %1, Lon: %2"
|
msgid "Lat: %1, Lon: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:330
|
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:334
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encrypted Message"
|
msgid "Encrypted Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:210 src/qml/Main.qml:279
|
#: src/notificationsmanager.cpp:214 src/qml/Main.qml:279
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1: %2"
|
msgid "%1: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:216
|
#: src/notificationsmanager.cpp:220
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat in this room"
|
msgid "Open NeoChat in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:229 src/qml/DelegateContextMenu.qml:98
|
#: src/notificationsmanager.cpp:233 src/qml/DelegateContextMenu.qml:98
|
||||||
#: src/qml/HoverActions.qml:111
|
#: src/qml/HoverActions.qml:111
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply"
|
msgid "Reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:230
|
#: src/notificationsmanager.cpp:234
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply..."
|
msgid "Reply..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:249
|
#: src/notificationsmanager.cpp:253
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 invited you to a room"
|
msgid "%1 invited you to a room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:252
|
#: src/notificationsmanager.cpp:256
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open this invitation in NeoChat"
|
msgid "Open this invitation in NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:262
|
#: src/notificationsmanager.cpp:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:263
|
#: src/notificationsmanager.cpp:267
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:264
|
#: src/notificationsmanager.cpp:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject and Ignore User"
|
msgid "Reject and Ignore User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:323
|
#: src/notificationsmanager.cpp:327
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 (%2)"
|
msgid "%1 (%2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:334
|
#: src/notificationsmanager.cpp:338
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat"
|
msgid "Open NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:23
|
#: src/qml/AccountMenu.qml:23 src/qml/UserInfo.qml:46
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Show QR code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:39 src/qml/UserInfo.qml:46
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Edit this account"
|
msgid "Edit this account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:44 src/settings/AccountsPage.qml:34
|
#: src/qml/AccountMenu.qml:28 src/settings/AccountsPage.qml:34
|
||||||
#: src/settings/AccountsPage.qml:51
|
#: src/settings/AccountsPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Account editor"
|
msgid "Account editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:48
|
#: src/qml/AccountMenu.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:55 src/settings/DevicesPage.qml:17
|
#: src/qml/AccountMenu.qml:39 src/settings/DevicesPage.qml:17
|
||||||
#: src/settings/NeoChatSettingsView.qml:85
|
#: src/settings/NeoChatSettingsView.qml:85
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Devices"
|
msgid "Devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:62 src/settings/NeoChatGeneralPage.qml:241
|
#: src/qml/AccountMenu.qml:46 src/settings/NeoChatGeneralPage.qml:241
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open developer tools"
|
msgid "Open developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:68
|
#: src/qml/AccountMenu.qml:52
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Developer Tools"
|
msgid "Developer Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:74
|
#: src/qml/AccountMenu.qml:58
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Open Secret Backup"
|
msgid "Open Secret Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:78
|
#: src/qml/AccountMenu.qml:62
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Open Key Backup"
|
msgid "Open Key Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:82
|
#: src/qml/AccountMenu.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Verify this Device"
|
msgid "Verify this Device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:88 src/settings/AccountsPage.qml:88
|
#: src/qml/AccountMenu.qml:72 src/settings/AccountsPage.qml:88
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2194,8 +2186,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
||||||
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
||||||
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:272
|
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
|
||||||
#: src/qml/SpaceDrawer.qml:274
|
#: src/qml/SpaceDrawer.qml:296
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Create a Space"
|
msgid "Create a Space"
|
||||||
@@ -2228,7 +2220,7 @@ msgstr ""
|
|||||||
msgid "Space"
|
msgid "Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:77
|
#: src/qml/CreateRoomDialog.qml:77 src/settings/AccountEditorPage.qml:106
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Name:"
|
msgid "Name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2866,13 +2858,13 @@ msgstr ""
|
|||||||
msgid "Send this location"
|
msgid "Send this location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:125
|
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:127
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Locations on a map"
|
msgctxt "Locations on a map"
|
||||||
msgid "Locations"
|
msgid "Locations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:65
|
#: src/qml/LocationsPage.qml:68
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "There are no locations shared in this room."
|
msgid "There are no locations shared in this room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3118,12 +3110,12 @@ msgstr ""
|
|||||||
msgid "Reason for reporting this message"
|
msgid "Reason for reporting this message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:112
|
#: src/qml/RoomDelegate.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Muted room"
|
msgid "Muted room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:145
|
#: src/qml/RoomDelegate.qml:141
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Configure room"
|
msgid "Configure room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3144,86 +3136,86 @@ msgstr ""
|
|||||||
msgid "Media"
|
msgid "Media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Space Members"
|
msgid "Space Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Room information"
|
msgid "Room information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:68
|
#: src/qml/RoomInformation.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Room actions"
|
msgctxt "Room actions"
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:78
|
#: src/qml/RoomInformation.qml:80
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search in this room"
|
msgid "Search in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:87
|
#: src/qml/RoomInformation.qml:89
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:95
|
#: src/qml/RoomInformation.qml:97
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Verify user"
|
msgid "Verify user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove room from favorites"
|
msgid "Remove room from favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Favorite this room"
|
msgid "Favorite this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:119
|
#: src/qml/RoomInformation.qml:121
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Show locations for this room"
|
msgid "Show locations for this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:134
|
#: src/qml/RoomInformation.qml:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Leave this room"
|
msgid "Leave this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:147
|
#: src/qml/RoomInformation.qml:149
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:162 src/qml/SpaceHomePage.qml:55
|
#: src/qml/RoomInformation.qml:164 src/qml/SpaceHomePage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Invite a User"
|
msgid "Invite a User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:166
|
#: src/qml/RoomInformation.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Invite user to room"
|
msgid "Invite user to room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 member"
|
msgid "%1 member"
|
||||||
msgid_plural "%1 members"
|
msgid_plural "%1 members"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No member count"
|
msgid "No member count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3270,12 +3262,7 @@ msgstr ""
|
|||||||
msgid "NeoChat is offline. Please check your network connection."
|
msgid "NeoChat is offline. Please check your network connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:158
|
#: src/qml/RoomPage.qml:264
|
||||||
#, kde-format
|
|
||||||
msgid "Select or join a room to get started"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:265
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Message Source"
|
msgid "Message Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3430,19 +3417,19 @@ msgstr ""
|
|||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:135
|
#: src/qml/SpaceDrawer.qml:134
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@button View all one-on-one chats with your friends."
|
msgctxt "@button View all one-on-one chats with your friends."
|
||||||
msgid "Friends"
|
msgid "Friends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:220
|
#: src/qml/SpaceDrawer.qml:242
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Join <name of a space>"
|
msgctxt "Join <name of a space>"
|
||||||
msgid "Join %1"
|
msgid "Join %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:262
|
#: src/qml/SpaceDrawer.qml:284
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Create a space"
|
msgid "Create a space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3529,27 +3516,27 @@ msgctxt "'Space' is a matrix space"
|
|||||||
msgid "Leave Space"
|
msgid "Leave Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to first unread message"
|
msgid "Jump to first unread message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to oldest loaded message"
|
msgid "Jump to oldest loaded message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:236
|
#: src/qml/TimelineView.qml:245
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to latest message"
|
msgid "Jump to latest message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:261
|
#: src/qml/TimelineView.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Drag items here to share them"
|
msgid "Drag items here to share them"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:268
|
#: src/qml/TimelineView.qml:277
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Message displayed when some users are typing"
|
msgctxt "Message displayed when some users are typing"
|
||||||
msgid "%2 is typing"
|
msgid "%2 is typing"
|
||||||
@@ -3891,72 +3878,72 @@ msgstr ""
|
|||||||
msgid "The session verification was canceled due to an unknown error."
|
msgid "The session verification was canceled due to an unknown error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:311
|
#: src/registration.cpp:309
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No server."
|
msgid "No server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:313
|
#: src/registration.cpp:311
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking Server availability."
|
msgid "Checking Server availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:315
|
#: src/registration.cpp:313
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This is not a valid server."
|
msgid "This is not a valid server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:317
|
#: src/registration.cpp:315
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Registration for this server is disabled."
|
msgid "Registration for this server is disabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:319
|
#: src/registration.cpp:317
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No username."
|
msgid "No username."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:321
|
#: src/registration.cpp:319
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking username availability."
|
msgid "Checking username availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:323
|
#: src/registration.cpp:321
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This username is not available."
|
msgid "This username is not available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:325
|
#: src/registration.cpp:323
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:327
|
#: src/registration.cpp:325
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Working"
|
msgid "Working"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Malformed or empty Matrix id"
|
msgid "Malformed or empty Matrix id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 is not a correct Matrix identifier"
|
msgid "%1 is not a correct Matrix identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:345
|
#: src/roommanager.cpp:352
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to join room"
|
msgid "Failed to join room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:377
|
#: src/roommanager.cpp:388
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "You requested to join '%1'"
|
msgid "You requested to join '%1'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:381
|
#: src/roommanager.cpp:392
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to request joining room"
|
msgid "Failed to request joining room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3978,12 +3965,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:101
|
#: src/settings/AccountEditorPage.qml:101
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "User Information"
|
msgid "User information"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:106
|
|
||||||
#, kde-format
|
|
||||||
msgid "Display Name:"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:112
|
#: src/settings/AccountEditorPage.qml:112
|
||||||
@@ -3991,101 +3973,96 @@ msgstr ""
|
|||||||
msgid "Label:"
|
msgid "Label:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:113
|
#: src/settings/AccountEditorPage.qml:117
|
||||||
#, kde-format
|
|
||||||
msgid "Work"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:118
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Show QR Code"
|
msgid "QR code for account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:135
|
#: src/settings/AccountEditorPage.qml:133
|
||||||
#: src/settings/AccountEditorPage.qml:191
|
#: src/settings/AccountEditorPage.qml:188
|
||||||
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:157
|
#: src/settings/AccountEditorPage.qml:154
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server doesn't support changing your password"
|
msgid "Your server doesn't support changing your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:164
|
#: src/settings/AccountEditorPage.qml:161
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Current Password:"
|
msgid "Current Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:171
|
#: src/settings/AccountEditorPage.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "New Password:"
|
msgid "New Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:178
|
#: src/settings/AccountEditorPage.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Confirm new Password:"
|
msgid "Confirm new Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:183
|
#: src/settings/AccountEditorPage.qml:180
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords don't match"
|
msgid "Passwords don't match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:198
|
#: src/settings/AccountEditorPage.qml:194
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:205
|
#: src/settings/AccountEditorPage.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Email Addresses"
|
msgid "Email Addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:211
|
#: src/settings/AccountEditorPage.qml:207
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Phone Numbers"
|
msgid "Phone Numbers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:216
|
#: src/settings/AccountEditorPage.qml:212
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Identity Server"
|
msgid "Identity Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:225
|
#: src/settings/AccountEditorPage.qml:221
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Server Information"
|
msgid "Server Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:229
|
#: src/settings/AccountEditorPage.qml:225
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Homeserver url"
|
msgid "Homeserver url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:250
|
#: src/settings/AccountEditorPage.qml:246
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Account Management"
|
msgid "Account Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:255
|
#: src/settings/AccountEditorPage.qml:251
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Deactivate Account"
|
msgid "Deactivate Account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:271
|
#: src/settings/AccountEditorPage.qml:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password changed successfully"
|
msgid "Password changed successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:273
|
#: src/settings/AccountEditorPage.qml:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Wrong password entered"
|
msgid "Wrong password entered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:275
|
#: src/settings/AccountEditorPage.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown problem while trying to change password"
|
msgid "Unknown problem while trying to change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4326,44 +4303,6 @@ msgctxt "@title"
|
|||||||
msgid "Stickers & Emojis"
|
msgid "Stickers & Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:18
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:101
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Export Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:33 src/settings/ImportKeysDialog.qml:51
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@label:textbox"
|
|
||||||
msgid "Passphrase:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:37
|
|
||||||
#, kde-format
|
|
||||||
msgid ""
|
|
||||||
"A passphrase to secure your key backup. It should not be your account "
|
|
||||||
"password."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:42
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:50
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys exported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:54 src/settings/ImportKeysDialog.qml:74
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Unknown error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/GlobalNotificationsPage.qml:19
|
#: src/settings/GlobalNotificationsPage.qml:19
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4463,48 +4402,25 @@ msgctxt "@title"
|
|||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:25
|
#: src/settings/IgnoredUsersDialog.qml:24
|
||||||
|
#: src/settings/NeoChatSecurityPage.qml:35
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Placeholder message when no user is ignored"
|
msgctxt "@title:group"
|
||||||
msgid "No ignored users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:55
|
#: src/settings/IgnoredUsersDialog.qml:29
|
||||||
|
#, kde-format
|
||||||
|
msgctxt "Placeholder message when no user is ignored"
|
||||||
|
msgid "You are not ignoring any users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/settings/IgnoredUsersDialog.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Unignore this user"
|
msgid "Unignore this user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:22 src/settings/NeoChatSecurityPage.qml:84
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Import Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:35
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Choose backup file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:56
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:66
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid passphrase"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:70
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid key backup data"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatGeneralPage.qml:20
|
#: src/settings/NeoChatGeneralPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4609,99 +4525,69 @@ msgstr ""
|
|||||||
msgid "Enable developer tools"
|
msgid "Enable developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:18
|
#: src/settings/NeoChatSecurityPage.qml:17
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Security"
|
msgid "Security"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:28
|
#: src/settings/NeoChatSecurityPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:group"
|
msgctxt "@title:group"
|
||||||
msgid "Invitations"
|
msgid "Invitations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:32
|
#: src/settings/NeoChatSecurityPage.qml:24
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
msgid "Reject invitations from unknown users"
|
msgid "Reject invitations from unknown users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, NeoChat will reject invitations from users you don't share a "
|
"If enabled, NeoChat will reject invitations from from users you don't share "
|
||||||
"room with."
|
"a room with."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server does not support this setting."
|
msgid "Your server does not support this setting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:43
|
#: src/settings/NeoChatSecurityPage.qml:39
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title:group"
|
|
||||||
msgid "Ignored Users"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:47
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Manage ignored users"
|
msgid "Manage ignored users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:49
|
#: src/settings/NeoChatSecurityPage.qml:41
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:54
|
#: src/settings/NeoChatSecurityPage.qml:46
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Keys"
|
msgid "Keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:59
|
#: src/settings/NeoChatSecurityPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device key"
|
msgid "Device key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:63
|
#: src/settings/NeoChatSecurityPage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encryption key"
|
msgid "Encryption key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:67
|
#: src/settings/NeoChatSecurityPage.qml:59
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device id"
|
msgid "Device id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:73
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:78
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:87
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys imported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:95
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
||||||
#: src/settings/RoomSettingsView.qml:39
|
#: src/settings/RoomSettingsView.qml:39
|
||||||
#, kde-format
|
#, kde-format
|
||||||
@@ -5239,13 +5125,13 @@ msgstr ""
|
|||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Email Address:"
|
msgid "New email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Phone Number:"
|
msgid "New phone number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
||||||
@@ -5293,13 +5179,13 @@ msgid ""
|
|||||||
"follow the instructions there and then click the button below"
|
"follow the instructions there and then click the button below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button Add new email or phone number"
|
msgctxt "@action:button Add new email or phone number"
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:191
|
#: src/settings/ThreePIdCard.qml:189
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button As in 'go back'"
|
msgctxt "@action:button As in 'go back'"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
|
|||||||
422
po/az/neochat.po
422
po/az/neochat.po
File diff suppressed because it is too large
Load Diff
582
po/ca/neochat.po
582
po/ca/neochat.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
464
po/cs/neochat.po
464
po/cs/neochat.po
File diff suppressed because it is too large
Load Diff
413
po/da/neochat.po
413
po/da/neochat.po
File diff suppressed because it is too large
Load Diff
1703
po/de/neochat.po
1703
po/de/neochat.po
File diff suppressed because it is too large
Load Diff
424
po/el/neochat.po
424
po/el/neochat.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
420
po/eo/neochat.po
420
po/eo/neochat.po
File diff suppressed because it is too large
Load Diff
410
po/es/neochat.po
410
po/es/neochat.po
File diff suppressed because it is too large
Load Diff
435
po/eu/neochat.po
435
po/eu/neochat.po
File diff suppressed because it is too large
Load Diff
426
po/fi/neochat.po
426
po/fi/neochat.po
File diff suppressed because it is too large
Load Diff
463
po/fr/neochat.po
463
po/fr/neochat.po
File diff suppressed because it is too large
Load Diff
403
po/gl/neochat.po
403
po/gl/neochat.po
File diff suppressed because it is too large
Load Diff
440
po/hu/neochat.po
440
po/hu/neochat.po
File diff suppressed because it is too large
Load Diff
418
po/ia/neochat.po
418
po/ia/neochat.po
File diff suppressed because it is too large
Load Diff
425
po/id/neochat.po
425
po/id/neochat.po
File diff suppressed because it is too large
Load Diff
414
po/ie/neochat.po
414
po/ie/neochat.po
File diff suppressed because it is too large
Load Diff
414
po/it/neochat.po
414
po/it/neochat.po
File diff suppressed because it is too large
Load Diff
392
po/ja/neochat.po
392
po/ja/neochat.po
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: neochat\n"
|
"Project-Id-Version: neochat\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2024-08-07 00:40+0000\n"
|
"POT-Creation-Date: 2024-10-07 02:28+0000\n"
|
||||||
"PO-Revision-Date: 2020-11-05 23:50-0800\n"
|
"PO-Revision-Date: 2020-11-05 23:50-0800\n"
|
||||||
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
|
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
|
||||||
"Language-Team: Japanese <kde-jp@kde.org>\n"
|
"Language-Team: Japanese <kde-jp@kde.org>\n"
|
||||||
@@ -85,7 +85,7 @@ msgctxt "@action:button"
|
|||||||
msgid "Cancel reply"
|
msgid "Cancel reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:132
|
#: src/controller.cpp:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"The reason for using push notifications, as in: '[Push notifications are "
|
"The reason for using push notifications, as in: '[Push notifications are "
|
||||||
@@ -93,47 +93,47 @@ msgctxt ""
|
|||||||
msgid "Receiving notifications for new messages"
|
msgid "Receiving notifications for new messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:211
|
#: src/controller.cpp:229
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error: %1"
|
msgid "Network Error: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access token wasn't found"
|
msgid "Access token wasn't found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Maybe it was deleted?"
|
msgid "Maybe it was deleted?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access to keychain was denied."
|
msgid "Access to keychain was denied."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please allow NeoChat to read the access token"
|
msgid "Please allow NeoChat to read the access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No keychain available."
|
msgid "No keychain available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:243
|
#: src/controller.cpp:265
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unable to read access token"
|
msgid "Unable to read access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:339
|
#: src/controller.cpp:357
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Receiving push notifications"
|
msgid "Receiving push notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -359,7 +359,7 @@ msgid "Custom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
||||||
#: src/models/userlistmodel.cpp:114
|
#: src/models/userlistmodel.cpp:118
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
||||||
@@ -368,13 +368,11 @@ msgid "%1 (%2)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
||||||
#: src/models/messagecontentmodel.cpp:236 src/models/messageeventmodel.cpp:440
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted]</i>"
|
msgid "<i>[This message was deleted]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/models/messagecontentmodel.cpp:237
|
#: src/eventhandler.cpp:297
|
||||||
#: src/models/messageeventmodel.cpp:441
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted: %1]</i>"
|
msgid "<i>[This message was deleted: %1]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -734,12 +732,12 @@ msgctxt "The location being downloaded to"
|
|||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:90 src/login.cpp:105
|
#: src/login.cpp:88 src/login.cpp:103
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error"
|
msgid "Network Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:98
|
#: src/login.cpp:96
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Login Failed: %1"
|
msgid "Login Failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -808,7 +806,7 @@ msgid "Loading…"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
@@ -849,7 +847,7 @@ msgstr ""
|
|||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:152
|
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:149
|
||||||
#: src/settings/NetworkProxyPage.qml:95
|
#: src/settings/NetworkProxyPage.qml:95
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
@@ -1453,7 +1451,7 @@ msgctxt "As in 'The user's own emojis"
|
|||||||
msgid "Own Emojis"
|
msgid "Own Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/messagecontentmodel.cpp:229
|
#: src/models/messagecontentmodel.cpp:223
|
||||||
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Loading reply"
|
msgid "Loading reply"
|
||||||
@@ -1686,20 +1684,20 @@ msgctxt "Notification type"
|
|||||||
msgid "Call invitation"
|
msgid "Call invitation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:69
|
#: src/models/reactionmodel.cpp:64
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Separate the usernames of users"
|
msgctxt "Separate the usernames of users"
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:76
|
#: src/models/reactionmodel.cpp:71
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%1 is the number of other users"
|
msgctxt "%1 is the number of other users"
|
||||||
msgid " and %1 other"
|
msgid " and %1 other"
|
||||||
msgid_plural " and %1 others"
|
msgid_plural " and %1 others"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:80
|
#: src/models/reactionmodel.cpp:75
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
||||||
msgid "%2 reacted with %3"
|
msgid "%2 reacted with %3"
|
||||||
@@ -1750,139 +1748,133 @@ msgstr ""
|
|||||||
msgid "Space creation failed: %1"
|
msgid "Space creation failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1403
|
#: src/neochatroom.cpp:1439
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Report sent successfully."
|
msgid "Report sent successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1724 src/neochatroom.cpp:1732
|
#: src/neochatroom.cpp:1764 src/neochatroom.cpp:1772
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
||||||
msgid "Lat: %1, Lon: %2"
|
msgid "Lat: %1, Lon: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:330
|
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:334
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encrypted Message"
|
msgid "Encrypted Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:210 src/qml/Main.qml:279
|
#: src/notificationsmanager.cpp:214 src/qml/Main.qml:279
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1: %2"
|
msgid "%1: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:216
|
#: src/notificationsmanager.cpp:220
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat in this room"
|
msgid "Open NeoChat in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:229 src/qml/DelegateContextMenu.qml:98
|
#: src/notificationsmanager.cpp:233 src/qml/DelegateContextMenu.qml:98
|
||||||
#: src/qml/HoverActions.qml:111
|
#: src/qml/HoverActions.qml:111
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply"
|
msgid "Reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:230
|
#: src/notificationsmanager.cpp:234
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply..."
|
msgid "Reply..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:249
|
#: src/notificationsmanager.cpp:253
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 invited you to a room"
|
msgid "%1 invited you to a room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:252
|
#: src/notificationsmanager.cpp:256
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open this invitation in NeoChat"
|
msgid "Open this invitation in NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:262
|
#: src/notificationsmanager.cpp:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:263
|
#: src/notificationsmanager.cpp:267
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:264
|
#: src/notificationsmanager.cpp:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject and Ignore User"
|
msgid "Reject and Ignore User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:323
|
#: src/notificationsmanager.cpp:327
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 (%2)"
|
msgid "%1 (%2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:334
|
#: src/notificationsmanager.cpp:338
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat"
|
msgid "Open NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:23
|
#: src/qml/AccountMenu.qml:23 src/qml/UserInfo.qml:46
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Show QR code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:39 src/qml/UserInfo.qml:46
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Edit this account"
|
msgid "Edit this account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:44 src/settings/AccountsPage.qml:34
|
#: src/qml/AccountMenu.qml:28 src/settings/AccountsPage.qml:34
|
||||||
#: src/settings/AccountsPage.qml:51
|
#: src/settings/AccountsPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Account editor"
|
msgid "Account editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:48
|
#: src/qml/AccountMenu.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:55 src/settings/DevicesPage.qml:17
|
#: src/qml/AccountMenu.qml:39 src/settings/DevicesPage.qml:17
|
||||||
#: src/settings/NeoChatSettingsView.qml:85
|
#: src/settings/NeoChatSettingsView.qml:85
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Devices"
|
msgid "Devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:62 src/settings/NeoChatGeneralPage.qml:241
|
#: src/qml/AccountMenu.qml:46 src/settings/NeoChatGeneralPage.qml:241
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open developer tools"
|
msgid "Open developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:68
|
#: src/qml/AccountMenu.qml:52
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Developer Tools"
|
msgid "Developer Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:74
|
#: src/qml/AccountMenu.qml:58
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Open Secret Backup"
|
msgid "Open Secret Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:78
|
#: src/qml/AccountMenu.qml:62
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Open Key Backup"
|
msgid "Open Key Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:82
|
#: src/qml/AccountMenu.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Verify this Device"
|
msgid "Verify this Device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:88 src/settings/AccountsPage.qml:88
|
#: src/qml/AccountMenu.qml:72 src/settings/AccountsPage.qml:88
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2185,8 +2177,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
||||||
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
||||||
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:272
|
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
|
||||||
#: src/qml/SpaceDrawer.qml:274
|
#: src/qml/SpaceDrawer.qml:296
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Create a Space"
|
msgid "Create a Space"
|
||||||
@@ -2219,7 +2211,7 @@ msgstr ""
|
|||||||
msgid "Space"
|
msgid "Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:77
|
#: src/qml/CreateRoomDialog.qml:77 src/settings/AccountEditorPage.qml:106
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Name:"
|
msgid "Name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2857,13 +2849,13 @@ msgstr ""
|
|||||||
msgid "Send this location"
|
msgid "Send this location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:125
|
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:127
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Locations on a map"
|
msgctxt "Locations on a map"
|
||||||
msgid "Locations"
|
msgid "Locations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:65
|
#: src/qml/LocationsPage.qml:68
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "There are no locations shared in this room."
|
msgid "There are no locations shared in this room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3109,12 +3101,12 @@ msgstr ""
|
|||||||
msgid "Reason for reporting this message"
|
msgid "Reason for reporting this message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:112
|
#: src/qml/RoomDelegate.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Muted room"
|
msgid "Muted room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:145
|
#: src/qml/RoomDelegate.qml:141
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Configure room"
|
msgid "Configure room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3135,85 +3127,85 @@ msgstr ""
|
|||||||
msgid "Media"
|
msgid "Media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Space Members"
|
msgid "Space Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Room information"
|
msgid "Room information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:68
|
#: src/qml/RoomInformation.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Room actions"
|
msgctxt "Room actions"
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:78
|
#: src/qml/RoomInformation.qml:80
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search in this room"
|
msgid "Search in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:87
|
#: src/qml/RoomInformation.qml:89
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:95
|
#: src/qml/RoomInformation.qml:97
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Verify user"
|
msgid "Verify user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove room from favorites"
|
msgid "Remove room from favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Favorite this room"
|
msgid "Favorite this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:119
|
#: src/qml/RoomInformation.qml:121
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Show locations for this room"
|
msgid "Show locations for this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:134
|
#: src/qml/RoomInformation.qml:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Leave this room"
|
msgid "Leave this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:147
|
#: src/qml/RoomInformation.qml:149
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:162 src/qml/SpaceHomePage.qml:55
|
#: src/qml/RoomInformation.qml:164 src/qml/SpaceHomePage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Invite a User"
|
msgid "Invite a User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:166
|
#: src/qml/RoomInformation.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Invite user to room"
|
msgid "Invite user to room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 member"
|
msgid "%1 member"
|
||||||
msgid_plural "%1 members"
|
msgid_plural "%1 members"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No member count"
|
msgid "No member count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3260,12 +3252,7 @@ msgstr ""
|
|||||||
msgid "NeoChat is offline. Please check your network connection."
|
msgid "NeoChat is offline. Please check your network connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:158
|
#: src/qml/RoomPage.qml:264
|
||||||
#, kde-format
|
|
||||||
msgid "Select or join a room to get started"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:265
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Message Source"
|
msgid "Message Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3420,19 +3407,19 @@ msgstr ""
|
|||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:135
|
#: src/qml/SpaceDrawer.qml:134
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@button View all one-on-one chats with your friends."
|
msgctxt "@button View all one-on-one chats with your friends."
|
||||||
msgid "Friends"
|
msgid "Friends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:220
|
#: src/qml/SpaceDrawer.qml:242
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Join <name of a space>"
|
msgctxt "Join <name of a space>"
|
||||||
msgid "Join %1"
|
msgid "Join %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:262
|
#: src/qml/SpaceDrawer.qml:284
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Create a space"
|
msgid "Create a space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3517,27 +3504,27 @@ msgctxt "'Space' is a matrix space"
|
|||||||
msgid "Leave Space"
|
msgid "Leave Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to first unread message"
|
msgid "Jump to first unread message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to oldest loaded message"
|
msgid "Jump to oldest loaded message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:236
|
#: src/qml/TimelineView.qml:245
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to latest message"
|
msgid "Jump to latest message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:261
|
#: src/qml/TimelineView.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Drag items here to share them"
|
msgid "Drag items here to share them"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:268
|
#: src/qml/TimelineView.qml:277
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Message displayed when some users are typing"
|
msgctxt "Message displayed when some users are typing"
|
||||||
msgid "%2 is typing"
|
msgid "%2 is typing"
|
||||||
@@ -3878,72 +3865,72 @@ msgstr ""
|
|||||||
msgid "The session verification was canceled due to an unknown error."
|
msgid "The session verification was canceled due to an unknown error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:311
|
#: src/registration.cpp:309
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No server."
|
msgid "No server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:313
|
#: src/registration.cpp:311
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking Server availability."
|
msgid "Checking Server availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:315
|
#: src/registration.cpp:313
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This is not a valid server."
|
msgid "This is not a valid server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:317
|
#: src/registration.cpp:315
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Registration for this server is disabled."
|
msgid "Registration for this server is disabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:319
|
#: src/registration.cpp:317
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No username."
|
msgid "No username."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:321
|
#: src/registration.cpp:319
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking username availability."
|
msgid "Checking username availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:323
|
#: src/registration.cpp:321
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This username is not available."
|
msgid "This username is not available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:325
|
#: src/registration.cpp:323
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:327
|
#: src/registration.cpp:325
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Working"
|
msgid "Working"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Malformed or empty Matrix id"
|
msgid "Malformed or empty Matrix id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 is not a correct Matrix identifier"
|
msgid "%1 is not a correct Matrix identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:345
|
#: src/roommanager.cpp:352
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to join room"
|
msgid "Failed to join room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:377
|
#: src/roommanager.cpp:388
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "You requested to join '%1'"
|
msgid "You requested to join '%1'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:381
|
#: src/roommanager.cpp:392
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to request joining room"
|
msgid "Failed to request joining room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3965,12 +3952,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:101
|
#: src/settings/AccountEditorPage.qml:101
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "User Information"
|
msgid "User information"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:106
|
|
||||||
#, kde-format
|
|
||||||
msgid "Display Name:"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:112
|
#: src/settings/AccountEditorPage.qml:112
|
||||||
@@ -3978,101 +3960,96 @@ msgstr ""
|
|||||||
msgid "Label:"
|
msgid "Label:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:113
|
#: src/settings/AccountEditorPage.qml:117
|
||||||
#, kde-format
|
|
||||||
msgid "Work"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:118
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Show QR Code"
|
msgid "QR code for account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:135
|
#: src/settings/AccountEditorPage.qml:133
|
||||||
#: src/settings/AccountEditorPage.qml:191
|
#: src/settings/AccountEditorPage.qml:188
|
||||||
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:157
|
#: src/settings/AccountEditorPage.qml:154
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server doesn't support changing your password"
|
msgid "Your server doesn't support changing your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:164
|
#: src/settings/AccountEditorPage.qml:161
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Current Password:"
|
msgid "Current Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:171
|
#: src/settings/AccountEditorPage.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "New Password:"
|
msgid "New Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:178
|
#: src/settings/AccountEditorPage.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Confirm new Password:"
|
msgid "Confirm new Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:183
|
#: src/settings/AccountEditorPage.qml:180
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords don't match"
|
msgid "Passwords don't match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:198
|
#: src/settings/AccountEditorPage.qml:194
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:205
|
#: src/settings/AccountEditorPage.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Email Addresses"
|
msgid "Email Addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:211
|
#: src/settings/AccountEditorPage.qml:207
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Phone Numbers"
|
msgid "Phone Numbers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:216
|
#: src/settings/AccountEditorPage.qml:212
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Identity Server"
|
msgid "Identity Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:225
|
#: src/settings/AccountEditorPage.qml:221
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Server Information"
|
msgid "Server Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:229
|
#: src/settings/AccountEditorPage.qml:225
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Homeserver url"
|
msgid "Homeserver url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:250
|
#: src/settings/AccountEditorPage.qml:246
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Account Management"
|
msgid "Account Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:255
|
#: src/settings/AccountEditorPage.qml:251
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Deactivate Account"
|
msgid "Deactivate Account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:271
|
#: src/settings/AccountEditorPage.qml:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password changed successfully"
|
msgid "Password changed successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:273
|
#: src/settings/AccountEditorPage.qml:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Wrong password entered"
|
msgid "Wrong password entered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:275
|
#: src/settings/AccountEditorPage.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown problem while trying to change password"
|
msgid "Unknown problem while trying to change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4313,44 +4290,6 @@ msgctxt "@title"
|
|||||||
msgid "Stickers & Emojis"
|
msgid "Stickers & Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:18
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:101
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Export Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:33 src/settings/ImportKeysDialog.qml:51
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@label:textbox"
|
|
||||||
msgid "Passphrase:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:37
|
|
||||||
#, kde-format
|
|
||||||
msgid ""
|
|
||||||
"A passphrase to secure your key backup. It should not be your account "
|
|
||||||
"password."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:42
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:50
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys exported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:54 src/settings/ImportKeysDialog.qml:74
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Unknown error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/GlobalNotificationsPage.qml:19
|
#: src/settings/GlobalNotificationsPage.qml:19
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4450,48 +4389,25 @@ msgctxt "@title"
|
|||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:25
|
#: src/settings/IgnoredUsersDialog.qml:24
|
||||||
|
#: src/settings/NeoChatSecurityPage.qml:35
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Placeholder message when no user is ignored"
|
msgctxt "@title:group"
|
||||||
msgid "No ignored users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:55
|
#: src/settings/IgnoredUsersDialog.qml:29
|
||||||
|
#, kde-format
|
||||||
|
msgctxt "Placeholder message when no user is ignored"
|
||||||
|
msgid "You are not ignoring any users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/settings/IgnoredUsersDialog.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Unignore this user"
|
msgid "Unignore this user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:22 src/settings/NeoChatSecurityPage.qml:84
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Import Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:35
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Choose backup file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:56
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:66
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid passphrase"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:70
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid key backup data"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatGeneralPage.qml:20
|
#: src/settings/NeoChatGeneralPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4596,99 +4512,69 @@ msgstr ""
|
|||||||
msgid "Enable developer tools"
|
msgid "Enable developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:18
|
#: src/settings/NeoChatSecurityPage.qml:17
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Security"
|
msgid "Security"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:28
|
#: src/settings/NeoChatSecurityPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:group"
|
msgctxt "@title:group"
|
||||||
msgid "Invitations"
|
msgid "Invitations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:32
|
#: src/settings/NeoChatSecurityPage.qml:24
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
msgid "Reject invitations from unknown users"
|
msgid "Reject invitations from unknown users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, NeoChat will reject invitations from users you don't share a "
|
"If enabled, NeoChat will reject invitations from from users you don't share "
|
||||||
"room with."
|
"a room with."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server does not support this setting."
|
msgid "Your server does not support this setting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:43
|
#: src/settings/NeoChatSecurityPage.qml:39
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title:group"
|
|
||||||
msgid "Ignored Users"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:47
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Manage ignored users"
|
msgid "Manage ignored users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:49
|
#: src/settings/NeoChatSecurityPage.qml:41
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:54
|
#: src/settings/NeoChatSecurityPage.qml:46
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Keys"
|
msgid "Keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:59
|
#: src/settings/NeoChatSecurityPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device key"
|
msgid "Device key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:63
|
#: src/settings/NeoChatSecurityPage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encryption key"
|
msgid "Encryption key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:67
|
#: src/settings/NeoChatSecurityPage.qml:59
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device id"
|
msgid "Device id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:73
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:78
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:87
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys imported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:95
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
||||||
#: src/settings/RoomSettingsView.qml:39
|
#: src/settings/RoomSettingsView.qml:39
|
||||||
#, kde-format
|
#, kde-format
|
||||||
@@ -5226,13 +5112,13 @@ msgstr ""
|
|||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Email Address:"
|
msgid "New email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Phone Number:"
|
msgid "New phone number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
||||||
@@ -5280,13 +5166,13 @@ msgid ""
|
|||||||
"follow the instructions there and then click the button below"
|
"follow the instructions there and then click the button below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button Add new email or phone number"
|
msgctxt "@action:button Add new email or phone number"
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:191
|
#: src/settings/ThreePIdCard.qml:189
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button As in 'go back'"
|
msgctxt "@action:button As in 'go back'"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
|
|||||||
412
po/ka/neochat.po
412
po/ka/neochat.po
File diff suppressed because it is too large
Load Diff
427
po/ko/neochat.po
427
po/ko/neochat.po
File diff suppressed because it is too large
Load Diff
392
po/lt/neochat.po
392
po/lt/neochat.po
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: neochat\n"
|
"Project-Id-Version: neochat\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2024-08-07 00:40+0000\n"
|
"POT-Creation-Date: 2024-10-07 02:28+0000\n"
|
||||||
"PO-Revision-Date: 2023-02-25 01:00+0000\n"
|
"PO-Revision-Date: 2023-02-25 01:00+0000\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: none\n"
|
||||||
@@ -89,7 +89,7 @@ msgctxt "@action:button"
|
|||||||
msgid "Cancel reply"
|
msgid "Cancel reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:132
|
#: src/controller.cpp:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"The reason for using push notifications, as in: '[Push notifications are "
|
"The reason for using push notifications, as in: '[Push notifications are "
|
||||||
@@ -97,47 +97,47 @@ msgctxt ""
|
|||||||
msgid "Receiving notifications for new messages"
|
msgid "Receiving notifications for new messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:211
|
#: src/controller.cpp:229
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error: %1"
|
msgid "Network Error: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access token wasn't found"
|
msgid "Access token wasn't found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:233
|
#: src/controller.cpp:255
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Maybe it was deleted?"
|
msgid "Maybe it was deleted?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Access to keychain was denied."
|
msgid "Access to keychain was denied."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:237
|
#: src/controller.cpp:259
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please allow NeoChat to read the access token"
|
msgid "Please allow NeoChat to read the access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No keychain available."
|
msgid "No keychain available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:240
|
#: src/controller.cpp:262
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
msgid "Please install a keychain, e.g. KWallet or GNOME keyring on Linux"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:243
|
#: src/controller.cpp:265
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unable to read access token"
|
msgid "Unable to read access token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/controller.cpp:339
|
#: src/controller.cpp:357
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Receiving push notifications"
|
msgid "Receiving push notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -366,7 +366,7 @@ msgid "Custom"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
#: src/enums/powerlevel.cpp:88 src/models/permissionsmodel.cpp:162
|
||||||
#: src/models/userlistmodel.cpp:114
|
#: src/models/userlistmodel.cpp:118
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt ""
|
msgctxt ""
|
||||||
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
"%1 is the name of the power level, e.g. admin and %2 is the value that "
|
||||||
@@ -375,13 +375,11 @@ msgid "%1 (%2)"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
#: src/eventhandler.cpp:297 src/eventhandler.cpp:505
|
||||||
#: src/models/messagecontentmodel.cpp:236 src/models/messageeventmodel.cpp:440
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted]</i>"
|
msgid "<i>[This message was deleted]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/eventhandler.cpp:297 src/models/messagecontentmodel.cpp:237
|
#: src/eventhandler.cpp:297
|
||||||
#: src/models/messageeventmodel.cpp:441
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "<i>[This message was deleted: %1]</i>"
|
msgid "<i>[This message was deleted: %1]</i>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -741,12 +739,12 @@ msgctxt "The location being downloaded to"
|
|||||||
msgid "Destination"
|
msgid "Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:90 src/login.cpp:105
|
#: src/login.cpp:88 src/login.cpp:103
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Network Error"
|
msgid "Network Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login.cpp:98
|
#: src/login.cpp:96
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Login Failed: %1"
|
msgid "Login Failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -815,7 +813,7 @@ msgid "Loading…"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
#: src/login/Login.qml:38 src/login/WelcomePage.qml:198
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
@@ -856,7 +854,7 @@ msgstr ""
|
|||||||
msgid "Password:"
|
msgid "Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:152
|
#: src/login/Password.qml:32 src/settings/AccountEditorPage.qml:149
|
||||||
#: src/settings/NetworkProxyPage.qml:95
|
#: src/settings/NetworkProxyPage.qml:95
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
@@ -1460,7 +1458,7 @@ msgctxt "As in 'The user's own emojis"
|
|||||||
msgid "Own Emojis"
|
msgid "Own Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/messagecontentmodel.cpp:229
|
#: src/models/messagecontentmodel.cpp:223
|
||||||
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
#: src/timeline/LinkPreviewLoadComponent.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Loading reply"
|
msgid "Loading reply"
|
||||||
@@ -1698,13 +1696,13 @@ msgctxt "Notification type"
|
|||||||
msgid "Call invitation"
|
msgid "Call invitation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:69
|
#: src/models/reactionmodel.cpp:64
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Separate the usernames of users"
|
msgctxt "Separate the usernames of users"
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:76
|
#: src/models/reactionmodel.cpp:71
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%1 is the number of other users"
|
msgctxt "%1 is the number of other users"
|
||||||
msgid " and %1 other"
|
msgid " and %1 other"
|
||||||
@@ -1713,7 +1711,7 @@ msgstr[0] ""
|
|||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
msgstr[2] ""
|
msgstr[2] ""
|
||||||
|
|
||||||
#: src/models/reactionmodel.cpp:80
|
#: src/models/reactionmodel.cpp:75
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
msgctxt "%2 is the users who reacted and %3 the emoji that was given"
|
||||||
msgid "%2 reacted with %3"
|
msgid "%2 reacted with %3"
|
||||||
@@ -1769,139 +1767,133 @@ msgstr ""
|
|||||||
msgid "Space creation failed: %1"
|
msgid "Space creation failed: %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1403
|
#: src/neochatroom.cpp:1439
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Report sent successfully."
|
msgid "Report sent successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/neochatroom.cpp:1724 src/neochatroom.cpp:1732
|
#: src/neochatroom.cpp:1764 src/neochatroom.cpp:1772
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
|
||||||
msgid "Lat: %1, Lon: %2"
|
msgid "Lat: %1, Lon: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:330
|
#: src/notificationsmanager.cpp:126 src/notificationsmanager.cpp:334
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encrypted Message"
|
msgid "Encrypted Message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:210 src/qml/Main.qml:279
|
#: src/notificationsmanager.cpp:214 src/qml/Main.qml:279
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1: %2"
|
msgid "%1: %2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:216
|
#: src/notificationsmanager.cpp:220
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat in this room"
|
msgid "Open NeoChat in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:229 src/qml/DelegateContextMenu.qml:98
|
#: src/notificationsmanager.cpp:233 src/qml/DelegateContextMenu.qml:98
|
||||||
#: src/qml/HoverActions.qml:111
|
#: src/qml/HoverActions.qml:111
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply"
|
msgid "Reply"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:230
|
#: src/notificationsmanager.cpp:234
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Reply..."
|
msgid "Reply..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:249
|
#: src/notificationsmanager.cpp:253
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 invited you to a room"
|
msgid "%1 invited you to a room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:252
|
#: src/notificationsmanager.cpp:256
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open this invitation in NeoChat"
|
msgid "Open this invitation in NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:262
|
#: src/notificationsmanager.cpp:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
msgctxt "@action:button The thing being accepted is an invitation to chat"
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:263
|
#: src/notificationsmanager.cpp:267
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:264
|
#: src/notificationsmanager.cpp:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
msgctxt "@action:button The thing being rejected is an invitation to chat"
|
||||||
msgid "Reject and Ignore User"
|
msgid "Reject and Ignore User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:323
|
#: src/notificationsmanager.cpp:327
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 (%2)"
|
msgid "%1 (%2)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/notificationsmanager.cpp:334
|
#: src/notificationsmanager.cpp:338
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open NeoChat"
|
msgid "Open NeoChat"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:23
|
#: src/qml/AccountMenu.qml:23 src/qml/UserInfo.qml:46
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Show QR code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:39 src/qml/UserInfo.qml:46
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Edit this account"
|
msgid "Edit this account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:44 src/settings/AccountsPage.qml:34
|
#: src/qml/AccountMenu.qml:28 src/settings/AccountsPage.qml:34
|
||||||
#: src/settings/AccountsPage.qml:51
|
#: src/settings/AccountsPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Account editor"
|
msgid "Account editor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:48
|
#: src/qml/AccountMenu.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Notification settings"
|
msgid "Notification settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:55 src/settings/DevicesPage.qml:17
|
#: src/qml/AccountMenu.qml:39 src/settings/DevicesPage.qml:17
|
||||||
#: src/settings/NeoChatSettingsView.qml:85
|
#: src/settings/NeoChatSettingsView.qml:85
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Devices"
|
msgid "Devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:62 src/settings/NeoChatGeneralPage.qml:241
|
#: src/qml/AccountMenu.qml:46 src/settings/NeoChatGeneralPage.qml:241
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Open developer tools"
|
msgid "Open developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:68
|
#: src/qml/AccountMenu.qml:52
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Developer Tools"
|
msgid "Developer Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:74
|
#: src/qml/AccountMenu.qml:58
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Open Secret Backup"
|
msgid "Open Secret Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:78
|
#: src/qml/AccountMenu.qml:62
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Open Key Backup"
|
msgid "Open Key Backup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:82
|
#: src/qml/AccountMenu.qml:66
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:inmenu"
|
msgctxt "@action:inmenu"
|
||||||
msgid "Verify this Device"
|
msgid "Verify this Device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/AccountMenu.qml:88 src/settings/AccountsPage.qml:88
|
#: src/qml/AccountMenu.qml:72 src/settings/AccountsPage.qml:88
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2204,8 +2196,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
#: src/qml/CreateRoomDialog.qml:30 src/qml/ExploreComponent.qml:64
|
||||||
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
#: src/qml/ExploreComponent.qml:66 src/qml/ExploreComponentMobile.qml:162
|
||||||
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:272
|
#: src/qml/ExploreComponentMobile.qml:164 src/qml/SpaceDrawer.qml:294
|
||||||
#: src/qml/SpaceDrawer.qml:274
|
#: src/qml/SpaceDrawer.qml:296
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Create a Space"
|
msgid "Create a Space"
|
||||||
@@ -2238,7 +2230,7 @@ msgstr ""
|
|||||||
msgid "Space"
|
msgid "Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/CreateRoomDialog.qml:77
|
#: src/qml/CreateRoomDialog.qml:77 src/settings/AccountEditorPage.qml:106
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Name:"
|
msgid "Name:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2876,13 +2868,13 @@ msgstr ""
|
|||||||
msgid "Send this location"
|
msgid "Send this location"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:125
|
#: src/qml/LocationsPage.qml:16 src/qml/RoomInformation.qml:127
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Locations on a map"
|
msgctxt "Locations on a map"
|
||||||
msgid "Locations"
|
msgid "Locations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/LocationsPage.qml:65
|
#: src/qml/LocationsPage.qml:68
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "There are no locations shared in this room."
|
msgid "There are no locations shared in this room."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3128,12 +3120,12 @@ msgstr ""
|
|||||||
msgid "Reason for reporting this message"
|
msgid "Reason for reporting this message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:112
|
#: src/qml/RoomDelegate.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Muted room"
|
msgid "Muted room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomDelegate.qml:145
|
#: src/qml/RoomDelegate.qml:141
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Configure room"
|
msgid "Configure room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3154,79 +3146,79 @@ msgstr ""
|
|||||||
msgid "Media"
|
msgid "Media"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Space Members"
|
msgid "Space Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:40
|
#: src/qml/RoomInformation.qml:42
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Room information"
|
msgid "Room information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:68
|
#: src/qml/RoomInformation.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Room actions"
|
msgctxt "Room actions"
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:78
|
#: src/qml/RoomInformation.qml:80
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search in this room"
|
msgid "Search in this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:87
|
#: src/qml/RoomInformation.qml:89
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:title"
|
msgctxt "@action:title"
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:95
|
#: src/qml/RoomInformation.qml:97
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Verify user"
|
msgid "Verify user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove room from favorites"
|
msgid "Remove room from favorites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:106
|
#: src/qml/RoomInformation.qml:108
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Favorite this room"
|
msgid "Favorite this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:119
|
#: src/qml/RoomInformation.qml:121
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Show locations for this room"
|
msgid "Show locations for this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:134
|
#: src/qml/RoomInformation.qml:136
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Leave this room"
|
msgid "Leave this room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:147
|
#: src/qml/RoomInformation.qml:149
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:162 src/qml/SpaceHomePage.qml:55
|
#: src/qml/RoomInformation.qml:164 src/qml/SpaceHomePage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Invite a User"
|
msgid "Invite a User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:166
|
#: src/qml/RoomInformation.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Invite user to room"
|
msgid "Invite user to room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 member"
|
msgid "%1 member"
|
||||||
msgid_plural "%1 members"
|
msgid_plural "%1 members"
|
||||||
@@ -3235,7 +3227,7 @@ msgstr[1] ""
|
|||||||
msgstr[2] ""
|
msgstr[2] ""
|
||||||
msgstr[3] ""
|
msgstr[3] ""
|
||||||
|
|
||||||
#: src/qml/RoomInformation.qml:173
|
#: src/qml/RoomInformation.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No member count"
|
msgid "No member count"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3282,12 +3274,7 @@ msgstr ""
|
|||||||
msgid "NeoChat is offline. Please check your network connection."
|
msgid "NeoChat is offline. Please check your network connection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:158
|
#: src/qml/RoomPage.qml:264
|
||||||
#, kde-format
|
|
||||||
msgid "Select or join a room to get started"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/qml/RoomPage.qml:265
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Message Source"
|
msgid "Message Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3442,19 +3429,19 @@ msgstr ""
|
|||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:135
|
#: src/qml/SpaceDrawer.qml:134
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@button View all one-on-one chats with your friends."
|
msgctxt "@button View all one-on-one chats with your friends."
|
||||||
msgid "Friends"
|
msgid "Friends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:220
|
#: src/qml/SpaceDrawer.qml:242
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Join <name of a space>"
|
msgctxt "Join <name of a space>"
|
||||||
msgid "Join %1"
|
msgid "Join %1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/SpaceDrawer.qml:262
|
#: src/qml/SpaceDrawer.qml:284
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Create a space"
|
msgid "Create a space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3545,27 +3532,27 @@ msgctxt "'Space' is a matrix space"
|
|||||||
msgid "Leave Space"
|
msgid "Leave Space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to first unread message"
|
msgid "Jump to first unread message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:196
|
#: src/qml/TimelineView.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to oldest loaded message"
|
msgid "Jump to oldest loaded message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:236
|
#: src/qml/TimelineView.qml:245
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Jump to latest message"
|
msgid "Jump to latest message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:261
|
#: src/qml/TimelineView.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Drag items here to share them"
|
msgid "Drag items here to share them"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/qml/TimelineView.qml:268
|
#: src/qml/TimelineView.qml:277
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Message displayed when some users are typing"
|
msgctxt "Message displayed when some users are typing"
|
||||||
msgid "%2 is typing"
|
msgid "%2 is typing"
|
||||||
@@ -3908,72 +3895,72 @@ msgstr ""
|
|||||||
msgid "The session verification was canceled due to an unknown error."
|
msgid "The session verification was canceled due to an unknown error."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:311
|
#: src/registration.cpp:309
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No server."
|
msgid "No server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:313
|
#: src/registration.cpp:311
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking Server availability."
|
msgid "Checking Server availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:315
|
#: src/registration.cpp:313
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This is not a valid server."
|
msgid "This is not a valid server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:317
|
#: src/registration.cpp:315
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Registration for this server is disabled."
|
msgid "Registration for this server is disabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:319
|
#: src/registration.cpp:317
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No username."
|
msgid "No username."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:321
|
#: src/registration.cpp:319
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Checking username availability."
|
msgid "Checking username availability."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:323
|
#: src/registration.cpp:321
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "This username is not available."
|
msgid "This username is not available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:325
|
#: src/registration.cpp:323
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/registration.cpp:327
|
#: src/registration.cpp:325
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Working"
|
msgid "Working"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Malformed or empty Matrix id"
|
msgid "Malformed or empty Matrix id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:138
|
#: src/roommanager.cpp:139
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "%1 is not a correct Matrix identifier"
|
msgid "%1 is not a correct Matrix identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:345
|
#: src/roommanager.cpp:352
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to join room"
|
msgid "Failed to join room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:377
|
#: src/roommanager.cpp:388
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "You requested to join '%1'"
|
msgid "You requested to join '%1'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/roommanager.cpp:381
|
#: src/roommanager.cpp:392
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Failed to request joining room"
|
msgid "Failed to request joining room"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3995,12 +3982,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:101
|
#: src/settings/AccountEditorPage.qml:101
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "User Information"
|
msgid "User information"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:106
|
|
||||||
#, kde-format
|
|
||||||
msgid "Display Name:"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:112
|
#: src/settings/AccountEditorPage.qml:112
|
||||||
@@ -4008,101 +3990,96 @@ msgstr ""
|
|||||||
msgid "Label:"
|
msgid "Label:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:113
|
#: src/settings/AccountEditorPage.qml:117
|
||||||
#, kde-format
|
|
||||||
msgid "Work"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:118
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Show QR Code"
|
msgid "QR code for account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:135
|
#: src/settings/AccountEditorPage.qml:133
|
||||||
#: src/settings/AccountEditorPage.qml:191
|
#: src/settings/AccountEditorPage.qml:188
|
||||||
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
#: src/settings/EmoticonEditorPage.qml:108 src/settings/RoomGeneralPage.qml:105
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:157
|
#: src/settings/AccountEditorPage.qml:154
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server doesn't support changing your password"
|
msgid "Your server doesn't support changing your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:164
|
#: src/settings/AccountEditorPage.qml:161
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Current Password:"
|
msgid "Current Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:171
|
#: src/settings/AccountEditorPage.qml:168
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "New Password:"
|
msgid "New Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:178
|
#: src/settings/AccountEditorPage.qml:175
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Confirm new Password:"
|
msgid "Confirm new Password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:183
|
#: src/settings/AccountEditorPage.qml:180
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords don't match"
|
msgid "Passwords don't match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:198
|
#: src/settings/AccountEditorPage.qml:194
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:205
|
#: src/settings/AccountEditorPage.qml:201
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Email Addresses"
|
msgid "Email Addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:211
|
#: src/settings/AccountEditorPage.qml:207
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Phone Numbers"
|
msgid "Phone Numbers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:216
|
#: src/settings/AccountEditorPage.qml:212
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Identity Server"
|
msgid "Identity Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:225
|
#: src/settings/AccountEditorPage.qml:221
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Server Information"
|
msgid "Server Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:229
|
#: src/settings/AccountEditorPage.qml:225
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Homeserver url"
|
msgid "Homeserver url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:250
|
#: src/settings/AccountEditorPage.qml:246
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Account Management"
|
msgid "Account Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:255
|
#: src/settings/AccountEditorPage.qml:251
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Deactivate Account"
|
msgid "Deactivate Account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:271
|
#: src/settings/AccountEditorPage.qml:266
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Password changed successfully"
|
msgid "Password changed successfully"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:273
|
#: src/settings/AccountEditorPage.qml:268
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Wrong password entered"
|
msgid "Wrong password entered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/AccountEditorPage.qml:275
|
#: src/settings/AccountEditorPage.qml:270
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown problem while trying to change password"
|
msgid "Unknown problem while trying to change password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -4343,44 +4320,6 @@ msgctxt "@title"
|
|||||||
msgid "Stickers & Emojis"
|
msgid "Stickers & Emojis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:18
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:101
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Export Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:33 src/settings/ImportKeysDialog.qml:51
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@label:textbox"
|
|
||||||
msgid "Passphrase:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:37
|
|
||||||
#, kde-format
|
|
||||||
msgid ""
|
|
||||||
"A passphrase to secure your key backup. It should not be your account "
|
|
||||||
"password."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:42
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:50
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys exported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ExportKeysDialog.qml:54 src/settings/ImportKeysDialog.qml:74
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Unknown error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/GlobalNotificationsPage.qml:19
|
#: src/settings/GlobalNotificationsPage.qml:19
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4480,48 +4419,25 @@ msgctxt "@title"
|
|||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:25
|
#: src/settings/IgnoredUsersDialog.qml:24
|
||||||
|
#: src/settings/NeoChatSecurityPage.qml:35
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "Placeholder message when no user is ignored"
|
msgctxt "@title:group"
|
||||||
msgid "No ignored users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/IgnoredUsersDialog.qml:55
|
#: src/settings/IgnoredUsersDialog.qml:29
|
||||||
|
#, kde-format
|
||||||
|
msgctxt "Placeholder message when no user is ignored"
|
||||||
|
msgid "You are not ignoring any users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/settings/IgnoredUsersDialog.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Unignore this user"
|
msgid "Unignore this user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:22 src/settings/NeoChatSecurityPage.qml:84
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Import Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:35
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Choose backup file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:56
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:66
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid passphrase"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/ImportKeysDialog.qml:70
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Invalid key backup data"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatGeneralPage.qml:20
|
#: src/settings/NeoChatGeneralPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
@@ -4626,99 +4542,69 @@ msgstr ""
|
|||||||
msgid "Enable developer tools"
|
msgid "Enable developer tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:18
|
#: src/settings/NeoChatSecurityPage.qml:17
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Security"
|
msgid "Security"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:28
|
#: src/settings/NeoChatSecurityPage.qml:20
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:group"
|
msgctxt "@title:group"
|
||||||
msgid "Invitations"
|
msgid "Invitations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:32
|
#: src/settings/NeoChatSecurityPage.qml:24
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@option:check"
|
msgctxt "@option:check"
|
||||||
msgid "Reject invitations from unknown users"
|
msgid "Reject invitations from unknown users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, NeoChat will reject invitations from users you don't share a "
|
"If enabled, NeoChat will reject invitations from from users you don't share "
|
||||||
"room with."
|
"a room with."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:33
|
#: src/settings/NeoChatSecurityPage.qml:25
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Your server does not support this setting."
|
msgid "Your server does not support this setting."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:43
|
#: src/settings/NeoChatSecurityPage.qml:39
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title:group"
|
|
||||||
msgid "Ignored Users"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:47
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button"
|
msgctxt "@action:button"
|
||||||
msgid "Manage ignored users"
|
msgid "Manage ignored users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:49
|
#: src/settings/NeoChatSecurityPage.qml:41
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title:window"
|
msgctxt "@title:window"
|
||||||
msgid "Ignored Users"
|
msgid "Ignored Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:54
|
#: src/settings/NeoChatSecurityPage.qml:46
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@title"
|
msgctxt "@title"
|
||||||
msgid "Keys"
|
msgid "Keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:59
|
#: src/settings/NeoChatSecurityPage.qml:51
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device key"
|
msgid "Device key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:63
|
#: src/settings/NeoChatSecurityPage.qml:55
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Encryption key"
|
msgid "Encryption key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:67
|
#: src/settings/NeoChatSecurityPage.qml:59
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Device id"
|
msgid "Device id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:73
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@title"
|
|
||||||
msgid "Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:78
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Import Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:87
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@info"
|
|
||||||
msgid "Keys imported successfully"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSecurityPage.qml:95
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "@action:button"
|
|
||||||
msgid "Export Encryption Keys"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
#: src/settings/NeoChatSettingsView.qml:22 src/settings/RoomGeneralPage.qml:22
|
||||||
#: src/settings/RoomSettingsView.qml:39
|
#: src/settings/RoomSettingsView.qml:39
|
||||||
#, kde-format
|
#, kde-format
|
||||||
@@ -5256,13 +5142,13 @@ msgstr ""
|
|||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Email Address:"
|
msgid "New email address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:146
|
#: src/settings/ThreePIdCard.qml:146
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@label:textbox"
|
msgctxt "@label:textbox"
|
||||||
msgid "New Phone Number:"
|
msgid "New phone number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:177
|
||||||
@@ -5310,13 +5196,13 @@ msgid ""
|
|||||||
"follow the instructions there and then click the button below"
|
"follow the instructions there and then click the button below"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:183
|
#: src/settings/ThreePIdCard.qml:181
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button Add new email or phone number"
|
msgctxt "@action:button Add new email or phone number"
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/settings/ThreePIdCard.qml:191
|
#: src/settings/ThreePIdCard.qml:189
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "@action:button As in 'go back'"
|
msgctxt "@action:button As in 'go back'"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
|
|||||||
430
po/lv/neochat.po
430
po/lv/neochat.po
File diff suppressed because it is too large
Load Diff
428
po/nl/neochat.po
428
po/nl/neochat.po
File diff suppressed because it is too large
Load Diff
421
po/nn/neochat.po
421
po/nn/neochat.po
File diff suppressed because it is too large
Load Diff
422
po/pa/neochat.po
422
po/pa/neochat.po
File diff suppressed because it is too large
Load Diff
410
po/pl/neochat.po
410
po/pl/neochat.po
File diff suppressed because it is too large
Load Diff
425
po/pt/neochat.po
425
po/pt/neochat.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
422
po/ru/neochat.po
422
po/ru/neochat.po
File diff suppressed because it is too large
Load Diff
422
po/sk/neochat.po
422
po/sk/neochat.po
File diff suppressed because it is too large
Load Diff
414
po/sl/neochat.po
414
po/sl/neochat.po
File diff suppressed because it is too large
Load Diff
406
po/sv/neochat.po
406
po/sv/neochat.po
File diff suppressed because it is too large
Load Diff
466
po/ta/neochat.po
466
po/ta/neochat.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
424
po/tr/neochat.po
424
po/tr/neochat.po
File diff suppressed because it is too large
Load Diff
414
po/uk/neochat.po
414
po/uk/neochat.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -288,7 +288,6 @@ ecm_add_qml_module(neochat URI org.kde.neochat GENERATE_PLUGIN_SOURCE
|
|||||||
qml/ConsentDialog.qml
|
qml/ConsentDialog.qml
|
||||||
qml/AskDirectChatConfirmation.qml
|
qml/AskDirectChatConfirmation.qml
|
||||||
qml/HoverLinkIndicator.qml
|
qml/HoverLinkIndicator.qml
|
||||||
qml/AvatarNotification.qml
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
QtCore
|
QtCore
|
||||||
QtQuick
|
QtQuick
|
||||||
@@ -426,7 +425,7 @@ if (TARGET KF6::Crash)
|
|||||||
target_link_libraries(neochat PUBLIC KF6::Crash)
|
target_link_libraries(neochat PUBLIC KF6::Crash)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
kconfig_target_kcfg_file(neochat FILE neochatconfig.kcfg CLASS_NAME NeoChatConfig MUTATORS GENERATE_PROPERTIES DEFAULT_VALUE_GETTERS PARENT_IN_CONSTRUCTOR SINGLETON GENERATE_MOC QML_REGISTRATION)
|
kconfig_add_kcfg_files(neochat GENERATE_MOC neochatconfig.kcfgc)
|
||||||
|
|
||||||
if(NEOCHAT_FLATPAK)
|
if(NEOCHAT_FLATPAK)
|
||||||
target_compile_definitions(neochat PUBLIC NEOCHAT_FLATPAK)
|
target_compile_definitions(neochat PUBLIC NEOCHAT_FLATPAK)
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ QQC2.Control {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onTextChanged: {
|
onTextChanged: {
|
||||||
if (!repeatTimer.running && NeoChatConfig.typingNotifications) {
|
if (!repeatTimer.running && Config.typingNotifications) {
|
||||||
var textExists = text.length > 0;
|
var textExists = text.length > 0;
|
||||||
root.currentRoom.sendTypingNotification(textExists);
|
root.currentRoom.sendTypingNotification(textExists);
|
||||||
textExists ? repeatTimer.start() : repeatTimer.stop();
|
textExists ? repeatTimer.start() : repeatTimer.stop();
|
||||||
@@ -353,8 +353,8 @@ QQC2.Control {
|
|||||||
startBreakpoint: Kirigami.Units.gridUnit * 46
|
startBreakpoint: Kirigami.Units.gridUnit * 46
|
||||||
endBreakpoint: Kirigami.Units.gridUnit * 66
|
endBreakpoint: Kirigami.Units.gridUnit * 66
|
||||||
startPercentWidth: 100
|
startPercentWidth: 100
|
||||||
endPercentWidth: NeoChatConfig.compactLayout ? 100 : 85
|
endPercentWidth: Config.compactLayout ? 100 : 85
|
||||||
maxWidth: NeoChatConfig.compactLayout ? -1 : Kirigami.Units.gridUnit * 60
|
maxWidth: Config.compactLayout ? -1 : Kirigami.Units.gridUnit * 60
|
||||||
|
|
||||||
parentWidth: root.width
|
parentWidth: root.width
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,11 @@ QString ChatBarCache::relationMessage() const
|
|||||||
|
|
||||||
if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
|
if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
|
||||||
EventHandler eventhandler(room, &**event);
|
EventHandler eventhandler(room, &**event);
|
||||||
return eventhandler.getMarkdownBody();
|
if (isEditing()) {
|
||||||
|
return eventhandler.getMarkdownBody();
|
||||||
|
} else {
|
||||||
|
return eventhandler.getMarkdownBody().toHtmlEscaped();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,18 +9,12 @@
|
|||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
|
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QNetworkReply>
|
|
||||||
#include <QRandomGenerator>
|
|
||||||
#include <QTcpServer>
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#include <QCoroNetworkReply>
|
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
#include <Quotient/accountregistry.h>
|
#include <Quotient/accountregistry.h>
|
||||||
#include <Quotient/csapi/notifications.h>
|
#include <Quotient/csapi/notifications.h>
|
||||||
#include <Quotient/csapi/wellknown.h>
|
|
||||||
#include <Quotient/qt_connection_util.h>
|
#include <Quotient/qt_connection_util.h>
|
||||||
#include <Quotient/settings.h>
|
#include <Quotient/settings.h>
|
||||||
|
|
||||||
@@ -51,7 +45,6 @@
|
|||||||
bool testMode = false;
|
bool testMode = false;
|
||||||
|
|
||||||
using namespace Quotient;
|
using namespace Quotient;
|
||||||
using namespace Qt::Literals::StringLiterals;
|
|
||||||
|
|
||||||
Controller::Controller(QObject *parent)
|
Controller::Controller(QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
@@ -71,7 +64,11 @@ Controller::Controller(QObject *parent)
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
auto c = new NeoChatConnection(this);
|
auto c = new NeoChatConnection(this);
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
c->assumeIdentity(QStringLiteral("@user:localhost:1234"), QStringLiteral("device_1234"), QStringLiteral("token_1234"));
|
||||||
|
#else
|
||||||
c->assumeIdentity(QStringLiteral("@user:localhost:1234"), QStringLiteral("token_1234"));
|
c->assumeIdentity(QStringLiteral("@user:localhost:1234"), QStringLiteral("token_1234"));
|
||||||
|
#endif
|
||||||
connect(c, &Connection::connected, this, [c, this]() {
|
connect(c, &Connection::connected, this, [c, this]() {
|
||||||
m_accountRegistry.add(c);
|
m_accountRegistry.add(c);
|
||||||
c->syncLoop();
|
c->syncLoop();
|
||||||
@@ -209,20 +206,33 @@ void Controller::invokeLogin()
|
|||||||
m_connectionsLoading[accountId] = connection;
|
m_connectionsLoading[accountId] = connection;
|
||||||
connect(connection, &NeoChatConnection::connected, this, [this, connection, accountId] {
|
connect(connection, &NeoChatConnection::connected, this, [this, connection, accountId] {
|
||||||
connection->loadState();
|
connection->loadState();
|
||||||
addConnection(connection);
|
if (connection->allRooms().size() == 0 || connection->allRooms()[0]->currentState().get<RoomCreateEvent>()) {
|
||||||
m_accountsLoading.removeAll(connection->userId());
|
addConnection(connection);
|
||||||
m_connectionsLoading.remove(accountId);
|
m_accountsLoading.removeAll(connection->userId());
|
||||||
Q_EMIT accountsLoadingChanged();
|
m_connectionsLoading.remove(accountId);
|
||||||
|
Q_EMIT accountsLoadingChanged();
|
||||||
|
} else {
|
||||||
|
connect(
|
||||||
|
connection->allRooms()[0],
|
||||||
|
&Room::baseStateLoaded,
|
||||||
|
this,
|
||||||
|
[this, connection, accountId]() {
|
||||||
|
addConnection(connection);
|
||||||
|
m_accountsLoading.removeAll(connection->userId());
|
||||||
|
m_connectionsLoading.remove(accountId);
|
||||||
|
Q_EMIT accountsLoadingChanged();
|
||||||
|
},
|
||||||
|
Qt::SingleShotConnection);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
connect(connection, &NeoChatConnection::networkError, this, [this](const QString &error, const QString &, int, int) {
|
connect(connection, &NeoChatConnection::networkError, this, [this](const QString &error, const QString &, int, int) {
|
||||||
Q_EMIT errorOccured(i18n("Network Error: %1", error), {});
|
Q_EMIT errorOccured(i18n("Network Error: %1", error), {});
|
||||||
});
|
});
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
if (!account.clientId().isEmpty()) {
|
connection->assumeIdentity(account.userId(), account.deviceId(), accessToken);
|
||||||
connection->assumeOidcIdentity(account.userId(), accessToken, account.clientId(), account.tokenEndpoint());
|
#else
|
||||||
} else {
|
connection->assumeIdentity(account.userId(), accessToken);
|
||||||
connection->assumeIdentity(account.userId(), accessToken);
|
#endif
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,23 +273,19 @@ QKeychain::ReadPasswordJob *Controller::loadAccessTokenFromKeyChain(const QStrin
|
|||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Controller::saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken)
|
void Controller::saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken)
|
||||||
{
|
{
|
||||||
qDebug() << "Save the access token to the keychain for " << userId;
|
qDebug() << "Save the access token to the keychain for " << userId;
|
||||||
QKeychain::WritePasswordJob job(qAppName());
|
auto job = new QKeychain::WritePasswordJob(qAppName());
|
||||||
job.setAutoDelete(false);
|
job->setAutoDelete(true);
|
||||||
job.setKey(userId);
|
job->setKey(userId);
|
||||||
job.setBinaryData(accessToken);
|
job->setBinaryData(accessToken);
|
||||||
QEventLoop loop;
|
connect(job, &QKeychain::WritePasswordJob::finished, this, [job]() {
|
||||||
QKeychain::WritePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
|
if (job->error()) {
|
||||||
job.start();
|
qWarning() << "Could not save access token to the keychain: " << qPrintable(job->errorString());
|
||||||
loop.exec();
|
}
|
||||||
|
});
|
||||||
if (job.error()) {
|
job->start();
|
||||||
qWarning() << "Could not save access token to the keychain: " << qPrintable(job.errorString());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Controller::supportSystemTray() const
|
bool Controller::supportSystemTray() const
|
||||||
@@ -421,29 +427,11 @@ void Controller::removeConnection(const QString &userId)
|
|||||||
|
|
||||||
bool Controller::csSupported() const
|
bool Controller::csSupported() const
|
||||||
{
|
{
|
||||||
#if Quotient_VERSION_MINOR > 8
|
#if Quotient_VERSION_MINOR > 9
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
NeoChatConnection *Controller::pendingOidcConnection() const
|
|
||||||
{
|
|
||||||
return m_pendingOidcConnection.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Controller::startOidcLogin(const QString &homeserver)
|
|
||||||
{
|
|
||||||
auto url = QUrl::fromUserInput(homeserver.startsWith(u"https:"_s) ? homeserver : u"https://%1"_s.arg(homeserver));
|
|
||||||
m_pendingOidcConnection = new NeoChatConnection(url, this);
|
|
||||||
Q_EMIT pendingOidcConnectionChanged();
|
|
||||||
m_pendingOidcConnection->startOidcLogin();
|
|
||||||
connect(m_pendingOidcConnection, &Connection::connected, this, [this]() {
|
|
||||||
m_pendingOidcConnection->loadState();
|
|
||||||
addConnection(m_pendingOidcConnection);
|
|
||||||
setActiveConnection(m_pendingOidcConnection);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "moc_controller.cpp"
|
#include "moc_controller.cpp"
|
||||||
|
|||||||
@@ -52,8 +52,6 @@ class Controller : public QObject
|
|||||||
|
|
||||||
Q_PROPERTY(bool csSupported READ csSupported CONSTANT)
|
Q_PROPERTY(bool csSupported READ csSupported CONSTANT)
|
||||||
|
|
||||||
Q_PROPERTY(NeoChatConnection *pendingOidcConnection READ pendingOidcConnection NOTIFY pendingOidcConnectionChanged)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief Define the types on inline messages that can be shown.
|
* @brief Define the types on inline messages that can be shown.
|
||||||
@@ -88,7 +86,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Save an access token to the keychain for the given account.
|
* @brief Save an access token to the keychain for the given account.
|
||||||
*/
|
*/
|
||||||
bool saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken);
|
void saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken);
|
||||||
|
|
||||||
[[nodiscard]] bool supportSystemTray() const;
|
[[nodiscard]] bool supportSystemTray() const;
|
||||||
|
|
||||||
@@ -108,12 +106,8 @@ public:
|
|||||||
|
|
||||||
Q_INVOKABLE void removeConnection(const QString &userId);
|
Q_INVOKABLE void removeConnection(const QString &userId);
|
||||||
|
|
||||||
Q_INVOKABLE void startOidcLogin(const QString &homeserver);
|
|
||||||
|
|
||||||
bool csSupported() const;
|
bool csSupported() const;
|
||||||
|
|
||||||
NeoChatConnection *pendingOidcConnection() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit Controller(QObject *parent = nullptr);
|
explicit Controller(QObject *parent = nullptr);
|
||||||
|
|
||||||
@@ -125,13 +119,10 @@ private:
|
|||||||
void loadSettings();
|
void loadSettings();
|
||||||
void saveSettings() const;
|
void saveSettings() const;
|
||||||
|
|
||||||
QCoro::Task<void> doStartOidcLogin(QString homeserver);
|
|
||||||
|
|
||||||
Quotient::AccountRegistry m_accountRegistry;
|
Quotient::AccountRegistry m_accountRegistry;
|
||||||
QStringList m_accountsLoading;
|
QStringList m_accountsLoading;
|
||||||
QMap<QString, QPointer<NeoChatConnection>> m_connectionsLoading;
|
QMap<QString, QPointer<NeoChatConnection>> m_connectionsLoading;
|
||||||
QString m_endpoint;
|
QString m_endpoint;
|
||||||
QPointer<NeoChatConnection> m_pendingOidcConnection;
|
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void invokeLogin();
|
void invokeLogin();
|
||||||
@@ -145,5 +136,4 @@ Q_SIGNALS:
|
|||||||
void activeConnectionChanged(NeoChatConnection *connection);
|
void activeConnectionChanged(NeoChatConnection *connection);
|
||||||
void accountsLoadingChanged();
|
void accountsLoadingChanged();
|
||||||
void showMessage(MessageType messageType, const QString &message);
|
void showMessage(MessageType messageType, const QString &message);
|
||||||
void pendingOidcConnectionChanged();
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,25 +17,25 @@ FormCard.FormCardPage {
|
|||||||
|
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18nc("@option:check", "Show hidden events in the timeline")
|
text: i18nc("@option:check", "Show hidden events in the timeline")
|
||||||
checked: NeoChatConfig.showAllEvents
|
checked: Config.showAllEvents
|
||||||
|
|
||||||
onToggled: NeoChatConfig.showAllEvents = checked
|
onToggled: Config.showAllEvents = checked
|
||||||
}
|
}
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
id: roomAccountDataVisibleCheck
|
id: roomAccountDataVisibleCheck
|
||||||
text: i18nc("@option:check Enable the matrix 'threads' feature", "Always allow device verification")
|
text: i18nc("@option:check Enable the matrix 'threads' feature", "Always allow device verification")
|
||||||
description: i18n("Allow the user to start a verification session with devices that were already verified")
|
description: i18n("Allow the user to start a verification session with devices that were already verified")
|
||||||
checked: NeoChatConfig.alwaysVerifyDevice
|
checked: Config.alwaysVerifyDevice
|
||||||
|
|
||||||
onToggled: NeoChatConfig.alwaysVerifyDevice = checked
|
onToggled: Config.alwaysVerifyDevice = checked
|
||||||
}
|
}
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18nc("@option:check", "Show focus in window header")
|
text: i18nc("@option:check", "Show focus in window header")
|
||||||
checked: NeoChatConfig.windowTitleFocus
|
checked: Config.windowTitleFocus
|
||||||
|
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.windowTitleFocus = checked;
|
Config.windowTitleFocus = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,23 +18,23 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
id: roomAccountDataVisibleCheck
|
id: roomAccountDataVisibleCheck
|
||||||
text: i18nc("@option:check Enable the matrix 'threads' feature", "Threads")
|
text: i18nc("@option:check Enable the matrix 'threads' feature", "Threads")
|
||||||
checked: NeoChatConfig.threads
|
checked: Config.threads
|
||||||
|
|
||||||
onToggled: NeoChatConfig.threads = checked
|
onToggled: Config.threads = checked
|
||||||
}
|
}
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18nc("@option:check Enable the matrix 'secret backup' feature", "Secret Backup")
|
text: i18nc("@option:check Enable the matrix 'secret backup' feature", "Secret Backup")
|
||||||
checked: NeoChatConfig.secretBackup
|
checked: Config.secretBackup
|
||||||
|
|
||||||
onToggled: NeoChatConfig.secretBackup = checked
|
onToggled: Config.secretBackup = checked
|
||||||
}
|
}
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18nc("@option:check Enable the matrix feature to add a phone number as a third party ID", "Add phone numbers as 3PIDs")
|
text: i18nc("@option:check Enable the matrix feature to add a phone number as a third party ID", "Add phone numbers as 3PIDs")
|
||||||
checked: NeoChatConfig.phone3PId
|
checked: Config.phone3PId
|
||||||
|
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.phone3PId = checked
|
Config.phone3PId = checked
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ QString EventHandler::getBody(const Quotient::RoomEvent *event, Qt::TextFormat f
|
|||||||
{
|
{
|
||||||
if (event->isRedacted()) {
|
if (event->isRedacted()) {
|
||||||
auto reason = event->redactedBecause()->reason();
|
auto reason = event->redactedBecause()->reason();
|
||||||
return (reason.isEmpty()) ? i18n("<i>[This message was deleted]</i>") : i18n("<i>[This message was deleted: %1]</i>", reason);
|
return (reason.isEmpty()) ? i18n("<i>[This message was deleted]</i>") : i18n("<i>[This message was deleted: %1]</i>", reason.toHtmlEscaped());
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool prettyPrint = (format == Qt::RichText);
|
const bool prettyPrint = (format == Qt::RichText);
|
||||||
|
|||||||
@@ -10,13 +10,22 @@
|
|||||||
#include <Quotient/keyverificationsession.h>
|
#include <Quotient/keyverificationsession.h>
|
||||||
#include <Quotient/roommember.h>
|
#include <Quotient/roommember.h>
|
||||||
|
|
||||||
#if Quotient_VERSION_MINOR > 8
|
|
||||||
#include <Quotient/keyimport.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "controller.h"
|
#include "controller.h"
|
||||||
#include "neochatconfig.h"
|
#include "neochatconfig.h"
|
||||||
|
|
||||||
|
struct ForeignConfig {
|
||||||
|
Q_GADGET
|
||||||
|
QML_FOREIGN(NeoChatConfig)
|
||||||
|
QML_NAMED_ELEMENT(Config)
|
||||||
|
QML_SINGLETON
|
||||||
|
public:
|
||||||
|
static NeoChatConfig *create(QQmlEngine *, QJSEngine *)
|
||||||
|
{
|
||||||
|
QQmlEngine::setObjectOwnership(NeoChatConfig::self(), QQmlEngine::CppOwnership);
|
||||||
|
return NeoChatConfig::self();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ForeignAccountRegistry {
|
struct ForeignAccountRegistry {
|
||||||
Q_GADGET
|
Q_GADGET
|
||||||
QML_FOREIGN(Quotient::AccountRegistry)
|
QML_FOREIGN(Quotient::AccountRegistry)
|
||||||
@@ -42,12 +51,3 @@ struct ForeignSSSSHandler {
|
|||||||
QML_FOREIGN(Quotient::SSSSHandler)
|
QML_FOREIGN(Quotient::SSSSHandler)
|
||||||
QML_NAMED_ELEMENT(SSSSHandler)
|
QML_NAMED_ELEMENT(SSSSHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
#if Quotient_VERSION_MINOR > 8
|
|
||||||
struct ForeignKeyImport {
|
|
||||||
Q_GADGET
|
|
||||||
QML_SINGLETON
|
|
||||||
QML_FOREIGN(Quotient::KeyImport)
|
|
||||||
QML_NAMED_ELEMENT(KeyImport)
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ float LocationHelper::zoomToFit(const QRectF &r, float mapWidth, float mapHeight
|
|||||||
const auto zy = std::log2((mapHeight / (p2.y() - p1.y())));
|
const auto zy = std::log2((mapHeight / (p2.y() - p1.y())));
|
||||||
const auto z = std::min(zx, zy);
|
const auto z = std::min(zx, zy);
|
||||||
|
|
||||||
return std::clamp(z, 5.0, 18.0);
|
return z;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_locationhelper.cpp"
|
#include "moc_locationhelper.cpp"
|
||||||
|
|||||||
@@ -78,9 +78,7 @@ void LoginHelper::init()
|
|||||||
account.setHomeserver(m_connection->homeserver());
|
account.setHomeserver(m_connection->homeserver());
|
||||||
account.setDeviceId(m_connection->deviceId());
|
account.setDeviceId(m_connection->deviceId());
|
||||||
account.setDeviceName(m_deviceName);
|
account.setDeviceName(m_deviceName);
|
||||||
if (!Controller::instance().saveAccessTokenToKeyChain(account.userId(), m_connection->accessToken())) {
|
Controller::instance().saveAccessTokenToKeyChain(account.userId(), m_connection->accessToken());
|
||||||
qWarning() << "Couldn't save access token";
|
|
||||||
}
|
|
||||||
account.sync();
|
account.sync();
|
||||||
Controller::instance().addConnection(m_connection);
|
Controller::instance().addConnection(m_connection);
|
||||||
Controller::instance().setActiveConnection(m_connection);
|
Controller::instance().setActiveConnection(m_connection);
|
||||||
|
|||||||
@@ -20,5 +20,4 @@ ecm_add_qml_module(login GENERATE_PLUGIN_SOURCE
|
|||||||
Sso.qml
|
Sso.qml
|
||||||
Terms.qml
|
Terms.qml
|
||||||
Username.qml
|
Username.qml
|
||||||
Oidc.qml
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -31,11 +31,4 @@ LoginStep {
|
|||||||
text: i18nc("@action:button", "Register")
|
text: i18nc("@action:button", "Register")
|
||||||
onClicked: root.processed("Homeserver")
|
onClicked: root.processed("Homeserver")
|
||||||
}
|
}
|
||||||
|
|
||||||
FormCard.FormDelegateSeparator {}
|
|
||||||
|
|
||||||
FormCard.FormButtonDelegate {
|
|
||||||
text: i18nc("@action:button", "Login with OIDC")
|
|
||||||
onClicked: root.processed("Oidc")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
// SPDX-FileCopyrightText: 2024 Tobias Fella <tobias.fella@kde.org>
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Layouts
|
|
||||||
|
|
||||||
import org.kde.kirigamiaddons.formcard as FormCard
|
|
||||||
|
|
||||||
import org.kde.neochat
|
|
||||||
|
|
||||||
LoginStep {
|
|
||||||
id: root
|
|
||||||
FormCard.FormTextFieldDelegate {
|
|
||||||
id: homeserver
|
|
||||||
|
|
||||||
visible: !infoLabel.visible
|
|
||||||
label: i18n("Homeserver")
|
|
||||||
text: "synapse-oidc.element.dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: Controller.pendingOidcConnection
|
|
||||||
function onOpenOidcUrl(url: string): void {
|
|
||||||
infoLabel.url = url;
|
|
||||||
infoLabel.visible = true;
|
|
||||||
}
|
|
||||||
function onConnected(): void {
|
|
||||||
root.processed("Loading");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FormCard.FormTextDelegate {
|
|
||||||
id: infoLabel
|
|
||||||
|
|
||||||
property string url: ""
|
|
||||||
visible: false
|
|
||||||
text: i18n("To continue, please open the following link in your web browser: %1", "<br /><br /><a href='" + url + "'>" + url + "</a>")
|
|
||||||
onLinkActivated: url => Qt.openUrlExternally(url)
|
|
||||||
}
|
|
||||||
FormCard.FormDelegateSeparator { above: openLink }
|
|
||||||
|
|
||||||
FormCard.FormButtonDelegate {
|
|
||||||
id: openLink
|
|
||||||
visible: infoLabel.visible
|
|
||||||
text: i18n("Open Authorization Link")
|
|
||||||
icon.name: "document-open"
|
|
||||||
onClicked: Qt.openUrlExternally(infoLabel.url.authorizeUrl)
|
|
||||||
}
|
|
||||||
|
|
||||||
FormCard.FormDelegateSeparator {
|
|
||||||
visible: infoLabel.visible
|
|
||||||
above: openLink
|
|
||||||
below: copyLink
|
|
||||||
}
|
|
||||||
|
|
||||||
FormCard.FormButtonDelegate {
|
|
||||||
id: copyLink
|
|
||||||
|
|
||||||
visible: infoLabel.visible
|
|
||||||
text: i18n("Copy Authorization Link")
|
|
||||||
icon.name: "edit-copy"
|
|
||||||
onClicked: {
|
|
||||||
Clipboard.saveText(infoLabel.url)
|
|
||||||
applicationWindow().showPassiveNotification(i18n("Link copied."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FormCard.FormButtonDelegate {
|
|
||||||
visible: !infoLabel.visible
|
|
||||||
text: i18nc("@action:button", "Log in with OIDC")
|
|
||||||
onClicked: Controller.startOidcLogin(homeserver.text)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -148,7 +148,7 @@ int main(int argc, char *argv[])
|
|||||||
i18n("Maintainer"),
|
i18n("Maintainer"),
|
||||||
QStringLiteral("carl@carlschwan.eu"),
|
QStringLiteral("carl@carlschwan.eu"),
|
||||||
QStringLiteral("https://carlschwan.eu"),
|
QStringLiteral("https://carlschwan.eu"),
|
||||||
QUrl(QStringLiteral("https://carlschwan.eu/avatar.png")));
|
QStringLiteral("https://carlschwan.eu/avatar.png"));
|
||||||
about.addAuthor(i18n("Tobias Fella"), i18n("Maintainer"), QStringLiteral("tobias.fella@kde.org"), QStringLiteral("https://tobiasfella.de"));
|
about.addAuthor(i18n("Tobias Fella"), i18n("Maintainer"), QStringLiteral("tobias.fella@kde.org"), QStringLiteral("https://tobiasfella.de"));
|
||||||
about.addAuthor(i18n("James Graham"), i18n("Maintainer"), QStringLiteral("james.h.graham@protonmail.com"));
|
about.addAuthor(i18n("James Graham"), i18n("Maintainer"), QStringLiteral("james.h.graham@protonmail.com"));
|
||||||
about.addCredit(i18n("Black Hat"), i18n("Original author of Spectral"), QStringLiteral("bhat@encom.eu.org"));
|
about.addCredit(i18n("Black Hat"), i18n("Original author of Spectral"), QStringLiteral("bhat@encom.eu.org"));
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
|
|
||||||
using namespace Quotient;
|
using namespace Quotient;
|
||||||
|
|
||||||
MessageContentModel::MessageContentModel(NeoChatRoom *room, const Quotient::RoomEvent *event, bool isReply, bool isPending, MessageContentModel *parent)
|
MessageContentModel::MessageContentModel(NeoChatRoom *room, const Quotient::RoomEvent *event, bool isReply, bool isPending)
|
||||||
: QAbstractListModel(parent)
|
: QAbstractListModel(nullptr)
|
||||||
, m_room(room)
|
, m_room(room)
|
||||||
, m_eventId(event != nullptr ? event->id() : QString())
|
, m_eventId(event != nullptr ? event->id() : QString())
|
||||||
, m_eventSenderId(event != nullptr ? event->senderId() : QString())
|
, m_eventSenderId(event != nullptr ? event->senderId() : QString())
|
||||||
@@ -43,8 +43,8 @@ MessageContentModel::MessageContentModel(NeoChatRoom *room, const Quotient::Room
|
|||||||
initializeModel();
|
initializeModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageContentModel::MessageContentModel(NeoChatRoom *room, const QString &eventId, bool isReply, bool isPending, MessageContentModel *parent)
|
MessageContentModel::MessageContentModel(NeoChatRoom *room, const QString &eventId, bool isReply, bool isPending)
|
||||||
: QAbstractListModel(parent)
|
: QAbstractListModel(nullptr)
|
||||||
, m_room(room)
|
, m_room(room)
|
||||||
, m_eventId(eventId)
|
, m_eventId(eventId)
|
||||||
, m_isPending(isPending)
|
, m_isPending(isPending)
|
||||||
@@ -58,16 +58,15 @@ void MessageContentModel::initializeModel()
|
|||||||
Q_ASSERT(m_room != nullptr);
|
Q_ASSERT(m_room != nullptr);
|
||||||
// Allow making a model for an event that is being downloaded but will appear later
|
// Allow making a model for an event that is being downloaded but will appear later
|
||||||
// e.g. a reply, but we need an ID to know when it has arrived.
|
// e.g. a reply, but we need an ID to know when it has arrived.
|
||||||
// Also note that a pending event may not have an event ID yet but as long as we have an event
|
Q_ASSERT(!m_eventId.isEmpty());
|
||||||
// pointer we can pass out the transaction ID until it is set.
|
|
||||||
Q_ASSERT(!m_eventId.isEmpty() || m_event != nullptr);
|
|
||||||
|
|
||||||
Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) {
|
Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) {
|
||||||
if (m_room != nullptr) {
|
if (m_room != nullptr) {
|
||||||
if (eventId == m_eventId) {
|
if (eventId == m_eventId) {
|
||||||
intiializeEvent(m_room->getEvent(eventId));
|
m_event = loadEvent<RoomEvent>(m_room->getEvent(eventId)->fullJson());
|
||||||
|
Q_EMIT eventUpdated();
|
||||||
updateReplyModel();
|
updateReplyModel();
|
||||||
resetModel();
|
resetContent();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -165,12 +164,7 @@ void MessageContentModel::intiializeEvent(const QString &eventId)
|
|||||||
void MessageContentModel::intiializeEvent(const Quotient::RoomEvent *event)
|
void MessageContentModel::intiializeEvent(const Quotient::RoomEvent *event)
|
||||||
{
|
{
|
||||||
m_event = loadEvent<RoomEvent>(event->fullJson());
|
m_event = loadEvent<RoomEvent>(event->fullJson());
|
||||||
// a pending event may not previously have had an event ID so update.
|
auto senderId = event->senderId();
|
||||||
if (m_eventId.isEmpty()) {
|
|
||||||
m_eventId = m_event->id();
|
|
||||||
}
|
|
||||||
|
|
||||||
auto senderId = m_event->senderId();
|
|
||||||
// A pending event might not have a sender ID set yet but in that case it must
|
// A pending event might not have a sender ID set yet but in that case it must
|
||||||
// be the local member.
|
// be the local member.
|
||||||
if (senderId.isEmpty()) {
|
if (senderId.isEmpty()) {
|
||||||
@@ -231,11 +225,6 @@ QVariant MessageContentModel::data(const QModelIndex &index, int role) const
|
|||||||
if (m_event == nullptr) {
|
if (m_event == nullptr) {
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
if (m_event->isRedacted()) {
|
|
||||||
auto reason = m_event->redactedBecause()->reason();
|
|
||||||
return (reason.isEmpty()) ? i18n("<i>[This message was deleted]</i>")
|
|
||||||
: i18n("<i>[This message was deleted: %1]</i>", m_event->redactedBecause()->reason());
|
|
||||||
}
|
|
||||||
if (!component.content.isEmpty()) {
|
if (!component.content.isEmpty()) {
|
||||||
return component.content;
|
return component.content;
|
||||||
}
|
}
|
||||||
@@ -428,9 +417,9 @@ void MessageContentModel::updateReplyModel()
|
|||||||
|
|
||||||
const auto replyEvent = m_room->findInTimeline(eventHandler.getReplyId());
|
const auto replyEvent = m_room->findInTimeline(eventHandler.getReplyId());
|
||||||
if (replyEvent == m_room->historyEdge()) {
|
if (replyEvent == m_room->historyEdge()) {
|
||||||
m_replyModel = new MessageContentModel(m_room, eventHandler.getReplyId(), true, false, this);
|
m_replyModel = new MessageContentModel(m_room, eventHandler.getReplyId(), true);
|
||||||
} else {
|
} else {
|
||||||
m_replyModel = new MessageContentModel(m_room, replyEvent->get(), true, false, this);
|
m_replyModel = new MessageContentModel(m_room, replyEvent->get(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(m_replyModel, &MessageContentModel::eventUpdated, this, [this]() {
|
connect(m_replyModel, &MessageContentModel::eventUpdated, this, [this]() {
|
||||||
@@ -520,7 +509,7 @@ MessageComponent MessageContentModel::linkPreviewComponent(const QUrl &link)
|
|||||||
if (linkPreviewer->loaded()) {
|
if (linkPreviewer->loaded()) {
|
||||||
return MessageComponent{MessageComponentType::LinkPreview, QString(), {{"link"_ls, link}}};
|
return MessageComponent{MessageComponentType::LinkPreview, QString(), {{"link"_ls, link}}};
|
||||||
} else {
|
} else {
|
||||||
connect(linkPreviewer, &LinkPreviewer::loadedChanged, [this, link]() {
|
connect(linkPreviewer, &LinkPreviewer::loadedChanged, this, [this, link]() {
|
||||||
const auto linkPreviewer = dynamic_cast<NeoChatConnection *>(m_room->connection())->previewerForLink(link);
|
const auto linkPreviewer = dynamic_cast<NeoChatConnection *>(m_room->connection())->previewerForLink(link);
|
||||||
if (linkPreviewer != nullptr && linkPreviewer->loaded()) {
|
if (linkPreviewer != nullptr && linkPreviewer->loaded()) {
|
||||||
for (auto &component : m_components) {
|
for (auto &component : m_components) {
|
||||||
@@ -561,6 +550,11 @@ QList<MessageComponent> MessageContentModel::addLinkPreviews(QList<MessageCompon
|
|||||||
|
|
||||||
void MessageContentModel::closeLinkPreview(int row)
|
void MessageContentModel::closeLinkPreview(int row)
|
||||||
{
|
{
|
||||||
|
if (row < 0 || row > m_components.size()) {
|
||||||
|
qWarning() << "closeLinkPreview() called with row" << row << "which does not exist. m_components.size() =" << m_components.size();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_components[row].type == MessageComponentType::LinkPreview || m_components[row].type == MessageComponentType::LinkPreviewLoad) {
|
if (m_components[row].type == MessageComponentType::LinkPreview || m_components[row].type == MessageComponentType::LinkPreviewLoad) {
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
m_removedLinkPreviews += m_components[row].attributes["link"_ls].toUrl();
|
m_removedLinkPreviews += m_components[row].attributes["link"_ls].toUrl();
|
||||||
|
|||||||
@@ -75,12 +75,8 @@ public:
|
|||||||
};
|
};
|
||||||
Q_ENUM(Roles)
|
Q_ENUM(Roles)
|
||||||
|
|
||||||
explicit MessageContentModel(NeoChatRoom *room,
|
explicit MessageContentModel(NeoChatRoom *room, const Quotient::RoomEvent *event, bool isReply = false, bool isPending = false);
|
||||||
const Quotient::RoomEvent *event,
|
MessageContentModel(NeoChatRoom *room, const QString &eventId, bool isReply = false, bool isPending = false);
|
||||||
bool isReply = false,
|
|
||||||
bool isPending = false,
|
|
||||||
MessageContentModel *parent = nullptr);
|
|
||||||
MessageContentModel(NeoChatRoom *room, const QString &eventId, bool isReply = false, bool isPending = false, MessageContentModel *parent = nullptr);
|
|
||||||
|
|
||||||
bool showAuthor() const;
|
bool showAuthor() const;
|
||||||
void setShowAuthor(bool showAuthor);
|
void setShowAuthor(bool showAuthor);
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
|
|||||||
// HACK: Reset the model to a null room first to make sure QML dismantles
|
// HACK: Reset the model to a null room first to make sure QML dismantles
|
||||||
// last room's objects before the room is actually changed
|
// last room's objects before the room is actually changed
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
|
m_readMarkerModels.clear();
|
||||||
m_currentRoom->disconnect(this);
|
m_currentRoom->disconnect(this);
|
||||||
m_currentRoom = nullptr;
|
m_currentRoom = nullptr;
|
||||||
endResetModel();
|
endResetModel();
|
||||||
@@ -95,9 +96,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
|
|||||||
// Don't clear the member objects until the model has been fully reset and all
|
// Don't clear the member objects until the model has been fully reset and all
|
||||||
// refs cleared.
|
// refs cleared.
|
||||||
m_memberObjects.clear();
|
m_memberObjects.clear();
|
||||||
m_contentModels.clear();
|
|
||||||
m_reactionModels.clear();
|
|
||||||
m_readMarkerModels.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
@@ -435,17 +433,17 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
|
|||||||
EventHandler eventHandler(m_currentRoom, &evt);
|
EventHandler eventHandler(m_currentRoom, &evt);
|
||||||
|
|
||||||
if (role == Qt::DisplayRole) {
|
if (role == Qt::DisplayRole) {
|
||||||
if (evt.isRedacted()) {
|
|
||||||
auto reason = evt.redactedBecause()->reason();
|
|
||||||
return (reason.isEmpty()) ? i18n("<i>[This message was deleted]</i>")
|
|
||||||
: i18n("<i>[This message was deleted: %1]</i>", evt.redactedBecause()->reason());
|
|
||||||
}
|
|
||||||
return eventHandler.getRichBody();
|
return eventHandler.getRichBody();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (role == ContentModelRole) {
|
if (role == ContentModelRole) {
|
||||||
if (m_contentModels.contains(evt.id())) {
|
if (!evt.isStateEvent() && !evt.id().isEmpty()) {
|
||||||
return QVariant::fromValue<MessageContentModel *>(m_contentModels.at(evt.id()).get());
|
return QVariant::fromValue<MessageContentModel *>(new MessageContentModel(m_currentRoom, &evt));
|
||||||
|
}
|
||||||
|
if (evt.isStateEvent()) {
|
||||||
|
if (evt.matrixType() == QStringLiteral("org.matrix.msc3672.beacon_info")) {
|
||||||
|
return QVariant::fromValue<MessageContentModel *>(new MessageContentModel(m_currentRoom, &evt));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@@ -631,12 +629,6 @@ void MessageEventModel::createEventObjects(const Quotient::RoomEvent *event)
|
|||||||
m_memberObjects[senderId] = std::unique_ptr<NeochatRoomMember>(new NeochatRoomMember(m_currentRoom, senderId));
|
m_memberObjects[senderId] = std::unique_ptr<NeochatRoomMember>(new NeochatRoomMember(m_currentRoom, senderId));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_contentModels.contains(eventId)) {
|
|
||||||
if (!event->isStateEvent() || event->matrixType() == QStringLiteral("org.matrix.msc3672.beacon_info")) {
|
|
||||||
m_contentModels[eventId] = std::unique_ptr<MessageContentModel>(new MessageContentModel(m_currentRoom, event));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadMarkerModel handles updates to add and remove markers, we only need to
|
// ReadMarkerModel handles updates to add and remove markers, we only need to
|
||||||
// handle adding and removing whole models here.
|
// handle adding and removing whole models here.
|
||||||
if (m_readMarkerModels.contains(eventId)) {
|
if (m_readMarkerModels.contains(eventId)) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
#include <QQmlEngine>
|
#include <QQmlEngine>
|
||||||
|
|
||||||
#include "linkpreviewer.h"
|
#include "linkpreviewer.h"
|
||||||
#include "messagecontentmodel.h"
|
|
||||||
#include "neochatroom.h"
|
#include "neochatroom.h"
|
||||||
#include "neochatroommember.h"
|
#include "neochatroommember.h"
|
||||||
#include "pollhandler.h"
|
#include "pollhandler.h"
|
||||||
@@ -118,7 +117,6 @@ private:
|
|||||||
KFormat m_format;
|
KFormat m_format;
|
||||||
|
|
||||||
std::map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
|
std::map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
|
||||||
std::map<QString, std::unique_ptr<MessageContentModel>> m_contentModels;
|
|
||||||
QMap<QString, QSharedPointer<ReadMarkerModel>> m_readMarkerModels;
|
QMap<QString, QSharedPointer<ReadMarkerModel>> m_readMarkerModels;
|
||||||
QMap<QString, QSharedPointer<ReactionModel>> m_reactionModels;
|
QMap<QString, QSharedPointer<ReactionModel>> m_reactionModels;
|
||||||
|
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ void PermissionsModel::setPowerLevel(const QString &permission, const int &newPo
|
|||||||
powerLevelContent[QLatin1String("events")] = eventPowerLevels;
|
powerLevelContent[QLatin1String("events")] = eventPowerLevels;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_room->setState<Quotient::RoomPowerLevelsEvent>(powerLevelContent);
|
m_room->setState<Quotient::RoomPowerLevelsEvent>(Quotient::fromJson<Quotient::PowerLevelsEventContent>(powerLevelContent));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -312,8 +312,12 @@ void PushRuleModel::addKeyword(const QString &keyword, const QString &roomId)
|
|||||||
pushConditions.append(keywordCondition);
|
pushConditions.append(keywordCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto job = m_connection->callApi<Quotient::SetPushRuleJob>(PushRuleKind::kindString(kind),
|
||||||
|
#else
|
||||||
auto job = m_connection->callApi<Quotient::SetPushRuleJob>(QLatin1String("global"),
|
auto job = m_connection->callApi<Quotient::SetPushRuleJob>(QLatin1String("global"),
|
||||||
PushRuleKind::kindString(kind),
|
PushRuleKind::kindString(kind),
|
||||||
|
#endif
|
||||||
keyword,
|
keyword,
|
||||||
actions,
|
actions,
|
||||||
QString(),
|
QString(),
|
||||||
@@ -338,7 +342,11 @@ void PushRuleModel::removeKeyword(const QString &keyword)
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto kind = PushRuleKind::kindString(m_rules[index].kind);
|
auto kind = PushRuleKind::kindString(m_rules[index].kind);
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto job = m_connection->callApi<Quotient::DeletePushRuleJob>(kind, m_rules[index].id);
|
||||||
|
#else
|
||||||
auto job = m_connection->callApi<Quotient::DeletePushRuleJob>(QStringLiteral("global"), kind, m_rules[index].id);
|
auto job = m_connection->callApi<Quotient::DeletePushRuleJob>(QStringLiteral("global"), kind, m_rules[index].id);
|
||||||
|
#endif
|
||||||
connect(job, &Quotient::BaseJob::failure, this, [this, job, index]() {
|
connect(job, &Quotient::BaseJob::failure, this, [this, job, index]() {
|
||||||
qWarning() << QLatin1String("Unable to remove push rule for keyword %1: ").arg(m_rules[index].id) << job->errorString();
|
qWarning() << QLatin1String("Unable to remove push rule for keyword %1: ").arg(m_rules[index].id) << job->errorString();
|
||||||
});
|
});
|
||||||
@@ -346,10 +354,18 @@ void PushRuleModel::removeKeyword(const QString &keyword)
|
|||||||
|
|
||||||
void PushRuleModel::setNotificationRuleEnabled(const QString &kind, const QString &ruleId, bool enabled)
|
void PushRuleModel::setNotificationRuleEnabled(const QString &kind, const QString &ruleId, bool enabled)
|
||||||
{
|
{
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto job = m_connection->callApi<Quotient::IsPushRuleEnabledJob>(kind, ruleId);
|
||||||
|
#else
|
||||||
auto job = m_connection->callApi<Quotient::IsPushRuleEnabledJob>(QStringLiteral("global"), kind, ruleId);
|
auto job = m_connection->callApi<Quotient::IsPushRuleEnabledJob>(QStringLiteral("global"), kind, ruleId);
|
||||||
|
#endif
|
||||||
connect(job, &Quotient::BaseJob::success, this, [job, kind, ruleId, enabled, this]() {
|
connect(job, &Quotient::BaseJob::success, this, [job, kind, ruleId, enabled, this]() {
|
||||||
if (job->enabled() != enabled) {
|
if (job->enabled() != enabled) {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
m_connection->callApi<Quotient::SetPushRuleEnabledJob>(kind, ruleId, enabled);
|
||||||
|
#else
|
||||||
m_connection->callApi<Quotient::SetPushRuleEnabledJob>(QStringLiteral("global"), kind, ruleId, enabled);
|
m_connection->callApi<Quotient::SetPushRuleEnabledJob>(QStringLiteral("global"), kind, ruleId, enabled);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -363,7 +379,11 @@ void PushRuleModel::setNotificationRuleActions(const QString &kind, const QStrin
|
|||||||
actions = actionToVariant(action);
|
actions = actionToVariant(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
m_connection->callApi<Quotient::SetPushRuleActionsJob>(kind, ruleId, actions);
|
||||||
|
#else
|
||||||
m_connection->callApi<Quotient::SetPushRuleActionsJob>(QStringLiteral("global"), kind, ruleId, actions);
|
m_connection->callApi<Quotient::SetPushRuleActionsJob>(QStringLiteral("global"), kind, ruleId, actions);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
PushRuleAction::Action PushRuleModel::variantToAction(const QList<QVariant> &actions, bool enabled)
|
PushRuleAction::Action PushRuleModel::variantToAction(const QList<QVariant> &actions, bool enabled)
|
||||||
|
|||||||
@@ -3,15 +3,10 @@
|
|||||||
|
|
||||||
#include "reactionmodel.h"
|
#include "reactionmodel.h"
|
||||||
#include "neochatroom.h"
|
#include "neochatroom.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFont>
|
#include <QFont>
|
||||||
#ifdef HAVE_ICU
|
|
||||||
#include <QTextBoundaryFinder>
|
|
||||||
#include <QTextCharFormat>
|
|
||||||
#include <unicode/uchar.h>
|
|
||||||
#include <unicode/urename.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
|
|
||||||
@@ -157,30 +152,6 @@ QHash<int, QByteArray> ReactionModel::roleNames() const
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isEmoji(const QString &text)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_ICU
|
|
||||||
QTextBoundaryFinder finder(QTextBoundaryFinder::Grapheme, text);
|
|
||||||
int from = 0;
|
|
||||||
while (finder.toNextBoundary() != -1) {
|
|
||||||
auto to = finder.position();
|
|
||||||
if (text[from].isSpace()) {
|
|
||||||
from = to;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto first = text.mid(from, to - from).toUcs4()[0];
|
|
||||||
if (!u_hasBinaryProperty(first, UCHAR_EMOJI)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
from = to;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ReactionModel::reactionText(QString text) const
|
QString ReactionModel::reactionText(QString text) const
|
||||||
{
|
{
|
||||||
text = text.toHtmlEscaped();
|
text = text.toHtmlEscaped();
|
||||||
@@ -194,7 +165,7 @@ QString ReactionModel::reactionText(QString text) const
|
|||||||
.arg(m_room->connection()->makeMediaUrl(QUrl(text)).toString(), QString::number(size));
|
.arg(m_room->connection()->makeMediaUrl(QUrl(text)).toString(), QString::number(size));
|
||||||
}
|
}
|
||||||
|
|
||||||
return isEmoji(text) ? QStringLiteral("<span style=\"font-family: 'emoji';\">") + text + QStringLiteral("</span>") : text;
|
return Utils::isEmoji(text) ? QStringLiteral("<span style=\"font-family: 'emoji';\">") + text + QStringLiteral("</span>") : text;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_reactionmodel.cpp"
|
#include "moc_reactionmodel.cpp"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
bool UserFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
bool UserFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(sourceParent);
|
Q_UNUSED(sourceParent);
|
||||||
if (m_filterText.length() < 1) {
|
if (!m_allowEmpty && m_filterText.length() < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return sourceModel()->data(sourceModel()->index(sourceRow, 0), UserListModel::DisplayNameRole).toString().contains(m_filterText, Qt::CaseInsensitive)
|
return sourceModel()->data(sourceModel()->index(sourceRow, 0), UserListModel::DisplayNameRole).toString().contains(m_filterText, Qt::CaseInsensitive)
|
||||||
@@ -27,4 +27,15 @@ void UserFilterModel::setFilterText(const QString &filterText)
|
|||||||
invalidateFilter();
|
invalidateFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UserFilterModel::allowEmpty() const
|
||||||
|
{
|
||||||
|
return m_allowEmpty;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserFilterModel::setAllowEmpty(bool allowEmpty)
|
||||||
|
{
|
||||||
|
m_allowEmpty = allowEmpty;
|
||||||
|
Q_EMIT allowEmptyChanged();
|
||||||
|
}
|
||||||
|
|
||||||
#include "moc_userfiltermodel.cpp"
|
#include "moc_userfiltermodel.cpp"
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class UserFilterModel : public QSortFilterProxyModel
|
|||||||
* The text is either a desired display name or matrix id.
|
* The text is either a desired display name or matrix id.
|
||||||
*/
|
*/
|
||||||
Q_PROPERTY(QString filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
|
Q_PROPERTY(QString filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
|
||||||
|
Q_PROPERTY(bool allowEmpty READ allowEmpty WRITE setAllowEmpty NOTIFY allowEmptyChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
@@ -36,9 +37,14 @@ public:
|
|||||||
QString filterText() const;
|
QString filterText() const;
|
||||||
void setFilterText(const QString &filterText);
|
void setFilterText(const QString &filterText);
|
||||||
|
|
||||||
|
bool allowEmpty() const;
|
||||||
|
void setAllowEmpty(bool allowEmpty);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void filterTextChanged();
|
void filterTextChanged();
|
||||||
|
void allowEmptyChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_filterText;
|
QString m_filterText;
|
||||||
|
bool m_allowEmpty = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -88,7 +88,11 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const
|
|||||||
return memberId;
|
return memberId;
|
||||||
}
|
}
|
||||||
if (role == AvatarRole) {
|
if (role == AvatarRole) {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
return m_currentRoom->member(memberId).avatarUrl();
|
||||||
|
#else
|
||||||
return m_currentRoom->memberAvatar(memberId).url();
|
return m_currentRoom->memberAvatar(memberId).url();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (role == ObjectRole) {
|
if (role == ObjectRole) {
|
||||||
return QVariant::fromValue(memberId);
|
return QVariant::fromValue(memberId);
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ void WebShortcutModel::trigger(const QString &data)
|
|||||||
void WebShortcutModel::configureWebShortcuts()
|
void WebShortcutModel::configureWebShortcuts()
|
||||||
{
|
{
|
||||||
#ifdef HAVE_KIO
|
#ifdef HAVE_KIO
|
||||||
auto job = new KIO::CommandLauncherJob(QStringLiteral("kcmshell5"), QStringList() << QStringLiteral("webshortcuts"), this);
|
auto job = new KIO::CommandLauncherJob(QStringLiteral("kcmshell6"), QStringList() << QStringLiteral("webshortcuts"), this);
|
||||||
job->exec();
|
job->exec();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,14 +261,16 @@ Action=Popup
|
|||||||
Name=Share
|
Name=Share
|
||||||
Name[ar]=شارك
|
Name[ar]=شارك
|
||||||
Name[ca]=Compartició
|
Name[ca]=Compartició
|
||||||
Name[ca@valencia]=Compartició
|
Name[ca@valencia]=Compartiu
|
||||||
Name[cs]=Sdílet
|
Name[cs]=Sdílet
|
||||||
|
Name[de]=Teilen
|
||||||
Name[en_GB]=Share
|
Name[en_GB]=Share
|
||||||
Name[eo]=Kundividi
|
Name[eo]=Kundividi
|
||||||
Name[es]=Compartir
|
Name[es]=Compartir
|
||||||
Name[eu]=Partekatu
|
Name[eu]=Partekatu
|
||||||
Name[fi]=Jaa
|
Name[fi]=Jaa
|
||||||
Name[fr]=Partager
|
Name[fr]=Partager
|
||||||
|
Name[gl]=Compartir
|
||||||
Name[he]=שיתוף
|
Name[he]=שיתוף
|
||||||
Name[hu]=Megosztás
|
Name[hu]=Megosztás
|
||||||
Name[ia]=Comparti
|
Name[ia]=Comparti
|
||||||
@@ -290,12 +292,14 @@ Comment=The result of sharing a piece of content
|
|||||||
Comment[ar]=نتيجة مشاركة محتوى
|
Comment[ar]=نتيجة مشاركة محتوى
|
||||||
Comment[ca]=El resultat de compartir una peça de contingut
|
Comment[ca]=El resultat de compartir una peça de contingut
|
||||||
Comment[ca@valencia]=El resultat de compartir una peça de contingut
|
Comment[ca@valencia]=El resultat de compartir una peça de contingut
|
||||||
|
Comment[de]=Das Ergebnis nach dem Teilen eines Teils des Inhalts
|
||||||
Comment[en_GB]=The result of sharing a piece of content
|
Comment[en_GB]=The result of sharing a piece of content
|
||||||
Comment[eo]=La rezulto el kundividado de enhavero
|
Comment[eo]=La rezulto el kundividado de enhavero
|
||||||
Comment[es]=El resultado de compartir una parte de contenido
|
Comment[es]=El resultado de compartir una parte de contenido
|
||||||
Comment[eu]=Eduki pieza bat partekatzearen emaitza
|
Comment[eu]=Eduki pieza bat partekatzearen emaitza
|
||||||
Comment[fi]=Tulos yhden sisältöosasen jakamisesta
|
Comment[fi]=Tulos yhden sisältöosasen jakamisesta
|
||||||
Comment[fr]=Le résultat du partage d'une partie de contenu.
|
Comment[fr]=Le résultat du partage d'une partie de contenu.
|
||||||
|
Comment[gl]=O resultado de compartir un fragmento de contido.
|
||||||
Comment[he]=תוצאת שיתוף פיסת תוכן
|
Comment[he]=תוצאת שיתוף פיסת תוכן
|
||||||
Comment[hu]=Tartalom megosztásának eredménye
|
Comment[hu]=Tartalom megosztásának eredménye
|
||||||
Comment[ia]=Le exito de compartir un pecietta de contento
|
Comment[ia]=Le exito de compartir un pecietta de contento
|
||||||
|
|||||||
9
src/neochatconfig.kcfgc
Normal file
9
src/neochatconfig.kcfgc
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
File=neochatconfig.kcfg
|
||||||
|
ClassName=NeoChatConfig
|
||||||
|
Mutators=true
|
||||||
|
DefaultValueGetters=true
|
||||||
|
GenerateProperties=true
|
||||||
|
ParentInConstructor=true
|
||||||
|
Singleton=true
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
|
|
||||||
#include <Quotient/connectiondata.h>
|
|
||||||
#include <Quotient/csapi/content-repo.h>
|
#include <Quotient/csapi/content-repo.h>
|
||||||
#include <Quotient/csapi/profile.h>
|
#include <Quotient/csapi/profile.h>
|
||||||
#include <Quotient/csapi/versions.h>
|
#include <Quotient/csapi/versions.h>
|
||||||
@@ -149,17 +148,6 @@ void NeoChatConnection::connectSignals()
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
Qt::SingleShotConnection);
|
Qt::SingleShotConnection);
|
||||||
|
|
||||||
connect(this, &Connection::refreshTokenChanged, this, [this]() {
|
|
||||||
QKeychain::WritePasswordJob job(qAppName());
|
|
||||||
job.setAutoDelete(true);
|
|
||||||
job.setKey(userId());
|
|
||||||
job.setBinaryData(connectionData()->refreshToken().toLatin1());
|
|
||||||
QEventLoop loop;
|
|
||||||
connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
|
|
||||||
job.start();
|
|
||||||
loop.exec();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int NeoChatConnection::badgeNotificationCount() const
|
int NeoChatConnection::badgeNotificationCount() const
|
||||||
@@ -586,21 +574,4 @@ LinkPreviewer *NeoChatConnection::previewerForLink(const QUrl &link)
|
|||||||
return previewer;
|
return previewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if Quotient_VERSION_MINOR > 8
|
|
||||||
KeyImport::Error NeoChatConnection::exportMegolmSessions(const QString &passphrase, const QString &path)
|
|
||||||
{
|
|
||||||
KeyImport keyImport;
|
|
||||||
auto result = keyImport.exportKeys(passphrase, this);
|
|
||||||
if (!result.has_value()) {
|
|
||||||
return result.error();
|
|
||||||
}
|
|
||||||
QUrl url(path);
|
|
||||||
QFile file(url.toLocalFile());
|
|
||||||
file.open(QFile::WriteOnly);
|
|
||||||
file.write(result.value());
|
|
||||||
file.close();
|
|
||||||
return KeyImport::Success;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "moc_neochatconnection.cpp"
|
#include "moc_neochatconnection.cpp"
|
||||||
|
|||||||
@@ -9,10 +9,6 @@
|
|||||||
#include <QCoroTask>
|
#include <QCoroTask>
|
||||||
#include <Quotient/connection.h>
|
#include <Quotient/connection.h>
|
||||||
|
|
||||||
#if Quotient_VERSION_MINOR > 8
|
|
||||||
#include <Quotient/keyimport.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "models/threepidmodel.h"
|
#include "models/threepidmodel.h"
|
||||||
|
|
||||||
class LinkPreviewer;
|
class LinkPreviewer;
|
||||||
@@ -173,10 +169,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
Q_INVOKABLE QString accountDataJsonString(const QString &type) const;
|
Q_INVOKABLE QString accountDataJsonString(const QString &type) const;
|
||||||
|
|
||||||
#if Quotient_VERSION_MINOR > 8
|
|
||||||
Q_INVOKABLE Quotient::KeyImport::Error exportMegolmSessions(const QString &passphrase, const QString &path);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
qsizetype directChatNotifications() const;
|
qsizetype directChatNotifications() const;
|
||||||
bool directChatsHaveHighlightNotifications() const;
|
bool directChatsHaveHighlightNotifications() const;
|
||||||
qsizetype homeNotifications() const;
|
qsizetype homeNotifications() const;
|
||||||
|
|||||||
@@ -134,7 +134,11 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS
|
|||||||
auto showNotification = [this, roomMemberEvent] {
|
auto showNotification = [this, roomMemberEvent] {
|
||||||
QImage avatar_image;
|
QImage avatar_image;
|
||||||
if (roomMemberEvent && !member(roomMemberEvent->senderId()).avatarUrl().isEmpty()) {
|
if (roomMemberEvent && !member(roomMemberEvent->senderId()).avatarUrl().isEmpty()) {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
avatar_image = member(roomMemberEvent->senderId()).avatar(128, 128, {});
|
||||||
|
#else
|
||||||
avatar_image = memberAvatar(roomMemberEvent->senderId()).get(this->connection(), 128, [] {});
|
avatar_image = memberAvatar(roomMemberEvent->senderId()).get(this->connection(), 128, [] {});
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
qWarning() << "using this room's avatar";
|
qWarning() << "using this room's avatar";
|
||||||
avatar_image = avatar(128);
|
avatar_image = avatar(128);
|
||||||
@@ -1223,7 +1227,11 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
|
|||||||
for (const auto &i : roomRuleArray) {
|
for (const auto &i : roomRuleArray) {
|
||||||
QJsonObject roomRule = i.toObject();
|
QJsonObject roomRule = i.toObject();
|
||||||
if (roomRule["rule_id"_ls] == id()) {
|
if (roomRule["rule_id"_ls] == id()) {
|
||||||
connection()->callApi<DeletePushRuleJob>("global"_ls, "room"_ls, id());
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
connection()->callApi<DeletePushRuleJob>("room"_ls, id());
|
||||||
|
#else
|
||||||
|
connection()->callApi<DeletePushRuleJob>(QLatin1String("global"), "room"_ls, id());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1234,7 +1242,11 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
|
|||||||
for (const auto &i : overrideRuleArray) {
|
for (const auto &i : overrideRuleArray) {
|
||||||
QJsonObject overrideRule = i.toObject();
|
QJsonObject overrideRule = i.toObject();
|
||||||
if (overrideRule["rule_id"_ls] == id()) {
|
if (overrideRule["rule_id"_ls] == id()) {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
connection()->callApi<DeletePushRuleJob>("override"_ls, id());
|
||||||
|
#else
|
||||||
connection()->callApi<DeletePushRuleJob>("global"_ls, "override"_ls, id());
|
connection()->callApi<DeletePushRuleJob>("global"_ls, "override"_ls, id());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1270,9 +1282,17 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
|
|||||||
const QList<PushCondition> conditions = {pushCondition};
|
const QList<PushCondition> conditions = {pushCondition};
|
||||||
|
|
||||||
// Add new override rule and make sure it's enabled
|
// Add new override rule and make sure it's enabled
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto job = connection()->callApi<SetPushRuleJob>("override"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#else
|
||||||
auto job = connection()->callApi<SetPushRuleJob>("global"_ls, "override"_ls, id(), actions, QString(), QString(), conditions, QString());
|
auto job = connection()->callApi<SetPushRuleJob>("global"_ls, "override"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#endif
|
||||||
connect(job, &BaseJob::success, this, [this]() {
|
connect(job, &BaseJob::success, this, [this]() {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("override"_ls, id(), true);
|
||||||
|
#else
|
||||||
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "override"_ls, id(), true);
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "override"_ls, id(), true);
|
||||||
|
#endif
|
||||||
connect(enableJob, &BaseJob::success, this, [this]() {
|
connect(enableJob, &BaseJob::success, this, [this]() {
|
||||||
m_pushNotificationStateUpdating = false;
|
m_pushNotificationStateUpdating = false;
|
||||||
});
|
});
|
||||||
@@ -1296,9 +1316,17 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
|
|||||||
// No conditions for a room rule
|
// No conditions for a room rule
|
||||||
const QList<PushCondition> conditions;
|
const QList<PushCondition> conditions;
|
||||||
|
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto setJob = connection()->callApi<SetPushRuleJob>("room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#else
|
||||||
auto setJob = connection()->callApi<SetPushRuleJob>("global"_ls, "room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
auto setJob = connection()->callApi<SetPushRuleJob>("global"_ls, "room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#endif
|
||||||
connect(setJob, &BaseJob::success, this, [this]() {
|
connect(setJob, &BaseJob::success, this, [this]() {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("room"_ls, id(), true);
|
||||||
|
#else
|
||||||
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "room"_ls, id(), true);
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "room"_ls, id(), true);
|
||||||
|
#endif
|
||||||
connect(enableJob, &BaseJob::success, this, [this]() {
|
connect(enableJob, &BaseJob::success, this, [this]() {
|
||||||
m_pushNotificationStateUpdating = false;
|
m_pushNotificationStateUpdating = false;
|
||||||
});
|
});
|
||||||
@@ -1327,9 +1355,17 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
|
|||||||
const QList<PushCondition> conditions;
|
const QList<PushCondition> conditions;
|
||||||
|
|
||||||
// Add new room rule and make sure enabled
|
// Add new room rule and make sure enabled
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto setJob = connection()->callApi<SetPushRuleJob>("room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#else
|
||||||
auto setJob = connection()->callApi<SetPushRuleJob>("global"_ls, "room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
auto setJob = connection()->callApi<SetPushRuleJob>("global"_ls, "room"_ls, id(), actions, QString(), QString(), conditions, QString());
|
||||||
|
#endif
|
||||||
connect(setJob, &BaseJob::success, this, [this]() {
|
connect(setJob, &BaseJob::success, this, [this]() {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("room"_ls, id(), true);
|
||||||
|
#else
|
||||||
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "room"_ls, id(), true);
|
auto enableJob = connection()->callApi<SetPushRuleEnabledJob>("global"_ls, "room"_ls, id(), true);
|
||||||
|
#endif
|
||||||
connect(enableJob, &BaseJob::success, this, [this]() {
|
connect(enableJob, &BaseJob::success, this, [this]() {
|
||||||
m_pushNotificationStateUpdating = false;
|
m_pushNotificationStateUpdating = false;
|
||||||
});
|
});
|
||||||
@@ -1705,9 +1741,13 @@ int NeoChatRoom::maxRoomVersion() const
|
|||||||
return maxVersion;
|
return maxVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
Quotient::RoomMember NeoChatRoom::directChatRemoteMember() const
|
NeochatRoomMember *NeoChatRoom::directChatRemoteMember()
|
||||||
{
|
{
|
||||||
return directChatMembers()[0];
|
if (directChatMembers().size() == 0) {
|
||||||
|
qWarning() << "No other member available in this room";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
return new NeochatRoomMember(this, directChatMembers()[0].id());
|
||||||
}
|
}
|
||||||
|
|
||||||
void NeoChatRoom::sendLocation(float lat, float lon, const QString &description)
|
void NeoChatRoom::sendLocation(float lat, float lon, const QString &description)
|
||||||
@@ -1748,7 +1788,6 @@ void NeoChatRoom::downloadEventFromServer(const QString &eventId)
|
|||||||
connect(job, &BaseJob::success, this, [this, job, eventId] {
|
connect(job, &BaseJob::success, this, [this, job, eventId] {
|
||||||
// The event may have arrived in the meantime so check it's not in the timeline.
|
// The event may have arrived in the meantime so check it's not in the timeline.
|
||||||
if (findInTimeline(eventId) != historyEdge()) {
|
if (findInTimeline(eventId) != historyEdge()) {
|
||||||
Q_EMIT extraEventLoaded(eventId);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include <Quotient/roommember.h>
|
#include <Quotient/roommember.h>
|
||||||
|
|
||||||
#include "enums/pushrule.h"
|
#include "enums/pushrule.h"
|
||||||
|
#include "neochatroommember.h"
|
||||||
#include "pollhandler.h"
|
#include "pollhandler.h"
|
||||||
|
|
||||||
namespace Quotient
|
namespace Quotient
|
||||||
@@ -74,7 +75,7 @@ class NeoChatRoom : public Quotient::Room
|
|||||||
/**
|
/**
|
||||||
* @brief Get a RoomMember object for the other person in a direct chat.
|
* @brief Get a RoomMember object for the other person in a direct chat.
|
||||||
*/
|
*/
|
||||||
Q_PROPERTY(Quotient::RoomMember directChatRemoteMember READ directChatRemoteMember CONSTANT)
|
Q_PROPERTY(NeochatRoomMember *directChatRemoteMember READ directChatRemoteMember CONSTANT)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The Matrix IDs of this room's parents.
|
* @brief The Matrix IDs of this room's parents.
|
||||||
@@ -319,7 +320,7 @@ public:
|
|||||||
|
|
||||||
[[nodiscard]] QString avatarMediaId() const;
|
[[nodiscard]] QString avatarMediaId() const;
|
||||||
|
|
||||||
Quotient::RoomMember directChatRemoteMember() const;
|
NeochatRoomMember *directChatRemoteMember();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Whether this room has one or more parent spaces set.
|
* @brief Whether this room has one or more parent spaces set.
|
||||||
|
|||||||
@@ -131,7 +131,11 @@ void NotificationsManager::processNotificationJob(QPointer<NeoChatConnection> co
|
|||||||
|
|
||||||
QImage avatar_image;
|
QImage avatar_image;
|
||||||
if (!sender.avatarUrl().isEmpty()) {
|
if (!sender.avatarUrl().isEmpty()) {
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
avatar_image = room->member(sender.id()).avatar(128, 128, {});
|
||||||
|
#else
|
||||||
avatar_image = room->memberAvatar(sender.id()).get(connection, 128, {});
|
avatar_image = room->memberAvatar(sender.id()).get(connection, 128, {});
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
avatar_image = room->avatar(128);
|
avatar_image = room->avatar(128);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,34 @@
|
|||||||
{
|
{
|
||||||
"Name": "Tobias Fella",
|
"Name": "Tobias Fella",
|
||||||
"Name[ar]": "توبياس فلة",
|
"Name[ar]": "توبياس فلة",
|
||||||
"Name[he]": "טוביאס פלה",
|
"Name[ca@valencia]": "Tobias Fella",
|
||||||
|
"Name[ca]": "Tobias Fella",
|
||||||
|
"Name[cs]": "Tobias Fella",
|
||||||
|
"Name[de]": "Tobias Fella",
|
||||||
|
"Name[en_GB]": "Tobias Fella",
|
||||||
|
"Name[eo]": "Tobias Fella",
|
||||||
|
"Name[es]": "Tobias Fella",
|
||||||
|
"Name[eu]": "Tobias Fella",
|
||||||
|
"Name[fi]": "Tobias Fella",
|
||||||
|
"Name[fr]": "Tobias Fella",
|
||||||
|
"Name[gl]": "Tobias Fella",
|
||||||
|
"Name[hu]": "Tobias Fella",
|
||||||
|
"Name[ia]": "Tobias Fella",
|
||||||
|
"Name[it]": "Tobias Fella",
|
||||||
|
"Name[ka]": "Tobias Fella",
|
||||||
|
"Name[lv]": "Tobias Fella",
|
||||||
|
"Name[nl]": "Tobias Fella",
|
||||||
|
"Name[nn]": "Tobias Fella",
|
||||||
|
"Name[pl]": "Tobias Fella",
|
||||||
|
"Name[pt_BR]": "Tobias Fella",
|
||||||
|
"Name[ru]": "Tobias Fella",
|
||||||
|
"Name[sl]": "Tobias Fella",
|
||||||
|
"Name[sv]": "Tobias Fella",
|
||||||
"Name[ta]": "டோபியாஸ் ஃபெல்லா",
|
"Name[ta]": "டோபியாஸ் ஃபெல்லா",
|
||||||
"Name[x-test]": "xxTobias Fellaxx"
|
"Name[tr]": "Tobias Fella",
|
||||||
|
"Name[uk]": "Tobias Fella",
|
||||||
|
"Name[x-test]": "xxTobias Fellaxx",
|
||||||
|
"Name[zh_TW]": "Tobias Fella"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Category": "Utilities",
|
"Category": "Utilities",
|
||||||
@@ -15,13 +40,13 @@
|
|||||||
"Description[ca@valencia]": "Compartix a través de NeoChat",
|
"Description[ca@valencia]": "Compartix a través de NeoChat",
|
||||||
"Description[ca]": "Comparteix a través del NeoChat",
|
"Description[ca]": "Comparteix a través del NeoChat",
|
||||||
"Description[de]": "Über NeoChat teilen",
|
"Description[de]": "Über NeoChat teilen",
|
||||||
|
"Description[en_GB]": "Share via NeoChat",
|
||||||
"Description[eo]": "Kundividi per NeoChat",
|
"Description[eo]": "Kundividi per NeoChat",
|
||||||
"Description[es]": "Compartir mediante NeoChat",
|
"Description[es]": "Compartir mediante NeoChat",
|
||||||
"Description[eu]": "Partekatu NeoChat bidez",
|
"Description[eu]": "Partekatu NeoChat bidez",
|
||||||
"Description[fi]": "Jaa NeoChatillä",
|
"Description[fi]": "Jaa NeoChatillä",
|
||||||
"Description[fr]": "Partager grâce à NeoChat",
|
"Description[fr]": "Partager grâce à NeoChat",
|
||||||
"Description[gl]": "Compartir por NeoChat",
|
"Description[gl]": "Compartir por NeoChat",
|
||||||
"Description[he]": "שיתוף דרך NeoChat",
|
|
||||||
"Description[hu]": "Megosztás NeoChatben",
|
"Description[hu]": "Megosztás NeoChatben",
|
||||||
"Description[ia]": "Comparti via NeoChat",
|
"Description[ia]": "Comparti via NeoChat",
|
||||||
"Description[it]": "Condividi tramite NeoChat",
|
"Description[it]": "Condividi tramite NeoChat",
|
||||||
@@ -30,6 +55,7 @@
|
|||||||
"Description[nl]": "Delen via NeoChat",
|
"Description[nl]": "Delen via NeoChat",
|
||||||
"Description[nn]": "Del via NeoChat",
|
"Description[nn]": "Del via NeoChat",
|
||||||
"Description[pl]": "Udostępnij przez NeoChat",
|
"Description[pl]": "Udostępnij przez NeoChat",
|
||||||
|
"Description[pt_BR]": "Compartilhar via NeoChat",
|
||||||
"Description[ru]": "Опубликовать в NeoChat",
|
"Description[ru]": "Опубликовать в NeoChat",
|
||||||
"Description[sl]": "Deli prek NeoChat",
|
"Description[sl]": "Deli prek NeoChat",
|
||||||
"Description[sv]": "Dela via NeoChat",
|
"Description[sv]": "Dela via NeoChat",
|
||||||
@@ -42,9 +68,35 @@
|
|||||||
"License": "GPL",
|
"License": "GPL",
|
||||||
"Name": "NeoChat",
|
"Name": "NeoChat",
|
||||||
"Name[ar]": "نيوتشات",
|
"Name[ar]": "نيوتشات",
|
||||||
|
"Name[ast]": "NeoChat",
|
||||||
|
"Name[ca@valencia]": "NeoChat",
|
||||||
|
"Name[ca]": "NeoChat",
|
||||||
|
"Name[cs]": "NeoChat",
|
||||||
|
"Name[de]": "NeoChat",
|
||||||
|
"Name[en_GB]": "NeoChat",
|
||||||
|
"Name[eo]": "NeoChat",
|
||||||
|
"Name[es]": "NeoChat",
|
||||||
|
"Name[eu]": "NeoChat",
|
||||||
|
"Name[fi]": "NeoChat",
|
||||||
|
"Name[fr]": "NeoChat",
|
||||||
|
"Name[gl]": "NeoChat",
|
||||||
|
"Name[hu]": "NeoChat",
|
||||||
"Name[ia]": "Neochat",
|
"Name[ia]": "Neochat",
|
||||||
|
"Name[it]": "NeoChat",
|
||||||
|
"Name[ka]": "NeoChat",
|
||||||
|
"Name[lv]": "NeoChat",
|
||||||
|
"Name[nl]": "NeoChat",
|
||||||
|
"Name[nn]": "NeoChat",
|
||||||
|
"Name[pl]": "NeoChat",
|
||||||
|
"Name[pt_BR]": "NeoChat",
|
||||||
|
"Name[ru]": "NeoChat",
|
||||||
|
"Name[sl]": "NeoChat",
|
||||||
|
"Name[sv]": "NeoChat",
|
||||||
"Name[ta]": "நியோச்சாட்",
|
"Name[ta]": "நியோச்சாட்",
|
||||||
|
"Name[tr]": "NeoChat",
|
||||||
|
"Name[uk]": "NeoChat",
|
||||||
"Name[x-test]": "xxNeoChatxx",
|
"Name[x-test]": "xxNeoChatxx",
|
||||||
|
"Name[zh_TW]": "NeoChat",
|
||||||
"X-Purpose-ActionDisplay": "NeoChat"
|
"X-Purpose-ActionDisplay": "NeoChat"
|
||||||
},
|
},
|
||||||
"X-Purpose-PluginTypes": [
|
"X-Purpose-PluginTypes": [
|
||||||
|
|||||||
@@ -19,22 +19,6 @@ QQC2.Menu {
|
|||||||
|
|
||||||
margins: Kirigami.Units.smallSpacing
|
margins: Kirigami.Units.smallSpacing
|
||||||
|
|
||||||
QQC2.MenuItem {
|
|
||||||
text: i18nc("@action:button", "Show QR code")
|
|
||||||
icon.name: "view-barcode-qr-symbolic"
|
|
||||||
onTriggered: {
|
|
||||||
let qrMax = Qt.createComponent('org.kde.neochat', 'QrCodeMaximizeComponent').createObject(QQC2.Overlay.overlay, {
|
|
||||||
text: "https://matrix.to/#/" + root.connection.localUser.id,
|
|
||||||
title: root.connection.localUser.displayName,
|
|
||||||
subtitle: root.connection.localUser.id,
|
|
||||||
avatarSource: root.connection.makeMediaUrl(root.connection.localUser.avatarUrl)
|
|
||||||
});
|
|
||||||
if (typeof root.closeDialog === "function") {
|
|
||||||
root.closeDialog();
|
|
||||||
}
|
|
||||||
qrMax.open();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
QQC2.MenuItem {
|
QQC2.MenuItem {
|
||||||
text: i18n("Edit this account")
|
text: i18n("Edit this account")
|
||||||
icon.name: "document-edit"
|
icon.name: "document-edit"
|
||||||
@@ -61,7 +45,7 @@ QQC2.Menu {
|
|||||||
QQC2.MenuItem {
|
QQC2.MenuItem {
|
||||||
text: i18n("Open developer tools")
|
text: i18n("Open developer tools")
|
||||||
icon.name: "tools"
|
icon.name: "tools"
|
||||||
visible: NeoChatConfig.developerTools
|
visible: Config.developerTools
|
||||||
onTriggered: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat.devtools', 'DevtoolsPage'), {
|
onTriggered: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat.devtools', 'DevtoolsPage'), {
|
||||||
connection: root.connection
|
connection: root.connection
|
||||||
}, {
|
}, {
|
||||||
@@ -73,7 +57,7 @@ QQC2.Menu {
|
|||||||
QQC2.MenuItem {
|
QQC2.MenuItem {
|
||||||
text: i18nc("@action:inmenu", "Open Secret Backup")
|
text: i18nc("@action:inmenu", "Open Secret Backup")
|
||||||
icon.name: "unlock"
|
icon.name: "unlock"
|
||||||
visible: NeoChatConfig.secretBackup
|
visible: Config.secretBackup
|
||||||
onTriggered: root.window.pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UnlockSSSSDialog'), {}, {
|
onTriggered: root.window.pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UnlockSSSSDialog'), {}, {
|
||||||
title: i18nc("@title:window", "Open Key Backup")
|
title: i18nc("@title:window", "Open Key Backup")
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
// SPDX-FileCopyrightText: 2024 James Graham <james.h.graham@protonmail.com>
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
||||||
|
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Controls as QQC2
|
|
||||||
|
|
||||||
import org.kde.kirigami as Kirigami
|
|
||||||
import org.kde.kirigamiaddons.labs.components as KirigamiComponents
|
|
||||||
|
|
||||||
KirigamiComponents.Avatar {
|
|
||||||
id: root
|
|
||||||
|
|
||||||
property int notificationCount
|
|
||||||
|
|
||||||
property bool notificationHighlight
|
|
||||||
|
|
||||||
property bool showNotificationLabel
|
|
||||||
|
|
||||||
QQC2.Label {
|
|
||||||
id: notificationCountLabel
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.topMargin: -Kirigami.Units.smallSpacing
|
|
||||||
anchors.rightMargin: -Kirigami.Units.smallSpacing
|
|
||||||
z: 1
|
|
||||||
width: Math.max(notificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
|
||||||
height: Kirigami.Units.iconSizes.smallMedium
|
|
||||||
|
|
||||||
text: root.notificationCount > 0 ? root.notificationCount : ""
|
|
||||||
visible: root.showNotificationLabel
|
|
||||||
color: Kirigami.Theme.textColor
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
background: Rectangle {
|
|
||||||
visible: true
|
|
||||||
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
|
||||||
Kirigami.Theme.inherit: false
|
|
||||||
color: root.notificationHighlight ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
|
||||||
radius: height / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
TextMetrics {
|
|
||||||
id: notificationCountTextMetrics
|
|
||||||
text: notificationCountLabel.text
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,12 +15,6 @@ Delegates.RoundedItemDelegate {
|
|||||||
|
|
||||||
property url source
|
property url source
|
||||||
|
|
||||||
property alias notificationCount: avatarNotification.notificationCount
|
|
||||||
|
|
||||||
property alias notificationHighlight: avatarNotification.notificationHighlight
|
|
||||||
|
|
||||||
property alias showNotificationLabel: avatarNotification.showNotificationLabel
|
|
||||||
|
|
||||||
signal contextMenuRequested
|
signal contextMenuRequested
|
||||||
signal selected
|
signal selected
|
||||||
|
|
||||||
@@ -47,8 +41,7 @@ Delegates.RoundedItemDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contentItem: AvatarNotification {
|
contentItem: KirigamiComponents.Avatar {
|
||||||
id: avatarNotification
|
|
||||||
source: root.source
|
source: root.source
|
||||||
name: root.text
|
name: root.text
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Loader {
|
|||||||
* Some common actions shared between menus
|
* Some common actions shared between menus
|
||||||
*/
|
*/
|
||||||
component ViewSourceAction: Kirigami.Action {
|
component ViewSourceAction: Kirigami.Action {
|
||||||
visible: NeoChatConfig.developerTools
|
visible: Config.developerTools
|
||||||
text: i18n("View Source")
|
text: i18n("View Source")
|
||||||
icon.name: "code-context"
|
icon.name: "code-context"
|
||||||
onTriggered: RoomManager.viewEventSource(root.eventId)
|
onTriggered: RoomManager.viewEventSource(root.eventId)
|
||||||
|
|||||||
@@ -101,13 +101,13 @@ DelegateContextMenu {
|
|||||||
id: saveAsDialog
|
id: saveAsDialog
|
||||||
FileDialog {
|
FileDialog {
|
||||||
fileMode: FileDialog.SaveFile
|
fileMode: FileDialog.SaveFile
|
||||||
folder: NeoChatConfig.lastSaveDirectory.length > 0 ? NeoChatConfig.lastSaveDirectory : StandardPaths.writableLocation(StandardPaths.DownloadLocation)
|
folder: Config.lastSaveDirectory.length > 0 ? Config.lastSaveDirectory : StandardPaths.writableLocation(StandardPaths.DownloadLocation)
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
if (!currentFile) {
|
if (!currentFile) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NeoChatConfig.lastSaveDirectory = folder;
|
Config.lastSaveDirectory = folder;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
currentRoom.downloadFile(eventId, currentFile);
|
currentRoom.downloadFile(eventId, currentFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ QQC2.Control {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
visible: NeoChatConfig.threads && !root.currentRoom.readOnly
|
visible: Config.threads && !root.currentRoom.readOnly
|
||||||
text: i18n("Reply in Thread")
|
text: i18n("Reply in Thread")
|
||||||
icon.name: "dialog-messages"
|
icon.name: "dialog-messages"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
|||||||
@@ -27,7 +27,10 @@ Kirigami.Page {
|
|||||||
let c = LocationHelper.center(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox));
|
let c = LocationHelper.center(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox));
|
||||||
return QtPositioning.coordinate(c.y, c.x);
|
return QtPositioning.coordinate(c.y, c.x);
|
||||||
}
|
}
|
||||||
map.zoomLevel: LocationHelper.zoomToFit(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox), mapView.width, mapView.height)
|
map.zoomLevel: {
|
||||||
|
const zoom = LocationHelper.zoomToFit(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox), mapView.width, mapView.height)
|
||||||
|
return Math.min(Math.max(zoom, map.minimumZoomLevel), map.maximumZoomLevel);
|
||||||
|
}
|
||||||
|
|
||||||
MapItemView {
|
MapItemView {
|
||||||
Component.onCompleted: mapView.map.addMapItemView(this)
|
Component.onCompleted: mapView.map.addMapItemView(this)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Kirigami.ApplicationWindow {
|
|||||||
readonly property HoverLinkIndicator hoverLinkIndicator: linkIndicator
|
readonly property HoverLinkIndicator hoverLinkIndicator: linkIndicator
|
||||||
|
|
||||||
|
|
||||||
title: NeoChatConfig.windowTitleFocus ? activeFocusItem + " " + (activeFocusItem ? activeFocusItem.Accessible.name : "") : "NeoChat"
|
title: Config.windowTitleFocus ? activeFocusItem + " " + (activeFocusItem ? activeFocusItem.Accessible.name : "") : "NeoChat"
|
||||||
|
|
||||||
minimumWidth: Kirigami.Units.gridUnit * 20
|
minimumWidth: Kirigami.Units.gridUnit * 20
|
||||||
minimumHeight: Kirigami.Units.gridUnit * 15
|
minimumHeight: Kirigami.Units.gridUnit * 15
|
||||||
@@ -54,16 +54,6 @@ Kirigami.ApplicationWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
|
||||||
id: pendingOidcConnections
|
|
||||||
target: Controller.pendingOidcConnection
|
|
||||||
function onConnected() {
|
|
||||||
console.warn("loading rooms")
|
|
||||||
root.load();
|
|
||||||
pendingOidcConnections.enabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: root.quitAction
|
target: root.quitAction
|
||||||
function onTriggered() {
|
function onTriggered() {
|
||||||
@@ -168,7 +158,7 @@ Kirigami.ApplicationWindow {
|
|||||||
|
|
||||||
// This is a memory for all user initiated actions on the drawer, i.e. clicking the button
|
// This is a memory for all user initiated actions on the drawer, i.e. clicking the button
|
||||||
// It is used to ensure that user choice is remembered when changing pages and expanding and contracting the window width
|
// It is used to ensure that user choice is remembered when changing pages and expanding and contracting the window width
|
||||||
property bool drawerUserState: NeoChatConfig.autoRoomInfoDrawer
|
property bool drawerUserState: Config.autoRoomInfoDrawer
|
||||||
|
|
||||||
connection: root.connection
|
connection: root.connection
|
||||||
|
|
||||||
@@ -189,7 +179,7 @@ Kirigami.ApplicationWindow {
|
|||||||
modal: (!root.wideScreen || !enabled)
|
modal: (!root.wideScreen || !enabled)
|
||||||
onEnabledChanged: drawerOpen = enabled && !modal
|
onEnabledChanged: drawerOpen = enabled && !modal
|
||||||
onModalChanged: {
|
onModalChanged: {
|
||||||
if (NeoChatConfig.autoRoomInfoDrawer) {
|
if (Config.autoRoomInfoDrawer) {
|
||||||
drawerOpen = !modal && drawerUserState;
|
drawerOpen = !modal && drawerUserState;
|
||||||
dim = false;
|
dim = false;
|
||||||
}
|
}
|
||||||
@@ -204,11 +194,11 @@ Kirigami.ApplicationWindow {
|
|||||||
RoomSettingsView.window = root;
|
RoomSettingsView.window = root;
|
||||||
NeoChatSettingsView.window = root;
|
NeoChatSettingsView.window = root;
|
||||||
NeoChatSettingsView.connection = root.connection;
|
NeoChatSettingsView.connection = root.connection;
|
||||||
WindowController.setBlur(pageStack, NeoChatConfig.blur && !NeoChatConfig.compactLayout);
|
WindowController.setBlur(pageStack, Config.blur && !Config.compactLayout);
|
||||||
if (ShareHandler.text && root.connection) {
|
if (ShareHandler.text && root.connection) {
|
||||||
root.handleShare()
|
root.handleShare()
|
||||||
}
|
}
|
||||||
if (NeoChatConfig.minimizeToSystemTrayOnStartup && !Kirigami.Settings.isMobile && Controller.supportSystemTray && NeoChatConfig.systemTray) {
|
if (Config.minimizeToSystemTrayOnStartup && !Kirigami.Settings.isMobile && Controller.supportSystemTray && Config.systemTray) {
|
||||||
restoreWindowGeometryConnections.enabled = true; // To restore window size and position
|
restoreWindowGeometryConnections.enabled = true; // To restore window size and position
|
||||||
} else {
|
} else {
|
||||||
visible = true;
|
visible = true;
|
||||||
@@ -216,21 +206,21 @@ Kirigami.ApplicationWindow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Connections {
|
Connections {
|
||||||
target: NeoChatConfig
|
target: Config
|
||||||
function onBlurChanged() {
|
function onBlurChanged() {
|
||||||
WindowController.setBlur(pageStack, NeoChatConfig.blur && !NeoChatConfig.compactLayout);
|
WindowController.setBlur(pageStack, Config.blur && !Config.compactLayout);
|
||||||
}
|
}
|
||||||
function onCompactLayoutChanged() {
|
function onCompactLayoutChanged() {
|
||||||
WindowController.setBlur(pageStack, NeoChatConfig.blur && !NeoChatConfig.compactLayout);
|
WindowController.setBlur(pageStack, Config.blur && !Config.compactLayout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// blur effect
|
// blur effect
|
||||||
color: NeoChatConfig.blur && !NeoChatConfig.compactLayout ? "transparent" : Kirigami.Theme.backgroundColor
|
color: Config.blur && !Config.compactLayout ? "transparent" : Kirigami.Theme.backgroundColor
|
||||||
|
|
||||||
// we need to apply the translucency effect separately on top of the color
|
// we need to apply the translucency effect separately on top of the color
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: NeoChatConfig.blur && !NeoChatConfig.compactLayout ? Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 1 - NeoChatConfig.transparency) : "transparent"
|
color: Config.blur && !Config.compactLayout ? Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 1 - Config.transparency) : "transparent"
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ Components.AlbumMaximizeComponent {
|
|||||||
fileMode: Platform.FileDialog.SaveFile
|
fileMode: Platform.FileDialog.SaveFile
|
||||||
folder: root.saveFolder
|
folder: root.saveFolder
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
NeoChatConfig.lastSaveDirectory = folder;
|
Config.lastSaveDirectory = folder;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
if (!currentFile) {
|
if (!currentFile) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,17 +54,13 @@ Delegates.RoundedItemDelegate {
|
|||||||
contentItem: RowLayout {
|
contentItem: RowLayout {
|
||||||
spacing: Kirigami.Units.largeSpacing
|
spacing: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
AvatarNotification {
|
Components.Avatar {
|
||||||
source: root.avatar ? root.connection.makeMediaUrl("mxc://" + root.avatar) : ""
|
source: root.avatar ? root.connection.makeMediaUrl("mxc://" + root.avatar) : ""
|
||||||
name: root.displayName
|
name: root.displayName
|
||||||
visible: NeoChatConfig.showAvatarInRoomDrawer
|
visible: Config.showAvatarInRoomDrawer
|
||||||
implicitHeight: Kirigami.Units.gridUnit + (NeoChatConfig.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2)
|
implicitHeight: Kirigami.Units.gridUnit + (Config.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2)
|
||||||
implicitWidth: visible ? implicitHeight : 0
|
implicitWidth: visible ? implicitHeight : 0
|
||||||
|
|
||||||
notificationCount: root.contextNotificationCount
|
|
||||||
notificationHighlight: root.hasHighlightNotifications
|
|
||||||
showNotificationLabel: root.hasNotifications && root.collapsed
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.preferredWidth: height
|
Layout.preferredWidth: height
|
||||||
}
|
}
|
||||||
@@ -95,7 +91,7 @@ Delegates.RoundedItemDelegate {
|
|||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
font: Kirigami.Theme.smallFont
|
font: Kirigami.Theme.smallFont
|
||||||
opacity: root.hasNotifications ? 0.9 : 0.7
|
opacity: root.hasNotifications ? 0.9 : 0.7
|
||||||
visible: !NeoChatConfig.compactRoomList && text.length > 0
|
visible: !Config.compactRoomList && text.length > 0
|
||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -141,7 +137,7 @@ Delegates.RoundedItemDelegate {
|
|||||||
|
|
||||||
QQC2.Button {
|
QQC2.Button {
|
||||||
id: configButton
|
id: configButton
|
||||||
visible: root.hovered && !Kirigami.Settings.isMobile && !NeoChatConfig.compactRoomList && !root.collapsed && root.showConfigure
|
visible: root.hovered && !Kirigami.Settings.isMobile && !Config.compactRoomList && !root.collapsed && root.showConfigure
|
||||||
text: i18n("Configure room")
|
text: i18n("Configure room")
|
||||||
display: QQC2.Button.IconOnly
|
display: QQC2.Button.IconOnly
|
||||||
|
|
||||||
@@ -159,14 +155,14 @@ Delegates.RoundedItemDelegate {
|
|||||||
room: root.currentRoom,
|
room: root.currentRoom,
|
||||||
connection: root.connection
|
connection: root.connection
|
||||||
});
|
});
|
||||||
if (!Kirigami.Settings.isMobile && !NeoChatConfig.compactRoomList) {
|
if (!Kirigami.Settings.isMobile && !Config.compactRoomList) {
|
||||||
configButton.visible = true;
|
configButton.visible = true;
|
||||||
configButton.down = true;
|
configButton.down = true;
|
||||||
}
|
}
|
||||||
menu.closed.connect(function () {
|
menu.closed.connect(function () {
|
||||||
configButton.down = undefined;
|
configButton.down = undefined;
|
||||||
configButton.visible = Qt.binding(() => {
|
configButton.visible = Qt.binding(() => {
|
||||||
return root.hovered && !Kirigami.Settings.isMobile && !NeoChatConfig.compactRoomList;
|
return root.hovered && !Kirigami.Settings.isMobile && !Config.compactRoomList;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
menu.open();
|
menu.open();
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ Kirigami.OverlayDrawer {
|
|||||||
readonly property int maxWidth: Kirigami.Units.gridUnit * 25
|
readonly property int maxWidth: Kirigami.Units.gridUnit * 25
|
||||||
readonly property int defaultWidth: Kirigami.Units.gridUnit * 20
|
readonly property int defaultWidth: Kirigami.Units.gridUnit * 20
|
||||||
property int actualWidth: {
|
property int actualWidth: {
|
||||||
if (NeoChatConfig.roomDrawerWidth === -1) {
|
if (Config.roomDrawerWidth === -1) {
|
||||||
return Kirigami.Units.gridUnit * 20;
|
return Kirigami.Units.gridUnit * 20;
|
||||||
} else {
|
} else {
|
||||||
return NeoChatConfig.roomDrawerWidth;
|
return Config.roomDrawerWidth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,8 +45,8 @@ Kirigami.OverlayDrawer {
|
|||||||
visible: true
|
visible: true
|
||||||
onPressed: _lastX = mapToGlobal(mouseX, mouseY).x
|
onPressed: _lastX = mapToGlobal(mouseX, mouseY).x
|
||||||
onReleased: {
|
onReleased: {
|
||||||
NeoChatConfig.roomDrawerWidth = root.actualWidth;
|
Config.roomDrawerWidth = root.actualWidth;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
property real _lastX: -1
|
property real _lastX: -1
|
||||||
|
|
||||||
@@ -55,9 +55,9 @@ Kirigami.OverlayDrawer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Qt.application.layoutDirection === Qt.RightToLeft) {
|
if (Qt.application.layoutDirection === Qt.RightToLeft) {
|
||||||
root.actualWidth = Math.min(root.maxWidth, Math.max(root.minWidth, NeoChatConfig.roomDrawerWidth - _lastX + mapToGlobal(mouseX, mouseY).x));
|
root.actualWidth = Math.min(root.maxWidth, Math.max(root.minWidth, Config.roomDrawerWidth - _lastX + mapToGlobal(mouseX, mouseY).x));
|
||||||
} else {
|
} else {
|
||||||
root.actualWidth = Math.min(root.maxWidth, Math.max(root.minWidth, NeoChatConfig.roomDrawerWidth + _lastX - mapToGlobal(mouseX, mouseY).x));
|
root.actualWidth = Math.min(root.maxWidth, Math.max(root.minWidth, Config.roomDrawerWidth + _lastX - mapToGlobal(mouseX, mouseY).x));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
|
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
|
||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls as QQC2
|
import QtQuick.Controls as QQC2
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -188,11 +190,17 @@ QQC2.ScrollView {
|
|||||||
|
|
||||||
focusSequence: "Ctrl+Shift+F"
|
focusSequence: "Ctrl+Shift+F"
|
||||||
|
|
||||||
onAccepted: sortedMessageEventModel.filterString = text
|
onAccepted: userFilterModel.filterText = text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
model: root.room.isDirectChat() ? 0 : RoomManager.userListModel
|
model: root.room.isDirectChat() ? 0 : userFilterModel
|
||||||
|
|
||||||
|
UserFilterModel {
|
||||||
|
id: userFilterModel
|
||||||
|
sourceModel: RoomManager.userListModel
|
||||||
|
allowEmpty: true
|
||||||
|
}
|
||||||
|
|
||||||
clip: true
|
clip: true
|
||||||
focus: true
|
focus: true
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ Kirigami.Page {
|
|||||||
|
|
||||||
required property NeoChatConnection connection
|
required property NeoChatConnection connection
|
||||||
|
|
||||||
readonly property bool collapsed: NeoChatConfig.collapsed
|
readonly property bool collapsed: Config.collapsed
|
||||||
|
|
||||||
signal search
|
signal search
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ Kirigami.Page {
|
|||||||
if (_private.currentWidth < _private.collapseWidth && _private.currentWidth + (mouse.x - _lastX) >= _private.collapseWidth) {
|
if (_private.currentWidth < _private.collapseWidth && _private.currentWidth + (mouse.x - _lastX) >= _private.collapseWidth) {
|
||||||
// Here we get back directly to a more wide mode.
|
// Here we get back directly to a more wide mode.
|
||||||
_private.currentWidth = _private.defaultWidth;
|
_private.currentWidth = _private.defaultWidth;
|
||||||
NeoChatConfig.collapsed = false;
|
Config.collapsed = false;
|
||||||
} else if (_private.currentWidth >= _private.collapseWidth) {
|
} else if (_private.currentWidth >= _private.collapseWidth) {
|
||||||
// Increase page width
|
// Increase page width
|
||||||
_private.currentWidth = Math.min(_private.defaultWidth, _private.currentWidth + (mouse.x - _lastX));
|
_private.currentWidth = Math.min(_private.defaultWidth, _private.currentWidth + (mouse.x - _lastX));
|
||||||
@@ -267,7 +267,7 @@ Kirigami.Page {
|
|||||||
const tmpWidth = _private.currentWidth - (_lastX - mouse.x);
|
const tmpWidth = _private.currentWidth - (_lastX - mouse.x);
|
||||||
if (tmpWidth < _private.collapseWidth) {
|
if (tmpWidth < _private.collapseWidth) {
|
||||||
_private.currentWidth = Qt.binding(() => _private.collapsedSize);
|
_private.currentWidth = Qt.binding(() => _private.collapsedSize);
|
||||||
NeoChatConfig.collapsed = true;
|
Config.collapsed = true;
|
||||||
} else {
|
} else {
|
||||||
_private.currentWidth = tmpWidth;
|
_private.currentWidth = tmpWidth;
|
||||||
}
|
}
|
||||||
@@ -324,9 +324,9 @@ Kirigami.Page {
|
|||||||
*/
|
*/
|
||||||
QtObject {
|
QtObject {
|
||||||
id: _private
|
id: _private
|
||||||
property int currentWidth: NeoChatConfig.collapsed ? collapsedSize : defaultWidth
|
property int currentWidth: Config.collapsed ? collapsedSize : defaultWidth
|
||||||
readonly property int defaultWidth: Kirigami.Units.gridUnit * 17
|
readonly property int defaultWidth: Kirigami.Units.gridUnit * 17
|
||||||
readonly property int collapseWidth: Kirigami.Units.gridUnit * 10
|
readonly property int collapseWidth: Kirigami.Units.gridUnit * 10
|
||||||
readonly property int collapsedSize: Kirigami.Units.gridUnit + (NeoChatConfig.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2) + Kirigami.Units.largeSpacing * 2 + (scrollView.QQC2.ScrollBar.vertical.visible ? scrollView.QQC2.ScrollBar.vertical.width : 0)
|
readonly property int collapsedSize: Kirigami.Units.gridUnit + (Config.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2) + Kirigami.Units.largeSpacing * 2 + (scrollView.QQC2.ScrollBar.vertical.visible ? scrollView.QQC2.ScrollBar.vertical.width : 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,7 +155,6 @@ Kirigami.Page {
|
|||||||
sourceComponent: Kirigami.PlaceholderMessage {
|
sourceComponent: Kirigami.PlaceholderMessage {
|
||||||
icon.name: "org.kde.neochat"
|
icon.name: "org.kde.neochat"
|
||||||
text: i18n("Welcome to NeoChat")
|
text: i18n("Welcome to NeoChat")
|
||||||
explanation: i18n("Select or join a room to get started")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +169,7 @@ Kirigami.Page {
|
|||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
Kirigami.Theme.colorSet: Kirigami.Theme.View
|
Kirigami.Theme.colorSet: Kirigami.Theme.View
|
||||||
Kirigami.Theme.inherit: false
|
Kirigami.Theme.inherit: false
|
||||||
color: NeoChatConfig.compactLayout ? Kirigami.Theme.backgroundColor : "transparent"
|
color: Config.compactLayout ? Kirigami.Theme.backgroundColor : "transparent"
|
||||||
}
|
}
|
||||||
|
|
||||||
footer: Loader {
|
footer: Loader {
|
||||||
|
|||||||
@@ -86,34 +86,6 @@ QQC2.Control {
|
|||||||
text: i18n("Home")
|
text: i18n("Home")
|
||||||
contentItem: Kirigami.Icon {
|
contentItem: Kirigami.Icon {
|
||||||
source: "user-home-symbolic"
|
source: "user-home-symbolic"
|
||||||
|
|
||||||
QQC2.Label {
|
|
||||||
id: homeNotificationCountLabel
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.topMargin: -Kirigami.Units.smallSpacing
|
|
||||||
anchors.rightMargin: -Kirigami.Units.smallSpacing
|
|
||||||
z: 1
|
|
||||||
width: Math.max(homeNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
|
||||||
height: Kirigami.Units.iconSizes.smallMedium
|
|
||||||
|
|
||||||
text: root.connection.homeNotifications > 0 ? root.connection.homeNotifications : ""
|
|
||||||
visible: root.connection.homeNotifications > 0 && (RoomManager.currentSpace.length > 0 || root.showDirectChats === true)
|
|
||||||
color: Kirigami.Theme.textColor
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
background: Rectangle {
|
|
||||||
visible: true
|
|
||||||
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
|
||||||
Kirigami.Theme.inherit: false
|
|
||||||
color: root.connection.homeHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
|
||||||
radius: height / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
TextMetrics {
|
|
||||||
id: homeNotificationCountTextMetrics
|
|
||||||
text: homeNotificationCountLabel.text
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activeFocusOnTab: true
|
activeFocusOnTab: true
|
||||||
@@ -123,6 +95,33 @@ QQC2.Control {
|
|||||||
RoomManager.currentSpace = "";
|
RoomManager.currentSpace = "";
|
||||||
root.selectionChanged();
|
root.selectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QQC2.Label {
|
||||||
|
id: homeNotificationCountLabel
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
|
||||||
|
z: 1
|
||||||
|
width: Math.max(homeNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
||||||
|
height: Kirigami.Units.iconSizes.smallMedium
|
||||||
|
|
||||||
|
text: root.connection.homeNotifications > 0 ? root.connection.homeNotifications : ""
|
||||||
|
visible: root.connection.homeNotifications > 0 && (RoomManager.currentSpace.length > 0 || root.showDirectChats === true)
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
background: Rectangle {
|
||||||
|
visible: true
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
color: root.connection.homeHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
||||||
|
radius: height / 2
|
||||||
|
}
|
||||||
|
|
||||||
|
TextMetrics {
|
||||||
|
id: homeNotificationCountTextMetrics
|
||||||
|
text: homeNotificationCountLabel.text
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
AvatarTabButton {
|
AvatarTabButton {
|
||||||
id: directChatButton
|
id: directChatButton
|
||||||
@@ -135,34 +134,6 @@ QQC2.Control {
|
|||||||
text: i18nc("@button View all one-on-one chats with your friends.", "Friends")
|
text: i18nc("@button View all one-on-one chats with your friends.", "Friends")
|
||||||
contentItem: Kirigami.Icon {
|
contentItem: Kirigami.Icon {
|
||||||
source: "system-users"
|
source: "system-users"
|
||||||
|
|
||||||
QQC2.Label {
|
|
||||||
id: directChatNotificationCountLabel
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.topMargin: -Kirigami.Units.smallSpacing
|
|
||||||
anchors.rightMargin: -Kirigami.Units.smallSpacing
|
|
||||||
z: 1
|
|
||||||
width: Math.max(directChatNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
|
||||||
height: Kirigami.Units.iconSizes.smallMedium
|
|
||||||
|
|
||||||
text: root.connection.directChatNotifications > 0 ? root.connection.directChatNotifications : ""
|
|
||||||
visible: (root.connection.directChatNotifications > 0 || root.connection.directChatInvites) && RoomManager.currentSpace !== "DM"
|
|
||||||
color: Kirigami.Theme.textColor
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
background: Rectangle {
|
|
||||||
visible: true
|
|
||||||
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
|
||||||
Kirigami.Theme.inherit: false
|
|
||||||
color: root.connection.directChatsHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
|
||||||
radius: height / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
TextMetrics {
|
|
||||||
id: directChatNotificationCountTextMetrics
|
|
||||||
text: directChatNotificationCountLabel.text
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activeFocusOnTab: true
|
activeFocusOnTab: true
|
||||||
@@ -172,6 +143,33 @@ QQC2.Control {
|
|||||||
RoomManager.currentSpace = "DM";
|
RoomManager.currentSpace = "DM";
|
||||||
root.selectionChanged();
|
root.selectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QQC2.Label {
|
||||||
|
id: directChatNotificationCountLabel
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
|
||||||
|
z: 1
|
||||||
|
width: Math.max(directChatNotificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
||||||
|
height: Kirigami.Units.iconSizes.smallMedium
|
||||||
|
|
||||||
|
text: root.connection.directChatNotifications > 0 ? root.connection.directChatNotifications : ""
|
||||||
|
visible: (root.connection.directChatNotifications > 0 || root.connection.directChatInvites) && RoomManager.currentSpace !== "DM"
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
background: Rectangle {
|
||||||
|
visible: true
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
color: root.connection.directChatsHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
||||||
|
radius: height / 2
|
||||||
|
}
|
||||||
|
|
||||||
|
TextMetrics {
|
||||||
|
id: directChatNotificationCountTextMetrics
|
||||||
|
text: directChatNotificationCountLabel.text
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
@@ -192,10 +190,6 @@ QQC2.Control {
|
|||||||
text: displayName
|
text: displayName
|
||||||
source: avatar ? root.connection.makeMediaUrl("mxc://" + avatar) : ""
|
source: avatar ? root.connection.makeMediaUrl("mxc://" + avatar) : ""
|
||||||
|
|
||||||
notificationCount: spaceDelegate.currentRoom.childrenNotificationCount
|
|
||||||
notificationHighlight: spaceDelegate.currentRoom.childrenHaveHighlightNotifications
|
|
||||||
showNotificationLabel: spaceDelegate.currentRoom.childrenNotificationCount > 0 && RoomManager.currentSpace != spaceDelegate.roomId
|
|
||||||
|
|
||||||
activeFocusOnTab: true
|
activeFocusOnTab: true
|
||||||
|
|
||||||
onSelected: {
|
onSelected: {
|
||||||
@@ -204,6 +198,34 @@ QQC2.Control {
|
|||||||
}
|
}
|
||||||
checked: RoomManager.currentSpace === roomId
|
checked: RoomManager.currentSpace === roomId
|
||||||
onContextMenuRequested: root.createContextMenu(currentRoom)
|
onContextMenuRequested: root.createContextMenu(currentRoom)
|
||||||
|
|
||||||
|
QQC2.Label {
|
||||||
|
id: notificationCountLabel
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: Kirigami.Units.smallSpacing / 2
|
||||||
|
z: 1
|
||||||
|
width: Math.max(notificationCountTextMetrics.advanceWidth + Kirigami.Units.smallSpacing * 2, height)
|
||||||
|
height: Kirigami.Units.iconSizes.smallMedium
|
||||||
|
|
||||||
|
text: spaceDelegate.currentRoom.childrenNotificationCount > 0 ? spaceDelegate.currentRoom.childrenNotificationCount : ""
|
||||||
|
visible: spaceDelegate.currentRoom.childrenNotificationCount > 0 && RoomManager.currentSpace != spaceDelegate.roomId
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
background: Rectangle {
|
||||||
|
visible: true
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Button
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
color: spaceDelegate.currentRoom.childrenHaveHighlightNotifications ? Kirigami.Theme.positiveTextColor : Kirigami.Theme.backgroundColor
|
||||||
|
radius: height / 2
|
||||||
|
}
|
||||||
|
|
||||||
|
TextMetrics {
|
||||||
|
id: notificationCountTextMetrics
|
||||||
|
text: notificationCountLabel.text
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -143,12 +143,12 @@ QQC2.ScrollView {
|
|||||||
footer: Item {
|
footer: Item {
|
||||||
z: 3
|
z: 3
|
||||||
width: root.width
|
width: root.width
|
||||||
visible: !NeoChatConfig.blur
|
visible: !Config.blur
|
||||||
|
|
||||||
SectionDelegate {
|
SectionDelegate {
|
||||||
id: sectionDelegate
|
id: sectionDelegate
|
||||||
anchors.leftMargin: state === "alignLeft" ? Kirigami.Units.largeSpacing : 0
|
anchors.leftMargin: state === "alignLeft" ? Kirigami.Units.largeSpacing : 0
|
||||||
state: NeoChatConfig.compactLayout ? "alignLeft" : "alignCenter"
|
state: Config.compactLayout ? "alignLeft" : "alignCenter"
|
||||||
// Align left when in compact mode and center when using bubbles
|
// Align left when in compact mode and center when using bubbles
|
||||||
states: [
|
states: [
|
||||||
State {
|
State {
|
||||||
@@ -171,7 +171,7 @@ QQC2.ScrollView {
|
|||||||
|
|
||||||
width: messageListView.sectionBannerItem ? messageListView.sectionBannerItem.contentItem.width : 0
|
width: messageListView.sectionBannerItem ? messageListView.sectionBannerItem.contentItem.width : 0
|
||||||
labelText: messageListView.sectionBannerItem ? messageListView.sectionBannerItem.ListView.section : ""
|
labelText: messageListView.sectionBannerItem ? messageListView.sectionBannerItem.ListView.section : ""
|
||||||
colorSet: NeoChatConfig.compactLayout ? Kirigami.Theme.View : Kirigami.Theme.Window
|
colorSet: Config.compactLayout ? Kirigami.Theme.View : Kirigami.Theme.Window
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
footerPositioning: ListView.OverlayHeader
|
footerPositioning: ListView.OverlayHeader
|
||||||
@@ -183,12 +183,17 @@ QQC2.ScrollView {
|
|||||||
KirigamiComponents.FloatingButton {
|
KirigamiComponents.FloatingButton {
|
||||||
id: goReadMarkerFab
|
id: goReadMarkerFab
|
||||||
|
|
||||||
anchors.right: parent.right
|
anchors {
|
||||||
anchors.top: parent.top
|
right: parent.right
|
||||||
anchors.topMargin: Kirigami.Units.largeSpacing
|
top: parent.top
|
||||||
anchors.rightMargin: Kirigami.Units.largeSpacing
|
topMargin: Kirigami.Units.largeSpacing
|
||||||
implicitWidth: Kirigami.Units.gridUnit * 2
|
rightMargin: Kirigami.Units.largeSpacing
|
||||||
implicitHeight: Kirigami.Units.gridUnit * 2
|
}
|
||||||
|
|
||||||
|
implicitWidth: Kirigami.Settings.hasTransientTouchInput ? Kirigami.Units.gridUnit * 3 : Kirigami.Units.gridUnit * 2
|
||||||
|
implicitHeight: Kirigami.Settings.hasTransientTouchInput ? Kirigami.Units.gridUnit * 3 : Kirigami.Units.gridUnit * 2
|
||||||
|
|
||||||
|
padding: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
z: 2
|
z: 2
|
||||||
visible: (root.currentRoom?.hasUnreadMessages ?? false)
|
visible: (root.currentRoom?.hasUnreadMessages ?? false)
|
||||||
@@ -215,12 +220,16 @@ QQC2.ScrollView {
|
|||||||
}
|
}
|
||||||
KirigamiComponents.FloatingButton {
|
KirigamiComponents.FloatingButton {
|
||||||
id: goMarkAsReadFab
|
id: goMarkAsReadFab
|
||||||
anchors.right: parent.right
|
anchors {
|
||||||
anchors.bottom: parent.bottom
|
right: parent.right
|
||||||
anchors.bottomMargin: Kirigami.Units.largeSpacing
|
bottom: parent.bottom
|
||||||
anchors.rightMargin: Kirigami.Units.largeSpacing
|
bottomMargin: Kirigami.Units.largeSpacing
|
||||||
implicitWidth: Kirigami.Units.gridUnit * 2
|
rightMargin: Kirigami.Units.largeSpacing
|
||||||
implicitHeight: Kirigami.Units.gridUnit * 2
|
}
|
||||||
|
implicitWidth: Kirigami.Settings.hasTransientTouchInput ? Kirigami.Units.gridUnit * 3 : Kirigami.Units.gridUnit * 2
|
||||||
|
implicitHeight: Kirigami.Settings.hasTransientTouchInput ? Kirigami.Units.gridUnit * 3 : Kirigami.Units.gridUnit * 2
|
||||||
|
|
||||||
|
padding: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
z: 2
|
z: 2
|
||||||
visible: !messageListView.atYEnd
|
visible: !messageListView.atYEnd
|
||||||
|
|||||||
@@ -106,9 +106,7 @@ void Registration::registerAccount()
|
|||||||
account.setHomeserver(connection->homeserver());
|
account.setHomeserver(connection->homeserver());
|
||||||
account.setDeviceId(connection->deviceId());
|
account.setDeviceId(connection->deviceId());
|
||||||
account.setDeviceName(displayName);
|
account.setDeviceName(displayName);
|
||||||
if (!Controller::instance().saveAccessTokenToKeyChain(account.userId(), connection->accessToken())) {
|
Controller::instance().saveAccessTokenToKeyChain(account.userId(), connection->accessToken());
|
||||||
qWarning() << "Couldn't save access token";
|
|
||||||
}
|
|
||||||
account.sync();
|
account.sync();
|
||||||
Controller::instance().addConnection(connection);
|
Controller::instance().addConnection(connection);
|
||||||
Controller::instance().setActiveConnection(connection);
|
Controller::instance().setActiveConnection(connection);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#include "urlhelper.h"
|
#include "urlhelper.h"
|
||||||
|
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
|
#include <KRuntimePlatform>
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QQuickTextDocument>
|
#include <QQuickTextDocument>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
@@ -239,6 +240,12 @@ void RoomManager::loadInitialRoom()
|
|||||||
resolveResource(m_arg);
|
resolveResource(m_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto runtimePlatform = KRuntimePlatform::runtimePlatform();
|
||||||
|
if (runtimePlatform.contains(QStringLiteral("phone")) || runtimePlatform.contains(QStringLiteral("handset"))) {
|
||||||
|
// We don't want to open a room on startup on mobile
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_currentRoom) {
|
if (m_currentRoom) {
|
||||||
// we opened a room with the arg parsing already
|
// we opened a room with the arg parsing already
|
||||||
return;
|
return;
|
||||||
@@ -350,7 +357,11 @@ void RoomManager::joinRoom(Quotient::Connection *account, const QString &roomAli
|
|||||||
|
|
||||||
void RoomManager::knockRoom(NeoChatConnection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers)
|
void RoomManager::knockRoom(NeoChatConnection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers)
|
||||||
{
|
{
|
||||||
|
#if Quotient_VERSION_MINOR > 8
|
||||||
|
auto job = account->callApi<KnockRoomJob>(roomAliasOrId, viaServers, viaServers, reason);
|
||||||
|
#else
|
||||||
auto job = account->callApi<KnockRoomJob>(roomAliasOrId, viaServers, reason);
|
auto job = account->callApi<KnockRoomJob>(roomAliasOrId, viaServers, reason);
|
||||||
|
#endif
|
||||||
// Upon completion, ensure a room object is created in case it hasn't come
|
// Upon completion, ensure a room object is created in case it hasn't come
|
||||||
// with a sync yet. If the room object is not there, provideRoom() will
|
// with a sync yet. If the room object is not there, provideRoom() will
|
||||||
// create it in Join state. finished() is used here instead of success()
|
// create it in Join state. finished() is used here instead of success()
|
||||||
|
|||||||
@@ -98,25 +98,23 @@ FormCard.FormCardPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FormCard.FormHeader {
|
FormCard.FormHeader {
|
||||||
title: i18n("User Information")
|
title: i18n("User information")
|
||||||
}
|
}
|
||||||
FormCard.FormCard {
|
FormCard.FormCard {
|
||||||
FormCard.FormTextFieldDelegate {
|
FormCard.FormTextFieldDelegate {
|
||||||
id: name
|
id: name
|
||||||
label: i18n("Display Name:")
|
label: i18n("Name:")
|
||||||
text: root.connection ? root.connection.localUser.displayName : ""
|
text: root.connection ? root.connection.localUser.displayName : ""
|
||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormTextFieldDelegate {
|
FormCard.FormTextFieldDelegate {
|
||||||
id: accountLabel
|
id: accountLabel
|
||||||
label: i18n("Label:")
|
label: i18n("Label:")
|
||||||
placeholderText: i18n("Work")
|
|
||||||
text: root.connection ? root.connection.label : ""
|
text: root.connection ? root.connection.label : ""
|
||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
text: i18nc("@action:button", "Show QR Code")
|
text: i18nc("@action:button", "QR code for account")
|
||||||
icon.name: "view-barcode-qr-symbolic"
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
let qrMax = Qt.createComponent('org.kde.neochat', 'QrCodeMaximizeComponent').createObject(QQC2.Overlay.overlay, {
|
let qrMax = Qt.createComponent('org.kde.neochat', 'QrCodeMaximizeComponent').createObject(QQC2.Overlay.overlay, {
|
||||||
text: "https://matrix.to/#/" + root.connection.localUser.id,
|
text: "https://matrix.to/#/" + root.connection.localUser.id,
|
||||||
@@ -133,7 +131,6 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
text: i18n("Save")
|
text: i18n("Save")
|
||||||
icon.name: "document-save-symbolic"
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (!root.connection.setAvatar(avatar.source)) {
|
if (!root.connection.setAvatar(avatar.source)) {
|
||||||
showPassiveNotification("The Avatar could not be set");
|
showPassiveNotification("The Avatar could not be set");
|
||||||
@@ -189,7 +186,6 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
text: i18n("Save")
|
text: i18n("Save")
|
||||||
icon.name: "document-save-symbolic"
|
|
||||||
enabled: currentPassword.text.length > 0 && newPassword.text.length > 0 && confirmPassword.text.length > 0
|
enabled: currentPassword.text.length > 0 && newPassword.text.length > 0 && confirmPassword.text.length > 0
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (newPassword.text === confirmPassword.text) {
|
if (newPassword.text === confirmPassword.text) {
|
||||||
@@ -206,7 +202,7 @@ FormCard.FormCardPage {
|
|||||||
medium: "email"
|
medium: "email"
|
||||||
}
|
}
|
||||||
ThreePIdCard {
|
ThreePIdCard {
|
||||||
visible: NeoChatConfig.phone3PId
|
visible: Config.phone3PId
|
||||||
connection: root.connection
|
connection: root.connection
|
||||||
title: i18n("Phone Numbers")
|
title: i18n("Phone Numbers")
|
||||||
medium: "msisdn"
|
medium: "msisdn"
|
||||||
@@ -253,7 +249,6 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
id: deactivateAccountButton
|
id: deactivateAccountButton
|
||||||
text: i18n("Deactivate Account")
|
text: i18n("Deactivate Account")
|
||||||
icon.name: "trash-empty-symbolic"
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
const component = Qt.createComponent('org.kde.neochat', 'ConfirmDeactivateAccountDialog');
|
const component = Qt.createComponent('org.kde.neochat', 'ConfirmDeactivateAccountDialog');
|
||||||
const dialog = component.createObject(QQC2.ApplicationWindow.window, {
|
const dialog = component.createObject(QQC2.ApplicationWindow.window, {
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ FormCard.FormCardPage {
|
|||||||
KirigamiComponents.Avatar {
|
KirigamiComponents.Avatar {
|
||||||
color: "#4a5bcc"
|
color: "#4a5bcc"
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
visible: NeoChatConfig.showAvatarInTimeline
|
visible: Config.showAvatarInTimeline
|
||||||
Layout.preferredWidth: NeoChatConfig.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
||||||
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
||||||
}
|
}
|
||||||
QQC2.Control {
|
QQC2.Control {
|
||||||
@@ -78,8 +78,8 @@ FormCard.FormCardPage {
|
|||||||
KirigamiComponents.Avatar {
|
KirigamiComponents.Avatar {
|
||||||
color: "#9f244b"
|
color: "#9f244b"
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
visible: NeoChatConfig.showAvatarInTimeline
|
visible: Config.showAvatarInTimeline
|
||||||
Layout.preferredWidth: NeoChatConfig.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
||||||
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
||||||
}
|
}
|
||||||
QQC2.Control {
|
QQC2.Control {
|
||||||
@@ -113,13 +113,13 @@ FormCard.FormCardPage {
|
|||||||
]
|
]
|
||||||
|
|
||||||
text: i18n("Bubbles")
|
text: i18n("Bubbles")
|
||||||
checked: !NeoChatConfig.compactLayout
|
checked: !Config.compactLayout
|
||||||
QQC2.ButtonGroup.group: themeGroup
|
QQC2.ButtonGroup.group: themeGroup
|
||||||
enabled: !NeoChatConfig.isCompactLayoutImmutable
|
enabled: !Config.isCompactLayoutImmutable
|
||||||
|
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.compactLayout = !checked;
|
Config.compactLayout = !checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ThemeRadioButton {
|
ThemeRadioButton {
|
||||||
@@ -131,8 +131,8 @@ FormCard.FormCardPage {
|
|||||||
KirigamiComponents.Avatar {
|
KirigamiComponents.Avatar {
|
||||||
color: "#4a5bcc"
|
color: "#4a5bcc"
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
visible: NeoChatConfig.showAvatarInTimeline
|
visible: Config.showAvatarInTimeline
|
||||||
Layout.preferredWidth: NeoChatConfig.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
||||||
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
||||||
}
|
}
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
@@ -158,8 +158,8 @@ FormCard.FormCardPage {
|
|||||||
KirigamiComponents.Avatar {
|
KirigamiComponents.Avatar {
|
||||||
color: "#9f244b"
|
color: "#9f244b"
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
visible: NeoChatConfig.showAvatarInTimeline
|
visible: Config.showAvatarInTimeline
|
||||||
Layout.preferredWidth: NeoChatConfig.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
|
||||||
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
|
||||||
}
|
}
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
@@ -182,13 +182,13 @@ FormCard.FormCardPage {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
text: i18n("Compact")
|
text: i18n("Compact")
|
||||||
checked: NeoChatConfig.compactLayout
|
checked: Config.compactLayout
|
||||||
QQC2.ButtonGroup.group: themeGroup
|
QQC2.ButtonGroup.group: themeGroup
|
||||||
enabled: !NeoChatConfig.isCompactLayoutImmutable
|
enabled: !Config.isCompactLayoutImmutable
|
||||||
|
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.compactLayout = checked;
|
Config.compactLayout = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Item {
|
Item {
|
||||||
@@ -204,10 +204,10 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
id: compactRoomListDelegate
|
id: compactRoomListDelegate
|
||||||
text: i18n("Use compact room list")
|
text: i18n("Use compact room list")
|
||||||
checked: NeoChatConfig.compactRoomList
|
checked: Config.compactRoomList
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.compactRoomList = checked;
|
Config.compactRoomList = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,11 +231,11 @@ FormCard.FormCardPage {
|
|||||||
id: hasWindowSystemDelegate
|
id: hasWindowSystemDelegate
|
||||||
visible: WindowController.hasWindowSystem
|
visible: WindowController.hasWindowSystem
|
||||||
text: i18n("Use transparent chat page")
|
text: i18n("Use transparent chat page")
|
||||||
enabled: !NeoChatConfig.compactLayout && !NeoChatConfig.isBlurImmutable
|
enabled: !Config.compactLayout && !Config.isBlurImmutable
|
||||||
checked: NeoChatConfig.blur
|
checked: Config.blur
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.blur = checked;
|
Config.blur = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,8 +246,8 @@ FormCard.FormCardPage {
|
|||||||
|
|
||||||
FormCard.AbstractFormDelegate {
|
FormCard.AbstractFormDelegate {
|
||||||
id: transparencyDelegate
|
id: transparencyDelegate
|
||||||
visible: WindowController.hasWindowSystem && NeoChatConfig.blur
|
visible: WindowController.hasWindowSystem && Config.blur
|
||||||
enabled: !NeoChatConfig.isTransparancyImmutable
|
enabled: !Config.isTransparancyImmutable
|
||||||
background: Item {}
|
background: Item {}
|
||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
QQC2.Label {
|
QQC2.Label {
|
||||||
@@ -255,14 +255,14 @@ FormCard.FormCardPage {
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
QQC2.Slider {
|
QQC2.Slider {
|
||||||
enabled: !NeoChatConfig.compactLayout && NeoChatConfig.blur
|
enabled: !Config.compactLayout && Config.blur
|
||||||
from: 0
|
from: 0
|
||||||
to: 1
|
to: 1
|
||||||
stepSize: 0.05
|
stepSize: 0.05
|
||||||
value: NeoChatConfig.transparency
|
value: Config.transparency
|
||||||
onMoved: {
|
onMoved: {
|
||||||
NeoChatConfig.transparency = value;
|
Config.transparency = value;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ FormCard.FormCardPage {
|
|||||||
QQC2.ToolTip.text: i18n("Only enabled if the transparent chat page is enabled.")
|
QQC2.ToolTip.text: i18n("Only enabled if the transparent chat page is enabled.")
|
||||||
}
|
}
|
||||||
QQC2.Label {
|
QQC2.Label {
|
||||||
text: Math.round(NeoChatConfig.transparency * 100) + "%"
|
text: Math.round(Config.transparency * 100) + "%"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,11 +288,11 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
id: showLocalMessagesOnRightDelegate
|
id: showLocalMessagesOnRightDelegate
|
||||||
text: i18n("Show your messages on the right")
|
text: i18n("Show your messages on the right")
|
||||||
checked: NeoChatConfig.showLocalMessagesOnRight
|
checked: Config.showLocalMessagesOnRight
|
||||||
enabled: !NeoChatConfig.isShowLocalMessagesOnRightImmutable && !NeoChatConfig.compactLayout
|
enabled: !Config.isShowLocalMessagesOnRightImmutable && !Config.compactLayout
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.showLocalMessagesOnRight = checked;
|
Config.showLocalMessagesOnRight = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,10 +304,10 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
id: showLinkPreviewDelegate
|
id: showLinkPreviewDelegate
|
||||||
text: i18n("Show links preview in the chat messages")
|
text: i18n("Show links preview in the chat messages")
|
||||||
checked: NeoChatConfig.showLinkPreview
|
checked: Config.showLinkPreview
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.showLinkPreview = checked;
|
Config.showLinkPreview = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -318,21 +318,21 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormCard {
|
FormCard.FormCard {
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18n("In chat")
|
text: i18n("In chat")
|
||||||
checked: NeoChatConfig.showAvatarInTimeline
|
checked: Config.showAvatarInTimeline
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.showAvatarInTimeline = checked;
|
Config.showAvatarInTimeline = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
enabled: !NeoChatConfig.isShowAvatarInTimelineImmutable
|
enabled: !Config.isShowAvatarInTimelineImmutable
|
||||||
}
|
}
|
||||||
|
|
||||||
FormCard.FormCheckDelegate {
|
FormCard.FormCheckDelegate {
|
||||||
text: i18n("In sidebar")
|
text: i18n("In sidebar")
|
||||||
checked: NeoChatConfig.showAvatarInRoomDrawer
|
checked: Config.showAvatarInRoomDrawer
|
||||||
enabled: !NeoChatConfig.isShowAvatarInRoomDrawerImmutable
|
enabled: !Config.isShowAvatarInRoomDrawerImmutable
|
||||||
onToggled: {
|
onToggled: {
|
||||||
NeoChatConfig.showAvatarInRoomDrawer = checked;
|
Config.showAvatarInRoomDrawer = checked;
|
||||||
NeoChatConfig.save();
|
Config.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,4 @@ ecm_add_qml_module(settings GENERATE_PLUGIN_SOURCE
|
|||||||
PasswordSheet.qml
|
PasswordSheet.qml
|
||||||
ThemeRadioButton.qml
|
ThemeRadioButton.qml
|
||||||
ThreePIdCard.qml
|
ThreePIdCard.qml
|
||||||
ImportKeysDialog.qml
|
|
||||||
ExportKeysDialog.qml
|
|
||||||
)
|
)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user