serenity/DevTools/Inspector/RemoteObjectPropertyModel.cpp
Andreas Kling 4f3234148a Inspector: Show remote object properties in a table view
This patch expands the object model of this program quite a bit.
We now have a RemoteProcess object that contains a list of remote root
RemoteObject objects.

The RemoteProcess vends a RemoteObjectGraphModel&, and indices in that
model have internal_data() pointing to a corresponding RemoteObject.
RemoteObjects in turn vend a RemoteObjectPropertyModel&, which is what
we use to show the object properties.

This is pretty cool :^)
2019-08-19 20:29:52 +02:00

46 lines
1 KiB
C++

#include "RemoteObjectPropertyModel.h"
#include "RemoteObject.h"
RemoteObjectPropertyModel::RemoteObjectPropertyModel(RemoteObject& object)
: m_object(object)
{
}
int RemoteObjectPropertyModel::row_count(const GModelIndex&) const
{
return m_properties.size();
}
String RemoteObjectPropertyModel::column_name(int column) const
{
switch (column) {
case Column::Name:
return "Name";
case Column::Value:
return "Value";
}
ASSERT_NOT_REACHED();
}
GVariant RemoteObjectPropertyModel::data(const GModelIndex& index, Role role) const
{
auto& property = m_properties[index.row()];
if (role == Role::Display) {
switch (index.column()) {
case Column::Name:
return property.name;
case Column::Value:
return property.value;
}
}
return {};
}
void RemoteObjectPropertyModel::update()
{
m_properties.clear();
m_object.json.for_each_member([this](auto& name, auto& value) {
m_properties.append({ name, value });
});
did_update();
}