void DkImageContainerT::fetchFile() { if (mFetchingBuffer && getLoadState() == loading_canceled) { mLoadState = loading; // uncancel loading - we had another call return; } if (mFetchingImage) mImageWatcher.waitForFinished(); // I think we missed to return here if (mFetchingBuffer) return; // ignore doubled calls if (mFileBuffer && !mFileBuffer->isEmpty()) { bufferLoaded(); return; } mFetchingBuffer = true; // saves the threaded call connect(&mBufferWatcher, SIGNAL(finished()), this, SLOT(bufferLoaded()), Qt::UniqueConnection); mBufferWatcher.setFuture(QtConcurrent::run(this, &nmc::DkImageContainerT::loadFileToBuffer, filePath())); }
void DkImageContainerT::fetchFile() { if (fetchingBuffer && getLoadState() == loading_canceled) { loadState = loading; return; } if (fetchingImage) imageWatcher.waitForFinished(); // ignore doubled calls if (fileBuffer && !fileBuffer->isEmpty()) { bufferLoaded(); return; } fetchingBuffer = true; QFuture<QSharedPointer<QByteArray> > future = QtConcurrent::run(this, &nmc::DkImageContainerT::loadFileToBuffer, fileInfo); bufferWatcher.setFuture(future); }
// DkImageContainerT -------------------------------------------------------------------- DkImageContainerT::DkImageContainerT(const QFileInfo& file) : DkImageContainer(file) { thumb = QSharedPointer<DkThumbNailT>(new DkThumbNailT(file)); #ifdef WITH_QUAZIP if(isFromZip()) thumb = QSharedPointer<DkThumbNailT>(new DkThumbNailT(zipData->getEncodedFileInfo())); #endif fetchingImage = false; fetchingBuffer = false; // our file watcher fileUpdateTimer.setSingleShot(false); fileUpdateTimer.setInterval(500); waitForUpdate = false; connect(&fileUpdateTimer, SIGNAL(timeout()), this, SLOT(checkForFileUpdates())); connect(&saveImageWatcher, SIGNAL(finished()), this, SLOT(savingFinished())); connect(&bufferWatcher, SIGNAL(finished()), this, SLOT(bufferLoaded())); connect(&imageWatcher, SIGNAL(finished()), this, SLOT(imageLoaded())); connect(loader.data(), SIGNAL(errorDialogSignal(const QString&)), this, SIGNAL(errorDialogSignal(const QString&))); connect(thumb.data(), SIGNAL(thumbLoadedSignal(bool)), this, SIGNAL(thumbLoadedSignal(bool))); //connect(&metaDataWatcher, SIGNAL(finished()), this, SLOT(metaDataLoaded())); }