10
10
#include < LibGUI/JsonArrayModel.h>
11
11
#include < LibGUI/SortingProxyModel.h>
12
12
#include < LibGUI/TableView.h>
13
+ #include < LibGfx/Painter.h>
13
14
14
15
NetworkStatisticsWidget::NetworkStatisticsWidget ()
15
16
{
@@ -18,6 +19,17 @@ NetworkStatisticsWidget::NetworkStatisticsWidget()
18
19
layout ()->set_margins ({ 4 , 4 , 4 , 4 });
19
20
set_fill_with_background_color (true );
20
21
22
+ m_network_connected_bitmap = Gfx::Bitmap::try_load_from_file (" /res/icons/16x16/network-connected.png" );
23
+ m_network_disconnected_bitmap = Gfx::Bitmap::try_load_from_file (" /res/icons/16x16/network-disconnected.png" );
24
+
25
+ m_network_link_down_bitmap = Gfx::Bitmap::try_create (m_network_connected_bitmap->format (), m_network_connected_bitmap->size ());
26
+ {
27
+ Gfx::Painter painter (*m_network_link_down_bitmap);
28
+ painter.blit_filtered ({}, *m_network_connected_bitmap, m_network_connected_bitmap->rect (), [](Color color) {
29
+ return color.to_grayscale ();
30
+ });
31
+ }
32
+
21
33
auto & adapters_group_box = add<GUI::GroupBox>(" Adapters" );
22
34
adapters_group_box.set_layout <GUI::VerticalBoxLayout>();
23
35
adapters_group_box.layout ()->set_margins ({ 6 , 16 , 6 , 6 });
@@ -26,6 +38,13 @@ NetworkStatisticsWidget::NetworkStatisticsWidget()
26
38
m_adapter_table_view = adapters_group_box.add <GUI::TableView>();
27
39
28
40
Vector<GUI::JsonArrayModel::FieldSpec> net_adapters_fields;
41
+ net_adapters_fields.empend (" " , Gfx::TextAlignment::CenterLeft,
42
+ [this ](JsonObject const & object) -> GUI::Variant {
43
+ if (!object.get (" link_up" ).as_bool ())
44
+ return *m_network_link_down_bitmap;
45
+ else
46
+ return object.get (" ipv4_address" ).as_string_or (" " ).is_empty () ? *m_network_disconnected_bitmap : *m_network_connected_bitmap;
47
+ });
29
48
net_adapters_fields.empend (" name" , " Name" , Gfx::TextAlignment::CenterLeft);
30
49
net_adapters_fields.empend (" class_name" , " Class" , Gfx::TextAlignment::CenterLeft);
31
50
net_adapters_fields.empend (" mac_address" , " MAC" , Gfx::TextAlignment::CenterLeft);
0 commit comments