Commit 12f48a5b authored by Clément Stenac's avatar Clément Stenac

Add directory in wxWidgets

Update TODO
parent 5b903151
...@@ -123,7 +123,6 @@ Todo:<br /> ...@@ -123,7 +123,6 @@ Todo:<br />
- Helper modules<br /> - Helper modules<br />
- ** ASX and B4S parsers (see below)<br /> - ** ASX and B4S parsers (see below)<br />
- * Rewrite SLP announce discovery<br /> - * Rewrite SLP announce discovery<br />
- *** Finish new SAP parser (see above)<br />
- ** Adapt CDDAX<br /> - ** Adapt CDDAX<br />
- ** Fix MP4, LIVE.COM<br /> - ** Fix MP4, LIVE.COM<br />
- *** Implement in MacOS X and Skins 2 interfaces<br /> - *** Implement in MacOS X and Skins 2 interfaces<br />
...@@ -132,11 +131,9 @@ Todo:<br /> ...@@ -132,11 +131,9 @@ Todo:<br />
- ** Support item move/copy<br /> - ** Support item move/copy<br />
- * Explorer view<br /> - * Explorer view<br />
- *** Fix search<br /> - *** Fix search<br />
- *** Play Node vs Play all<br />
- ** Clever update using i_serial<br /> - ** Clever update using i_serial<br />
- * Playlist preferences panel<br /> - * Playlist preferences panel<br />
- ** Improve iteminfo dialog<br /> - ** Improve iteminfo dialog<br />
- ** Support item types<br />
Status: Assigned to zorglub Status: Assigned to zorglub
Task Task
......
...@@ -223,6 +223,7 @@ typedef struct playlist_view_t playlist_view_t; ...@@ -223,6 +223,7 @@ typedef struct playlist_view_t playlist_view_t;
typedef struct playlist_export_t playlist_export_t; typedef struct playlist_export_t playlist_export_t;
typedef struct services_discovery_t services_discovery_t; typedef struct services_discovery_t services_discovery_t;
typedef struct services_discovery_sys_t services_discovery_sys_t; typedef struct services_discovery_sys_t services_discovery_sys_t;
typedef struct playlist_add_t playlist_add_t;
/* Modules */ /* Modules */
typedef struct module_bank_t module_bank_t; typedef struct module_bank_t module_bank_t;
......
...@@ -142,6 +142,8 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) ); ...@@ -142,6 +142,8 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) );
#define INTF_DIALOG_CAPTURE 5 #define INTF_DIALOG_CAPTURE 5
#define INTF_DIALOG_SAT 6 #define INTF_DIALOG_SAT 6
#define INTF_DIALOG_DIRECTORY 7
#define INTF_DIALOG_STREAMWIZARD 8 #define INTF_DIALOG_STREAMWIZARD 8
#define INTF_DIALOG_WIZARD 9 #define INTF_DIALOG_WIZARD 9
......
...@@ -194,6 +194,15 @@ struct playlist_t ...@@ -194,6 +194,15 @@ struct playlist_t
/*@}*/ /*@}*/
}; };
/* Helper to add an item */
struct playlist_add_t
{
playlist_item_t *p_parent;
playlist_item_t *p_item;
int i_view;
int i_position;
};
#define SORT_ID 0 #define SORT_ID 0
#define SORT_TITLE 1 #define SORT_TITLE 1
#define SORT_AUTHOR 2 #define SORT_AUTHOR 2
...@@ -296,6 +305,7 @@ VLC_EXPORT( void, playlist_ItemToNode, (playlist_t *,playlist_item_t *) ); ...@@ -296,6 +305,7 @@ VLC_EXPORT( void, playlist_ItemToNode, (playlist_t *,playlist_item_t *) );
VLC_EXPORT( playlist_item_t *, playlist_ItemGetById, (playlist_t *, int) ); VLC_EXPORT( playlist_item_t *, playlist_ItemGetById, (playlist_t *, int) );
VLC_EXPORT( playlist_item_t *, playlist_ItemGetByPos, (playlist_t *, int) ); VLC_EXPORT( playlist_item_t *, playlist_ItemGetByPos, (playlist_t *, int) );
VLC_EXPORT( int, playlist_GetPositionById, (playlist_t *,int ) ); VLC_EXPORT( int, playlist_GetPositionById, (playlist_t *,int ) );
VLC_EXPORT( playlist_item_t *, playlist_ItemGetByInput, (playlist_t *,input_item_t * ) );
/* Info functions */ /* Info functions */
VLC_EXPORT( char * , playlist_GetInfo, ( playlist_t * , int, const char *, const char *) ); VLC_EXPORT( char * , playlist_GetInfo, ( playlist_t * , int, const char *, const char *) );
......
...@@ -60,6 +60,7 @@ private: ...@@ -60,6 +60,7 @@ private:
void OnOpenFileGeneric( wxCommandEvent& event ); void OnOpenFileGeneric( wxCommandEvent& event );
void OnOpenFileSimple( wxCommandEvent& event ); void OnOpenFileSimple( wxCommandEvent& event );
void OnOpenDirectory( wxCommandEvent& event );
void OnOpenFile( wxCommandEvent& event ); void OnOpenFile( wxCommandEvent& event );
void OnOpenDisc( wxCommandEvent& event ); void OnOpenDisc( wxCommandEvent& event );
void OnOpenNet( wxCommandEvent& event ); void OnOpenNet( wxCommandEvent& event );
...@@ -80,6 +81,7 @@ public: ...@@ -80,6 +81,7 @@ public:
/* Secondary windows */ /* Secondary windows */
OpenDialog *p_open_dialog; OpenDialog *p_open_dialog;
wxFileDialog *p_file_dialog; wxFileDialog *p_file_dialog;
wxDirDialog *p_dir_dialog;
Playlist *p_playlist_dialog; Playlist *p_playlist_dialog;
Messages *p_messages_dialog; Messages *p_messages_dialog;
FileInfo *p_fileinfo_dialog; FileInfo *p_fileinfo_dialog;
...@@ -105,6 +107,8 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame) ...@@ -105,6 +107,8 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame)
DialogsProvider::OnOpenFileSimple) DialogsProvider::OnOpenFileSimple)
EVT_COMMAND(INTF_DIALOG_FILE_GENERIC, wxEVT_DIALOG, EVT_COMMAND(INTF_DIALOG_FILE_GENERIC, wxEVT_DIALOG,
DialogsProvider::OnOpenFileGeneric) DialogsProvider::OnOpenFileGeneric)
EVT_COMMAND(INTF_DIALOG_DIRECTORY, wxEVT_DIALOG,
DialogsProvider::OnOpenDirectory)
EVT_COMMAND(INTF_DIALOG_PLAYLIST, wxEVT_DIALOG, EVT_COMMAND(INTF_DIALOG_PLAYLIST, wxEVT_DIALOG,
DialogsProvider::OnPlaylist) DialogsProvider::OnPlaylist)
...@@ -365,6 +369,37 @@ void DialogsProvider::OnOpenFileSimple( wxCommandEvent& event ) ...@@ -365,6 +369,37 @@ void DialogsProvider::OnOpenFileSimple( wxCommandEvent& event )
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
} }
void DialogsProvider::OnOpenDirectory( wxCommandEvent& event )
{
playlist_t *p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_playlist == NULL )
{
return;
}
if( p_dir_dialog == NULL )
p_dir_dialog = new wxDirDialog( NULL );
if( p_dir_dialog && p_dir_dialog->ShowModal() == wxID_OK )
{
playlist_item_t *p_item;
wxString path = p_dir_dialog->GetPath();
int i_id = playlist_Add( p_playlist, (const char *)path.mb_str(),
(const char *)path.mb_str(),
PLAYLIST_APPEND, PLAYLIST_END );
p_item = playlist_ItemGetById( p_playlist, i_id );
if( p_item )
{
input_CreateThread( p_intf, &p_item->input );
}
}
vlc_object_release( p_playlist );
}
void DialogsProvider::OnOpenFile( wxCommandEvent& event ) void DialogsProvider::OnOpenFile( wxCommandEvent& event )
{ {
Open( FILE_ACCESS, event.GetInt() ); Open( FILE_ACCESS, event.GetInt() );
......
...@@ -65,6 +65,7 @@ enum ...@@ -65,6 +65,7 @@ enum
{ {
/* menu items */ /* menu items */
AddFile_Event = 1, AddFile_Event = 1,
AddDir_Event,
AddMRL_Event, AddMRL_Event,
Close_Event, Close_Event,
Open_Event, Open_Event,
...@@ -123,6 +124,7 @@ BEGIN_EVENT_TABLE(Playlist, wxFrame) ...@@ -123,6 +124,7 @@ BEGIN_EVENT_TABLE(Playlist, wxFrame)
/* Menu events */ /* Menu events */
EVT_MENU(AddFile_Event, Playlist::OnAddFile) EVT_MENU(AddFile_Event, Playlist::OnAddFile)
EVT_MENU(AddDir_Event, Playlist::OnAddDir)
EVT_MENU(AddMRL_Event, Playlist::OnAddMRL) EVT_MENU(AddMRL_Event, Playlist::OnAddMRL)
EVT_MENU(Close_Event, Playlist::OnClose) EVT_MENU(Close_Event, Playlist::OnClose)
EVT_MENU(Open_Event, Playlist::OnOpen) EVT_MENU(Open_Event, Playlist::OnOpen)
...@@ -226,7 +228,8 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ): ...@@ -226,7 +228,8 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ):
/* Create our "Manage" menu */ /* Create our "Manage" menu */
wxMenu *manage_menu = new wxMenu; wxMenu *manage_menu = new wxMenu;
manage_menu->Append( AddFile_Event, wxU(_("&Simple Add...")) ); manage_menu->Append( AddFile_Event, wxU(_("&Simple Add File...")) );
manage_menu->Append( AddDir_Event, wxU(_("Add &Directory...")) );
manage_menu->Append( AddMRL_Event, wxU(_("&Add MRL...")) ); manage_menu->Append( AddMRL_Event, wxU(_("&Add MRL...")) );
manage_menu->AppendSeparator(); manage_menu->AppendSeparator();
manage_menu->Append( MenuDummy_Event, wxU(_("Services discovery")), manage_menu->Append( MenuDummy_Event, wxU(_("Services discovery")),
...@@ -854,6 +857,12 @@ void Playlist::OnAddFile( wxCommandEvent& WXUNUSED(event) ) ...@@ -854,6 +857,12 @@ void Playlist::OnAddFile( wxCommandEvent& WXUNUSED(event) )
} }
void Playlist::OnAddDir( wxCommandEvent& WXUNUSED(event) )
{
p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_DIRECTORY, 0, 0 );
}
void Playlist::OnAddMRL( wxCommandEvent& WXUNUSED(event) ) void Playlist::OnAddMRL( wxCommandEvent& WXUNUSED(event) )
{ {
p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_FILE, 0, 0 ); p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_FILE, 0, 0 );
......
...@@ -326,6 +326,7 @@ private: ...@@ -326,6 +326,7 @@ private:
void OnAbout( wxCommandEvent& event ); void OnAbout( wxCommandEvent& event );
void OnOpenFileSimple( wxCommandEvent& event ); void OnOpenFileSimple( wxCommandEvent& event );
void OnOpenDir( wxCommandEvent& event );
void OnOpenFile( wxCommandEvent& event ); void OnOpenFile( wxCommandEvent& event );
void OnOpenDisc( wxCommandEvent& event ); void OnOpenDisc( wxCommandEvent& event );
void OnOpenNet( wxCommandEvent& event ); void OnOpenNet( wxCommandEvent& event );
...@@ -791,6 +792,7 @@ private: ...@@ -791,6 +792,7 @@ private:
/* Menu Handlers */ /* Menu Handlers */
void OnAddFile( wxCommandEvent& event ); void OnAddFile( wxCommandEvent& event );
void OnAddDir( wxCommandEvent& event );
void OnAddMRL( wxCommandEvent& event ); void OnAddMRL( wxCommandEvent& event );
void OnClose( wxCommandEvent& event ); void OnClose( wxCommandEvent& event );
void OnSearch( wxCommandEvent& event ); void OnSearch( wxCommandEvent& event );
......
...@@ -425,6 +425,26 @@ playlist_item_t * playlist_ItemGetById( playlist_t * p_playlist , int i_id ) ...@@ -425,6 +425,26 @@ playlist_item_t * playlist_ItemGetById( playlist_t * p_playlist , int i_id )
return NULL; return NULL;
} }
/**
* Search an item by its input_item_t
*
* \param p_playlist the playlist
* \param p_item the input_item_t to find
* \return the item, or NULL on failure
*/
playlist_item_t * playlist_ItemGetByInput( playlist_t * p_playlist ,
input_item_t *p_item )
{
int i;
for( i = 0 ; i < p_playlist->i_size ; i++ )
{
if( &p_playlist->pp_items[i]->input == p_item )
{
return p_playlist->pp_items[i];
}
}
return NULL;
}
......
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