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();