diff --git a/Linphone/data/image/bell-mwi.svg b/Linphone/data/image/bell-mwi.svg
new file mode 100644
index 000000000..2270c7b47
--- /dev/null
+++ b/Linphone/data/image/bell-mwi.svg
@@ -0,0 +1,3 @@
+
diff --git a/Linphone/model/account/AccountModel.cpp b/Linphone/model/account/AccountModel.cpp
index fd388c059..bd9cafc9b 100644
--- a/Linphone/model/account/AccountModel.cpp
+++ b/Linphone/model/account/AccountModel.cpp
@@ -317,7 +317,7 @@ QString AccountModel::dialPlanAsString(const std::shared_ptr
int AccountModel::getVoicemailCount() {
auto userData = getUserData(mMonitor);
if (userData) return userData->voicemailCount;
- else return 1;
+ else return 0;
}
bool AccountModel::getShowMwi() {
diff --git a/Linphone/view/Control/Display/Contact/Contact.qml b/Linphone/view/Control/Display/Contact/Contact.qml
index 0fec0c826..9e147f22c 100644
--- a/Linphone/view/Control/Display/Contact/Contact.qml
+++ b/Linphone/view/Control/Display/Contact/Contact.qml
@@ -146,9 +146,11 @@ Control.Control{
Voicemail {
Layout.leftMargin: 18 * DefaultStyle.dp
Layout.rightMargin: 20 * DefaultStyle.dp
- Layout.preferredWidth: 27 * DefaultStyle.dp
- Layout.preferredHeight: 28 * DefaultStyle.dp
- visible: mainItem.account.core.showMwi
+ Layout.preferredWidth: 30 * DefaultStyle.dp
+ Layout.preferredHeight: 26 * DefaultStyle.dp
+ scaleFactor: 0.7
+ showMwi: mainItem.account.core.showMwi
+ visible: mainItem.account.core.voicemailAddress.length > 0 || mainItem.account.core.showMwi
voicemailCount: mainItem.account.core.voicemailCount
onClicked: {
if (mainItem.account.core.voicemailAddress.length > 0)
diff --git a/Linphone/view/Control/Display/Contact/Voicemail.qml b/Linphone/view/Control/Display/Contact/Voicemail.qml
index 22225582f..f4f5b2ede 100644
--- a/Linphone/view/Control/Display/Contact/Voicemail.qml
+++ b/Linphone/view/Control/Display/Contact/Voicemail.qml
@@ -9,16 +9,22 @@ import SettingsCpp
Rectangle{
id: mainItem
property int voicemailCount: 0
- width: 27 * DefaultStyle.dp
- height: 28 * DefaultStyle.dp
+ property bool showMwi: false
+ width: 42 * DefaultStyle.dp * scaleFactor
+ height: 36 * DefaultStyle.dp * scaleFactor
+ property real scaleFactor: 1.0
signal clicked()
color: 'transparent'
Button {
anchors.bottom: parent.bottom
anchors.left: parent.left
icon.source: AppIcons.voicemail
- width: 24 * DefaultStyle.dp
- height: 24 * DefaultStyle.dp
+ icon.color: DefaultStyle.main2_600
+ width: 33 * DefaultStyle.dp * scaleFactor
+ height: width
+ icon.width: width
+ icon.height: width
+ padding: 0
background: Item {
anchors.fill: parent
}
@@ -29,11 +35,31 @@ Rectangle{
Text {
anchors.top: parent.top
anchors.right: parent.right
+ width: 14 * DefaultStyle.dp * scaleFactor
+ height: width
+ horizontalAlignment: Text.AlignHCenter
font.weight: 700 * DefaultStyle.dp
- font.pixelSize: 10 * DefaultStyle.dp
+ font.pixelSize: 13 * DefaultStyle.dp * scaleFactor
color: DefaultStyle.danger_500main
text: voicemailCount >= 100 ? '99+' : voicemailCount
- visible: voicemailCount > 0
+ visible: showMwi && voicemailCount > 0
maximumLineCount: 1
}
+
+ Rectangle {
+ anchors.top: parent.top
+ anchors.right: parent.right
+ color: DefaultStyle.danger_500main
+ visible: showMwi && voicemailCount == 0
+ width: 14 * DefaultStyle.dp * scaleFactor
+ height: width
+ radius: width / 2
+ EffectImage {
+ anchors.fill: parent
+ anchors.margins: 1.5 * DefaultStyle.dp * scaleFactor
+ imageSource: AppIcons.bellMwi
+ colorizationColor: DefaultStyle.grey_0
+ }
+ }
+
}
diff --git a/Linphone/view/Page/Layout/Main/MainLayout.qml b/Linphone/view/Page/Layout/Main/MainLayout.qml
index 637279e6a..bcf5d8fdd 100644
--- a/Linphone/view/Page/Layout/Main/MainLayout.qml
+++ b/Linphone/view/Page/Layout/Main/MainLayout.qml
@@ -295,28 +295,32 @@ Item {
}
Voicemail {
id: voicemail
- Layout.preferredWidth: 27 * DefaultStyle.dp
- Layout.preferredHeight: 28 * DefaultStyle.dp
-
+ Layout.preferredWidth: 42 * DefaultStyle.dp
+ Layout.preferredHeight: 36 * DefaultStyle.dp
Repeater {
model: accountProxy
delegate: Item {
Connections {
target: modelData.core
onShowMwiChanged: voicemail.updateCumulatedMwi()
+ onVoicemailAddressChanged: voicemail.updateCumulatedMwi()
}
}
}
function updateCumulatedMwi() {
var count = 0
- var show = false
+ var showMwi = false
+ var supportsVoiceMail = false
for (var i=0 ; i < accountProxy.count ; i++ ) {
- count += accountProxy.getAt(i).core.voicemailCount
- show |= accountProxy.getAt(i).core.showMwi
+ var core = accountProxy.getAt(i).core
+ count += core.voicemailCount
+ showMwi |= core.showMwi
+ supportsVoiceMail |= core.voicemailAddress.length > 0
}
- voicemail.visible = show
+ voicemail.showMwi = showMwi
voicemail.voicemailCount = count
+ voicemail.visible = showMwi || supportsVoiceMail
}
Component.onCompleted: {
diff --git a/Linphone/view/Style/AppIcons.qml b/Linphone/view/Style/AppIcons.qml
index a15bf6a66..562e06233 100644
--- a/Linphone/view/Style/AppIcons.qml
+++ b/Linphone/view/Style/AppIcons.qml
@@ -124,4 +124,5 @@ QtObject {
property string power: "image://internal/power.svg"
property string resourcePackage: "image://internal/resource-package.svg"
property string appWindow: "image://internal/app-window.svg"
+ property string bellMwi: "image://internal/bell-mwi.svg"
}