void PlaylistContainer::refreshRelevantPlaylists(TreeCheckItem *alllists) { if (alllists->childCount() == 0) { alllists->setCheckable(false); return; } UIListGenericTree *walker = (UIListGenericTree *)(alllists->getChildAt(0)); while (walker) { if (TreeCheckItem *check_item = dynamic_cast<TreeCheckItem*>(walker)) { int id = check_item->getID() * -1; Playlist *check_playlist = getPlaylist(id); if ((check_playlist && check_playlist->containsReference(pending_writeback_index, 0)) || id == pending_writeback_index) { check_item->setCheckable(false); check_item->setActive(false); } else { check_item->setCheckable(true); check_item->setActive(true); } } walker = (UIListGenericTree *)(walker->nextSibling(1)); } alllists->setCheckable(true); }
void DatabaseBox::deletePlaylist() { if (!playlist_popup) return; // Delete currently selected closePlaylistPopup(); UIListGenericTree *item = tree->GetCurrentPosition(); if (TreeCheckItem *check_item = dynamic_cast<TreeCheckItem*>(item) ) { if (check_item->getID() < 0) { if (check_item->nextSibling(1)) tree->MoveDown(); else if (check_item->prevSibling(1)) tree->MoveUp(); gMusicData->all_playlists->deletePlaylist(check_item->getID() * -1); //gMusicData->all_playlists->showRelevantPlaylists(alllists); item->RemoveFromParent(); //delete item; will be deleted by generic tree gMusicData->all_playlists->refreshRelevantPlaylists(alllists); checkTree(); return; } } LOG(VB_GENERAL, LOG_ERR, "deletePlaylist() - Playlist popup on a " "non-playlist item"); }
void UIListTreeType::FillLevelFromTree(UIListGenericTree *item, UIListBtnType *list) { if (!item || !list) return; ClearLevel(list); QPtrList<GenericTree> *itemlist = item->getAllChildren(); QPtrListIterator<GenericTree> it(*itemlist); GenericTree *child; while ((child = it.current()) != 0) { UIListGenericTree *uichild = (UIListGenericTree *)child; UIListBtnTypeItem *newitem; int check = uichild->getCheck(); newitem = new UIListBtnTypeItem(list, child->getString(), uichild->getImage(), (check >= 0), (UIListBtnTypeItem::CheckState)check, (child->childCount() > 0)); newitem->setData(uichild); uichild->setItem(newitem); if (!uichild->getActive()) newitem->setOverrideInactive(true); ++it; } }
void UIListTreeType::RefreshCurrentLevel(void) { if (currentlevel) { UIListBtnType::iterator it = currentlevel->begin(); for (; it != currentlevel->end(); ++it) { UIListGenericTree *ui = (UIListGenericTree*)((*it)->getData()); ui->setActive(ui->getActive()); } } }
void UIListTreeType::ClearLevel(UIListBtnType *list) { UIListBtnTypeItem *clear = list->GetItemFirst(); while (clear) { UIListGenericTree *gt = (UIListGenericTree *)clear->getData(); gt->setItem(NULL); clear = list->GetItemNext(clear); } list->Reset(); }
void UIListTreeType::RefreshCurrentLevel(void) { if (currentlevel) { QPtrListIterator<UIListBtnTypeItem> it = currentlevel->GetIterator(); UIListBtnTypeItem *item; while ((item = it.current())) { UIListGenericTree *ui = (UIListGenericTree *)item->getData(); ui->setActive(ui->getActive()); ++it; } } }
void UIListTreeType::FillLevelFromTree(UIListGenericTree *item, UIListBtnType *list) { if (!item || !list) return; ClearLevel(list); vector<GenericTree*> itemlist = item->getAllChildren(); vector<GenericTree*>::const_iterator it = itemlist.begin(); for ( ; it != itemlist.end(); ++it) { UIListGenericTree *uichild = dynamic_cast<UIListGenericTree*>(*it); if (!uichild) continue; UIListBtnTypeItem *newitem; int check = uichild->getCheck(); newitem = new UIListBtnTypeItem(list, uichild->getString(), uichild->getImage(), (check >= 0), (UIListBtnTypeItem::CheckState)check, (uichild->childCount() > 0)); newitem->setData(uichild); uichild->setItem(newitem); if (!uichild->getActive()) newitem->setOverrideInactive(true); } }
void DatabaseBox::fillCD(void) { QMutexLocker locker(cd_reader_thread->getLock()); if (cditem) { // Close leaf before delete if opened UIListGenericTree *curItem = tree->GetCurrentPosition(); if (dynamic_cast<CDCheckItem*>(curItem)) { int depth = curItem->calculateDepth(0); while(depth--) tree->MoveLeft(); } // Delete anything that might be there while (cditem->childCount()) { CDCheckItem *track_ptr = static_cast<CDCheckItem*>(cditem->getChildAt(0)); track_ptr->RemoveFromParent(); } // Put on whatever all_music tells us is there cditem->setText(gMusicData->all_music->getCDTitle()); cditem->setCheck(0); cditem->setCheckable(false); gMusicData->all_music->putCDOnTheListView(cditem); // reflect selections in cd playlist GenericTree::iterator it; for (it = cditem->begin(); it != cditem->end(); ++it) { UIListGenericTree *uit = (UIListGenericTree*)(*it); if (CDCheckItem *track_ptr = dynamic_cast<CDCheckItem*>(uit)) { track_ptr->setCheck(0); if (gMusicData->all_playlists->checkCDTrack( track_ptr->getID() * -1)) { track_ptr->setCheck(2); } } } // Can't check what ain't there if (cditem->childCount() > 0) { cditem->setCheckable(true); cditem->setCheck(0); checkParent(cditem); } tree->Redraw(); } }