From d750afe38f68d8cba8c30f0d6faa81042a120ad6 Mon Sep 17 00:00:00 2001 From: Mark Thompson <129641948+NotherNgineer@users.noreply.github.com> Date: Wed, 5 Jul 2023 02:12:40 -0500 Subject: [PATCH] Use ImageToggle widget for 3 icons (no functional change) (#1237) * Use ImageToggle button type for 3 icons --- firmware/application/ui_navigation.cpp | 75 ++++++++------------------ firmware/application/ui_navigation.hpp | 20 +++---- 2 files changed, 31 insertions(+), 64 deletions(-) diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 8ea193bf6..11f1d8f12 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -179,16 +179,21 @@ SystemStatusView::SystemStatusView( this->on_converter(); }; - button_speaker.on_select = [this](ImageButton&) { - this->on_speaker(); + toggle_speaker.on_change = [this](bool v) { + pmem::set_config_speaker_disable(v); + audio::output::update_audio_mute(); + refresh(); }; - button_mute.on_select = [this](ImageButton&) { - this->on_mute(); + toggle_mute.on_change = [this](bool v) { + pmem::set_config_audio_mute(v); + audio::output::update_audio_mute(); + refresh(); }; - button_stealth.on_select = [this](ImageButton&) { - this->on_stealth(); + toggle_stealth.on_change = [this](bool v) { + pmem::set_stealth_mode(v); + refresh(); }; button_bias_tee.on_select = [this](ImageButton&) { @@ -208,6 +213,11 @@ SystemStatusView::SystemStatusView( this->on_clk(); }; + // Initialize toggle buttons + toggle_speaker.set_value(pmem::config_speaker_disable()); + toggle_mute.set_value(pmem::config_audio_mute()); + toggle_stealth.set_value(pmem::stealth_mode()); + audio::output::update_audio_mute(); refresh(); } @@ -218,43 +228,22 @@ void SystemStatusView::refresh() { status_icons.clear(); if (!pmem::ui_hide_camera()) status_icons.add(&button_camera); if (!pmem::ui_hide_sleep()) status_icons.add(&button_sleep); - if (!pmem::ui_hide_stealth()) status_icons.add(&button_stealth); + if (!pmem::ui_hide_stealth()) status_icons.add(&toggle_stealth); if (!pmem::ui_hide_converter()) status_icons.add(&button_converter); if (!pmem::ui_hide_bias_tee()) status_icons.add(&button_bias_tee); if (!pmem::ui_hide_clock()) status_icons.add(&button_clock_status); - if (!pmem::ui_hide_mute()) status_icons.add(&button_mute); + if (!pmem::ui_hide_mute()) status_icons.add(&toggle_mute); // Display "Disable speaker" icon only if AK4951 Codec which has separate speaker/headphone control - if (audio::speaker_disable_supported() && !pmem::ui_hide_speaker()) - status_icons.add(&button_speaker); + if (audio::speaker_disable_supported() && !pmem::ui_hide_speaker()) status_icons.add(&toggle_speaker); if (!pmem::ui_hide_sd_card()) status_icons.add(&sd_card_status_view); status_icons.update_layout(); - // Update icon display (try to keep all in on place). - // Speaker Enable/Disable (AK4951 boards only) - if (pmem::config_speaker_disable()) { - button_speaker.set_foreground(Color::light_grey()); - button_speaker.set_bitmap(&bitmap_icon_speaker_mute); - } else { - button_speaker.set_foreground(Color::green()); - button_speaker.set_bitmap(&bitmap_icon_speaker); - } - - // Audio Mute (both headphones & speaker) - if (pmem::config_audio_mute()) { - button_mute.set_foreground(Color::light_grey()); - button_mute.set_bitmap(&bitmap_icon_speaker_and_headphones_mute); - } else { - button_mute.set_foreground(Color::green()); - button_mute.set_bitmap(&bitmap_icon_speaker_and_headphones); - } - // Clock status bool external_clk = portapack::clock_manager.get_reference().source == ClockManager::ReferenceSource::External; button_clock_status.set_bitmap(external_clk ? &bitmap_icon_clk_ext : &bitmap_icon_clk_int); - button_clock_status.set_foreground( - pmem::clkout_enabled() ? Color::green() : Color::light_grey()); + button_clock_status.set_foreground(pmem::clkout_enabled() ? Color::green() : Color::light_grey()); // Antenna DC Bias if (portapack::get_antenna_bias()) { @@ -266,14 +255,9 @@ void SystemStatusView::refresh() { } // Converter - button_converter.set_bitmap( - pmem::config_updown_converter() ? &bitmap_icon_downconvert : &bitmap_icon_upconvert); + button_converter.set_bitmap(pmem::config_updown_converter() ? &bitmap_icon_downconvert : &bitmap_icon_upconvert); button_converter.set_foreground(pmem::config_converter() ? Color::red() : Color::light_grey()); - // Stealth - button_stealth.set_foreground( - pmem::stealth_mode() ? Color::green() : Color::light_grey()); - set_dirty(); } @@ -314,23 +298,6 @@ void SystemStatusView::on_converter() { refresh(); } -void SystemStatusView::on_speaker() { - pmem::set_config_speaker_disable(!pmem::config_speaker_disable()); - audio::output::update_audio_mute(); - refresh(); -} - -void SystemStatusView::on_mute() { - pmem::set_config_audio_mute(!pmem::config_audio_mute()); - audio::output::update_audio_mute(); - refresh(); -} - -void SystemStatusView::on_stealth() { - pmem::set_stealth_mode(!pmem::stealth_mode()); - refresh(); -} - void SystemStatusView::on_bias_tee() { if (!portapack::get_antenna_bias()) { nav_.display_modal("Bias voltage", diff --git a/firmware/application/ui_navigation.hpp b/firmware/application/ui_navigation.hpp index c113b3c8b..4123864db 100644 --- a/firmware/application/ui_navigation.hpp +++ b/firmware/application/ui_navigation.hpp @@ -184,17 +184,22 @@ class SystemStatusView : public View { StatusTray status_icons{{screen_width, 0}}; - // TODO: Convert to ImageToggle buttons. - ImageButton button_speaker{ + ImageToggle toggle_speaker{ {0, 0, 2 * 8, 1 * 16}, + &bitmap_icon_speaker_mute, &bitmap_icon_speaker, Color::light_grey(), + Color::dark_grey(), + Color::green(), Color::dark_grey()}; - ImageButton button_mute{ + ImageToggle toggle_mute{ {0, 0, 2 * 8, 1 * 16}, + &bitmap_icon_speaker_and_headphones_mute, &bitmap_icon_speaker_and_headphones, Color::light_grey(), + Color::dark_grey(), + Color::green(), Color::dark_grey()}; ImageButton button_converter{ @@ -203,11 +208,9 @@ class SystemStatusView : public View { Color::light_grey(), Color::dark_grey()}; - ImageButton button_stealth{ + ImageToggle toggle_stealth{ {0, 0, 2 * 8, 1 * 16}, - &bitmap_icon_stealth, - Color::light_grey(), - Color::dark_grey()}; + &bitmap_icon_stealth}; ImageButton button_camera{ {0, 0, 2 * 8, 1 * 16}, @@ -237,9 +240,6 @@ class SystemStatusView : public View { {0, 0 * 16, 2 * 8, 1 * 16}}; void on_converter(); - void on_speaker(); - void on_mute(); - void on_stealth(); void on_bias_tee(); void on_camera(); void on_title();