From c8008c5414d0cd7b58c6fffddc1f310e56bbd4c2 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Tue, 18 May 2021 12:46:54 -0400 Subject: [PATCH] fix: in-call chat view opening and closing - fixes the in-call chat view requiring reselection to open - fixes the in-call chat view staying open, on top of the principal chat view when a call ends Gitlab: #415 Gitlab: #416 Change-Id: Idcfaaf263d5d53451dedf955ce441f0a705309a9 --- src/mainview/components/AudioCallPage.qml | 37 ++++++++----------- src/mainview/components/CallOverlay.qml | 2 + src/mainview/components/CallStackView.qml | 14 +++---- .../components/CallViewContextMenu.qml | 8 ++++ src/mainview/components/VideoCallPage.qml | 37 ++++++++----------- 5 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/mainview/components/AudioCallPage.qml b/src/mainview/components/AudioCallPage.qml index 670aaf135..8d5cf229d 100644 --- a/src/mainview/components/AudioCallPage.qml +++ b/src/mainview/components/AudioCallPage.qml @@ -51,14 +51,22 @@ Rectangle { closeInCallConversation) } + function openInCallConversation() { + if (linkedWebview) { + linkedWebview.resetMessagingHeaderBackButtonSource(false) + linkedWebview.setMessagingHeaderButtonsVisible(false) + } + inAudioCallMessageWebViewStack.visible = true + inAudioCallMessageWebViewStack.push(linkedWebview) + } + function closeInCallConversation() { - if (inAudioCallMessageWebViewStack.visible) { - linkedWebview.resetMessagingHeaderBackButtonSource( - true) + if (linkedWebview) { + linkedWebview.resetMessagingHeaderBackButtonSource(true) linkedWebview.setMessagingHeaderButtonsVisible(true) - inAudioCallMessageWebViewStack.visible = false - inAudioCallMessageWebViewStack.clear() } + inAudioCallMessageWebViewStack.visible = false + inAudioCallMessageWebViewStack.clear() } function closeContextMenuAndRelatedWindows() { @@ -136,22 +144,9 @@ Rectangle { } onOverlayChatButtonClicked: { - if (inAudioCallMessageWebViewStack.visible) { - linkedWebview.resetMessagingHeaderBackButtonSource( - true) - linkedWebview.setMessagingHeaderButtonsVisible( - true) - inAudioCallMessageWebViewStack.visible = false - inAudioCallMessageWebViewStack.clear() - } else { - linkedWebview.resetMessagingHeaderBackButtonSource( - false) - linkedWebview.setMessagingHeaderButtonsVisible( - false) - inAudioCallMessageWebViewStack.visible = true - inAudioCallMessageWebViewStack.push( - linkedWebview) - } + inAudioCallMessageWebViewStack.visible ? + closeInCallConversation() : + openInCallConversation() } } diff --git a/src/mainview/components/CallOverlay.qml b/src/mainview/components/CallOverlay.qml index 2fbfa43a7..a3a5cba9d 100644 --- a/src/mainview/components/CallOverlay.qml +++ b/src/mainview/components/CallOverlay.qml @@ -44,6 +44,8 @@ Rectangle { signal overlayChatButtonClicked + onVisibleChanged: if (!visible) callViewContextMenu.close() + function setRecording(localIsRecording) { callViewContextMenu.localIsRecording = localIsRecording recordingRect.visible = localIsRecording diff --git a/src/mainview/components/CallStackView.qml b/src/mainview/components/CallStackView.qml index 31d7816ff..b8b4eabd1 100644 --- a/src/mainview/components/CallStackView.qml +++ b/src/mainview/components/CallStackView.qml @@ -50,25 +50,25 @@ Rectangle { property string responsibleConvUid: "" property string responsibleAccountId: "" + // TODO: this should all be done by listening to + // parent visibility change or parent `Component.onDestruction` function needToCloseInCallConversationAndPotentialWindow() { // Close potential window, context menu releated windows. - if (!callStackMainView.currentItem) - return - if (callStackMainView.currentItem.stackNumber === CallStackView.AudioPageStack) { + if (audioCallPage) { audioCallPage.closeInCallConversation() audioCallPage.closeContextMenuAndRelatedWindows() - } else if (callStackMainView.currentItem.stackNumber === CallStackView.VideoPageStack) { + } + if (videoCallPage) { videoCallPage.closeInCallConversation() videoCallPage.closeContextMenuAndRelatedWindows() } } function setLinkedWebview(webViewId) { - if (callStackMainView.currentItem.stackNumber === CallStackView.AudioPageStack) { + if (audioCallPage) audioCallPage.setLinkedWebview(webViewId) - } else if (callStackMainView.currentItem.stackNumber === CallStackView.VideoPageStack) { + if (videoCallPage) videoCallPage.setLinkedWebview(webViewId) - } } function getItemFromStack(itemNumber) { diff --git a/src/mainview/components/CallViewContextMenu.qml b/src/mainview/components/CallViewContextMenu.qml index f8b8c86ea..9ea09aaa6 100644 --- a/src/mainview/components/CallViewContextMenu.qml +++ b/src/mainview/components/CallViewContextMenu.qml @@ -44,6 +44,14 @@ Item { signal pluginItemClicked signal transferCallButtonClicked + function close() { + // leave this debug line is a reminder of a design failure + console.debug("call view context menu close") + const menu = ContextMenuGenerator.getMenu() + if (menu) + menu.close() + } + function openMenu(){ ContextMenuGenerator.initMenu() if (isSIP){ diff --git a/src/mainview/components/VideoCallPage.qml b/src/mainview/components/VideoCallPage.qml index 1f0a33b1a..b9ac3bb5b 100644 --- a/src/mainview/components/VideoCallPage.qml +++ b/src/mainview/components/VideoCallPage.qml @@ -63,14 +63,22 @@ Rectangle { closeInCallConversation) } + function openInCallConversation() { + if (linkedWebview) { + linkedWebview.resetMessagingHeaderBackButtonSource(false) + linkedWebview.setMessagingHeaderButtonsVisible(false) + } + inVideoCallMessageWebViewStack.visible = true + inVideoCallMessageWebViewStack.push(linkedWebview) + } + function closeInCallConversation() { - if (inVideoCallMessageWebViewStack.visible) { - linkedWebview.resetMessagingHeaderBackButtonSource( - true) + if (linkedWebview) { + linkedWebview.resetMessagingHeaderBackButtonSource(true) linkedWebview.setMessagingHeaderButtonsVisible(true) - inVideoCallMessageWebViewStack.visible = false - inVideoCallMessageWebViewStack.clear() } + inVideoCallMessageWebViewStack.visible = false + inVideoCallMessageWebViewStack.clear() } function closeContextMenuAndRelatedWindows() { @@ -200,22 +208,9 @@ Rectangle { } onOverlayChatButtonClicked: { - if (inVideoCallMessageWebViewStack.visible) { - linkedWebview.resetMessagingHeaderBackButtonSource( - true) - linkedWebview.setMessagingHeaderButtonsVisible( - true) - inVideoCallMessageWebViewStack.visible = false - inVideoCallMessageWebViewStack.clear() - } else { - linkedWebview.resetMessagingHeaderBackButtonSource( - false) - linkedWebview.setMessagingHeaderButtonsVisible( - false) - inVideoCallMessageWebViewStack.visible = true - inVideoCallMessageWebViewStack.push( - linkedWebview) - } + inVideoCallMessageWebViewStack.visible ? + closeInCallConversation() : + openInCallConversation() } } -- GitLab