diff --git a/linphone-app/assets/images/call_history_custom.svg b/linphone-app/assets/images/call_history_custom.svg new file mode 100644 index 000000000..ca74e1541 --- /dev/null +++ b/linphone-app/assets/images/call_history_custom.svg @@ -0,0 +1,53 @@ + + + + + + + diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index 55fd5035e..8a20f82ba 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -18,6 +18,7 @@ assets/images/call_chat_secure_custom.svg assets/images/call_chat_unsecure_custom.svg assets/images/call_custom.svg + assets/images/call_history_custom.svg assets/images/call_quality_custom.svg assets/images/call_sign_connected.svg assets/images/call_sign_ended.svg diff --git a/linphone-app/ui/modules/Common/View/ScrollableListView.qml b/linphone-app/ui/modules/Common/View/ScrollableListView.qml index c70bf1e9b..8d30b7975 100644 --- a/linphone-app/ui/modules/Common/View/ScrollableListView.qml +++ b/linphone-app/ui/modules/Common/View/ScrollableListView.qml @@ -23,8 +23,8 @@ ListView { clip: true contentWidth: width - (vScrollBar.visible?vScrollBar.width:0) spacing: 0 - synchronousDrag:true - maximumFlickVelocity:-1 + synchronousDrag: true + cacheBuffer: height // --------------------------------------------------------------------------- // TODO: Find a solution at this bug => diff --git a/linphone-app/ui/modules/Linphone/History/Event.qml b/linphone-app/ui/modules/Linphone/History/Event.qml index 283f92f42..7f2780f05 100644 --- a/linphone-app/ui/modules/Linphone/History/Event.qml +++ b/linphone-app/ui/modules/Linphone/History/Event.qml @@ -20,73 +20,73 @@ Row { Component.onCompleted: { if ($historyEntry.status == LinphoneEnums.CallStatusSuccess) { if(!$historyEntry.isStart){ - iconData = ChatStyle.entry.event.endedCall + iconData = HistoryStyle.entry.event.endedCall translation ='endedCall' }else if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.outgoingCall + iconData = HistoryStyle.entry.event.outgoingCall translation ='outgoingCall' }else{ - iconData = ChatStyle.entry.event.incomingCall + iconData = HistoryStyle.entry.event.incomingCall translation ='incomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusDeclined) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.declinedOutgoingCall + iconData = HistoryStyle.entry.event.declinedOutgoingCall translation ='declinedOutgoingCall' }else{ - iconData = ChatStyle.entry.event.declinedIncomingCall + iconData = HistoryStyle.entry.event.declinedIncomingCall translation ='declinedIncomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusMissed) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.missedOutgoingCall + iconData = HistoryStyle.entry.event.missedOutgoingCall translation ='missedOutgoingCall' }else{ - iconData = ChatStyle.entry.event.missedIncomingCall + iconData = HistoryStyle.entry.event.missedIncomingCall translation ='missedIncomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusAborted) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.outgoingCall + iconData = HistoryStyle.entry.event.outgoingCall translation ='outgoingCall' }else{ - iconData = ChatStyle.entry.event.incomingCall + iconData = HistoryStyle.entry.event.incomingCall translation ='incomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusDeclined) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.declinedOutgoingCall + iconData = HistoryStyle.entry.event.declinedOutgoingCall translation ='declinedOutgoingCall' }else{ - iconData = ChatStyle.entry.event.declinedIncomingCall + iconData = HistoryStyle.entry.event.declinedIncomingCall translation ='declinedIncomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusEarlyAborted) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.missedOutgoingCall + iconData = HistoryStyle.entry.event.missedOutgoingCall translation ='missedOutgoingCall' }else{ - iconData = ChatStyle.entry.event.missedIncomingCall + iconData = HistoryStyle.entry.event.missedIncomingCall translation ='missedIncomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusAcceptedElsewhere) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.outgoingCall + iconData = HistoryStyle.entry.event.outgoingCall translation ='outgoingCall' }else{ - iconData = ChatStyle.entry.event.incomingCall + iconData = HistoryStyle.entry.event.incomingCall translation ='incomingCall' } }else if($historyEntry.status == LinphoneEnums.CallStatusDeclinedElsewhere) { if($historyEntry.isOutgoing ){ - iconData = ChatStyle.entry.event.declinedOutgoingCall + iconData = HistoryStyle.entry.event.declinedOutgoingCall translation ='declinedOutgoingCall' }else{ - iconData = ChatStyle.entry.event.declinedIncomingCall + iconData = HistoryStyle.entry.event.declinedIncomingCall translation ='declinedIncomingCall' } }else { - iconData = ChatStyle.entry.event.unknownCallEvent + iconData = HistoryStyle.entry.event.unknownCallEvent translation = 'unknownCallEvent' } } @@ -129,7 +129,7 @@ Row { height: parent.height icon: mainItem.iconData ? mainItem.iconData.icon : null overwriteColor: mainItem.iconData ? mainItem.iconData.color: null - iconSize: ChatStyle.entry.event.iconSize + iconSize: HistoryStyle.entry.event.iconSize width: HistoryStyle.entry.metaWidth } @@ -174,10 +174,10 @@ Row { } } ActionButton { - height: HistoryStyle.entry.lineHeight + //height: HistoryStyle.entry.lineHeight isCustom: true backgroundRadius: 8 - colorSet: ChatStyle.entry.deleteAction + colorSet: HistoryStyle.entry.deleteAction visible: isHoverEntry() onClicked: removeEntry() diff --git a/linphone-app/ui/modules/Linphone/History/History.qml b/linphone-app/ui/modules/Linphone/History/History.qml index d6b8a76f1..2b690f9d8 100644 --- a/linphone-app/ui/modules/Linphone/History/History.qml +++ b/linphone-app/ui/modules/Linphone/History/History.qml @@ -129,7 +129,7 @@ Rectangle { leftMargin: HistoryStyle.entry.leftMargin right: parent ? parent.right : undefined - rightMargin: HistoryStyle.entry.deleteIconSize + + rightMargin: HistoryStyle.entry.deleteAction.iconSize + HistoryStyle.entry.message.extraContent.spacing + HistoryStyle.entry.message.extraContent.rightMargin + HistoryStyle.entry.message.extraContent.leftMargin diff --git a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatStyle.qml b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatStyle.qml index aabfb4a4c..96f3958b2 100644 --- a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatStyle.qml +++ b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatStyle.qml @@ -71,7 +71,6 @@ QtObject { property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, '', '', '#595759').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, '', '', '#595759').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, '', '', '#595759').color - } property QtObject deleteAction: QtObject { property int iconSize: 22 @@ -83,7 +82,6 @@ QtObject { property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, '', '', '#595759').color property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, '', '', '#595759').color property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, '', '', '#595759').color - } property QtObject event: QtObject { diff --git a/linphone-app/ui/modules/Linphone/Styles/History/HistoryStyle.qml b/linphone-app/ui/modules/Linphone/Styles/History/HistoryStyle.qml index 1d46c37e0..1eb537501 100644 --- a/linphone-app/ui/modules/Linphone/Styles/History/HistoryStyle.qml +++ b/linphone-app/ui/modules/Linphone/Styles/History/HistoryStyle.qml @@ -28,18 +28,62 @@ QtObject { property QtObject entry: QtObject { property int bottomMargin: 10 - property int deleteIconSize: 22 property int leftMargin: 18 property int lineHeight: 30 property int metaWidth: 40 + property QtObject deleteAction: QtObject { + property int iconSize: 30 + property string name : 'delete' + property string icon : 'delete_custom' + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'l_n_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 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 + } + property QtObject event: QtObject { - property int iconSize: 18 + property int iconSize: 30 property QtObject text: QtObject { property color color: ColorsList.add(sectionName+'_event_text', 'd').color property int pointSize: Units.dp * 10 } + + property QtObject declinedIncomingCall: QtObject{ + property string icon: 'declined_incoming_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_declinedIncomingCall', icon, 'event_bad').color + } + property QtObject declinedOutgoingCall: QtObject{ + property string icon: 'declined_outgoing_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_declinedOutgoingCall', icon, 'event_bad').color + } + property QtObject endedCall: QtObject{ + property string icon: 'ended_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_endedCall', icon, 'event_neutral').color + } + property QtObject incomingCall: QtObject{ + property string icon: 'incoming_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_incomingCall', icon, 'event_in').color + } + property QtObject outgoingCall: QtObject{ + property string icon: 'outgoing_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_outgoingCall', icon, 'event_out').color + } + property QtObject missedIncomingCall: QtObject{ + property string icon: 'missed_incoming_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_missedIncominCall', icon, 'event_bad').color + } + property QtObject missedOutgoingCall: QtObject{ + property string icon: 'missed_outgoing_call_custom' + property color color: ColorsList.addImageColor(sectionName+'_missedOutgoingCall', icon, 'event_bad').color + } + property QtObject unknownCallEvent: QtObject{ + property string icon: 'unknown_call_event' + property color color: ColorsList.addImageColor(sectionName+'_unknownCallEvent', icon, 'event_bad').color + } } property QtObject message: QtObject { diff --git a/linphone-app/ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml b/linphone-app/ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml index 276b93aae..8939e51b2 100644 --- a/linphone-app/ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml +++ b/linphone-app/ui/modules/Linphone/Styles/Timeline/TimelineStyle.qml @@ -52,6 +52,7 @@ QtObject { property int iconSize: 28 property int leftMargin: 17 property int rightMargin: 17 + property int lastRightMargin: 5 property int spacing: 1 } property QtObject filterField: QtObject { diff --git a/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml b/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml index be0adffd3..5f5b5c2ab 100644 --- a/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml +++ b/linphone-app/ui/modules/Linphone/Timeline/Timeline.qml @@ -25,6 +25,7 @@ Rectangle { //signal entrySelected (string entry) signal entrySelected (TimelineModel entry) + signal showHistoryRequest() // --------------------------------------------------------------------------- @@ -99,7 +100,6 @@ Rectangle { } MouseArea{ Layout.alignment: Qt.AlignRight - Layout.rightMargin: TimelineStyle.legend.rightMargin Layout.fillHeight: true Layout.preferredWidth: TimelineStyle.legend.iconSize onClicked:{ @@ -116,6 +116,24 @@ Rectangle { overwriteColor: TimelineStyle.legend.color } } + MouseArea{ + Layout.alignment: Qt.AlignRight + Layout.rightMargin: TimelineStyle.legend.lastRightMargin + Layout.fillHeight: true + Layout.preferredWidth: TimelineStyle.legend.iconSize + onClicked:{ + showHistoryRequest() + } + Icon { + id:callHistoryButton + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + property bool searching: searchView.visible + icon: 'call_history_custom' + iconSize: TimelineStyle.legend.iconSize + overwriteColor: TimelineStyle.legend.color + } + } } } // ------------------------------------------------------------------------- diff --git a/linphone-app/ui/views/App/Main/HistoryView.qml b/linphone-app/ui/views/App/Main/HistoryView.qml index 8d7a299b6..1fc22915f 100644 --- a/linphone-app/ui/views/App/Main/HistoryView.qml +++ b/linphone-app/ui/views/App/Main/HistoryView.qml @@ -83,7 +83,7 @@ ColumnLayout { ActionButton { isCustom: true backgroundRadius: 90 - colorSet: ContactsStyle.videoCall + colorSet: HistoryViewStyle.videoCall visible: peerAddress && SettingsModel.videoSupported && SettingsModel.outgoingCallsEnabled && SettingsModel.showStartVideoCallButton onClicked: CallsListModel.launchVideoCall(historyView.peerAddress) @@ -92,7 +92,7 @@ ColumnLayout { ActionButton { isCustom: true backgroundRadius: 90 - colorSet: ContactsStyle.call + colorSet: HistoryViewStyle.call visible: peerAddress && SettingsModel.outgoingCallsEnabled onClicked: CallsListModel.launchAudioCall(historyView.peerAddress) @@ -116,7 +116,7 @@ ColumnLayout { ActionButton { isCustom: true backgroundRadius: 90 - colorSet: ContactsStyle.deleteAction + colorSet: HistoryViewStyle.deleteAction onClicked: Logic.removeAllEntries() diff --git a/linphone-app/ui/views/App/Main/MainWindow.qml b/linphone-app/ui/views/App/Main/MainWindow.qml index 02c97ed27..c68d5ecde 100644 --- a/linphone-app/ui/views/App/Main/MainWindow.qml +++ b/linphone-app/ui/views/App/Main/MainWindow.qml @@ -331,6 +331,9 @@ ApplicationWindow { } menu.resetSelectedEntry() } + onShowHistoryRequest: { + window.setView('HistoryView') + } } } diff --git a/linphone-app/ui/views/App/Styles/Main/HistoryViewStyle.qml b/linphone-app/ui/views/App/Styles/Main/HistoryViewStyle.qml index c6134dd4c..7473ff1c8 100644 --- a/linphone-app/ui/views/App/Styles/Main/HistoryViewStyle.qml +++ b/linphone-app/ui/views/App/Styles/Main/HistoryViewStyle.qml @@ -6,48 +6,48 @@ import ColorsList 1.0 QtObject { property string sectionName: 'HistoryView' - property QtObject bar: QtObject { - property color backgroundColor: ColorsList.add(sectionName+'_bar_bg', 'e').color - property int avatarSize: 60 - property int height: 80 - property int leftMargin: 40 - property int rightMargin: 30 - property int spacing: 20 - - property QtObject actions: QtObject { - property int spacing: 40 - - property QtObject call: QtObject { - property int iconSize: 40 - } - - property QtObject del: QtObject { - property int iconSize: 22 - } - - property QtObject edit: QtObject { - property int iconSize: 22 - } - } - - property QtObject description: QtObject { - property color sipAddressColor: ColorsList.add(sectionName+'_bar_description_sipAddress', 'g').color - property color usernameColor: ColorsList.add(sectionName+'_bar_description_username', 'j').color - } - } - - property QtObject filters: QtObject { - property color backgroundColor: ColorsList.add(sectionName+'_filters_bg', 'q').color - property int height: 51 - property int leftMargin: 40 - - property QtObject border: QtObject { - property color color: ColorsList.add(sectionName+'_filters_border', 'g10').color - property int bottomWidth: 1 - property int topWidth: 0 - } - } - property QtObject videoCall: QtObject { + property QtObject bar: QtObject { + property color backgroundColor: ColorsList.add(sectionName+'_bar_bg', 'e').color + property int avatarSize: 60 + property int height: 80 + property int leftMargin: 40 + property int rightMargin: 30 + property int spacing: 20 + + property QtObject actions: QtObject { + property int spacing: 40 + + property QtObject call: QtObject { + property int iconSize: 40 + } + + property QtObject del: QtObject { + property int iconSize: 40 + } + + property QtObject edit: QtObject { + property int iconSize: 40 + } + } + + property QtObject description: QtObject { + property color sipAddressColor: ColorsList.add(sectionName+'_bar_description_sipAddress', 'g').color + property color usernameColor: ColorsList.add(sectionName+'_bar_description_username', 'j').color + } + } + + property QtObject filters: QtObject { + property color backgroundColor: ColorsList.add(sectionName+'_filters_bg', 'q').color + property int height: 51 + property int leftMargin: 40 + + property QtObject border: QtObject { + property color color: ColorsList.add(sectionName+'_filters_border', 'g10').color + property int bottomWidth: 1 + property int topWidth: 0 + } + } + property QtObject videoCall: QtObject { property int iconSize: 40 property string name : 'videoCall' property string icon : 'video_call_custom' @@ -69,15 +69,15 @@ QtObject { 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 deleteAction: QtObject { - property int iconSize: 22 + property QtObject deleteAction: QtObject { + property int iconSize: 40 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 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 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 + property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 'l_n_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 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 } }