From 021156f57efee9ba32fc326387509f2c5048f9b2 Mon Sep 17 00:00:00 2001 From: SUN Haitao Date: Fri, 13 Jun 2025 12:45:00 +0800 Subject: [PATCH 1/2] qtui: Add a toggle button for 'No Playlist Advance' --- src/qtui/main_window.cc | 4 ++++ src/qtui/main_window.h | 19 ++++++++++--------- src/qtui/menus.cc | 2 +- src/skins-qt/menus.cc | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/qtui/main_window.cc b/src/qtui/main_window.cc index 4652ab69b..2e8325319 100644 --- a/src/qtui/main_window.cc +++ b/src/qtui/main_window.cc @@ -170,6 +170,9 @@ MainWindow::MainWindow() ToolBarCustom(slider), ToolBarCustom(slider->label()), ToolBarSeparator(), + ToolBarAction( + "no-playlist-advance", N_("No Playlist Advance"), N_("No Playlist Advance"), + [](bool on) { aud_set_bool("no_playlist_advance", on); }, &m_no_playlist_advance_action), ToolBarAction( "media-playlist-repeat", N_("Repeat"), N_("Repeat"), [](bool on) { aud_set_bool("repeat", on); }, &m_repeat_action), @@ -326,6 +329,7 @@ void MainWindow::update_toggles() m_record_action->setVisible(aud_drct_get_record_enabled()); m_record_action->setChecked(aud_get_bool("record")); + m_no_playlist_advance_action->setChecked(aud_get_bool("no_playlist_advance")); m_repeat_action->setChecked(aud_get_bool("repeat")); m_shuffle_action->setChecked(aud_get_bool("shuffle")); } diff --git a/src/qtui/main_window.h b/src/qtui/main_window.h index 5b92ee7aa..ae63503cd 100644 --- a/src/qtui/main_window.h +++ b/src/qtui/main_window.h @@ -56,7 +56,7 @@ class MainWindow : public QMainWindow, audqt::DockHost QAction *m_menu_action, *m_search_action; QAction *m_play_pause_action, *m_stop_action, *m_stop_after_action; QAction * m_record_action; - QAction *m_repeat_action, *m_shuffle_action; + QAction *m_no_playlist_advance_action, *m_repeat_action, *m_shuffle_action; QueuedFunc m_buffering_timer; Playlist m_last_playing; @@ -114,15 +114,16 @@ class MainWindow : public QMainWindow, audqt::DockHost hook7{"set stop_after_current_song", this, &MainWindow::update_toggles}, hook8{"enable record", this, &MainWindow::update_toggles}, hook9{"set record", this, &MainWindow::update_toggles}, - hook10{"set repeat", this, &MainWindow::update_toggles}, - hook11{"set shuffle", this, &MainWindow::update_toggles}, - hook12{"qtui toggle menubar", this, &MainWindow::update_visibility}, - hook13{"qtui toggle infoarea", this, &MainWindow::update_visibility}, - hook14{"qtui toggle statusbar", this, &MainWindow::update_visibility}, - hook15{"qtui show search tool", this, &MainWindow::show_search_tool}, - hook16{"qtui show playback history", this, + hook10{"set no_playlist_advance", this, &MainWindow::update_toggles}, + hook11{"set repeat", this, &MainWindow::update_toggles}, + hook12{"set shuffle", this, &MainWindow::update_toggles}, + hook13{"qtui toggle menubar", this, &MainWindow::update_visibility}, + hook14{"qtui toggle infoarea", this, &MainWindow::update_visibility}, + hook15{"qtui toggle statusbar", this, &MainWindow::update_visibility}, + hook16{"qtui show search tool", this, &MainWindow::show_search_tool}, + hook17{"qtui show playback history", this, &MainWindow::show_playback_history}, - hook17{"qtui show playlist manager", this, + hook18{"qtui show playlist manager", this, &MainWindow::show_playlist_manager}; }; diff --git a/src/qtui/menus.cc b/src/qtui/menus.cc index a20ac7832..697b3ebbf 100644 --- a/src/qtui/menus.cc +++ b/src/qtui/menus.cc @@ -156,7 +156,7 @@ QMenuBar * qtui_build_menubar(QWidget * parent) audqt::MenuToggle({N_("Shuffle by Albu_m")}, {nullptr, "album_shuffle", "set album_shuffle"}), audqt::MenuToggle( - {N_("N_o Playlist Advance"), nullptr, "Ctrl+N"}, + {N_("N_o Playlist Advance"), "no-playlist-advance", "Ctrl+N"}, {nullptr, "no_playlist_advance", "set no_playlist_advance"}), audqt::MenuToggle({N_("Stop A_fter This Song"), nullptr, "Ctrl+M"}, {nullptr, "stop_after_current_song", diff --git a/src/skins-qt/menus.cc b/src/skins-qt/menus.cc index 64c3b7464..9c9f88e7b 100644 --- a/src/skins-qt/menus.cc +++ b/src/skins-qt/menus.cc @@ -95,7 +95,7 @@ static const audqt::MenuItem playback_items[] = { audqt::MenuToggle ({N_("Repeat"), "media-playlist-repeat", "R"}, {nullptr, "repeat", "set repeat"}), audqt::MenuToggle ({N_("Shuffle"), "media-playlist-shuffle", "S"}, {nullptr, "shuffle", "set shuffle"}), audqt::MenuToggle ({N_("Shuffle by Album")}, {nullptr, "album_shuffle", "set album_shuffle"}), - audqt::MenuToggle ({N_("No Playlist Advance"), nullptr, "Ctrl+N"}, {nullptr, "no_playlist_advance", "set no_playlist_advance"}), + audqt::MenuToggle ({N_("No Playlist Advance"), "no-playlist-advance", "Ctrl+N"}, {nullptr, "no_playlist_advance", "set no_playlist_advance"}), audqt::MenuToggle ({N_("Stop After This Song"), nullptr, "Ctrl+M"}, {nullptr, "stop_after_current_song", "set stop_after_current_song"}), audqt::MenuSep (), audqt::MenuCommand ({N_("Play"), "media-playback-start", "X"}, aud_drct_play), From 823a64d59582cff9894b8123233c6199ea93a176 Mon Sep 17 00:00:00 2001 From: SUN Haitao Date: Fri, 13 Jun 2025 12:45:00 +0800 Subject: [PATCH 2/2] gtkui: Add a toggle button for 'No Playlist Advance' --- src/gtkui/ui_gtk.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gtkui/ui_gtk.cc b/src/gtkui/ui_gtk.cc index 1792a88c0..40238df4e 100644 --- a/src/gtkui/ui_gtk.cc +++ b/src/gtkui/ui_gtk.cc @@ -136,7 +136,7 @@ static GtkWidget * window, * vbox_outer, * menu_box, * menu, * toolbar, * vbox, * infoarea, * statusbar; static GtkToolItem * menu_button, * search_button, * button_open, * button_add, * button_prev, * button_play, * button_stop, * button_next, * button_record, - * button_repeat, * button_shuffle; + * button_no_playlist_advance, * button_repeat, * button_shuffle; static GtkWidget * slider, * label_time; static GtkWidget * menu_main, * menu_rclick, * menu_tab; @@ -694,12 +694,19 @@ static void update_toggles (void * = nullptr, void * = nullptr) gtk_toggle_tool_button_set_active ((GtkToggleToolButton *) button_record, aud_get_bool ("record")); + gtk_toggle_tool_button_set_active ((GtkToggleToolButton *) button_no_playlist_advance, + aud_get_bool ("no_playlist_advance")); gtk_toggle_tool_button_set_active ((GtkToggleToolButton *) button_repeat, aud_get_bool ("repeat")); gtk_toggle_tool_button_set_active ((GtkToggleToolButton *) button_shuffle, aud_get_bool ("shuffle")); } +static void toggle_no_playlist_advance (GtkToggleToolButton * button) +{ + aud_set_bool ("no_playlist_advance", gtk_toggle_tool_button_get_active (button)); +} + static void toggle_repeat (GtkToggleToolButton * button) { aud_set_bool ("repeat", gtk_toggle_tool_button_get_active (button)); @@ -916,6 +923,9 @@ bool GtkUI::init () gtk_toolbar_insert ((GtkToolbar *) toolbar, gtk_separator_tool_item_new (), -1); /* repeat and shuffle buttons */ + button_no_playlist_advance = toggle_button_new ("no-playlist-advance", + _("No Playlist Advance"), toggle_no_playlist_advance, aud_get_bool ("no-playlist-advance")); + gtk_toolbar_insert ((GtkToolbar *) toolbar, button_no_playlist_advance, -1); button_repeat = toggle_button_new ("media-playlist-repeat", _("Repeat"), toggle_repeat, aud_get_bool ("repeat")); gtk_toolbar_insert ((GtkToolbar *) toolbar, button_repeat, -1);