ZRTP authentication in popup. Fix PQ icons.

(cherry picked from commit 1c3f507045)
This commit is contained in:
Julien Wadel 2022-11-03 14:19:53 +01:00
parent 6e8614572d
commit d9f72987a7
28 changed files with 498 additions and 286 deletions

View file

@ -3693,9 +3693,10 @@ Klik her: <a href="%1">%1</a>
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Bekræft følgende SAS med peer.</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Klik her: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Din kontakt burde sige:</translation>
</message>
<message>
<source>deny</source>
<translation>STOP</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>BEKRÆFT</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3693,9 +3693,10 @@ Klicken Sie hier: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Bestätige folgende SAS mit der Gegenstelle.</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Klicken Sie hier: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Ihr Kontakt sollte sagen:</translation>
</message>
<message>
<source>deny</source>
<translation>ABLEHNEN</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>BESTÄTIGEN</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3716,10 +3716,11 @@ Click here: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<translation>Confirm the following SAS with peer.</translation>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>To raise the security level, you can check the following codes with your correspondent.</translation>
</message>
<message>
<source>codeA</source>
@ -3730,12 +3731,19 @@ Click here: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Your contact should say:</translation>
</message>
<message>
<source>deny</source>
<translation>DENY</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation>Later</translation>
</message>
<message>
<source>accept</source>
<translation>CONFIRM</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation>Correct</translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation>Communication security</translation>
</message>
</context>
<context>

View file

@ -3693,9 +3693,10 @@ Haga clic aquí: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Confirma la siguiente SAS con el compañero</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Haga clic aquí: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<translation>Su contacto debería decir:</translation>
</message>
<message>
<source>deny</source>
<translation>DENEGAR</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>CONFIRMAR</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -173,7 +173,7 @@
</message>
<message>
<source>usernameStatusInvalidCharacters</source>
<translation>Caractères invalides détectés (regex: `%1`).</translation>
<translation>Caractères invalides détectés (regex&#x202f;: `%1`).</translation>
</message>
<message>
<source>usernameStatusInvalid</source>
@ -189,7 +189,7 @@
</message>
<message>
<source>passwordStatusInvalidCharacters</source>
<translation>Caractères invalides détectés (regex: `%1`).</translation>
<translation>Caractères invalides détectés (regex&#x202f;: `%1`).</translation>
</message>
<message>
<source>passwordStatusMissingCharacters</source>
@ -1236,7 +1236,7 @@ URL du serveur non configurée.</translation>
<message>
<source>ephemeralNotInConference!</source>
<extracomment>&apos;Ephemeral message is only supported in conference based chat room!&apos;</extracomment>
<translation>Les messages éphémères ne sont disponibles que pour une conversation définie en mode conférence!</translation>
<translation>Les messages éphémères ne sont disponibles que pour une conversation définie en mode conférence&#x202f;!</translation>
<extra-Context>Warning about not being in conference based chat room.</extra-Context>
</message>
<message>
@ -2020,7 +2020,7 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<message>
<source>newConferenceScheduleTitle</source>
<extracomment>&apos;Would you like to schedule your meeting?&apos; : Ask about setting the meeting as scheduled.</extracomment>
<translation>Voulez-vous programmer cette réunion?</translation>
<translation>Voulez-vous programmer cette réunion&#x202f;?</translation>
</message>
<message>
<source>newConferenceDate</source>
@ -2600,7 +2600,7 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
<message>
<source>serverTooltip</source>
<translation>Serveur LDAP. ie: ldap:// pour un serveur local ou ldap://ldap.example.org/</translation>
<translation>Serveur LDAP. ie&#x202f;: ldap:// pour un serveur local ou ldap://ldap.example.org/</translation>
</message>
<message>
<source>bindDNLabel</source>
@ -3546,7 +3546,7 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<message>
<source>deleteTimeline</source>
<extracomment>&apos;Are you sure you want to delete and leave this timeline?&apos;</extracomment>
<translation>Êtes-vous certain de vouloir tout effacer et de quitter cette conversation?</translation>
<translation>Êtes-vous certain de vouloir tout effacer et de quitter cette conversation&#x202f;?</translation>
</message>
<message>
<source>deleteTimelineTooltip</source>
@ -3693,9 +3693,10 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Confirmez le SAS suivant avec votre interlocuteur.</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Cliquez ici : &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Votre interlocuteur devrait dire :</translation>
</message>
<message>
<source>deny</source>
<translation>REFUSER</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>CONFIRMER</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3680,9 +3680,10 @@ Kattintson ide: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Erősítse meg a következő SAS-t a társsal.</translation>
</message>
<message>
@ -3694,12 +3695,19 @@ Kattintson ide: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>A kapcsolattartónak el kell mondania:</translation>
</message>
<message>
<source>deny</source>
<translation>Letiltás</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>Megerősít</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3693,9 +3693,10 @@ Clicca: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Confermare il seguente SAS con la controparte.</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Clicca: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Il tuo contatto dovrebbe dire:</translation>
</message>
<message>
<source>deny</source>
<translation>RIFIUTA</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>CONFERMA</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3680,9 +3680,10 @@
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>SASを確認します</translation>
</message>
<message>
@ -3694,12 +3695,19 @@
<translation></translation>
</message>
<message>
<source>deny</source>
<translation></translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation></translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3706,9 +3706,10 @@ Spustelėkite čia: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Patvirtinkite š SAS su kolega.</translation>
</message>
<message>
@ -3720,12 +3721,19 @@ Spustelėkite čia: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Jūsų kontaktas turėtų sakyti:</translation>
</message>
<message>
<source>deny</source>
<translation>ATMESTI</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>PATVIRTINTI</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -2881,7 +2881,7 @@
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<translation type="unfinished"></translation>

View file

@ -3693,9 +3693,10 @@ Clique aqui: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Confirme o seguinte SAS com peer.</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Clique aqui: &lt;a href=&quot;%1&quot;&gt;%1 &lt;/a&gt;
<translation>Seu contato deve dizer:</translation>
</message>
<message>
<source>deny</source>
<translation>NEGAR</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>CONFIRMAR</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3706,9 +3706,10 @@
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Подтвердите следующую строку аутентификации с контактом.</translation>
</message>
<message>
@ -3720,12 +3721,19 @@
<translation>Ваш контакт должен сказать:</translation>
</message>
<message>
<source>deny</source>
<translation>ОТКЛОНИТЬ</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>ПОДТВЕРДИТЬ</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3693,9 +3693,10 @@ Klicka här: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Bekräfta följande SAS med partner</translation>
</message>
<message>
@ -3707,12 +3708,19 @@ Klicka här: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Din kontaktperson bör säga:</translation>
</message>
<message>
<source>deny</source>
<translation>FÖRNEKA</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>BEKRÄFTA</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3680,9 +3680,10 @@ Buraya tıklayın: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Aşağıdaki kısa yetkilendirme dizgesini eşinizle onaylayın.</translation>
</message>
<message>
@ -3694,12 +3695,19 @@ Buraya tıklayın: &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;
<translation>Kişiniz şunu söylemeli:</translation>
</message>
<message>
<source>deny</source>
<translation>REDDET</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>ONAYLA</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3706,9 +3706,10 @@
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation>Підтвердіть такий рядок автентифікації з контактом.</translation>
</message>
<message>
@ -3720,12 +3721,19 @@
<translation>Ваш контакт повинен сказати:</translation>
</message>
<message>
<source>deny</source>
<translation>ВІДХИЛИТИ</translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation>СХВАЛИТИ</translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -3680,9 +3680,10 @@
</message>
</context>
<context>
<name>ZrtpTokenAuthentication</name>
<name>ZrtpTokenAuthenticationDialog</name>
<message>
<source>confirmSas</source>
<extracomment>&apos;To raise the security level, you can check the following codes with your correspondent.&apos; : Explanation to do a security check.</extracomment>
<translation> SAS</translation>
</message>
<message>
@ -3694,12 +3695,19 @@
<translation></translation>
</message>
<message>
<source>deny</source>
<translation></translation>
<source>Later</source>
<extracomment>&apos;Later&apos; : Button label to do something in another time.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>accept</source>
<translation></translation>
<source>Correct</source>
<extracomment>&apos;Correct&apos; : Button label to confirm a code.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>title</source>
<extracomment>&apos;Communication security&apos; : Title of popup for ZRTP confirmation.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>

View file

@ -349,6 +349,7 @@
<file>ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml</file>
<file>ui/modules/Linphone/Dialog/SipAddressDialog.qml</file>
<file>ui/modules/Linphone/Dialog/MultimediaParametersDialog.qml</file>
<file>ui/modules/Linphone/Dialog/ZrtpTokenAuthenticationDialog.qml</file>
<file>ui/modules/Linphone/File/FileView.qml</file>
<file>ui/modules/Linphone/History/History.qml</file>
<file>ui/modules/Linphone/History/History.js</file>
@ -394,6 +395,7 @@
<file>ui/modules/Linphone/Styles/Dialog/MultimediaParametersDialogStyle.qml</file>
<file>ui/modules/Linphone/Styles/Dialog/OnlineInstallerDialogStyle.qml</file>
<file>ui/modules/Linphone/Styles/Dialog/SipAddressDialogStyle.qml</file>
<file>ui/modules/Linphone/Styles/Dialog/ZrtpTokenAuthenticationDialogStyle.qml</file>
<file>ui/modules/Linphone/Styles/History/HistoryStyle.qml</file>
<file>ui/modules/Linphone/Styles/Menus/SipAddressesMenuStyle.qml</file>
<file>ui/modules/Linphone/Styles/Menus/IncallMenuStyle.qml</file>
@ -441,7 +443,6 @@
<file>ui/views/App/Calls/IncallGrid.qml</file>
<file>ui/views/App/Calls/IncomingCall.qml</file>
<file>ui/views/App/Calls/WaitingRoom.qml</file>
<file>ui/views/App/Calls/ZrtpTokenAuthentication.qml</file>
<file>ui/views/App/Dialog/NewConference.qml</file>
<file>ui/views/App/Main/Assistant/ActivateAppSipAccountWithEmail.qml</file>
<file>ui/views/App/Main/Assistant/ActivateAppSipAccountWithPhoneNumber.qml</file>

View file

@ -61,6 +61,9 @@ CallModel::CallModel (shared_ptr<linphone::Call> call){
SettingsModel *settings = coreManager->getSettingsModel();
connect(this, &CallModel::callIdChanged, this, &CallModel::chatRoomModelChanged);// When the call Id change, the chat room change.
connect(this, &CallModel::encryptionChanged, this, &CallModel::securityUpdated);
connect(this, &CallModel::isPQZrtpChanged, this, &CallModel::securityUpdated);
mCall = call;
if(mCall)
mCall->setData("call-model", *this);
@ -70,6 +73,9 @@ CallModel::CallModel (shared_ptr<linphone::Call> call){
connectTo(mCallListener.get());
mCall->addListener(mCallListener);
auto callParams = mCall->getParams();
auto currentParams = mCall->getCurrentParams();
if(currentParams)
mEncryption = static_cast<CallEncryption>(currentParams->getMediaEncryption());
mConferenceVideoLayout = LinphoneEnums::fromLinphone(callParams->getConferenceVideoLayout());
if(mConferenceVideoLayout == LinphoneEnums::ConferenceLayoutGrid && !callParams->videoEnabled())
mConferenceVideoLayout = LinphoneEnums::ConferenceLayoutAudioOnly;
@ -80,6 +86,7 @@ CallModel::CallModel (shared_ptr<linphone::Call> call){
settings->setCameraMode(settings->getActiveSpeakerCameraMode());
}else
settings->setCameraMode(settings->getCallCameraMode());
}
// Deal with auto-answer.
@ -275,6 +282,8 @@ void CallModel::updateStats (const shared_ptr<const linphone::CallStats> &callSt
break;
case linphone::StreamType::Audio:
if( callStats)
isPQZrtp(callStats->isZrtpKeyAgreementAlgoPostQuantum() ? CallPQStateOn : CallPQStateOff);
updateStats(callStats, mAudioStats);
updateEncrypionStats(callStats, mEncryptionStats);
break;
@ -450,8 +459,10 @@ void CallModel::stopRecording () {
// -----------------------------------------------------------------------------
void CallModel::handleCallEncryptionChanged (const shared_ptr<linphone::Call> &call) {
if (call == mCall)
emit securityUpdated();
if (call == mCall){
if(!setEncryption(static_cast<CallEncryption>(mCall->getCurrentParams()->getMediaEncryption())))
emit securityUpdated();
}
}
void CallModel::handleCallStateChanged (const shared_ptr<linphone::Call> &call, linphone::Call::State state) {
@ -484,6 +495,7 @@ void CallModel::handleCallStateChanged (const shared_ptr<linphone::Call> &call,
mPausedByRemote = false;
updateConferenceVideoLayout();
setCallId(QString::fromStdString(mCall->getCallLog()->getCallId()));
updateEncryption();
break;
}
case linphone::Call::State::Connected: getConferenceSharedModel();
@ -1037,19 +1049,33 @@ void CallModel::updateConferenceVideoLayout(){
// -----------------------------------------------------------------------------
CallModel::CallEncryption CallModel::getEncryption () const {
if(mCall)
return static_cast<CallEncryption>(mCall->getCurrentParams()->getMediaEncryption());
else
return CallEncryptionNone;
return mEncryption;
}
bool CallModel::setEncryption(const CallModel::CallEncryption& encryption){
if( encryption != mEncryption){
mEncryption = encryption;
emit encryptionChanged();
return true;
}else
return false;
}
void CallModel::updateEncryption(){
if(mCall){
auto currentParams = mCall->getCurrentParams();
if( currentParams){
setEncryption(static_cast<CallEncryption>(currentParams->getMediaEncryption()));
}
}
}
bool CallModel::isSecured () const {
if(mCall){
shared_ptr<const linphone::CallParams> params = mCall->getCurrentParams();
linphone::MediaEncryption encryption = params->getMediaEncryption();
return (
encryption == linphone::MediaEncryption::ZRTP && mCall->getAuthenticationTokenVerified()
) || encryption == linphone::MediaEncryption::SRTP || encryption == linphone::MediaEncryption::DTLS;
auto encryption = getEncryption();
return (encryption == CallEncryptionZrtp && mCall->getAuthenticationTokenVerified())
|| encryption == CallEncryptionSrtp
|| encryption == CallEncryptionDtls;
}else
return false;
}
@ -1083,16 +1109,16 @@ QString CallModel::getRemoteSas () const {
QString CallModel::getSecuredString (const shared_ptr<const linphone::CallStats> &callStats) const {
if(mCall){
switch (mCall->getCurrentParams()->getMediaEncryption()) {
case linphone::MediaEncryption::SRTP:
switch (getEncryption()) {
case CallEncryptionSrtp:
return QStringLiteral("SRTP");
case linphone::MediaEncryption::ZRTP:
return (callStats && callStats->isZrtpKeyAgreementAlgoPostQuantum() || (!callStats && CoreManager::getInstance()->getCore()->getPostQuantumAvailable()) )
case CallEncryptionZrtp:
return (callStats && callStats->isZrtpKeyAgreementAlgoPostQuantum() || (!callStats && mIsPQZrtp == CallPQStateOn) )
? QStringLiteral("Post Quantum ZRTP")
: QStringLiteral("ZRTP");
case linphone::MediaEncryption::DTLS:
case CallEncryptionDtls:
return QStringLiteral("DTLS");
case linphone::MediaEncryption::None:
case CallEncryptionNone:
break;
}
}
@ -1219,6 +1245,13 @@ void CallModel::updateEncrypionStats (const shared_ptr<const linphone::CallStats
}
}
void CallModel::isPQZrtp(const CallPQState& isPQ){
if(mIsPQZrtp != isPQ){
mIsPQZrtp = isPQ;
emit isPQZrtpChanged();
}
}
// -----------------------------------------------------------------------------

View file

@ -83,11 +83,12 @@ class CallModel : public QObject {
Q_PROPERTY(QVariantList videoStats READ getVideoStats NOTIFY statsUpdated)
Q_PROPERTY(QVariantList encryptionStats READ getEncryptionStats NOTIFY statsUpdated)
Q_PROPERTY(CallEncryption encryption READ getEncryption NOTIFY securityUpdated)
Q_PROPERTY(CallEncryption encryption READ getEncryption WRITE setEncryption NOTIFY encryptionChanged)
Q_PROPERTY(bool isSecured READ isSecured NOTIFY securityUpdated)
Q_PROPERTY(QString localSas READ getLocalSas NOTIFY securityUpdated)
Q_PROPERTY(QString remoteSas READ getRemoteSas NOTIFY securityUpdated)
Q_PROPERTY(QString securedString READ getSecuredString NOTIFY securityUpdated)
Q_PROPERTY(CallPQState isPQZrtp MEMBER mIsPQZrtp WRITE isPQZrtp NOTIFY isPQZrtpChanged)
Q_PROPERTY(QString transferAddress READ getTransferAddress WRITE setTransferAddress NOTIFY transferAddressChanged)
@ -114,6 +115,13 @@ public:
};
Q_ENUM(CallEncryption);
enum CallPQState {
CallPQStateNone = 0,
CallPQStateOn,
CallPQStateOff,
};
Q_ENUM(CallPQState);
CallModel (std::shared_ptr<linphone::Call> call);
~CallModel ();
@ -215,6 +223,8 @@ signals:
void statusChanged (CallStatus status);
void videoRequested ();
void securityUpdated ();
void encryptionChanged();
void isPQZrtpChanged();
void speakerVolumeGainChanged (float volume);
void microVolumeGainChanged (float volume);
@ -278,6 +288,8 @@ public:
bool getSnapshotEnabled() const;
CallEncryption getEncryption () const;
bool setEncryption(const CallModel::CallEncryption& encryption);// true if changed
void updateEncryption();
bool isSecured () const;
QString getLocalSas () const;
@ -290,6 +302,7 @@ public:
QVariantList getEncryptionStats () const;
void updateStats (const std::shared_ptr<const linphone::CallStats> &callStats, QVariantList &statsList);
void updateEncrypionStats (const std::shared_ptr<const linphone::CallStats> &callStats, QVariantList &statsList);
void isPQZrtp(const CallPQState& isPQ);
QString iceStateToString (linphone::IceState state) const;
@ -307,6 +320,8 @@ private:
void connectTo(CallListener * listener);
bool mIsInConference = false;
CallPQState mIsPQZrtp = CallPQStateNone;
CallEncryption mEncryption = CallEncryptionNone;
bool mEndByUser = false;
bool mPausedByRemote = false;

View file

@ -330,7 +330,7 @@ Item {
hoverEnabled: true
acceptedButtons: Qt.NoButton
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
visible: !iconIsCustom
visible: !iconIsCustom && !tooltip.visible
}
}

View file

@ -0,0 +1,165 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import Common 1.0
import Linphone 1.0
import Linphone.Styles 1.0
// =============================================================================
DialogPlus {
id: mainItem
property var addressSelectedCallback
property var chatRoomSelectedCallback
property var call
property alias localSas: localSasText.text
property alias remoteSas : remoteSasText.text
buttons: [
TextButtonA {
//: 'Later' : Button label to do something in another time.
text: qsTr('Later')
onClicked: {
if(mainItem.call) mainItem.call.verifyAuthenticationToken(false)
mainItem.exit(0)
}
},
TextButtonC {
//: 'Correct' : Button label to confirm a code.
text: qsTr('Correct')
onClicked: {
if(mainItem.call) mainItem.call.verifyAuthenticationToken(true)
mainItem.exit(1)
}
}
]
buttonsAlignment: Qt.AlignCenter
height: 400
width: 350
radius: 10
onCallChanged: if(!call) exit(0)
Component.onCompleted: if( !localSas || !remoteSas) mainItem.exit(0)
ColumnLayout {
id:columnLayout
// ---------------------------------------------------------------------------
anchors.fill: parent
Layout.fillWidth: true
Icon{
Layout.alignment: Qt.AlignHCenter
Layout.bottomMargin: 5
icon: mainItem.call.isPQZrtp === CallModel.CallPQStateOn
? ZrtpTokenAuthenticationDialogStyle.pqIcon
: mainItem.call.isPQZrtp === CallModel.CallPQStateOff
? ZrtpTokenAuthenticationDialogStyle.icon
: ZrtpTokenAuthenticationDialogStyle.secureIcon
iconSize: ZrtpTokenAuthenticationDialogStyle.iconSize
}
// ---------------------------------------------------------------------------
// Main text.
// ---------------------------------------------------------------------------
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
//: 'Communication security' : Title of popup for ZRTP confirmation.
text: qsTr('title')
color: ZrtpTokenAuthenticationDialogStyle.text.colorA
wrapMode: Text.WordWrap
font {
bold: true
pointSize: ZrtpTokenAuthenticationDialogStyle.text.titlePointSize
}
}
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
//: 'To raise the security level, you can check the following codes with your correspondent.' : Explanation to do a security check.
text: qsTr('confirmSas')
color: ZrtpTokenAuthenticationDialogStyle.text.colorA
wrapMode: Text.WordWrap
font.pointSize: ZrtpTokenAuthenticationDialogStyle.text.pointSize
}
// ---------------------------------------------------------------------------
// Rules.
// ---------------------------------------------------------------------------
ColumnLayout {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
spacing: ZrtpTokenAuthenticationDialogStyle.text.wordsSpacing
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: ZrtpTokenAuthenticationDialogStyle.text.colorA
font.pointSize: ZrtpTokenAuthenticationDialogStyle.text.pointSize
text: qsTr('codeA')
}
Text {
id: localSasText
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: ZrtpTokenAuthenticationDialogStyle.text.colorB
font {
bold: true
pointSize: ZrtpTokenAuthenticationDialogStyle.text.sasPointSize
}
text: mainItem.call?mainItem.call.localSas:''
}
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: ZrtpTokenAuthenticationDialogStyle.text.colorA
font.pointSize: ZrtpTokenAuthenticationDialogStyle.text.pointSize
text: qsTr('codeB')
}
Text {
id: remoteSasText
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: ZrtpTokenAuthenticationDialogStyle.text.colorB
font {
bold: true
pointSize: ZrtpTokenAuthenticationDialogStyle.text.sasPointSize
}
text: mainItem.call?mainItem.call.remoteSas:''
}
}
}
}

View file

@ -0,0 +1,31 @@
pragma Singleton
import QtQml 2.2
import Units 1.0
import ColorsList 1.0
// =============================================================================
QtObject {
property string sectionName : 'ZrtpTokenAuthenticationDialog'
property int height: 50
property string pqIcon: 'secure_pq_zrtp'
property string secureIcon: 'secure_on'
property string icon: 'secure_level_2'
property int iconSize: 60
property QtObject buttons: QtObject {
property int spacing: 10
}
property QtObject text: QtObject {
property color colorA: ColorsList.add(sectionName+'_zrtp_text_a', 'j').color
property color colorB: ColorsList.add(sectionName+'_zrtp_text_b', 's').color
property int pointSize: Units.dp * 10
property int titlePointSize: Units.dp * 12
property int sasPointSize: Units.dp * 13
property int wordsSpacing: 5
}
}

View file

@ -34,6 +34,8 @@ singleton ContactStyle 1.0 Contact/ContactStyle.qml
singleton MultimediaParametersDialogStyle 1.0 Dialog/MultimediaParametersDialogStyle.qml
singleton OnlineInstallerDialogStyle 1.0 Dialog/OnlineInstallerDialogStyle.qml
singleton SipAddressDialogStyle 1.0 Dialog/SipAddressDialogStyle.qml
singleton ZrtpTokenAuthenticationDialogStyle 1.0 Dialog/ZrtpTokenAuthenticationDialogStyle.qml
singleton HistoryStyle 1.0 History/HistoryStyle.qml

View file

@ -36,6 +36,7 @@ ContactDescription 1.0 Contact/ContactDescription.qml
SipAddressDialog 1.0 Dialog/SipAddressDialog.qml
MultimediaParametersDialog 1.0 Dialog/MultimediaParametersDialog.qml
ZrtpTokenAuthenticationDialog 1.0 Dialog/ZrtpTokenAuthenticationDialog.qml
FileView 1.0 File/FileView.qml

View file

@ -100,12 +100,12 @@ function handleVideoRequested (call) {
})
}
function makeReadableSecuredString (securedString) {
if (!securedString || !securedString.length) {
function makeReadableSecuredString (isSecured, secureString) {
if (!isSecured) {
return qsTr('callNotSecured')
}
return qsTr('securedStringFormat').replace('%1', securedString)
return qsTr('securedStringFormat').replace('%1', secureString)
}
function openCallStatistics () {

View file

@ -57,6 +57,7 @@ Rectangle {
}
onParticipantCountChanged: Qt.callLater(function (){delayMessageBanner.restart()})
onIsReadyChanged: Qt.callLater(function (){delayMessageBanner.restart()})
// ---------------------------------------------------------------------------
color: IncallStyle.backgroundColor
@ -69,6 +70,9 @@ Rectangle {
delayMessageBanner.restart()
}
onVideoRequested: Logic.handleVideoRequested(callModel)
onEncryptionChanged: if(!callModel.isSecured && callModel.encryption === CallModel.CallEncryptionZrtp){
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
}
}
// ---------------------------------------------------------------------------
Rectangle{
@ -293,7 +297,7 @@ Rectangle {
anchors.top: featuresRow.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: zrtp.top
anchors.bottom: actionsButtons.top
anchors.topMargin: 15
anchors.bottomMargin: 20
@ -372,23 +376,6 @@ Rectangle {
}
}
}
Loader{
id: zrtp
active: call && !call.isSecured && call.encryption === CallModel.CallEncryptionZrtp
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: actionsButtons.top
anchors.leftMargin: CallStyle.container.margins
anchors.rightMargin: CallStyle.container.margins
anchors.bottomMargin: CallStyle.container.margins
height: active ? implicitHeight : 0
sourceComponent:Component{
ZrtpTokenAuthentication {
call: callModel
z: Constants.zPopup
onClose: {zrtp.active = false}
}
}
}
// -------------------------------------------------------------------------
// Action Buttons.
// -------------------------------------------------------------------------
@ -406,14 +393,16 @@ Rectangle {
backgroundRadius: width/2
colorSet: callModel.isSecured
? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp
? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp && callModel.isPQZrtp == CallModel.CallPQStateOn
? IncallStyle.buttons.postQuantumSecure
: IncallStyle.buttons.secure
: IncallStyle.buttons.unsecure
onClicked: zrtp.active =(callModel.encryption === CallModel.CallEncryptionZrtp)
onClicked: if(callModel.encryption === CallModel.CallEncryptionZrtp){
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
}
tooltipText: Logic.makeReadableSecuredString(callModel.securedString)
tooltipText: Logic.makeReadableSecuredString(callModel.isSecured, callModel.securedString)
}
RowLayout{
visible: callModel.remoteRecording

View file

@ -83,6 +83,9 @@ Window {
onCameraFirstFrameReceived: Logic.handleCameraFirstFrameReceived(width, height)
onStatusChanged: Logic.handleStatusChanged (status, conference._fullscreen)
onVideoRequested: Logic.handleVideoRequested(callModel)
onEncryptionChanged: if(!callModel.isSecured && callModel.encryption === CallModel.CallEncryptionZrtp){
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
}
}
// ---------------------------------------------------------------------------
@ -259,7 +262,7 @@ Window {
anchors.top: featuresRow.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: zrtp.top
anchors.bottom: actionsButtons.top
anchors.topMargin: window.hideButtons ? 0 : 15
anchors.bottomMargin: window.hideButtons ? 0 : 20
@ -336,22 +339,6 @@ Window {
// -------------------------------------------------------------------------
// Action Buttons.
// -------------------------------------------------------------------------
Loader{
id: zrtp
active: call && !call.isSecured && call.encryption === CallModel.CallEncryptionZrtp
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: actionsButtons.top
anchors.margins: CallStyle.container.margins
height: active ? implicitHeight : 0
sourceComponent:Component{
ZrtpTokenAuthentication {
call: callModel
z: Constants.zPopup
onClose: {zrtp.active = false}
}
}
}
// Security
ActionButton{
id: securityButton
@ -362,13 +349,20 @@ Window {
height: IncallStyle.buttons.secure.buttonSize
width: height
isCustom: true
iconIsCustom: ! (callModel.isSecured && SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp)
backgroundRadius: width/2
colorSet: callModel.isSecured ? IncallStyle.buttons.secure : IncallStyle.buttons.unsecure
colorSet: callModel.isSecured
? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp && callModel.isPQZrtp == CallModel.CallPQStateOn
? IncallStyle.buttons.postQuantumSecure
: IncallStyle.buttons.secure
: IncallStyle.buttons.unsecure
onClicked: zrtp.active = (callModel.encryption === CallModel.CallEncryptionZrtp)
onClicked: if(callModel.encryption === CallModel.CallEncryptionZrtp){
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
}
tooltipText: Logic.makeReadableSecuredString(callModel.securedString)
tooltipText: Logic.makeReadableSecuredString(callModel.isSecured, callModel.securedString)
}
RowLayout{
visible: callModel && callModel.remoteRecording

View file

@ -1,139 +0,0 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import Common 1.0
import Linphone 1.0
import App.Styles 1.0
// =============================================================================
Rectangle{
id: zrtp
property var call
property alias localSas: localSasText.text
property alias remoteSas : remoteSasText.text
signal close()
color:"transparent"
implicitWidth: columnLayout.implicitWidth
implicitHeight: columnLayout.implicitHeight+CallStyle.container.margins
radius: 10
Component.onCompleted: if( !localSas || !remoteSas) zrtp.close()
ColumnLayout {
id:columnLayout
// ---------------------------------------------------------------------------
Layout.fillWidth: true
anchors.bottom: parent.bottom
Icon{
Layout.alignment: Qt.AlignHCenter
Layout.bottomMargin: 5
visible: SettingsModel.isPostQuantumAvailable
icon: CallStyle.zrtpArea.pqIcon
iconSize: CallStyle.zrtpArea.iconSize
}
// ---------------------------------------------------------------------------
// Main text.
// ---------------------------------------------------------------------------
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: qsTr('confirmSas')
color: CallStyle.zrtpArea.text.colorA
elide: Text.ElideRight
font {
bold: true
pointSize: CallStyle.zrtpArea.text.pointSize
}
}
// ---------------------------------------------------------------------------
// Rules.
// ---------------------------------------------------------------------------
Row {
Layout.alignment: Qt.AlignHCenter
spacing: CallStyle.zrtpArea.text.wordsSpacing
Text {
color: CallStyle.zrtpArea.text.colorA
font.pointSize: CallStyle.zrtpArea.text.pointSize
text: qsTr('codeA')
}
Text {
id: localSasText
color: CallStyle.zrtpArea.text.colorB
font {
bold: true
pointSize: CallStyle.zrtpArea.text.pointSize
}
text: zrtp.call?zrtp.call.localSas:''
}
Text {
color: CallStyle.zrtpArea.text.colorA
font.pointSize: CallStyle.zrtpArea.text.pointSize
text: '-'
}
Text {
color: CallStyle.zrtpArea.text.colorA
font.pointSize: CallStyle.zrtpArea.text.pointSize
text: qsTr('codeB')
}
Text {
id: remoteSasText
color: CallStyle.zrtpArea.text.colorB
font {
bold: true
pointSize: CallStyle.zrtpArea.text.pointSize
}
text: zrtp.call?zrtp.call.remoteSas:''
}
}
// ---------------------------------------------------------------------------
// Buttons.
// ---------------------------------------------------------------------------
Row {
Layout.alignment: Qt.AlignHCenter
spacing: CallStyle.zrtpArea.buttons.spacing
TextButtonA {
text: qsTr('deny')
onClicked: {
zrtp.call.verifyAuthenticationToken(false)
zrtp.close()
}
}
TextButtonB {
text: qsTr('accept')
onClicked: {
zrtp.call.verifyAuthenticationToken(true)
zrtp.close()
}
}
}
}
}