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();
}
Exemple #3
0
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));
}
Exemple #5
0
	void ExitJobOperation::onResult(KJob* )
	{
		operationFinished(this);
	}