void FileTransferIn::handleData (qint32 friendNum, qint8 fileNum, const QByteArray& data) { if (friendNum != FriendNum_ || fileNum != FileNum_) return; File_->write (data); emit transferProgress (File_->pos (), Filesize_); }
//! [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; }
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(); } }
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); }
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(); } }