diff --git a/Userland/Libraries/LibWeb/StylePropertiesModel.cpp b/Userland/Libraries/LibWeb/StylePropertiesModel.cpp index 50ebd5b5e7..f2146d5f47 100644 --- a/Userland/Libraries/LibWeb/StylePropertiesModel.cpp +++ b/Userland/Libraries/LibWeb/StylePropertiesModel.cpp @@ -1,23 +1,21 @@ /* * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ +#include "StylePropertiesModel.h" #include -#include -#include -#include -#include namespace Web { -StylePropertiesModel::StylePropertiesModel(const CSS::StyleProperties& properties) - : m_properties(properties) +StylePropertiesModel::StylePropertiesModel(JsonObject properties) + : m_properties(move(properties)) { - properties.for_each_property([&](auto property_id, auto& property_value) { + m_properties.for_each_member([&](auto& property_name, auto& property_value) { Value value; - value.name = CSS::string_from_property_id(property_id); + value.name = property_name; value.value = property_value.to_string(); m_values.append(value); }); @@ -25,7 +23,11 @@ StylePropertiesModel::StylePropertiesModel(const CSS::StyleProperties& propertie quick_sort(m_values, [](auto& a, auto& b) { return a.name < b.name; }); } -int StylePropertiesModel::row_count(const GUI::ModelIndex&) const +StylePropertiesModel::~StylePropertiesModel() +{ +} + +int StylePropertiesModel::row_count(GUI::ModelIndex const&) const { return m_values.size(); } @@ -41,7 +43,8 @@ String StylePropertiesModel::column_name(int column_index) const VERIFY_NOT_REACHED(); } } -GUI::Variant StylePropertiesModel::data(const GUI::ModelIndex& index, GUI::ModelRole role) const + +GUI::Variant StylePropertiesModel::data(GUI::ModelIndex const& index, GUI::ModelRole role) const { auto& value = m_values[index.row()]; if (role == GUI::ModelRole::Display) { diff --git a/Userland/Libraries/LibWeb/StylePropertiesModel.h b/Userland/Libraries/LibWeb/StylePropertiesModel.h index a5e84c617a..3b7ae1742c 100644 --- a/Userland/Libraries/LibWeb/StylePropertiesModel.h +++ b/Userland/Libraries/LibWeb/StylePropertiesModel.h @@ -1,19 +1,18 @@ /* * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include +#include #include #include namespace Web { -class StyleProperties; - class StylePropertiesModel final : public GUI::Model { public: enum Column { @@ -22,18 +21,26 @@ public: __Count }; - static NonnullRefPtr create(const CSS::StyleProperties& properties) { return adopt_ref(*new StylePropertiesModel(properties)); } + static NonnullRefPtr create(StringView properties) + { + auto json_or_error = JsonValue::from_string(properties); + if (!json_or_error.has_value()) + VERIFY_NOT_REACHED(); - virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override; - virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return Column::__Count; } + return adopt_ref(*new StylePropertiesModel(json_or_error.value().as_object())); + } + + virtual ~StylePropertiesModel() override; + + virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override; + virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return Column::__Count; } virtual String column_name(int) const override; - virtual GUI::Variant data(const GUI::ModelIndex&, GUI::ModelRole) const override; + virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override; private: - explicit StylePropertiesModel(const CSS::StyleProperties& properties); - const CSS::StyleProperties& properties() const { return *m_properties; } + explicit StylePropertiesModel(JsonObject); - NonnullRefPtr m_properties; + JsonObject m_properties; struct Value { String name;