From 990e362a17da87ad55bef826f026d1c3643f00f7 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 25 Mar 2021 07:30:42 -0400 Subject: [PATCH] LibGUI: Allow assigning a value to a specific index in JsonArrayModel --- Userland/Libraries/LibGUI/JsonArrayModel.cpp | 19 +++++++++++++++++++ Userland/Libraries/LibGUI/JsonArrayModel.h | 1 + 2 files changed, 20 insertions(+) diff --git a/Userland/Libraries/LibGUI/JsonArrayModel.cpp b/Userland/Libraries/LibGUI/JsonArrayModel.cpp index b31007d36d..cd41761292 100644 --- a/Userland/Libraries/LibGUI/JsonArrayModel.cpp +++ b/Userland/Libraries/LibGUI/JsonArrayModel.cpp @@ -76,6 +76,25 @@ bool JsonArrayModel::add(const Vector&& values) return true; } +bool JsonArrayModel::set(int row, Vector&& values) +{ + VERIFY(values.size() == m_fields.size()); + + if (row >= m_array.size()) + return false; + + JsonObject obj; + for (size_t i = 0; i < m_fields.size(); ++i) { + auto& field_spec = m_fields[i]; + obj.set(field_spec.json_field_name, move(values.at(i))); + } + + m_array.set(row, move(obj)); + did_update(); + + return true; +} + bool JsonArrayModel::remove(int row) { if (row >= m_array.size()) diff --git a/Userland/Libraries/LibGUI/JsonArrayModel.h b/Userland/Libraries/LibGUI/JsonArrayModel.h index 1c44917dcf..6aa77e9316 100644 --- a/Userland/Libraries/LibGUI/JsonArrayModel.h +++ b/Userland/Libraries/LibGUI/JsonArrayModel.h @@ -76,6 +76,7 @@ public: void set_json_path(const String& json_path); bool add(const Vector&& fields); + bool set(int row, Vector&& fields); bool remove(int row); bool store();