Updating branch refs/heads/master to 659c33a107e677d3efa5b37594c5a659b57cf25d (commit) from bb72d99afbac675c2508046405a3fbba7f2d5626 (commit)
commit 659c33a107e677d3efa5b37594c5a659b57cf25d Author: Sean Davis <smd.seanda...@gmail.com> Date: Sat Dec 15 07:54:58 2012 -0500 Addition of separate disc playlist. data/interfaces/playlist.ui | 171 ++++++++++++++++++++++++++------------ src/parole-disc.c | 10 -- src/parole-medialist.c | 195 +++++++++++++++++++++++++++++++------------ src/parole-medialist.h | 11 ++- src/parole-player.c | 21 +---- 5 files changed, 272 insertions(+), 136 deletions(-) diff --git a/data/interfaces/playlist.ui b/data/interfaces/playlist.ui index 4f2ff08..1330b86 100644 --- a/data/interfaces/playlist.ui +++ b/data/interfaces/playlist.ui @@ -92,21 +92,101 @@ <property name="visible">True</property> <property name="can_focus">False</property> <child> - <object class="GtkToggleButton" id="dvd_menu_button"> + <object class="GtkNotebook" id="playlist_notebook"> + <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="no_show_all">True</property> - <property name="use_action_appearance">False</property> + <property name="tab_pos">bottom</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> + <property name="window_placement_set">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="media-list"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <signal name="drag-data-received" handler="parole_media_list_drag_data_received_cb" swapped="no"/> + <signal name="key-press-event" handler="parole_media_list_key_press" swapped="no"/> + <signal name="row-activated" handler="parole_media_list_row_activated_cb" swapped="no"/> + <signal name="button-release-event" handler="parole_media_list_button_release_event" swapped="no"/> + <signal name="query-tooltip" handler="parole_media_list_query_tooltip" swapped="no"/> + </object> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Playlist</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkVBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="spacing">3</property> <child> - <object class="GtkImage" id="image_disc"> + <object class="GtkToggleButton" id="dvd_menu_button"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">drive-optical</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_action_appearance">False</property> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">3</property> + <child> + <object class="GtkImage" id="image_disc"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">drive-optical</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="dvd_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">DVD Name</property> + <property name="ellipsize">end</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkArrow" id="arrow1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="arrow_type">down</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> </object> <packing> <property name="expand">False</property> @@ -115,12 +195,22 @@ </packing> </child> <child> - <object class="GtkLabel" id="dvd_label"> + <object class="GtkScrolledWindow" id="scrolledwindow2"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">DVD Name</property> - <property name="ellipsize">end</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> + <property name="window_placement_set">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="disc-list"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">True</property> + <signal name="row-activated" handler="parole_media_list_row_activated_cb" swapped="no"/> + </object> + </child> </object> <packing> <property name="expand">True</property> @@ -128,54 +218,27 @@ <property name="position">1</property> </packing> </child> - <child> - <object class="GtkArrow" id="arrow1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="arrow_type">down</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">2</property> - </packing> - </child> </object> + <packing> + <property name="position">1</property> + </packing> </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">automatic</property> - <property name="window_placement_set">True</property> - <property name="shadow_type">in</property> - <child> - <object class="GtkTreeView" id="media-list"> + <child type="tab"> + <object class="GtkLabel" id="label2"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <property name="rules_hint">True</property> - <signal name="drag-data-received" handler="parole_media_list_drag_data_received_cb" swapped="no"/> - <signal name="key-press-event" handler="parole_media_list_key_press" swapped="no"/> - <signal name="row-activated" handler="parole_media_list_row_activated_cb" swapped="no"/> - <signal name="button-release-event" handler="parole_media_list_button_release_event" swapped="no"/> - <signal name="query-tooltip" handler="parole_media_list_query_tooltip" swapped="no"/> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Disc Playlist</property> </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> </child> </object> <packing> <property name="expand">True</property> <property name="fill">True</property> - <property name="position">1</property> + <property name="position">0</property> </packing> </child> <child> @@ -286,7 +349,7 @@ <property name="expand">False</property> <property name="fill">False</property> <property name="padding">2</property> - <property name="position">2</property> + <property name="position">1</property> </packing> </child> </object> diff --git a/src/parole-disc.c b/src/parole-disc.c index ce22e83..cd0303e 100644 --- a/src/parole-disc.c +++ b/src/parole-disc.c @@ -62,7 +62,6 @@ struct ParoleDiscPrivate enum { DISC_SELECTED, - DVD_ENABLED, LABEL_CHANGED, LAST_SIGNAL }; @@ -525,15 +524,6 @@ parole_disc_class_init (ParoleDiscClass *klass) _gmarshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); - - signals[DVD_ENABLED] = - g_signal_new ("dvd-enabled", - PAROLE_TYPE_DISC, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (ParoleDiscClass, dvd_enabled), - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, 1, G_TYPE_BOOLEAN); signals[LABEL_CHANGED] = g_signal_new ("label-changed", diff --git a/src/parole-medialist.c b/src/parole-medialist.c index a310b56..ac38bf9 100644 --- a/src/parole-medialist.c +++ b/src/parole-medialist.c @@ -93,7 +93,7 @@ static GtkTreeRowReference * GtkTreeIter *iter, gboolean select_path); -static void parole_media_list_select_path (ParoleMediaList *list, +static void parole_media_list_select_path (ParoleMediaList *list, gboolean disc, GtkTreePath *path); /* @@ -181,15 +181,20 @@ struct ParoleMediaListPrivate { DBusGConnection *bus; ParoleConf *conf; - GtkWidget *view; - GtkWidget *box; - GtkListStore *store; + GtkWidget *view; + GtkWidget *disc_view; + GtkWidget *box; + GtkListStore *store; + GtkListStore *disc_store; GtkTreeSelection *sel; + GtkTreeSelection *disc_sel; GtkWidget *dvd_menu; GtkWidget *dvd_menu_button; GtkWidget *dvd_label; GtkWidget *playlist_controls; + + GtkWidget *playlist_notebook; GtkWidget *remove_button; GtkWidget *clear_button; @@ -234,6 +239,7 @@ parole_media_list_set_widget_sensitive (ParoleMediaList *list, gboolean sensitiv * parole_media_list_add: * @ParoleMediaList: a #ParoleMediaList * @file: a #ParoleFile + * @disc: TRUE if added to disc playlist. * @emit: TRUE to emit a play signal. * @select_row: TRUE to select the added row * @@ -242,7 +248,7 @@ parole_media_list_set_widget_sensitive (ParoleMediaList *list, gboolean sensitiv * start playing the added file. **/ static void -parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, gboolean select_row) +parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean disc, gboolean emit, gboolean select_row) { GtkListStore *list_store; GtkTreePath *path; @@ -250,7 +256,10 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, g GtkTreeIter iter; gint nch; - list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view))); + if (disc) + list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->disc_view))); + else + list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view))); gtk_list_store_append (list_store, &iter); @@ -267,7 +276,7 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, g path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter); row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list_store), path); if ( select_row ) - parole_media_list_select_path (list, path); + parole_media_list_select_path (list, disc, path); gtk_tree_path_free (path); if ( emit ) g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row); @@ -280,6 +289,9 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, g */ g_object_unref (file); + if (disc) + nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->disc_store), NULL); + else nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL); if ( nch == 1 ) @@ -296,11 +308,12 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, g * parole_media_list_files_open: * @ParoleMediaList: a #ParoleMediaList * @files: a #GSList contains a list of #ParoleFile + * @disc: TRUE if files are opened to the disc playlist. * @emit: TRUE to emit a play signal. * **/ static void -parole_media_list_files_open (ParoleMediaList *list, GSList *files, gboolean emit) +parole_media_list_files_open (ParoleMediaList *list, GSList *files, gboolean disc, gboolean emit) { ParoleFile *file; gboolean replace; @@ -322,13 +335,13 @@ parole_media_list_files_open (ParoleMediaList *list, GSList *files, gboolean emi if ( replace ) parole_media_list_clear_list (list); file = g_slist_nth_data (files, 0); - parole_media_list_add (list, file, emit, TRUE); + parole_media_list_add (list, file, disc, emit, TRUE); } for ( i = 1; i < len; i++) { file = g_slist_nth_data (files, i); - parole_media_list_add (list, file, FALSE, FALSE); + parole_media_list_add (list, file, disc, FALSE, FALSE); } } @@ -345,7 +358,7 @@ parole_media_list_add_cdda_tracks (ParoleMediaList *list, gint n_tracks) files = g_slist_append(files, file); } - parole_media_list_files_open(list, files, TRUE); + parole_media_list_files_open(list, files, FALSE, TRUE); } void @@ -362,7 +375,7 @@ parole_media_list_add_dvd_chapters (ParoleMediaList *list, gint n_chapters) } //parole_media_list_clear_list (list); - parole_media_list_files_open(list, files, TRUE); + parole_media_list_files_open(list, files, TRUE, TRUE); } /* Callback to determine whether opened files should start playing immediately */ @@ -377,7 +390,7 @@ parole_media_list_files_opened_cb (ParoleMediaChooser *chooser, "play-opened-files", &play, NULL); - parole_media_list_files_open (list, files, play); + parole_media_list_files_open (list, files, FALSE, play); } static void @@ -392,7 +405,7 @@ parole_media_list_location_opened_cb (ParoleOpenLocation *obj, const gchar *loca else { file = parole_file_new (location); - parole_media_list_add (list, file, TRUE, TRUE); + parole_media_list_add (list, file, FALSE, TRUE, TRUE); } } @@ -910,7 +923,7 @@ parole_media_list_remove_clicked_cb (GtkButton *button, ParoleMediaList *list) if ( gtk_tree_path_prev (prev) ) { - parole_media_list_select_path (list, prev); + parole_media_list_select_path (list, FALSE, prev); row_selected = TRUE; } gtk_tree_path_free (prev); @@ -943,7 +956,7 @@ parole_media_list_remove_clicked_cb (GtkButton *button, ParoleMediaList *list) { GtkTreePath *path; path = parole_media_list_get_first_path (model); - parole_media_list_select_path (list, path); + parole_media_list_select_path (list, FALSE, path); gtk_tree_path_free (path); } @@ -976,8 +989,12 @@ parole_media_list_row_activated_cb (GtkTreeView *view, GtkTreePath *path, { GtkTreeRowReference *row; + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view)), path); + else + row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->disc_view)), + path); g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row); } @@ -1072,6 +1089,18 @@ parole_media_list_add_open_containing_folder (ParoleMediaList *list, GtkWidget * } } +void +parole_media_list_set_playlist_view(ParoleMediaList *list, gint view) +{ + gtk_notebook_set_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook), view); +} + +void +parole_media_list_clear_disc_list (ParoleMediaList *list) +{ + gtk_list_store_clear (GTK_LIST_STORE (list->priv->disc_store)); + //parole_media_list_set_widget_sensitive (list, FALSE); +} void parole_media_list_clear_list (ParoleMediaList *list) @@ -1168,14 +1197,6 @@ menu_detach( GtkMenu *menu ) } void -parole_media_list_set_dvd_menu_visible(ParoleMediaList *list, gboolean visible) -{ - gtk_widget_set_visible(list->priv->dvd_menu_button, visible); - /* Disable the playlist controls when in DVD mode. */ - gtk_widget_set_sensitive(list->priv->playlist_controls, !visible); -} - -void parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name) { //parole_media_list_set_dvd_menu_visible(list, TRUE); @@ -1435,10 +1456,18 @@ parole_media_list_button_release_event (GtkWidget *widget, GdkEventButton *ev, P } static void -parole_media_list_select_path (ParoleMediaList *list, GtkTreePath *path) +parole_media_list_select_path (ParoleMediaList *list, gboolean disc, GtkTreePath *path) { + if (disc) + { + gtk_tree_selection_select_path (list->priv->disc_sel, path); + gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->disc_view), path, NULL, FALSE); + } + else + { gtk_tree_selection_select_path (list->priv->sel, path); gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->view), path, NULL, FALSE); + } } static GtkTreeRowReference * @@ -1451,7 +1480,7 @@ parole_media_list_get_row_reference_from_iter (ParoleMediaList *list, GtkTreeIte row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path); if ( select_path) - parole_media_list_select_path (list, path); + parole_media_list_select_path (list, FALSE, path); gtk_tree_path_free (path); @@ -1548,60 +1577,80 @@ parole_media_list_class_init (ParoleMediaListClass *klass) static void parole_media_list_setup_view (ParoleMediaList *list) { - GtkTreeSelection *sel; - GtkListStore *list_store; - GtkTreeViewColumn *col; - GtkCellRenderer *renderer; + GtkTreeSelection *sel, *disc_sel; + GtkListStore *list_store, *disc_list_store; + GtkTreeViewColumn *col, *disc_col; + GtkCellRenderer *renderer, *disc_renderer; list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); + disc_list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->view), GTK_TREE_MODEL(list_store)); + gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->disc_view), GTK_TREE_MODEL(disc_list_store)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->view), TRUE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->disc_view), TRUE); col = gtk_tree_view_column_new (); + disc_col = gtk_tree_view_column_new (); renderer = gtk_cell_renderer_pixbuf_new (); + disc_renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start(col, renderer, FALSE); + gtk_tree_view_column_pack_start(disc_col, disc_renderer, FALSE); gtk_tree_view_column_set_attributes(col, renderer, "pixbuf", PIXBUF_COL, NULL); - + gtk_tree_view_column_set_attributes(disc_col, disc_renderer, "pixbuf", PIXBUF_COL, NULL); /** * Name col * **/ renderer = gtk_cell_renderer_text_new(); + disc_renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_set_attributes (col, renderer, "text", NAME_COL, NULL); g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - + + gtk_tree_view_column_pack_start (disc_col, disc_renderer, TRUE); + gtk_tree_view_column_set_attributes (disc_col, disc_renderer, "text", NAME_COL, NULL); + g_object_set (disc_renderer, + "ellipsize", PANGO_ELLIPSIZE_END, + NULL); /** * Media length * **/ renderer = gtk_cell_renderer_text_new(); + disc_renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start (col, renderer, FALSE); + gtk_tree_view_column_pack_start (disc_col, disc_renderer, FALSE); gtk_tree_view_column_set_attributes (col, renderer, "text", LENGTH_COL, NULL); - + gtk_tree_view_column_set_attributes (disc_col, disc_renderer, "text", LENGTH_COL, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), col); + gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->disc_view), disc_col); gtk_tree_view_column_set_title (col, _("Media list")); + gtk_tree_view_column_set_title (disc_col, _("Chapter list")); gtk_drag_dest_set (list->priv->view, GTK_DEST_DEFAULT_ALL, target_entry, G_N_ELEMENTS (target_entry), GDK_ACTION_COPY | GDK_ACTION_MOVE); list->priv->sel = sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->priv->view)); + list->priv->disc_sel = disc_sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->priv->disc_view)); gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE); g_signal_connect (sel, "changed", G_CALLBACK (parole_media_list_selection_changed_cb), list); + g_signal_connect (disc_sel, "changed", + G_CALLBACK (parole_media_list_selection_changed_cb), list); list->priv->store = list_store; + list->priv->disc_store = disc_list_store; } static void @@ -1622,11 +1671,13 @@ parole_media_list_init (ParoleMediaList *list) list->priv->dvd_menu = GTK_WIDGET (gtk_builder_get_object(builder, "dvd-menu")); list->priv->dvd_label = GTK_WIDGET (gtk_builder_get_object(builder, "dvd_label")); list->priv->playlist_controls = GTK_WIDGET (gtk_builder_get_object(builder, "playlist_controls")); + list->priv->playlist_notebook = GTK_WIDGET (gtk_builder_get_object(builder, "playlist_notebook")); g_signal_connect (GTK_TOGGLE_BUTTON(list->priv->dvd_menu_button), "toggled", G_CALLBACK (parole_media_list_show_dvd_menu), list); list->priv->view = GTK_WIDGET (gtk_builder_get_object (builder, "media-list")); + list->priv->disc_view = GTK_WIDGET (gtk_builder_get_object (builder, "disc-list")); box = GTK_WIDGET (gtk_builder_get_object (builder, "playlist-box")); @@ -1694,7 +1745,7 @@ void parole_media_list_load (ParoleMediaList *list) fileslist = parole_pl_parser_parse_from_file_by_extension (playlist_file); g_free (playlist_file); - parole_media_list_files_open (list, fileslist, play); + parole_media_list_files_open (list, fileslist, FALSE, play); g_slist_free (fileslist); } } @@ -1716,7 +1767,7 @@ parole_media_list_add_by_path (ParoleMediaList *list, const gchar *path, gboolea parole_get_media_files (filter, path, TRUE, &files_list); - parole_media_list_files_open (list, files_list, emit); + parole_media_list_files_open (list, files_list, FALSE, emit); len = g_slist_length (files_list); ret = len == 0 ? FALSE : TRUE; @@ -1802,10 +1853,15 @@ GtkTreeRowReference *parole_media_list_get_row_n (ParoleMediaList *list, path = gtk_tree_path_new_from_string( g_strdup_printf("%i", wanted_row) ); - if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path)) + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) { - row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path); - //parole_media_list_select_path (list, path); + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path)) + row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path); + } + else + { + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), &iter, path)) + row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->disc_store), path); } gtk_tree_path_free (path); @@ -1848,15 +1904,21 @@ GtkTreeRowReference *parole_media_list_get_row_random (ParoleMediaList *list) } gboolean parole_media_list_is_selected_row (ParoleMediaList *list) -{ +{ + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) return gtk_tree_selection_count_selected_rows (list->priv->sel) > 0; + else + return gtk_tree_selection_count_selected_rows (list->priv->disc_sel) > 0; } gboolean parole_media_list_is_empty (ParoleMediaList *list) { GtkTreeIter iter; + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter); + else + return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->disc_store), &iter); } /** @@ -1871,9 +1933,15 @@ GtkTreeRowReference *parole_media_list_get_first_row (ParoleMediaList *list) GtkTreeRowReference *row = NULL; GtkTreeIter iter; - if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter) ) + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) { - row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE); + if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter) ) + row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE); + } + else + { + if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->disc_store), &iter) ) + row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE); } return row; @@ -1909,9 +1977,11 @@ void parole_media_list_select_row (ParoleMediaList *list, GtkTreeRowReference *r if ( gtk_tree_row_reference_valid (row) ) { - path = gtk_tree_row_reference_get_path (row); - parole_media_list_select_path (list, path); - gtk_tree_path_free (path); + path = gtk_tree_row_reference_get_path (row); + parole_media_list_select_path (list, + gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 1, + path); + gtk_tree_path_free (path); } } @@ -1924,10 +1994,17 @@ void parole_media_list_set_row_pixbuf (ParoleMediaList *list, GtkTreeRowReferen { path = gtk_tree_row_reference_get_path (row); - if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) + { + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1); + } + else { - gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1); + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), &iter, path) ) + gtk_list_store_set (list->priv->disc_store, &iter, PIXBUF_COL, pix, -1); } + gtk_tree_path_free (path); } } @@ -1941,10 +2018,17 @@ void parole_media_list_set_row_name (ParoleMediaList *list, GtkTreeRowReference { path = gtk_tree_row_reference_get_path (row); - if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) { - gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1); + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1); } + else + { + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), &iter, path) ) + gtk_list_store_set (list->priv->disc_store, &iter, NAME_COL, name, -1); + } + gtk_tree_path_free (path); } } @@ -1958,10 +2042,17 @@ void parole_media_list_set_row_length (ParoleMediaList *list, GtkTreeRowReferenc { path = gtk_tree_row_reference_get_path (row); - if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) + { + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) + gtk_list_store_set (list->priv->store, &iter, LENGTH_COL, len, -1); + } + else { - gtk_list_store_set (list->priv->store, &iter, LENGTH_COL, len, -1); + if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), &iter, path) ) + gtk_list_store_set (list->priv->disc_store, &iter, LENGTH_COL, len, -1); } + gtk_tree_path_free (path); } } @@ -1996,9 +2087,9 @@ gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames, TRACE ("File=%s", filenames[i]); file = parole_file_new (filenames[i]); if (enqueue) { - parole_media_list_add (list, file, FALSE, FALSE);} + parole_media_list_add (list, file, FALSE, FALSE, FALSE);} else - parole_media_list_add (list, file, i == 0 ? TRUE : FALSE, i == 0 ? TRUE : FALSE); + parole_media_list_add (list, file, FALSE, i == 0 ? TRUE : FALSE, i == 0 ? TRUE : FALSE); added++; } } diff --git a/src/parole-medialist.h b/src/parole-medialist.h index c880fa7..95721dd 100644 --- a/src/parole-medialist.h +++ b/src/parole-medialist.h @@ -39,6 +39,12 @@ enum COL_NUMBERS }; +enum +{ + PAROLE_MEDIA_LIST_PLAYLIST_VIEW_STANDARD, + PAROLE_MEDIA_LIST_PLAYLIST_VIEW_DISC +}; + typedef struct ParoleMediaListPrivate ParoleMediaListPrivate; typedef struct @@ -82,6 +88,9 @@ GtkWidget *parole_media_list_get (void); void parole_media_list_load (ParoleMediaList *list); +void parole_media_list_set_playlist_view(ParoleMediaList *list, gint view); + +void parole_media_list_clear_disc_list (ParoleMediaList *list); void parole_media_list_clear_list (ParoleMediaList *list); @@ -151,8 +160,6 @@ void parole_media_list_set_shuffle_toggled (ParoleMediaList *list, void parole_media_list_add_dvd (ParoleMediaList *list, gchar *dvd_name); - -void parole_media_list_set_dvd_menu_visible(ParoleMediaList *list, gboolean visible); G_END_DECLS diff --git a/src/parole-player.c b/src/parole-player.c index 584c949..0faa362 100644 --- a/src/parole-player.c +++ b/src/parole-player.c @@ -578,7 +578,8 @@ parole_player_reset (ParolePlayer *player) player->priv->row = NULL; } - parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE); + parole_media_list_set_playlist_view(player->priv->list, PAROLE_MEDIA_LIST_PLAYLIST_VIEW_STANDARD); + //parole_media_list_clear_disc_list (player->priv->list); } static void @@ -1037,17 +1038,10 @@ parole_player_disc_selected_cb (ParoleDisc *disc, const gchar *uri, const gchar player->priv->current_media_type = parole_gst_get_current_stream_type (PAROLE_GST (player->priv->gst)); if ( player->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA ) - { player->priv->wait_for_gst_disc_info = TRUE; - parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE); - } - else if (player->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD ) - parole_media_list_set_dvd_menu_visible(player->priv->list, TRUE); - else - parole_media_list_set_dvd_menu_visible(player->priv->list, FALSE); - parole_media_list_clear_list (player->priv->list); + parole_media_list_set_playlist_view(player->priv->list, PAROLE_MEDIA_LIST_PLAYLIST_VIEW_DISC); } static void @@ -1057,12 +1051,6 @@ parole_player_disc_label_changed_cb (ParoleDisc *disc, const gchar *label, Parol } static void -parole_player_disc_dvd_enabled_cb (ParoleDisc *disc, gboolean enabled, ParolePlayer *player) -{ - parole_media_list_set_dvd_menu_visible(player->priv->list, enabled); -} - -static void parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, ParolePlayer *player) { parole_player_reset (player); @@ -2777,9 +2765,6 @@ parole_player_init (ParolePlayer *player) g_signal_connect (player->priv->disc, "label-changed", G_CALLBACK (parole_player_disc_label_changed_cb), player); - - g_signal_connect (player->priv->disc, "dvd-enabled", - G_CALLBACK (parole_player_disc_dvd_enabled_cb), player); player->priv->screen_saver = parole_screen_saver_new (); player->priv->list = PAROLE_MEDIA_LIST (parole_media_list_get ()); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits