From 2b8a52747848cc6400411af523acdc76fce06274 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sat, 27 May 2023 01:49:03 +0200 Subject: [PATCH] AudioApplet: Read and apply config value only once --- Userland/Applets/Audio/main.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Userland/Applets/Audio/main.cpp b/Userland/Applets/Audio/main.cpp index be5e3070e3..0d3a402be6 100644 --- a/Userland/Applets/Audio/main.cpp +++ b/Userland/Applets/Audio/main.cpp @@ -55,7 +55,6 @@ private: AudioWidget(NonnullRefPtr audio_client, Array volume_level_bitmaps) : m_audio_client(move(audio_client)) , m_volume_level_bitmaps(move(volume_level_bitmaps)) - , m_show_percent(Config::read_bool("AudioApplet"sv, "Applet"sv, "ShowPercent"sv, audio_applet_show_percent_default)) { m_audio_volume = static_cast(m_audio_client->get_main_mix_volume() * 100); m_audio_muted = m_audio_client->is_main_mix_muted(); @@ -88,15 +87,13 @@ private: m_root_container->set_frame_style(Gfx::FrameStyle::Window); m_percent_box = m_root_container->add("\xE2\x84\xB9"_short_string); - m_percent_box->set_tooltip(m_show_percent ? "Hide percent" : "Show percent"); - m_percent_box->set_checked(m_show_percent); + m_percent_box->set_tooltip(show_percent() ? "Hide percent" : "Show percent"); + m_percent_box->set_checked(show_percent()); m_percent_box->on_checked = [&](bool show_percent) { - m_show_percent = show_percent; - set_audio_widget_size(m_show_percent); - m_percent_box->set_tooltip(m_show_percent ? "Hide percent" : "Show percent"); + set_show_percent(show_percent); GUI::Application::the()->hide_tooltip(); - Config::write_bool("AudioApplet"sv, "Applet"sv, "ShowPercent"sv, m_show_percent); + Config::write_bool("AudioApplet"sv, "Applet"sv, "ShowPercent"sv, show_percent); }; m_slider = m_root_container->add(); @@ -127,8 +124,12 @@ private: public: virtual ~AudioWidget() override = default; - void set_audio_widget_size(bool show_percent) + bool show_percent() const { return m_show_percent; } + void set_show_percent(bool show_percent) { + m_show_percent = show_percent; + m_percent_box->set_checked(show_percent); + m_percent_box->set_tooltip(show_percent ? "Hide percent" : "Show percent"); if (show_percent) window()->resize(44, 16); else @@ -168,7 +169,7 @@ private: auto& audio_bitmap = choose_bitmap_from_volume(); painter.blit({}, audio_bitmap, audio_bitmap.rect()); - if (m_show_percent) { + if (show_percent()) { auto volume_text = m_audio_muted ? "mute" : DeprecatedString::formatted("{}%", m_audio_volume); painter.draw_text(Gfx::IntRect { 16, 3, 24, 16 }, volume_text, Gfx::FontDatabase::default_fixed_width_font(), Gfx::TextAlignment::TopLeft, palette().window_text()); } @@ -247,8 +248,9 @@ ErrorOr serenity_main(Main::Arguments arguments) auto audio_widget = TRY(window->set_main_widget()); window->show(); - // This positioning code depends on the window actually existing. - static_cast(window->main_widget())->set_audio_widget_size(Config::read_bool("AudioApplet"sv, "Applet"sv, "ShowPercent"sv, audio_applet_show_percent_default)); + // This affects the positioning, which depends on the window actually existing. + bool should_show_percent = Config::read_bool("AudioApplet"sv, "Applet"sv, "ShowPercent"sv, audio_applet_show_percent_default); + audio_widget->set_show_percent(should_show_percent); TRY(Core::System::pledge("stdio recvfd sendfd rpath"));