diff --git a/src/mainview/components/MediaHandlerPicker.qml b/src/mainview/components/MediaHandlerPicker.qml index 6e002b68a1977a6f2bc2945431c750b6a26ef765..fec106108fe51848af86bc0b7cf91d315bf52376 100644 --- a/src/mainview/components/MediaHandlerPicker.qml +++ b/src/mainview/components/MediaHandlerPicker.qml @@ -21,14 +21,17 @@ import QtQuick.Controls 2.14 import QtQuick.Layouts 1.14 import QtQuick.Controls.Universal 2.14 import net.jami.Models 1.0 +import net.jami.Adapters 1.0 import "../../commoncomponents" Popup { id: root function toggleMediaHandlerSlot(mediaHandlerId, isLoaded) { - PluginModel.toggleCallMediaHandler(mediaHandlerId, !isLoaded) - mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel() + var callId = UtilsAdapter.getCallId(callStackViewWindow.responsibleAccountId, + callStackViewWindow.responsibleConvUid) + PluginModel.toggleCallMediaHandler(mediaHandlerId, callId, !isLoaded) + mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel(callId) } width: 350 @@ -93,7 +96,11 @@ Popup { Layout.preferredWidth: mediahandlerPickerPopupRect.width Layout.preferredHeight: 200 - model: PluginAdapter.getMediaHandlerSelectableModel() + model: { + var callId = UtilsAdapter.getCallId(callStackViewWindow.responsibleAccountId, + callStackViewWindow.responsibleConvUid) + return PluginAdapter.getMediaHandlerSelectableModel(callId) + } clip: true @@ -235,7 +242,9 @@ Popup { onAboutToShow: { // Reset the model on each show. - mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel() + var callId = UtilsAdapter.getCallId(callStackViewWindow.responsibleAccountId, + callStackViewWindow.responsibleConvUid) + mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel(callId) } background: Rectangle { diff --git a/src/mediahandleritemlistmodel.cpp b/src/mediahandleritemlistmodel.cpp index 3c9d3a1578c13117ab170882a8ca67e0b014d5c9..2fae003bf34626dde824851c632dd379cd03a2fa 100644 --- a/src/mediahandleritemlistmodel.cpp +++ b/src/mediahandleritemlistmodel.cpp @@ -18,9 +18,11 @@ #include "mediahandleritemlistmodel.h" -MediaHandlerItemListModel::MediaHandlerItemListModel(QObject* parent) +MediaHandlerItemListModel::MediaHandlerItemListModel(QObject* parent, const QString& callId) : QAbstractListModel(parent) -{} +{ + callId_ = callId; +} MediaHandlerItemListModel::~MediaHandlerItemListModel() {} @@ -59,10 +61,11 @@ MediaHandlerItemListModel::data(const QModelIndex& index, int role) const auto details = LRCInstance::pluginModel().getCallMediaHandlerDetails( mediahandlerList.at(index.row())); - auto status = LRCInstance::pluginModel().getCallMediaHandlerStatus(); + auto status = LRCInstance::pluginModel().getCallMediaHandlerStatus(callId_); bool loaded = false; - if (status["name"] == details.id) - loaded = true; + for (const auto& mediaHandler : status[callId_]) + if (mediaHandler == details.id) + loaded = true; if (!details.pluginId.isEmpty()) { details.pluginId.remove(details.pluginId.size() - 5, 5); } @@ -132,3 +135,15 @@ MediaHandlerItemListModel::reset() beginResetModel(); endResetModel(); } + +QString +MediaHandlerItemListModel::callId() +{ + return callId_; +} + +void +MediaHandlerItemListModel::setCallId(QString callId) +{ + callId_ = callId; +} diff --git a/src/mediahandleritemlistmodel.h b/src/mediahandleritemlistmodel.h index 11fe45b3b96af4d80f90a3bed6eeb3de7c613b9d..7f262361fa19dac8add84241af9610dd384d658a 100644 --- a/src/mediahandleritemlistmodel.h +++ b/src/mediahandleritemlistmodel.h @@ -38,7 +38,7 @@ public: }; Q_ENUM(Role) - explicit MediaHandlerItemListModel(QObject* parent = 0); + explicit MediaHandlerItemListModel(QObject* parent = 0, const QString& callId = QString("")); ~MediaHandlerItemListModel(); /* @@ -59,4 +59,10 @@ public: * This function is to reset the model when there's new account added. */ Q_INVOKABLE void reset(); + + QString callId(); + void setCallId(QString callId); + +private: + QString callId_ = QString(""); }; diff --git a/src/pluginadapter.cpp b/src/pluginadapter.cpp index 57b5d8bec950bb632fb3463214eb50a2577e5d92..83aa1f1d5fdf01276ead50c50f66c8cb47c56a40 100644 --- a/src/pluginadapter.cpp +++ b/src/pluginadapter.cpp @@ -25,9 +25,9 @@ PluginAdapter::PluginAdapter(QObject* parent) {} QVariant -PluginAdapter::getMediaHandlerSelectableModel() +PluginAdapter::getMediaHandlerSelectableModel(const QString& callId) { - mediaHandlerListModel_.reset(new MediaHandlerItemListModel(this)); + mediaHandlerListModel_.reset(new MediaHandlerItemListModel(this, callId)); return QVariant::fromValue(mediaHandlerListModel_.get()); } diff --git a/src/pluginadapter.h b/src/pluginadapter.h index 814fcbb4014013606e9e6bd656ae74d29dcc89be..13a1fd48a21cd2dd1e5fe12eab22daf094119680 100644 --- a/src/pluginadapter.h +++ b/src/pluginadapter.h @@ -38,7 +38,7 @@ public: protected: void safeInit() override {}; - Q_INVOKABLE QVariant getMediaHandlerSelectableModel(); + Q_INVOKABLE QVariant getMediaHandlerSelectableModel(const QString& callId = QString("")); Q_INVOKABLE QVariant getPluginSelectableModel(); Q_INVOKABLE QVariant getPluginPreferencesModel(const QString& pluginId, const QString& mediaHandlerName = ""); diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml index dbc5cb93b13812706b8e81965a7b0289d540e383..ba7cf74087c4cc84e40cda242d1ae6fbd0ff6c01 100644 --- a/src/settingsview/components/PluginSettingsPage.qml +++ b/src/settingsview/components/PluginSettingsPage.qml @@ -65,7 +65,6 @@ Rectangle { pluginListSettingsView.visible = checked if (!pluginListSettingsView.visible) { - PluginModel.toggleCallMediaHandler("", true) pluginListSettingsView.hidePreferences() } }