diff --git a/src/commoncomponents/PreferenceItemDelegate.qml b/src/commoncomponents/PreferenceItemDelegate.qml index f59c8d264af6baf9e04bc3690df0ac0abe5459b3..97c8af5d0d8d599553ae03fc96fe0b410a3dd941 100644 --- a/src/commoncomponents/PreferenceItemDelegate.qml +++ b/src/commoncomponents/PreferenceItemDelegate.qml @@ -36,6 +36,7 @@ ItemDelegate { enum Type { LIST, PATH, + EDITTEXT, DEFAULT } @@ -53,15 +54,15 @@ ItemDelegate { signal btnPreferenceClicked - function getNewPreferenceValueSlot(index){ - switch (preferenceType){ + function getNewPreferenceValueSlot(index) { + switch (preferenceType) { case PreferenceItemDelegate.LIST: pluginListPreferenceModel.idx = index preferenceNewValue = pluginListPreferenceModel.preferenceNewValue btnPreferenceClicked() break case PreferenceItemDelegate.PATH: - if(index === 0){ + if (index === 0) { preferenceFilePathDialog.title = qsTr("Select An Image to " + preferenceName) preferenceFilePathDialog.nameFilters = fileFilters preferenceFilePathDialog.open() @@ -69,6 +70,10 @@ ItemDelegate { else btnPreferenceClicked() break + case PreferenceItemDelegate.EDITTEXT: + preferenceNewValue = editTextPreference.text + btnPreferenceClicked() + break default: break } @@ -91,7 +96,7 @@ ItemDelegate { anchors.fill: parent Label { - Layout.preferredWidth: root.width / 2 + Layout.preferredWidth: root.width / 2 - 8 Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.leftMargin: 8 @@ -143,11 +148,11 @@ ItemDelegate { id: pathPreferenceButton visible: preferenceType === PreferenceItemDelegate.PATH - width: root.width / 2 - 16 + width: root.width / 2 - 8 Layout.preferredWidth: width Layout.preferredHeight: 30 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter - Layout.rightMargin: 30 + Layout.rightMargin: 8 text: UtilsAdapter.fileName(preferenceCurrentValue) toolTipText: JamiStrings.chooseImageFile @@ -158,5 +163,25 @@ ItemDelegate { onClicked: getNewPreferenceValueSlot(0) } + + MaterialLineEdit { + id: editTextPreference + + visible: preferenceType === PreferenceItemDelegate.EDITTEXT + width: root.width / 2 - 8 + Layout.preferredWidth: root.width / 2 - 8 + Layout.preferredHeight: 30 + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.rightMargin: 8 + + selectByMouse: true + text: preferenceCurrentValue + + font.pointSize: JamiTheme.settingsFontSize + padding: 8 + wrapMode: Text.NoWrap + + onEditingFinished: getNewPreferenceValueSlot(0) + } } } diff --git a/src/mainview/components/PluginHandlerPicker.qml b/src/mainview/components/PluginHandlerPicker.qml index 307c5e645b58047572af632fee1a1e6d4cca4c50..1315a9ae2e3ab4e5811b7ac44019d801605e0909 100644 --- a/src/mainview/components/PluginHandlerPicker.qml +++ b/src/mainview/components/PluginHandlerPicker.qml @@ -278,7 +278,7 @@ Popup { onBtnPreferenceClicked: { PluginModel.setPluginPreference(pluginId, preferenceKey, preferenceNewValue) - PluginAdapter.pluginHandlersUpdateStatus() + PluginAdapter.preferenceChanged(pluginId) pluginhandlerPreferencePickerListView.model = PluginAdapter.getPluginPreferencesModel(pluginId, pluginhandlerPreferencePickerListView.handlerName) } } diff --git a/src/pluginadapter.h b/src/pluginadapter.h index 68e993cfe0516f1f159e3cc3a5f265d1a400da5c..bf23712440fe7a458823be5a02f3e8f80c4241eb 100644 --- a/src/pluginadapter.h +++ b/src/pluginadapter.h @@ -47,6 +47,7 @@ protected: signals: void pluginHandlersUpdateStatus(); + void preferenceChanged(QString pluginId); private: std::unique_ptr<PluginHandlerItemListModel> pluginHandlerListModel_; diff --git a/src/preferenceitemlistmodel.cpp b/src/preferenceitemlistmodel.cpp index e501aaeae2452b908b54e95d9160ad9bd861a6db..bd4e35e5d94fcdae76e2a6c072345281a91b944e 100644 --- a/src/preferenceitemlistmodel.cpp +++ b/src/preferenceitemlistmodel.cpp @@ -23,7 +23,8 @@ #include <map> std::map<QString, int> mapType {{QString("List"), PreferenceItemListModel::Type::LIST}, - {QString("Path"), PreferenceItemListModel::Type::PATH}}; + {QString("Path"), PreferenceItemListModel::Type::PATH}, + {QString("EditText"), PreferenceItemListModel::Type::EDITTEXT}}; PreferenceItemListModel::PreferenceItemListModel(QObject* parent) : QAbstractListModel(parent) diff --git a/src/preferenceitemlistmodel.h b/src/preferenceitemlistmodel.h index 2bed54e2b00733feb45e5a08f6fc3ae7720bbc97..57bb6a16ae38cd978fa889d22673ccd77ffe7141 100644 --- a/src/preferenceitemlistmodel.h +++ b/src/preferenceitemlistmodel.h @@ -47,6 +47,7 @@ public: typedef enum { LIST, PATH, + EDITTEXT, DEFAULT, } Type; diff --git a/src/settingsview/components/PluginListPreferencesView.qml b/src/settingsview/components/PluginListPreferencesView.qml index acf70bb93b2af899339171f89f6b844fd64ed999..04629484fee915c63174bcad08e7a137532d7d89 100644 --- a/src/settingsview/components/PluginListPreferencesView.qml +++ b/src/settingsview/components/PluginListPreferencesView.qml @@ -34,6 +34,7 @@ Rectangle { enum Type { LIST, PATH, + EDITTEXT, DEFAULT } @@ -47,6 +48,15 @@ Rectangle { signal uninstalled + Connections{ + target: PluginAdapter + + function onPreferenceChanged(pluginId) { + if (root.pluginId == pluginId) + pluginPreferenceView.model = PluginAdapter.getPluginPreferencesModel(pluginId) + } + } + function resetPluginSlot() { msgDialog.buttonCallBacks = [function () {resetPlugin()}] msgDialog.openWithParameters(qsTr("Reset preferences"),