Commit 6a13a256 authored by Clément Stenac's avatar Clément Stenac

Restore search

parent 315f9cd4
...@@ -401,6 +401,7 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ): ...@@ -401,6 +401,7 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ):
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
/* Update the playlist */ /* Update the playlist */
Rebuild(); Rebuild();
} }
...@@ -542,7 +543,7 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item ) ...@@ -542,7 +543,7 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
return dummy; return dummy;
} }
/*wxTreeItemId Playlist::FindItemByName( wxTreeItemId root, wxString search_string, wxTreeItemId current ) wxTreeItemId Playlist::FindItemByName( wxTreeItemId root, wxString search_string, wxTreeItemId current, vlc_bool_t *pb_current_found )
{ {
long cookie; long cookie;
PlaylistItem *p_wxcurrent; PlaylistItem *p_wxcurrent;
...@@ -554,11 +555,20 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item ) ...@@ -554,11 +555,20 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
{ {
if( treectrl->GetItemText( item).Lower().Contains( if( treectrl->GetItemText( item).Lower().Contains(
search_string.Lower() ) ) search_string.Lower() ) )
{
if( !current.IsOk() || *pb_current_found == VLC_TRUE )
{ {
return item; return item;
}
else if( current.IsOk() && item == current )
{
*pb_current_found = VLC_TRUE;
}
}
if( treectrl->ItemHasChildren( item ) ) if( treectrl->ItemHasChildren( item ) )
{ {
wxTreeItemId search = FindItem( item, p_item ); wxTreeItemId search = FindItemByName( item, search_string, current,
pb_current_found );
if( search.IsOk() ) if( search.IsOk() )
{ {
return search; return search;
...@@ -566,12 +576,10 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item ) ...@@ -566,12 +576,10 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
} }
item = treectrl->GetNextChild( root, cookie); item = treectrl->GetNextChild( root, cookie);
} }
*/ /* Not found */ /* Not found */
/*wxTreeItemId dummy; wxTreeItemId dummy;
return dummy; return dummy;
} }
*/
void Playlist::SetCurrentItem( wxTreeItemId item ) void Playlist::SetCurrentItem( wxTreeItemId item )
...@@ -990,10 +998,29 @@ void Playlist::OnSearch( wxCommandEvent& WXUNUSED(event) ) ...@@ -990,10 +998,29 @@ void Playlist::OnSearch( wxCommandEvent& WXUNUSED(event) )
{ {
wxString search_string = search_text->GetValue(); wxString search_string = search_text->GetValue();
bool b_ok = false; vlc_bool_t pb_found = VLC_FALSE;
int i_current;
int i_first = 0 ; wxTreeItemId found =
int i_item = -1; FindItemByName( treectrl->GetRootItem(), search_string,
search_current, &pb_found );
if( found.IsOk() )
{
search_current = found;
treectrl->SelectItem( found, true );
}
else
{
wxTreeItemId dummy;
search_current = dummy;
found = FindItemByName( treectrl->GetRootItem(), search_string,
search_current, &pb_found );
if( found.IsOk() )
{
search_current = found;
treectrl->SelectItem( found, true );
}
}
} }
#if 0 #if 0
......
...@@ -842,6 +842,7 @@ private: ...@@ -842,6 +842,7 @@ private:
void CreateNode( playlist_t *, playlist_item_t*, wxTreeItemId ); void CreateNode( playlist_t *, playlist_item_t*, wxTreeItemId );
wxTreeItemId FindItem( wxTreeItemId, playlist_item_t * ); wxTreeItemId FindItem( wxTreeItemId, playlist_item_t * );
wxTreeItemId FindItemByName( wxTreeItemId, wxString, wxTreeItemId, vlc_bool_t *);
void SetCurrentItem( wxTreeItemId ); void SetCurrentItem( wxTreeItemId );
void UpdateTreeItem( playlist_t *, wxTreeItemId ); void UpdateTreeItem( playlist_t *, wxTreeItemId );
...@@ -869,6 +870,7 @@ private: ...@@ -869,6 +870,7 @@ private:
int i_current_view; int i_current_view;
wxTreeItemId i_popup_item; wxTreeItemId i_popup_item;
wxTreeItemId search_current;
playlist_item_t *p_popup_item; playlist_item_t *p_popup_item;
playlist_item_t *p_popup_parent; playlist_item_t *p_popup_parent;
......
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