Пример #1
0
void DirectoryListingManager::on(QueueManagerListener::ItemRemoved, const QueueItemPtr& qi, bool aFinished) noexcept {
	if (!qi->isSet(QueueItem::FLAG_USER_LIST))
		return;

	auto u = qi->getSources()[0].getUser();
	if (qi->isSet(QueueItem::FLAG_DIRECTORY_DOWNLOAD) && !aFinished)
		removeDirectoryDownload(u, qi->getTempTarget(), qi->isSet(QueueItem::FLAG_PARTIAL_LIST));

	if (qi->isSet(QueueItem::FLAG_CLIENT_VIEW)) {
		DirectoryListingPtr dl = nullptr;

		{
			RLock l(cs);
			auto p = viewedLists.find(u);
			if (p == viewedLists.end()) {
				dcassert(0);
				return;
			}

			dl = p->second;
		}

		dl->onListRemovedQueue(qi->getTarget(), qi->getTempTarget(), aFinished);

		bool closing = (dl->getClosing() || !dl->hasCompletedDownloads());
		if (!aFinished && !dl->hasDownloads() && closing) {
			removeList(u);
		}
	}
}
Пример #2
0
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());
}
Пример #3
0
void UserQueue::addQI(QueueItemPtr& qi, bool newBundle /*false*/) noexcept {
	for(const auto& i: qi->getSources()) {
		addQI(qi, i.getUser(), newBundle);
	}
}
Пример #4
0
void UserQueue::removeQI(QueueItemPtr& qi, bool removeRunning /*true*/) noexcept{
	for(const auto& i: qi->getSources()) {
		removeQI(qi, i.getUser(), removeRunning, 0);
	}
}
Пример #5
0
void UserQueue::addQI(QueueItemPtr& qi) noexcept {
	for(const auto& i: qi->getSources()) {
		addQI(qi, i.getUser());
	}
}
Пример #6
0
void UserQueue::addQI(QueueItemPtr& qi, bool newBundle /*false*/) {
	for(auto i: qi->getSources()) {
		addQI(qi, i.getUser(), newBundle);
	}
}
Пример #7
0
void UserQueue::removeQI(QueueItemPtr& qi, bool removeRunning /*true*/, bool fireSources /*true*/) {
	for(auto i: qi->getSources()) {
		removeQI(qi, i.getUser(), removeRunning, false, fireSources);
	}
}