示例#1
0
void ImageTags::applyUserAction(QList<QTreeWidgetItem *> tagsList)
{
	int processEventsCounter = 0;
	ProgressDialog *dialog = new ProgressDialog(this);
	dialog->show();

	QStringList currentSelectedImages = thumbView->getSelectedThumbsList();
	for (int i = 0; i < currentSelectedImages.size(); ++i) {

		QString imageName = currentSelectedImages[i]; 
		for (int i = tagsList.size() - 1; i > -1; --i) {
			Qt::CheckState tagState = tagsList.at(i)->checkState(0);
			setTagIcon(tagsList.at(i), (tagState == Qt::Checked? TagIconEnabled : TagIconDisabled));
			QString tagName = tagsList.at(i)->text(0);

			if (tagState == Qt::Checked) {
				dialog->opLabel->setText(tr("Tagging ") + imageName);
				mdCache->addTagToImage(imageName, tagName);
			} else {
				dialog->opLabel->setText(tr("Untagging ") + imageName);
				mdCache->removeTagFromImage(imageName, tagName);
			}
		}

		if (!writeTagsToImage(imageName, mdCache->getImageTags(imageName))) {
			mdCache->removeImage(imageName);
		}

		++processEventsCounter;
		if (processEventsCounter > 9) {
			processEventsCounter = 0;
			QApplication::processEvents();
		}

		if (dialog->abortOp) {
			break;
		}
	}

	dialog->close();
	delete(dialog);
}