From 7b7d382cc6ea5902cd66b9c1c951bc2875f8826d Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 12 Jan 2026 17:57:29 +0100 Subject: [PATCH] add loader to the call status icon so it is changed properly when call state changes #LINQT-2303 --- .../view/Page/Window/Call/CallsWindow.qml | 76 +++++++++++-------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index e69a5da7a..e59d8bb1c 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -353,34 +353,52 @@ AbstractWindow { spacing: Utils.getSizeWithScreenRatio(10) RowLayout { spacing: Utils.getSizeWithScreenRatio(10) - EffectImage { - id: callStatusIcon + Loader { + id: callStatusIconLoader Layout.preferredWidth: Utils.getSizeWithScreenRatio(30) Layout.preferredHeight: Utils.getSizeWithScreenRatio(30) - // TODO : change with broadcast or meeting icon when available - imageSource: !mainWindow.call - ? AppIcons.meeting - : (mainWindow.callState === LinphoneEnums.CallState.End || mainWindow.callState === LinphoneEnums.CallState.Released) - ? AppIcons.endCall - : (mainWindow.callState === LinphoneEnums.CallState.Paused || mainWindow.callState === LinphoneEnums.CallState.PausedByRemote) - ? AppIcons.pause - : mainWindow.conference - ? AppIcons.usersThree - : mainWindow.call.core.dir === LinphoneEnums.CallDir.Outgoing - ? AppIcons.arrowUpRight - : AppIcons.arrowDownLeft - colorizationColor: !mainWindow.call - || mainWindow.call.core.paused - || mainWindow.callState - === LinphoneEnums.CallState.Paused - || mainWindow.callState - === LinphoneEnums.CallState.PausedByRemote - || mainWindow.callState - === LinphoneEnums.CallState.End - || mainWindow.callState - === LinphoneEnums.CallState.Released - || mainWindow.conference ? DefaultStyle.danger_500_main : mainWindow.call.core.dir === LinphoneEnums.CallDir.Outgoing ? DefaultStyle.info_500_main : DefaultStyle.success_500_main - + sourceComponent: EffectImage { + id: callStatusIcon + anchors.fill: parent + // TODO : change with broadcast or meeting icon when available + // onImageSourceChanged: console.log("image source changed", imageSource) + imageSource: !mainWindow.call + ? AppIcons.meeting + : (mainWindow.callState === LinphoneEnums.CallState.End || mainWindow.callState === LinphoneEnums.CallState.Released) + ? AppIcons.endCall + : (mainWindow.call.core.paused || mainWindow.callState === LinphoneEnums.CallState.Paused || mainWindow.callState === LinphoneEnums.CallState.PausedByRemote) + ? AppIcons.pause + : mainWindow.conference + ? AppIcons.usersThree + : mainWindow.call.core.dir === LinphoneEnums.CallDir.Outgoing + ? AppIcons.arrowUpRight + : AppIcons.arrowDownLeft + colorizationColor: !mainWindow.call + || mainWindow.call.core.paused + || mainWindow.callState + === LinphoneEnums.CallState.Paused + || mainWindow.callState + === LinphoneEnums.CallState.PausedByRemote + || mainWindow.callState + === LinphoneEnums.CallState.End + || mainWindow.callState + === LinphoneEnums.CallState.Released + || mainWindow.conference ? DefaultStyle.danger_500_main : mainWindow.call.core.dir === LinphoneEnums.CallDir.Outgoing ? DefaultStyle.info_500_main : DefaultStyle.success_500_main + + Binding { + target: callStatusIcon + when: middleItemStackView.currentItem.objectName === "waitingRoom" + property: "imageSource" + value: AppIcons.usersThree + } + } + Connections { + target: mainWindow + function onCallStateChanged() { + callStatusIconLoader.active = !callStatusIconLoader.active + callStatusIconLoader.active = !callStatusIconLoader.active + } + } } ColumnLayout { spacing: Utils.getSizeWithScreenRatio(6) @@ -1273,12 +1291,6 @@ AbstractWindow { rightPanel.visible = false } } - Binding { - target: callStatusIcon - when: middleItemStackView.currentItem.objectName === "waitingRoom" - property: "imageSource" - value: AppIcons.usersThree - } Binding { target: callStatusText when: middleItemStackView.currentItem.objectName === "waitingRoom"