SoundPlayer: Use GUI::ActionGroup for Visualization menu
Removed the old custom checkbox selection code in the Visualization menu and replaced them with GUI::ActionGroup with set_exclusive enabled instead :^)
This commit is contained in:
parent
4de0f68486
commit
1600d5a446
Notes:
sideshowbarker
2024-07-18 04:55:54 +09:00
Author: https://github.com/fluxth Commit: https://github.com/SerenityOS/serenity/commit/1600d5a4462 Pull-request: https://github.com/SerenityOS/serenity/pull/9728
1 changed files with 10 additions and 30 deletions
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2021, the SerenityOS developers.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -10,6 +11,7 @@
|
|||
#include "SoundPlayerWidgetAdvancedView.h"
|
||||
#include <LibAudio/ClientConnection.h>
|
||||
#include <LibGUI/Action.h>
|
||||
#include <LibGUI/ActionGroup.h>
|
||||
#include <LibGUI/Application.h>
|
||||
#include <LibGUI/FilePicker.h>
|
||||
#include <LibGUI/Menu.h>
|
||||
|
@ -101,49 +103,27 @@ int main(int argc, char** argv)
|
|||
playback_menu.add_action(move(loop));
|
||||
|
||||
auto& visualization_menu = window->add_menu("&Visualization");
|
||||
Vector<NonnullRefPtr<GUI::Action>> visualization_checkmarks;
|
||||
GUI::Action* checked_vis = nullptr;
|
||||
auto uncheck_all_but = [&](GUI::Action& one) {for (auto& a : visualization_checkmarks) if (a != &one) a->set_checked(false); };
|
||||
GUI::ActionGroup visualization_actions;
|
||||
visualization_actions.set_exclusive(true);
|
||||
|
||||
auto bars = GUI::Action::create_checkable("&Bars", [&](auto& action) {
|
||||
uncheck_all_but(action);
|
||||
if (checked_vis == &action) {
|
||||
action.set_checked(true);
|
||||
return;
|
||||
}
|
||||
checked_vis = &action;
|
||||
auto bars = GUI::Action::create_checkable("&Bars", [&](auto&) {
|
||||
static_cast<SoundPlayerWidgetAdvancedView*>(player)->set_visualization<BarsVisualizationWidget>();
|
||||
});
|
||||
bars->set_checked(true);
|
||||
|
||||
visualization_menu.add_action(bars);
|
||||
visualization_checkmarks.append(bars);
|
||||
visualization_actions.add_action(bars);
|
||||
|
||||
auto samples = GUI::Action::create_checkable("&Samples", [&](auto& action) {
|
||||
uncheck_all_but(action);
|
||||
if (checked_vis == &action) {
|
||||
action.set_checked(true);
|
||||
return;
|
||||
}
|
||||
checked_vis = &action;
|
||||
auto samples = GUI::Action::create_checkable("&Samples", [&](auto&) {
|
||||
static_cast<SoundPlayerWidgetAdvancedView*>(player)->set_visualization<SampleWidget>();
|
||||
});
|
||||
|
||||
visualization_menu.add_action(samples);
|
||||
visualization_checkmarks.append(samples);
|
||||
visualization_actions.add_action(samples);
|
||||
|
||||
auto none = GUI::Action::create_checkable("&None", [&](auto& action) {
|
||||
uncheck_all_but(action);
|
||||
if (checked_vis == &action) {
|
||||
action.set_checked(true);
|
||||
return;
|
||||
}
|
||||
checked_vis = &action;
|
||||
auto none = GUI::Action::create_checkable("&None", [&](auto&) {
|
||||
static_cast<SoundPlayerWidgetAdvancedView*>(player)->set_visualization<NoVisualizationWidget>();
|
||||
});
|
||||
|
||||
visualization_menu.add_action(none);
|
||||
visualization_checkmarks.append(none);
|
||||
visualization_actions.add_action(none);
|
||||
|
||||
auto& help_menu = window->add_menu("&Help");
|
||||
help_menu.add_action(GUI::CommonActions::make_about_action("Sound Player", app_icon, window));
|
||||
|
|
Loading…
Add table
Reference in a new issue