void MapReduceProgress::addOperation(const MapReduceOperation& op) { QStandardItem* label = new QStandardItem(op.first); QStandardItem* prog = new QStandardItem(); prog->setData(QVariant::fromValue(op.second), Qt::DisplayRole); m_model->appendRow(QList<QStandardItem*>() << label << prog); QFutureWatcher<void>* watcher = new QFutureWatcher<void>(this); connect(watcher, SIGNAL(progressRangeChanged(int, int)), SLOT(operationChanged())); connect(watcher, SIGNAL(progressValueChanged(int)), SLOT(operationChanged())); connect(watcher, SIGNAL(finished()), SLOT(operationFinished())); watcher->setFuture(op.second); }
void AttributesAndDateChangerThread::run() { emit(processMessage(tr("Counting files..."))); for(int i=0; i<files_->count(); i++) { const WinFileInfo& fi=*files_->at(i); if(isProcessableDir(fi)) { dirCounter_++; countFiles(fi.filePath()); } else if(fi.isFile()) fileCounter_++; } sumOfFilesAndDirectories_=fileCounter_+dirCounter_; emit(fileRangeMessage(0,sumOfFilesAndDirectories_)); processTimer_.start(); for(int i=0; i<files_->count(); i++) { const WinFileInfo& fi=*files_->at(i); if(isProcessableDir(fi)) { processFileOrDirectory(fi); if(properties_.processSubFolders_) processSubDirectory(fi); } else if(fi.isFile()) processFileOrDirectory(fi); } emit(operationFinished(this)); quit(); }
void SM_QDropbox::requestFinished(int nr, QNetworkReply *rply) { rply->deleteLater(); #ifdef SM_QTDROPBOX_DEBUG int resp_bytes = rply->bytesAvailable(); #endif QByteArray buff = rply->readAll(); QString response = QString(buff); #ifdef SM_QTDROPBOX_DEBUG qDebug() << "request " << nr << "finished." << endl; qDebug() << "request was: " << rply->url().toString() << endl; #endif #ifdef SM_QTDROPBOX_DEBUG qDebug() << "response: " << resp_bytes << "bytes" << endl; qDebug() << "status code: " << rply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString() << endl; qDebug() << "== begin response ==" << endl << response << endl << "== end response ==" << endl; qDebug() << "req#" << nr << " is of type " << requestMap[nr].type << endl; #endif // drop box error handling based on return codes switch(rply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()) { case SM_DROPBOX_ERROR_BAD_INPUT: errorState = SM_QDropbox::BadInput; errorText = ""; emit errorOccured(errorState); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_EXPIRED_TOKEN: errorState = SM_QDropbox::TokenExpired; errorText = ""; emit tokenExpired(); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_BAD_OAUTH_REQUEST: errorState = SM_QDropbox::BadOAuthRequest; errorText = ""; emit errorOccured(errorState); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_FILE_NOT_FOUND: emit fileNotFound(); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_WRONG_METHOD: errorState = SM_QDropbox::WrongHttpMethod; errorText = ""; emit errorOccured(errorState); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_REQUEST_CAP: errorState = SM_QDropbox::MaxRequestsExceeded; errorText = ""; emit errorOccured(errorState); checkReleaseEventLoop(nr); return; break; case SM_DROPBOX_ERROR_USER_OVER_QUOTA: errorState = SM_QDropbox::UserOverQuota; errorText = ""; emit errorOccured(errorState); checkReleaseEventLoop(nr); return; break; default: break; } if(rply->error() != QNetworkReply::NoError) { errorState = SM_QDropbox::CommunicationError; errorText = QString("%1 - %2").arg(rply->error()).arg(rply->errorString()); #ifdef SM_QTDROPBOX_DEBUG qDebug() << "error " << errorState << "(" << errorText << ") in request" << endl; #endif emit errorOccured(errorState); checkReleaseEventLoop(nr); return; } // ignore connection requests if(requestMap[nr].type == SM_DROPBOX_REQ_CONNECT) { #ifdef SM_QTDROPBOX_DEBUG qDebug() << "- answer to connection request ignored" << endl; #endif removeRequestFromMap(nr); return; } bool delayed_finish = false; int delayed_nr; if(rply->attribute(QNetworkRequest::HttpStatusCodeAttribute) == 302) { #ifdef SM_QTDROPBOX_DEBUG qDebug() << "redirection received" << endl; #endif // redirection handling QUrl newlocation(rply->header(QNetworkRequest::LocationHeader).toString(), QUrl::StrictMode); #ifdef SM_QTDROPBOX_DEBUG qDebug() << "new url: " << newlocation.toString() << endl; #endif int oldnr = nr; nr = sendRequest(newlocation, requestMap[nr].method, 0, requestMap[nr].host); requestMap[nr].type = SM_DROPBOX_REQ_REDIREC; requestMap[nr].linked = oldnr; return; } else { if(requestMap[nr].type == SM_DROPBOX_REQ_REDIREC) { // change values if this is the answert to a redirect SM_DROPBOX_request redir = requestMap[nr]; SM_DROPBOX_request orig = requestMap[redir.linked]; requestMap[nr] = orig; removeRequestFromMap(nr); nr = redir.linked; } // standard handling depending on message type switch(requestMap[nr].type) { case SM_DROPBOX_REQ_CONNECT: // was only a connect request - so drop it break; case SM_DROPBOX_REQ_RQTOKEN: // requested a tiken responseTokenRequest(response); break; case SM_DROPBOX_REQ_RQBTOKN: responseBlockedTokenRequest(response); break; case SM_DROPBOX_REQ_AULOGIN: delayed_nr = responseDropboxLogin(response, nr); delayed_finish = true; break; case SM_DROPBOX_REQ_ACCTOKN: responseAccessToken(response); break; case SM_DROPBOX_REQ_METADAT: parseMetadata(response); break; case SM_DROPBOX_REQ_BMETADA: parseBlockingMetadata(response); break; case SM_DROPBOX_REQ_BACCTOK: responseBlockingAccessToken(response); break; case SM_DROPBOX_REQ_ACCINFO: parseAccountInfo(response); break; case SM_DROPBOX_REQ_BACCINF: parseBlockingAccountInfo(response); break; case SM_DROPBOX_REQ_SHRDLNK: parseSharedLink(response); break; case SM_DROPBOX_REQ_BSHRDLN: parseBlockingSharedLink(response); break; case SM_DROPBOX_REQ_REVISIO: parseRevisions(response); break; case SM_DROPBOX_REQ_BREVISI: parseBlockingRevisions(response); break; case SM_DROPBOX_REQ_DELTA: parseDelta(response); break; case SM_DROPBOX_REQ_BDELTA: parseBlockingDelta(response); break; default: errorState = SM_QDropbox::ResponseToUnknownRequest; errorText = "Received a response to an unknown request"; emit errorOccured(errorState); break; } } if(delayed_finish) delayMap[delayed_nr] = nr; else { if(delayMap[nr]) { int drq = delayMap[nr]; while(drq!=0) { emit operationFinished(delayMap[drq]); delayMap.remove(drq); drq = delayMap[drq]; } } removeRequestFromMap(nr); emit operationFinished(nr); } return; }
void AttributesAndDateChangerThread::cancelOperation() { terminate(); emit(operationFinished(this)); }
void ExitJobOperation::onResult(KJob* ) { operationFinished(this); }