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
}
}