diff --git a/images/icons/insert_drive_file-24dp.svg b/images/icons/insert_drive_file-24dp.svg
new file mode 100644
index 000000000..91a279fa1
--- /dev/null
+++ b/images/icons/insert_drive_file-24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/jami-qt.pro b/jami-qt.pro
index 6ac56315f..f7691b924 100644
--- a/jami-qt.pro
+++ b/jami-qt.pro
@@ -136,7 +136,7 @@ HEADERS += ./src/smartlistmodel.h \
./src/qmladapterbase.h \
./src/avadapter.h \
./src/contactadapter.h \
- ./src/mediahandleradapter.h \
+ ./src/pluginadapter.h \
./src/settingsadapter.h \
./src/deviceitemlistmodel.h \
./src/pluginitemlistmodel.h \
@@ -150,7 +150,6 @@ HEADERS += ./src/smartlistmodel.h \
./src/videoinputdevicemodel.h \
./src/audiooutputdevicemodel.h \
./src/pluginlistpreferencemodel.h \
- ./src/mediahandlerlistpreferencemodel.h \
./src/videoformatfpsmodel.h \
./src/videoformatresolutionmodel.h \
./src/audiomanagerlistmodel.h \
@@ -176,7 +175,7 @@ SOURCES += ./src/bannedlistmodel.cpp \
./src/previewrenderer.cpp \
./src/avadapter.cpp \
./src/contactadapter.cpp \
- ./src/mediahandleradapter.cpp \
+ ./src/pluginadapter.cpp \
./src/settingsadapter.cpp \
./src/deviceitemlistmodel.cpp \
./src/pluginitemlistmodel.cpp \
@@ -190,7 +189,6 @@ SOURCES += ./src/bannedlistmodel.cpp \
./src/videoinputdevicemodel.cpp \
./src/audiooutputdevicemodel.cpp \
./src/pluginlistpreferencemodel.cpp \
- ./src/mediahandlerlistpreferencemodel.cpp \
./src/videoformatfpsmodel.cpp \
./src/videoformatresolutionmodel.cpp \
./src/audiomanagerlistmodel.cpp \
diff --git a/resources.qrc b/resources.qrc
index 52770ec71..808ae97ff 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -117,5 +117,6 @@
images/icons/drafts-24px.svg
images/icons/person_add-24px.svg
images/icons/router-24px.svg
+ images/icons/insert_drive_file-24dp.svg
diff --git a/src/clientwrapper.h b/src/clientwrapper.h
index 790e6e8e3..f9a078ab6 100644
--- a/src/clientwrapper.h
+++ b/src/clientwrapper.h
@@ -26,7 +26,7 @@
#include "bannedlistmodel.h"
#include "calladapter.h"
#include "contactadapter.h"
-#include "mediahandleradapter.h"
+#include "pluginadapter.h"
#include "conversationsadapter.h"
#include "deviceitemlistmodel.h"
#include "pluginitemlistmodel.h"
diff --git a/src/commoncomponents/PreferenceItemDelegate.qml b/src/commoncomponents/PreferenceItemDelegate.qml
index 6a8f50064..ab2b2b7a2 100644
--- a/src/commoncomponents/PreferenceItemDelegate.qml
+++ b/src/commoncomponents/PreferenceItemDelegate.qml
@@ -34,35 +34,35 @@ ItemDelegate {
enum Type {
LIST,
- USERLIST,
+ PATH,
DEFAULT
}
property string preferenceName: ""
property string preferenceSummary: ""
+ property string preferenceKey: ""
property int preferenceType: -1
property string preferenceCurrentValue: ""
property string preferenceNewValue: ""
property string pluginId: ""
+ property string currentPath: ""
+ property bool isImage: false
+ property var fileFilters: []
property PluginListPreferenceModel pluginListPreferenceModel
signal btnPreferenceClicked
- signal preferenceAdded
function getNewPreferenceValueSlot(index){
- pluginListPreferenceModel.idx = index
- preferenceNewValue = pluginListPreferenceModel.preferenceNewValue
switch (preferenceType){
case PreferenceItemDelegate.LIST:
+ pluginListPreferenceModel.idx = index
+ preferenceNewValue = pluginListPreferenceModel.preferenceNewValue
btnPreferenceClicked()
break
- case PreferenceItemDelegate.USERLIST:
+ case PreferenceItemDelegate.PATH:
if(index == 0){
- preferenceFilePathDialog.pluginListPreferenceModel = pluginListPreferenceModel
preferenceFilePathDialog.title = qsTr("Select An Image to " + preferenceName)
- preferenceFilePathDialog.nameFilters = [qsTr("PNG Files") + " (*.png)", qsTr(
- "All files") + " (*)"]
- preferenceFilePathDialog.preferenceKey = pluginListPreferenceModel.preferenceKey
+ preferenceFilePathDialog.nameFilters = fileFilters
preferenceFilePathDialog.open()
}
else
@@ -76,36 +76,28 @@ ItemDelegate {
FileDialog {
id: preferenceFilePathDialog
- property string preferenceKey: ""
- property PluginListPreferenceModel pluginListPreferenceModel
-
title: qsTr("Please choose a file")
- folder: StandardPaths.writableLocation(StandardPaths.DownloadLocation)
-
- onRejected: preferenceAdded()
+ folder: "file://" + currentPath
onAccepted: {
var url = ClientWrapper.utilsAdaptor.getAbsPath(fileUrl.toString())
- ClientWrapper.pluginModel.addValueToPreference(pluginId, preferenceKey, url)
- pluginListPreferenceModel.populateLists()
- pluginListPreferenceModel.getCurrentSettingIndex()
- preferenceAdded()
+ preferenceNewValue = url
+ btnPreferenceClicked()
}
}
RowLayout{
anchors.fill: parent
- Label{
- visible: preferenceType === PreferenceItemDelegate.DEFAULT
- Layout.fillWidth: true
- Layout.alignment: Qt.AlingVCenter | Qt.AligntLeft
+ Label {
+ Layout.preferredWidth: root.width / 2
+ Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
Layout.leftMargin: 8
- font.pointSize: JamiTheme.settingsFontSize
- font.kerning: true
- font.bold: true
text: preferenceName
+ font.pointSize: JamiTheme.settingsFontSize
+ ToolTip.visible: hovered
+ ToolTip.text: preferenceSummary
}
HoverableRadiusButton{
@@ -135,19 +127,6 @@ ItemDelegate {
}
}
- Label {
- visible: preferenceType === PreferenceItemDelegate.LIST
- Layout.preferredWidth: root.width / 2
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.leftMargin: 8
-
- text: preferenceName
- font.pointSize: JamiTheme.settingsFontSize
- ToolTip.visible: hovered
- ToolTip.text: preferenceSummary
- }
-
-
SettingParaCombobox {
id: listPreferenceComboBox
visible: preferenceType === PreferenceItemDelegate.LIST
@@ -167,35 +146,29 @@ ItemDelegate {
}
}
- Label {
- visible: preferenceType === PreferenceItemDelegate.USERLIST
- Layout.preferredWidth: root.width / 2
- Layout.leftMargin: 8
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-
- text: preferenceName
- font.pointSize: JamiTheme.settingsFontSize
- ToolTip.visible: hovered
- ToolTip.text: preferenceSummary
- }
-
-
- SettingParaCombobox {
- id: userListPreferenceComboBox
- visible: preferenceType === PreferenceItemDelegate.USERLIST
- Layout.preferredWidth: root.width / 2 - 8
+ HoverableRadiusButton {
+ id: pathPreferenceButton
+ visible: preferenceType === PreferenceItemDelegate.PATH
+ Layout.preferredWidth: root.width / 2 - 16
+ Layout.maximumWidth: root.width / 2 - 16
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- Layout.rightMargin: 8
+ Layout.rightMargin: 30
+ Layout.preferredHeight: 30
- font.pointSize: JamiTheme.settingsFontSize
- font.kerning: true
+ radius: height / 2
- model: pluginListPreferenceModel
- currentIndex: pluginListPreferenceModel.getCurrentSettingIndex()
- textRole: qsTr("PreferenceValue")
- tooltipText: qsTr("Choose the preference")
- onActivated: {
- getNewPreferenceValueSlot(index)
+ icon.source: "qrc:/images/icons/round-folder-24px.svg"
+ icon.height: 24
+ icon.width: 24
+
+ toolTipText: qsTr("Press to choose an image file")
+ text: {
+ return ClientWrapper.utilsAdaptor.fileName(preferenceCurrentValue)
+ }
+ fontPointSize: JamiTheme.buttonFontSize
+
+ onClicked: {
+ getNewPreferenceValueSlot(0)
}
}
}
diff --git a/src/mainview/components/MediaHandlerPicker.qml b/src/mainview/components/MediaHandlerPicker.qml
index c57fcf49c..3030f44e8 100644
--- a/src/mainview/components/MediaHandlerPicker.qml
+++ b/src/mainview/components/MediaHandlerPicker.qml
@@ -27,7 +27,7 @@ Popup {
id: root
function toggleMediaHandlerSlot(mediaHandlerId, isLoaded) {
ClientWrapper.pluginModel.toggleCallMediaHandler(mediaHandlerId, !isLoaded)
- mediahandlerPickerListView.model = MediaHandlerAdapter.getMediaHandlerSelectableModel()
+ mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel()
}
width: 350
@@ -96,7 +96,7 @@ Popup {
Layout.preferredWidth: mediahandlerPickerPopupRect.width
Layout.preferredHeight: 200
- model: MediaHandlerAdapter.getMediaHandlerSelectableModel()
+ model: PluginAdapter.getMediaHandlerSelectableModel()
clip: true
@@ -119,7 +119,7 @@ Popup {
onOpenPreferences: {
mediahandlerPreferencePickerListView.pluginId = pluginId
mediahandlerPreferencePickerListView.mediaHandlerName = mediaHandlerName
- mediahandlerPreferencePickerListView.model = MediaHandlerAdapter.getMediaHandlerPreferencesModel(pluginId, mediaHandlerName)
+ mediahandlerPreferencePickerListView.model = PluginAdapter.getPluginPreferencesModel(pluginId, mediaHandlerName)
stack.currentIndex = 1
}
}
@@ -204,20 +204,24 @@ Popup {
property string pluginId: ""
property string mediaHandlerName: ""
- model: MediaHandlerAdapter.getMediaHandlerPreferencesModel(pluginId, mediaHandlerName)
+ model: PluginAdapter.getPluginPreferencesModel(pluginId, mediaHandlerName)
clip: true
delegate: PreferenceItemDelegate {
id: mediaHandlerPreferenceDelegate
width: mediahandlerPreferencePickerListView.width
- height: 50
+ height: childrenRect.height
preferenceName: PreferenceName
preferenceSummary: PreferenceSummary
preferenceType: PreferenceType
preferenceCurrentValue: PreferenceCurrentValue
pluginId: PluginId
+ currentPath: CurrentPath
+ preferenceKey : PreferenceKey
+ fileFilters: FileFilters
+ isImage: IsImage
pluginListPreferenceModel: PluginListPreferenceModel{
id: pluginListPreferenceModel
preferenceKey : PreferenceKey
@@ -227,13 +231,9 @@ Popup {
onClicked: mediahandlerPreferencePickerListView.currentIndex = index
onBtnPreferenceClicked: {
- ClientWrapper.pluginModel.setPluginPreference(pluginListPreferenceModel.pluginId,
- pluginListPreferenceModel.preferenceKey,
- pluginListPreferenceModel.preferenceNewValue)
- mediahandlerPreferencePickerListView.model = MediaHandlerAdapter.getMediaHandlerPreferencesModel(pluginId, mediahandlerPreferencePickerListView.mediaHandlerName)
+ ClientWrapper.pluginModel.setPluginPreference(pluginId, preferenceKey, preferenceNewValue)
+ mediahandlerPreferencePickerListView.model = PluginAdapter.getPluginPreferencesModel(pluginId, mediahandlerPreferencePickerListView.mediaHandlerName)
}
-
- onPreferenceAdded: mediahandlerPreferencePickerListView.model = MediaHandlerAdapter.getMediaHandlerPreferencesModel(pluginId, mediahandlerPreferencePickerListView.mediaHandlerName)
}
ScrollIndicator.vertical: ScrollIndicator {}
@@ -246,7 +246,7 @@ Popup {
onAboutToShow: {
// Reset the model on each show.
- mediahandlerPickerListView.model = MediaHandlerAdapter.getMediaHandlerSelectableModel()
+ mediahandlerPickerListView.model = PluginAdapter.getMediaHandlerSelectableModel()
}
background: Rectangle {
diff --git a/src/mediahandleradapter.cpp b/src/mediahandleradapter.cpp
deleted file mode 100644
index d35117d59..000000000
--- a/src/mediahandleradapter.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (C) 2020 by Savoir-faire Linux
- * Author: Aline Gondim Santos
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include "mediahandleradapter.h"
-
-#include "lrcinstance.h"
-
-MediaHandlerAdapter::MediaHandlerAdapter(QObject* parent)
- : QmlAdapterBase(parent)
-{}
-
-QVariant
-MediaHandlerAdapter::getMediaHandlerSelectableModel()
-{
- /*
- * Called from qml every time contact picker refreshes.
- */
- mediaHandlerListModel_.reset(new MediaHandlerItemListModel(this));
-
- return QVariant::fromValue(mediaHandlerListModel_.get());
-}
-
-QVariant
-MediaHandlerAdapter::getMediaHandlerPreferencesModel(QString pluginId, QString mediaHandlerName)
-{
- /*
- * Called from qml every time contact picker refreshes.
- */
- mediaHandlerPreferenceItemListModel_.reset(new PreferenceItemListModel(this));
- mediaHandlerPreferenceItemListModel_->setMediaHandlerName(mediaHandlerName);
- mediaHandlerPreferenceItemListModel_->setPluginId(pluginId);
-
- return QVariant::fromValue(mediaHandlerPreferenceItemListModel_.get());
-}
-
-QVariant
-MediaHandlerAdapter::getMediaHandlerPreferencesSelectableModel(QString pluginId)
-{
- /*
- * Called from qml every time contact picker refreshes.
- */
- mediaHandlerListPreferenceModel_.reset(new MediaHandlerListPreferenceModel(this));
- mediaHandlerListPreferenceModel_->setPluginId(pluginId);
-
- return QVariant::fromValue(mediaHandlerListPreferenceModel_.get());
-}
diff --git a/src/mediahandlerlistpreferencemodel.cpp b/src/mediahandlerlistpreferencemodel.cpp
deleted file mode 100644
index dde3c6012..000000000
--- a/src/mediahandlerlistpreferencemodel.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Copyright (C) 2019-2020 by Savoir-faire Linux
- * Author: Aline Gondim Santos
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include "mediahandlerlistpreferencemodel.h"
-#include
-
-MediaHandlerListPreferenceModel::MediaHandlerListPreferenceModel(QObject* parent)
- : QAbstractListModel(parent)
-{}
-
-MediaHandlerListPreferenceModel::~MediaHandlerListPreferenceModel() {}
-
-void
-MediaHandlerListPreferenceModel::populateLists()
-{
- preferenceValuesList_.clear();
- preferenceList_.clear();
- const auto preferences = LRCInstance::pluginModel().getPluginPreferences(pluginId_);
- for (const auto& preference : preferences) {
- if (preference["key"] == preferenceKey_) {
- auto entries = preference["entries"];
- auto entriesValues = preference["entryValues"];
- std::string entry = entries.toStdString();
- std::string entryValues = entriesValues.toStdString();
- std::string delimiter = ",";
-
- size_t pos = 0;
- std::string token;
- while ((pos = entry.find(delimiter)) != std::string::npos) {
- preferenceList_.emplace_back(entry.substr(0, pos));
-
- entry.erase(0, pos + delimiter.length());
- }
- preferenceList_.emplace_back(entry.substr(0, pos));
- while ((pos = entryValues.find(delimiter)) != std::string::npos) {
- preferenceValuesList_.emplace_back(entryValues.substr(0, pos));
-
- entryValues.erase(0, pos + delimiter.length());
- }
- preferenceValuesList_.emplace_back(entryValues.substr(0, pos));
- }
- }
- getCurrentSettingIndex();
-}
-
-int
-MediaHandlerListPreferenceModel::rowCount(const QModelIndex& parent) const
-{
- if (!parent.isValid()) {
- /// Count
- return preferenceList_.size();
- }
- /// A valid QModelIndex returns 0 as no entry has sub-elements.
- return 0;
-}
-
-int
-MediaHandlerListPreferenceModel::columnCount(const QModelIndex& parent) const
-{
- Q_UNUSED(parent);
- /// Only need one column.
- return 1;
-}
-
-QVariant
-MediaHandlerListPreferenceModel::data(const QModelIndex& index, int role) const
-{
- if (!index.isValid() || preferenceList_.size() <= index.row()) {
- return QVariant();
- }
-
- switch (role) {
- case Role::PreferenceValue:
- return QVariant(QString::fromStdString(preferenceList_.at(index.row())));
- case Role::PreferenceEntryValue:
- return QVariant(QString::fromStdString(preferenceValuesList_.at(index.row())));
- }
- return QVariant();
-}
-
-QHash
-MediaHandlerListPreferenceModel::roleNames() const
-{
- QHash roles;
- roles[PreferenceValue] = "PreferenceValue";
- roles[PreferenceEntryValue] = "PreferenceEntryValue";
- return roles;
-}
-
-QModelIndex
-MediaHandlerListPreferenceModel::index(int row, int column, const QModelIndex& parent) const
-{
- Q_UNUSED(parent);
- if (column != 0) {
- return QModelIndex();
- }
-
- if (row >= 0 && row < rowCount()) {
- return createIndex(row, column);
- }
- return QModelIndex();
-}
-
-QModelIndex
-MediaHandlerListPreferenceModel::parent(const QModelIndex& child) const
-{
- Q_UNUSED(child);
- return QModelIndex();
-}
-
-Qt::ItemFlags
-MediaHandlerListPreferenceModel::flags(const QModelIndex& index) const
-{
- auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
- if (!index.isValid()) {
- return QAbstractItemModel::flags(index);
- }
- return flags;
-}
-
-void
-MediaHandlerListPreferenceModel::reset()
-{
- beginResetModel();
- endResetModel();
-}
-
-int
-MediaHandlerListPreferenceModel::getCurrentSettingIndex()
-{
- auto resultList = match(index(0, 0), PreferenceEntryValue, preferenceCurrentValue());
-
- int resultRowIndex = 0;
- if (resultList.size() > 0) {
- resultRowIndex = resultList[0].row();
- }
-
- return resultRowIndex;
-}
diff --git a/src/mediahandlerlistpreferencemodel.h b/src/mediahandlerlistpreferencemodel.h
deleted file mode 100644
index 30ff594b7..000000000
--- a/src/mediahandlerlistpreferencemodel.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Copyright (C) 2020 by Savoir-faire Linux
- * Author: Aline Gondim Santos
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include
-
-#include "api/pluginmodel.h"
-
-#include "lrcinstance.h"
-
-class MediaHandlerListPreferenceModel : public QAbstractListModel
-{
- Q_OBJECT
- Q_PROPERTY(QString pluginId READ pluginId WRITE setPluginId)
- Q_PROPERTY(QString preferenceKey READ preferenceKey WRITE setPreferenceKey)
- Q_PROPERTY(QString preferenceNewValue READ preferenceNewValue WRITE setPreferenceNewValue)
- Q_PROPERTY(int idx READ idx WRITE setIdx)
- Q_PROPERTY(int optSize READ optSize)
-public:
- enum Role { PreferenceValue = Qt::UserRole + 1, PreferenceEntryValue };
- Q_ENUM(Role)
-
- explicit MediaHandlerListPreferenceModel(QObject* parent = 0);
- ~MediaHandlerListPreferenceModel();
-
- /*
- * QAbstractListModel override.
- */
- int rowCount(const QModelIndex& parent = QModelIndex()) const override;
- int columnCount(const QModelIndex& parent) const override;
- QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
- /*
- * Override role name as access point in qml.
- */
- QHash roleNames() const override;
- QModelIndex index(int row, int column = 0, const QModelIndex& parent = QModelIndex()) const;
- QModelIndex parent(const QModelIndex& child) const;
- Qt::ItemFlags flags(const QModelIndex& index) const;
-
- /*
- * This function is to reset the model when there's new account added.
- */
- Q_INVOKABLE void reset();
- /*
- * This function is to get the current preference value
- */
- Q_INVOKABLE int getCurrentSettingIndex();
-
- Q_INVOKABLE void populateLists();
-
- void setPreferenceNewValue(const QString preferenceNewValue)
- {
- preferenceNewValue_ = preferenceNewValue;
- }
- void setPreferenceKey(const QString preferenceKey) { preferenceKey_ = preferenceKey; }
- void setPluginId(const QString pluginId)
- {
- pluginId_ = pluginId;
- populateLists();
- }
-
- void setIdx(const int index) { idx_ = index; }
-
- int idx() { return idx_; }
- QString preferenceCurrentValue()
- {
- return LRCInstance::pluginModel().getPluginPreferencesValues(pluginId_)[preferenceKey_];
- }
-
- QString preferenceNewValue()
- {
- preferenceNewValue_ = QString::fromStdString(preferenceValuesList_[idx_]);
- return preferenceNewValue_;
- }
- QString preferenceKey() { return preferenceKey_; }
- QString pluginId() { return pluginId_; }
- int optSize() { return preferenceValuesList_.size(); }
-
-private:
- QString pluginId_ = "";
- QString preferenceKey_ = "";
- QString preferenceNewValue_ = "";
- std::vector preferenceValuesList_;
- std::vector preferenceList_;
- int idx_ = 0;
-};
diff --git a/src/pluginadapter.cpp b/src/pluginadapter.cpp
new file mode 100644
index 000000000..57b5d8bec
--- /dev/null
+++ b/src/pluginadapter.cpp
@@ -0,0 +1,49 @@
+/*!
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Aline Gondim Santos
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "pluginadapter.h"
+
+#include "lrcinstance.h"
+
+PluginAdapter::PluginAdapter(QObject* parent)
+ : QmlAdapterBase(parent)
+{}
+
+QVariant
+PluginAdapter::getMediaHandlerSelectableModel()
+{
+ mediaHandlerListModel_.reset(new MediaHandlerItemListModel(this));
+ return QVariant::fromValue(mediaHandlerListModel_.get());
+}
+
+QVariant
+PluginAdapter::getPluginSelectableModel()
+{
+ pluginItemListModel_.reset(new PluginItemListModel(this));
+ return QVariant::fromValue(pluginItemListModel_.get());
+}
+
+QVariant
+PluginAdapter::getPluginPreferencesModel(const QString& pluginId, const QString& mediaHandlerName)
+{
+ preferenceItemListModel_.reset(new PreferenceItemListModel(this));
+ preferenceItemListModel_->setMediaHandlerName(mediaHandlerName);
+ preferenceItemListModel_->setPluginId(pluginId);
+
+ return QVariant::fromValue(preferenceItemListModel_.get());
+}
diff --git a/src/mediahandleradapter.h b/src/pluginadapter.h
similarity index 67%
rename from src/mediahandleradapter.h
rename to src/pluginadapter.h
index 57837a68f..814fcbb40 100644
--- a/src/mediahandleradapter.h
+++ b/src/pluginadapter.h
@@ -19,31 +19,32 @@
#pragma once
#include "qmladapterbase.h"
+#include "pluginitemlistmodel.h"
#include "mediahandleritemlistmodel.h"
-#include "mediahandlerlistpreferencemodel.h"
+#include "pluginlistpreferencemodel.h"
#include "preferenceitemlistmodel.h"
#include
#include
#include
-class MediaHandlerAdapter final : public QmlAdapterBase
+class PluginAdapter final : public QmlAdapterBase
{
Q_OBJECT
public:
- explicit MediaHandlerAdapter(QObject* parent = nullptr);
- ~MediaHandlerAdapter() = default;
+ explicit PluginAdapter(QObject* parent = nullptr);
+ ~PluginAdapter() = default;
protected:
void safeInit() override {};
Q_INVOKABLE QVariant getMediaHandlerSelectableModel();
- Q_INVOKABLE QVariant getMediaHandlerPreferencesModel(QString pluginId, QString mediaHandlerName);
- Q_INVOKABLE QVariant getMediaHandlerPreferencesSelectableModel(QString pluginId);
+ Q_INVOKABLE QVariant getPluginSelectableModel();
+ Q_INVOKABLE QVariant getPluginPreferencesModel(const QString& pluginId,
+ const QString& mediaHandlerName = "");
private:
std::unique_ptr mediaHandlerListModel_;
- std::unique_ptr mediaHandlerPreferenceItemListModel_;
- std::unique_ptr mediaHandlerListPreferenceModel_;
-
+ std::unique_ptr preferenceItemListModel_;
+ std::unique_ptr pluginItemListModel_;
};
diff --git a/src/pluginlistpreferencemodel.cpp b/src/pluginlistpreferencemodel.cpp
index 8e76a276f..9f54fb359 100644
--- a/src/pluginlistpreferencemodel.cpp
+++ b/src/pluginlistpreferencemodel.cpp
@@ -33,7 +33,9 @@ PluginListPreferenceModel::populateLists()
const auto preferences = LRCInstance::pluginModel().getPluginPreferences(pluginId_);
for (const auto& preference : preferences) {
if (preference["key"] == preferenceKey_) {
- preferenceList_ = preference["entries"].split(",");
+ if (preference.find("entries") != preference.end()
+ && preference.find("entryValues") != preference.end())
+ preferenceList_ = preference["entries"].split(",");
preferenceValuesList_ = preference["entryValues"].split(",");
break;
}
diff --git a/src/preferenceitemlistmodel.cpp b/src/preferenceitemlistmodel.cpp
index 7742ff090..226e66532 100644
--- a/src/preferenceitemlistmodel.cpp
+++ b/src/preferenceitemlistmodel.cpp
@@ -17,10 +17,11 @@
*/
#include "preferenceitemlistmodel.h"
+#include "utils.h"
#include