void DirectoryListingManager::on(QueueManagerListener::ItemAdded, const QueueItemPtr& aQI) noexcept { if (!aQI->isSet(QueueItem::FLAG_CLIENT_VIEW) || !aQI->isSet(QueueItem::FLAG_USER_LIST)) return; auto user = aQI->getSources()[0].getUser(); auto dl = hasList(user); if (dl) { dl->onAddedQueue(aQI->getTarget()); return; } if (!aQI->isSet(QueueItem::FLAG_PARTIAL_LIST)) { dl = createList(user, false, aQI->getListName(), false); } else { dl = createList(user, true, Util::emptyString, false); } dl->onAddedQueue(aQI->getTarget()); }
void DirectoryListingManager::on(QueueManagerListener::ItemFinished, const QueueItemPtr& qi, const string& dir, const HintedUser& aUser, int64_t /*aSpeed*/) noexcept { if (!qi->isSet(QueueItem::FLAG_CLIENT_VIEW) || !qi->isSet(QueueItem::FLAG_USER_LIST)) return; DirectoryListingPtr dl; { RLock l(cs); auto p = viewedLists.find(aUser.user); if (p == viewedLists.end()) { return; } dl = p->second; } if (dl) { dl->setFileName(qi->getListName()); if (dl->hasCompletedDownloads()) { dl->addFullListTask(dir); } else { fire(DirectoryListingManagerListener::OpenListing(), dl, dir, Util::emptyString); } } }