Skip to content

Commit

Permalink
Add support for cookie editing in QML (issue #2147)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bionus committed Sep 16, 2021
1 parent f63be64 commit 9cfcafa
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
43 changes: 43 additions & 0 deletions src/gui-qml/src/components/settings/SourceSettingsScreen.qml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@ Page {
headers = arr
}

property var cookies: []
function writeCookies(arr) {
var vals = arr.map((c) => c.key + "=" + c.value)
console.log("vals", JSON.stringify(vals))
root.site.settings.setValue("cookies", vals)
}
function refreshCookies() {
cookies = root.site.settings.value("cookies").map((c) => {
var index = c.indexOf("=")
var key = c.substring(0, index)
var value = c.substring(index + 1)
return { key, value }
})
console.log("cookies", JSON.stringify(cookies))
}

header: ToolBar {
RowLayout {
anchors.fill: parent
Expand Down Expand Up @@ -257,6 +273,33 @@ Page {
Layout.fillWidth: true
}

SettingTitle {
Layout.fillWidth: true
text: qsTr("Cookies")
}
KeyValueSetting {
values: cookies
onAppend: {
var arr = cookies.slice().concat({ key, value })
writeCookies(arr)
refreshCookies()
}
onEdit: {
var arr = cookies.slice()
arr[index] = { key, value }
writeCookies(arr)
refreshCookies()
}
onRemove: {
var arr = cookies.slice()
arr.splice(index, 1)
writeCookies(arr)
refreshCookies()
}
Layout.fillWidth: true
Component.onCompleted: refreshCookies()
}

SettingTitle {
Layout.fillWidth: true
text: qsTr("Headers")
Expand Down
5 changes: 3 additions & 2 deletions src/gui-qml/src/settings.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "settings.h"
#include <QJSValue>
#include <QSettings>
#include "mixed-settings.h"

Expand All @@ -17,9 +18,9 @@ QVariant Settings::value(const QString &key, const QVariant &defaultValue) const
return m_settings->value(key, defaultValue);
}

void Settings::setValue(const QString &key, const QVariant &value, const QVariant &defaultValue)
void Settings::setValue(const QString &key, const QJSValue &value, const QVariant &defaultValue)
{
m_settings->setValue(key, value, defaultValue);
m_settings->setValue(key, value.toVariant(), defaultValue);
}

void Settings::remove(const QString &key)
Expand Down
3 changes: 2 additions & 1 deletion src/gui-qml/src/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define SETTINGS_H

#include <QObject>
#include <QJSValue>
#include <QVariant>


Expand All @@ -17,7 +18,7 @@ class Settings : public QObject
explicit Settings(MixedSettings *settings, QObject *parent = nullptr);

Q_INVOKABLE QVariant value(const QString &key, const QVariant &defaultValue = {}) const;
Q_INVOKABLE void setValue(const QString &key, const QVariant &value, const QVariant &defaultValue = {});
Q_INVOKABLE void setValue(const QString &key, const QJSValue &value, const QVariant &defaultValue = {});
Q_INVOKABLE void remove(const QString &key);
Q_INVOKABLE QStringList childKeys(const QString &parent = {});

Expand Down

0 comments on commit 9cfcafa

Please sign in to comment.