Пример #1
0
	void FileTransferIn::handleData (qint32 friendNum, qint8 fileNum, const QByteArray& data)
	{
		if (friendNum != FriendNum_ || fileNum != FileNum_)
			return;

		File_->write (data);
		emit transferProgress (File_->pos (), Filesize_);
	}
Пример #2
0
//! [Transfer-1]
void FileTransfer::initTransfer(QString address, QString fileName)
{
    qDebug() << "Begin sharing file: " << address << fileName;
    QBluetoothAddress btAddress = QBluetoothAddress(address);
    QBluetoothTransferRequest request(btAddress);
    QFile *file = new QFile(fileName);
    reply = manager.put(request, file);
    connect(reply, SIGNAL(transferProgress(qint64,qint64)), this, SLOT(updateProgress(qint64,qint64)));
}
void QBluetoothTransferReplyBluez::sessionChanged(const QString &interface,
                                                  const QVariantMap &changed_properties,
                                                  const QStringList &)
{
    if (changed_properties.contains(QStringLiteral("Transferred"))) {
        emit transferProgress(
            changed_properties.value(QStringLiteral("Transferred")).toULongLong(),
            m_size);
    }

    if (changed_properties.contains(QStringLiteral("Status"))) {
        const QString s = changed_properties.
                value(QStringLiteral("Status")).toString();
        if (s == QStringLiteral("complete")
            || s == QStringLiteral("error")) {

            m_transfer_path.clear();
            m_finished = true;
            m_running = false;

            if (s == QStringLiteral("error")) {
                m_error = QBluetoothTransferReply::UnknownError;
                m_errorStr = tr("Unknown Error");

                emit QBluetoothTransferReply::error(m_error);
            } else { // complete
                // allow progress bar to complete
                emit transferProgress(m_size, m_size);
            }

            cleanupSession();

            emit finished(this);
        } // ignore "active", "queued" & "suspended" status
    }
    qCDebug(QT_BT_BLUEZ) << "Transfer update:" << interface << changed_properties;
}
Пример #4
0
	TransferJob::TransferJob (QXmppTransferJob *job)
	: QObject (job)
	, Job_ (job)
	{
		connect (Job_,
				SIGNAL (progress (qint64, qint64)),
				this,
				SIGNAL (transferProgress (qint64,qint64)));
		connect (Job_,
				SIGNAL (error (QXmppTransferJob::Error)),
				this,
				SLOT (handleErrorAppeared (QXmppTransferJob::Error)));
		connect (Job_,
				SIGNAL (stateChanged (QXmppTransferJob::State)),
				this,
				SLOT (handleStateChanged (QXmppTransferJob::State)));
	}
void
GContactClient::receiveItemProcessed (Sync::TransferType aModificationType,
                                      Sync::TransferDatabase transferDb,
                                      QString database,
                                      int aCommittedItems)
{

    FUNCTION_CALL_TRACE;

    LOG_DEBUG("Modification Type " << aModificationType);
    LOG_DEBUG("Committed items" << aCommittedItems);

    ++mCommittedItems;
    if(!receivedItems.contains(database))
    {
        ReceivedItemDetails details;
        details.added = details.modified = details.deleted = details.error = 0;
        //details.mime = aMimeType;
        receivedItems[database] = details;
    }

    switch (aModificationType) {
    case Sync::ITEM_ADDED: {
        ++receivedItems[database].added;
        break;
    }
    case Sync::ITEM_MODIFIED: {
        ++receivedItems[database].modified;
        break;
    }
    case Sync::ITEM_DELETED: {
        ++receivedItems[database].deleted;
        break;
    }
    case Sync::ITEM_ERROR: {
        ++receivedItems[database].error;
        break;
    }
    default: {
        Q_ASSERT(0);
        break;

    }
    }

    if( mCommittedItems == aCommittedItems )
    {
        QMapIterator<QString,ReceivedItemDetails> itr(receivedItems);
        while( itr.hasNext() )
        {
            itr.next();
            if( itr.value().added )
                emit transferProgress(getProfileName(), transferDb, Sync::ITEM_ADDED, itr.value().mime, itr.value().added);

            if( itr.value().modified )
                emit transferProgress(getProfileName(), transferDb, Sync::ITEM_MODIFIED, itr.value().mime, itr.value().modified);

            if( itr.value().deleted )
                emit transferProgress(getProfileName(), transferDb, Sync::ITEM_DELETED, itr.value().mime, itr.value().deleted);

            if( itr.value().error )
                emit transferProgress(getProfileName(), transferDb, Sync::ITEM_ERROR, itr.value().mime, itr.value().error);
        }
        mCommittedItems = 0;
        receivedItems.clear();
    }
}
Пример #6
0
	void PendingUpload::HandleGotServer (QNetworkReply *reply)
	{
		if (!Conn_->CheckFinishedReply (reply))
			return;

		const auto& json = Util::ParseJson (reply, Q_FUNC_INFO);
		try
		{
			Conn_->CheckReplyData (json, reply);
		}
		catch (const VkConnection::RecoverableException&)
		{
			return;
		}
		catch (const VkConnection::UnrecoverableException& ex)
		{
			emit errorAppeared (TEProtocolError,
					tr ("Unable to get upload server from VKontakte, protocol error %1: %2.")
						.arg (ex.GetCode ())
						.arg (ex.GetMessage ()));
			emit stateChanged (TSFinished);
			return;
		}

		Acc_->GetLogger () << "got upload server:" << json;

		const QUrl uploadUrl { json.toMap () ["response"].toMap () ["upload_url"].toByteArray () };
		if (!uploadUrl.isValid ())
		{
			emit errorAppeared (TEProtocolError,
					tr ("Unable to get upload server from VKontakte"));
			emit stateChanged (TSFinished);
			return;
		}

		emit stateChanged (TSTransfer);

		const auto multipart = new QHttpMultiPart { QHttpMultiPart::FormDataType };
		QHttpPart filePart;
		filePart.setHeader (QNetworkRequest::ContentDispositionHeader,
				QString ("form-data; name=\"file\"; filename=\"%1\"")
					.arg (QFileInfo { Path_ }.fileName ()));
		const auto file = new QFile { Path_ };
		file->open (QIODevice::ReadOnly);
		filePart.setBodyDevice (file);
		file->setParent (multipart);
		multipart->append (filePart);

		const auto nam = Acc_->GetCoreProxy ()->GetNetworkAccessManager ();
		const auto upReply = nam->post (QNetworkRequest { uploadUrl }, multipart);
		connect (upReply,
				SIGNAL (uploadProgress (qint64, qint64)),
				this,
				SIGNAL (transferProgress (qint64, qint64)));
		connect (upReply,
				SIGNAL (finished ()),
				this,
				SLOT (handleUploadFinished ()));

		multipart->setParent (upReply);
	}
Пример #7
0
void FileServerThread::run()    //TODO: use mutexes
{
    QString filename;
    QString ID;
    QFile file;
    QTcpSocket socket;
    socket.setSocketDescriptor (m_descriptor);

    while (!m_doQuit) {
        m_status = Waiting;
        while (!socket.bytesAvailable() && !m_doQuit) {
            socket.waitForReadyRead();
        }
        if (m_doQuit)
            break;

        QString data (socket.readAll());

        if (!Kapotah::TransferManager::instance()->pathForId (data).isEmpty()) {
            setStatus(PreparingToSend);
            ID = data;
            filename = Kapotah::TransferManager::instance()->pathForId (data);

            file.setFileName (filename);

            if (!file.open (QIODevice::ReadOnly)) {
                setStatus(ErrorFileNotFound);
                break;
            }

            socket.write ("OK");
            socket.waitForBytesWritten();
            emit startedTransfer (ID);
            setStatus(Sending);

            while (!file.atEnd() && !m_doQuit) {
                if (socket.state() != QTcpSocket::ConnectedState) {
                    emit finishedTransfer (ID);
                    setStatus(Finished);
                    break;
                }

                socket.write (file.read (s_bytesPerBlock));
                socket.waitForBytesWritten();

                while (socket.bytesToWrite())
                    socket.flush();

                emit transferProgress (ID, file.pos() / file.size() *100);
            }

            file.close();

            if (m_doQuit) {
                setStatus(Canceled);
                emit canceledTransfer(ID);
                socket.disconnectFromHost();
            } else {
                setStatus(Finished);
                emit finishedTransfer (ID);
            }

            socket.waitForDisconnected ();
            break;
        } else {
            setStatus(ErrorIDNotFound);
            emit transferNotFound(ID);
            break;
        }

        deleteLater();
    }
}