mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 01:17:35 +00:00
NetworkSettings: Convert NetworkSettingsWidget
to a failable factory
This commit is contained in:
parent
956a932a87
commit
754a5bda7a
2 changed files with 20 additions and 9 deletions
|
@ -30,9 +30,16 @@ static int netmask_to_cidr(IPv4Address const& address)
|
||||||
return 32 - count_trailing_zeroes_safe(address_in_host_representation);
|
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_adapters_combobox = *find_descendant_of_type_named<GUI::ComboBox>("adapters_combobox");
|
||||||
m_enabled_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("enabled_checkbox");
|
m_enabled_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("enabled_checkbox");
|
||||||
|
@ -63,12 +70,12 @@ NetworkSettingsWidget::NetworkSettingsWidget()
|
||||||
set_modified(true);
|
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 proc_net_adapters_file = TRY(Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read));
|
||||||
auto data = proc_net_adapters_file->read_until_eof().release_value_but_fixme_should_propagate_errors();
|
auto data = TRY(proc_net_adapters_file->read_until_eof());
|
||||||
JsonParser parser(data);
|
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.
|
// FIXME: This should be done before creating a window.
|
||||||
if (proc_net_adapters_json.as_array().is_empty()) {
|
if (proc_net_adapters_json.as_array().is_empty()) {
|
||||||
|
@ -102,7 +109,7 @@ NetworkSettingsWidget::NetworkSettingsWidget()
|
||||||
index++;
|
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&) {
|
m_adapters_combobox->on_change = [this](DeprecatedString const& text, GUI::ModelIndex const&) {
|
||||||
on_switch_adapter(text);
|
on_switch_adapter(text);
|
||||||
};
|
};
|
||||||
|
@ -110,6 +117,7 @@ NetworkSettingsWidget::NetworkSettingsWidget()
|
||||||
dbgln("{} in {}", selected_adapter, m_adapter_names);
|
dbgln("{} in {}", selected_adapter, m_adapter_names);
|
||||||
m_adapters_combobox->set_selected_index(selected_adapter);
|
m_adapters_combobox->set_selected_index(selected_adapter);
|
||||||
on_switch_adapter(m_adapter_names[selected_adapter_index]);
|
on_switch_adapter(m_adapter_names[selected_adapter_index]);
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkSettingsWidget::on_switch_adapter(DeprecatedString const& adapter)
|
void NetworkSettingsWidget::on_switch_adapter(DeprecatedString const& adapter)
|
||||||
|
|
|
@ -13,14 +13,17 @@
|
||||||
namespace NetworkSettings {
|
namespace NetworkSettings {
|
||||||
|
|
||||||
class NetworkSettingsWidget : public GUI::SettingsWindow::Tab {
|
class NetworkSettingsWidget : public GUI::SettingsWindow::Tab {
|
||||||
C_OBJECT(NetworkSettingsWidget)
|
C_OBJECT_ABSTRACT(NetworkSettingsWidget)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> try_create();
|
||||||
|
|
||||||
virtual void apply_settings() override;
|
virtual void apply_settings() override;
|
||||||
void switch_adapter(DeprecatedString const& adapter);
|
void switch_adapter(DeprecatedString const& adapter);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NetworkSettingsWidget();
|
NetworkSettingsWidget() = default;
|
||||||
|
ErrorOr<void> setup();
|
||||||
|
|
||||||
struct NetworkAdapterData {
|
struct NetworkAdapterData {
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue