void MetadataIOCoordinator::writingWorkerFinished(bool success) { LOG_INFO << success; setHasErrors(!success); const QVector<Models::ArtworkMetadata*> &artworksToWrite = m_WritingWorker->getItemsToWrite(); m_CommandManager->addToLibrary(artworksToWrite); emit metadataWritingFinished(); }
void MetadataIOCoordinator::writeMetadataExiv2(const QVector<Models::ArtworkMetadata *> &artworksToWrite) { WritingOrchestrator *writingOrchestrator = new WritingOrchestrator(artworksToWrite); QObject::connect(writingOrchestrator, SIGNAL(allFinished(bool)), this, SLOT(writingWorkerFinished(bool))); QObject::connect(this, SIGNAL(metadataWritingFinished()), writingOrchestrator, SLOT(dismiss())); m_WritingWorker = writingOrchestrator; writingOrchestrator->startWriting(); }
void MetadataIOCoordinator::writeMetadata(const QVector<Models::ArtworkMetadata *> &artworksToWrite, bool useBackups) { m_WritingWorker = new MetadataWritingWorker(artworksToWrite, m_CommandManager->getSettingsModel(), useBackups); QThread *thread = new QThread(); m_WritingWorker->moveToThread(thread); QObject::connect(thread, SIGNAL(started()), m_WritingWorker, SLOT(process())); QObject::connect(m_WritingWorker, SIGNAL(stopped()), thread, SLOT(quit())); QObject::connect(m_WritingWorker, SIGNAL(stopped()), m_WritingWorker, SLOT(deleteLater())); QObject::connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); QObject::connect(m_WritingWorker, SIGNAL(finished(bool)), this, SLOT(writingWorkerFinished(bool))); QObject::connect(this, SIGNAL(metadataWritingFinished()), m_WritingWorker, SIGNAL(stopped())); setProcessingItemsCount(artworksToWrite.length()); qDebug() << "Starting metadata writing thread"; thread->start(); }
int ClearMetadataTest::doTest() { Models::ArtItemsModel *artItemsModel = m_CommandManager->getArtItemsModel(); QList<QUrl> files; files << getImagePathForTest("images-for-tests/pixmap/seagull-for-clear.jpg"); int addedCount = artItemsModel->addLocalArtworks(files); VERIFY(addedCount == files.length(), "Failed to add file"); MetadataIO::MetadataIOCoordinator *ioCoordinator = m_CommandManager->getMetadataIOCoordinator(); SignalWaiter waiter; QObject::connect(ioCoordinator, SIGNAL(metadataReadingFinished()), &waiter, SIGNAL(finished())); ioCoordinator->continueReading(true); if (!waiter.wait(20)) { VERIFY(false, "Timeout exceeded for reading metadata."); } VERIFY(!ioCoordinator->getHasErrors(), "Errors in IO Coordinator while reading"); Models::ArtworkMetadata *metadata = artItemsModel->getArtwork(0); const QStringList &keywords = metadata->getKeywords(); QStringList expectedKeywords = QString("picture,seagull,bird").split(','); VERIFY(expectedKeywords == keywords, "Keywords are not the same!"); VERIFY(metadata->getDescription() == "Seagull description", "Description is not the same!"); VERIFY(metadata->getTitle() == "Seagull title", "Title is not the same!"); Models::FilteredArtItemsProxyModel *filteredModel = m_CommandManager->getFilteredArtItemsModel(); metadata->setIsSelected(true); filteredModel->removeMetadataInSelected(); bool doOverwrite = true, dontSaveBackups = false; QObject::connect(ioCoordinator, SIGNAL(metadataWritingFinished()), &waiter, SIGNAL(finished())); artItemsModel->saveSelectedArtworks(QVector<int>() << 0, doOverwrite, dontSaveBackups); if (!waiter.wait(20)) { VERIFY(false, "Timeout exceeded for writing metadata."); } VERIFY(!ioCoordinator->getHasErrors(), "Errors in IO Coordinator while writing"); filteredModel->removeSelectedArtworks(); addedCount = artItemsModel->addLocalArtworks(files); VERIFY(addedCount == files.length(), "Failed to add file after removal"); ioCoordinator->continueReading(true); if (!waiter.wait(20)) { VERIFY(false, "Timeout exceeded for reading metadata."); } VERIFY(!ioCoordinator->getHasErrors(), "Errors in IO Coordinator while reading"); metadata = artItemsModel->getArtwork(0); VERIFY(metadata->getBasicModel()->isDescriptionEmpty(), "Description was not empty"); VERIFY(metadata->getBasicModel()->isTitleEmpty(), "Title was not empty"); VERIFY(metadata->getBasicModel()->areKeywordsEmpty(), "Keywords were not empty"); return 0; }
void MetadataIOCoordinator::writingWorkerFinished(bool success) { setHasErrors(!success); emit metadataWritingFinished(); }