Implement proper saving files (still buggy somehow)
This commit is contained in:
parent
da1dd64317
commit
64464c15fe
2 changed files with 45 additions and 0 deletions
|
@ -29,6 +29,7 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QQuickItem>
|
#include <QQuickItem>
|
||||||
|
#include <QFileDialog>
|
||||||
|
|
||||||
#include <kactioncollection.h>
|
#include <kactioncollection.h>
|
||||||
#include <KStandardAction>
|
#include <KStandardAction>
|
||||||
|
@ -36,6 +37,8 @@
|
||||||
#include <KDeclarative/KDeclarative>
|
#include <KDeclarative/KDeclarative>
|
||||||
#include <KConfigDialog>
|
#include <KConfigDialog>
|
||||||
#include <KToggleAction>
|
#include <KToggleAction>
|
||||||
|
#include <KIO/FileCopyJob>
|
||||||
|
#include <KIO/MimetypeJob>
|
||||||
|
|
||||||
#include "libdanbooru/danbooruservice.h"
|
#include "libdanbooru/danbooruservice.h"
|
||||||
#include "libdanbooru/danboorupost.h"
|
#include "libdanbooru/danboorupost.h"
|
||||||
|
@ -170,6 +173,9 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
|
||||||
searchDockWidget->hide();
|
searchDockWidget->hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(m_view->rootObject(), SIGNAL(downloadRequested(const QUrl&)), this,
|
||||||
|
SLOT(slotHandleDownload(const QUrl&)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DanbooruMainWindow::~DanbooruMainWindow()
|
DanbooruMainWindow::~DanbooruMainWindow()
|
||||||
|
@ -365,4 +371,42 @@ void DanbooruMainWindow::optionsPreferences()
|
||||||
dialog->show();
|
dialog->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DanbooruMainWindow::slotHandleDownload(const QUrl &url) {
|
||||||
|
|
||||||
|
QFileDialog saveDialog(this);
|
||||||
|
saveDialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
saveDialog.setWindowTitle(i18n("Save file"));
|
||||||
|
saveDialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
KIO::MimetypeJob* mimeJob = KIO::mimetype(url, KIO::HideProgressInfo);
|
||||||
|
|
||||||
|
if (mimeJob->exec()) {
|
||||||
|
saveDialog.setMimeTypeFilters(QStringList(mimeJob->mimetype()));
|
||||||
|
} else {
|
||||||
|
saveDialog.setNameFilter(i18n("Images (*.png *.gif *.jpg);;All files (*.*)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// savedialog.setMimeTypeFilters();
|
||||||
|
saveDialog.setConfirmOverwrite(true);
|
||||||
|
saveDialog.setDirectory(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
||||||
|
saveDialog.selectFile(url.fileName());
|
||||||
|
|
||||||
|
if (saveDialog.exec()) {
|
||||||
|
QString localFileName = saveDialog.selectedFiles().at(0);
|
||||||
|
QUrl localFile = QUrl::fromLocalFile(localFileName);
|
||||||
|
|
||||||
|
qDebug() << "URL" << localFile;
|
||||||
|
|
||||||
|
KIO::FileCopyJob *job = KIO::file_copy(url, localFile, -1, KIO::DefaultFlags);
|
||||||
|
|
||||||
|
connect(job, &KIO::Job::result, [this](KJob *job) {
|
||||||
|
if (job->error()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Danbooru
|
} // namespace Danbooru
|
||||||
|
|
|
@ -89,6 +89,7 @@ private Q_SLOTS:
|
||||||
void downloadPosts();
|
void downloadPosts();
|
||||||
void optionsPreferences();
|
void optionsPreferences();
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
|
void slotHandleDownload(const QUrl &url);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue