Added button to open incoming file transfer's folder in browser
This commit is contained in:
parent
4363ea8fdb
commit
a06cf677f4
3 changed files with 15 additions and 6 deletions
|
@ -28,6 +28,7 @@
|
||||||
FileTransferJob::FileTransferJob(const QSharedPointer<QIODevice>& origin, int size, const KUrl& destination): KJob()
|
FileTransferJob::FileTransferJob(const QSharedPointer<QIODevice>& origin, int size, const KUrl& destination): KJob()
|
||||||
{
|
{
|
||||||
Q_ASSERT(destination.isLocalFile());
|
Q_ASSERT(destination.isLocalFile());
|
||||||
|
//TODO: Make a precondition before calling this function that destination file exists
|
||||||
QFile(destination.path()).open(QIODevice::WriteOnly | QIODevice::Truncate); //HACK: KIO is so dumb it can't create the file if it doesn't exist
|
QFile(destination.path()).open(QIODevice::WriteOnly | QIODevice::Truncate); //HACK: KIO is so dumb it can't create the file if it doesn't exist
|
||||||
mDestination = KIO::open(destination, QIODevice::WriteOnly);
|
mDestination = KIO::open(destination, QIODevice::WriteOnly);
|
||||||
connect(mDestination, SIGNAL(open(KIO::Job*)), this, SLOT(open(KIO::Job*)));
|
connect(mDestination, SIGNAL(open(KIO::Job*)), this, SLOT(open(KIO::Job*)));
|
||||||
|
@ -86,9 +87,8 @@ void FileTransferJob::readyRead()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mSize > -1 && mWritten >= mSize) { //At the end or expected size reached
|
if (mSize > -1 && mWritten >= mSize) { //At the end or expected size reached
|
||||||
qDebug() << "No more data to read";
|
|
||||||
disconnect(mOrigin.data(), SIGNAL(readyRead()),this, SLOT(readyRead()));
|
|
||||||
mOrigin->close();
|
mOrigin->close();
|
||||||
|
//sourceFinished();
|
||||||
} else if (mOrigin->bytesAvailable() > 0) {
|
} else if (mOrigin->bytesAvailable() > 0) {
|
||||||
QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,12 +65,14 @@ bool FileTransferPlugin::receivePackage(const NetworkPackage& np)
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (np.type() != PACKAGE_TYPE_FILETRANSFER) return false;
|
if (np.type() != PACKAGE_TYPE_FILETRANSFER) return false;
|
||||||
qDebug() << "File transfer";
|
qDebug() << "File transfer";
|
||||||
|
|
||||||
if (np.hasPayload()) {
|
if (np.hasPayload()) {
|
||||||
qDebug() << "receiving file";
|
//qDebug() << "receiving file";
|
||||||
QString filename = np.get<QString>("filename", QString::number(QDateTime::currentMSecsSinceEpoch()));
|
QString filename = np.get<QString>("filename", QString::number(QDateTime::currentMSecsSinceEpoch()));
|
||||||
|
//TODO: Ask before overwritting or rename file if it already exists
|
||||||
FileTransferJob* job = np.createPayloadTransferJob(mDestinationDir + filename);
|
FileTransferJob* job = np.createPayloadTransferJob(mDestinationDir + filename);
|
||||||
connect(job, SIGNAL(result(KJob*)), this, SLOT(finished(KJob*)));
|
connect(job, SIGNAL(result(KJob*)), this, SLOT(finished(KJob*)));
|
||||||
job->start();
|
job->start();
|
||||||
|
@ -111,7 +113,12 @@ void FileTransferPlugin::finished(KJob* job)
|
||||||
notification->setComponentData(KComponentData("kdeconnect", "kdeconnect"));
|
notification->setComponentData(KComponentData("kdeconnect", "kdeconnect"));
|
||||||
notification->setTitle(i18n("Transfer finished"));
|
notification->setTitle(i18n("Transfer finished"));
|
||||||
notification->setText(transferJob->destination().fileName());
|
notification->setText(transferJob->destination().fileName());
|
||||||
//TODO: Add action "open destination folder"
|
notification->setActions(QStringList(i18n("Open destination folder")));
|
||||||
|
connect(notification, SIGNAL(action1Activated()), this, SLOT(openDestinationFolder()));
|
||||||
notification->sendEvent();
|
notification->sendEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileTransferPlugin::openDestinationFolder()
|
||||||
|
{
|
||||||
|
QDesktopServices::openUrl(mDestinationDir);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,9 +39,11 @@ public Q_SLOTS:
|
||||||
virtual void connected() { }
|
virtual void connected() { }
|
||||||
void finished(KJob*);
|
void finished(KJob*);
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void openDestinationFolder();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString mDestinationDir;
|
QString mDestinationDir;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue