1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 06:37:43 +00:00

GJsonArrayModel: Add an optional "massage_for_display" fieldspec hook

This allows to you install a custom callback that can do anything with
Role::Display data before it's returned by GJsonArrayModel::data().
This commit is contained in:
Andreas Kling 2019-08-10 11:06:29 +02:00
parent 0f0a528323
commit 078ce97c41
3 changed files with 46 additions and 24 deletions

View file

@ -21,16 +21,15 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent)
m_adapter_table_view = new GTableView(adapters_group_box);
m_adapter_table_view->set_size_columns_to_fit_content(true);
Vector<GJsonArrayModel::FieldSpec> net_adapters_fields = {
{ "name", "Name", TextAlignment::CenterLeft },
{ "class_name", "Class", TextAlignment::CenterLeft },
{ "mac_address", "MAC", TextAlignment::CenterLeft },
{ "ipv4_address", "IPv4", TextAlignment::CenterLeft },
{ "packets_in", "Pkt In", TextAlignment::CenterRight },
{ "packets_out", "Pkt Out", TextAlignment::CenterRight },
{ "bytes_in", "Bytes In", TextAlignment::CenterRight },
{ "bytes_out", "Bytes Out", TextAlignment::CenterRight },
};
Vector<GJsonArrayModel::FieldSpec> net_adapters_fields;
net_adapters_fields.empend("name", "Name", TextAlignment::CenterLeft);
net_adapters_fields.empend("class_name", "Class", TextAlignment::CenterLeft);
net_adapters_fields.empend("mac_address", "MAC", TextAlignment::CenterLeft);
net_adapters_fields.empend("ipv4_address", "IPv4", TextAlignment::CenterLeft);
net_adapters_fields.empend("packets_in", "Pkt In", TextAlignment::CenterRight);
net_adapters_fields.empend("packets_out", "Pkt Out", TextAlignment::CenterRight);
net_adapters_fields.empend("bytes_in", "Bytes In", TextAlignment::CenterRight);
net_adapters_fields.empend("bytes_out", "Bytes Out", TextAlignment::CenterRight);
m_adapter_table_view->set_model(GJsonArrayModel::create("/proc/net/adapters", move(net_adapters_fields)));
auto* sockets_group_box = new GGroupBox("Sockets", this);
@ -42,19 +41,18 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent)
m_socket_table_view = new GTableView(sockets_group_box);
m_socket_table_view->set_size_columns_to_fit_content(true);
Vector<GJsonArrayModel::FieldSpec> net_tcp_fields = {
{ "peer_address", "Peer", TextAlignment::CenterLeft },
{ "peer_port", "Port", TextAlignment::CenterRight },
{ "local_address", "Local", TextAlignment::CenterLeft },
{ "local_port", "Port", TextAlignment::CenterRight },
{ "state", "State", TextAlignment::CenterLeft },
{ "ack_number", "Ack#", TextAlignment::CenterRight },
{ "sequence_number", "Seq#", TextAlignment::CenterRight },
{ "packets_in", "Pkt In", TextAlignment::CenterRight },
{ "packets_out", "Pkt Out", TextAlignment::CenterRight },
{ "bytes_in", "Bytes In", TextAlignment::CenterRight },
{ "bytes_out", "Bytes Out", TextAlignment::CenterRight },
};
Vector<GJsonArrayModel::FieldSpec> net_tcp_fields;
net_tcp_fields.empend("peer_address", "Peer", TextAlignment::CenterLeft);
net_tcp_fields.empend("peer_port", "Port", TextAlignment::CenterRight);
net_tcp_fields.empend("local_address", "Local", TextAlignment::CenterLeft);
net_tcp_fields.empend("local_port", "Port", TextAlignment::CenterRight);
net_tcp_fields.empend("state", "State", TextAlignment::CenterLeft);
net_tcp_fields.empend("ack_number", "Ack#", TextAlignment::CenterRight);
net_tcp_fields.empend("sequence_number", "Seq#", TextAlignment::CenterRight);
net_tcp_fields.empend("packets_in", "Pkt In", TextAlignment::CenterRight);
net_tcp_fields.empend("packets_out", "Pkt Out", TextAlignment::CenterRight);
net_tcp_fields.empend("bytes_in", "Bytes In", TextAlignment::CenterRight);
net_tcp_fields.empend("bytes_out", "Bytes Out", TextAlignment::CenterRight);
m_socket_table_view->set_model(GJsonArrayModel::create("/proc/net/tcp", move(net_tcp_fields)));
m_update_timer = new CTimer(