void VolumeWorker::_Work() { list_collection collection; fVolumeWatcher->GetSecureEntries(collection); if (collection.createdList->size() == 0 && collection.deletedList->size() == 0 && collection.modifiedList->size() == 0 && collection.movedList->size() == 0) return; _SetBusy(true); for (unsigned int i = 0; i < collection.createdList->size() || Stopped(); i++) AnalyseEntry((*collection.createdList)[i]); collection.createdList->clear(); for (unsigned int i = 0; i < collection.deletedList->size() || Stopped(); i++) DeleteEntry((*collection.deletedList)[i]); collection.deletedList->clear(); for (unsigned int i = 0; i < collection.modifiedList->size() || Stopped(); i++) AnalyseEntry((*collection.modifiedList)[i]); collection.modifiedList->clear(); for (unsigned int i = 0; i < collection.movedList->size() || Stopped(); i++) MoveEntry((*collection.movedFromList)[i], (*collection.movedList)[i]); collection.movedList->clear(); collection.movedFromList->clear(); LastEntry(); PostMessage(kTriggerWork); _SetBusy(false); }
bool QueueEditor::InternEditList(ItemList* itemList, IdList* idList, DownloadQueue::EEditAction action, int offset, const char* text) { ItemList workItems; if (!itemList) { itemList = &workItems; PrepareList(itemList, idList, action, offset); } switch (action) { case DownloadQueue::eaFilePauseAllPars: case DownloadQueue::eaFilePauseExtraPars: PauseParsInGroups(itemList, action == DownloadQueue::eaFilePauseExtraPars); break; case DownloadQueue::eaGroupMerge: return MergeGroups(itemList); case DownloadQueue::eaGroupSort: return SortGroups(itemList, text); case DownloadQueue::eaFileSplit: return SplitGroup(itemList, text); case DownloadQueue::eaFileReorder: ReorderFiles(itemList); break; default: for (EditItem& item : itemList) { switch (action) { case DownloadQueue::eaFilePause: PauseUnpauseEntry(item.m_fileInfo, true); break; case DownloadQueue::eaFileResume: PauseUnpauseEntry(item.m_fileInfo, false); break; case DownloadQueue::eaFileMoveOffset: case DownloadQueue::eaFileMoveTop: case DownloadQueue::eaFileMoveBottom: MoveEntry(item.m_fileInfo, item.m_offset); break; case DownloadQueue::eaFileDelete: DeleteEntry(item.m_fileInfo); break; case DownloadQueue::eaGroupSetPriority: SetNzbPriority(item.m_nzbInfo, text); break; case DownloadQueue::eaGroupSetCategory: case DownloadQueue::eaGroupApplyCategory: SetNzbCategory(item.m_nzbInfo, text, action == DownloadQueue::eaGroupApplyCategory); break; case DownloadQueue::eaGroupSetName: SetNzbName(item.m_nzbInfo, text); break; case DownloadQueue::eaGroupSetDupeKey: case DownloadQueue::eaGroupSetDupeScore: case DownloadQueue::eaGroupSetDupeMode: SetNzbDupeParam(item.m_nzbInfo, action, text); break; case DownloadQueue::eaGroupSetParameter: SetNzbParameter(item.m_nzbInfo, text); break; case DownloadQueue::eaGroupMoveTop: case DownloadQueue::eaGroupMoveBottom: case DownloadQueue::eaGroupMoveOffset: MoveGroup(item.m_nzbInfo, item.m_offset); break; case DownloadQueue::eaGroupPause: case DownloadQueue::eaGroupResume: case DownloadQueue::eaGroupPauseAllPars: case DownloadQueue::eaGroupPauseExtraPars: EditGroup(item.m_nzbInfo, action, offset, text); break; case DownloadQueue::eaGroupDelete: case DownloadQueue::eaGroupParkDelete: case DownloadQueue::eaGroupDupeDelete: case DownloadQueue::eaGroupFinalDelete: if (item.m_nzbInfo->GetKind() == NzbInfo::nkUrl) { DeleteUrl(item.m_nzbInfo, action); } else { EditGroup(item.m_nzbInfo, action, offset, text); } default: // suppress compiler warning "enumeration not handled in switch" break; } } } return itemList->size() > 0; }
bool QueueEditor::InternEditList(DownloadQueue* pDownloadQueue, IDList* pIDList, bool bSmartOrder, EEditAction eAction, int iOffset, const char* szText) { if (eAction == eaGroupMoveOffset) { AlignAffectedGroups(pDownloadQueue, pIDList, bSmartOrder, iOffset); } ItemList cItemList; PrepareList(pDownloadQueue, &cItemList, pIDList, bSmartOrder, eAction, iOffset); if (eAction == eaFilePauseAllPars || eAction == eaFilePauseExtraPars) { PauseParsInGroups(&cItemList, eAction == eaFilePauseExtraPars); } else if (eAction == eaGroupMerge) { MergeGroups(pDownloadQueue, &cItemList); } else if (eAction == eaFileReorder) { ReorderFiles(pDownloadQueue, &cItemList); } else { for (ItemList::iterator it = cItemList.begin(); it != cItemList.end(); it++) { EditItem* pItem = *it; switch (eAction) { case eaFilePause: PauseUnpauseEntry(pItem->m_pFileInfo, true); break; case eaFileResume: PauseUnpauseEntry(pItem->m_pFileInfo, false); break; case eaFileMoveOffset: case eaFileMoveTop: case eaFileMoveBottom: MoveEntry(pDownloadQueue, pItem->m_pFileInfo, pItem->m_iOffset); break; case eaFileDelete: DeleteEntry(pItem->m_pFileInfo); break; case eaFileSetPriority: SetPriorityEntry(pItem->m_pFileInfo, szText); break; case eaGroupSetCategory: SetNZBCategory(pItem->m_pFileInfo->GetNZBInfo(), szText); break; case eaGroupSetName: SetNZBName(pItem->m_pFileInfo->GetNZBInfo(), szText); break; case eaGroupSetParameter: SetNZBParameter(pItem->m_pFileInfo->GetNZBInfo(), szText); break; case eaGroupPause: case eaGroupResume: case eaGroupDelete: case eaGroupMoveTop: case eaGroupMoveBottom: case eaGroupMoveOffset: case eaGroupPauseAllPars: case eaGroupPauseExtraPars: case eaGroupSetPriority: EditGroup(pDownloadQueue, pItem->m_pFileInfo, eAction, iOffset, szText); break; case eaFilePauseAllPars: case eaFilePauseExtraPars: case eaGroupMerge: case eaFileReorder: // remove compiler warning "enumeration not handled in switch" break; } delete pItem; } } return cItemList.size() > 0; }