summaryrefslogtreecommitdiff
path: root/Userland/Applications/SoundPlayer/main.cpp
diff options
context:
space:
mode:
authorMax Trussell <maxtrussell@gmail.com>2021-12-19 18:59:28 -0800
committerBrian Gianforcaro <b.gianfo@gmail.com>2021-12-24 00:05:35 -0800
commitc8eab80b3daf2c42b569f2e2d8cd0dbe10e09dc0 (patch)
treeb7f3591192d253464f38eaaf1ee0ca6341b67a04 /Userland/Applications/SoundPlayer/main.cpp
parent277ac486493371e16d874c63418cd2757ea470a2 (diff)
downloadserenity-c8eab80b3daf2c42b569f2e2d8cd0dbe10e09dc0.zip
SoundPlayer: Sync startup loop and show playlist settings in GUI
This fix syncs up the AudioPlayer's internal state for showing playlist information with the AudioPlayer's GUI. Before, if the AudioPlayer was opened with a playlist file (.m3u or .m3u8) it would automatically show the playlist information in the GUI and set the loop mode to playlist, but the menu options would be unchecked. In order to hide the playlist information, the menu option would then have to be toggled twice -- once on and again off.
Diffstat (limited to 'Userland/Applications/SoundPlayer/main.cpp')
-rw-r--r--Userland/Applications/SoundPlayer/main.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/Userland/Applications/SoundPlayer/main.cpp b/Userland/Applications/SoundPlayer/main.cpp
index 3b0c6b17b1..e7a8a882ba 100644
--- a/Userland/Applications/SoundPlayer/main.cpp
+++ b/Userland/Applications/SoundPlayer/main.cpp
@@ -43,6 +43,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
if (arguments.argc > 1) {
StringView path = arguments.strings[1];
player->play_file_path(path);
+ if (player->is_playlist(path))
+ player->set_loop_mode(Player::LoopMode::Playlist);
}
auto file_menu = TRY(window->try_add_menu("&File"));
@@ -61,10 +63,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto playback_menu = TRY(window->try_add_menu("&Playback"));
GUI::ActionGroup loop_actions;
loop_actions.set_exclusive(true);
- auto loop_none = TRY(GUI::Action::try_create("&No Loop", [&](auto&) {
+ auto loop_none = GUI::Action::create_checkable("&No Loop", { Mod_Ctrl, Key_N }, [&](auto&) {
player->set_loop_mode(Player::LoopMode::None);
- }));
- loop_none->set_checked(true);
+ });
loop_actions.add_action(loop_none);
TRY(playback_menu->try_add_action(loop_none));
@@ -90,8 +91,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto playlist_toggle = GUI::Action::create_checkable("&Show Playlist", [&](auto& action) {
static_cast<SoundPlayerWidgetAdvancedView*>(player)->set_playlist_visible(action.is_checked());
});
- if (player->loop_mode() == Player::LoopMode::Playlist)
+ if (player->loop_mode() == Player::LoopMode::Playlist) {
playlist_toggle->set_checked(true);
+ loop_playlist->set_checked(true);
+ } else {
+ loop_none->set_checked(true);
+ }
TRY(playback_menu->try_add_action(playlist_toggle));
auto shuffle_mode = GUI::Action::create_checkable("S&huffle Playlist", [&](auto& action) {