From 0398c846f6836b734bf3432696df1e04e86d8867 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 28 Jul 2019 18:13:16 +0200
Subject: [PATCH] Add 'and' to typing display

---
 resources/langs/nheko_de.ts    | 17 ++++++++---------
 resources/langs/nheko_el.ts    | 17 ++++++++---------
 resources/langs/nheko_en.ts    | 17 ++++++++---------
 resources/langs/nheko_fi.ts    | 17 ++++++++---------
 resources/langs/nheko_fr.ts    | 17 ++++++++---------
 resources/langs/nheko_nl.ts    | 17 ++++++++---------
 resources/langs/nheko_pl.ts    | 18 +++++++++---------
 resources/langs/nheko_ru.ts    | 18 +++++++++---------
 resources/langs/nheko_zh_CN.ts | 16 +++++++---------
 src/TypingDisplay.cpp          | 17 +++++++++++------
 src/timeline/TimelineItem.h    |  2 +-
 11 files changed, 85 insertions(+), 88 deletions(-)

diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index 1f856b808..80a50ae2f 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -494,15 +494,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> tippt</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> tippen</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation>
+            <numerusform>%1%2 tippt</numerusform>
+            <numerusform>%1 und %2 tippen</numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index e50aadad7..ead1ed690 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -494,15 +494,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> πληκτρολογεί</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> πληκτρολογούν</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index e031c4ec0..0ab8d6d85 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -494,15 +494,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation type="unfinished"></translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation>
+            <numerusform>%1%2 is typing</numerusform>
+            <numerusform>%1 and %2 are typing</numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index 2baba55db..95403f3eb 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -494,15 +494,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation type="unfinished"></translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 355c43259..9c7f25c6a 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -495,15 +495,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> est en train d&apos;écrire</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> sont en train d&apos;écrire</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index db56dc0fb..dbf81401a 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -494,15 +494,14 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> is aan het typen</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> zijn aan het typen</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 34a4ed264..f4cbfd56e 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -494,15 +494,15 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> pisze</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> piszÄ…</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index afe36ef94..f31b23cf0 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -494,15 +494,15 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> печатает</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> печатают</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index 607b2ba95..8da7c475f 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -494,15 +494,13 @@
 </context>
 <context>
     <name>TypingDisplay</name>
-    <message>
-        <location filename="../../src/TypingDisplay.cpp" line="+46"/>
-        <source> is typing</source>
-        <translation> 正在打字</translation>
-    </message>
-    <message>
-        <location line="+2"/>
-        <source> are typing</source>
-        <translation> 正在打字</translation>
+    <message numerus="yes">
+        <location filename="../../src/TypingDisplay.cpp" line="+37"/>
+        <source>%1 and %2 are typing</source>
+        <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
diff --git a/src/TypingDisplay.cpp b/src/TypingDisplay.cpp
index 6059601d0..43fabcd89 100644
--- a/src/TypingDisplay.cpp
+++ b/src/TypingDisplay.cpp
@@ -33,6 +33,14 @@ TypingDisplay::setUsers(const QStringList &uid)
 
         text_.clear();
 
+        QString temp = text_ +=
+          tr("%1 and %2 are typing",
+             "Multiple users are typing. First argument is a comma separated list of potentially "
+             "multiple users. Second argument is the last user of that list. (If only one user is "
+             "typing, %1 is empty. You should still use it in your string though to silence Qt "
+             "warnings.)",
+             uid.size());
+
         if (uid.isEmpty()) {
                 hide();
                 update();
@@ -40,12 +48,9 @@ TypingDisplay::setUsers(const QStringList &uid)
                 return;
         }
 
-        text_ = uid.join(", ");
-
-        if (uid.size() == 1)
-                text_ += tr(" is typing");
-        else if (uid.size() > 1)
-                text_ += tr(" are typing");
+        QStringList uidWithoutLast = uid;
+        uidWithoutLast.pop_back();
+        text_ = temp.arg(uidWithoutLast.join(", ")).arg(uid.back());
 
         show();
         update();
diff --git a/src/timeline/TimelineItem.h b/src/timeline/TimelineItem.h
index a3294d3f0..fe354000e 100644
--- a/src/timeline/TimelineItem.h
+++ b/src/timeline/TimelineItem.h
@@ -277,7 +277,7 @@ private:
         QFutureWatcher<QString> *colorGenerating_;
 
         QString event_id_;
-        mtx::events::MessageType message_type_     = mtx::events::MessageType::Unknown;
+        mtx::events::MessageType message_type_ = mtx::events::MessageType::Unknown;
         QString room_id_;
 
         DescInfo descriptionMsg_;
-- 
GitLab