From 08c78f49e75d9de07f2448fbd881c9a8fd9ff42d Mon Sep 17 00:00:00 2001 From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com> Date: Thu, 4 Aug 2022 13:27:26 -0300 Subject: [PATCH] callbuttons: hide audio only GitLab: #729 Change-Id: Ib444fdf5515f9242bbe627d695d05fafb16214d6 --- src/app/appsettingsmanager.h | 1 + src/app/callparticipantsmodel.h | 6 ++++++ src/app/constant/JamiStrings.qml | 1 + src/app/mainview/components/CallActionBar.qml | 18 +++++++++++++++--- .../mainview/components/ParticipantsLayer.qml | 4 ++++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/app/appsettingsmanager.h b/src/app/appsettingsmanager.h index 932985236..074fb0cf8 100644 --- a/src/app/appsettingsmanager.h +++ b/src/app/appsettingsmanager.h @@ -48,6 +48,7 @@ extern const QString defaultDownloadPath; X(BaseZoom, 1.0) \ X(ParticipantsSide, false) \ X(HideSelf, false) \ + X(HideAudioOnly, false) \ X(AutoUpdate, true) \ X(StartMinimized, false) \ X(ShowChatviewHorizontally, true) \ diff --git a/src/app/callparticipantsmodel.h b/src/app/callparticipantsmodel.h index e1cc7cc0c..31e1597c8 100644 --- a/src/app/callparticipantsmodel.h +++ b/src/app/callparticipantsmodel.h @@ -76,6 +76,7 @@ class GenericParticipantsFilterModel final : public QSortFilterProxyModel { Q_OBJECT QML_PROPERTY(bool, hideSelf) + QML_PROPERTY(bool, hideAudioOnly) public: explicit GenericParticipantsFilterModel(LRCInstance* lrcInstance, @@ -98,6 +99,11 @@ public: sourceModel()->rowCount() > 1 && sourceModel()->data(index, CallParticipant::Role::IsLocal).toBool()) acceptState = false; + if (acceptState && + hideAudioOnly_ && + sourceModel()->rowCount() > 1 && + sourceModel()->data(index, CallParticipant::Role::VideoMuted).toBool()) + acceptState = false; return acceptState; } diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml index cfffa2478..9d6ca31b3 100644 --- a/src/app/constant/JamiStrings.qml +++ b/src/app/constant/JamiStrings.qml @@ -253,6 +253,7 @@ Item { property string participantsSide: qsTr("On the side") property string participantsTop: qsTr("On the top") property string hideSelf: qsTr("Hide self") + property string hideAudioOnly: qsTr("Hide participant without video") // LineEditContextMenu property string copy: qsTr("Copy") diff --git a/src/app/mainview/components/CallActionBar.qml b/src/app/mainview/components/CallActionBar.qml index f7d46453b..7f9e8fa5c 100644 --- a/src/app/mainview/components/CallActionBar.qml +++ b/src/app/mainview/components/CallActionBar.qml @@ -176,19 +176,25 @@ Control { case JamiStrings.hideSelf: UtilsAdapter.setAppValue(Settings.HideSelf, !layoutModel.get(index).ActiveSetting) GenericParticipantsFilterModel.hideSelf = UtilsAdapter.getAppValue(Settings.HideSelf) + GenericParticipantsFilterModel.hideAudioOnly = UtilsAdapter.getAppValue(Settings.HideAudioOnly) + GenericParticipantsFilterModel.reset() + break + case JamiStrings.hideAudioOnly: + UtilsAdapter.setAppValue(Settings.HideAudioOnly, !layoutModel.get(index).ActiveSetting) + GenericParticipantsFilterModel.hideSelf = UtilsAdapter.getAppValue(Settings.HideSelf) + GenericParticipantsFilterModel.hideAudioOnly = UtilsAdapter.getAppValue(Settings.HideAudioOnly) GenericParticipantsFilterModel.reset() break } } onTriggered: { layoutModel.clear() - if (!isGrid && isConference) { + if (isConference) { layoutModel.append({"Name": JamiStrings.mosaic, "IconSource": JamiResources.mosaic_black_24dp_svg, "ActiveSetting": isGrid}) layoutModel.append({}) - } - if (isConference) { + var onTheSide = UtilsAdapter.getAppValue(Settings.ParticipantsSide) layoutModel.append({"Name": onTheSide ? JamiStrings.participantsSide : JamiStrings.participantsTop, "IconSource": onTheSide ? JamiResources.ontheside_black_24dp_svg : JamiResources.onthetop_black_24dp_svg, @@ -202,6 +208,12 @@ Control { layoutModel.append({"Name": JamiStrings.viewFullScreen, "IconSource": JamiResources.open_in_full_24dp_svg, "ActiveSetting": layoutManager.isCallFullscreen}) + if (isConference) { + layoutModel.append({}) + layoutModel.append({"Name": JamiStrings.hideAudioOnly, + "IconSource": JamiResources.videocam_off_24dp_svg, + "ActiveSetting": UtilsAdapter.getAppValue(Settings.HideAudioOnly)}) + } } }, Action { diff --git a/src/app/mainview/components/ParticipantsLayer.qml b/src/app/mainview/components/ParticipantsLayer.qml index 87d22ae58..c8a1b01f7 100644 --- a/src/app/mainview/components/ParticipantsLayer.qml +++ b/src/app/mainview/components/ParticipantsLayer.qml @@ -37,6 +37,7 @@ Item { onVisibleChanged: { GenericParticipantsFilterModel.hideSelf = UtilsAdapter.getAppValue(Settings.HideSelf) + GenericParticipantsFilterModel.hideAudioOnly = UtilsAdapter.getAppValue(Settings.HideAudioOnly) } Connections { @@ -45,6 +46,9 @@ Item { function onHideSelfChanged() { GenericParticipantsFilterModel.reset() } + function onHideAudioOnlyChanged() { + GenericParticipantsFilterModel.reset() + } } Component { -- GitLab