void DatabaseBox::deleteTrack(UIListGenericTree *item) { if (PlaylistTrack *delete_item = dynamic_cast<PlaylistCD*>(item) ) { if (delete_item->nextSibling(1)) tree->MoveDown(); else if (delete_item->prevSibling(1)) tree->MoveUp(); UIListGenericTree *newItem = (UIListGenericTree *)delete_item->getParent(); if (TreeCheckItem *item_owner = dynamic_cast<TreeCheckItem*>(newItem)) { Playlist *owner = gMusicData->all_playlists->getPlaylist(item_owner->getID() * -1); if (owner) owner->removeTrack(delete_item->getID(), true); } else if (PlaylistTitle *item_owner = dynamic_cast<PlaylistTitle*>(newItem)) { (void)item_owner; active_playlist->removeTrack(delete_item->getID(), true); } else { LOG(VB_GENERAL, LOG_ERR, "deleteTrack() - I don't know how to " "delete whatever you're trying to get " "rid of"); } gMusicData->all_playlists->refreshRelevantPlaylists(alllists); checkTree(); } else if (PlaylistTrack *delete_item = dynamic_cast<PlaylistTrack*>(item)) { if (delete_item->nextSibling(1)) tree->MoveDown(); else if (delete_item->prevSibling(1)) tree->MoveUp(); UIListGenericTree *newItem = (UIListGenericTree *)delete_item->getParent(); if (TreeCheckItem *item_owner = dynamic_cast<TreeCheckItem*>(newItem)) { Playlist *owner = gMusicData->all_playlists->getPlaylist(item_owner->getID() * -1); if (owner) owner->removeTrack(delete_item->getID(), false); } else if (PlaylistTitle *item_owner = dynamic_cast<PlaylistTitle*>(newItem)) { (void)item_owner; active_playlist->removeTrack(delete_item->getID(), false); } else { LOG(VB_GENERAL, LOG_ERR, "deleteTrack() - I don't know how to " "delete whatever you're trying to get " "rid of"); } gMusicData->all_playlists->refreshRelevantPlaylists(alllists); checkTree(); } }