diff --git a/Libraries/LibGUI/GJsonArrayModel.cpp b/Libraries/LibGUI/GJsonArrayModel.cpp index ea4845f58a..52f329c324 100644 --- a/Libraries/LibGUI/GJsonArrayModel.cpp +++ b/Libraries/LibGUI/GJsonArrayModel.cpp @@ -40,6 +40,12 @@ GVariant GJsonArrayModel::data(const GModelIndex& index, Role role) const return data.as_uint(); return object.get(json_field_name).to_string(); } + + if (role == GModel::Role::Sort) { + if (field_spec.massage_for_sort) + return field_spec.massage_for_sort(object); + return data(index, Role::Display); + } return {}; } diff --git a/Libraries/LibGUI/GJsonArrayModel.h b/Libraries/LibGUI/GJsonArrayModel.h index 21095fccf1..a5e9f14ceb 100644 --- a/Libraries/LibGUI/GJsonArrayModel.h +++ b/Libraries/LibGUI/GJsonArrayModel.h @@ -7,10 +7,11 @@ class GJsonArrayModel final : public GModel { public: struct FieldSpec { - FieldSpec(const String& a_column_name, TextAlignment a_text_alignment, Function&& a_massage_for_display = {}) + FieldSpec(const String& a_column_name, TextAlignment a_text_alignment, Function&& a_massage_for_display, Function&& a_massage_for_sort = {}) : column_name(a_column_name) , text_alignment(a_text_alignment) , massage_for_display(move(a_massage_for_display)) + , massage_for_sort(move(a_massage_for_sort)) { } @@ -25,6 +26,7 @@ public: String column_name; TextAlignment text_alignment; Function massage_for_display; + Function massage_for_sort; }; static NonnullRefPtr create(const String& json_path, Vector&& fields)