From 3aae2603f4b8698064537ba9d87186904128135e Mon Sep 17 00:00:00 2001 From: Patryk Osmaczko Date: Sat, 15 Oct 2022 19:48:21 +0200 Subject: [PATCH] feat(StatusQ): introduce JSONListModel --- .../src/StatusQ/Core/Utils/JSONListModel.qml | 48 +++++++++++++++++++ ui/StatusQ/src/StatusQ/Core/Utils/qmldir | 1 + 2 files changed, 49 insertions(+) create mode 100644 ui/StatusQ/src/StatusQ/Core/Utils/JSONListModel.qml diff --git a/ui/StatusQ/src/StatusQ/Core/Utils/JSONListModel.qml b/ui/StatusQ/src/StatusQ/Core/Utils/JSONListModel.qml new file mode 100644 index 0000000000..7e0357ba3c --- /dev/null +++ b/ui/StatusQ/src/StatusQ/Core/Utils/JSONListModel.qml @@ -0,0 +1,48 @@ +import QtQuick 2.14 +import QtQml.Models 2.14 + +/** + Converts JSON string array to ListModel + + JSONListModel { + id: jsonModel + + json: JSON.stringify([ + { + "name": "Activism", + "emoji": "✊", + }, + { + "name": "Career", + "emoji": "💼", + }, + ]) + } + + TagsRow { + model: jsonModel.model + } + */ + +Item { + id: root + + property string json + readonly property ListModel model: ListModel { id: jsonModel } + + onJsonChanged: { + jsonModel.clear() + + if (json === "") return + + try { + const arr = JSON.parse(json) + for (const i in arr) { + jsonModel.append(arr[i]) + } + } + catch (e) { + console.warn(e) + } + } +} diff --git a/ui/StatusQ/src/StatusQ/Core/Utils/qmldir b/ui/StatusQ/src/StatusQ/Core/Utils/qmldir index cf96ab85d9..0cf941a8b3 100644 --- a/ui/StatusQ/src/StatusQ/Core/Utils/qmldir +++ b/ui/StatusQ/src/StatusQ/Core/Utils/qmldir @@ -4,3 +4,4 @@ EmojiJSON 1.0 emojiList.js XSS 1.0 xss.js singleton Utils 0.1 Utils.qml singleton Emoji 0.1 Emoji.qml +JSONListModel 0.1 JSONListModel.qml