+void Playlist::UpdateNode( playlist_t *p_playlist, playlist_item_t *p_node,
+ wxTreeItemId node )
+{
+ long cookie;
+ wxTreeItemId child;
+ for( int i = 0; i< p_node->i_children ; i++ )
+ {
+ if( i == 0 )
+ {
+ child = treectrl->GetFirstChild( node, cookie);
+ }
+ else
+ {
+ child = treectrl->GetNextChild( node, cookie );
+ }
+
+ if( !child.IsOk() )
+ {
+ /* Not enough children */
+ CreateNode( p_playlist, p_node->pp_children[i], node );
+ /* Keep the tree pointer up to date */
+ child = treectrl->GetNextChild( node, cookie );
+ }
+ else
+ {
+ }
+ }
+
+}
+/* Creates the node p_node as last child of parent */
+void Playlist::CreateNode( playlist_t *p_playlist, playlist_item_t *p_node,
+ wxTreeItemId parent )
+{
+ long cookie;
+ wxTreeItemId node =
+ treectrl->AppendItem( parent, wxL2U( p_node->input.psz_name ),
+ -1,-1, new PlaylistItem( p_node ) );
+ treectrl->SetItemImage( node, p_node->input.i_type );
+
+ for( int i = 0; i< p_node->i_children ; i++ )
+ {
+ /* Append the item */
+ if( p_node->pp_children[i]->i_children == -1 )
+ {
+ wxTreeItemId item =
+ treectrl->AppendItem( node,
+ wxL2U( p_node->pp_children[i]->input.psz_name ), -1,-1,
+ new PlaylistItem( p_node->pp_children[i]) );
+
+ treectrl->SetItemImage( item,
+ p_node->pp_children[i]->input.i_type );
+ }
+ else
+ {
+ CreateNode( p_playlist, p_node->pp_children[i],
+ node );
+ }
+ }
+}
+
+wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
+{
+ long cookie;
+ PlaylistItem *p_wxcurrent;
+ wxTreeItemId search;
+ wxTreeItemId item = treectrl->GetFirstChild( root, cookie );
+ wxTreeItemId child;
+
+ while( item.IsOk() )
+ {
+ p_wxcurrent = (PlaylistItem *)treectrl->GetItemData( item );
+ if( p_wxcurrent->p_item == p_item )
+ {
+ return item;
+ }
+ if( treectrl->ItemHasChildren( item ) )
+ {
+ wxTreeItemId search = FindItem( item, p_item );
+ if( search.IsOk() )
+ {
+ return search;
+ }
+ }
+ item = treectrl->GetNextChild( root, cookie);
+ }
+ /* Not found */
+ wxTreeItemId dummy;
+ return dummy;
+}
+
+/*wxTreeItemId Playlist::FindItemByName( wxTreeItemId root, wxString search_string, wxTreeItemId current )
+{
+ long cookie;
+ PlaylistItem *p_wxcurrent;
+ wxTreeItemId search;
+ wxTreeItemId item = treectrl->GetFirstChild( root, cookie );
+ wxTreeItemId child;
+
+ while( item.IsOk() )
+ {
+ if( treectrl->GetItemText( item).Lower().Contains(
+ search_string.Lower() ) )
+ {
+ return item;
+ if( treectrl->ItemHasChildren( item ) )
+ {
+ wxTreeItemId search = FindItem( item, p_item );
+ if( search.IsOk() )
+ {
+ return search;
+ }
+ }
+ item = treectrl->GetNextChild( root, cookie);
+ }
+ */ /* Not found */
+ /*wxTreeItemId dummy;
+ return dummy;
+}
+*/
+
+
+
+void Playlist::SetCurrentItem( wxTreeItemId item )
+{
+ if( item.IsOk() )
+ {
+ treectrl->SetItemBold( item, true );
+ treectrl->EnsureVisible( item );
+ }
+}
+