From 2e7c250d8da62deaefe11deba5701b0c445b962f Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 13 Jan 2026 13:25:09 +0100 Subject: [PATCH] Fix register checking ui #LINQT-2332 Add accessibility focus ui on register country combobox and fix register page spacings and interaction #LINQT-2333 --- Linphone/data/languages/de.ts | 377 +++++++++-------- Linphone/data/languages/en.ts | 377 +++++++++-------- Linphone/data/languages/fr.ts | 399 ++++++++---------- Linphone/model/account/AccountManager.cpp | 3 +- .../Button/CountryIndicatorCombobox.qml | 25 +- .../view/Control/Container/FormItemLayout.qml | 4 +- Linphone/view/Control/Input/DigitInput.qml | 7 +- .../view/Control/Input/PhoneNumberInput.qml | 28 +- .../Form/Register/RegisterCheckingPage.qml | 116 ++--- .../view/Page/Form/Register/RegisterPage.qml | 33 +- Linphone/view/Page/Window/Main/MainWindow.qml | 16 +- 11 files changed, 699 insertions(+), 686 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index bbb1fca21..4f17a0126 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -785,30 +785,30 @@ Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update Auf Updates prüfen - + mark_all_read_action Alle als gelesen markieren @@ -854,76 +854,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Aufnahme beendet - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Die Aufnahme wurde in der folgenden Datei gespeichert: %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandbreite: %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Verlustquote: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter-Puffer: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Videoauflösung: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None Nichts - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post-quantum ZRTP @@ -1547,7 +1547,7 @@ - + information_popup_error_title Fehler @@ -1558,218 +1558,218 @@ Weiterleitung fehlgeschlagen - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." Die Besprechung konnte aufgrund eines URI-Fehlers nicht gestartet werden. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" Alle laufenden Anrufe beenden? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." Das Fenster wird gleich geschlossen. Dies beendet alle laufenden Anrufe. - + call_can_be_trusted_toast "Appareil authentifié" Gerät vertrauenswürdig - + call_dir %1 Anruf - + call_ended Appel terminé Anruf beendet - + conference_paused Meeting paused Besprechung pausiert - + call_paused Call paused Anruf pausiert - - + + call_srtp_point_to_point_encrypted Appel chiffré de point à point Punkt-zu-Punkt verschlüsselter Anruf - + call_zrtp_sas_validation_required Vérification nécessaire Validierung erforderlich - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout Ende-zu-Ende verschlüsselter Anruf - + call_not_encrypted "Appel non chiffré" Unverschlüsselter Anruf - - + + call_waiting_for_encryption_info Waiting for encryption Warten auf Verschlüsselung - + call_paused_by_remote Call paused by remote Anruf vom Gegenüber pausiert - + conference_user_is_recording "You are recording the meeting" Sie nehmen die Besprechung auf - + call_user_is_recording "You are recording the call" Sie nehmen den Anruf auf - + conference_remote_is_recording "Someone is recording the meeting" Jemand nimmt die Besprechung auf - + call_remote_recording "%1 is recording the call" %1 nimmt den Anruf auf - + call_stop_recording "Stop recording" Aufnahme stoppen - + add Hinzufügen - + call_transfer_current_call_title "Transférer %1 à…" %1 weiterleiten an… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Weiterleitung bestätigen - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." Sie werden %1 an %2 weiterleiten. - + call_action_start_new_call "Nouvel appel" Neuen Anruf starten - - + + call_action_show_dialer "Pavé numérique" Wähltastatur - + call_action_change_layout "Modifier la disposition" Layout ändern - + call_action_go_to_calls_list "Liste d'appel" Anrufliste - + Merger tous les appels call_action_merge_calls Alle Anrufe zusammenführen - - + + call_action_go_to_settings "Paramètres" Einstellungen - + conference_action_screen_sharing "Partage de votre écran" Bildschirm teilen - + conference_share_link_title Partager le lien de la réunion Besprechungs-Link teilen - + copied Copié Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert - - - + + + conference_participants_list_title "Participants (%1)" Teilnehmer (%1) - - + + group_call_participant_selected %1 ausgewählte Teilnehmer @@ -1777,194 +1777,194 @@ - + meeting_schedule_add_participants_title Teilnehmer hinzufügen - + call_encryption_title Chiffrement Verschlüsselung - + open_statistic_panel_accessible_name Statistiken öffnen - + conference_user_is_sharing_screen "You are sharing your screen" Sie teilen Ihren Bildschirm - + call_stop_screen_sharing "Stop sharing" Stopp - + stop_recording_accessible_name Stop recording Aufnahme stoppen - + stop_screen_sharing_accessible_name "Stop screen sharing" Bildschirmübertragung beenden - + call_stats_title Statistiques Statistiken - - + + call_action_end_call "Terminer l'appel" Anruf beenden - - + + call_action_resume_call "Reprendre l'appel" Anruf fortsetzen - - + + call_action_pause_call "Mettre l'appel en pause" Anruf pausieren - - + + call_action_transfer_call "Transférer l'appel" Anruf weiterleiten - - + + call_action_start_new_call_hint "Initier un nouvel appel" Neuen Anruf starten - - + + call_display_call_list_hint "Afficher la liste d'appels" Anrufliste anzeigen - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Video deaktivieren - - + + call_activate_video_hint Video aktivieren - - + + call_activate_microphone "Activer le micro" Mikrofon aktivieren - - + + call_deactivate_microphone "Désactiver le micro" Mikrofon stummschalten - - + + call_share_screen_hint Partager l'écran… Bildschirm teilen… - - + + call_open_chat_hint Open chat… Chat öffnen… - - + + call_rise_hand_hint "Lever la main" Hand heben - - + + call_send_reaction_hint "Envoyer une réaction" Reaktion senden - - + + call_manage_participants_hint "Gérer les participants" Teilnehmer verwalten - - + + call_more_options_hint "Plus d'options…" Weitere Optionen… - + call_action_change_conference_layout "Modifier la disposition" Layout ändern - + call_action_full_screen "Mode Plein écran" Vollbildmodus - + call_action_stop_recording "Terminer l'enregistrement" Aufnahme beenden - + call_action_record "Enregistrer l'appel" Anruf aufnehmen - + call_activate_speaker_hint "Activer le son" Lautsprecher aktivieren - + call_deactivate_speaker_hint "Désactiver le son" Lautsprecher stummschalten @@ -2136,54 +2136,54 @@ Entwurf: %1 - + chat_room_delete "Delete" Löschen - + chat_room_mute Stummschalten - + chat_room_unmute "Mute" Stummschaltung aufheben - + chat_room_mark_as_read "Mark as read" Als gelesen markieren - + chat_room_leave "leave" Verlassen - + chat_list_leave_chat_popup_title leave the conversation ? Chat verlassen? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? „Sie können in diesem Chat keine Nachrichten mehr senden oder empfangen. Möchten Sie fortfahren? - + chat_list_delete_chat_popup_title Delete the conversation ? Chat löschen? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? Dieser Chat und alle seine Nachrichten werden gelöscht. Möchten Sie fortfahren? @@ -3573,12 +3573,12 @@ Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen! CoreModel - + info_popup_error_title Fehler - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" Die externe Bereitstellung kann nicht abgerufen werden @@ -4569,27 +4569,26 @@ Ablauf: %1 Fehler bei der Erstellung - + assistant_register_success_title "Compte créé" Konto erstellt - + assistant_register_success_message "Le compte a été créé. Vous pouvez maintenant vous connecter" Das Konto wurde erstellt. Sie können sich jetzt anmelden. - + assistant_register_error_code "Erreur dans le code de validation" Fehler im Bestätigungscode - information_popup_error_title - Fehler + Fehler @@ -5219,13 +5218,13 @@ Ablauf: %1 PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix %1-Präfix - + number_phone_number_accessible_name %1 number %1-Nummer @@ -5430,37 +5429,37 @@ Ablauf: %1 RegisterCheckingPage - + email "email" Email - + phone_number "numéro de téléphone" Telefonnummer - + confirm_register_title "Inscription | Confirmer votre %1" Registrieren | %1 bestätigen - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous Wir haben Ihnen einen Bestätigungscode an Ihr %1 %2<br> geschickt. Bitte geben Sie diesen unten ein. - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Code nicht erhalten? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Code erneut senden @@ -5501,49 +5500,49 @@ Ablauf: %1 Mit E-Mail registrieren - - + + username Benutzername - - - - - + + + + + mandatory_field_accessible_name "%1 mandatory" %1 ist verpflichtend - + domain Domäne - - - + + + phone_number "Numéro de téléphone" Telefonnummer - - + + email Email - - + + password Passwort - - + + assistant_account_register_password_confirmation "Confirmation mot de passe" Passwort bestätigen @@ -5567,37 +5566,37 @@ Ablauf: %1 Datenschutzrichtlinie - + assistant_account_create "Créer" Erstellen - + assistant_account_create_missing_username_error "Veuillez entrer un nom d'utilisateur" Bitte Benutzernamen eingeben - + assistant_account_create_missing_password_error "Veuillez entrer un mot de passe" Bitte Passwort eingeben - + assistant_account_create_confirm_password_error "Les mots de passe sont différents" Die Passwörter stimmen nicht überein - + assistant_account_create_missing_number_error "Veuillez entrer un numéro de téléphone" Bitte Telefonnummer eingeben - + assistant_account_create_missing_email_error "Veuillez entrer un email" Bitte E-Mail eingeben @@ -6088,7 +6087,7 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. Utils - + nMinute %1 Minute @@ -6096,7 +6095,7 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - + nHour %1 Stunde @@ -6104,8 +6103,8 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - - + + nDay %1 Tag @@ -6113,7 +6112,7 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - + nWeek %1 Woche @@ -6121,7 +6120,7 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - + nSeconds %1 Sekunde @@ -6137,7 +6136,7 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - + information_popup_error_title Failed to create 1-1 conversation with %1 ! Fehler @@ -6217,103 +6216,103 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - + information_popup_chatroom_creation_error_message 1-zu-1-Konversation mit %1 konnte nicht erstellt werden! - + contact_presence_status_available Verfügbar - + contact_presence_status_away Abwesend - + contact_presence_status_busy Beschäftigt - + contact_presence_status_do_not_disturb Nicht stören - + contact_presence_status_offline Offline - + recorder_error Error with the recorder Fehler mit der Aufzeichnung - - - + + + chat_error Fehler im Chat - + chat_message_forward_error Cannot forward an invalid message Eine ungültige Nachricht kann nicht weitergeleitet werden - - - - - - + + + + + + info_popup_error_title Error Fehler - + info_popup_forward_message_error Could not forward message : %1 Nachricht konnte nicht weitergeleitet werden: %1 - + info_popup_send_forward_message_error_message Failed to create forward message Weiterleitungsnachricht konnte nicht erstellt werden - + chat_message_reply_error Cannot reply to invalid message Auf eine ungültige Nachricht kann nicht geantwortet werden - + info_popup_reply_message_error Could not send reply message : %1 Antwort konnte nicht gesendet werden: %1 - + info_popup_send_reply_message_error_message Failed to create reply message Antwort konnte nicht erstellt werden - + info_popup_send_voice_message_error_message Could not send voice message : %1 Sprachnachricht konnte nicht gesendet werden: %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Nachricht aus der Aufnahme konnte nicht erstellt werden diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index a42dbb93c..f555dec11 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -766,30 +766,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -835,76 +835,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Recording ended - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Recording has been saved in file : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandwidth : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Loss rate: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter buffer : %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Video resolution: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post quantum ZRTP @@ -1510,7 +1510,7 @@ - + information_popup_error_title Error @@ -1521,218 +1521,218 @@ Transfer failed - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." Meeting could start due to URI error. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" End all current calls ? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." The window is about to be closed. This will end all current calls. - + call_can_be_trusted_toast "Appareil authentifié" Device trusted - + call_dir %1 call - + call_ended Appel terminé Call ended - + conference_paused Meeting paused Meeting paused - + call_paused Call paused Call paused - - + + call_srtp_point_to_point_encrypted Appel chiffré de point à point Point-to-point encrypted call - + call_zrtp_sas_validation_required Vérification nécessaire Validation required - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout End-to-end encrypted call - + call_not_encrypted "Appel non chiffré" Unencrypted call - - + + call_waiting_for_encryption_info Waiting for encryption Waiting for encryption - + call_paused_by_remote Call paused by remote Call paused by remote - + conference_user_is_recording "You are recording the meeting" You are recording the meeting - + call_user_is_recording "You are recording the call" You are recording the call - + conference_remote_is_recording "Someone is recording the meeting" Someone is recording the meeting - + call_remote_recording "%1 is recording the call" %1 records the call - + call_stop_recording "Stop recording" Stop recording - + add Add - + call_transfer_current_call_title "Transférer %1 à…" Transfer %1 to… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Confirm transfer - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." You are going to transfer %1 to %2. - + call_action_start_new_call "Nouvel appel" New call - - + + call_action_show_dialer "Pavé numérique" Dialer - + call_action_change_layout "Modifier la disposition" Change layout - + call_action_go_to_calls_list "Liste d'appel" Call list - + Merger tous les appels call_action_merge_calls Merge all calls - - + + call_action_go_to_settings "Paramètres" Settings - + conference_action_screen_sharing "Partage de votre écran" Share your screen - + conference_share_link_title Partager le lien de la réunion Share meeting link - + copied Copié Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Meeting link has been copied to the clipboard - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 selected participant @@ -1740,194 +1740,194 @@ - + meeting_schedule_add_participants_title Add participants - + call_encryption_title Chiffrement Encryption - + open_statistic_panel_accessible_name Open statistic panel - + conference_user_is_sharing_screen "You are sharing your screen" You are sharing your screen - + call_stop_screen_sharing "Stop sharing" Stop - + stop_recording_accessible_name Stop recording Stop recording - + stop_screen_sharing_accessible_name "Stop screen sharing" Stop screen sharing - + call_stats_title Statistiques Statistics - - + + call_action_end_call "Terminer l'appel" End call - - + + call_action_resume_call "Reprendre l'appel" Resume call - - + + call_action_pause_call "Mettre l'appel en pause" Pause call - - + + call_action_transfer_call "Transférer l'appel" Transfer call - - + + call_action_start_new_call_hint "Initier un nouvel appel" Start new call - - + + call_display_call_list_hint "Afficher la liste d'appels" View call list - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Turn off video - - + + call_activate_video_hint Enable video - - + + call_activate_microphone "Activer le micro" Activate microphone - - + + call_deactivate_microphone "Désactiver le micro" Mute microphone - - + + call_share_screen_hint Partager l'écran… Share screen… - - + + call_open_chat_hint Open chat… Open conversation… - - + + call_rise_hand_hint "Lever la main" Rise hand - - + + call_send_reaction_hint "Envoyer une réaction" Send reaction - - + + call_manage_participants_hint "Gérer les participants" Manage participants - - + + call_more_options_hint "Plus d'options…" More options… - + call_action_change_conference_layout "Modifier la disposition" Change layout - + call_action_full_screen "Mode Plein écran" Full screen mode - + call_action_stop_recording "Terminer l'enregistrement" End recording - + call_action_record "Enregistrer l'appel" Record call - + call_activate_speaker_hint "Activer le son" Activate speaker - + call_deactivate_speaker_hint "Désactiver le son" Mute speaker @@ -2099,54 +2099,54 @@ Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -3476,12 +3476,12 @@ Only your correspondent can decrypt them. CoreModel - + info_popup_error_title Error - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" Remote provisioning cannot be retrieved @@ -4467,27 +4467,26 @@ Expiration : %1 Error while creating - + assistant_register_success_title "Compte créé" Account created - + assistant_register_success_message "Le compte a été créé. Vous pouvez maintenant vous connecter" The account has been created. You can now log in. - + assistant_register_error_code "Erreur dans le code de validation" Error in validation code - information_popup_error_title - Error + Error @@ -5108,13 +5107,13 @@ Expiration : %1 PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix %1 prefix - + number_phone_number_accessible_name %1 number %1 number @@ -5307,37 +5306,37 @@ Expiration : %1 RegisterCheckingPage - + email "email" email - + phone_number "numéro de téléphone" phone number - + confirm_register_title "Inscription | Confirmer votre %1" Register | Confirm your %1 - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous We have sent you a verification code to your %1 %2<br> Please enter it below - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Didn't receive the code? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Resend code @@ -5378,49 +5377,49 @@ Expiration : %1 Register with email - - + + username Username - - - - - + + + + + mandatory_field_accessible_name "%1 mandatory" %1 mandatory - + domain Domain - - - + + + phone_number "Numéro de téléphone" Phone number - - + + email Email - - + + password Password - - + + assistant_account_register_password_confirmation "Confirmation mot de passe" Password confirmation @@ -5444,37 +5443,37 @@ Expiration : %1 privacy policy - + assistant_account_create "Créer" Create - + assistant_account_create_missing_username_error "Veuillez entrer un nom d'utilisateur" Please enter a username - + assistant_account_create_missing_password_error "Veuillez entrer un mot de passe" Please enter a password - + assistant_account_create_confirm_password_error "Les mots de passe sont différents" Passwords do not match - + assistant_account_create_missing_number_error "Veuillez entrer un numéro de téléphone" Please enter a phone number - + assistant_account_create_missing_email_error "Veuillez entrer un email" Please enter an email @@ -5953,7 +5952,7 @@ To enable them in a commercial project, please contact us. Utils - + nSeconds %1 second @@ -5961,7 +5960,7 @@ To enable them in a commercial project, please contact us. - + nMinute %1 minute @@ -5969,43 +5968,43 @@ To enable them in a commercial project, please contact us. - + chat_message_forward_error Cannot forward an invalid message Cannot forward an invalid message - + info_popup_forward_message_error Could not forward message : %1 Could not forward message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Failed to create forward message - + chat_message_reply_error Cannot reply to invalid message Cannot reply to invalid message - + info_popup_reply_message_error Could not send reply message : %1 Could not send reply message : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Failed to create reply message - + nHour %1 hour @@ -6013,8 +6012,8 @@ To enable them in a commercial project, please contact us. - - + + nDay %1 day @@ -6022,7 +6021,7 @@ To enable them in a commercial project, please contact us. - + nWeek %1 week @@ -6030,27 +6029,27 @@ To enable them in a commercial project, please contact us. - + contact_presence_status_available Available - + contact_presence_status_busy Busy - + contact_presence_status_do_not_disturb Do not disturb - + contact_presence_status_offline Offline - + contact_presence_status_away Idle/Away @@ -6063,7 +6062,7 @@ To enable them in a commercial project, please contact us. - + information_popup_error_title Failed to create 1-1 conversation with %1 ! Error @@ -6143,42 +6142,42 @@ To enable them in a commercial project, please contact us. ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! - + recorder_error Error with the recorder Error with the recorder - - - + + + chat_error Error in the chat - - - - - - + + + + + + info_popup_error_title Error Error - + info_popup_send_voice_message_error_message Could not send voice message : %1 Could not send voice message : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Failed to create message from record diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 3571ba068..294304cd9 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -761,30 +761,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -830,76 +830,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Enregistrement terminé - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" L'appel a été enregistré dans le fichier : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bande passante : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Taux de perte: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Tampon de gigue: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Définition vidéo : %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" ZRTP - Post quantique @@ -907,36 +907,16 @@ CallForwardSettingsLayout - - settings_call_forward_activation_success - Transfert d'appel activé vers : %1 - settings_call_forward_to_voicemail Boîte vocale - - settings_call_forward_deactivation_success - Transfert d'appel désactivé - - - settings_call_forward_address_timeout - Impossible d'établir le transfert d'appel, la requête a expiré - settings_call_forward_address_cannot_be_empty Une adresse ou un numéro de téléphone est nécessaire - - settings_call_forward_address_progress_disabling - Désactiver le transfert d'appel - - - settings_call_forward_address_progress_enabling - Activer le transfert d'appel pour : - settings_call_forward_activate_title @@ -1505,7 +1485,7 @@ - + information_popup_error_title Erreur @@ -1516,218 +1496,218 @@ Le transfert d'appel a échoué - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." La conférence n'a pas pu démarrer en raison d'une erreur d'uri. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" Terminer tous les appels en cours ? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours. - + call_can_be_trusted_toast "Appareil authentifié" Appareil authentifié - + call_dir Appel %1 - + call_ended Appel terminé Appel terminé - + conference_paused Meeting paused Réunion mise en pause - + call_paused Call paused Appel mis en pause - - + + call_srtp_point_to_point_encrypted Appel chiffré de point à point Appel chiffré de point à point - + call_zrtp_sas_validation_required Vérification nécessaire Vérification nécessaire - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout Appel chiffré de bout en bout - + call_not_encrypted "Appel non chiffré" Appel non chiffré - - + + call_waiting_for_encryption_info Waiting for encryption En attente de chiffrement - + call_paused_by_remote Call paused by remote Appel mis en pause par votre correspondant - + conference_user_is_recording "You are recording the meeting" Vous enregistrez la réunion - + call_user_is_recording "You are recording the call" Vous enregistrez l'appel - + conference_remote_is_recording "Someone is recording the meeting" Un participant enregistre la réunion - + call_remote_recording "%1 is recording the call" %1 enregistre l'appel - + call_stop_recording "Stop recording" Arrêter l'enregistrement - + add Ajouter - + call_transfer_current_call_title "Transférer %1 à…" Transférer %1 à… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Confirmer le transfert - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." Vous allez transférer %1 à %2. - + call_action_start_new_call "Nouvel appel" Nouvel appel - - + + call_action_show_dialer "Pavé numérique" Pavé numérique - + call_action_change_layout "Modifier la disposition" Modifier la disposition - + call_action_go_to_calls_list "Liste d'appel" Liste d'appel - + Merger tous les appels call_action_merge_calls Merger tous les appels - - + + call_action_go_to_settings "Paramètres" Paramètres - + conference_action_screen_sharing "Partage de votre écran" Partage de votre écran - + conference_share_link_title Partager le lien de la réunion Partager le lien de la réunion - + copied Copié Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 participant sélectionné @@ -1735,194 +1715,194 @@ - + meeting_schedule_add_participants_title Ajouter des participants - + call_encryption_title Chiffrement Chiffrement - + open_statistic_panel_accessible_name Ouvrir le panneau de statistiques - + conference_user_is_sharing_screen "You are sharing your screen" Vous partagez votre écran - + call_stop_screen_sharing "Stop sharing" Arrêter le partage - + stop_recording_accessible_name Stop recording Arrêter l'enregistrement - + stop_screen_sharing_accessible_name "Stop screen sharing" Arrêter le partage d'écran - + call_stats_title Statistiques Statistiques - - + + call_action_end_call "Terminer l'appel" Terminer l'appel - - + + call_action_resume_call "Reprendre l'appel" Reprendre l'appel - - + + call_action_pause_call "Mettre l'appel en pause" Mettre l'appel en pause - - + + call_action_transfer_call "Transférer l'appel" Transférer l'appel - - + + call_action_start_new_call_hint "Initier un nouvel appel" Initier un nouvel appel - - + + call_display_call_list_hint "Afficher la liste d'appels" Afficher la liste d'appels - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Désactiver la vidéo - - + + call_activate_video_hint Activer la vidéo - - + + call_activate_microphone "Activer le micro" Activer le micro - - + + call_deactivate_microphone "Désactiver le micro" Désactiver le micro - - + + call_share_screen_hint Partager l'écran… Partager l'écran… - - + + call_open_chat_hint Open chat… Ouvrir le chat… - - + + call_rise_hand_hint "Lever la main" Lever la main - - + + call_send_reaction_hint "Envoyer une réaction" Envoyer une réaction - - + + call_manage_participants_hint "Gérer les participants" Gérer les participants - - + + call_more_options_hint "Plus d'options…" Plus d'options… - + call_action_change_conference_layout "Modifier la disposition" Modifier la disposition - + call_action_full_screen "Mode Plein écran" Mode Plein écran - + call_action_stop_recording "Terminer l'enregistrement" Terminer l'enregistrement - + call_action_record "Enregistrer l'appel" Enregistrer l'appel - + call_activate_speaker_hint "Activer le son" Activer le son - + call_deactivate_speaker_hint "Désactiver le son" Désactiver le son @@ -2094,54 +2074,54 @@ Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -3471,12 +3451,12 @@ en bout. Seul votre correspondant peut les déchiffrer. CoreModel - + info_popup_error_title Erreur - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" La configuration distante n'a pas pu être récupérée @@ -4462,28 +4442,23 @@ Expiration : %1 Erreur lors de la création - + assistant_register_success_title "Compte créé" Compte créé - + assistant_register_success_message "Le compte a été créé. Vous pouvez maintenant vous connecter" Le compte a été créé. Vous pouvez maintenant vous connecter - + assistant_register_error_code "Erreur dans le code de validation" Erreur dans le code de validation - - - information_popup_error_title - Erreur - ManageParticipants @@ -5103,13 +5078,13 @@ Expiration : %1 PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix %1 préfix - + number_phone_number_accessible_name %1 number %1 indicatif téléphonique @@ -5302,37 +5277,37 @@ Expiration : %1 RegisterCheckingPage - + email "email" email - + phone_number "numéro de téléphone" numéro de téléphone - + confirm_register_title "Inscription | Confirmer votre %1" Inscription | Confirmer votre %1 - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Vous n'avez pas reçu le code ? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Renvoyer un code @@ -5373,49 +5348,49 @@ Expiration : %1 S'inscrire avec un email - - + + username Nom d'utilisateur - - - - - + + + + + mandatory_field_accessible_name "%1 mandatory" %1 requit - + domain Domaine - - - + + + phone_number "Numéro de téléphone" Numéro de téléphone - - + + email Email - - + + password Mot de passe - - + + assistant_account_register_password_confirmation "Confirmation mot de passe" Confirmation mot de passe @@ -5439,37 +5414,37 @@ Expiration : %1 politique de confidentialité - + assistant_account_create "Créer" Créer - + assistant_account_create_missing_username_error "Veuillez entrer un nom d'utilisateur" Veuillez entrer un nom d'utilisateur - + assistant_account_create_missing_password_error "Veuillez entrer un mot de passe" Veuillez entrer un mot de passe - + assistant_account_create_confirm_password_error "Les mots de passe sont différents" Les mots de passe sont différents - + assistant_account_create_missing_number_error "Veuillez entrer un numéro de téléphone" Veuillez entrer un numéro de téléphone - + assistant_account_create_missing_email_error "Veuillez entrer un email" Veuillez entrer un email @@ -5948,7 +5923,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Utils - + nMinute %1 minute @@ -5956,7 +5931,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nHour %1 heure @@ -5964,8 +5939,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + nDay %1 jour @@ -5973,7 +5948,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nWeek %1 semaine @@ -5981,7 +5956,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nSeconds %1 seconde @@ -5989,27 +5964,27 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + contact_presence_status_available Disponible - + contact_presence_status_busy Occupé - + contact_presence_status_do_not_disturb Ne pas déranger - + contact_presence_status_offline Hors ligne - + contact_presence_status_away Inactif/Absent @@ -6022,7 +5997,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + information_popup_error_title Failed to create 1-1 conversation with %1 ! Erreur @@ -6102,78 +6077,78 @@ Pour les activer dans un projet commercial, merci de nous contacter.ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - + information_popup_chatroom_creation_error_message Erreur lors de la création de la conversation avec %1 - + recorder_error Error with the recorder Erreur avec l'enregistreur - - - + + + chat_error Erreur dans le chat - + chat_message_forward_error Cannot forward an invalid message Impossible de transférer : message invalide - - - - - - + + + + + + info_popup_error_title Error Erreur - + info_popup_forward_message_error Could not forward message : %1 Impossible de transférer le message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Impossible de créer le message - + chat_message_reply_error Cannot reply to invalid message Impossible de répondre : message invalide - + info_popup_reply_message_error Could not send reply message : %1 Impossible d'envoyer la réponse : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Impossible de créer le message - + info_popup_send_voice_message_error_message Could not send voice message : %1 Impossible d'envoyer le message vocal : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Impossible de créer le message vocal diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index da769e0d0..f745a04c8 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -357,10 +357,11 @@ void AccountManager::linkNewAccountUsingCode(const QString &code, const std::string &errorMessage, const std::shared_ptr ¶meterErrors) { if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkEmailUsingCode) { lInfo() << "[AccountManager] error linking email to account" << errorMessage; + emit linkingNewAccountWithCodeFailed(Utils::coreStringToAppString(errorMessage)); } else if (request->getType() == linphone::AccountManagerServicesRequest::Type::LinkPhoneNumberUsingCode) { lInfo() << "[AccountManager] error linking phone number to account" << errorMessage; + emit linkingNewAccountWithCodeFailed(Utils::coreStringToAppString(errorMessage)); } - emit linkingNewAccountWithCodeFailed(Utils::coreStringToAppString(errorMessage)); }); if (registerType == RegisterType::Email) mAccountManagerServicesModel->linkEmailToAccountUsingCode(sipIdentityAddress, diff --git a/Linphone/view/Control/Button/CountryIndicatorCombobox.qml b/Linphone/view/Control/Button/CountryIndicatorCombobox.qml index 5fe2c5dae..df9b03bd1 100644 --- a/Linphone/view/Control/Button/CountryIndicatorCombobox.qml +++ b/Linphone/view/Control/Button/CountryIndicatorCombobox.qml @@ -3,12 +3,18 @@ import QtQuick.Controls.Basic as Control import QtQuick.Layouts import QtQuick.Effects import Linphone +import CustomControls 1.0 import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils Control.ComboBox { id: mainItem property string defaultCallingCode: "" property bool enableBackgroundColors: false + onKeyboardFocusChanged: console.log("keyboard focus combobox", keyboardFocus) + property bool keyboardFocus: FocusHelper.keyboardFocus + property color keyboardFocusedBorderColor: DefaultStyle.main2_900 + property real borderWidth: Utils.getSizeWithScreenRatio(1) + property real keyboardFocusedBorderWidth: Utils.getSizeWithScreenRatio(3) property string text: combobox.model.getAt(combobox.currentIndex) ? combobox.model.getAt(combobox.currentIndex).countryCallingCode : "" currentIndex: phoneNumberModel.count > 0 ? Math.max(0, phoneNumberModel.findIndexByCountryCallingCode(defaultCallingCode)) : -1 Accessible.name: mainItem.Accessible.name @@ -19,13 +25,16 @@ Control.ComboBox { anchors.fill: parent radius: Utils.getSizeWithScreenRatio(63) color: mainItem.enableBackgroundColor ? DefaultStyle.grey_100 : "transparent" - border.color: mainItem.enableBackgroundColors - ? (mainItem.errorMessage.length > 0 - ? DefaultStyle.danger_500_main - : textField.activeFocus - ? DefaultStyle.main1_500_main - : DefaultStyle.grey_200) - : "transparent" + border.color: mainItem.keyboardFocus + ? mainItem.keyboardFocusedBorderColor + : mainItem.enableBackgroundColors + ? (mainItem.errorMessage.length > 0 + ? DefaultStyle.danger_500_main + : mainItem.activeFocus || textField.activeFocus + ? DefaultStyle.main1_500_main + : DefaultStyle.grey_200) + : "transparent" + border.width: mainItem.keyboardFocus ? mainItem.keyboardFocusedBorderWidth : mainItem.borderWidth } contentItem: RowLayout { readonly property var currentItem: combobox.model.getAt(combobox.currentIndex) @@ -95,8 +104,6 @@ Control.ComboBox { maximumFlickVelocity: 1500 spacing: Utils.getSizeWithScreenRatio(10) highlight: Rectangle { - anchors.left: parent.left - anchors.right: parent.right width: listView.width height: listView.height color: DefaultStyle.main2_300 diff --git a/Linphone/view/Control/Container/FormItemLayout.qml b/Linphone/view/Control/Container/FormItemLayout.qml index fceaf1296..6997d3c53 100644 --- a/Linphone/view/Control/Container/FormItemLayout.qml +++ b/Linphone/view/Control/Container/FormItemLayout.qml @@ -12,6 +12,7 @@ FocusScope{ property string labelIndication property string tooltip: "" property bool mandatory: false + property int errorTextTopMargin: 0// property alias errorTextItem: errorText property alias errorMessage: errorText.text @@ -85,7 +86,7 @@ FocusScope{ Item { Layout.preferredHeight: childrenRect.height Layout.fillWidth: true - StackLayout { + FocusScope { id: contentItem height: childrenRect.height anchors.left: parent.left @@ -94,6 +95,7 @@ FocusScope{ TemporaryText { id: errorText anchors.top: contentItem.bottom + anchors.topMargin: mainItem.errorTextTopMargin color: DefaultStyle.danger_500_main } } diff --git a/Linphone/view/Control/Input/DigitInput.qml b/Linphone/view/Control/Input/DigitInput.qml index 43a7ee957..93e583c5b 100644 --- a/Linphone/view/Control/Input/DigitInput.qml +++ b/Linphone/view/Control/Input/DigitInput.qml @@ -6,6 +6,7 @@ import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils Control.TextField { id: mainItem property real inputSize: Utils.getSizeWithScreenRatio(100) + property bool isError: false color: activeFocus ? DefaultStyle.main1_500_main : DefaultStyle.main2_500_main validator: IntValidator{bottom: 0; top: 9} @@ -34,7 +35,11 @@ Control.TextField { Rectangle { id: background border.width: Utils.getSizeWithScreenRatio(1) - border.color: mainItem.activeFocus ? DefaultStyle.main1_500_main : DefaultStyle.main2_500_main + border.color: mainItem.isError + ? DefaultStyle.danger_500_main + : mainItem.activeFocus + ? DefaultStyle.main1_500_main + : DefaultStyle.main2_500_main radius: mainItem.inputSize * 0.15 width: mainItem.inputSize * 0.9 height: mainItem.inputSize diff --git a/Linphone/view/Control/Input/PhoneNumberInput.qml b/Linphone/view/Control/Input/PhoneNumberInput.qml index 25a883e5f..72be8086e 100644 --- a/Linphone/view/Control/Input/PhoneNumberInput.qml +++ b/Linphone/view/Control/Input/PhoneNumberInput.qml @@ -18,7 +18,10 @@ ColumnLayout { readonly property string phoneNumber: textField.text readonly property string countryCode: combobox.text property string defaultCallingCode - property bool keyboardFocus: FocusHelper.keyboardFocus + property bool keyboardFocus: combobox.keyboardFocus || textField.keyboardFocus + property color keyboardFocusedBorderColor: DefaultStyle.main2_900 + property real borderWidth: Utils.getSizeWithScreenRatio(1) + property real keyboardFocusedBorderWidth: Utils.getSizeWithScreenRatio(3) spacing: Utils.getSizeWithScreenRatio(5) @@ -26,7 +29,7 @@ ColumnLayout { visible: label.length > 0 verticalAlignment: Text.AlignVCenter text: mainItem.label + (mainItem.mandatory ? "*" : "") - color: (combobox.hasActiveFocus || textField.hasActiveFocus) ? DefaultStyle.main1_500_main : DefaultStyle.main2_600 + color: (combobox.activeFocus || textField.activeFocus) ? DefaultStyle.main1_500_main : DefaultStyle.main2_600 font { pixelSize: Typography.p2.pixelSize weight: Typography.p2.weight @@ -36,25 +39,25 @@ ColumnLayout { Control.Control { Layout.preferredWidth: mainItem.width Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) - leftPadding: Utils.getSizeWithScreenRatio(16) background: Rectangle { id: contentBackground anchors.fill: parent radius: Utils.getSizeWithScreenRatio(63) color: DefaultStyle.grey_100 border.color: mainItem.errorMessage.length > 0 - ? DefaultStyle.danger_500_main - : (textField.hasActiveFocus || combobox.hasActiveFocus) - ? DefaultStyle.main1_500_main - : DefaultStyle.grey_200 + ? DefaultStyle.danger_500_main + : (textField.activeFocus || combobox.activeFocus) + ? DefaultStyle.main1_500_main + : DefaultStyle.grey_200 + border.width: mainItem.borderWidth } contentItem: RowLayout { CountryIndicatorCombobox { id: combobox implicitWidth: Utils.getSizeWithScreenRatio(110) + leftPadding: Utils.getSizeWithScreenRatio(16) Layout.fillHeight: true defaultCallingCode: mainItem.defaultCallingCode - property bool keyboardFocus: FocusHelper.keyboardFocus //: %1 prefix Accessible.name: qsTr("prefix_phone_number_accessible_name").arg(mainItem.Accessible.name) } @@ -69,10 +72,15 @@ ColumnLayout { id: textField Layout.fillWidth: true placeholderText: mainItem.placeholderText - background: Item{} + background: Rectangle { + visible: textField.keyboardFocus + radius: Utils.getSizeWithScreenRatio(63) + color: "transparent" + border.color: mainItem.keyboardFocusedBorderColor + border.width: mainItem.keyboardFocusedBorderWidth + } initialText: initialPhoneNumber validator: RegularExpressionValidator{ regularExpression: /[0-9]+/} - property bool keyboardFocus: FocusHelper.keyboardFocus //: %1 number Accessible.name: qsTr("number_phone_number_accessible_name").arg(mainItem.Accessible.name) } diff --git a/Linphone/view/Page/Form/Register/RegisterCheckingPage.qml b/Linphone/view/Page/Form/Register/RegisterCheckingPage.qml index 437a0a0f2..2f88adff8 100644 --- a/Linphone/view/Page/Form/Register/RegisterCheckingPage.qml +++ b/Linphone/view/Page/Form/Register/RegisterCheckingPage.qml @@ -14,6 +14,7 @@ LoginLayout { property string address property string sipIdentityAddress property string code + property alias errorMessage: codeItemLayout.errorMessage property bool ctrlIsPressed onCtrlIsPressedChanged: console.log("ctrl is pressed", ctrlIsPressed) titleContent: [ @@ -78,66 +79,71 @@ LoginLayout { text = qsTr("assistant_account_creation_confirmation_explanation").arg(completeString).arg(address) } } - RowLayout { - spacing: Utils.getSizeWithScreenRatio(45) - Repeater { - model: 4 - id: repeater - signal pasteRequested(string text) - DigitInput { - id: digitInput - required property int index - Layout.preferredWidth: width - Layout.preferredHeight: height - Connections { - target: repeater - function onPasteRequested(text) { - console.log("paste requested", text[digitInput.index]) - var test= text; - if (UtilsCpp.isInteger(text)) - { - digitInput.text = text[digitInput.index] + FormItemLayout { + id: codeItemLayout + errorTextTopMargin: Utils.getSizeWithScreenRatio(5) + contentItem: RowLayout { + spacing: Utils.getSizeWithScreenRatio(45) + Repeater { + model: 4 + id: repeater + signal pasteRequested(string text) + DigitInput { + id: digitInput + required property int index + Layout.preferredWidth: width + Layout.preferredHeight: height + isError: codeItemLayout.errorMessage !== "" + Connections { + target: repeater + function onPasteRequested(text) { + console.log("paste requested", text[digitInput.index]) + var test= text; + if (UtilsCpp.isInteger(text)) + { + digitInput.text = text[digitInput.index] + } } } - } - onTextChanged: { - console.log("text edited", text) - if (text.length > 0 ) { - mainItem.code = mainItem.code.slice(0, index) + text + mainItem.code.slice(index) - if (index < 3) - nextItemInFocusChain(true).forceActiveFocus() - else { - mainItem.sendCode(mainItem.code) - mainItem.code = "" - } - } else { - if (index > 0) - nextItemInFocusChain(false).forceActiveFocus() - } - } - Keys.onPressed: (event) => { - if (event.key == Qt.Key_Backspace) { - if (text.length === 0) { - nextItemInFocusChain(false).forceActiveFocus() - event.accepted = true + onTextChanged: { + console.log("text edited", text) + if (text.length > 0 ) { + mainItem.code = mainItem.code.slice(0, index) + text + mainItem.code.slice(index) + if (index < 3) + nextItemInFocusChain(true).forceActiveFocus() + else { + mainItem.sendCode(mainItem.code) + mainItem.code = "" + } } else { - event.accepted = false + if (index > 0) + nextItemInFocusChain(false).forceActiveFocus() } - } else if (event.key == Qt.Key_Control) { - mainItem.ctrlIsPressed = true - event.accepted = false - } else if (mainItem.ctrlIsPressed && event.key == Qt.Key_V) { - var clipboard = UtilsCpp.getClipboardText() - console.log("paste", clipboard) - repeater.pasteRequested(clipboard) - } else { - event.accepted = false } - } - Keys.onReleased: (event) => { - if (event.key == Qt.Key_Control) { - mainItem.ctrlIsPressed = false - event.accepted = true + Keys.onPressed: (event) => { + if (event.key == Qt.Key_Backspace) { + if (text.length === 0) { + nextItemInFocusChain(false).forceActiveFocus() + event.accepted = true + } else { + event.accepted = false + } + } else if (event.key == Qt.Key_Control) { + mainItem.ctrlIsPressed = true + event.accepted = false + } else if (mainItem.ctrlIsPressed && event.key == Qt.Key_V) { + var clipboard = UtilsCpp.getClipboardText() + console.log("paste", clipboard) + repeater.pasteRequested(clipboard) + } else { + event.accepted = false + } + } + Keys.onReleased: (event) => { + if (event.key == Qt.Key_Control) { + mainItem.ctrlIsPressed = false + event.accepted = true + } } } } diff --git a/Linphone/view/Page/Form/Register/RegisterPage.qml b/Linphone/view/Page/Form/Register/RegisterPage.qml index 1dc83c687..2a1fd3749 100644 --- a/Linphone/view/Page/Form/Register/RegisterPage.qml +++ b/Linphone/view/Page/Form/Register/RegisterPage.qml @@ -128,15 +128,11 @@ LoginLayout { ColumnLayout { id: contentLayout - anchors.left: parent.left - anchors.right: parent.right spacing: Utils.getSizeWithScreenRatio(8) ColumnLayout { id: formLayout spacing: Utils.getSizeWithScreenRatio(24) RowLayout { - Layout.preferredHeight: usernameItem.height - spacing: Utils.getSizeWithScreenRatio(16) FormItemLayout { id: usernameItem label: qsTr("username") @@ -152,6 +148,7 @@ LoginLayout { } RowLayout { spacing: Utils.getSizeWithScreenRatio(10) + Layout.leftMargin: Utils.getSizeWithScreenRatio(16) ComboBox { Layout.preferredWidth: Utils.getSizeWithScreenRatio(210) Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) @@ -171,7 +168,8 @@ LoginLayout { currentIndex: bar.currentIndex PhoneNumberInput { id: phoneNumberInput - Layout.preferredWidth: Utils.getSizeWithScreenRatio(346) + Layout.fillWidth: false + Layout.preferredWidth: Utils.getSizeWithScreenRatio(390) property string completePhoneNumber: countryCode + phoneNumber //: "Numéro de téléphone" label: qsTr("phone_number") @@ -221,6 +219,7 @@ LoginLayout { } FormItemLayout { Layout.preferredWidth: Utils.getSizeWithScreenRatio(346) + Layout.leftMargin: Utils.getSizeWithScreenRatio(16) //: "Confirmation mot de passe" label: qsTr("assistant_account_register_password_confirmation") mandatory: true @@ -235,13 +234,14 @@ LoginLayout { } } } - TemporaryText { - id: otherErrorText - Layout.fillWidth: true - Layout.topMargin: Utils.getSizeWithScreenRatio(5) - } } } + TemporaryText { + id: otherErrorText + Layout.fillWidth: true + Layout.preferredHeight: implicitHeight + // Layout.topMargin: Utils.getSizeWithScreenRatio(5) + } // ColumnLayout { // spacing: Utils.getSizeWithScreenRatio(18) // RowLayout { @@ -276,6 +276,7 @@ LoginLayout { Accessible.name: acceptCguAndPrivacyPolicyItem.associatedText } Text { + id: privacyLinkText text: acceptCguAndPrivacyPolicyItem.associatedText onLinkActivated: (link) => Qt.openUrlExternally(link) font { @@ -284,9 +285,17 @@ LoginLayout { } MouseArea { anchors.fill: parent - acceptedButtons: Qt.NoButton + acceptedButtons: Qt.LeftButton cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - onClicked: termsCheckBox.toggle() + onClicked: (mouse) => { + mouse.accepted = false + if (parent.hoveredLink) { + privacyLinkText.linkActivated(privacyLinkText.linkAt(mouse.x, mouse.y)) + } + else { + termsCheckBox.toggle() + } + } } } } diff --git a/Linphone/view/Page/Window/Main/MainWindow.qml b/Linphone/view/Page/Window/Main/MainWindow.qml index 30a0206e7..e35ded455 100644 --- a/Linphone/view/Page/Window/Main/MainWindow.qml +++ b/Linphone/view/Page/Window/Main/MainWindow.qml @@ -230,6 +230,7 @@ AbstractWindow { Component { id: checkingPage RegisterCheckingPage { + id: registerCheckingPage onReturnToRegister: mainWindowStackView.pop() onSendCode: (code) => { RegisterPageCpp.linkNewAccountUsingCode(code, registerWithEmail, sipIdentityAddress) @@ -238,15 +239,16 @@ AbstractWindow { target: RegisterPageCpp function onLinkingNewAccountWithCodeSucceed() { goToLogin() - //: "Compte créé" - mainWindow.showInformationPopup(qsTr("assistant_register_success_title"), - //: "Le compte a été créé. Vous pouvez maintenant vous connecter" - qsTr("assistant_register_success_message"), true) + //: "Compte créé" + mainWindow.showInformationPopup(qsTr("assistant_register_success_title"), + //: "Le compte a été créé. Vous pouvez maintenant vous connecter" + qsTr("assistant_register_success_message"), true) } function onLinkingNewAccountWithCodeFailed(errorMessage) { - //: "Erreur dans le code de validation" - if (errorMessage.length === 0) errorMessage = qsTr("assistant_register_error_code") - mainWindow.showInformationPopup(qsTr("information_popup_error_title"), errorMessage, false) + registerCheckingPage.errorMessage = "" + //: "Erreur dans le code de validation" + if (errorMessage.length === 0) errorMessage = qsTr("assistant_register_error_code") + registerCheckingPage.errorMessage = errorMessage } } }