1 /*****************************************************************************
2 * playlist.hpp: Header for the playlist
3 *****************************************************************************
4 * Copyright (C) 1999-2005 the VideoLAN team
7 * Authors: Clément Stenac <zorglub@videolan.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
24 #ifndef _WXVLC_PLAYLIST_H_
25 #define _WXVLC_PLAYLIST_H_
27 #include "wxwidgets.hpp"
29 #include <wx/treectrl.h>
47 class Playlist: public wxFrame
48 #if wxUSE_DRAG_AND_DROP
49 , public wxFileDropTarget
54 Playlist( intf_thread_t *p_intf, wxWindow *p_parent );
57 void UpdatePlaylist();
58 void ShowPlaylist( bool show );
59 void UpdateItem( int );
60 void AppendItem( wxCommandEvent& );
63 int i_items_to_append;
64 #if wxUSE_DRAG_AND_DROP
65 virtual bool OnDropFiles( wxCoord x, wxCoord y,
66 const wxArrayString& filenames );
70 void RemoveItem( int );
71 void DeleteTreeItem( wxTreeItemId );
72 void DeleteItem( int item );
73 void DeleteNode( playlist_item_t *node );
75 void RecursiveDeleteSelection( wxTreeItemId );
77 /* Event handlers (these functions should _not_ be virtual) */
80 void OnAddFile( wxCommandEvent& event );
81 void OnAddDir( wxCommandEvent& event );
82 void OnAddMRL( wxCommandEvent& event );
83 void OnMenuClose( wxCommandEvent& event );
84 void OnClose( wxCloseEvent& WXUNUSED(event) );
86 void OnDeleteSelection( wxCommandEvent& event );
88 void OnOpen( wxCommandEvent& event );
89 void OnSave( wxCommandEvent& event );
92 void OnSearch( wxCommandEvent& event );
93 /*void OnSearchTextChange( wxCommandEvent& event );*/
94 wxTextCtrl *search_text;
95 wxButton *search_button;
96 wxTreeItemId search_current;
98 void OnEnDis( wxCommandEvent& event );
102 void OnSort( wxCommandEvent& event );
105 int i_duration_sorted;
108 void OnMenuEvent( wxCommandEvent& event );
109 void OnMenuOpen( wxMenuEvent& event );
115 void OnUp( wxCommandEvent& event);
116 void OnDown( wxCommandEvent& event);
118 void OnRandom( wxCommandEvent& event );
119 void OnRepeat( wxCommandEvent& event );
120 void OnLoop ( wxCommandEvent& event );
122 void OnActivateItem( wxTreeEvent& event );
123 void OnKeyDown( wxTreeEvent& event );
124 void OnNewGroup( wxCommandEvent& event );
126 void OnDragItemBegin( wxTreeEvent& event );
127 void OnDragItemEnd( wxTreeEvent& event );
128 wxTreeItemId draged_tree_item;
133 wxTreeItemId i_wx_popup_item;
136 void OnPopup( wxContextMenuEvent& event );
137 void OnPopupPlay( wxCommandEvent& event );
138 void OnPopupPreparse( wxCommandEvent& event );
139 void OnPopupSort( wxCommandEvent& event );
140 void OnPopupDel( wxCommandEvent& event );
141 void OnPopupEna( wxCommandEvent& event );
142 void OnPopupInfo( wxCommandEvent& event );
143 void OnPopupAddNode( wxCommandEvent& event );
144 void Rebuild( vlc_bool_t );
149 void UpdateNode( playlist_item_t*, wxTreeItemId );
150 void UpdateNodeChildren( playlist_item_t*, wxTreeItemId );
151 void CreateNode( playlist_item_t*, wxTreeItemId );
152 void UpdateTreeItem( wxTreeItemId );
154 /* Search (internal) */
155 int CountItems( wxTreeItemId);
156 wxTreeItemId FindItem( wxTreeItemId, int );
157 wxTreeItemId FindItemByName( wxTreeItemId, wxString,
158 wxTreeItemId, vlc_bool_t *);
160 wxTreeItemId saved_tree_item;
163 playlist_t *p_playlist;
167 void OnPlaylistEvent( wxCommandEvent& event );
169 DECLARE_EVENT_TABLE();
173 wxStatusBar *statusbar;
174 ItemInfoDialog *iteminfo_dialog;
176 int i_update_counter;
178 intf_thread_t *p_intf;
179 wxTreeCtrl *treectrl;
181 vlc_bool_t b_changed_view;
187 } // end of wxvlc namespace