summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorBrijesh Singh <brijesh.ksingh@gmail.com>2015-05-11 08:07:48 -0500
committerSebastian Dröge <sebastian@centricular.com>2015-05-12 10:59:16 +0300
commitc78a21d4dbeca5db3e8df90b072a8ab8e07d6c6c (patch)
tree730b02e1afd86101ff1df5b692c80b3a9bd727f2 /gtk
parentac8584e86f90298edd8dc20fca6f019c19c01118 (diff)
gtk-play: move duplicate code into one function
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtk-play.c83
1 files changed, 27 insertions, 56 deletions
diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c
index 35ce102..2c0ad77 100644
--- a/gtk/gtk-play.c
+++ b/gtk/gtk-play.c
@@ -158,25 +158,33 @@ play_pause_clicked_cb (GtkButton * button, GtkPlay * play)
}
static void
-skip_prev_clicked_cb (GtkButton * button, GtkPlay * play)
+play_current_uri (GtkPlay * play, GList * uri)
{
- GList *prev;
- gchar *cur_uri;
-
- prev = g_list_previous (play->current_uri);
- g_return_if_fail (prev != NULL);
-
+ /* reset the button/widget state to default */
if (play->image_pixbuf)
g_object_unref (play->image_pixbuf);
play->image_pixbuf = NULL;
- gtk_widget_set_sensitive (play->next_button, TRUE);
gtk_widget_set_sensitive (play->media_info_button, FALSE);
gtk_range_set_range (GTK_RANGE (play->seekbar), 0, 0);
- gst_player_set_uri (play->player, prev->data);
- play->current_uri = prev;
+ gtk_widget_set_sensitive (play->prev_button, g_list_previous (uri) != NULL);
+ gtk_widget_set_sensitive (play->next_button, g_list_next (uri) != NULL);
+
+ /* play uri */
+ gst_player_set_uri (play->player, uri->data);
+ play->current_uri = uri;
gst_player_play (play->player);
- set_title (play, prev->data);
- gtk_widget_set_sensitive (play->prev_button, g_list_previous (prev) != NULL);
+ set_title (play, uri->data);
+}
+
+static void
+skip_prev_clicked_cb (GtkButton * button, GtkPlay * play)
+{
+ GList *prev;
+
+ prev = g_list_previous (play->current_uri);
+ g_return_if_fail (prev != NULL);
+
+ play_current_uri (play, prev);
}
static GList *
@@ -216,44 +224,23 @@ open_file_clicked_cb (GtkWidget * unused, GtkPlay *play)
uris = open_file_dialog (play);
if (uris) {
+ /* free existing playlist */
g_list_free_full (play->uris, g_free);
+
play->uris = uris;
- current = g_list_first (play->uris);
-
- if (play->image_pixbuf)
- g_object_unref (play->image_pixbuf);
- play->image_pixbuf = NULL;
- gtk_widget_set_sensitive (play->prev_button, FALSE);
- gtk_widget_set_sensitive (play->media_info_button, FALSE);
- gtk_range_set_range (GTK_RANGE (play->seekbar), 0, 0);
- gst_player_set_uri (play->player, current->data);
- play->current_uri = current;
- gst_player_play (play->player);
- set_title (play, current->data);
- gtk_widget_set_sensitive (play->next_button, g_list_next (current) != NULL);
+ play_current_uri (play, g_list_first (play->uris));
}
}
static void
skip_next_clicked_cb (GtkButton * button, GtkPlay * play)
{
- GList *next, *l;
- gchar *cur_uri;
+ GList *next;
next = g_list_next (play->current_uri);
g_return_if_fail (next != NULL);
- if (play->image_pixbuf)
- g_object_unref (play->image_pixbuf);
- play->image_pixbuf = NULL;
- gtk_widget_set_sensitive (play->prev_button, TRUE);
- gtk_widget_set_sensitive (play->media_info_button, FALSE);
- gtk_range_set_range (GTK_RANGE (play->seekbar), 0, 0);
- gst_player_set_uri (play->player, next->data);
- play->current_uri = next;
- gst_player_play (play->player);
- set_title (play, next->data);
- gtk_widget_set_sensitive (play->next_button, g_list_next (next) != NULL);
+ play_current_uri (play, next);
}
static const gchar *
@@ -1171,20 +1158,7 @@ eos_cb (GstPlayer * unused, GtkPlay * play)
next = g_list_first (play->uris);
if (next) {
- if (!gtk_widget_is_sensitive (play->prev_button))
- gtk_widget_set_sensitive (play->prev_button, TRUE);
- gtk_widget_set_sensitive (play->next_button, g_list_next (next) != NULL);
- if (play->image_pixbuf)
- g_object_unref (play->image_pixbuf);
- play->image_pixbuf = NULL;
-
- gtk_widget_set_sensitive (play->media_info_button, FALSE);
- gtk_range_set_range (GTK_RANGE (play->seekbar), 0, 0);
-
- gst_player_set_uri (play->player, next->data);
- play->current_uri = next;
- gst_player_play (play->player);
- set_title (play, next->data);
+ play_current_uri (play, next);
} else {
GtkWidget *image;
@@ -1391,12 +1365,9 @@ main (gint argc, gchar ** argv)
g_object_set (play.player, "dispatch-to-main-context", TRUE, NULL);
- gst_player_set_uri (play.player, g_list_first (play.uris)->data);
-
create_ui (&play);
- if (list_length > 1)
- gtk_widget_set_sensitive (play.next_button, TRUE);
+ play_current_uri (&play, g_list_first (play.uris));
g_signal_connect (play.player, "position-updated",
G_CALLBACK (position_updated_cb), &play);