Add support for list repeat mode

This commit is contained in:
daleclack 2023-10-13 23:37:02 +08:00
parent d3cf6159fc
commit 6858dc3b38
3 changed files with 35 additions and 4 deletions

View File

@ -377,6 +377,32 @@ static gboolean get_media_stream_status(MyMediaPlayer *player,
return FALSE;
}
// Operations when a media play end
static void media_play_ended_handler(MyMediaPlayer *player)
{
GtkMediaStream *stream;
// Get Current Play mode
PlayMode play_mode = my_media_player_get_play_mode(player);
switch (play_mode)
{
// Play a list of music once
case PlayMode::List_Once:
break;
case PlayMode::List_Repeat:
btnnext_clicked(NULL, player);
stream = gtk_video_get_media_stream(GTK_VIDEO(
my_media_player_get_video_widget(player)));
gtk_media_stream_play(stream);
break;
case PlayMode::List_Shuffle:
break;
case PlayMode::One_Repeat:
break;
}
}
// Time monitor
gboolean lyric_time_func(gpointer data)
{
@ -406,7 +432,7 @@ gboolean lyric_time_func(gpointer data)
my_media_player_get_music_loaded(player))
{
my_media_player_set_music_loaded(player, FALSE);
g_print("Media ended!\n");
media_play_ended_handler(player);
}
}
}

View File

@ -425,7 +425,7 @@ static void btnpriv_clicked(GtkButton *self, MyMediaPlayer *player)
}
// Play next music
static void btnnext_clicked(GtkButton *self, MyMediaPlayer *player)
void btnnext_clicked(GtkButton *self, MyMediaPlayer *player)
{
// Clear stream for player
GtkMediaStream *stream = gtk_video_get_media_stream(GTK_VIDEO(player->video));
@ -621,6 +621,9 @@ static void my_media_player_init(MyMediaPlayer *self)
// Check whether use dark icon name
self->dark_mode = my_media_player_check_dark_theme(self);
// Default Play mode is List_Repeat mode
self->current_play_mode = PlayMode::List_Repeat;
// Add widgets
gtk_box_append(GTK_BOX(self->main_box), self->video);
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(self->scrolled_lyrics),

View File

@ -24,4 +24,6 @@ PlayMode my_media_player_get_play_mode(MyMediaPlayer *self);
char *my_media_player_get_filename(MyMediaPlayer *self);
void btnnext_clicked(GtkButton *self, MyMediaPlayer *player);
MyMediaPlayer *my_media_player_new(GtkApplication *app);