feature: paste image in chat #51
@ -378,7 +378,32 @@ void Core::NetworkAccess::onUploadFinished()
|
|||||||
qDebug() << "upload success for" << url;
|
qDebug() << "upload success for" << url;
|
||||||
|
|
||||||
storage.addFile(upl->messages, upl->url, upl->path);
|
storage.addFile(upl->messages, upl->url, upl->path);
|
||||||
emit uploadFileComplete(upl->messages, upl->url);
|
emit uploadFileComplete(upl->messages, upl->url, upl->path);
|
||||||
|
|
||||||
|
// Copy file to Download folder if it is a temp file. See Conversation::onImagePasted.
|
||||||
|
if (upl->path.startsWith(QDir::tempPath() + QStringLiteral("/squawk_img_attach_")) && upl->path.endsWith(".png")) {
|
||||||
|
QString err = "";
|
||||||
|
QString downloadDirPath = prepareDirectory(upl->messages.front().jid);
|
||||||
|
if (downloadDirPath.size() > 0) {
|
||||||
|
QString newPath = downloadDirPath + "/" + upl->path.mid(QDir::tempPath().length() + 1);
|
||||||
|
|
||||||
|
// Copy {TEMPDIR}/squawk_img_attach_XXXXXX.png to Download folder
|
||||||
|
bool copyResult = QFile::copy(upl->path, newPath);
|
||||||
|
|
||||||
|
if (copyResult) {
|
||||||
|
// Change storage
|
||||||
|
storage.setPath(upl->url, newPath);
|
||||||
|
} else {
|
||||||
|
err = "copying to " + newPath + " failed";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = "Couldn't prepare a directory for file";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err.size() != 0) {
|
||||||
|
qDebug() << "failed to copy temporary upload file " << upl->path << " to download folder:" << err;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
upl->reply->deleteLater();
|
upl->reply->deleteLater();
|
||||||
|
@ -58,7 +58,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void loadFileProgress(const std::list<Shared::MessageInfo>& msgs, qreal value, bool up);
|
void loadFileProgress(const std::list<Shared::MessageInfo>& msgs, qreal value, bool up);
|
||||||
void loadFileError(const std::list<Shared::MessageInfo>& msgs, const QString& text, bool up);
|
void loadFileError(const std::list<Shared::MessageInfo>& msgs, const QString& text, bool up);
|
||||||
void uploadFileComplete(const std::list<Shared::MessageInfo>& msgs, const QString& url);
|
void uploadFileComplete(const std::list<Shared::MessageInfo>& msgs, const QString& url, const QString& path);
|
||||||
void downloadFileComplete(const std::list<Shared::MessageInfo>& msgs, const QString& path);
|
void downloadFileComplete(const std::list<Shared::MessageInfo>& msgs, const QString& path);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -82,7 +82,7 @@ signals:
|
|||||||
void fileError(const std::list<Shared::MessageInfo> msgs, const QString& error, bool up);
|
void fileError(const std::list<Shared::MessageInfo> msgs, const QString& error, bool up);
|
||||||
void fileProgress(const std::list<Shared::MessageInfo> msgs, qreal value, bool up);
|
void fileProgress(const std::list<Shared::MessageInfo> msgs, qreal value, bool up);
|
||||||
void fileDownloadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
void fileDownloadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
||||||
void fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
void fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& url, const QString& path);
|
||||||
|
|
||||||
void responseVCard(const QString& jid, const Shared::VCard& card);
|
void responseVCard(const QString& jid, const Shared::VCard& card);
|
||||||
void changeMessage(const QString& account, const QString& jid, const QString& id, const QMap<QString, QVariant>& data);
|
void changeMessage(const QString& account, const QString& jid, const QString& id, const QMap<QString, QVariant>& data);
|
||||||
|
@ -405,7 +405,7 @@ void Squawk::fileError(const std::list<Shared::MessageInfo> msgs, const QString&
|
|||||||
rosterModel.fileError(msgs, error, up);
|
rosterModel.fileError(msgs, error, up);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Squawk::fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path)
|
void Squawk::fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& url, const QString& path)
|
||||||
{
|
{
|
||||||
rosterModel.fileComplete(msgs, true);
|
rosterModel.fileComplete(msgs, true);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ public slots:
|
|||||||
void fileError(const std::list<Shared::MessageInfo> msgs, const QString& error, bool up);
|
void fileError(const std::list<Shared::MessageInfo> msgs, const QString& error, bool up);
|
||||||
void fileProgress(const std::list<Shared::MessageInfo> msgs, qreal value, bool up);
|
void fileProgress(const std::list<Shared::MessageInfo> msgs, qreal value, bool up);
|
||||||
void fileDownloadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
void fileDownloadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
||||||
void fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& path);
|
void fileUploadComplete(const std::list<Shared::MessageInfo> msgs, const QString& url, const QString& path);
|
||||||
void responseVCard(const QString& jid, const Shared::VCard& card);
|
void responseVCard(const QString& jid, const Shared::VCard& card);
|
||||||
void changeMessage(const QString& account, const QString& jid, const QString& id, const QMap<QString, QVariant>& data);
|
void changeMessage(const QString& account, const QString& jid, const QString& id, const QMap<QString, QVariant>& data);
|
||||||
void requestPassword(const QString& account);
|
void requestPassword(const QString& account);
|
||||||
|
@ -249,6 +249,10 @@ void Conversation::onImagePasted()
|
|||||||
tempFile->close();
|
tempFile->close();
|
||||||
qDebug() << "image on paste temp file: " << tempFile->fileName();
|
qDebug() << "image on paste temp file: " << tempFile->fileName();
|
||||||
addAttachedFile(tempFile->fileName());
|
addAttachedFile(tempFile->fileName());
|
||||||
|
|
||||||
|
// The file, if successfully uploaded, will be copied to Download folder.
|
||||||
|
// On application closing, this temporary file will be automatically removed by Qt.
|
||||||
|
// See Core::NetworkAccess::onUploadFinished.
|
||||||
}
|
}
|
||||||
|
|
||||||
void Conversation::onAttach()
|
void Conversation::onAttach()
|
||||||
|
Loading…
Reference in New Issue
Block a user