[Xfce4-commits] [apps/parole] 07/07: Merge ochosis timeout_option branch
noreply at xfce.org
noreply at xfce.org
Mon Jun 9 02:49:23 CEST 2014
This is an automated email from the git hooks/post-receive script.
bluesabre pushed a commit to branch master
in repository apps/parole.
commit 52f89f6be2922a2e408b764fdb707f36f67a1a37
Merge: dbd8d18 caafbeb
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Sun Jun 8 20:48:59 2014 -0400
Merge ochosis timeout_option branch
data/interfaces/parole.ui | 80 +++++++++++++++++++++----------
src/parole-conf.c | 19 ++++++++
src/parole-player.c | 117 ++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 189 insertions(+), 27 deletions(-)
diff --cc src/parole-player.c
index 7fa99cc,24600e7..18e1621
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@@ -1374,9 -1357,10 +1375,11 @@@ parole_player_playing (ParolePlayer *pl
gint64 duration;
gboolean seekable;
gboolean live;
+
+ int hide_controls_timeout;
-
++
parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_PLAYING);
-
+
g_object_get (G_OBJECT (stream),
"seekable", &seekable,
"duration", &duration,
@@@ -1431,8 -1415,11 +1434,11 @@@
parole_media_list_select_row (player->priv->list, player->priv->row);
gtk_widget_grab_focus (player->priv->gst);
parole_player_update_languages (player, PAROLE_GST(player->priv->gst));
-
+
- g_timeout_add_seconds (4, (GSourceFunc) parole_player_hide_controls, player);
+ g_object_get (G_OBJECT (player->priv->conf),
+ "hide-controls-timeout", &hide_controls_timeout,
+ NULL);
+ g_timeout_add_seconds (hide_controls_timeout, (GSourceFunc) parole_player_hide_controls, player);
}
static void
@@@ -2188,21 -2133,25 +2194,26 @@@ gboolea
parole_player_gst_widget_motion_notify_event (GtkWidget *widget, GdkEventMotion *ev, ParolePlayer *player)
{
static gulong hide_timeout = 0;
+ int hide_controls_timeout;
GdkWindow *gdkwindow;
-
+
if ( hide_timeout != 0)
{
g_source_remove (hide_timeout);
hide_timeout = 0;
}
-
+
gtk_widget_show_all (gtk_widget_get_parent(player->priv->control));
-
+
gdkwindow = gtk_widget_get_window (GTK_WIDGET(player->priv->eventbox_output));
gdk_window_set_cursor (gdkwindow, NULL);
-
+
+ g_object_get (G_OBJECT (player->priv->conf),
+ "hide-controls-timeout", &hide_controls_timeout,
+ NULL);
++
if ( player->priv->state == PAROLE_STATE_PLAYING )
- hide_timeout = g_timeout_add_seconds (4, (GSourceFunc) parole_player_hide_controls, player);
+ hide_timeout = g_timeout_add_seconds (hide_controls_timeout, (GSourceFunc) parole_player_hide_controls, player);
return FALSE;
}
@@@ -2228,10 -2177,17 +2239,17 @@@ parole_player_save_playlist_cb (GtkWidg
void
parole_player_media_menu_select_cb (GtkMenuItem *widget, ParolePlayer *player)
{
- gtk_widget_set_sensitive (player->priv->save_playlist,
- !parole_media_list_is_empty (player->priv->list));
+ gtk_widget_set_sensitive (player->priv->save_playlist,
+ !parole_media_list_is_empty (player->priv->list));
}
+ void
+ parole_player_playback_menu_select_cb (GtkMenuItem *widget, ParolePlayer *player)
+ {
- gtk_widget_set_sensitive (player->priv->goto_position,
- !parole_media_list_is_empty (player->priv->list));
++ gtk_widget_set_sensitive (player->priv->goto_position,
++ !parole_media_list_is_empty (player->priv->list));
+ }
+
void parole_player_open_preferences_cb (GtkWidget *widget, ParolePlayer *player)
{
parole_conf_dialog_open (player->priv->settings_dialog, player->priv->window);
@@@ -2713,8 -2669,95 +2731,95 @@@ on_contents_clicked (GtkWidget *w, Paro
}
}
+ gboolean
+ on_goto_position_clicked (GtkWidget *w, ParolePlayer *player)
+ {
+ GtkWidget *dialog;
+ GtkWidget *vbox, *hbox, *label;
+ GtkWidget *spin_hrs, *spin_mins, *spin_secs;
+ GtkAdjustment *adjustment;
+ gint response;
+ gdouble position, duration = 0, current_position = 0;
+ int hrs, mins, secs;
+ int max_hrs, max_mins = 59;
+ int cur_hrs, cur_mins, cur_secs;
+
+ /* Create dialog */
+ dialog = gtk_dialog_new_with_buttons (_("Go to position"),
+ GTK_WINDOW(player->priv->window),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ _("Cancel"), GTK_RESPONSE_CANCEL,
+ _("Go"), GTK_RESPONSE_OK,
+ NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+
+ /* pack boxes and spinbutton */
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG(dialog))), vbox, TRUE, TRUE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
-
++
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
-
++
+ label = gtk_label_new (_("Position:"));
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
++
+ /* Get the stream length and set that as maximum for hours and minutes */
+ adjustment = gtk_range_get_adjustment (GTK_RANGE (player->priv->range));
+ duration = gtk_adjustment_get_upper (adjustment);
+ current_position = gtk_range_get_value (GTK_RANGE (player->priv->range));
+ max_hrs = (int) duration/3600;
+ if ( duration/60 <= 59 )
+ max_mins = (int) duration/60;
+
+ spin_hrs = gtk_spin_button_new_with_range (0, max_hrs, 1);
+ spin_mins = gtk_spin_button_new_with_range (0, max_mins, 1);
+ spin_secs = gtk_spin_button_new_with_range (0, 59, 1);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_hrs, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_mins, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_secs, FALSE, FALSE, 0);
+
+ if ( duration < 3600 )
+ gtk_widget_set_sensitive (GTK_WIDGET (spin_hrs), FALSE);
+ if ( duration < 60 )
+ gtk_widget_set_sensitive (GTK_WIDGET (spin_mins), FALSE);
+ if ( duration = 0 )
+ gtk_widget_set_sensitive (GTK_WIDGET (spin_secs), FALSE);
+
+ if ( current_position != 0 )
+ {
+ cur_hrs = (int) current_position/3600;
+ cur_mins = (int) current_position/60 - cur_hrs*60;
+ cur_secs = (int) current_position - cur_hrs*3600 - cur_mins*60;
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_hrs), cur_hrs);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_mins), cur_mins);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_secs), cur_secs);
+ }
+
+ // FIXME: Prevent the mouse-cursor and controls from hiding
+ /* show dialog */
+ gtk_widget_show_all (dialog);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (response == GTK_RESPONSE_OK)
+ {
+ /* update range according to the value */
+ hrs = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin_hrs));
+ mins = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin_mins));
+ secs = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin_secs));
+ position = hrs*3600 + mins*60 + secs;
+ parole_gst_seek (PAROLE_GST (player->priv->gst), position);
+ parole_player_change_range_value (player, position);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ return (response == GTK_RESPONSE_OK);
+ }
+
/**
- *
+ *
* Draw a simple rectangular GtkOverlay
* using the theme's background and border-color
* to keep it on top of the gst-video-widget with Gtk3.8 and above
@@@ -2943,11 -2986,12 +3048,14 @@@ parole_player_init (ParolePlayer *playe
GtkRecentFilter *recent_filter;
GtkWidget *clear_recent;
GtkWidget *recent_separator;
+
+ GtkWidget *goto_position;
-
++
++
GtkWidget *bug_report, *contents;
-
+
GtkCellRenderer *cell, *sub_cell;
-
+
GtkWidget *hbox_infobar;
GtkWidget *audiotrack_box, *audiotrack_label, *subtitle_box, *subtitle_label, *infobar_close, *close_icon;
GtkWidget *content_area;
@@@ -3172,8 -3228,13 +3280,13 @@@
g_signal_connect (bug_report, "activate", G_CALLBACK(on_bug_report_clicked), player);
contents = GTK_WIDGET (gtk_builder_get_object (builder, "contents"));
g_signal_connect (contents, "activate", G_CALLBACK(on_contents_clicked), player);
+ player->priv->goto_position = GTK_WIDGET (gtk_builder_get_object (builder, "goto_position"));
+ g_signal_connect (player->priv->goto_position, "activate",
+ G_CALLBACK(on_goto_position_clicked), player);
+ g_signal_connect (gtk_builder_get_object (builder, "playback-menu"), "select",
+ G_CALLBACK (parole_player_playback_menu_select_cb), player);
/* End Menu Bar */
-
+
/* Content Area (Background, Audio, Video) */
player->priv->eventbox_output = GTK_WIDGET (gtk_builder_get_object (builder, "content_area"));
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list