1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:17:34 +00:00

NetworkSettings: Convert NetworkSettingsWidget to a failable factory

This commit is contained in:
Karol Kosek 2023-05-09 22:57:02 +02:00 committed by Andreas Kling
parent 956a932a87
commit 754a5bda7a
2 changed files with 20 additions and 9 deletions

View file

@ -30,9 +30,16 @@ static int netmask_to_cidr(IPv4Address const& address)
return 32 - count_trailing_zeroes_safe(address_in_host_representation);
}
NetworkSettingsWidget::NetworkSettingsWidget()
ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> NetworkSettingsWidget::try_create()
{
load_from_gml(network_settings_gml).release_value_but_fixme_should_propagate_errors();
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) NetworkSettingsWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> NetworkSettingsWidget::setup()
{
TRY(load_from_gml(network_settings_gml));
m_adapters_combobox = *find_descendant_of_type_named<GUI::ComboBox>("adapters_combobox");
m_enabled_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("enabled_checkbox");
@ -63,12 +70,12 @@ NetworkSettingsWidget::NetworkSettingsWidget()
set_modified(true);
};
auto config_file = Core::ConfigFile::open_for_system("Network").release_value_but_fixme_should_propagate_errors();
auto config_file = TRY(Core::ConfigFile::open_for_system("Network"));
auto proc_net_adapters_file = Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read).release_value_but_fixme_should_propagate_errors();
auto data = proc_net_adapters_file->read_until_eof().release_value_but_fixme_should_propagate_errors();
auto proc_net_adapters_file = TRY(Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read));
auto data = TRY(proc_net_adapters_file->read_until_eof());
JsonParser parser(data);
JsonValue proc_net_adapters_json = parser.parse().release_value_but_fixme_should_propagate_errors();
JsonValue proc_net_adapters_json = TRY(parser.parse());
// FIXME: This should be done before creating a window.
if (proc_net_adapters_json.as_array().is_empty()) {
@ -102,7 +109,7 @@ NetworkSettingsWidget::NetworkSettingsWidget()
index++;
});
m_adapters_combobox->set_model(GUI::ItemListModel<DeprecatedString>::create(m_adapter_names));
m_adapters_combobox->set_model(TRY(GUI::ItemListModel<DeprecatedString>::try_create(m_adapter_names)));
m_adapters_combobox->on_change = [this](DeprecatedString const& text, GUI::ModelIndex const&) {
on_switch_adapter(text);
};
@ -110,6 +117,7 @@ NetworkSettingsWidget::NetworkSettingsWidget()
dbgln("{} in {}", selected_adapter, m_adapter_names);
m_adapters_combobox->set_selected_index(selected_adapter);
on_switch_adapter(m_adapter_names[selected_adapter_index]);
return {};
}
void NetworkSettingsWidget::on_switch_adapter(DeprecatedString const& adapter)