From 9568f1c9ab7d2cb9c718178f0671b15a3ec1abde Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Wed, 2 Jun 2021 16:48:13 -0400 Subject: [PATCH] pluginadapter: add handler list count properties All plugin buttons will be listening on these properties to decide visibility or enabled Change-Id: Id04f9b533e6aba26033c27a607fa531ce65ac588 --- src/mainview/components/CallActionBar.qml | 5 ++--- .../components/CallViewContextMenu.qml | 2 +- .../components/MessageWebViewHeader.qml | 9 +-------- src/pluginadapter.cpp | 20 ++++++++++++++++++- src/pluginadapter.h | 5 +++++ src/utilsadapter.cpp | 11 ---------- src/utilsadapter.h | 1 - 7 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/mainview/components/CallActionBar.qml b/src/mainview/components/CallActionBar.qml index c64d77f7f..17be260d3 100644 --- a/src/mainview/components/CallActionBar.qml +++ b/src/mainview/components/CallActionBar.qml @@ -295,7 +295,7 @@ Control { icon.source: "qrc:/images/icons/plugins-24px.svg" icon.color: "white" text: JamiStrings.viewPlugin - enabled: UtilsAdapter.checkShowPluginsButton(true) + enabled: PluginAdapter.callMediaHandlersListCount } ] @@ -330,8 +330,7 @@ Control { if (!isAudioOnly && !isSIP) CallOverlayModel.addSecondaryControl(shareAction) CallOverlayModel.addSecondaryControl(recordAction) - if (UtilsAdapter.checkShowPluginsButton(true)) - CallOverlayModel.addSecondaryControl(pluginsAction) + CallOverlayModel.addSecondaryControl(pluginsAction) overflowItemCount = CallOverlayModel.secondaryModel().rowCount() muteAudioAction.checked = isAudioMuted diff --git a/src/mainview/components/CallViewContextMenu.qml b/src/mainview/components/CallViewContextMenu.qml index 1d2d15417..7ea1e555f 100644 --- a/src/mainview/components/CallViewContextMenu.qml +++ b/src/mainview/components/CallViewContextMenu.qml @@ -159,7 +159,7 @@ ContextMenuAutoLoader { GeneralMenuItem { id: viewPlugin - canTrigger: UtilsAdapter.checkShowPluginsButton(true) + canTrigger: PluginAdapter.callMediaHandlersListCount itemName: JamiStrings.viewPlugin iconSource: "qrc:/images/icons/extension_24dp.svg" onClicked: { diff --git a/src/mainview/components/MessageWebViewHeader.qml b/src/mainview/components/MessageWebViewHeader.qml index c158f2b2e..44b1abf0c 100644 --- a/src/mainview/components/MessageWebViewHeader.qml +++ b/src/mainview/components/MessageWebViewHeader.qml @@ -186,14 +186,7 @@ Rectangle { PushButton { id: selectPluginButton - visible: UtilsAdapter.checkShowPluginsButton(false) - - Connections { - target: PluginAdapter - function onPluginHandlersUpdateStatus() { - selectPluginButton.visible = UtilsAdapter.checkShowPluginsButton(false) - } - } + visible: PluginAdapter.chatHandlersListCount anchors.right: sendContactRequestButton.visible ? sendContactRequestButton.left : diff --git a/src/pluginadapter.cpp b/src/pluginadapter.cpp index 6b1e99b44..a7a0ee594 100644 --- a/src/pluginadapter.cpp +++ b/src/pluginadapter.cpp @@ -22,7 +22,13 @@ PluginAdapter::PluginAdapter(LRCInstance* instance, QObject* parent) : QmlAdapterBase(instance, parent) -{} +{ + updateHandlersListCount(); + connect(&lrcInstance_->pluginModel(), + &lrc::api::PluginModel::modelUpdated, + this, + &PluginAdapter::updateHandlersListCount); +} QVariant PluginAdapter::getMediaHandlerSelectableModel(const QString& callId) @@ -81,3 +87,15 @@ PluginAdapter::getPluginPreferencesCategories(const QString& pluginId, bool remo categories.pop_back(); return categories; } + +void +PluginAdapter::updateHandlersListCount() +{ + if (lrcInstance_->pluginModel().getPluginsEnabled()) { + set_callMediaHandlersListCount(lrcInstance_->pluginModel().getCallMediaHandlers().size()); + set_chatHandlersListCount(lrcInstance_->pluginModel().getChatHandlers().size()); + } else { + set_callMediaHandlersListCount(0); + set_chatHandlersListCount(0); + } +} \ No newline at end of file diff --git a/src/pluginadapter.h b/src/pluginadapter.h index 7571ffd44..95d9175ce 100644 --- a/src/pluginadapter.h +++ b/src/pluginadapter.h @@ -31,6 +31,9 @@ class PluginAdapter final : public QmlAdapterBase { Q_OBJECT + QML_PROPERTY(int, callMediaHandlersListCount) + QML_PROPERTY(int, chatHandlersListCount) + public: explicit PluginAdapter(LRCInstance* instance, QObject* parent = nullptr); ~PluginAdapter() = default; @@ -55,6 +58,8 @@ Q_SIGNALS: void pluginUninstalled(); private: + void updateHandlersListCount(); + std::unique_ptr<PluginHandlerItemListModel> pluginHandlerListModel_; std::unique_ptr<PreferenceItemListModel> preferenceItemListModel_; std::unique_ptr<PluginItemListModel> pluginItemListModel_; diff --git a/src/utilsadapter.cpp b/src/utilsadapter.cpp index fc21d1429..d126b24f9 100644 --- a/src/utilsadapter.cpp +++ b/src/utilsadapter.cpp @@ -300,17 +300,6 @@ UtilsAdapter::getAbsPath(QString path) #endif } -bool -UtilsAdapter::checkShowPluginsButton(bool isCall) -{ - if (isCall) - return lrcInstance_->pluginModel().getPluginsEnabled() - && (lrcInstance_->pluginModel().getCallMediaHandlers().size() > 0); - else - return lrcInstance_->pluginModel().getPluginsEnabled() - && (lrcInstance_->pluginModel().getChatHandlers().size() > 0); -} - QString UtilsAdapter::fileName(const QString& path) { diff --git a/src/utilsadapter.h b/src/utilsadapter.h index 6fd23d379..7df967637 100644 --- a/src/utilsadapter.h +++ b/src/utilsadapter.h @@ -71,7 +71,6 @@ public: Q_INVOKABLE QString toFileInfoName(QString inputFileName); Q_INVOKABLE QString toFileAbsolutepath(QString inputFileName); Q_INVOKABLE QString getAbsPath(QString path); - Q_INVOKABLE bool checkShowPluginsButton(bool isCall); Q_INVOKABLE QString fileName(const QString& path); Q_INVOKABLE QString getExt(const QString& path); Q_INVOKABLE bool isImage(const QString& fileExt); -- GitLab