Commit 66a79530 authored by Jean-Paul Saman's avatar Jean-Paul Saman

PDA Interface:

- Fix segfault when adding one file to the playlist widget from the fileview widget.
- Cleanup of code.
parent 407540bf
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* pda_callbacks.c : Callbacks for the pda Linux Gtk+ plugin. * pda_callbacks.c : Callbacks for the pda Linux Gtk+ plugin.
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: pda_callbacks.c,v 1.15 2003/11/21 09:23:49 jpsaman Exp $ * $Id: pda_callbacks.c,v 1.16 2003/11/25 20:01:08 jpsaman Exp $
* *
* Authors: Jean-Paul Saman <jpsaman@wxs.nl> * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
* *
...@@ -89,7 +89,17 @@ void * E_(__GtkGetIntf)( GtkWidget * widget ) ...@@ -89,7 +89,17 @@ void * E_(__GtkGetIntf)( GtkWidget * widget )
void PlaylistAddItem(GtkWidget *widget, gchar *name) void PlaylistAddItem(GtkWidget *widget, gchar *name)
{ {
GtkTreeView *p_tvplaylist = NULL; intf_thread_t *p_intf = GtkGetIntf( widget );
playlist_t *p_playlist;
GtkTreeView *p_tvplaylist = NULL;
p_playlist = (playlist_t *)
vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( p_playlist == NULL)
{ /* Bail out when VLC's playlist object is not found. */
return;
}
/* Add to playlist object. */ /* Add to playlist object. */
p_tvplaylist = (GtkTreeView *) lookup_widget( GTK_WIDGET(widget), "tvPlaylist"); p_tvplaylist = (GtkTreeView *) lookup_widget( GTK_WIDGET(widget), "tvPlaylist");
...@@ -108,8 +118,25 @@ void PlaylistAddItem(GtkWidget *widget, gchar *name) ...@@ -108,8 +118,25 @@ void PlaylistAddItem(GtkWidget *widget, gchar *name)
0, name, /* Add path to it !!! */ 0, name, /* Add path to it !!! */
1, "no info", 1, "no info",
-1 ); -1 );
msg_Dbg( p_intf, "Adding files to playlist ...");
/* Add to VLC's playlist */
#if 0
if (p_intf->p_sys->b_autoplayfile)
{
playlist_Add( p_playlist, (char*)name, 0, 0,
PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END);
}
else
{
playlist_Add( p_playlist, (char*)name, 0, 0,
PLAYLIST_APPEND, PLAYLIST_END );
}
#endif
msg_Dbg( p_intf, "done");
} }
} }
vlc_object_release( p_playlist );
} }
void PlaylistRebuildListStore( GtkListStore * p_list, playlist_t * p_playlist ) void PlaylistRebuildListStore( GtkListStore * p_list, playlist_t * p_playlist )
...@@ -136,39 +163,6 @@ void PlaylistRebuildListStore( GtkListStore * p_list, playlist_t * p_playlist ) ...@@ -136,39 +163,6 @@ void PlaylistRebuildListStore( GtkListStore * p_list, playlist_t * p_playlist )
vlc_mutex_unlock( &p_playlist->object_lock ); vlc_mutex_unlock( &p_playlist->object_lock );
} }
#if 0
void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url )
{
intf_thread_t *p_intf = GtkGetIntf( widget );
playlist_t *p_playlist;
p_playlist = (playlist_t *)
vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( p_playlist == NULL)
{
return;
}
if( p_playlist )
{
if (p_intf->p_sys->b_autoplayfile)
{
playlist_Add( p_playlist, (char*)psz_url, 0, 0,
PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END);
}
else
{
playlist_Add( p_playlist, (char*)psz_url, 0, 0,
PLAYLIST_APPEND, PLAYLIST_END );
}
vlc_object_release( p_playlist );
PlaylistAddItem(GTK_WIDGET(widget), psz_url);
}
}
#endif
/***************************************************************** /*****************************************************************
* Read directory helper function. * Read directory helper function.
****************************************************************/ ****************************************************************/
...@@ -501,58 +495,43 @@ onFileListRow (GtkTreeView *treeview, ...@@ -501,58 +495,43 @@ onFileListRow (GtkTreeView *treeview,
/* This might be a directory selection */ /* This might be a directory selection */
model = gtk_tree_view_get_model(treeview); model = gtk_tree_view_get_model(treeview);
if (!model) if (!model)
msg_Err(p_intf, "PDA: Filelist model contains a NULL pointer\n" );
if (path == NULL )
{ {
#if 0 msg_Err(p_intf, "PDA: Filelist model contains a NULL pointer\n" );
GList* list; return;
list = gtk_tree_selection_get_selected_rows(selection,model);
if (g_list_length(list) == 1)
{
filename = (gchar *) g_list_nth_data(list,0);
msg_Dbg(p_intf, "PDA: filename = %s", (gchar*) filename );
PlaylistAddItem(GTK_WIDGET(treeview), filename);
}
g_list_foreach (list, gtk_tree_path_free, NULL);
g_list_free (list);
#endif
} }
else if (!gtk_tree_model_get_iter(model, &iter, path))
{ {
if (!gtk_tree_model_get_iter(model, &iter, path)) msg_Err( p_intf, "PDA: Could not get iter from model" );
msg_Err( p_intf, "PDA: Could not get iter from model" ); return;
}
gtk_tree_model_get(model, &iter, 0, &filename, -1);
if (stat((char*)filename, &st)==0) gtk_tree_model_get(model, &iter, 0, &filename, -1);
if (stat((char*)filename, &st)==0)
{
if (S_ISDIR(st.st_mode))
{ {
if (S_ISDIR(st.st_mode)) GtkListStore *p_model = NULL;
{
GtkListStore *p_model = NULL; /* Get new directory listing */
p_model = gtk_list_store_new (5,
/* Get new directory listing */ G_TYPE_STRING,
p_model = gtk_list_store_new (5, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_UINT64,
G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_UINT64, G_TYPE_STRING);
G_TYPE_STRING, if (p_model)
G_TYPE_STRING);
if (p_model)
{
ReadDirectory(p_intf, p_model, filename);
/* Update TreeView with new model */
gtk_tree_view_set_model(treeview, (GtkTreeModel*) p_model);
g_object_unref(p_model);
}
}
else
{ {
gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) treeview); ReadDirectory(p_intf, p_model, filename);
/* Update TreeView with new model */
gtk_tree_view_set_model(treeview, (GtkTreeModel*) p_model);
g_object_unref(p_model);
} }
} }
else
{
gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) treeview);
}
} }
} }
else else
...@@ -570,7 +549,9 @@ onAddFileToPlaylist (GtkButton *button, ...@@ -570,7 +549,9 @@ onAddFileToPlaylist (GtkButton *button,
treeview = (GtkTreeView *) lookup_widget( GTK_WIDGET(button), "tvFileList"); treeview = (GtkTreeView *) lookup_widget( GTK_WIDGET(button), "tvFileList");
if (treeview) if (treeview)
{ {
onFileListRow(treeview, NULL, NULL, NULL ); GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) treeview);
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment