From b99f746c309a40bfad5545fd7ecdfca4b94d53fe Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Thu, 4 Nov 2021 20:42:00 +0100 Subject: [PATCH] - When removing all entries : delete all history and call logs (if one-one and not secure in the case of standard chat is enabled) - Add more actions in contact edit - fix missing colors --- .../components/chat-room/ChatRoomModel.cpp | 13 ++++- .../ui/modules/Common/Form/ActionButton.qml | 2 +- .../Common/Styles/Form/ListFormStyle.qml | 2 + .../Styles/Form/Placements/FormStyle.qml | 4 ++ .../Linphone/Menus/SipAddressesMenu.qml | 20 ++++--- .../ui/views/App/Main/ContactEdit.qml | 57 +++++++++++++++---- .../App/Styles/Main/ContactEditStyle.qml | 23 ++++++++ .../Styles/Settings/SettingsAdvancedStyle.qml | 6 ++ 8 files changed, 104 insertions(+), 23 deletions(-) diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index ccf05c145..823dfd036 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -332,11 +332,18 @@ bool ChatRoomModel::removeRows (int row, int count, const QModelIndex &parent) { void ChatRoomModel::removeAllEntries () { qInfo() << QStringLiteral("Removing all entries of: (%1, %2).") .arg(getPeerAddress()).arg(getLocalAddress()); - + auto core = CoreManager::getInstance()->getCore(); + bool standardChatEnabled = CoreManager::getInstance()->getSettingsModel()->getStandardChatEnabled(); beginResetModel(); - for (auto &entry : mEntries) - entry->deleteEvent(); mEntries.clear(); + mChatRoom->deleteHistory(); + if( isOneToOne() && // Remove calls only if chat room is one-one and not secure (if available) + ( !standardChatEnabled || !isSecure()) + ) { + auto callLogs = core->getCallHistory(mChatRoom->getPeerAddress(), mChatRoom->getLocalAddress()); + for(auto callLog : callLogs) + core->removeCallLog(callLog); + } endResetModel(); emit allEntriesRemoved(mSelf.lock()); emit focused();// Removing all entries is like having focus. Don't wait asynchronous events. diff --git a/linphone-app/ui/modules/Common/Form/ActionButton.qml b/linphone-app/ui/modules/Common/Form/ActionButton.qml index ab5b861c6..8a1b0bef3 100644 --- a/linphone-app/ui/modules/Common/Form/ActionButton.qml +++ b/linphone-app/ui/modules/Common/Form/ActionButton.qml @@ -181,7 +181,7 @@ Item { anchors.centerIn: parent icon: { if(!Images[_getIcon()]) - console.log(_getIcon()) + console.log("No images for: "+_getIcon()) return Images[_getIcon()].id } iconSize: wrappedButton.iconSize || ( diff --git a/linphone-app/ui/modules/Common/Styles/Form/ListFormStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/ListFormStyle.qml index abe2e68b0..22c9fcd6f 100644 --- a/linphone-app/ui/modules/Common/Styles/Form/ListFormStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Form/ListFormStyle.qml @@ -34,9 +34,11 @@ QtObject { property string name : 'add' property string icon : 'add_custom' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'l_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 'l_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 'l_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 'l_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 'l_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 'l_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 'l_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 'l_p_b_fg').color diff --git a/linphone-app/ui/modules/Common/Styles/Form/Placements/FormStyle.qml b/linphone-app/ui/modules/Common/Styles/Form/Placements/FormStyle.qml index 9a1df36da..9297e615f 100644 --- a/linphone-app/ui/modules/Common/Styles/Form/Placements/FormStyle.qml +++ b/linphone-app/ui/modules/Common/Styles/Form/Placements/FormStyle.qml @@ -28,9 +28,11 @@ QtObject { property string name : 'add' property string icon : 'add_custom' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'me_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 'me_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 'me_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 'me_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 'me_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 'me_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 'me_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 'me_p_b_fg').color @@ -40,9 +42,11 @@ QtObject { property string name : 'delete' property string icon : 'delete_custom' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'me_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 'me_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 'me_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 'me_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 'me_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 'me_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 'me_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 'me_p_b_fg').color } diff --git a/linphone-app/ui/modules/Linphone/Menus/SipAddressesMenu.qml b/linphone-app/ui/modules/Linphone/Menus/SipAddressesMenu.qml index 53b45c104..29766e9c4 100644 --- a/linphone-app/ui/modules/Linphone/Menus/SipAddressesMenu.qml +++ b/linphone-app/ui/modules/Linphone/Menus/SipAddressesMenu.qml @@ -4,7 +4,7 @@ import Common 1.0 import Linphone.Styles 1.0 // ============================================================================= - +// SipAddressesMenu Item { id: sipAddressesMenu @@ -18,16 +18,19 @@ Item { // --------------------------------------------------------------------------- - function open (isSecure) { + function open (callback) { var length = sipAddresses.length if (!length) { return } if (length === 1) { - return sipAddressesMenu.sipAddressClicked(sipAddresses[0], isSecure) + if(callback) + return callback(sipAddresses[0]) + else + return sipAddressesMenu.sipAddressClicked(sipAddresses[0]) } - menu.isSecure = isSecure + menu.callback = callback menu.open() } @@ -41,7 +44,7 @@ Item { // --------------------------------------------------------------------------- - signal sipAddressClicked (string sipAddress, bool isSecure) + signal sipAddressClicked (string sipAddress) // --------------------------------------------------------------------------- @@ -51,7 +54,7 @@ Item { DropDownDynamicMenu { id: menu - property bool isSecure : false + property var callback parent: sipAddressesMenu.parent @@ -105,7 +108,10 @@ Item { onClicked: { menu.close() - sipAddressesMenu.sipAddressClicked($sipAddress, menu.isSecure) + if( menu.callback) + menu.callback($sipAddress) + else + sipAddressesMenu.sipAddressClicked($sipAddress) } } } diff --git a/linphone-app/ui/views/App/Main/ContactEdit.qml b/linphone-app/ui/views/App/Main/ContactEdit.qml index dcbe44b58..b0dcc8e98 100644 --- a/linphone-app/ui/views/App/Main/ContactEdit.qml +++ b/linphone-app/ui/views/App/Main/ContactEdit.qml @@ -153,12 +153,31 @@ ColumnLayout { anchors.verticalCenter: parent.verticalCenter iconSize: ContactEditStyle.bar.actions.history.iconSize + ActionButton { + isCustom: true + backgroundRadius: 90 + colorSet: ContactEditStyle.videoCall + + visible: SettingsModel.videoSupported && SettingsModel.outgoingCallsEnabled && SettingsModel.showStartVideoCallButton + + onClicked: sipAddressesMenu.open(sipAddressesMenu.startVideoCall) + } + + ActionButton { + isCustom: true + backgroundRadius: 90 + colorSet: ContactEditStyle.call + + visible: SettingsModel.outgoingCallsEnabled + + onClicked: sipAddressesMenu.open(sipAddressesMenu.startCall) + } ActionButton { isCustom: true backgroundRadius: 90 colorSet: SettingsModel.getShowStartChatButton() ? ContactEditStyle.chat : ContactEditStyle.history visible: SettingsModel.standardChatEnabled - onClicked: sipAddressesMenu.open(false) + onClicked: sipAddressesMenu.open(sipAddressesMenu.createChatRoom) tooltipText: qsTr('tooltipShowConversation') tooltipIsClickable: false } @@ -176,7 +195,7 @@ ColumnLayout { anchors.top:parent.top anchors.topMargin: -3 } - onClicked: {sipAddressesMenu.open(true)} + onClicked: {sipAddressesMenu.open(sipAddressesMenu.createSecureChatRoom)} tooltipMaxWidth: actionBar.width tooltipVisible: AccountSettingsModel.conferenceURI == '' @@ -219,16 +238,30 @@ ColumnLayout { relativeY: infoBar.height sipAddresses: _contact ? _contact.vcard.sipAddresses : [ contactEdit.sipAddress ] - - onSipAddressClicked: { - var entry = CallsListModel.createChatRoom( "", isSecure, [sipAddress], false ) - if(entry){ - window.setView('Conversation', { - chatRoomModel:entry.chatRoomModel - }, function(){ - TimelineListModel.select(entry.chatRoomModel) - }) - } + + function vewConversation(chatRoomModel){ + window.setView('Conversation', { + chatRoomModel:chatRoomModel + }, function(){ + TimelineListModel.select(chatRoomModel) + }) + } + + function createChatRoom(sipAddress){ + var entry = CallsListModel.createChatRoom( "", false, [sipAddress], false ) + if(entry) + vewConversation(entry.chatRoomModel) + } + function createSecureChatRoom(sipAddress){ + var entry = CallsListModel.createChatRoom( "", true, [sipAddress], false ) + if(entry) + vewConversation(entry.chatRoomModel) + } + function startCall(sipAddress){ + CallsListModel.launchAudioCall([sipAddress]) + } + function startVideoCall(sipAddress){ + CallsListModel.launchVideoCall([sipAddress]) } } diff --git a/linphone-app/ui/views/App/Styles/Main/ContactEditStyle.qml b/linphone-app/ui/views/App/Styles/Main/ContactEditStyle.qml index 52d9e8e0c..4bb8cda7f 100644 --- a/linphone-app/ui/views/App/Styles/Main/ContactEditStyle.qml +++ b/linphone-app/ui/views/App/Styles/Main/ContactEditStyle.qml @@ -98,6 +98,29 @@ QtObject { property int height: 1 } } + property QtObject call: QtObject { + property int iconSize: 40 + property string name : 'call' + property string icon : 'call_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's_p_b_fg').color + } + + property QtObject videoCall: QtObject { + property int iconSize: 40 + property string name : 'videoCall' + property string icon : 'video_call_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 's_n_b_bg').color + property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 's_h_b_bg').color + property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 's_p_b_bg').color + property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's_n_b_fg').color + property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's_h_b_fg').color + property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's_p_b_fg').color + } property QtObject chat: QtObject { property int iconSize: 40 property string name : 'chat' diff --git a/linphone-app/ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml b/linphone-app/ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml index bf15391de..c97256186 100644 --- a/linphone-app/ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml +++ b/linphone-app/ui/views/App/Styles/Settings/SettingsAdvancedStyle.qml @@ -28,9 +28,11 @@ QtObject { property string name : 'add' property string icon : 'add_custom' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'me_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 'me_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 'me_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 'me_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 'me_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 'me_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 'me_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 'me_p_b_fg').color } @@ -39,9 +41,11 @@ QtObject { property string icon : 'cancel_custom' property string name : 'cancel' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 's_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 's_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 's_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 's_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 's_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's_p_b_fg').color } @@ -50,9 +54,11 @@ QtObject { property string icon : 'options_custom' property string name : 'options' property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 's_n_b_bg').color + property color backgroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_d', icon, 's_d_b_bg').color property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 's_h_b_bg').color property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 's_p_b_bg').color property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's_n_b_fg').color + property color foregroundDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_d', icon, 's_d_b_fg').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's_h_b_fg').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's_p_b_fg').color }