[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