1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:57:44 +00:00

Applets/Audio: Propagate errors by extracting out GUI initialization

This commit extracts out the GUI initialization in AudioWidget into
the new try_initialize_graphical_elements function. This function
is now able to use try_set_main_widget instead of set_main_widget.
It's only called by the fallible try_create method.
This commit is contained in:
creator1creeper1 2022-01-06 21:03:42 +01:00 committed by Brian Gianforcaro
parent b4eed25872
commit d92558b3b3

View file

@ -41,7 +41,9 @@ public:
{ 0, TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/audio-volume-zero.png")) },
{ 0, TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/audio-volume-muted.png")) }
};
return adopt_nonnull_ref_or_enomem(new (nothrow) AudioWidget(move(volume_level_bitmaps)));
NonnullRefPtr<AudioWidget> audio_widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AudioWidget(move(volume_level_bitmaps))));
TRY(audio_widget->try_initialize_graphical_elements());
return audio_widget;
}
private:
@ -68,7 +70,10 @@ private:
if (!m_audio_muted)
update();
};
}
ErrorOr<void> try_initialize_graphical_elements()
{
m_slider_window = add<GUI::Window>(window());
m_slider_window->set_frameless(true);
m_slider_window->set_resizable(false);
@ -78,7 +83,7 @@ private:
close();
};
m_root_container = m_slider_window->set_main_widget<GUI::Label>();
m_root_container = TRY(m_slider_window->try_set_main_widget<GUI::Label>());
m_root_container->set_fill_with_background_color(true);
m_root_container->set_layout<GUI::VerticalBoxLayout>();
m_root_container->layout()->set_margins({ 4, 0 });
@ -122,7 +127,9 @@ private:
m_audio_client->set_main_mix_muted(is_muted);
GUI::Application::the()->hide_tooltip();
};
}
return {};
};
public:
virtual ~AudioWidget() override { }