소스 검색

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

Timothy Flynn 4 년 전
부모
커밋
990e362a17
2개의 변경된 파일20개의 추가작업 그리고 0개의 파일을 삭제
  1. 19 0
      Userland/Libraries/LibGUI/JsonArrayModel.cpp
  2. 1 0
      Userland/Libraries/LibGUI/JsonArrayModel.h

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

@@ -76,6 +76,25 @@ bool JsonArrayModel::add(const Vector<JsonValue>&& values)
     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)
 {
     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);
 
     bool add(const Vector<JsonValue>&& fields);
+    bool set(int row, Vector<JsonValue>&& fields);
     bool remove(int row);
     bool store();