From 23d31ac11d5cb55192c66578ee5d158a7377f406 Mon Sep 17 00:00:00 2001 From: Caoimhe Date: Sun, 19 Mar 2023 17:00:55 +0000 Subject: [PATCH] SoundPlayer: Keep track of the selected visualization in the config --- .../Applications/SoundPlayer/CMakeLists.txt | 2 +- .../SoundPlayerWidgetAdvancedView.cpp | 12 +++++++++- Userland/Applications/SoundPlayer/main.cpp | 23 ++++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Userland/Applications/SoundPlayer/CMakeLists.txt b/Userland/Applications/SoundPlayer/CMakeLists.txt index 173a34b5e2..c827fc42b3 100644 --- a/Userland/Applications/SoundPlayer/CMakeLists.txt +++ b/Userland/Applications/SoundPlayer/CMakeLists.txt @@ -19,4 +19,4 @@ set(SOURCES ) serenity_app(SoundPlayer ICON app-sound-player) -target_link_libraries(SoundPlayer PRIVATE LibAudio LibCore LibDSP LibGfx LibGUI LibIPC LibMain LibThreading LibImageDecoderClient) +target_link_libraries(SoundPlayer PRIVATE LibAudio LibConfig LibCore LibDSP LibGfx LibGUI LibIPC LibMain LibThreading LibImageDecoderClient) diff --git a/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp b/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp index 35216a5b7c..aa2d027b09 100644 --- a/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp +++ b/Userland/Applications/SoundPlayer/SoundPlayerWidgetAdvancedView.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,16 @@ SoundPlayerWidgetAdvancedView::SoundPlayerWidgetAdvancedView(GUI::Window& window m_volume_icon = Gfx::Bitmap::load_from_file("/res/icons/16x16/audio-volume-medium.png"sv).release_value_but_fixme_should_propagate_errors(); m_muted_icon = Gfx::Bitmap::load_from_file("/res/icons/16x16/audio-volume-muted.png"sv).release_value_but_fixme_should_propagate_errors(); - m_visualization = m_player_view->add(); + auto visualization = Config::read_string("SoundPlayer"sv, "Preferences"sv, "Visualization"sv, "bars"sv); + if (visualization == "samples") { + m_visualization = m_player_view->add(); + } else if (visualization == "album_cover") { + m_visualization = m_player_view->add([this]() { + return get_image_from_music_file(); + }); + } else { + m_visualization = m_player_view->add(); + } m_playback_progress_slider = m_player_view->add(); m_playback_progress_slider->set_fixed_height(20); diff --git a/Userland/Applications/SoundPlayer/main.cpp b/Userland/Applications/SoundPlayer/main.cpp index f717d1b5df..ecf7030f38 100644 --- a/Userland/Applications/SoundPlayer/main.cpp +++ b/Userland/Applications/SoundPlayer/main.cpp @@ -12,6 +12,7 @@ #include "SoundPlayerWidgetAdvancedView.h" #include #include +#include #include #include #include @@ -39,6 +40,9 @@ ErrorOr serenity_main(Main::Arguments arguments) auto audio_client = TRY(Audio::ConnectionToServer::try_create()); auto decoder_client = TRY(ImageDecoderClient::Client::try_create()); + Config::pledge_domain("SoundPlayer"); + app->set_config_domain(TRY("SoundPlayer"_string)); + TRY(Core::System::pledge("stdio recvfd sendfd rpath thread proc")); auto app_icon = GUI::Icon::default_icon("app-sound-player"sv); @@ -120,15 +124,20 @@ ErrorOr serenity_main(Main::Arguments arguments) GUI::ActionGroup visualization_actions; visualization_actions.set_exclusive(true); + auto set_selected_visualization_in_config = [](StringView name) { + Config::write_string("SoundPlayer"sv, "Preferences"sv, "Visualization"sv, name); + }; + auto bars = GUI::Action::create_checkable("&Bars", [&](auto&) { static_cast(player)->set_visualization(); + set_selected_visualization_in_config("bars"sv); }); - bars->set_checked(true); TRY(visualization_menu->try_add_action(bars)); visualization_actions.add_action(bars); auto samples = GUI::Action::create_checkable("&Samples", [&](auto&) { static_cast(player)->set_visualization(); + set_selected_visualization_in_config("samples"sv); }); TRY(visualization_menu->try_add_action(samples)); visualization_actions.add_action(samples); @@ -138,10 +147,22 @@ ErrorOr serenity_main(Main::Arguments arguments) view->set_visualization([&view]() { return view->get_image_from_music_file(); }); + + set_selected_visualization_in_config("album_cover"sv); }); TRY(visualization_menu->try_add_action(album_cover_visualization)); visualization_actions.add_action(album_cover_visualization); + auto selected_visualization_widget = bars; + auto visualization = Config::read_string("SoundPlayer"sv, "Preferences"sv, "Visualization"sv, "bars"sv); + + if (visualization == "samples") + selected_visualization_widget = samples; + else if (visualization == "album_cover") + selected_visualization_widget = album_cover_visualization; + + selected_visualization_widget->set_checked(true); + auto help_menu = TRY(window->try_add_menu("&Help")); TRY(help_menu->try_add_action(GUI::CommonActions::make_command_palette_action(window))); TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Sound Player", app_icon, window)));