@@ -480,6 +480,28 @@ toggle_and_get_active_menu_item(const gchar *glade_id)
480480
481481// Shuffle mode
482482
483+ static void
484+ action_shuffle_mode_init (GSimpleAction * action )
485+ {
486+ ddb_shuffle_t shuffle = deadbeef -> streamer_get_shuffle ();
487+ switch (shuffle )
488+ {
489+ case DDB_SHUFFLE_OFF :
490+ g_simple_action_set_state (action , g_variant_new_string ("off" ));
491+ break ;
492+ case DDB_SHUFFLE_TRACKS :
493+ g_simple_action_set_state (action , g_variant_new_string ("tracks" ));
494+ break ;
495+ case DDB_SHUFFLE_RANDOM :
496+ g_simple_action_set_state (action , g_variant_new_string ("random" ));
497+ break ;
498+ case DDB_SHUFFLE_ALBUMS :
499+ g_simple_action_set_state (action , g_variant_new_string ("albums" ));
500+ break ;
501+ }
502+
503+ }
504+
483505static void
484506action_shuffle_mode_activate (GSimpleAction * action , GVariant * parameter , gpointer user_data )
485507{
@@ -530,6 +552,25 @@ order_random_activate(GtkMenuItem *menuitem, gpointer user_data)
530552
531553// Repeat mode
532554
555+ static void
556+ action_repeat_mode_init (GSimpleAction * action )
557+ {
558+ ddb_repeat_t repeat = deadbeef -> streamer_get_repeat ();
559+ switch (repeat )
560+ {
561+ case DDB_REPEAT_OFF :
562+ g_simple_action_set_state (action , g_variant_new_string ("off" ));
563+ break ;
564+ case DDB_REPEAT_SINGLE :
565+ g_simple_action_set_state (action , g_variant_new_string ("single" ));
566+ break ;
567+ case DDB_REPEAT_ALL :
568+ g_simple_action_set_state (action , g_variant_new_string ("all" ));
569+ break ;
570+ }
571+
572+ }
573+
533574static void
534575action_repeat_mode_activate (GSimpleAction * action , GVariant * parameter , gpointer user_data )
535576{
@@ -845,12 +886,12 @@ get_display_action_title (const char *title) {
845886}
846887
847888#ifndef strdupa
848- # define strdupa (s ) \
849- ({ \
850- const char *old = (s); \
851- size_t len = strlen (old) + 1; \
852- char *newstr = (char *) alloca (len); \
853- (char *) memcpy (newstr, old, len); \
889+ # define strdupa (s ) \
890+ ({ \
891+ const char *old = (s); \
892+ size_t len = strlen (old) + 1; \
893+ char *newstr = (char *) alloca (len); \
894+ (char *) memcpy (newstr, old, len); \
854895 })
855896#endif
856897
@@ -1142,10 +1183,12 @@ void window_init_hook (void *userdata) {
11421183 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "shufflemode" , G_CALLBACK (order_shuffle_activate ), "order_shuffle" );
11431184 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "shufflemode" , G_CALLBACK (order_shuffle_albums_activate ), "order_shuffle_albums" );
11441185 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "shufflemode" , G_CALLBACK (order_random_activate ), "order_random" );
1186+ action_shuffle_mode_init (g_action_map_lookup_action (G_ACTION_MAP (group ), "shufflemode" ));
11451187
11461188 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "repeatmode" , G_CALLBACK (loop_disable_activate ), "loop_disable" );
11471189 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "repeatmode" , G_CALLBACK (loop_single_activate ), "loop_single" );
11481190 hookup_action_to_radio_menu_item (G_ACTION_MAP (group ), "repeatmode" , G_CALLBACK (loop_all_albums_activate ), "loop_all" );
1191+ action_repeat_mode_init (g_action_map_lookup_action (G_ACTION_MAP (group ), "repeatmode" ));
11491192
11501193
11511194 g_object_set (G_OBJECT (headerbar ), "spacing" , headerbarui_flags .button_spacing , NULL );
0 commit comments