diff --git a/Linphone/data/image/pdf.svg b/Linphone/data/image/pdf.svg
new file mode 100644
index 000000000..adad4c5c8
--- /dev/null
+++ b/Linphone/data/image/pdf.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/Linphone/data/image/photo.svg b/Linphone/data/image/photo.svg
new file mode 100644
index 000000000..420718e4b
--- /dev/null
+++ b/Linphone/data/image/photo.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/Linphone/data/image/search.svg b/Linphone/data/image/search.svg
new file mode 100644
index 000000000..aff8d159a
--- /dev/null
+++ b/Linphone/data/image/search.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts
index d9390284c..6d709cb2c 100644
--- a/Linphone/data/languages/de.ts
+++ b/Linphone/data/languages/de.ts
@@ -4501,45 +4501,9 @@ Pour les activer dans un projet commercial, merci de nous contacter.
SelectedChatView
-
- chat_view_detail_other_actions_title
- Other actions
-
-
-
-
- chat_view_detail_leave_room_toast_button
- "Leave Chat Room"
-
-
-
-
- chat_view_detail_leave_room_toast_title
- Leave Chat Room ?
-
-
-
-
- chat_view_detail_leave_room_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
-
-
-
-
- chat_view_detail_delete_history_button
- "Delete history"
-
-
-
-
- chat_view_detail_delete_history_toast_title
- Delete history ?
-
-
-
-
- chat_view_detail_delete_history_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
+
+ chat_view_send_area_placeholder_text
+ Say something… : placeholder text for sending message text area
@@ -6191,4 +6155,151 @@ Failed to create 1-1 conversation with %1 !
Ok
+
+ OneOneConversationInfos
+
+ one_one_infos_call
+ Call
+ Anrufen
+
+
+ one_one_infos_mute
+ Mute
+ Stummschalten
+
+
+ one_one_infos_search
+ Search
+ Suchen
+
+
+ one_one_infos_media_docs
+ Medias & documents
+ Medien & Dokumente
+
+
+ one_one_infos_shared_media
+ Shared medias
+ Geteilte Medien
+
+
+ one_one_infos_shared_docs
+ Shared documents
+ Geteilte Dokumente
+
+
+ one_one_infos_other_actions
+ Other actions
+ Weitere Aktionen
+
+
+ one_one_infos_enable_ephemerals
+ Enable ephemeral messages
+ Flüchtige Nachrichten aktivieren
+
+
+ one_one_infos_disable_ephemerals
+ Disable ephemeral messages
+ Flüchtige Nachrichten deaktivieren
+
+
+ one_one_infos_delete_history
+ Delete history
+ Verlauf löschen
+
+
+ one_one_infos_delete_history_toast_title
+ Delete history ?
+ Verlauf löschen?
+
+
+ one_one_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?
+
+
+ one_one_infos_open_contact
+ Open contact
+ Kontakt öffnen
+
+
+ one_one_infos_create_contact
+ Create contact
+ Kontakt erstellen
+
+
+
+ GroupConversationInfos
+
+ group_infos_call
+ Call
+ Anrufen
+
+
+ group_infos_mute
+ Mute
+ Stummschalten
+
+
+ group_infos_meeting
+ Meeting
+ Meeting
+
+
+ group_infos_media_docs
+ Medias & documents
+ Medien & Dokumente
+
+
+ group_infos_shared_media
+ Shared medias
+ Geteilte Medien
+
+
+ group_infos_shared_docs
+ Shared documents
+ Geteilte Dokumente
+
+
+ group_infos_other_actions
+ Other actions
+ Weitere Aktionen
+
+
+ group_infos_enable_ephemerals
+ Enable ephemeral messages
+ Flüchtige Nachrichten aktivieren
+
+
+ group_infos_disable_ephemerals
+ Disable ephemeral messages
+ Flüchtige Nachrichten deaktivieren
+
+
+ group_infos_delete_history
+ Delete history
+ Verlauf löschen
+
+
+ group_infos_delete_history_toast_title
+ Delete history ?
+ Verlauf löschen?
+
+
+ group_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?
+
+
+ group_infos_leave_room_toast_title
+ Leave Chat Room ?
+ Chatraum verlassen?
+
+
+ group_infos_leave_room_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?
+
+
+
diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts
index cd71eba41..6afbe1132 100644
--- a/Linphone/data/languages/en.ts
+++ b/Linphone/data/languages/en.ts
@@ -4402,46 +4402,20 @@ To enable them in a commercial project, please contact us.
SelectedChatView
-
- chat_view_detail_other_actions_title
+ Dites quelque chose…
+ Say something… : placeholder text for sending message text area
+ Say something…
+
+
+ Autres actions
Other actions
- Other actions
+ Other actions
-
- chat_view_detail_delete_history_button
- "Delete history"
- Delete history
-
-
-
- chat_view_detail_delete_history_toast_title
- Delete history ?
- Delete history ?
-
-
-
- chat_view_detail_delete_history_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
- All the messages will be removed from the chat room. Do you want to continue ?
-
-
-
- chat_view_detail_leave_room_toast_button
- "Leave Chat Room"
- Leave chat room
-
-
-
- chat_view_detail_leave_room_toast_title
- Leave Chat Room ?
- Leave chat room ?
-
-
-
- chat_view_detail_leave_room_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
- You will not be able to send or receive messages in this room anymore, leave ?
+
+ chat_view_send_area_placeholder_text
+ Say something… : placeholder text for sending message text area
+ Say something…
@@ -6092,4 +6066,248 @@ Failed to create 1-1 conversation with %1 !
Ok
+
+ EventLogCore
+
+ conference_created_event
+ 'You have joined the group' : Little message to show on the event when the user join the chat group.
+ You have joined the group
+
+
+ conference_created_terminated
+ 'You have left the group' : Little message to show on the event when the user leave the chat group.
+ You have left the group
+
+
+ conference_participant_added_event
+ '%1 has joined' : Little message to show on the event when someone join the chat group.
+ %1 has joined
+
+
+ conference_participant_removed_event
+ '%1 has left' : Little message to show on the event when someone leave the chat group
+ %1 has left
+
+
+ conference_participant_set_admin_event
+ '%1 is now an admin' : Little message to show on the event when someone get the admin status. %1 is somebody
+ %1 is now an admin
+
+
+ conference_participant_unset_admin_event
+ '%1 is no longer an admin' : Little message to show on the event when somebody lost its admin status. %1 is somebody
+ %1 is no longer an admin
+
+
+ conference_security_event
+ 'Security level degraded by %1': Little message to show on the event when a security level has been lost.
+ Security level degraded by %1
+
+
+ conference_ephemeral_message_enabled_event
+ 'Ephemeral messages have been enabled: %1' : Little message to show on the event when ephemeral has been activated. %1 is a date time
+ Ephemeral messages have been enabled: %1
+
+
+ conference_ephemeral_message_disabled_event
+ 'Ephemeral messages have been disabled': Little message to show on the event when ephemeral has been deactivated.
+ Ephemeral messages have been disabled
+
+
+ conference_subject_changed_event
+ 'New subject : %1' : Little message to show on the event when the subject of the chat room has been changed. %1 is the new subject.
+ New subject: %1
+
+
+ conference_ephemeral_message_lifetime_changed_event
+ 'Ephemeral messages have been updated: %1' : Little message to show on the event when ephemeral has been updated. %1 is a date time
+ Ephemeral messages have been updated: %1
+
+
+ nSeconds
+
+ %1 second
+ %1 seconds
+
+
+
+ nMinute
+
+ %1 minute
+ %1 minutes
+
+
+
+ nHour
+
+ %1 hour
+ %1 hours
+
+
+
+ nDay
+
+ %1 day
+ %1 days
+
+
+
+ nWeek
+
+ %1 week
+ %1 weeks
+
+
+
+
+ OneOneConversationInfos
+
+ one_one_infos_call
+ Call
+ Call
+
+
+ one_one_infos_mute
+ Mute
+ Mute
+
+
+ one_one_infos_search
+ Search
+ Search
+
+
+ one_one_infos_media_docs
+ Medias & documents
+ Medias & documents
+
+
+ one_one_infos_shared_media
+ Shared medias
+ Shared medias
+
+
+ one_one_infos_shared_docs
+ Shared documents
+ Shared documents
+
+
+ one_one_infos_other_actions
+ Other actions
+ Other actions
+
+
+ one_one_infos_enable_ephemerals
+ Enable ephemeral messages
+ Enable ephemeral messages
+
+
+ one_one_infos_disable_ephemerals
+ Disable ephemeral messages
+ Disable ephemeral messages
+
+
+ one_one_infos_delete_history
+ Delete history
+ Delete history
+
+
+ one_one_infos_delete_history_toast_title
+ Delete history ?
+ Delete history ?
+
+
+ one_one_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ All the messages will be removed from the chat room. Do you want to continue ?
+
+
+ one_one_infos_open_contact
+ Open contact
+ Open contact
+
+
+ one_one_infos_create_contact
+ Create contact
+ Create contact
+
+
+
+ GroupConversationInfos
+
+ group_infos_call
+ Call
+ Call
+
+
+ group_infos_mute
+ Mute
+ Mute
+
+
+ group_infos_meeting
+ Meeting
+ Meeting
+
+
+ group_infos_media_docs
+ Medias & documents
+ Medias & documents
+
+
+ group_infos_shared_media
+ Shared medias
+ Shared medias
+
+
+ group_infos_shared_docs
+ Shared documents
+ Shared documents
+
+
+ group_infos_other_actions
+ Other actions
+ Other actions
+
+
+ group_infos_enable_ephemerals
+ Enable ephemeral messages
+ Enable ephemeral messages
+
+
+ group_infos_disable_ephemerals
+ Disable ephemeral messages
+ Disable ephemeral messages
+
+
+ group_infos_delete_history
+ Delete history
+ Delete history
+
+
+ group_infos_delete_history_toast_title
+ Delete history ?
+ Delete history ?
+
+
+ group_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ All the messages will be removed from the chat room. Do you want to continue ?
+
+
+ group_infos_leave_room
+ Leave Chat Room
+ Leave Chat Room
+
+
+ group_infos_leave_room_toast_title
+ Leave Chat Room ?
+ Leave Chat Room ?
+
+
+ group_infos_leave_room_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ All the messages will be removed from the chat room. Do you want to continue ?
+
+
diff --git a/Linphone/data/languages/fr_FR.ts b/Linphone/data/languages/fr_FR.ts
index 161f2aa12..0bf78806c 100644
--- a/Linphone/data/languages/fr_FR.ts
+++ b/Linphone/data/languages/fr_FR.ts
@@ -4402,46 +4402,10 @@ Pour les activer dans un projet commercial, merci de nous contacter.
SelectedChatView
-
- chat_view_detail_other_actions_title
- Other actions
- Autres actions
-
-
-
- chat_view_detail_delete_history_button
- "Delete history"
- Supprimer l'historique
-
-
-
- chat_view_detail_delete_history_toast_title
- Delete history ?
- Supprimer l'historique ?
-
-
-
- chat_view_detail_delete_history_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
- Tous les messages seront supprimés. Souhaitez-vous continuer ?
-
-
-
- chat_view_detail_leave_room_toast_button
- "Leave Chat Room"
- Quitter la conversation
-
-
-
- chat_view_detail_leave_room_toast_title
- Leave Chat Room ?
- Quitter la conversation ?
-
-
-
- chat_view_detail_leave_room_toast_message
- All the messages will be removed from the chat room. Do you want to continue ?
- Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?
+
+ chat_view_send_area_placeholder_text
+ Say something… : placeholder text for sending message text area
+ Dites quelque chose…
@@ -6092,4 +6056,155 @@ Failed to create 1-1 conversation with %1 !
Ok
+
+ OneOneConversationInfos
+
+ one_one_infos_call
+ Call
+ Appel
+
+
+ one_one_infos_mute
+ Mute
+ Sourdine
+
+
+ one_one_infos_search
+ Search
+ Rechercher
+
+
+ one_one_infos_media_docs
+ Medias & documents
+ Medias & documents
+
+
+ one_one_infos_shared_media
+ Shared medias
+ Médias partagés
+
+
+ one_one_infos_shared_docs
+ Shared documents
+ Documents partagés
+
+
+ one_one_infos_other_actions
+ Other actions
+ Autres actions
+
+
+ one_one_infos_enable_ephemerals
+ Enable ephemeral messages
+ Activer les messages éphémères
+
+
+ one_one_infos_disable_ephemerals
+ Disable ephemeral messages
+ Désactiver les messages éphémères
+
+
+ one_one_infos_delete_history
+ Delete history
+ Supprimer l'historique
+
+
+ one_one_infos_delete_history_toast_title
+ Delete history ?
+ Supprimer l'historique ?
+
+
+ one_one_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Tous les messages seront supprimés. Souhaitez-vous continuer ?
+
+
+ one_one_infos_open_contact
+ Open contact
+ Voir le contact
+
+
+ one_one_infos_create_contact
+ Create contact
+ Créer un contact
+
+
+
+ GroupConversationInfos
+
+ group_infos_call
+ Call
+ Appel
+
+
+ group_infos_mute
+ Mute
+ Sourdine
+
+
+ group_infos_meeting
+ Meeting
+ Réunion
+
+
+ group_infos_media_docs
+ Medias & documents
+ Medias & documents
+
+
+ group_infos_shared_media
+ Shared medias
+ Médias partagés
+
+
+ group_infos_shared_docs
+ Shared documents
+ Documents partagés
+
+
+ group_infos_other_actions
+ Other actions
+ Autres actions
+
+
+ group_infos_enable_ephemerals
+ Enable ephemeral messages
+ Activer les messages éphémères
+
+
+ group_infos_disable_ephemerals
+ Disable ephemeral messages
+ Désactiver les messages éphémères
+
+
+ group_infos_delete_history
+ Delete history
+ Supprimer l'historique
+
+
+ group_infos_delete_history_toast_title
+ Delete history ?
+ Supprimer l'historique ?
+
+
+ group_infos_delete_history_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Tous les messages seront supprimés. Souhaitez-vous continuer ?
+
+
+ group_infos_leave_room
+ Leave Chat Room
+ Quitter la conversation
+
+
+ group_infos_leave_room_toast_title
+ Leave Chat Room ?
+ Quitter la conversation ?
+
+
+ group_infos_leave_room_toast_message
+ All the messages will be removed from the chat room. Do you want to continue ?
+ Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?
+
+
diff --git a/Linphone/view/CMakeLists.txt b/Linphone/view/CMakeLists.txt
index ea74a250d..b6bda2755 100644
--- a/Linphone/view/CMakeLists.txt
+++ b/Linphone/view/CMakeLists.txt
@@ -20,6 +20,7 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Control/Button/Switch.qml
view/Control/Button/Settings/ComboSetting.qml
view/Control/Button/Settings/SwitchSetting.qml
+ view/Control/Button/LabelButton.qml
view/Control/Container/Carousel.qml
view/Control/Container/CreationFormLayout.qml
@@ -150,6 +151,9 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Page/Layout/Settings/SecuritySettingsLayout.qml
view/Page/Layout/Settings/NetworkSettingsLayout.qml
view/Page/Layout/Settings/AdvancedSettingsLayout.qml
+ view/Page/Layout/Chat/GroupConversationInfos.qml
+ view/Page/Layout/Chat/OneOneConversationInfos.qml
+ view/Page/Layout/Chat/ChatInfoActionsGroup.qml
view/Page/Main/AbstractMainPage.qml
view/Page/Main/Account/AccountListView.qml
diff --git a/Linphone/view/Control/Button/LabelButton.qml b/Linphone/view/Control/Button/LabelButton.qml
new file mode 100644
index 000000000..e44dd183e
--- /dev/null
+++ b/Linphone/view/Control/Button/LabelButton.qml
@@ -0,0 +1,35 @@
+import QtQuick
+import QtQuick.Controls.Basic as Control
+import QtQuick.Effects
+import QtQuick.Layouts
+import Linphone
+import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
+
+ColumnLayout {
+ id: labelButton
+ // property alias image: buttonImg
+ property alias button: button
+ property string label
+ spacing: Math.round(8 * DefaultStyle.dp)
+ Button {
+ id: button
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredWidth: Math.round(56 * DefaultStyle.dp)
+ Layout.preferredHeight: Math.round(56 * DefaultStyle.dp)
+ topPadding: Math.round(16 * DefaultStyle.dp)
+ bottomPadding: Math.round(16 * DefaultStyle.dp)
+ leftPadding: Math.round(16 * DefaultStyle.dp)
+ rightPadding: Math.round(16 * DefaultStyle.dp)
+ contentImageColor: DefaultStyle.main2_600
+ radius: Math.round(40 * DefaultStyle.dp)
+ style: ButtonStyle.grey
+ }
+ Text {
+ Layout.alignment: Qt.AlignHCenter
+ text: labelButton.label
+ font {
+ pixelSize: Typography.p1.pixelSize
+ weight: Typography.p1.weight
+ }
+ }
+}
diff --git a/Linphone/view/Control/Container/Call/CallHistoryLayout.qml b/Linphone/view/Control/Container/Call/CallHistoryLayout.qml
index 44425b5d4..e201a1258 100644
--- a/Linphone/view/Control/Container/Call/CallHistoryLayout.qml
+++ b/Linphone/view/Control/Container/Call/CallHistoryLayout.qml
@@ -12,7 +12,6 @@ ColumnLayout {
spacing: Math.round(30 * DefaultStyle.dp)
property var callHistoryGui
- property var chatGui
property FriendGui contact
property var conferenceInfo: callHistoryGui?.core.conferenceInfo
@@ -32,37 +31,6 @@ ColumnLayout {
property alias buttonContent: rightButton.data
property alias detailContent: detailControl.data
-
- property var hideChat: false
-
- component LabelButton: ColumnLayout {
- id: labelButton
- // property alias image: buttonImg
- property alias button: button
- property string label
- spacing: Math.round(8 * DefaultStyle.dp)
- Button {
- id: button
- Layout.alignment: Qt.AlignHCenter
- Layout.preferredWidth: Math.round(56 * DefaultStyle.dp)
- Layout.preferredHeight: Math.round(56 * DefaultStyle.dp)
- topPadding: Math.round(16 * DefaultStyle.dp)
- bottomPadding: Math.round(16 * DefaultStyle.dp)
- leftPadding: Math.round(16 * DefaultStyle.dp)
- rightPadding: Math.round(16 * DefaultStyle.dp)
- contentImageColor: DefaultStyle.main2_600
- radius: Math.round(40 * DefaultStyle.dp)
- style: ButtonStyle.grey
- }
- Text {
- Layout.alignment: Qt.AlignHCenter
- text: labelButton.label
- font {
- pixelSize: Typography.p1.pixelSize
- weight: Typography.p1.weight
- }
- }
- }
ColumnLayout {
spacing: Math.round(13 * DefaultStyle.dp)
@@ -171,7 +139,7 @@ ColumnLayout {
}
}
LabelButton {
- visible: !mainItem.isConference && !SettingsCpp.disableChatFeature && !mainItem.hideChat
+ visible: !mainItem.isConference && !SettingsCpp.disableChatFeature
width: Math.round(56 * DefaultStyle.dp)
height: Math.round(56 * DefaultStyle.dp)
button.icon.width: Math.round(24 * DefaultStyle.dp)
diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml
index 8c3cfdbd0..a01f153b4 100644
--- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml
+++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml
@@ -253,80 +253,45 @@ RowLayout {
Layout.preferredWidth: Math.round(1 * DefaultStyle.dp)
Layout.fillHeight: true
}
- Control.Control {
- id: detailsPanel
- visible: false
- Layout.fillHeight: true
- Layout.preferredWidth: Math.round(387 * DefaultStyle.dp)
- background: Rectangle {
- color: DefaultStyle.grey_0
- anchors.fill: parent
- }
- contentItem: CallHistoryLayout {
- chatGui: mainItem.chat
- hideChat: mainItem.chat.core.isReadOnly
- detailContent: ColumnLayout {
- DetailLayout {
- //: Other actions
- label: qsTr("chat_view_detail_other_actions_title")
- content: ColumnLayout {
- // IconLabelButton {
- // Layout.fillWidth: true
- // Layout.preferredHeight: Math.round(50 * DefaultStyle.dp)
- // icon.source: AppIcons.signOut
- // //: "Quitter la conversation"
- // text: qsTr("chat_view_detail_quit_chat_title")
- // onClicked: {
+ Control.Control {
+ id: detailsPanel
+ visible: false
+ Layout.fillHeight: true
+ Layout.preferredWidth: Math.round(387 * DefaultStyle.dp)
- // }
- // style: ButtonStyle.noBackground
- // }
- IconLabelButton {
- Layout.fillWidth: true
- Layout.preferredHeight: Math.round(50 * DefaultStyle.dp)
- icon.source: AppIcons.signOut
- //: "Leave Chat Room"
- text: qsTr("chat_view_detail_leave_room_toast_button")
- visible: mainItem.chat.core.isGroupChat && !mainItem.chat.core.isReadOnly
- onClicked: {
- //: Leave Chat Room ?
- mainWindow.showConfirmationLambdaPopup(qsTr("chat_view_detail_leave_room_toast_title"),
- //: All the messages will be removed from the chat room. Do you want to continue ?
- qsTr("chat_view_detail_leave_room_toast_message"),
- "",
- function(confirmed) {
- if (confirmed) {
- mainItem.chat.core.lLeave()
- }
- })
- }
- style: ButtonStyle.noBackground
- }
- IconLabelButton {
- Layout.fillWidth: true
- Layout.preferredHeight: Math.round(50 * DefaultStyle.dp)
- icon.source: AppIcons.trashCan
- //: "Delete history"
- text: qsTr("chat_view_detail_delete_history_button")
- onClicked: {
- //: Delete history ?
- mainWindow.showConfirmationLambdaPopup(qsTr("chat_view_detail_delete_history_toast_title"),
- //: All the messages will be removed from the chat room. Do you want to continue ?
- qsTr("chat_view_detail_delete_history_toast_message"),
- "",
- function(confirmed) {
- if (confirmed) {
- mainItem.chat.core.lDeleteHistory()
- }
- })
- }
- style: ButtonStyle.noBackgroundRed
- }
- }
- }
- Item {Layout.fillHeight: true}
- }
- }
- }
+ background: Rectangle {
+ color: DefaultStyle.grey_0
+ anchors.fill: parent
+ }
+
+ contentItem: Loader {
+ id: contentLoader
+ anchors.top: parent.top
+ anchors.topMargin: Math.round(39 * DefaultStyle.dp)
+ active: true
+ property var chat: mainItem.chat
+ sourceComponent: chat && chat.core.isGroupChat ? groupInfoComponent : oneToOneInfoComponent
+
+ onLoaded: {
+ if (item && item.hasOwnProperty("chat")) {
+ item.chat = chat
+ }
+ }
+ }
+
+ Component {
+ id: oneToOneInfoComponent
+ OneOneConversationInfos {
+ chat: contentLoader.chat
+ }
+ }
+
+ Component {
+ id: groupInfoComponent
+ GroupConversationInfos {
+ chat: contentLoader.chat
+ }
+ }
+ }
}
diff --git a/Linphone/view/Page/Layout/Chat/ChatInfoActionsGroup.qml b/Linphone/view/Page/Layout/Chat/ChatInfoActionsGroup.qml
new file mode 100644
index 000000000..eb81dad0b
--- /dev/null
+++ b/Linphone/view/Page/Layout/Chat/ChatInfoActionsGroup.qml
@@ -0,0 +1,102 @@
+import QtCore
+import QtQuick
+import QtQuick.Controls.Basic as Control
+import QtQuick.Dialogs
+import QtQuick.Effects
+import QtQuick.Layouts
+import Linphone
+import UtilsCpp
+import SettingsCpp
+import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
+
+ColumnLayout {
+
+ property var title: String
+ property var entries
+
+ Text {
+ font: Typography.h4
+ color: DefaultStyle.main2_600
+ text: title
+ Layout.topMargin: Math.round(5 * DefaultStyle.dp)
+ }
+
+ Rectangle {
+ Layout.fillWidth: true
+ Layout.topMargin: Math.round(9 * DefaultStyle.dp)
+ color: DefaultStyle.grey_100
+ radius: Math.round(15 * DefaultStyle.dp)
+ height: contentColumn.implicitHeight
+
+ ColumnLayout {
+ id: contentColumn
+ anchors.fill: parent
+ spacing: 0
+
+ Repeater {
+ model: entries
+
+ delegate: ColumnLayout {
+ width: parent.width
+ spacing: 0
+ property bool hovered: false
+
+ Item {
+ Layout.fillWidth: true
+ Layout.preferredHeight: Math.round(56 * DefaultStyle.dp)
+ visible: modelData.visible
+
+ RowLayout {
+ anchors.fill: parent
+ spacing: Math.round(8 * DefaultStyle.dp)
+ anchors.leftMargin: Math.round(17 * DefaultStyle.dp)
+ anchors.rightMargin: Math.round(10 * DefaultStyle.dp)
+
+ EffectImage {
+ fillMode: Image.PreserveAspectFit
+ imageSource: modelData.icon
+ colorizationColor: modelData.color
+ Layout.preferredHeight: Math.round(20 * DefaultStyle.dp)
+ Layout.preferredWidth: Math.round(20 * DefaultStyle.dp)
+ }
+
+ Text {
+ text: modelData.text
+ font: hovered ? Typography.p1b : Typography.p1
+ color: modelData.color
+ Layout.alignment: Qt.AlignVCenter
+ Layout.fillWidth: true
+ }
+
+ EffectImage {
+ visible: modelData.showRightArrow
+ fillMode: Image.PreserveAspectFit
+ imageSource: AppIcons.rightArrow
+ colorizationColor: modelData.color
+ Layout.preferredHeight: Math.round(20 * DefaultStyle.dp)
+ Layout.preferredWidth: Math.round(20 * DefaultStyle.dp)
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ cursorShape: Qt.PointingHandCursor
+ onClicked: modelData.action()
+ onEntered: hovered = true
+ onExited: hovered = false
+ hoverEnabled: true
+ }
+ }
+
+ Rectangle {
+ visible: index < entries.length - 1
+ color: DefaultStyle.main2_200
+ height: Math.round(1 * DefaultStyle.dp)
+ width: parent.width - Math.round(30 * DefaultStyle.dp)
+ Layout.leftMargin: Math.round(17 * DefaultStyle.dp)
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Linphone/view/Page/Layout/Chat/GroupConversationInfos.qml b/Linphone/view/Page/Layout/Chat/GroupConversationInfos.qml
new file mode 100644
index 000000000..170228bdb
--- /dev/null
+++ b/Linphone/view/Page/Layout/Chat/GroupConversationInfos.qml
@@ -0,0 +1,171 @@
+import QtCore
+import QtQuick
+import QtQuick.Controls.Basic as Control
+import QtQuick.Dialogs
+import QtQuick.Effects
+import QtQuick.Layouts
+import Linphone
+import UtilsCpp
+import SettingsCpp
+import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
+
+ColumnLayout {
+ id: mainItem
+ property var chat
+ spacing: 0
+
+ Avatar {
+ Layout.alignment: Qt.AlignHCenter
+ displayNameVal: mainItem.chat.core.avatarUri
+ Layout.preferredWidth: Math.round(100 * DefaultStyle.dp)
+ Layout.preferredHeight: Math.round(100 * DefaultStyle.dp)
+ }
+
+ Text {
+ font: Typography.p1
+ color: DefaultStyle.main2_700
+ text: mainItem.chat?.core.title || ""
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(11 * DefaultStyle.dp)
+ }
+
+ Text {
+ font: Typography.p3
+ color: DefaultStyle.main2_700
+ text: mainItem.chat?.core.peerAddress
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(5 * DefaultStyle.dp)
+ }
+
+ RowLayout {
+ spacing: Math.round(55 * DefaultStyle.dp)
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(30 * DefaultStyle.dp)
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: chat.core.muted ? AppIcons.bell : AppIcons.bellSlash
+ //: "Sourdine"
+ label: qsTr("group_infos_mute")
+ button.onClicked: {
+ chat.core.muted = !chat.core.muted
+ }
+ }
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: AppIcons.phone
+ //: "Appel"
+ label: qsTr("group_infos_call")
+ button.onClicked: {
+ //TODO
+ }
+ }
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: AppIcons.videoconference
+ //: "Réunion"
+ label: qsTr("group_infos_meeting")
+ button.onClicked: {
+ //TODO
+ }
+ }
+ }
+
+ ChatInfoActionsGroup {
+ Layout.leftMargin: Math.round(15 * DefaultStyle.dp)
+ Layout.rightMargin: Math.round(12 * DefaultStyle.dp)
+ Layout.topMargin: Math.round(30 * DefaultStyle.dp)
+ title: qsTr("group_infos_media_docs")
+ entries: [
+ {
+ icon: AppIcons.photo,
+ visible: true,
+ text: qsTr("group_infos_media_docs"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: true,
+ action: function() {
+ console.log("group_infos_shared_media")
+ }
+ },
+ {
+ icon: AppIcons.pdf,
+ visible: true,
+ text: qsTr("group_infos_shared_docs"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: true,
+ action: function() {
+ console.log("Opening shared documents")
+ }
+ }
+ ]
+ }
+
+ ChatInfoActionsGroup {
+ Layout.leftMargin: Math.round(15 * DefaultStyle.dp)
+ Layout.rightMargin: Math.round(12 * DefaultStyle.dp)
+ Layout.topMargin: Math.round(17 * DefaultStyle.dp)
+ title: qsTr("group_infos_other_actions")
+ entries: [
+ {
+ icon: AppIcons.clockCountDown,
+ visible: true,
+ text: mainItem.chat.core.ephemeralEnabled ? qsTr("group_infos_disable_ephemerals") : qsTr("group_infos_enable_ephemerals"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: false,
+ action: function() {
+ mainItem.chat.core.ephemeralEnabled = !mainItem.chat.core.ephemeralEnabled
+ }
+ },
+ {
+ icon: AppIcons.signOut,
+ visible: !mainItem.chat.core.isReadOnly,
+ text: qsTr("group_infos_leave_room"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: false,
+ action: function() {
+ //: Leave Chat Room ?
+ mainWindow.showConfirmationLambdaPopup(qsTr("group_infos_leave_room_toast_title"),
+ //: All the messages will be removed from the chat room. Do you want to continue ?
+ qsTr("group_infos_leave_room_toast_message"),
+ "",
+ function(confirmed) {
+ if (confirmed) {
+ mainItem.chat.core.lLeave()
+ }
+ })
+ }
+ },
+ {
+ icon: AppIcons.trashCan,
+ visible: true,
+ text: qsTr("group_infos_delete_history"),
+ color: DefaultStyle.danger_500main,
+ showRightArrow: false,
+ action: function() {
+ //: Delete history ?
+ mainWindow.showConfirmationLambdaPopup(qsTr("group_infos_delete_history_toast_title"),
+ //: All the messages will be removed from the chat room. Do you want to continue ?
+ qsTr("group_infos_delete_history_toast_message"),
+ "",
+ function(confirmed) {
+ if (confirmed) {
+ mainItem.chat.core.lDeleteHistory()
+ }
+ })
+ }
+ }
+ ]
+ }
+
+ Item {
+ Layout.fillHeight: true
+ }
+}
diff --git a/Linphone/view/Page/Layout/Chat/OneOneConversationInfos.qml b/Linphone/view/Page/Layout/Chat/OneOneConversationInfos.qml
new file mode 100644
index 000000000..a40e46993
--- /dev/null
+++ b/Linphone/view/Page/Layout/Chat/OneOneConversationInfos.qml
@@ -0,0 +1,178 @@
+import QtCore
+import QtQuick
+import QtQuick.Controls.Basic as Control
+import QtQuick.Dialogs
+import QtQuick.Effects
+import QtQuick.Layouts
+import Linphone
+import UtilsCpp
+import SettingsCpp
+import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
+
+ColumnLayout {
+ id: mainItem
+ property var chat
+ property var contactObj: chat ? UtilsCpp.findFriendByAddress(chat?.core.peerAddress) : null
+ spacing: 0
+
+ Avatar {
+ Layout.alignment: Qt.AlignHCenter
+ contact: contactObj?.value || null
+ displayNameVal: contact ? "" : mainItem.chat.core.avatarUri
+ Layout.preferredWidth: Math.round(100 * DefaultStyle.dp)
+ Layout.preferredHeight: Math.round(100 * DefaultStyle.dp)
+ }
+
+ Text {
+ font: Typography.p1
+ color: DefaultStyle.main2_700
+ text: mainItem.chat?.core.title || ""
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(11 * DefaultStyle.dp)
+ }
+
+ Text {
+ font: Typography.p3
+ color: DefaultStyle.main2_700
+ text: mainItem.chat?.core.peerAddress
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(5 * DefaultStyle.dp)
+ }
+
+ Text {
+ font: Typography.p3
+ color: contactObj?.value.core.presenceColor
+ text: contactObj?.value.core.presenceStatus
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(5 * DefaultStyle.dp)
+ }
+
+
+ RowLayout {
+ spacing: Math.round(55 * DefaultStyle.dp)
+ Layout.alignment: Qt.AlignHCenter
+ Layout.topMargin: Math.round(30 * DefaultStyle.dp)
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: AppIcons.phone
+ //: "Appel"
+ label: qsTr("one_one_infos_call")
+ button.onClicked: {
+ mainWindow.startCallWithContact(contactObj.value, false, mainItem)
+ }
+ }
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: chat.core.muted ? AppIcons.bell : AppIcons.bellSlash
+ //: "Sourdine"
+ label: qsTr("one_one_infos_mute")
+ button.onClicked: {
+ chat.core.muted = !chat.core.muted
+ }
+ }
+ LabelButton {
+ width: Math.round(56 * DefaultStyle.dp)
+ height: Math.round(56 * DefaultStyle.dp)
+ button.icon.width: Math.round(24 * DefaultStyle.dp)
+ button.icon.height: Math.round(24 * DefaultStyle.dp)
+ button.icon.source: AppIcons.search
+ //: "Rechercher"
+ label: qsTr("one_one_infos_search")
+ button.onClicked: {
+ //TODO
+ }
+ }
+ }
+
+ ChatInfoActionsGroup {
+ Layout.leftMargin: Math.round(15 * DefaultStyle.dp)
+ Layout.rightMargin: Math.round(12 * DefaultStyle.dp)
+ Layout.topMargin: Math.round(30 * DefaultStyle.dp)
+ title: qsTr("one_one_infos_media_docs")
+ entries: [
+ {
+ icon: AppIcons.photo,
+ visible: true,
+ text: qsTr("one_one_infos_shared_media"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: true,
+ action: function() {
+ console.log("Opening shared media")
+ }
+ },
+ {
+ icon: AppIcons.pdf,
+ visible: true,
+ text: qsTr("one_one_infos_shared_docs"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: true,
+ action: function() {
+ console.log("Opening shared documents")
+ }
+ }
+ ]
+ }
+
+ ChatInfoActionsGroup {
+ Layout.leftMargin: Math.round(15 * DefaultStyle.dp)
+ Layout.rightMargin: Math.round(12 * DefaultStyle.dp)
+ Layout.topMargin: Math.round(17 * DefaultStyle.dp)
+ title: qsTr("one_one_infos_other_actions")
+ entries: [
+ {
+ icon: AppIcons.adressBook,
+ visible: true,
+ text: contactObj.value ? qsTr("one_one_infos_open_contact") : qsTr("one_one_infos_create_contact"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: false,
+ action: function() {
+ // contactObj.value = friendGui
+ if (contactObj.value)
+ mainWindow.displayContactPage(contactObj.value.core.defaultAddress)
+ else
+ mainWindow.displayCreateContactPage("",chat.core.peerAddress)
+ //mainItem.createContactRequested(contactDetail.contactName, chat.core.peerAddress)
+ }
+ },
+ {
+ icon: AppIcons.clockCountDown,
+ visible: true,
+ text: mainItem.chat.core.ephemeralEnabled ? qsTr("one_one_infos_disable_ephemerals") : qsTr("one_one_infos_enable_ephemerals"),
+ color: DefaultStyle.main2_600,
+ showRightArrow: false,
+ action: function() {
+ mainItem.chat.core.ephemeralEnabled = !mainItem.chat.core.ephemeralEnabled
+ }
+ },
+ {
+ icon: AppIcons.trashCan,
+ visible: true,
+ text: qsTr("one_one_infos_delete_history"),
+ color: DefaultStyle.danger_500main,
+ showRightArrow: false,
+ action: function() {
+ //: Delete history ?
+ mainWindow.showConfirmationLambdaPopup(qsTr("one_one_infos_delete_history_toast_title"),
+ //: All the messages will be removed from the chat room. Do you want to continue ?
+ qsTr("one_one_infos_delete_history_toast_message"),
+ "",
+ function(confirmed) {
+ if (confirmed) {
+ mainItem.chat.core.lDeleteHistory()
+ }
+ })
+ }
+ }
+ ]
+ }
+
+ Item {
+ Layout.fillHeight: true
+ }
+}
diff --git a/Linphone/view/Page/Window/Main/MainWindow.qml b/Linphone/view/Page/Window/Main/MainWindow.qml
index 8f03bbb85..5e90c5dd1 100644
--- a/Linphone/view/Page/Window/Main/MainWindow.qml
+++ b/Linphone/view/Page/Window/Main/MainWindow.qml
@@ -56,6 +56,10 @@ AbstractWindow {
openMainPage()
mainWindowStackView.currentItem.displayContactPage(contactAddress)
}
+ function displayCreateContactPage(name, contactAddress) {
+ openMainPage()
+ mainWindowStackView.currentItem.createContact(name, contactAddress)
+ }
function displayChatPage(contactAddress) {
openMainPage()
mainWindowStackView.currentItem.displayChatPage(contactAddress)
diff --git a/Linphone/view/Style/AppIcons.qml b/Linphone/view/Style/AppIcons.qml
index 1305cb3bc..d55d0acf9 100644
--- a/Linphone/view/Style/AppIcons.qml
+++ b/Linphone/view/Style/AppIcons.qml
@@ -149,6 +149,7 @@ QtObject {
property string clockCountDown: "image://internal/clock-countdown.svg"
property string reply: "image://internal/reply.svg"
property string forward: "image://internal/forward.svg"
-
-
+ property string search: "image://internal/search.svg"
+ property string pdf: "image://internal/pdf.svg"
+ property string photo: "image://internal/photo.svg"
}
diff --git a/Linphone/view/Style/Typography.qml b/Linphone/view/Style/Typography.qml
index 2c979b566..0bba93392 100644
--- a/Linphone/view/Style/Typography.qml
+++ b/Linphone/view/Style/Typography.qml
@@ -80,6 +80,13 @@ QtObject {
weight: Math.min(Math.round(400 * DefaultStyle.dp), 1000)
})
+ // Text/P1 - Paragraph text
+ property font p1b: Qt.font( {
+ family: DefaultStyle.defaultFont,
+ pixelSize: Math.round(15 * DefaultStyle.dp),
+ weight: Math.min(Math.round(400 * DefaultStyle.dp), 1000)
+ })
+
// Button/B1 - Big Button
property font b1: Qt.font( {
family: DefaultStyle.defaultFont,