diff --git a/linphone-app/assets/languages/en.ts b/linphone-app/assets/languages/en.ts index 20da6536d..0bdb62704 100644 --- a/linphone-app/assets/languages/en.ts +++ b/linphone-app/assets/languages/en.ts @@ -450,6 +450,14 @@ Server URL not configured. isComposing %1 is typing... + + chatTyping + '%1 is typing...' indicate that someone is composing in chat + + %1 is typing... + %1 are typing... + + Cli @@ -693,6 +701,27 @@ Server URL not configured. cleanHistory Delete history + + conversationMenuGroupInformations + 'Group informations' : Item menu to get information about the chat room + Group informations + + + conversationMenuDevices + "Conversation's devices" : Item menu to get all participant devices of the chat room + Conversation's devices + + + conversationMenuEphemeral + 'Ephemeral messages' : Item menu to enable ephemeral mode + Ephemeral messages + + + adminStatus + 'Admin' : Admin(istrator) + Admin + One word title for describing the current admin status + CreateAppSipAccount @@ -798,6 +827,76 @@ Server URL not configured. Send a file + + EphemeralChatRoom + + ephemeralTitle + "Ephemeral messages" : Popup title for ephemerals + Ephemeral messages + + + ephemeralText + 'New messages will be deleted on both ends once it has been read by your contact. Select a timeout.' + New messages will be deleted on both ends once it has been read by your contact. Select a timeout. + Explanation for ephemerals + + + ephemeralNotInConference! + ' +Ephemeral message is only supported in conference based chat room!' + Ephemeral message is only supported in conference based chat room! + Warning about not being in conference based chat room. + + + disabled + 'Disabled' + Disabled + + + nMinute + '%1 minute' + + %1 minute + %1 minutes + + + + nHour + '%1 hour' + + %1 hour + %1 hours + + + + nDay + '%1 day' +---------- +'%1 days' + + %1 day + %1 days + + + + nWeek + '%1 week' + + %1 week + %1 weeks + + + + cancelButton + 'cancel' : button text for cancelling operation + CANCEL + + + startButton + 'start' : button text to start ephemeral mode + START + + Event @@ -860,15 +959,15 @@ Server URL not configured. tooltipContactEdit - Edit contact + Edit contact tooltipContactAdd - Add contact + Add contact cleanHistory - Delete history + Delete history @@ -956,6 +1055,76 @@ Server URL not configured. Stop recording. + + InfoChatRoom + + quitGroupButton + 'Exit group' : Button label + Exit group + + + ok + 'OK' : Button label + OK + + + addParticipantPlaceholder + 'Add Participants' : Placeholder in a search bar for adding participant to the chat room + Add Participants + + + addParticipantTooltip + 'Search participants in your contact list in order to invite them into the chat room.' + Search participants in your contact list in order to invite them into the chat room. + Explanation for inviting the selected participants into chat room + + + participantList + 'Participant list' + Participant list + + + adminStatus + 'Admin' : Admin(istrator) + Admin + word for admin status + + + + InfoEncryption + + cancelButton + 'CANCEL' : button text for cancelling operation + CANCEL + + + callButton + 'CALL' : Button that lead to a call + CALL + + + okButton + 'OK' : Button that validate the popup to be redirected to the device list + OK + + + infoEncryptionTitle + 'End-to-end encrypted' Popup title about encryption information. + End-to-end encrypted + + + encryptionExplanation + "Instant messages are end-to-end encrypted in secured conversations. It is possible to upgrade the security level of a conversation by authentificating participants." + Instant messages are end-to-end encrypted in secured conversations. It is possible to upgrade the security level of a conversation by authentificating participants. + Explanation of Encryption + + + encryptionProcessExplanation + "To do so, call the contact and follow the authentification process." + To do so, call the contact and follow the authentification process. + Explanation process + + InviteFriends @@ -1000,10 +1169,6 @@ Click here: <a href="%1">%1</a> mainSearchBarPlaceholder Search contact, start a call or a chat... - - homeEntry - HOME - contactsEntry CONTACTS @@ -1076,6 +1241,40 @@ Click here: <a href="%1">%1</a> menuPlayMe Play me! + + menuDeliveryStatus + 'Delivery status' : Item menu that lead to IMDN of a message + Delivery status + + + menuDelete + 'Delete' : Item menu to delete a message + Delete + + + deliveryDelivered + 'Send to %1 - %2' Little message to indicate the state of a message + Send to %1 - %2 + %1 is someone, %2 is a date/time. The state is that the message has been sent but not received. + + + deliveryDeliveredToUser + 'Retrieved by %1 - %2' Little message to indicate the state of a message + Retrieved by %1 - %2 + %1 is someone, %2 is a date/time. The state is that the message has been retrieved + + + deliveryDisplayed + 'Read by %1 - %2' Little message to indicate the state of a message + Read by %1 - %2 + %1 is someone, %2 is a date/time. The state that the message has been read. + + + deliveryNotDelivered + "%1 have nothing received" Little message to indicate the state of a message + %1 have nothing received + %1 is someone. The state is that the message hasn't been delivered. + MultimediaParameters @@ -1084,6 +1283,67 @@ Click here: <a href="%1">%1</a> OK + + NewChatRoom + + cancelButton + 'Cancel' : Cancel button + CANCEL + + + startButton + 'Launch' : Start button + LAUNCH + + + newChatRoomTitle + 'Start a chat room' : Title of a popup about creation of a chat room + Start a chat room + + + askEncryption + 'Would you like to encrypt your chat?' : Ask about setting the chat room as secured. + Would you like to encrypt your chat? + + + subjectLabel + 'Subject' : Label of a text field about the subject of the chat room + Subject + + + subjectTooltip + 'Current subject of the Chat Room. It cannot be empty' + Current subject of the Chat Room. It cannot be empty. + Explanation about the subject of the chat room + + + participantSelectionPlaceholder + 'Select participants' : Placeholder for a search on participant to add them in selection. + Select participants + + + participantSelectionTooltip + 'Search in your contacts or add a custom one to the chat room.' + Search in your contacts or add a custom one to the chat room. + + + adminStatus + 'Admin' : Admin(istrator) + Admin + word for admin status + + + removeParticipantSelection + 'Remove this participant from the selection' : Explanation abo^ut removing participant from a selection + Remove this participant from the selection + This is a tooltip + + + requiredField + 'Required' : Word relative to a star to explain that it is a requirement (Field form) + Required + + Notifier @@ -1133,6 +1393,15 @@ Click here: <a href="%1">%1</a> Delivered + + ParticipantsView + + participantsAdminHeader + '(Admin)' : One word for Admin(istrator) + (Admin) + Little Header in one word for a column in participant + + Presence @@ -1207,6 +1476,11 @@ Click here: <a href="%1">%1</a> contactsTitle Address Book Connector + + noPlugin + 'No Plugins to load' : Text in combobox + No Plugins to load + SettingsAudio @@ -2018,8 +2292,54 @@ Click here: <a href="%1">%1</a> Timeline - timelineTitle - Previously + timelineFilter + A title for filtering mode. + Filter + + + timelineFilterAll + 'All' The mode for timelines filtering. + All + + + timelineFilterCustom + 'Custom' The mode for timelines filtering. + Custom + + + timelineFilterSimpleRooms + 'Simple rooms' : Filter item + Simple rooms + Selecting it will show all simple romms + + + timelineFilterSecureRooms + 'Secure rooms' : Filter item + Secure rooms + Selecting it will show all secure rooms + + + timelineFilterChatGroups + 'Chat groups' : Filter item + Chat groups + Selecting it will show all chat groups (with more than one participant) + + + timelineFilterSecureChatGroups + 'Secure Chat Groups' : Filter item + Secure Chat Groups + Selecting it will show all secure chat groups (with more than one participant) + + + timelineFilterEphemerals + 'Ephemerals' : Filter item + Ephemerals + Selecting it will show all chat rooms where the ephemeral mode has been enabled. + + + timelineSearchPlaceholderText + 'Search in the list' : ths is a placeholder when searching something in the timeline list + Search in the list diff --git a/linphone-app/assets/languages/es.ts b/linphone-app/assets/languages/es.ts index 9637897a3..36010de44 100644 --- a/linphone-app/assets/languages/es.ts +++ b/linphone-app/assets/languages/es.ts @@ -92,6 +92,22 @@ about Acerca De + + commandLineOptionFetchConfig + + + + commandLineOptionFetchConfigArg + + + + commandLineOptionCall + + + + commandLineOptionCallArg + + AssistantAbstractView @@ -434,6 +450,14 @@ URL del servidor no configurada. isComposing %1 está escribiendo... + + chatTyping + '%1 is typing...' indicate that someone is composing in chat + + + + + Cli @@ -473,6 +497,10 @@ URL del servidor no configurada. joinConferenceAsFunctionDescription Únase a la conferencia organizada por la dirección de sip-como con la dirección de sip-guest. Si no está conectado a un proxy-config, consulte join-conference. + + byeFunctionDescription + + CodecsViewer @@ -673,6 +701,27 @@ URL del servidor no configurada. cleanHistory Eliminar historial + + conversationMenuGroupInformations + 'Group informations' : Item menu to get information about the chat room + + + + conversationMenuDevices + "Conversation's devices" : Item menu to get all participant devices of the chat room + + + + conversationMenuEphemeral + 'Ephemeral messages' : Item menu to enable ephemeral mode + + + + adminStatus + 'Admin' : Admin(istrator) + + One word title for describing the current admin status + CreateAppSipAccount @@ -778,6 +827,76 @@ URL del servidor no configurada. Enviar un archivo + + EphemeralChatRoom + + ephemeralTitle + "Ephemeral messages" : Popup title for ephemerals + + + + ephemeralText + 'New messages will be deleted on both ends once it has been read by your contact. Select a timeout.' + + Explanation for ephemerals + + + ephemeralNotInConference! + ' +Ephemeral message is only supported in conference based chat room!' + + Warning about not being in conference based chat room. + + + disabled + 'Disabled' + + + + nMinute + '%1 minute' + + + + + + + nHour + '%1 hour' + + + + + + + nDay + '%1 day' +---------- +'%1 days' + + + + + + + nWeek + '%1 week' + + + + + + + cancelButton + 'cancel' : button text for cancelling operation + + + + startButton + 'start' : button text to start ephemeral mode + + + Event @@ -936,6 +1055,76 @@ URL del servidor no configurada. Parar grabación. + + InfoChatRoom + + quitGroupButton + 'Exit group' : Button label + + + + ok + 'OK' : Button label + OK + + + addParticipantPlaceholder + 'Add Participants' : Placeholder in a search bar for adding participant to the chat room + + + + addParticipantTooltip + 'Search participants in your contact list in order to invite them into the chat room.' + + Explanation for inviting the selected participants into chat room + + + participantList + 'Participant list' + + + + adminStatus + 'Admin' : Admin(istrator) + + word for admin status + + + + InfoEncryption + + cancelButton + 'CANCEL' : button text for cancelling operation + + + + callButton + 'CALL' : Button that lead to a call + + + + okButton + 'OK' : Button that validate the popup to be redirected to the device list + + + + infoEncryptionTitle + 'End-to-end encrypted' Popup title about encryption information. + + + + encryptionExplanation + "Instant messages are end-to-end encrypted in secured conversations. It is possible to upgrade the security level of a conversation by authentificating participants." + + Explanation of Encryption + + + encryptionProcessExplanation + "To do so, call the contact and follow the authentification process." + + Explanation process + + InviteFriends @@ -980,10 +1169,6 @@ Haga clic aquí: <a href="%1">%1 </a> mainSearchBarPlaceholder Buscar contacto, empezar una llamada o un chat - - homeEntry - INICIO - contactsEntry CONTACTOS @@ -1056,6 +1241,40 @@ Haga clic aquí: <a href="%1">%1 </a> menuPlayMe ¡Reprodúceme! + + menuDeliveryStatus + 'Delivery status' : Item menu that lead to IMDN of a message + + + + menuDelete + 'Delete' : Item menu to delete a message + + + + deliveryDelivered + 'Send to %1 - %2' Little message to indicate the state of a message + + %1 is someone, %2 is a date/time. The state is that the message has been sent but not received. + + + deliveryDeliveredToUser + 'Retrieved by %1 - %2' Little message to indicate the state of a message + + %1 is someone, %2 is a date/time. The state is that the message has been retrieved + + + deliveryDisplayed + 'Read by %1 - %2' Little message to indicate the state of a message + + %1 is someone, %2 is a date/time. The state that the message has been read. + + + deliveryNotDelivered + "%1 have nothing received" Little message to indicate the state of a message + + %1 is someone. The state is that the message hasn't been delivered. + MultimediaParameters @@ -1064,6 +1283,67 @@ Haga clic aquí: <a href="%1">%1 </a> OK + + NewChatRoom + + cancelButton + 'Cancel' : Cancel button + + + + startButton + 'Launch' : Start button + + + + newChatRoomTitle + 'Start a chat room' : Title of a popup about creation of a chat room + + + + askEncryption + 'Would you like to encrypt your chat?' : Ask about setting the chat room as secured. + + + + subjectLabel + 'Subject' : Label of a text field about the subject of the chat room + + + + subjectTooltip + 'Current subject of the Chat Room. It cannot be empty' + + Explanation about the subject of the chat room + + + participantSelectionPlaceholder + 'Select participants' : Placeholder for a search on participant to add them in selection. + + + + participantSelectionTooltip + 'Search in your contacts or add a custom one to the chat room.' + + + + adminStatus + 'Admin' : Admin(istrator) + + word for admin status + + + removeParticipantSelection + 'Remove this participant from the selection' : Explanation abo^ut removing participant from a selection + + This is a tooltip + + + requiredField + 'Required' : Word relative to a star to explain that it is a requirement (Field form) + + + Notifier @@ -1113,6 +1393,15 @@ Haga clic aquí: <a href="%1">%1 </a> Enviado + + ParticipantsView + + participantsAdminHeader + '(Admin)' : One word for Admin(istrator) + + Little Header in one word for a column in participant + + Presence @@ -1187,6 +1476,11 @@ Haga clic aquí: <a href="%1">%1 </a> contactsTitle Contactos + + noPlugin + 'No Plugins to load' : Text in combobox + + SettingsAudio @@ -1366,6 +1660,172 @@ Haga clic aquí: <a href="%1">%1 </a> El cifrado es obligatorio + + SettingsLdap + + newServer + + + + + SettingsLdapEdit + + cancel + CANCELAR + + + confirm + + + + displayNameLabel + Nombre mostrado (opcional) + + + displayNameTooltip + + + + connectionTitle + + + + serverLabel + + + + serverTooltip + + + + bindDNLabel + + + + bindDNTooltip + + + + passwordLabel + Contraseña + + + useTLSLabel + + + + useTLSTooltip + + + + useSalLabel + + + + useSalTooltip + + + + verifyTLSLabel + + + + AutoMode + + + + offMode + + + + onMode + + + + verifyTLSTooltip + + + + searchTitle + + + + baseObjectLabel + + + + baseObjectPlaceholder + + + + baseObjectTooltip + + + + filterLabel + + + + filterTooltip + + + + maxResultsLabel + + + + maxResultsTooltip + + + + timeoutLabel + + + + timeoutTooltip + + + + parsingTitle + + + + nameAttributesLabel + + + + nameAttributesTooltip + + + + sipAttributesLabel + + + + sipAttributesTooltip + + + + domainLabel + + + + domainTooltip + + + + miscLabel + + + + debugLabel + + + + debugTooltip + + + SettingsNetwork @@ -1809,8 +2269,54 @@ Haga clic aquí: <a href="%1">%1 </a> Timeline - timelineTitle - Previamente + timelineFilter + A title for filtering mode. + + + + timelineFilterAll + 'All' The mode for timelines filtering. + + + + timelineFilterCustom + 'Custom' The mode for timelines filtering. + + + + timelineFilterSimpleRooms + 'Simple rooms' : Filter item + + Selecting it will show all simple romms + + + timelineFilterSecureRooms + 'Secure rooms' : Filter item + + Selecting it will show all secure rooms + + + timelineFilterChatGroups + 'Chat groups' : Filter item + + Selecting it will show all chat groups (with more than one participant) + + + timelineFilterSecureChatGroups + 'Secure Chat Groups' : Filter item + + Selecting it will show all secure chat groups (with more than one participant) + + + timelineFilterEphemerals + 'Ephemerals' : Filter item + + Selecting it will show all chat rooms where the ephemeral mode has been enabled. + + + timelineSearchPlaceholderText + 'Search in the list' : ths is a placeholder when searching something in the timeline list + diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index ba5f26bd0..324043073 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -1,154 +1,154 @@ - - assets/fonts/NotoSans-hinted/NotoSans-BoldItalic.ttf - assets/fonts/NotoSans-hinted/NotoSans-Bold.ttf - assets/fonts/NotoSans-hinted/NotoSans-Italic.ttf - assets/fonts/NotoSans-hinted/NotoSans-Regular.ttf - assets/fonts/NotoSans-hinted/NotoSansUI-BoldItalic.ttf - assets/fonts/NotoSans-hinted/NotoSansUI-Bold.ttf - assets/fonts/NotoSans-hinted/NotoSansUI-Italic.ttf - assets/fonts/NotoSans-hinted/NotoSansUI-Regular.ttf - assets/images/add_disabled.svg - assets/images/add_hovered.svg - assets/images/add_normal.svg - assets/images/add_pressed.svg + + assets/fonts/NotoSans-hinted/NotoSans-BoldItalic.ttf + assets/fonts/NotoSans-hinted/NotoSans-Bold.ttf + assets/fonts/NotoSans-hinted/NotoSans-Italic.ttf + assets/fonts/NotoSans-hinted/NotoSans-Regular.ttf + assets/fonts/NotoSans-hinted/NotoSansUI-BoldItalic.ttf + assets/fonts/NotoSans-hinted/NotoSansUI-Bold.ttf + assets/fonts/NotoSans-hinted/NotoSansUI-Italic.ttf + assets/fonts/NotoSans-hinted/NotoSansUI-Regular.ttf + assets/images/add_disabled.svg + assets/images/add_hovered.svg + assets/images/add_normal.svg + assets/images/add_pressed.svg assets/images/add_participant_hovered.svg - assets/images/add_participant_normal.svg - assets/images/add_participant_pressed.svg - assets/images/admin_selected.svg - assets/images/attachment_disabled.svg - assets/images/attachment_hovered.svg - assets/images/attachment_normal.svg - assets/images/attachment_pressed.svg - assets/images/auto_answer.svg - assets/images/burger_menu_hovered.svg - assets/images/burger_menu_light_hovered.svg - assets/images/burger_menu_light_normal.svg - assets/images/burger_menu_light_pressed.svg - assets/images/burger_menu_normal.svg - assets/images/burger_menu_pressed.svg - assets/images/call_accept_hovered.svg - assets/images/call_accept_normal.svg - assets/images/call_accept_pressed.svg - assets/images/call_chat_secure_hovered.svg - assets/images/call_chat_secure_normal.svg - assets/images/call_chat_secure_pressed.svg - assets/images/call_chat_unsecure_hovered.svg - assets/images/call_chat_unsecure_normal.svg - assets/images/call_chat_unsecure_pressed.svg - assets/images/call_hovered.svg - assets/images/call_normal.svg - assets/images/call_pressed.svg - assets/images/call_quality_0.svg - assets/images/call_quality_1.svg - assets/images/call_quality_2.svg - assets/images/call_quality_3.svg - assets/images/call_sign_connected.svg - assets/images/call_sign_ended.svg - assets/images/call_sign_incoming.svg - assets/images/call_sign_outgoing.svg - assets/images/call_sign_paused.svg - assets/images/camera_off_hovered.svg - assets/images/camera_off_normal.svg - assets/images/camera_off_pressed.svg - assets/images/camera_off_updating.svg - assets/images/camera_on_hovered.svg - assets/images/camera_on_normal.svg - assets/images/camera_on_pressed.svg - assets/images/camera_on_updating.svg - assets/images/camera.svg - assets/images/cancel_hovered.svg - assets/images/cancel_normal.svg - assets/images/cancel_pressed.svg - assets/images/chat_amount.svg - assets/images/chat_count.svg - assets/images/chat_delivered.svg - assets/images/chat_error.svg - assets/images/chat_hovered.svg - assets/images/chat_is_composing_0.svg - assets/images/chat_is_composing_1.svg - assets/images/chat_is_composing_2.svg - assets/images/chat_is_composing_3.svg - assets/images/chat_micro.svg - assets/images/chat_normal.svg - assets/images/chat_pressed.svg - assets/images/chat_read.svg + assets/images/add_participant_normal.svg + assets/images/add_participant_pressed.svg + assets/images/admin_selected.svg + assets/images/attachment_disabled.svg + assets/images/attachment_hovered.svg + assets/images/attachment_normal.svg + assets/images/attachment_pressed.svg + assets/images/auto_answer.svg + assets/images/burger_menu_hovered.svg + assets/images/burger_menu_light_hovered.svg + assets/images/burger_menu_light_normal.svg + assets/images/burger_menu_light_pressed.svg + assets/images/burger_menu_normal.svg + assets/images/burger_menu_pressed.svg + assets/images/call_accept_hovered.svg + assets/images/call_accept_normal.svg + assets/images/call_accept_pressed.svg + assets/images/call_chat_secure_hovered.svg + assets/images/call_chat_secure_normal.svg + assets/images/call_chat_secure_pressed.svg + assets/images/call_chat_unsecure_hovered.svg + assets/images/call_chat_unsecure_normal.svg + assets/images/call_chat_unsecure_pressed.svg + assets/images/call_hovered.svg + assets/images/call_normal.svg + assets/images/call_pressed.svg + assets/images/call_quality_0.svg + assets/images/call_quality_1.svg + assets/images/call_quality_2.svg + assets/images/call_quality_3.svg + assets/images/call_sign_connected.svg + assets/images/call_sign_ended.svg + assets/images/call_sign_incoming.svg + assets/images/call_sign_outgoing.svg + assets/images/call_sign_paused.svg + assets/images/camera_off_hovered.svg + assets/images/camera_off_normal.svg + assets/images/camera_off_pressed.svg + assets/images/camera_off_updating.svg + assets/images/camera_on_hovered.svg + assets/images/camera_on_normal.svg + assets/images/camera_on_pressed.svg + assets/images/camera_on_updating.svg + assets/images/camera.svg + assets/images/cancel_hovered.svg + assets/images/cancel_normal.svg + assets/images/cancel_pressed.svg + assets/images/chat_amount.svg + assets/images/chat_count.svg + assets/images/chat_delivered.svg + assets/images/chat_error.svg + assets/images/chat_hovered.svg + assets/images/chat_is_composing_0.svg + assets/images/chat_is_composing_1.svg + assets/images/chat_is_composing_2.svg + assets/images/chat_is_composing_3.svg + assets/images/chat_micro.svg + assets/images/chat_normal.svg + assets/images/chat_pressed.svg + assets/images/chat_read.svg assets/images/chat_room.svg assets/images/close.svg - assets/images/collapse.svg + assets/images/collapse.svg assets/images/collapsed.svg assets/images/conferences_normal.svg assets/images/conferences_selected.svg - assets/images/contact_add_hovered.svg - assets/images/contact_add_normal.svg - assets/images/contact_add_pressed.svg - assets/images/contact_add.svg - assets/images/contact_card_photo_disabled.svg - assets/images/contact_card_photo_hovered.svg - assets/images/contact_card_photo_normal.svg - assets/images/contact_card_photo_pressed.svg - assets/images/contact_edit_hovered.svg - assets/images/contact_edit_normal.svg - assets/images/contact_edit_pressed.svg - assets/images/contact_disabled.svg - assets/images/contact_normal.svg - assets/images/contact_selected.svg + assets/images/contact_add_hovered.svg + assets/images/contact_add_normal.svg + assets/images/contact_add_pressed.svg + assets/images/contact_add.svg + assets/images/contact_card_photo_disabled.svg + assets/images/contact_card_photo_hovered.svg + assets/images/contact_card_photo_normal.svg + assets/images/contact_card_photo_pressed.svg + assets/images/contact_edit_hovered.svg + assets/images/contact_edit_normal.svg + assets/images/contact_edit_pressed.svg + assets/images/contact_disabled.svg + assets/images/contact_normal.svg + assets/images/contact_selected.svg assets/images/current_account_status_online.svg assets/images/current_account_status_offline.svg assets/images/current_account_status_dnd.svg assets/images/current_account_status_busy.svg - assets/images/declined_incoming_call.svg - assets/images/declined_outgoing_call.svg - assets/images/delete_hovered.svg - assets/images/delete_normal.svg - assets/images/delete_pressed.svg - assets/images/download.svg - assets/images/drop_down.svg - assets/images/edit_hovered.svg - assets/images/edit_normal.svg - assets/images/edit_pressed.svg - assets/images/ended_call.svg + assets/images/declined_incoming_call.svg + assets/images/declined_outgoing_call.svg + assets/images/delete_hovered.svg + assets/images/delete_normal.svg + assets/images/delete_pressed.svg + assets/images/download.svg + assets/images/drop_down.svg + assets/images/edit_hovered.svg + assets/images/edit_normal.svg + assets/images/edit_pressed.svg + assets/images/ended_call.svg assets/images/expanded.svg - assets/images/file_hovered.svg - assets/images/file_normal.svg - assets/images/file_pressed.svg - assets/images/file_sign.svg - assets/images/filter.svg - assets/images/folder_hovered.svg - assets/images/folder_normal.svg - assets/images/folder_pressed.svg - assets/images/fullscreen_hovered.svg - assets/images/fullscreen_normal.svg - assets/images/fullscreen_pressed.svg - assets/images/generic_error_hovered.svg - assets/images/generic_error_normal.svg - assets/images/generic_error_pressed.svg - assets/images/generic_error.svg - assets/images/group_chat_hovered.svg - assets/images/group_chat_normal.svg - assets/images/group_chat_pressed.svg - assets/images/hangup_hovered.svg - assets/images/hangup_normal.svg - assets/images/hangup_pressed.svg - assets/images/history_hovered.svg - assets/images/history_normal.svg - assets/images/history_pressed.svg - assets/images/history.svg - assets/images/home_account_assistant.svg - assets/images/home_invite_friends.svg - assets/images/home_normal.svg - assets/images/home_pressed.svg + assets/images/file_hovered.svg + assets/images/file_normal.svg + assets/images/file_pressed.svg + assets/images/file_sign.svg + assets/images/filter.svg + assets/images/folder_hovered.svg + assets/images/folder_normal.svg + assets/images/folder_pressed.svg + assets/images/fullscreen_hovered.svg + assets/images/fullscreen_normal.svg + assets/images/fullscreen_pressed.svg + assets/images/generic_error_hovered.svg + assets/images/generic_error_normal.svg + assets/images/generic_error_pressed.svg + assets/images/generic_error.svg + assets/images/group_chat_hovered.svg + assets/images/group_chat_normal.svg + assets/images/group_chat_pressed.svg + assets/images/hangup_hovered.svg + assets/images/hangup_normal.svg + assets/images/hangup_pressed.svg + assets/images/history_hovered.svg + assets/images/history_normal.svg + assets/images/history_pressed.svg + assets/images/history.svg + assets/images/home_account_assistant.svg + assets/images/home_invite_friends.svg + assets/images/home_normal.svg + assets/images/home_pressed.svg assets/images/home_hovered.svg assets/images/home_disabled.svg - assets/images/home_use_linphone.svg - assets/images/incoming_call.svg - assets/images/led_green.svg - assets/images/led_orange.svg - assets/images/led_red.svg - assets/images/led_white.svg - assets/images/menu_copy_text.svg - assets/images/menu_delete.svg - assets/images/menu_imdn_info.svg + assets/images/home_use_linphone.svg + assets/images/incoming_call.svg + assets/images/led_green.svg + assets/images/led_orange.svg + assets/images/led_red.svg + assets/images/led_white.svg + assets/images/menu_copy_text.svg + assets/images/menu_delete.svg + assets/images/menu_imdn_info.svg assets/images/menu_vdots_normal.svg assets/images/menu_vdots_hovered.svg assets/images/menu_vdots_pressed.svg @@ -158,412 +158,411 @@ assets/images/menu_devices_selected.svg assets/images/menu_ephemeral.svg assets/images/menu_ephemeral_selected.svg - assets/images/message_sign.svg - assets/images/micro_off_hovered.svg - assets/images/micro_off_normal.svg - assets/images/micro_off_pressed.svg - assets/images/micro_on_hovered.svg - assets/images/micro_on_normal.svg - assets/images/micro_on_pressed.svg - assets/images/micro.svg - assets/images/missed_incoming_call.svg - assets/images/missed_outgoing_call.svg - assets/images/new_call_hovered.svg - assets/images/new_call_normal.svg - assets/images/new_call_pressed.svg + assets/images/message_sign.svg + assets/images/micro_off_hovered.svg + assets/images/micro_off_normal.svg + assets/images/micro_off_pressed.svg + assets/images/micro_on_hovered.svg + assets/images/micro_on_normal.svg + assets/images/micro_on_pressed.svg + assets/images/micro.svg + assets/images/missed_incoming_call.svg + assets/images/missed_outgoing_call.svg + assets/images/new_call_hovered.svg + assets/images/new_call_normal.svg + assets/images/new_call_pressed.svg assets/images/new_chat_hovered.svg - assets/images/new_chat_normal.svg - assets/images/new_chat_pressed.svg + assets/images/new_chat_normal.svg + assets/images/new_chat_pressed.svg assets/images/new_chat_group_hovered.svg - assets/images/new_chat_group_normal.svg - assets/images/new_chat_group_pressed.svg - assets/images/new_conference_hovered.svg - assets/images/new_conference_normal.svg - assets/images/new_conference_pressed.svg - assets/images/options_hovered.svg - assets/images/options_normal.svg - assets/images/options_pressed.svg - assets/images/outgoing_call.svg - assets/images/panel_arrow.svg + assets/images/new_chat_group_normal.svg + assets/images/new_chat_group_pressed.svg + assets/images/new_conference_hovered.svg + assets/images/new_conference_normal.svg + assets/images/new_conference_pressed.svg + assets/images/options_hovered.svg + assets/images/options_normal.svg + assets/images/options_pressed.svg + assets/images/outgoing_call.svg + assets/images/panel_arrow.svg assets/images/panel_hidden_normal.svg assets/images/panel_hidden_hovered.svg assets/images/panel_hidden_pressed.svg assets/images/panel_shown_normal.svg assets/images/panel_shown_hovered.svg assets/images/panel_shown_pressed.svg - assets/images/pause_off_hovered.svg - assets/images/pause_off_normal.svg - assets/images/pause_off_pressed.svg - assets/images/pause_off_updating.svg - assets/images/pause_on_hovered.svg - assets/images/pause_on_normal.svg - assets/images/pause_on_pressed.svg - assets/images/pause_on_updating.svg + assets/images/pause_off_hovered.svg + assets/images/pause_off_normal.svg + assets/images/pause_off_pressed.svg + assets/images/pause_off_updating.svg + assets/images/pause_on_hovered.svg + assets/images/pause_on_normal.svg + assets/images/pause_on_pressed.svg + assets/images/pause_on_updating.svg assets/images/plus_disabled.svg - assets/images/plus_hovered.svg - assets/images/plus_normal.svg - assets/images/plus_pressed.svg - assets/images/recording_sign.svg - assets/images/record_off.svg - assets/images/record_on.svg + assets/images/plus_hovered.svg + assets/images/plus_normal.svg + assets/images/plus_pressed.svg + assets/images/recording_sign.svg + assets/images/record_off.svg + assets/images/record_on.svg assets/images/remove_participant_hovered.svg - assets/images/remove_participant_normal.svg - assets/images/remove_participant_pressed.svg - assets/images/screenshot_hovered.svg - assets/images/screenshot_normal.svg - assets/images/screenshot_pressed.svg - assets/images/search.svg + assets/images/remove_participant_normal.svg + assets/images/remove_participant_pressed.svg + assets/images/screenshot_hovered.svg + assets/images/screenshot_normal.svg + assets/images/screenshot_pressed.svg + assets/images/search.svg assets/images/secure_level_unsafe.svg assets/images/secure_level_1.svg assets/images/secure_level_2.svg assets/images/secure_off.svg assets/images/secure_on.svg assets/images/send.svg - assets/images/settings_advanced_normal.svg - assets/images/settings_advanced_selected.svg - assets/images/settings_audio_normal.svg - assets/images/settings_audio_selected.svg - assets/images/settings_call_normal.svg - assets/images/settings_call_selected.svg - assets/images/settings_network_normal.svg - assets/images/settings_network_selected.svg - assets/images/settings_sip_accounts_normal.svg - assets/images/settings_sip_accounts_selected.svg - assets/images/settings_video_normal.svg - assets/images/settings_video_selected.svg - assets/images/snapshot_sign.svg - assets/images/speaker_off_hovered.svg - assets/images/speaker_off_normal.svg - assets/images/speaker_off_pressed.svg - assets/images/speaker_on_hovered.svg - assets/images/speaker_on_normal.svg - assets/images/speaker_on_pressed.svg - assets/images/speaker.svg + assets/images/settings_advanced_normal.svg + assets/images/settings_advanced_selected.svg + assets/images/settings_audio_normal.svg + assets/images/settings_audio_selected.svg + assets/images/settings_call_normal.svg + assets/images/settings_call_selected.svg + assets/images/settings_network_normal.svg + assets/images/settings_network_selected.svg + assets/images/settings_sip_accounts_normal.svg + assets/images/settings_sip_accounts_selected.svg + assets/images/settings_video_normal.svg + assets/images/settings_video_selected.svg + assets/images/snapshot_sign.svg + assets/images/speaker_off_hovered.svg + assets/images/speaker_off_normal.svg + assets/images/speaker_off_pressed.svg + assets/images/speaker_on_hovered.svg + assets/images/speaker_on_normal.svg + assets/images/speaker_on_pressed.svg + assets/images/speaker.svg assets/images/timer.svg - assets/images/tel_keypad_hovered.svg - assets/images/tel_keypad_normal.svg - assets/images/tel_keypad_pressed.svg - assets/images/timeline_history.svg + assets/images/tel_keypad_hovered.svg + assets/images/tel_keypad_normal.svg + assets/images/tel_keypad_pressed.svg + assets/images/timeline_history.svg assets/images/timeline_filter.svg assets/images/timeline_search.svg assets/images/timeline_close.svg - assets/images/tooltip_arrow_bottom.svg - assets/images/tooltip_arrow_left.svg - assets/images/tooltip_arrow_right.svg - assets/images/tooltip_arrow_top.svg - assets/images/transfer_hovered.svg - assets/images/transfer_normal.svg - assets/images/transfer_pressed.svg - assets/images/update_sign.svg - assets/images/video_call_accept_hovered.svg - assets/images/video_call_accept_normal.svg - assets/images/video_call_accept_pressed.svg - assets/images/video_call_hovered.svg - assets/images/video_call_normal.svg - assets/images/video_call_pressed.svg - assets/images/warning.svg - ui/modules/Common/Animations/BusyIndicator.qml - ui/modules/Common/Constants/Constants.qml - ui/modules/Common/Dialog/ConfirmDialog.qml - ui/modules/Common/Dialog/DialogDescription.qml - ui/modules/Common/Dialog/DialogPlus.qml + assets/images/tooltip_arrow_bottom.svg + assets/images/tooltip_arrow_left.svg + assets/images/tooltip_arrow_right.svg + assets/images/tooltip_arrow_top.svg + assets/images/transfer_hovered.svg + assets/images/transfer_normal.svg + assets/images/transfer_pressed.svg + assets/images/update_sign.svg + assets/images/video_call_accept_hovered.svg + assets/images/video_call_accept_normal.svg + assets/images/video_call_accept_pressed.svg + assets/images/video_call_hovered.svg + assets/images/video_call_normal.svg + assets/images/video_call_pressed.svg + assets/images/warning.svg + ui/modules/Common/Animations/BusyIndicator.qml + ui/modules/Common/Constants/Constants.qml + ui/modules/Common/Dialog/ConfirmDialog.qml + ui/modules/Common/Dialog/DialogDescription.qml + ui/modules/Common/Dialog/DialogPlus.qml ui/modules/Common/Dialog/DialogTitle.qml - ui/modules/Common/Form/ActionBar.qml - ui/modules/Common/Form/ActionButton.qml - ui/modules/Common/Form/ActionSwitch.qml - ui/modules/Common/Form/Buttons/AbstractTextButton.qml - ui/modules/Common/Form/Buttons/ExclusiveButtons.qml - ui/modules/Common/Form/Buttons/FileChooserButton.qml - ui/modules/Common/Form/Buttons/SmallButton.qml - ui/modules/Common/Form/Buttons/TextButtonA.qml - ui/modules/Common/Form/Buttons/TextButtonB.qml - ui/modules/Common/Form/CheckBoxText.qml - ui/modules/Common/Form/ComboBox.js - ui/modules/Common/Form/ComboBox.qml - ui/modules/Common/Form/CommonItemDelegate.qml - ui/modules/Common/Form/DroppableTextArea.qml - ui/modules/Common/Form/Fields/HexField.qml - ui/modules/Common/Form/Fields/NumericField.qml - ui/modules/Common/Form/Fields/PasswordField.qml - ui/modules/Common/Form/Fields/PortField.qml - ui/modules/Common/Form/Fields/ScrollableListViewField.qml - ui/modules/Common/Form/Fields/TextAreaField.qml - ui/modules/Common/Form/Fields/TextField.qml - ui/modules/Common/Form/ListForm.js - ui/modules/Common/Form/ListForm.qml - ui/modules/Common/Form/ListItemSelector.js - ui/modules/Common/Form/ListItemSelector.qml - ui/modules/Common/Form/MouseArea.qml - ui/modules/Common/Form/Placements/FormEmptyLine.qml - ui/modules/Common/Form/Placements/FormGroup.qml - ui/modules/Common/Form/Placements/FormHGroup.qml - ui/modules/Common/Form/Placements/FormLine.qml - ui/modules/Common/Form/Placements/Form.qml - ui/modules/Common/Form/Placements/FormTableEntry.qml - ui/modules/Common/Form/Placements/FormTableLine.qml - ui/modules/Common/Form/Placements/FormTable.qml - ui/modules/Common/Form/Placements/FormVGroup.qml - ui/modules/Common/Form/SearchBox.qml - ui/modules/Common/Form/Slider.qml - ui/modules/Common/Form/StaticListForm.qml - ui/modules/Common/Form/Switch.qml - ui/modules/Common/Form/Tab/TabBar.qml - ui/modules/Common/Form/Tab/TabButton.qml - ui/modules/Common/Form/Tab/TabContainer.qml - ui/modules/Common/Form/TransparentTextInput.qml - ui/modules/Common/Helpers/DragBox.qml - ui/modules/Common/Helpers/InvertedMouseArea.qml - ui/modules/Common/Image/Icon.qml - ui/modules/Common/Image/RoundedImage.qml - ui/modules/Common/Indicators/VuMeter.qml - ui/modules/Common/Menus/ApplicationMenuEntry.qml - ui/modules/Common/Menus/ApplicationMenu.qml - ui/modules/Common/Menus/DropDownDynamicMenu.qml - ui/modules/Common/Menus/DropDownStaticMenuEntry.qml - ui/modules/Common/Menus/DropDownStaticMenu.qml - ui/modules/Common/Menus/MenuItem.qml - ui/modules/Common/Menus/Menu.qml - ui/modules/Common/Misc/Borders.qml - ui/modules/Common/Misc/ForceScrollBar.qml - ui/modules/Common/Misc/Paned.qml - ui/modules/Common/Popup/DesktopPopup.qml - ui/modules/Common/Popup/Popup.qml - ui/modules/Common/Popup/PopupShadow.qml - ui/modules/Common/qmldir - ui/modules/Common/Styles/Animations/BusyIndicatorStyle.qml - ui/modules/Common/Styles/Dialog/DialogStyle.qml - ui/modules/Common/Styles/Form/ActionBarStyle.qml - ui/modules/Common/Styles/Form/Buttons/AbstractTextButtonStyle.qml - ui/modules/Common/Styles/Form/Buttons/ExclusiveButtonsStyle.qml - ui/modules/Common/Styles/Form/Buttons/FileChooserButtonStyle.qml - ui/modules/Common/Styles/Form/Buttons/SmallButtonStyle.qml - ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml - ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml - ui/modules/Common/Styles/Form/CheckBoxTextStyle.qml - ui/modules/Common/Styles/Form/ComboBoxStyle.qml - ui/modules/Common/Styles/Form/CommonItemDelegateStyle.qml - ui/modules/Common/Styles/Form/DroppableTextAreaStyle.qml - ui/modules/Common/Styles/Form/Fields/NumericFieldStyle.qml - ui/modules/Common/Styles/Form/Fields/TextAreaFieldStyle.qml - ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml - ui/modules/Common/Styles/Form/ListFormStyle.qml - ui/modules/Common/Styles/Form/Placements/FormHGroupStyle.qml - ui/modules/Common/Styles/Form/Placements/FormLineStyle.qml - ui/modules/Common/Styles/Form/Placements/FormStyle.qml - ui/modules/Common/Styles/Form/Placements/FormTableLineStyle.qml - ui/modules/Common/Styles/Form/Placements/FormTableStyle.qml - ui/modules/Common/Styles/Form/Placements/FormVGroupStyle.qml - ui/modules/Common/Styles/Form/SearchBoxStyle.qml - ui/modules/Common/Styles/Form/SliderStyle.qml - ui/modules/Common/Styles/Form/SwitchStyle.qml - ui/modules/Common/Styles/Form/Tab/TabButtonStyle.qml - ui/modules/Common/Styles/Form/Tab/TabContainerStyle.qml - ui/modules/Common/Styles/Form/TransparentTextInputStyle.qml - ui/modules/Common/Styles/Indicators/VuMeterStyle.qml - ui/modules/Common/Styles/Menus/ApplicationMenuStyle.qml - ui/modules/Common/Styles/Menus/DropDownStaticMenuStyle.qml - ui/modules/Common/Styles/Menus/MenuItemStyle.qml - ui/modules/Common/Styles/Menus/MenuStyle.qml - ui/modules/Common/Styles/Misc/ForceScrollBarStyle.qml - ui/modules/Common/Styles/Misc/PanedStyle.qml - ui/modules/Common/Styles/Popup/PopupStyle.qml - ui/modules/Common/Styles/qmldir - ui/modules/Common/Styles/Tooltip/TooltipStyle.qml - ui/modules/Common/Styles/Window/WindowStyle.qml - ui/modules/Common/Tooltip/TooltipArea.qml - ui/modules/Common/Tooltip/Tooltip.qml - ui/modules/Common/View/ScrollableListView.qml - ui/modules/Common/Window/ApplicationWindow.qml - ui/modules/Common/Window/VirtualWindow.qml - ui/modules/Common/Window/Window.js - ui/modules/Common/Window/Window.qml - ui/modules/Konami/Konami.qml - ui/modules/Konami/qmldir - ui/modules/Linphone/Account/AccountStatus.qml - ui/modules/Linphone/Blocks/CardBlock.qml - ui/modules/Linphone/Blocks/RequestBlock.qml - ui/modules/Linphone/Calls/CallControls.qml - ui/modules/Linphone/Calls/Calls.js - ui/modules/Linphone/Calls/Calls.qml - ui/modules/Linphone/Calls/CallStatistics.qml - ui/modules/Linphone/Calls/ConferenceControls.qml - ui/modules/Linphone/Chat/Chat.js - ui/modules/Linphone/Chat/Chat.qml - ui/modules/Linphone/Chat/Event.qml - ui/modules/Linphone/Chat/FileMessage.qml - ui/modules/Linphone/Chat/IncomingMessage.qml - ui/modules/Linphone/Chat/Message.js - ui/modules/Linphone/Chat/Message.qml + ui/modules/Common/Form/ActionBar.qml + ui/modules/Common/Form/ActionButton.qml + ui/modules/Common/Form/ActionSwitch.qml + ui/modules/Common/Form/Buttons/AbstractTextButton.qml + ui/modules/Common/Form/Buttons/ExclusiveButtons.qml + ui/modules/Common/Form/Buttons/FileChooserButton.qml + ui/modules/Common/Form/Buttons/SmallButton.qml + ui/modules/Common/Form/Buttons/TextButtonA.qml + ui/modules/Common/Form/Buttons/TextButtonB.qml + ui/modules/Common/Form/CheckBoxText.qml + ui/modules/Common/Form/ComboBox.js + ui/modules/Common/Form/ComboBox.qml + ui/modules/Common/Form/CommonItemDelegate.qml + ui/modules/Common/Form/DroppableTextArea.qml + ui/modules/Common/Form/Fields/HexField.qml + ui/modules/Common/Form/Fields/NumericField.qml + ui/modules/Common/Form/Fields/PasswordField.qml + ui/modules/Common/Form/Fields/PortField.qml + ui/modules/Common/Form/Fields/ScrollableListViewField.qml + ui/modules/Common/Form/Fields/TextAreaField.qml + ui/modules/Common/Form/Fields/TextField.qml + ui/modules/Common/Form/ListForm.js + ui/modules/Common/Form/ListForm.qml + ui/modules/Common/Form/ListItemSelector.js + ui/modules/Common/Form/ListItemSelector.qml + ui/modules/Common/Form/MouseArea.qml + ui/modules/Common/Form/Placements/FormEmptyLine.qml + ui/modules/Common/Form/Placements/FormGroup.qml + ui/modules/Common/Form/Placements/FormHGroup.qml + ui/modules/Common/Form/Placements/FormLine.qml + ui/modules/Common/Form/Placements/Form.qml + ui/modules/Common/Form/Placements/FormTableEntry.qml + ui/modules/Common/Form/Placements/FormTableLine.qml + ui/modules/Common/Form/Placements/FormTable.qml + ui/modules/Common/Form/Placements/FormVGroup.qml + ui/modules/Common/Form/SearchBox.qml + ui/modules/Common/Form/Slider.qml + ui/modules/Common/Form/StaticListForm.qml + ui/modules/Common/Form/Switch.qml + ui/modules/Common/Form/Tab/TabBar.qml + ui/modules/Common/Form/Tab/TabButton.qml + ui/modules/Common/Form/Tab/TabContainer.qml + ui/modules/Common/Form/TransparentTextInput.qml + ui/modules/Common/Helpers/DragBox.qml + ui/modules/Common/Helpers/InvertedMouseArea.qml + ui/modules/Common/Image/Icon.qml + ui/modules/Common/Image/RoundedImage.qml + ui/modules/Common/Indicators/VuMeter.qml + ui/modules/Common/Menus/ApplicationMenuEntry.qml + ui/modules/Common/Menus/ApplicationMenu.qml + ui/modules/Common/Menus/DropDownDynamicMenu.qml + ui/modules/Common/Menus/DropDownStaticMenuEntry.qml + ui/modules/Common/Menus/DropDownStaticMenu.qml + ui/modules/Common/Menus/MenuItem.qml + ui/modules/Common/Menus/Menu.qml + ui/modules/Common/Misc/Borders.qml + ui/modules/Common/Misc/ForceScrollBar.qml + ui/modules/Common/Misc/Paned.qml + ui/modules/Common/Popup/DesktopPopup.qml + ui/modules/Common/Popup/Popup.qml + ui/modules/Common/Popup/PopupShadow.qml + ui/modules/Common/qmldir + ui/modules/Common/Styles/Animations/BusyIndicatorStyle.qml + ui/modules/Common/Styles/Dialog/DialogStyle.qml + ui/modules/Common/Styles/Form/ActionBarStyle.qml + ui/modules/Common/Styles/Form/Buttons/AbstractTextButtonStyle.qml + ui/modules/Common/Styles/Form/Buttons/ExclusiveButtonsStyle.qml + ui/modules/Common/Styles/Form/Buttons/FileChooserButtonStyle.qml + ui/modules/Common/Styles/Form/Buttons/SmallButtonStyle.qml + ui/modules/Common/Styles/Form/Buttons/TextButtonAStyle.qml + ui/modules/Common/Styles/Form/Buttons/TextButtonBStyle.qml + ui/modules/Common/Styles/Form/CheckBoxTextStyle.qml + ui/modules/Common/Styles/Form/ComboBoxStyle.qml + ui/modules/Common/Styles/Form/CommonItemDelegateStyle.qml + ui/modules/Common/Styles/Form/DroppableTextAreaStyle.qml + ui/modules/Common/Styles/Form/Fields/NumericFieldStyle.qml + ui/modules/Common/Styles/Form/Fields/TextAreaFieldStyle.qml + ui/modules/Common/Styles/Form/Fields/TextFieldStyle.qml + ui/modules/Common/Styles/Form/ListFormStyle.qml + ui/modules/Common/Styles/Form/Placements/FormHGroupStyle.qml + ui/modules/Common/Styles/Form/Placements/FormLineStyle.qml + ui/modules/Common/Styles/Form/Placements/FormStyle.qml + ui/modules/Common/Styles/Form/Placements/FormTableLineStyle.qml + ui/modules/Common/Styles/Form/Placements/FormTableStyle.qml + ui/modules/Common/Styles/Form/Placements/FormVGroupStyle.qml + ui/modules/Common/Styles/Form/SearchBoxStyle.qml + ui/modules/Common/Styles/Form/SliderStyle.qml + ui/modules/Common/Styles/Form/SwitchStyle.qml + ui/modules/Common/Styles/Form/Tab/TabButtonStyle.qml + ui/modules/Common/Styles/Form/Tab/TabContainerStyle.qml + ui/modules/Common/Styles/Form/TransparentTextInputStyle.qml + ui/modules/Common/Styles/Indicators/VuMeterStyle.qml + ui/modules/Common/Styles/Menus/ApplicationMenuStyle.qml + ui/modules/Common/Styles/Menus/DropDownStaticMenuStyle.qml + ui/modules/Common/Styles/Menus/MenuItemStyle.qml + ui/modules/Common/Styles/Menus/MenuStyle.qml + ui/modules/Common/Styles/Misc/ForceScrollBarStyle.qml + ui/modules/Common/Styles/Misc/PanedStyle.qml + ui/modules/Common/Styles/Popup/PopupStyle.qml + ui/modules/Common/Styles/qmldir + ui/modules/Common/Styles/Tooltip/TooltipStyle.qml + ui/modules/Common/Styles/Window/WindowStyle.qml + ui/modules/Common/Tooltip/TooltipArea.qml + ui/modules/Common/Tooltip/Tooltip.qml + ui/modules/Common/View/ScrollableListView.qml + ui/modules/Common/Window/ApplicationWindow.qml + ui/modules/Common/Window/VirtualWindow.qml + ui/modules/Common/Window/Window.js + ui/modules/Common/Window/Window.qml + ui/modules/Konami/Konami.qml + ui/modules/Konami/qmldir + ui/modules/Linphone/Account/AccountStatus.qml + ui/modules/Linphone/Blocks/CardBlock.qml + ui/modules/Linphone/Blocks/RequestBlock.qml + ui/modules/Linphone/Calls/CallControls.qml + ui/modules/Linphone/Calls/Calls.js + ui/modules/Linphone/Calls/Calls.qml + ui/modules/Linphone/Calls/CallStatistics.qml + ui/modules/Linphone/Calls/ConferenceControls.qml + ui/modules/Linphone/Chat/Chat.js + ui/modules/Linphone/Chat/Chat.qml + ui/modules/Linphone/Chat/Event.qml + ui/modules/Linphone/Chat/FileMessage.qml + ui/modules/Linphone/Chat/IncomingMessage.qml + ui/modules/Linphone/Chat/Message.js + ui/modules/Linphone/Chat/Message.qml ui/modules/Linphone/Chat/Notice.qml - ui/modules/Linphone/Chat/OutgoingMessage.qml - ui/modules/Linphone/Codecs/CodecAttribute.qml - ui/modules/Linphone/Codecs/CodecLegend.qml - ui/modules/Linphone/Codecs/CodecsViewer.qml - ui/modules/Linphone/Contact/Avatar.qml - ui/modules/Linphone/Contact/ContactDescription.qml - ui/modules/Linphone/Contact/ContactMessageCounter.qml - ui/modules/Linphone/Contact/Contact.qml - ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml - ui/modules/Linphone/History/History.qml - ui/modules/Linphone/History/History.js - ui/modules/Linphone/History/Event.qml - ui/modules/Linphone/Menus/SipAddressesMenu.qml - ui/modules/Linphone/Misc/MessageCounter.qml - ui/modules/Linphone/Notifications/NotificationBasic.qml - ui/modules/Linphone/Notifications/NotificationNewVersionAvailable.qml - ui/modules/Linphone/Notifications/Notification.qml - ui/modules/Linphone/Notifications/NotificationReceivedCall.qml - ui/modules/Linphone/Notifications/NotificationReceivedFileMessage.qml - ui/modules/Linphone/Notifications/NotificationReceivedMessage.qml - ui/modules/Linphone/Notifications/NotificationRecordingCompleted.qml - ui/modules/Linphone/Notifications/NotificationSnapshotWasTaken.qml - ui/modules/Linphone/Presence/PresenceLevel.qml - ui/modules/Linphone/qmldir - ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml - ui/modules/Linphone/Styles/Account/AccountStatusStyle.qml - ui/modules/Linphone/Styles/Blocks/CardBlockStyle.qml - ui/modules/Linphone/Styles/Blocks/RequestBlockStyle.qml - ui/modules/Linphone/Styles/Calls/CallControlsStyle.qml - ui/modules/Linphone/Styles/Calls/CallsStyle.qml - ui/modules/Linphone/Styles/Calls/CallStatisticsStyle.qml - ui/modules/Linphone/Styles/Calls/ConferenceControlsStyle.qml - ui/modules/Linphone/Styles/Chat/ChatStyle.qml - ui/modules/Linphone/Styles/Codecs/CodecsViewerStyle.qml - ui/modules/Linphone/Styles/Contact/AvatarStyle.qml - ui/modules/Linphone/Styles/Contact/ContactDescriptionStyle.qml - ui/modules/Linphone/Styles/Contact/ContactMessageCounterStyle.qml - ui/modules/Linphone/Styles/Contact/ContactStyle.qml - ui/modules/Linphone/Styles/Dialog/OnlineInstallerDialogStyle.qml - ui/modules/Linphone/Styles/History/HistoryStyle.qml - ui/modules/Linphone/Styles/Menus/SipAddressesMenuStyle.qml - ui/modules/Linphone/Styles/Misc/MessageCounterStyle.qml - ui/modules/Linphone/Styles/Notifications/NotificationBasicStyle.qml - ui/modules/Linphone/Styles/Notifications/NotificationReceivedCallStyle.qml - ui/modules/Linphone/Styles/Notifications/NotificationReceivedFileMessageStyle.qml - ui/modules/Linphone/Styles/Notifications/NotificationReceivedMessageStyle.qml - ui/modules/Linphone/Styles/Notifications/NotificationStyle.qml - ui/modules/Linphone/Styles/qmldir - ui/modules/Linphone/Styles/TelKeypad/TelKeypadStyle.qml - ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml - ui/modules/Linphone/Styles/View/SipAddressesViewStyle.qml - ui/modules/Linphone/Styles/View/ParticipantsViewStyle.qml - ui/modules/Linphone/TelKeypad/TelKeypadButton.qml - ui/modules/Linphone/TelKeypad/TelKeypad.js - ui/modules/Linphone/TelKeypad/TelKeypad.qml - ui/modules/Linphone/Timeline/Timeline.js - ui/modules/Linphone/Timeline/Timeline.qml + ui/modules/Linphone/Chat/OutgoingMessage.qml + ui/modules/Linphone/Codecs/CodecAttribute.qml + ui/modules/Linphone/Codecs/CodecLegend.qml + ui/modules/Linphone/Codecs/CodecsViewer.qml + ui/modules/Linphone/Contact/Avatar.qml + ui/modules/Linphone/Contact/ContactDescription.qml + ui/modules/Linphone/Contact/ContactMessageCounter.qml + ui/modules/Linphone/Contact/Contact.qml + ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml + ui/modules/Linphone/History/History.qml + ui/modules/Linphone/History/History.js + ui/modules/Linphone/History/Event.qml + ui/modules/Linphone/Menus/SipAddressesMenu.qml + ui/modules/Linphone/Misc/MessageCounter.qml + ui/modules/Linphone/Notifications/NotificationBasic.qml + ui/modules/Linphone/Notifications/NotificationNewVersionAvailable.qml + ui/modules/Linphone/Notifications/Notification.qml + ui/modules/Linphone/Notifications/NotificationReceivedCall.qml + ui/modules/Linphone/Notifications/NotificationReceivedFileMessage.qml + ui/modules/Linphone/Notifications/NotificationReceivedMessage.qml + ui/modules/Linphone/Notifications/NotificationRecordingCompleted.qml + ui/modules/Linphone/Notifications/NotificationSnapshotWasTaken.qml + ui/modules/Linphone/Presence/PresenceLevel.qml + ui/modules/Linphone/qmldir + ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml + ui/modules/Linphone/Styles/Account/AccountStatusStyle.qml + ui/modules/Linphone/Styles/Blocks/CardBlockStyle.qml + ui/modules/Linphone/Styles/Blocks/RequestBlockStyle.qml + ui/modules/Linphone/Styles/Calls/CallControlsStyle.qml + ui/modules/Linphone/Styles/Calls/CallsStyle.qml + ui/modules/Linphone/Styles/Calls/CallStatisticsStyle.qml + ui/modules/Linphone/Styles/Calls/ConferenceControlsStyle.qml + ui/modules/Linphone/Styles/Chat/ChatStyle.qml + ui/modules/Linphone/Styles/Codecs/CodecsViewerStyle.qml + ui/modules/Linphone/Styles/Contact/AvatarStyle.qml + ui/modules/Linphone/Styles/Contact/ContactDescriptionStyle.qml + ui/modules/Linphone/Styles/Contact/ContactMessageCounterStyle.qml + ui/modules/Linphone/Styles/Contact/ContactStyle.qml + ui/modules/Linphone/Styles/Dialog/OnlineInstallerDialogStyle.qml + ui/modules/Linphone/Styles/History/HistoryStyle.qml + ui/modules/Linphone/Styles/Menus/SipAddressesMenuStyle.qml + ui/modules/Linphone/Styles/Misc/MessageCounterStyle.qml + ui/modules/Linphone/Styles/Notifications/NotificationBasicStyle.qml + ui/modules/Linphone/Styles/Notifications/NotificationReceivedCallStyle.qml + ui/modules/Linphone/Styles/Notifications/NotificationReceivedFileMessageStyle.qml + ui/modules/Linphone/Styles/Notifications/NotificationReceivedMessageStyle.qml + ui/modules/Linphone/Styles/Notifications/NotificationStyle.qml + ui/modules/Linphone/Styles/qmldir + ui/modules/Linphone/Styles/TelKeypad/TelKeypadStyle.qml + ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml + ui/modules/Linphone/Styles/View/SipAddressesViewStyle.qml + ui/modules/Linphone/Styles/View/ParticipantsViewStyle.qml + ui/modules/Linphone/TelKeypad/TelKeypadButton.qml + ui/modules/Linphone/TelKeypad/TelKeypad.js + ui/modules/Linphone/TelKeypad/TelKeypad.qml + ui/modules/Linphone/Timeline/Timeline.js + ui/modules/Linphone/Timeline/Timeline.qml ui/modules/Linphone/View/ParticipantsView.qml - ui/modules/Linphone/View/SipAddressesView.qml - ui/scripts/LinphoneUtils/linphone-utils.js - ui/scripts/LinphoneUtils/qmldir - ui/scripts/Utils/port-tools.js - ui/scripts/Utils/qmldir - ui/scripts/Utils/uri-tools.js - ui/scripts/Utils/utils.js - ui/views/App/Calls/AbstractStartingCall.qml - ui/views/App/Calls/CallsWindow.js - ui/views/App/Calls/CallsWindow.qml - ui/views/App/Calls/Conference.qml - ui/views/App/Calls/Dialogs/CallSipAddress.qml - ui/views/App/Calls/Dialogs/CallTransfer.qml - ui/views/App/Calls/Dialogs/ConferenceManager.qml - ui/views/App/Calls/Dialogs/MultimediaParameters.qml - ui/views/App/Calls/EndedCall.qml - ui/views/App/Calls/IncallAvatar.qml - ui/views/App/Calls/IncallFullscreenWindow.qml - ui/views/App/Calls/Incall.js - ui/views/App/Calls/Incall.qml - ui/views/App/Calls/IncomingCall.qml - ui/views/App/Calls/OutgoingCall.qml - ui/views/App/Calls/ZrtpTokenAuthentication.qml - ui/views/App/Main/Assistant/ActivateAppSipAccountWithEmail.qml - ui/views/App/Main/Assistant/ActivateAppSipAccountWithPhoneNumber.qml - ui/views/App/Main/Assistant/AssistantAbstractView.qml - ui/views/App/Main/Assistant/AssistantHome.qml - ui/views/App/Main/Assistant/CreateAppSipAccount.qml - ui/views/App/Main/Assistant/CreateAppSipAccountWithEmail.qml - ui/views/App/Main/Assistant/CreateAppSipAccountWithPhoneNumber.qml - ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml - ui/views/App/Main/Assistant.qml - ui/views/App/Main/Assistant/UseAppSipAccount.qml - ui/views/App/Main/Assistant/UseAppSipAccountWithPhoneNumber.qml - ui/views/App/Main/Assistant/UseAppSipAccountWithUsername.qml - ui/views/App/Main/Assistant/UseOtherSipAccount.qml - ui/views/App/Main/ContactEdit.js - ui/views/App/Main/ContactEdit.qml - ui/views/App/Main/Contacts.qml - ui/views/App/Main/Conversation.js - ui/views/App/Main/Conversation.qml - ui/views/App/Main/Dialogs/About.qml - ui/views/App/Main/Dialogs/AuthenticationRequest.js - ui/views/App/Main/Dialogs/AuthenticationRequest.qml + ui/modules/Linphone/View/SipAddressesView.qml + ui/scripts/LinphoneUtils/linphone-utils.js + ui/scripts/LinphoneUtils/qmldir + ui/scripts/Utils/port-tools.js + ui/scripts/Utils/qmldir + ui/scripts/Utils/uri-tools.js + ui/scripts/Utils/utils.js + ui/views/App/Calls/AbstractStartingCall.qml + ui/views/App/Calls/CallsWindow.js + ui/views/App/Calls/CallsWindow.qml + ui/views/App/Calls/Conference.qml + ui/views/App/Calls/Dialogs/CallSipAddress.qml + ui/views/App/Calls/Dialogs/CallTransfer.qml + ui/views/App/Calls/Dialogs/ConferenceManager.qml + ui/views/App/Calls/Dialogs/MultimediaParameters.qml + ui/views/App/Calls/EndedCall.qml + ui/views/App/Calls/IncallAvatar.qml + ui/views/App/Calls/IncallFullscreenWindow.qml + ui/views/App/Calls/Incall.js + ui/views/App/Calls/Incall.qml + ui/views/App/Calls/IncomingCall.qml + ui/views/App/Calls/OutgoingCall.qml + ui/views/App/Calls/ZrtpTokenAuthentication.qml + ui/views/App/Main/Assistant/ActivateAppSipAccountWithEmail.qml + ui/views/App/Main/Assistant/ActivateAppSipAccountWithPhoneNumber.qml + ui/views/App/Main/Assistant/AssistantAbstractView.qml + ui/views/App/Main/Assistant/AssistantHome.qml + ui/views/App/Main/Assistant/CreateAppSipAccount.qml + ui/views/App/Main/Assistant/CreateAppSipAccountWithEmail.qml + ui/views/App/Main/Assistant/CreateAppSipAccountWithPhoneNumber.qml + ui/views/App/Main/Assistant/FetchRemoteConfiguration.qml + ui/views/App/Main/Assistant.qml + ui/views/App/Main/Assistant/UseAppSipAccount.qml + ui/views/App/Main/Assistant/UseAppSipAccountWithPhoneNumber.qml + ui/views/App/Main/Assistant/UseAppSipAccountWithUsername.qml + ui/views/App/Main/Assistant/UseOtherSipAccount.qml + ui/views/App/Main/ContactEdit.js + ui/views/App/Main/ContactEdit.qml + ui/views/App/Main/Contacts.qml + ui/views/App/Main/Conversation.js + ui/views/App/Main/Conversation.qml + ui/views/App/Main/Dialogs/About.qml + ui/views/App/Main/Dialogs/AuthenticationRequest.js + ui/views/App/Main/Dialogs/AuthenticationRequest.qml ui/views/App/Main/Dialogs/EphemeralChatRoom.qml ui/views/App/Main/Dialogs/InfoChatRoom.qml ui/views/App/Main/Dialogs/InfoEncryption.qml - ui/views/App/Main/Dialogs/ManageAccount.js - ui/views/App/Main/Dialogs/ManageAccounts.qml - ui/views/App/Main/Dialogs/ManageChatRoom.qml + ui/views/App/Main/Dialogs/ManageAccount.js + ui/views/App/Main/Dialogs/ManageAccounts.qml ui/views/App/Main/Dialogs/NewChatRoom.qml ui/views/App/Main/Dialogs/ParticipantsDevices.qml - ui/views/App/Main/Home.qml - ui/views/App/Main/HistoryView.qml - ui/views/App/Main/HistoryView.js - ui/views/App/Main/InviteFriends.qml - ui/views/App/Main/MainWindow.js - ui/views/App/Main/MainWindowMenuBar.qml - ui/views/App/Main/MainWindow.qml - ui/views/App/Main/MainWindowTopMenuBar.qml - ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml - ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.js - ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml - ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml - ui/views/App/Settings/SettingsAdvanced.js - ui/views/App/Settings/SettingsAdvanced.qml - ui/views/App/Settings/SettingsAudio.qml - ui/views/App/Settings/SettingsCallsChat.qml - ui/views/App/Settings/SettingsLdap.qml - ui/views/App/Settings/SettingsNetwork.qml - ui/views/App/Settings/SettingsSipAccounts.js - ui/views/App/Settings/SettingsSipAccounts.qml - ui/views/App/Settings/SettingsUi.js - ui/views/App/Settings/SettingsUi.qml - ui/views/App/Settings/SettingsVideo.js - ui/views/App/Settings/SettingsVideo.qml - ui/views/App/Settings/SettingsWindow.qml - ui/views/App/Styles/Calls/CallStyle.qml - ui/views/App/Styles/Calls/CallsWindowStyle.qml - ui/views/App/Styles/Calls/ConferenceStyle.qml - ui/views/App/Styles/Calls/Dialogs/CallSipAddressStyle.qml - ui/views/App/Styles/Calls/Dialogs/CallTransferStyle.qml - ui/views/App/Styles/Calls/Dialogs/ConferenceManagerStyle.qml - ui/views/App/Styles/Calls/Dialogs/MultimediaParametersStyle.qml - ui/views/App/Styles/Main/Assistant/ActivateAppSipAccountWithEmailStyle.qml - ui/views/App/Styles/Main/Assistant/ActivateAppSipAccountWithPhoneNumberStyle.qml - ui/views/App/Styles/Main/Assistant/AssistantAbstractViewStyle.qml - ui/views/App/Styles/Main/Assistant/AssistantHomeStyle.qml - ui/views/App/Styles/Main/Assistant/CreateAppSipAccountStyle.qml - ui/views/App/Styles/Main/AssistantStyle.qml - ui/views/App/Styles/Main/Assistant/UseAppSipAccountStyle.qml - ui/views/App/Styles/Main/ContactEditStyle.qml - ui/views/App/Styles/Main/ContactsStyle.qml - ui/views/App/Styles/Main/ConversationStyle.qml - ui/views/App/Styles/Main/Dialogs/AboutStyle.qml - ui/views/App/Styles/Main/Dialogs/AuthenticationRequestStyle.qml - ui/views/App/Styles/Main/Dialogs/InfoChatRoomStyle.qml - ui/views/App/Styles/Main/Dialogs/InfoEncryptionStyle.qml - ui/views/App/Styles/Main/Dialogs/ManageAccountsStyle.qml - ui/views/App/Styles/Main/HomeStyle.qml - ui/views/App/Styles/Main/InviteFriendsStyle.qml - ui/views/App/Styles/Main/HistoryViewStyle.qml - ui/views/App/Styles/Main/MainWindowStyle.qml - ui/views/App/Styles/qmldir - ui/views/App/Styles/Settings/Dialogs/SettingsSipAccountsEditStyle.qml - ui/views/App/Styles/Settings/Dialogs/SettingsVideoPreviewStyle.qml - ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml - ui/views/App/Styles/Settings/SettingsAudioStyle.qml - ui/views/App/Styles/Settings/SettingsWindowStyle.qml - assets/images/linphone_logo.svg - ui/dev-modules/Units/Units.qml - assets/icon.ico - + ui/views/App/Main/Home.qml + ui/views/App/Main/HistoryView.qml + ui/views/App/Main/HistoryView.js + ui/views/App/Main/InviteFriends.qml + ui/views/App/Main/MainWindow.js + ui/views/App/Main/MainWindowMenuBar.qml + ui/views/App/Main/MainWindow.qml + ui/views/App/Main/MainWindowTopMenuBar.qml + ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml + ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.js + ui/views/App/Settings/Dialogs/SettingsSipAccountsEdit.qml + ui/views/App/Settings/Dialogs/SettingsVideoPreview.qml + ui/views/App/Settings/SettingsAdvanced.js + ui/views/App/Settings/SettingsAdvanced.qml + ui/views/App/Settings/SettingsAudio.qml + ui/views/App/Settings/SettingsCallsChat.qml + ui/views/App/Settings/SettingsLdap.qml + ui/views/App/Settings/SettingsNetwork.qml + ui/views/App/Settings/SettingsSipAccounts.js + ui/views/App/Settings/SettingsSipAccounts.qml + ui/views/App/Settings/SettingsUi.js + ui/views/App/Settings/SettingsUi.qml + ui/views/App/Settings/SettingsVideo.js + ui/views/App/Settings/SettingsVideo.qml + ui/views/App/Settings/SettingsWindow.qml + ui/views/App/Styles/Calls/CallStyle.qml + ui/views/App/Styles/Calls/CallsWindowStyle.qml + ui/views/App/Styles/Calls/ConferenceStyle.qml + ui/views/App/Styles/Calls/Dialogs/CallSipAddressStyle.qml + ui/views/App/Styles/Calls/Dialogs/CallTransferStyle.qml + ui/views/App/Styles/Calls/Dialogs/ConferenceManagerStyle.qml + ui/views/App/Styles/Calls/Dialogs/MultimediaParametersStyle.qml + ui/views/App/Styles/Main/Assistant/ActivateAppSipAccountWithEmailStyle.qml + ui/views/App/Styles/Main/Assistant/ActivateAppSipAccountWithPhoneNumberStyle.qml + ui/views/App/Styles/Main/Assistant/AssistantAbstractViewStyle.qml + ui/views/App/Styles/Main/Assistant/AssistantHomeStyle.qml + ui/views/App/Styles/Main/Assistant/CreateAppSipAccountStyle.qml + ui/views/App/Styles/Main/AssistantStyle.qml + ui/views/App/Styles/Main/Assistant/UseAppSipAccountStyle.qml + ui/views/App/Styles/Main/ContactEditStyle.qml + ui/views/App/Styles/Main/ContactsStyle.qml + ui/views/App/Styles/Main/ConversationStyle.qml + ui/views/App/Styles/Main/Dialogs/AboutStyle.qml + ui/views/App/Styles/Main/Dialogs/AuthenticationRequestStyle.qml + ui/views/App/Styles/Main/Dialogs/InfoChatRoomStyle.qml + ui/views/App/Styles/Main/Dialogs/InfoEncryptionStyle.qml + ui/views/App/Styles/Main/Dialogs/ManageAccountsStyle.qml + ui/views/App/Styles/Main/HomeStyle.qml + ui/views/App/Styles/Main/InviteFriendsStyle.qml + ui/views/App/Styles/Main/HistoryViewStyle.qml + ui/views/App/Styles/Main/MainWindowStyle.qml + ui/views/App/Styles/qmldir + ui/views/App/Styles/Settings/Dialogs/SettingsSipAccountsEditStyle.qml + ui/views/App/Styles/Settings/Dialogs/SettingsVideoPreviewStyle.qml + ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml + ui/views/App/Styles/Settings/SettingsAudioStyle.qml + ui/views/App/Styles/Settings/SettingsWindowStyle.qml + assets/images/linphone_logo.svg + ui/dev-modules/Units/Units.qml + assets/icon.ico + diff --git a/linphone-app/src/components/chat-events/ChatMessageModel.cpp b/linphone-app/src/components/chat-events/ChatMessageModel.cpp index 6219f3b4e..da0b6953d 100644 --- a/linphone-app/src/components/chat-events/ChatMessageModel.cpp +++ b/linphone-app/src/components/chat-events/ChatMessageModel.cpp @@ -386,6 +386,10 @@ QString ChatMessageModel::getFromDisplayName() const{ return Utils::getDisplayName(mChatMessage->getFromAddress()); } +QString ChatMessageModel::getFromSipAddress() const{ + return Utils::cleanSipAddress(Utils::coreStringToAppString(mChatMessage->getFromAddress()->asStringUriOnly())); +} + QString ChatMessageModel::getToDisplayName() const{ return Utils::getDisplayName(mChatMessage->getToAddress()); } diff --git a/linphone-app/src/components/chat-events/ChatMessageModel.hpp b/linphone-app/src/components/chat-events/ChatMessageModel.hpp index bf02c8ed7..e7ef4b930 100644 --- a/linphone-app/src/components/chat-events/ChatMessageModel.hpp +++ b/linphone-app/src/components/chat-events/ChatMessageModel.hpp @@ -135,6 +135,7 @@ public: Q_PROPERTY(QString fromDisplayName READ getFromDisplayName CONSTANT) + Q_PROPERTY(QString fromSipAddress READ getFromSipAddress CONSTANT) Q_PROPERTY(QString toDisplayName READ getToDisplayName CONSTANT) Q_PROPERTY(ContactModel * contactModel READ getContactModel CONSTANT) @@ -159,6 +160,7 @@ public: //---------------------------------------------------------------------------- QString getFromDisplayName() const; + QString getFromSipAddress() const; QString getToDisplayName() const; ContactModel * getContactModel() const; bool isEphemeral() const; diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index cd39a9075..45700dbec 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -654,19 +654,21 @@ void ChatRoomModel::onIsComposingReceived(const std::shared_ptrgetLastUpdateTime())); } void ChatRoomModel::onMessageReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & message){ setUnreadMessagesCount(chatRoom->getUnreadMessagesCount()); + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onNewEvent(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ if( eventLog->getType() == linphone::EventLog::Type::ConferenceCallEnd ){ setMissedCallsCount(mMissedCallsCount+1); - setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); }else if( eventLog->getType() == linphone::EventLog::Type::ConferenceCreated ){ emit fullPeerAddressChanged(); } + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onChatMessageReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog) { @@ -688,6 +690,7 @@ void ChatRoomModel::onChatMessageSending(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onParticipantAdded(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ @@ -695,6 +698,7 @@ void ChatRoomModel::onParticipantAdded(const std::shared_ptr auto e = std::find(events.begin(), events.end(), eventLog); if( e != events.end() ) insertNotice(*e); + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantAdded(chatRoom, eventLog); emit fullPeerAddressChanged(); } @@ -704,16 +708,19 @@ void ChatRoomModel::onParticipantRemoved(const std::shared_ptrgetLastUpdateTime())); emit participantRemoved(chatRoom, eventLog); emit fullPeerAddressChanged(); } void ChatRoomModel::onParticipantAdminStatusChanged(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantAdminStatusChanged(chatRoom, eventLog); emit isMeAdminChanged(); // It is not the case all the time but calling getters is not a heavy request } void ChatRoomModel::onStateChanged(const std::shared_ptr & chatRoom, linphone::ChatRoom::State newState){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit stateChanged(getState()); } @@ -722,21 +729,26 @@ void ChatRoomModel::onSecurityEvent(const std::shared_ptr & auto e = std::find(events.begin(), events.end(), eventLog); if( e != events.end() ) insertNotice(*e); + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit securityLevelChanged((int)chatRoom->getSecurityLevel()); } void ChatRoomModel::onSubjectChanged(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog) { + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit subjectChanged(getSubject()); emit usernameChanged(); } void ChatRoomModel::onUndecryptableMessageReceived(const std::shared_ptr & chatRoom, const std::shared_ptr & message){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onParticipantDeviceAdded(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantDeviceAdded(chatRoom, eventLog); } void ChatRoomModel::onParticipantDeviceRemoved(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantDeviceRemoved(chatRoom, eventLog); } @@ -752,6 +764,7 @@ void ChatRoomModel::onConferenceJoined(const std::shared_ptr insertNotice(*e); } setUnreadMessagesCount(mChatRoom->getUnreadMessagesCount()); // Update message count. In the case of joining conference, the conference id was not valid thus, the missing count was not about the chat room but a global one. + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit usernameChanged(); emit conferenceJoined(chatRoom, eventLog); emit hasBeenLeftChanged(); @@ -769,6 +782,7 @@ void ChatRoomModel::onConferenceLeft(const std::shared_ptr & if(e != events.end() ) insertNotice(*e); } + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit conferenceLeft(chatRoom, eventLog); emit hasBeenLeftChanged(); } @@ -779,18 +793,23 @@ void ChatRoomModel::onEphemeralEvent(const std::shared_ptr & auto e = std::find(events.begin(), events.end(), eventLog); if(e != events.end() ) insertNotice(*e); + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onEphemeralMessageTimerStarted(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onEphemeralMessageDeleted(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onConferenceAddressGeneration(const std::shared_ptr & chatRoom){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); } void ChatRoomModel::onParticipantRegistrationSubscriptionRequested(const std::shared_ptr & chatRoom, const std::shared_ptr & participantAddress){ + setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantRegistrationSubscriptionRequested(chatRoom, participantAddress); } diff --git a/linphone-app/src/components/timeline/TimelineListModel.cpp b/linphone-app/src/components/timeline/TimelineListModel.cpp index 2ee30a8c9..421ce8314 100644 --- a/linphone-app/src/components/timeline/TimelineListModel.cpp +++ b/linphone-app/src/components/timeline/TimelineListModel.cpp @@ -65,7 +65,7 @@ void TimelineListModel::update(){ void TimelineListModel::selectAll(const bool& selected){ for(auto it = mTimelines.begin() ; it != mTimelines.end() ; ++it) - (*it)->mSelected = selected; + (*it)->setSelected(selected); } int TimelineListModel::rowCount (const QModelIndex &) const { return mTimelines.count(); @@ -275,6 +275,7 @@ void TimelineListModel::updateTimelines () { } void TimelineListModel::add (std::shared_ptr timeline){ + connect(timeline->getChatRoomModel(), &ChatRoomModel::lastUpdateTimeChanged, this, &TimelineListModel::updated); int row = mTimelines.count(); beginInsertRows(QModelIndex(), row, row); mTimelines << timeline; diff --git a/linphone-app/ui/modules/Common/Form/Buttons/AbstractTextButton.qml b/linphone-app/ui/modules/Common/Form/Buttons/AbstractTextButton.qml index b59c32e61..a5bc36d04 100644 --- a/linphone-app/ui/modules/Common/Form/Buttons/AbstractTextButton.qml +++ b/linphone-app/ui/modules/Common/Form/Buttons/AbstractTextButton.qml @@ -28,6 +28,8 @@ Item { property alias text: button.text property bool enabled: true property bool showBorder : false + + property alias capitalization : button.capitalization signal clicked @@ -72,6 +74,7 @@ Item { Button { id: button + property int capitalization background: Rectangle { color: _getBackgroundColor() @@ -85,6 +88,7 @@ Item { font { bold: true pointSize: AbstractTextButtonStyle.text.pointSize + capitalization: button.capitalization } wrapMode: Text.WordWrap //elide: Text.ElideRight diff --git a/linphone-app/ui/modules/Common/Tooltip/TooltipArea.qml b/linphone-app/ui/modules/Common/Tooltip/TooltipArea.qml index 3b559c048..dd44105ed 100644 --- a/linphone-app/ui/modules/Common/Tooltip/TooltipArea.qml +++ b/linphone-app/ui/modules/Common/Tooltip/TooltipArea.qml @@ -36,7 +36,9 @@ MouseArea { delay: tooltipArea.delay parent: tooltipParent visible: _visible || force - width: tooltipParent.width>TooltipStyle.minWidth?tooltipParent.width:TooltipStyle.minWidth + width: Math.min(tooltip.implicitWidth, Math.max(tooltipParent.width, TooltipStyle.minWidth)) + + //tooltipParent.width>TooltipStyle.minWidth?tooltipParent.width:TooltipStyle.minWidth timeout: -1 diff --git a/linphone-app/ui/modules/Linphone/Chat/Chat.qml b/linphone-app/ui/modules/Linphone/Chat/Chat.qml index 1f5970b37..a7495540a 100644 --- a/linphone-app/ui/modules/Linphone/Chat/Chat.qml +++ b/linphone-app/ui/modules/Linphone/Chat/Chat.qml @@ -200,84 +200,9 @@ Rectangle { leftPadding: ChatStyle.composingText.leftPadding visible: composers.length > 0 && SettingsModel.chatEnabled wrapMode: Text.Wrap - - text:(composers.length==0?'':(composers.length>1 ? '%1 are typing...' : '%1 is typing...').arg(container.proxyModel.getDisplayNameComposers())) + //: '%1 is typing...' indicate that someone is composing in chat + text:(composers.length==0?'': qsTr('chatTyping','',composers.length).arg(container.proxyModel.getDisplayNameComposers())) } - - - /* GridView{ - height: visible ? ChatStyle.composingText.height*container.proxyModel.composers.length : 0 - width:parent.width - cellWidth: parent.width; cellHeight: ChatStyle.composingText.height - - property var composersLength : container.proxyModel.composers.length - onComposersLengthChanged:{ - model.clear() - console.log(container.proxyModel.composers) - for(var j = 0 ; j < container.proxyModel.composers.length ; ++j) { - console.log(container.proxyModel.composers[j]) - model.append({text:container.proxyModel.composers[j]}) - } - } - model: ListModel{} - delegate:Rectangle{ - height:ChatStyle.composingText.height - width:parent.width - color:"red" - } - }*/ - - - /* - Column{ - height: 100 *container.proxyModel.composers.length - width:parent.width - onHeightChanged: { - composerRepeater.model = [] - composerRepeater.model = container.proxyModel.composers - } - Repeater{ - id:composerRepeater - model:["toto"] - Rectangle{ - height:100 - width:parent.width - color:"red" - } - } - }*/ - - - /* - Column{ - height: visible ? ChatStyle.composingText.height*container.proxyModel.composers.length : 0 - width:parent.width - visible:SettingsModel.chatEnabled - onHeightChanged: { - composers.clear() - composerRepeater.model = [] - composerRepeater.model = container.proxyModel.composers - } - Repeater{ - id:composerRepeater - model:ListModel{ - id:composers - } - onModelChanged: console.log(container.proxyModel.composers.length) - - Text { - color: ChatStyle.composingText.color - font.pointSize: ChatStyle.composingText.pointSize - height: visible ? ChatStyle.composingText.height : 0 - - leftPadding: ChatStyle.composingText.leftPadding - visible: text.length > 0 && SettingsModel.chatEnabled - - text: modelData + ' ' +'is typing...' - Component.onCompleted: console.log(text + "=>" +width+"/"+height+" : "+visible) - } - } - }*/ } // ------------------------------------------------------------------------- diff --git a/linphone-app/ui/modules/Linphone/Chat/IncomingMessage.qml b/linphone-app/ui/modules/Linphone/Chat/IncomingMessage.qml index b59a625e7..cb697cb25 100644 --- a/linphone-app/ui/modules/Linphone/Chat/IncomingMessage.qml +++ b/linphone-app/ui/modules/Linphone/Chat/IncomingMessage.qml @@ -9,63 +9,69 @@ import LinphoneUtils 1.0 // ============================================================================= RowLayout { - implicitHeight: message.height - spacing: 0 - - Item { - Layout.alignment: Qt.AlignTop - Layout.preferredHeight: ChatStyle.entry.lineHeight - Layout.preferredWidth: ChatStyle.entry.metaWidth - - Avatar { - anchors.centerIn: parent - height: ChatStyle.entry.message.incoming.avatarSize - image: $chatEntry.contactModel? $chatEntry.contactModel.vcard.avatar : '' //chat.sipAddressObserver.contact ? chat.sipAddressObserver.contact.vcard.avatar : '' - username: $chatEntry.fromDisplayName - - width: ChatStyle.entry.message.incoming.avatarSize - - // The avatar is only visible for the first message of a incoming messages sequence. - visible: { - if (index <= 0) { - return true // 1. First message, so visible. - } - - var previousEntry = proxyModel.data(proxyModel.index(index - 1, 0)) - if (!previousEntry) { - return true - } - - // 2. Previous entry is a call event. => Visible. - // 3. I have sent a message before my contact. => Visible. - // 4. One hour between two incoming messages. => Visible. - return previousEntry.type !== ChatRoomModel.MessageEntry || - previousEntry.isOutgoing || - $chatEntry.timestamp.getTime() - previousEntry.timestamp.getTime() > 3600 - } - } - } - - Message { - id: message - - Layout.fillWidth: true - - // Not a style. Workaround to avoid a 0 width. - // Arbitrary value. - Layout.minimumWidth: 1 - - backgroundColor: ChatStyle.entry.message.incoming.backgroundColor - color: ChatStyle.entry.message.incoming.text.color - pointSize: ChatStyle.entry.message.incoming.text.pointSize - - ActionButton { - height: ChatStyle.entry.lineHeight - icon: 'delete' - iconSize: ChatStyle.entry.deleteIconSize - visible: isHoverEntry() - - onClicked: removeEntry() - } - } + id:mainRow + implicitHeight: message.height + spacing: 0 + + Item { + Layout.alignment: Qt.AlignTop + Layout.preferredHeight: ChatStyle.entry.lineHeight + Layout.preferredWidth: ChatStyle.entry.metaWidth + + Avatar { + id:avatar + anchors.centerIn: parent + height: ChatStyle.entry.message.incoming.avatarSize + image: $chatEntry.contactModel? $chatEntry.contactModel.vcard.avatar : '' //chat.sipAddressObserver.contact ? chat.sipAddressObserver.contact.vcard.avatar : '' + username: $chatEntry.fromDisplayName + + width: ChatStyle.entry.message.incoming.avatarSize + + // The avatar is only visible for the first message of a incoming messages sequence. + visible: { + if (index <= 0) { + return true // 1. First message, so visible. + } + + var previousEntry = proxyModel.data(proxyModel.index(index - 1, 0)) + if (!previousEntry) { + return true + } + + // 2. Previous entry is a call event. => Visible. + // 3. I have sent a message before my contact. => Visible. + // 4. One hour between two incoming messages. => Visible. + return previousEntry.type !== ChatRoomModel.MessageEntry || + previousEntry.isOutgoing || + $chatEntry.timestamp.getTime() - previousEntry.timestamp.getTime() > 3600 + } + TooltipArea{ + text:avatar.username+'\n'+$chatEntry.fromSipAddress + tooltipParent:mainRow + } + } + } + + Message { + id: message + + Layout.fillWidth: true + + // Not a style. Workaround to avoid a 0 width. + // Arbitrary value. + Layout.minimumWidth: 1 + + backgroundColor: ChatStyle.entry.message.incoming.backgroundColor + color: ChatStyle.entry.message.incoming.text.color + pointSize: ChatStyle.entry.message.incoming.text.pointSize + + ActionButton { + height: ChatStyle.entry.lineHeight + icon: 'delete' + iconSize: ChatStyle.entry.deleteIconSize + visible: isHoverEntry() + + onClicked: removeEntry() + } + } } diff --git a/linphone-app/ui/modules/Linphone/Chat/Message.qml b/linphone-app/ui/modules/Linphone/Chat/Message.qml index 36a67405c..fba910e19 100644 --- a/linphone-app/ui/modules/Linphone/Chat/Message.qml +++ b/linphone-app/ui/modules/Linphone/Chat/Message.qml @@ -124,7 +124,8 @@ Item { onTriggered: TextToSpeech.say($chatEntry.content) } MenuItem { - text: 'Delivery Status' + //: 'Delivery status' : Item menu that lead to IMDN of a message + text: qsTr('menuDeliveryStatus') iconMenu: 'menu_imdn_info' iconSizeMenu: 17 iconLayoutDirection: Qt.RightToLeft @@ -133,7 +134,8 @@ Item { onTriggered: deliveryLayout.visible = !deliveryLayout.visible } MenuItem { - text: 'Delete' + //: 'Delete' : Item menu to delete a message + text: qsTr('menuDelete') iconMenu: 'menu_delete' iconSizeMenu: 17 iconLayoutDirection: Qt.RightToLeft @@ -191,21 +193,23 @@ Item { } }*/ model: $chatEntry.getProxyImdnStates() - property var i18n: [ - 'Envoyé à %1 - %2', // LinphoneEnums.ChatMessageStateDelivered - 'Reçu par %1 - %2', // LinphoneEnums.ChatMessageStateDeliveredToUser - 'Lu par %1 - %2' , // LinphoneEnums.ChatMessageStateDisplayed - "%1 n'a encore rien reçu" // LinphoneEnums.ChatMessageStateNotDelivered - ] function getText(state){ if(state == LinphoneEnums.ChatMessageStateDelivered) - return i18n[0] + //: 'Send to %1 - %2' Little message to indicate the state of a message + //~ Context %1 is someone, %2 is a date/time. The state is that the message has been sent but not received. + return qsTr('deliveryDelivered') else if(state == LinphoneEnums.ChatMessageStateDeliveredToUser) - return i18n[1] + //: 'Retrieved by %1 - %2' Little message to indicate the state of a message + //~ Context %1 is someone, %2 is a date/time. The state is that the message has been retrieved + return qsTr('deliveryDeliveredToUser') else if(state == LinphoneEnums.ChatMessageStateDisplayed) - return i18n[2] + //: 'Read by %1 - %2' Little message to indicate the state of a message + //~ Context %1 is someone, %2 is a date/time. The state that the message has been read. + return qsTr('deliveryDisplayed') else if(state == LinphoneEnums.ChatMessageStateNotDelivered) - return i18n[3] + //: "%1 have nothing received" Little message to indicate the state of a message + //~ Context %1 is someone. The state is that the message hasn't been delivered. + return qsTr('deliveryNotDelivered') else return '' } delegate:Text{ diff --git a/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml b/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml index cca72e11f..60cf7e031 100644 --- a/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml +++ b/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml @@ -90,8 +90,13 @@ Rectangle { Layout.leftMargin: TimelineStyle.legend.leftMargin color: TimelineStyle.legend.color font.pointSize: TimelineStyle.legend.pointSize - //height: parent.height - text: 'Filter : ' +(timeline.model.filterFlags == 0 || timeline.model.filterFlags == TimelineProxyModel.AllChatRooms?'All' : 'Custom') + //: A title for filtering mode. + text: qsTr('timelineFilter')+' : ' + +(timeline.model.filterFlags == 0 || timeline.model.filterFlags == TimelineProxyModel.AllChatRooms + //: 'All' The mode for timelines filtering. + ? qsTr('timelineFilterAll') + //: 'Custom' The mode for timelines filtering. + : qsTr('timelineFilterCustom')) verticalAlignment: Text.AlignVCenter } @@ -146,31 +151,41 @@ Rectangle { } CheckBoxText { id:simpleFilter - text:'Simple rooms' + //: 'Simple rooms' : Filter item + //~ Mode Selecting it will show all simple romms + text:qsTr('timelineFilterSimpleRooms') property var value : (checked?TimelineProxyModel.SimpleChatRoom:0) onValueChanged: timeline.model.filterFlags = filterChoices.getFilterFlags() } CheckBoxText { id:secureFilter - text:'Secure rooms' + //: 'Secure rooms' : Filter item + //~ Mode Selecting it will show all secure rooms + text:qsTr('timelineFilterSecureRooms') property var value : (checked?TimelineProxyModel.SecureChatRoom:0) onValueChanged: timeline.model.filterFlags = filterChoices.getFilterFlags() } CheckBoxText { id:groupFilter - text:'Chat groups' + //: 'Chat groups' : Filter item + //~ Mode Selecting it will show all chat groups (with more than one participant) + text:qsTr('timelineFilterChatGroups') property var value : (checked?TimelineProxyModel.GroupChatRoom:0) onValueChanged: timeline.model.filterFlags = filterChoices.getFilterFlags() } CheckBoxText { id:secureGroupFilter - text:'Secure Chat Groups' + //: 'Secure Chat Groups' : Filter item + //~ Mode Selecting it will show all secure chat groups (with more than one participant) + text:qsTr('timelineFilterSecureChatGroups') property var value : (checked?TimelineProxyModel.SecureGroupChatRoom:0) onValueChanged: timeline.model.filterFlags = filterChoices.getFilterFlags() } CheckBoxText { id:ephemeralsFilter - text:'Ephemerals' + //: 'Ephemerals' : Filter item + //~ Mode Selecting it will show all chat rooms where the ephemeral mode has been enabled. + text:qsTr('timelineFilterEphemerals') property var value : (checked?TimelineProxyModel.EphemeralChatRoom:0) onValueChanged: timeline.model.filterFlags = filterChoices.getFilterFlags() } @@ -190,19 +205,20 @@ Rectangle { visible:false //color: ContactsStyle.bar.backgroundColor onVisibleChanged: timeline.model.filterText = (visible?searchBar.text : '') - - TextField { - id:searchBar - anchors { + + TextField { + id:searchBar + anchors { fill: parent margins: 7 - } + } Layout.fillWidth: true icon: 'search' - placeholderText: 'Search in the list' + //: 'Search in the list' : ths is a placeholder when searching something in the timeline list + placeholderText: qsTr('timelineSearchPlaceholderText') onTextChanged: timeline.model.filterText = text - } + } } // ------------------------------------------------------------------------- @@ -213,9 +229,6 @@ Rectangle { id: view Layout.fillHeight: true Layout.fillWidth: true - //anchors.left:parent.left - //anchors.right:parent.right - //anchors.bottom:parent.bottom currentIndex: -1 delegate: Item { @@ -234,8 +247,6 @@ Rectangle { : TimelineStyle.contact.backgroundColor.b ) displayUnreadMessageCount: SettingsModel.chatEnabled - //entry: $timelineEntry - //entry: SipAddressesModel.getSipAddressObserver(modelData.fullPeerAddress, modelData.fullLocalAddress) entry: modelData.chatRoomModel sipAddressColor: isSelected ? TimelineStyle.contact.sipAddress.color.selected @@ -271,7 +282,6 @@ Rectangle { //timeline.model.unselectAll() modelData.selected = true view.currentIndex = index; - //timeline.entrySelected($timelineEntry.sipAddress, $timelineEntry.isSecure) } } Connections{ @@ -282,7 +292,6 @@ Rectangle { } } } - // onCountChanged: Logic.handleCountChanged(count) } } } diff --git a/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml b/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml index 963a9b66f..f62be9d8d 100644 --- a/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml +++ b/linphone-app/ui/modules/Linphone/View/ParticipantsView.qml @@ -229,7 +229,9 @@ ScrollableListView { Layout.fillHeight: true Layout.fillWidth: true showContactAddress: sipAddressesView.showContactAddress - statusText : showAdminStatus && modelData.adminStatus ? '(Admin)' : '' + //: '(Admin)' : One word for Admin(istrator) + //~ Context Little Header in one word for a column in participant + statusText : showAdminStatus && modelData.adminStatus ? qsTr('participantsAdminHeader') : '' entry: modelData diff --git a/linphone-app/ui/views/App/Main/Contacts.qml b/linphone-app/ui/views/App/Main/Contacts.qml index a881a08cb..e3bdf6c2d 100644 --- a/linphone-app/ui/views/App/Main/Contacts.qml +++ b/linphone-app/ui/views/App/Main/Contacts.qml @@ -197,24 +197,6 @@ ColumnLayout { CallsListModel.launchAudioCall, function (sipAddress) {CallsListModel.launchChat( sipAddress,0 )}, function (sipAddress) {CallsListModel.launchChat( sipAddress,1 )} - /* - function (sipAddress) { - CallsListModel.launchSecureChat(sipAddress) - window.setView('Conversation', { - chatRoomModel: CallsListModel.createSecureChat("", sipAddress), - //peerAddress: sipAddress, - //localAddress: AccountSettingsModel.sipAddress, - //fullPeerAddress: sipAddress, - //fullLocalAddress: AccountSettingsModel.fullSipAddress, - isSecure:1 - }) - - //Logic.manageAccounts() - window.attachVirtualWindow(Qt.resolvedUrl('Dialogs/ManageChatRoom.qml'), { - //window.setView('Dialogs/ManageChatRoom', { - participantAddress: sipAddress - }) - }*/ ] model: handlers diff --git a/linphone-app/ui/views/App/Main/Conversation.qml b/linphone-app/ui/views/App/Main/Conversation.qml index f01f55f70..e36ce98c3 100644 --- a/linphone-app/ui/views/App/Main/Conversation.qml +++ b/linphone-app/ui/views/App/Main/Conversation.qml @@ -70,7 +70,7 @@ ColumnLayout { //username: Logic.getUsername() username: chatRoomModel?chatRoomModel.username:Logic.getUsername() - visible: !groupChat.visible + visible: !groupChat.visible } Icon { @@ -107,7 +107,9 @@ ColumnLayout { } Text{ anchors.verticalCenter: parent.verticalCenter - text:'Admin' + //: 'Admin' : Admin(istrator) + //~ Context One word title for describing the current admin status + text: qsTr('adminStatus') color:"#9FA6AB" font.pointSize: Units.dp * 8 } @@ -248,7 +250,8 @@ ColumnLayout { y:mainBar.height menuStyle : MenuStyle.aux2 MenuItem{ - text:'Groupe informations' + //: 'Group informations' : Item menu to get information about the chat room + text: qsTr('conversationMenuGroupInformations') iconMenu: (hovered ? 'menu_infos_selected' : 'menu_infos') iconSizeMenu: 25 menuItemStyle : MenuItemStyle.aux2 @@ -264,7 +267,8 @@ ColumnLayout { color:Colors.u.color } MenuItem{ - text:"Conversation's devices" + //: "Conversation's devices" : Item menu to get all participant devices of the chat room + text: qsTr('conversationMenuDevices') iconMenu: (hovered ? 'menu_devices_selected' : 'menu_devices' ) iconSizeMenu: 25 menuItemStyle : MenuItemStyle.aux2 @@ -280,7 +284,8 @@ ColumnLayout { color:Colors.u.color } MenuItem{ - text:'Ephemeral messages' + //: 'Ephemeral messages' : Item menu to enable ephemeral mode + text: qsTr('conversationMenuEphemeral') iconMenu: (hovered ? 'menu_ephemeral_selected' : 'menu_ephemeral') iconSizeMenu: 25 menuItemStyle : MenuItemStyle.aux2 diff --git a/linphone-app/ui/views/App/Main/Dialogs/EphemeralChatRoom.qml b/linphone-app/ui/views/App/Main/Dialogs/EphemeralChatRoom.qml index 24bcaea89..f40e62de7 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/EphemeralChatRoom.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/EphemeralChatRoom.qml @@ -17,17 +17,18 @@ DialogPlus { id:dialog buttons: [ TextButtonA { - text: 'CANCEL' - + //: 'cancel' : button text for cancelling operation + text: qsTr('cancelButton') + capitalization: Font.AllUppercase onClicked:{ exit(0) } }, TextButtonB { - text: 'START' + //: 'start' : button text to start ephemeral mode + text: qsTr('startButton') onClicked: { - console.log("Timer selected : " +dialog.timer) if(dialog.timer=== 0) chatRoomModel.ephemeralEnabled = false else { @@ -39,8 +40,8 @@ DialogPlus { } ] flat : true - - title: "Ephemeral messages" + //: "Ephemeral messages" : Popup title for ephemerals + title: qsTr('ephemeralTitle') showCloseCross:false property ChatRoomModel chatRoomModel @@ -74,8 +75,12 @@ DialogPlus { maximumLineCount: 4 wrapMode: Text.Wrap - text: 'New messages will be deleted on both ends once it has been read by your contact. Select a timeout.' - +(!chatRoomModel.canBeEphemeral?'\nEphemeral message is only supported in conference based chat room!':'') + //: 'New messages will be deleted on both ends once it has been read by your contact. Select a timeout.' + //~ Context Explanation for ephemerals + text: qsTr('ephemeralText') + //: '\nEphemeral message is only supported in conference based chat room!' + //~ Context Warning about not being in conference based chat room. + +(!chatRoomModel.canBeEphemeral?'\n'+qsTr('ephemeralNotInConference!'):'') verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter font.pointSize: Units.dp * 11 @@ -100,22 +105,40 @@ DialogPlus { return 4; else if( chatRoomModel.ephemeralLifetime <= 604800 ) return 5; - model:ListModel{ - ListElement{ text:'Disabled' - value:0} - ListElement{ text:'1 minute' - value:60} - ListElement{ text:'1 heure' - value:3600} - ListElement{ text:'1 jour' - value:86400} - ListElement{ text:'3 jours' - value:259200} - ListElement{ text:'1 semaine' - value:604800} - } + else + return 5; + /* + property var fields : [ + //: 'Disabled' + qsTr('disabled'), + //: '%1 minute' + qsTr('nMinute', '', 1).arg(1), + //: '%1 hour' + qsTr('nHour', '', 1).arg(1), + //: '%1 day' + qsTr('nDay', '', 1).arg(1), + //: '%1 days' + qsTr('nDay', '', 3).arg(3), + //: '%1 week' + qsTr('nWeek', '', 1).arg(1) + ] + */ + model:[ + //: 'Disabled' + {text:qsTr('disabled'), value:0}, + //: '%1 minute' + { text:qsTr('nMinute', '', 1).arg(1), value:60}, + //: '%1 hour' + { text:qsTr('nHour', '', 1).arg(1), value:3600}, + //: '%1 day' + { text:qsTr('nDay', '', 1).arg(1), value:86400}, + //: '%1 days' + { text:qsTr('nDay', '', 3).arg(3), value:259200}, + //: '%1 week' + { text:qsTr('nWeek', '', 1).arg(1), value:604800} + ] - onActivated: dialog.timer = model.get(index).value + onActivated: dialog.timer = model[index].value visible: chatRoomModel.canBeEphemeral } diff --git a/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml b/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml index d96acabfa..aba2bb68a 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/InfoChatRoom.qml @@ -17,7 +17,9 @@ DialogPlus { id:dialog buttons: [ TextButtonA { - text: 'QUITTER LE GROUPE' + //: 'Exit group' : Button label + text: qsTr('quitGroupButton') + capitalization: Font.AllUppercase textButtonStyle: InfoChatRoomStyle.leaveButton showBorder: true onClicked:{ @@ -29,7 +31,9 @@ DialogPlus { Layout.fillWidth: true }, TextButtonB { - text: 'OK' + //: 'OK' : Button label + text: qsTr('ok') + capitalization: Font.AllUppercase onClicked: { if(!chatRoomModel.hasBeenLeft) @@ -40,7 +44,8 @@ DialogPlus { ] flat : true showCloseCross: true - + //: "Group information" : Popup title. + //~ This popup display data about the current chat room title: "Group information" property ChatRoomModel chatRoomModel @@ -73,8 +78,11 @@ DialogPlus { visible: dialog.adminMode && chatRoomModel.canHandleParticipants maxMenuHeight: MainWindowStyle.searchBox.maxHeight - placeholderText: 'Ajouter des participants' - tooltipText: "Rechercher des participants dans votre liste de contact pour les inviter dans le groupe. L'ajout est effectif une fois le formulaire validé." + //: 'Add Participants' : Placeholder in a search bar for adding participant to the chat room + placeholderText: qsTr('addParticipantPlaceholder') + //: 'Search participants in your contact list in order to invite them into the chat room.' + //~ Tooltip Explanation for inviting the selected participants into chat room + tooltipText: qsTr('addParticipantTooltip') actions:[{ icon: 'add_participant', secure:0, @@ -104,7 +112,8 @@ DialogPlus { Text{ Layout.topMargin: InfoChatRoomStyle.results.title.topMargin Layout.leftMargin: InfoChatRoomStyle.results.title.leftMargin - text:'Liste des participants' + //: 'Participant list' + text:qsTr('participantList') color: InfoChatRoomStyle.results.title.color font.pointSize:InfoChatRoomStyle.results.title.pointSize font.weight: InfoChatRoomStyle.results.title.weight @@ -114,7 +123,9 @@ DialogPlus { Layout.rightMargin: InfoChatRoomStyle.results.header.rightMargin Layout.alignment: Qt.AlignRight | Qt.AlignBottom //Layout.topMargin: InfoChatRoomStyle.results.topMargin - text : 'Admin' + //: 'Admin' : Admin(istrator) + //~ one word for admin status + text : qsTr('adminStatus') color: InfoChatRoomStyle.results.header.color font.pointSize: InfoChatRoomStyle.results.header.pointSize diff --git a/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml b/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml index 0d861a155..1d970c69d 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/InfoEncryption.qml @@ -17,14 +17,19 @@ DialogPlus { id:dialog buttons: [ TextButtonA { - text: 'CANCEL' - //visible: addressToCall != '' + //: 'CANCEL' : button text for cancelling operation + text: qsTr('cancelButton') + capitalization: Font.AllUppercase onClicked:{ exit(0) } }, TextButtonB { - text: (addressToCall != '' ? 'CALL' : 'OK') + //: 'CALL' : Button that lead to a call + text: (addressToCall != '' ? qsTr('callButton') + //: 'OK' : Button that validate the popup to be redirected to the device list + : qsTr('okButton') + ) textButtonStyle: InfoEncryptionStyle.okButton onClicked: { if(addressToCall != ''){ @@ -35,8 +40,8 @@ DialogPlus { } ] flat : true - - title: "End-to-end encrypted" + //: 'End-to-end encrypted' Popup title about encryption information. + title: qsTr('infoEncryptionTitle') showCloseCross:false property int securityLevel @@ -76,11 +81,12 @@ DialogPlus { color: Colors.d.color wrapMode: Text.Wrap - - text: "Instant messages are end-to-end encrypted in secured conversations. It is possible to upgrade the security level of a conversation by authentificating participants." + //: "Instant messages are end-to-end encrypted in secured conversations. It is possible to upgrade the security level of a conversation by authentificating participants." + //~ Context Explanation of Encryption + text: qsTr('encryptionExplanation') } Text{ - Layout.fillWidth: true + Layout.fillWidth: true Layout.alignment: Qt.AlignCenter Layout.leftMargin: 10 Layout.rightMargin: 10 @@ -91,7 +97,9 @@ DialogPlus { color: Colors.d.color wrapMode: Text.Wrap - text :"To do so, call the contact and follow the authentification process." + //: "To do so, call the contact and follow the authentification process." + //~ Context Explanation process + text: qsTr('encryptionProcessExplanation') } } } \ No newline at end of file diff --git a/linphone-app/ui/views/App/Main/Dialogs/ManageChatRoom.qml b/linphone-app/ui/views/App/Main/Dialogs/ManageChatRoom.qml deleted file mode 100644 index fb644e96f..000000000 --- a/linphone-app/ui/views/App/Main/Dialogs/ManageChatRoom.qml +++ /dev/null @@ -1,142 +0,0 @@ -import QtQuick 2.7 - -import Common 1.0 -import Linphone 1.0 -import Utils 1.0 - -import App.Styles 1.0 - - -// ============================================================================= - -DialogPlus { - property ChatRoomModel chatRoomModel - property var participantAddress : (chatRoomModel?chatRoomModel.getParticipants(): null) - - buttons: [ - TextButtonA { - text: 'cancel' - - onClicked: exit(0) - }, - TextButtonB { - text: 'del' - visible:chatRoomModel - - onClicked: { - if(chatRoomModel){ - chatRoomModel.leaveChatRoom() - exit(0) - } - } - }, - TextButtonB { - text: 'ok' - - onClicked: { - if(chatRoomModel && CallsListModel.createSecureChat(subject.text, participantAddress)) - exit(0) - } - } - ] - - buttonsAlignment: Qt.AlignCenter - - height: ManageAccountsStyle.height + 30 - width: ManageAccountsStyle.width - - // --------------------------------------------------------------------------- - - Form { - anchors.fill: parent - orientation: Qt.Vertical - - FormLine { - - FormGroup { - label: 'Details' - - FormLine { - FormGroup { - label: 'Subject*' - TextField { - id:subject - placeholderText :"Subject" - text:(chatRoomModel?chatRoomModel.getSubject():'') - Keys.onReturnPressed: nextItemInFocusChain().forceActiveFocus() - error : text == '' - TooltipArea{ - text : 'Current subject of the ChatRoom. It cannot be empty' - } - } - } - } - } - } - - - FormLine { - FormGroup { - label: 'Participants : '+participantAddress - /* -ScrollableListViewField { -width: parent.width -height: ManageAccountsStyle.accountSelector.height - -radius: 0 - -ScrollableListView { -id: view - -property string textRole: 'fullSipAddress' // Used by delegate. - -anchors.fill: parent -model: AccountSettingsModel.accounts - -onModelChanged: currentIndex = Utils.findIndex(AccountSettingsModel.accounts, function (account) { -return account.sipAddress === AccountSettingsModel.sipAddress -}) - -delegate: CommonItemDelegate { -id: item -container: view -flattenedModel: modelData -itemIcon: ''//Start with no error and let some time before getting status with the below timer -width: parent.width - -Timer{// This timer is used to synchronize registration state by proxy, without having to deal with change signals -interval: 1000; running: item.visible; repeat: true -onTriggered:itemIcon= Logic.getItemIcon(flattenedModel) -} - -ActionButton { -icon: 'options' -iconSize: 30 -anchors.fill: parent -visible:false -//TODO handle click and jump to proxy config settings -} - -onClicked: { -container.currentIndex = index -if(flattenedModel.proxyConfig) -AccountSettingsModel.setDefaultProxyConfig(flattenedModel.proxyConfig) -else -AccountSettingsModel.setDefaultProxyConfig() -} - -MessageCounter { -anchors.fill: parent -count: flattenedModel.unreadMessageCount+flattenedModel.missedCallCount -} -} -} -} -*/ - } - - } - - } -} - diff --git a/linphone-app/ui/views/App/Main/Dialogs/NewChatRoom.qml b/linphone-app/ui/views/App/Main/Dialogs/NewChatRoom.qml index e4dea5fa0..9a19527a4 100644 --- a/linphone-app/ui/views/App/Main/Dialogs/NewChatRoom.qml +++ b/linphone-app/ui/views/App/Main/Dialogs/NewChatRoom.qml @@ -22,13 +22,17 @@ DialogPlus { buttons: [ TextButtonA { - text: 'CANCEL' + //: 'Cancel' : Cancel button + text: qsTr('cancelButton') + capitalization: Font.AllUppercase onClicked: exit(0) }, TextButtonB { //enabled: toAddView.count >= conferenceManager.minParticipants - text: 'LANCER' + //: 'Launch' : Start button + text: qsTr('startButton') + capitalization: Font.AllUppercase onClicked: { if(CallsListModel.createChatRoom(subject.text, secureSwitch.checked, selectedParticipants.getParticipants() )) @@ -38,7 +42,8 @@ DialogPlus { ] buttonsAlignment: Qt.AlignRight - title:'Lancer un chat de groupe' + //: 'Start a chat room' : Title of a popup about creation of a chat room + title:qsTr('newChatRoomTitle') height: 500 width: 800 @@ -70,7 +75,8 @@ DialogPlus { spacing:4 Text { Layout.fillWidth: true - text:'Would you like to encrypt your chat?' + //: 'Would you like to encrypt your chat?' : Ask about setting the chat room as secured. + text:qsTr('askEncryption') color: Colors.g.color font.pointSize: Units.dp * 11 font.weight: Font.DemiBold @@ -94,7 +100,6 @@ DialogPlus { anchors.leftMargin : 5 anchors.verticalCenter: parent.verticalCenter width:50 - //Layout.preferredWidth: 50 enabled:true onClicked: checked = !checked indicatorStyle: SwitchStyle.aux @@ -121,7 +126,8 @@ DialogPlus { spacing:10 Text{ textFormat: Text.RichText - text :'Nom du groupe' +'*' + //: 'Subject' : Label of a text field about the subject of the chat room + text :qsTr('subjectLabel') +'*' color: Colors.g.color font.pointSize: Units.dp * 11 font.weight: Font.DemiBold @@ -130,12 +136,14 @@ DialogPlus { id:subject Layout.fillWidth: true Layout.rightMargin: 15 - placeholderText :"Nommer le groupe" + //: 'Give a subject' : Placeholder in a form about setting a subject + placeholderText :'Give a subject' text:(chatRoomModel?chatRoomModel.getSubject():'') Keys.onReturnPressed: nextItemInFocusChain().forceActiveFocus() - //error : text == '' TooltipArea{ - text : 'Current subject of the ChatRoom. It cannot be empty' + //: 'Current subject of the Chat Room. It cannot be empty' + //~ Tooltip Explanation about the subject of the chat room + text : qsTr('subjectTooltip') } } @@ -146,10 +154,10 @@ DialogPlus { ColumnLayout { Layout.fillWidth: true Layout.fillHeight: true - //Layout.preferredHeight: 200 spacing:20 Text{ - text :'Contacts récents' + //: 'Last contacts' : Header for showing last contacts + text :'Last contacts' color: Colors.g.color font.pointSize: Units.dp * 11 font.weight: Font.DemiBold @@ -163,7 +171,6 @@ DialogPlus { id:lastContacts property int reloadCount : 0 model:TimelineListModel.getLastChatRooms(5) - //[{username:'Danyl Robertson'}, {username:'Toto harrytop'}] delegate : Item{ Layout.fillHeight: true @@ -184,25 +191,11 @@ DialogPlus { anchors.topMargin: -5 visible: UtilsCpp.hasCapability(modelData.sipAddress, LinphoneEnums.FriendCapabilityLimeX3Dh) icon: 'secure_on' - iconSize:20/* - Rectangle{ - id:secureMask - anchors.fill:parent - color:'white' - opacity: 0.5 - visible: smartSearchBar.isIgnored(modelData.sipAddress) - Connections{// Workaround for refreshing data on events - target:lastContacts - onReloadCountChanged: { - secureMask.visible=smartSearchBar.isIgnored(modelData.sipAddress) - } - } - }*/ + iconSize:20 } } Text{ Layout.fillHeight: true - //Layout.maximumHeight: 100 Layout.preferredWidth: 60 Layout.alignment: Qt.AlignVCenter | Qt.AlignTop maximumLineCount: 5 @@ -252,48 +245,6 @@ DialogPlus { } } } - /* - ScrollableListViewField { - Layout.fillHeight: true - Layout.fillWidth: true - - readOnly: toAddView.count >= conferenceManager.maxParticipants - - SipAddressesView { - anchors.fill: parent - - actions: [{ - icon: 'transfer', - handler: function (entry) { - conferenceHelperModel.toAdd.addToConference(entry.sipAddress) - } - }] - - genSipAddress: filter.text - - model: ConferenceHelperModel { - id: conferenceHelperModel - } - - onEntryClicked: actions[0].handler(entry) - } - } - } - } -*/ - // ------------------------------------------------------------------------- - // Separator. - // ------------------------------------------------------------------------- - /* - Rectangle { - Layout.fillHeight: true - Layout.leftMargin: ConferenceManagerStyle.columns.separator.leftMargin - Layout.preferredWidth: ConferenceManagerStyle.columns.separator.width - Layout.rightMargin: ConferenceManagerStyle.columns.separator.rightMargin - - color: ConferenceManagerStyle.columns.separator.color - } -*/ // ------------------------------------------------------------------------- // See and remove selected addresses. // ------------------------------------------------------------------------- @@ -324,8 +275,10 @@ DialogPlus { showHeader:false maxMenuHeight: MainWindowStyle.searchBox.maxHeight - placeholderText: 'toto' - tooltipText: 'tooltip' + //: 'Select participants' : Placeholder for a search on participant to add them in selection. + placeholderText: qsTr('participantSelectionPlaceholder') + //: 'Search in your contacts or add a custom one to the chat room.' + tooltipText: qsTr('participantSelectionTooltip') actions:[{ icon: 'add_participant', secure:0, @@ -340,28 +293,16 @@ DialogPlus { selectedParticipants.add(entry) smartSearchBar.addAddressToIgnore(entry); ++lastContacts.reloadCount - //selectedParticipants.append({$sipAddress:entry}) } - //resultExceptions: selectedParticipants } - - /* - TextField { - id: filter - - Layout.fillWidth: true - - icon: 'search' - - onTextChanged: conferenceHelperModel.setFilter(text) - } - */ Text{ Layout.preferredHeight: 20 Layout.rightMargin: 65 Layout.alignment: Qt.AlignRight | Qt.AlignBottom Layout.topMargin: ConferenceManagerStyle.columns.selector.spacing - text : 'Admin' + //: 'Admin' : Admin(istrator) + //~ one word for admin status + text : qsTr('adminStatus') color: Colors.g.color font.pointSize: Units.dp * 11 @@ -390,7 +331,9 @@ DialogPlus { actions: [{ icon: 'remove_participant', - tooltipText: 'Remove this participant from the selection', + //: 'Remove this participant from the selection' : Explanation abo^ut removing participant from a selection + //~ Tooltip This is a tooltip + tooltipText: qsTr('removeParticipantSelection'), handler: function (entry) { smartSearchBar.removeAddressToIgnore(entry.sipAddress) selectedParticipants.remove(entry) @@ -405,81 +348,19 @@ DialogPlus { chatRoomModel:null } - onEntryClicked: actions[0].handler(entry) - } } - } - } - - /* - SearchBox{ - id: searchBox - anchors.left:parent.left - anchors.right:parent.right - anchors.top:parent.top - anchors.topMargin: 30 - anchors.leftMargin:15 - anchors.rightMargin: 15 - - placeholderText:'Search contact or enter SIP address' - - entryHeight: 200 - SipAddressesView { - id: view - actions: [{ - icon: 'add', - secure:0, - handler: function (entry) { - //searchBox.closeMenu() - //searchBox.launchVideoCall(entry.sipAddress) - }, - visible: true - }] - genSipAddress: searchBox.filter - - model: SearchSipAddressesModel {} - } - - } - ScrollableListViewField { - anchors.top:search.bottom - anchors.bottom:parent.bottom - anchors.left:parent.left - anchors.right:parent.right - anchors.leftMargin:15 - anchors.rightMargin: 15 - anchors.topMargin: 15 - - - SipAddressesView { - id: toAddView - - anchors.fill: parent - - actions: [{ - icon: 'cancel', - handler: function (entry) { - //model.removeFromConference(entry.sipAddress) - } - }] - - //model: conferenceHelperModel.toAdd - - //onEntryClicked: actions[0].handler(entry) - } - } - }*/ Item{ Layout.fillWidth: true Layout.preferredHeight: 20 Text{ anchors.fill:parent textFormat: Text.RichText - text : '* Obligatoire' + //: 'Required' : Word relative to a star to explain that it is a requirement (Field form) + text : '* '+qsTr('requiredField') //font.weight: Font.DemiBold color: Colors.g.color font.pointSize: Units.dp * 8 diff --git a/linphone-app/ui/views/App/Main/MainWindow.qml b/linphone-app/ui/views/App/Main/MainWindow.qml index 3be33607b..ae3177b8b 100644 --- a/linphone-app/ui/views/App/Main/MainWindow.qml +++ b/linphone-app/ui/views/App/Main/MainWindow.qml @@ -271,7 +271,10 @@ ApplicationWindow { name: qsTr('contactsEntry') visible: SettingsModel.contactsEnabled - onSelected: setView('Contacts') + onSelected: { + timeline.model.unselectAll() + setView('Contacts') + } Icon{ anchors.right:parent.right anchors.verticalCenter: parent.verticalCenter diff --git a/linphone-app/ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml b/linphone-app/ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml index d77946da9..f8ec495e6 100644 --- a/linphone-app/ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml +++ b/linphone-app/ui/views/App/Settings/Dialogs/SettingsLdapEdit.qml @@ -57,6 +57,7 @@ DialogPlus { Keys.onReturnPressed: nextItemInFocusChain().forceActiveFocus() TooltipArea{ text : qsTr('displayNameTooltip')//'The display name of the server to be shown in the list' + //tooltipParent: dialog } } } @@ -79,6 +80,7 @@ DialogPlus { error : ldapData.serverFieldError TooltipArea{ text : qsTr('serverTooltip')//'LDAP Server. eg: ldap:/// for a localhost server or ldap://ldap.example.org/' + //tooltipParent: dialog } } } @@ -96,6 +98,7 @@ DialogPlus { onTextChanged: ldapData.bindDn= text TooltipArea{ text : qsTr('bindDNTooltip')//'The bind DN is the credential that is used to authenticate against an LDAP.\n eg: cn=ausername,ou=people,dc=bc,dc=com' + //tooltipParent: dialog } } } @@ -162,6 +165,7 @@ DialogPlus { onActivated: ldapData.verifyServerCertificates = index-1 TooltipArea{ text : qsTr('verifyTLSTooltip')//'Specify whether the tls server certificate must be verified when connecting to a LDAP server.' + //tooltipParent: dialog } } } @@ -187,6 +191,7 @@ DialogPlus { onTextChanged: ldapData.baseObject = text TooltipArea{ text : qsTr('baseObjectTooltip')//'BaseObject is a specification for LDAP Search Scopes that specifies that the Search Request should only be performed against the entry specified as the search base DN.\n\nNo entries below it will be considered.' + //tooltipParent: dialog } } } @@ -206,6 +211,7 @@ DialogPlus { placeholderText :"(sn=%s)" TooltipArea{ text : qsTr('filterTooltip')//'The search is base on this filter to search friends. Default value : (sn=%s)' + //tooltipParent: dialog } } } @@ -249,6 +255,7 @@ DialogPlus { // ----------------------------------------------------------------------- Form { + id:parsingForm title: qsTr('parsingTitle')//'Parsing' width: parent.width @@ -263,6 +270,7 @@ DialogPlus { onTextChanged: ldapData.nameAttributes = text TooltipArea{ text : qsTr('nameAttributesTooltip')//'Check these attributes To build Name Friend, separated by a comma and the first is the highest priority. The default value is: sn' + tooltipParent: nameAttributes } } } @@ -278,6 +286,7 @@ DialogPlus { onTextChanged: ldapData.sipAttributes = text TooltipArea{ text : qsTr('sipAttributesTooltip')//'Check these attributes to build the SIP username in address of Friend. Attributes are separated by a comma and the first is the highest priority. The default value is: mobile,telephoneNumber,homePhone,sn' + tooltipParent: sipAttributes } } } @@ -293,6 +302,7 @@ DialogPlus { onTextChanged: ldapData.sipDomain = text TooltipArea{ text : qsTr('domainTooltip')//'Add the domain to the sip address(username@domain). The default value is sip.linphone.org' + //tooltipParent: dialog } } } diff --git a/linphone-app/ui/views/App/Settings/SettingsAdvanced.qml b/linphone-app/ui/views/App/Settings/SettingsAdvanced.qml index 3353bb395..0fc2ee68c 100644 --- a/linphone-app/ui/views/App/Settings/SettingsAdvanced.qml +++ b/linphone-app/ui/views/App/Settings/SettingsAdvanced.qml @@ -279,13 +279,14 @@ TabContainer { id: pluginChoice model:ContactsImporterPluginsManager.getPlugins() textRole: "pluginTitle" - displayText: currentIndex === -1 ? 'No Plugins to load' : currentText + //: 'No Plugins to load' : Text in combobox + displayText: currentIndex === -1 ? qsTr('noPlugin') : currentText Text{// Hack, combobox show empty text when empty anchors.fill:parent visible:pluginChoice.currentIndex===-1 verticalAlignment: Qt.AlignVCenter horizontalAlignment: Qt.AlignHCenter - text: 'No Plugins to load' + text: qsTr('noPlugin') font { bold:false italic: true