From bc0c97b0d1abba90acfa26fbc0733d7c612b29dc Mon Sep 17 00:00:00 2001 From: Nikhil Tanwar <2002nikhiltanwar@gmail.com> Date: Thu, 13 Jun 2024 17:11:28 +0530 Subject: [PATCH] Remember previous download location The last downloaded file's location is remembered and the "Save File" dialog opens in the same directory. --- src/kiwixapp.cpp | 23 +++++++++++++++++------ src/kiwixapp.h | 2 ++ src/kprofile.cpp | 5 ++++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index aa5e432b..4f40a0c3 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -227,21 +227,32 @@ QString gt(const QString &key) { return KiwixApp::instance()->getText(key); } +QString KiwixApp::getZimImportDir() const +{ + QString importDir = mp_session->value("zim-import-dir").toString(); + if (importDir.isEmpty()) { + importDir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); + if (importDir.isEmpty()) { importDir = QDir::currentPath(); } + } + return importDir; +} + +void KiwixApp::setZimImportDir(QString importDir) +{ + mp_session->setValue("zim-import-dir", importDir); +} + void KiwixApp::openZimFile(const QString &zimfile) { QString _zimfile; if (zimfile.isEmpty()) { - QString importDir = mp_session->value("zim-import-dir").toString(); - if (importDir.isEmpty()) { - importDir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); - if (importDir.isEmpty()) { importDir = QDir::currentPath(); } - } + QString importDir = getZimImportDir(); _zimfile = QFileDialog::getOpenFileName(getMainWindow(), gt("open-zim"), importDir, "ZIM Files (*.zim);;Split ZIM Files (*.zimaa)"); if (_zimfile.isEmpty()) { return; } _zimfile = QDir::toNativeSeparators(_zimfile); QFileInfo fileInfo(_zimfile); - mp_session->setValue("zim-import-dir", fileInfo.absolutePath()); + setZimImportDir(fileInfo.absolutePath()); } QString zimId; const auto &validZimFile = zimfile.isEmpty() ? _zimfile : zimfile; diff --git a/src/kiwixapp.h b/src/kiwixapp.h index 209b05c3..c4e43be8 100644 --- a/src/kiwixapp.h +++ b/src/kiwixapp.h @@ -85,6 +85,8 @@ class KiwixApp : public QtSingleApplication kiwix::Server* getLocalServer() { return &m_server; } SettingsManager* getSettingsManager() { return &m_settingsManager; }; QString getText(const QString &key) { return m_translation.getText(key); }; + QString getZimImportDir() const; + void setZimImportDir(QString); void setMonitorDir(const QString &dir); bool isCurrentArticleBookmarked(); QString parseStyleFromFile(QString filePath); diff --git a/src/kprofile.cpp b/src/kprofile.cpp index 4437875c..641c77a1 100644 --- a/src/kprofile.cpp +++ b/src/kprofile.cpp @@ -60,7 +60,8 @@ void KProfile::openFile(WebEngineDownloadType* download) void KProfile::saveFile(WebEngineDownloadType* download) { QString defaultFileName = download->url().fileName(); - QString fileName = QFileDialog::getSaveFileName(KiwixApp::instance()->getMainWindow(), gt("save-file-as-window-title"), defaultFileName); + QString fileName = QFileDialog::getSaveFileName(KiwixApp::instance()->getMainWindow(), gt("save-file-as-window-title"), + QDir::cleanPath(KiwixApp::instance()->getZimImportDir() + QDir::separator() + defaultFileName)); if (fileName.isEmpty()) { download->cancel(); return; @@ -70,6 +71,8 @@ void KProfile::saveFile(WebEngineDownloadType* download) fileName.append(extension); } setDownloadFilePath(download, fileName); + QFileInfo fileInfo(fileName); + KiwixApp::instance()->setZimImportDir(fileInfo.absolutePath()); connect(download, &DownloadFinishedSignal, [=]() { showInfoBox(gt("download-finished"), gt("download-finished-message"), KiwixApp::instance()->getMainWindow()); });