Add drag and drop support.
This commit is contained in:
parent
75c5c71855
commit
b4281896ba
|
@ -23,6 +23,18 @@ Item {
|
||||||
room: currentRoom
|
room: currentRoom
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DropArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
enabled: currentRoom
|
||||||
|
|
||||||
|
onDropped: {
|
||||||
|
if (!drop.hasUrls) return
|
||||||
|
|
||||||
|
currentRoom.uploadFile(drop.urls[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
|
|
@ -47,32 +47,39 @@ inline QSize getImageSize(const QUrl& imageUrl) {
|
||||||
void SpectralRoom::chooseAndUploadFile() {
|
void SpectralRoom::chooseAndUploadFile() {
|
||||||
auto localFile = QFileDialog::getOpenFileUrl(Q_NULLPTR, tr("Save File as"));
|
auto localFile = QFileDialog::getOpenFileUrl(Q_NULLPTR, tr("Save File as"));
|
||||||
if (!localFile.isEmpty()) {
|
if (!localFile.isEmpty()) {
|
||||||
QString txnID = postFile(localFile.fileName(), localFile, false);
|
uploadFile(localFile);
|
||||||
setHasFileUploading(true);
|
|
||||||
connect(this, &Room::fileTransferCompleted,
|
|
||||||
[=](QString id, QUrl localFile, QUrl mxcUrl) {
|
|
||||||
if (id == txnID) {
|
|
||||||
setFileUploadingProgress(0);
|
|
||||||
setHasFileUploading(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
connect(this, &Room::fileTransferFailed, [=](QString id, QString error) {
|
|
||||||
if (id == txnID) {
|
|
||||||
setFileUploadingProgress(0);
|
|
||||||
setHasFileUploading(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
connect(
|
|
||||||
this, &Room::fileTransferProgress,
|
|
||||||
[=](QString id, qint64 progress, qint64 total) {
|
|
||||||
if (id == txnID) {
|
|
||||||
qDebug() << "Progress:" << progress << total;
|
|
||||||
setFileUploadingProgress(int(float(progress) / float(total) * 100));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SpectralRoom::uploadFile(const QUrl& url) {
|
||||||
|
if (url.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString txnID = postFile(url.fileName(), url, false);
|
||||||
|
setHasFileUploading(true);
|
||||||
|
connect(this, &Room::fileTransferCompleted,
|
||||||
|
[=](QString id, QUrl localFile, QUrl mxcUrl) {
|
||||||
|
if (id == txnID) {
|
||||||
|
setFileUploadingProgress(0);
|
||||||
|
setHasFileUploading(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(this, &Room::fileTransferFailed, [=](QString id, QString error) {
|
||||||
|
if (id == txnID) {
|
||||||
|
setFileUploadingProgress(0);
|
||||||
|
setHasFileUploading(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(
|
||||||
|
this, &Room::fileTransferProgress,
|
||||||
|
[=](QString id, qint64 progress, qint64 total) {
|
||||||
|
if (id == txnID) {
|
||||||
|
qDebug() << "Progress:" << progress << total;
|
||||||
|
setFileUploadingProgress(int(float(progress) / float(total) * 100));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void SpectralRoom::acceptInvitation() {
|
void SpectralRoom::acceptInvitation() {
|
||||||
connection()->joinRoom(id());
|
connection()->joinRoom(id());
|
||||||
}
|
}
|
||||||
|
|
|
@ -255,6 +255,7 @@ class SpectralRoom : public Room {
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void chooseAndUploadFile();
|
void chooseAndUploadFile();
|
||||||
|
void uploadFile(const QUrl& url);
|
||||||
void acceptInvitation();
|
void acceptInvitation();
|
||||||
void forget();
|
void forget();
|
||||||
void sendTypingNotification(bool isTyping);
|
void sendTypingNotification(bool isTyping);
|
||||||
|
|
Loading…
Reference in New Issue