Forráskód Böngészése

LibGUI: Allow assigning a value to a specific index in JsonArrayModel

Timothy Flynn 4 éve
szülő
commit
990e362a17

+ 19 - 0
Userland/Libraries/LibGUI/JsonArrayModel.cpp

@@ -76,6 +76,25 @@ bool JsonArrayModel::add(const Vector<JsonValue>&& values)
     return true;
     return true;
 }
 }
 
 
+bool JsonArrayModel::set(int row, Vector<JsonValue>&& 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)
 bool JsonArrayModel::remove(int row)
 {
 {
     if (row >= m_array.size())
     if (row >= m_array.size())

+ 1 - 0
Userland/Libraries/LibGUI/JsonArrayModel.h

@@ -76,6 +76,7 @@ public:
     void set_json_path(const String& json_path);
     void set_json_path(const String& json_path);
 
 
     bool add(const Vector<JsonValue>&& fields);
     bool add(const Vector<JsonValue>&& fields);
+    bool set(int row, Vector<JsonValue>&& fields);
     bool remove(int row);
     bool remove(int row);
     bool store();
     bool store();