diff --git a/src/downloadmanagement.cpp b/src/downloadmanagement.cpp
index d34e4a3..9fed02f 100644
--- a/src/downloadmanagement.cpp
+++ b/src/downloadmanagement.cpp
@@ -105,7 +105,7 @@ namespace
kiwix::Downloader* createDownloader()
{
try {
- return new kiwix::Downloader();
+ return new kiwix::Downloader(getDataDirectory().toStdString());
} catch (std::exception& e) {
QMessageBox::critical(nullptr, gt("error-downloader-window-title"),
gt("error-downloader-launch-message") + "
" + e.what());
@@ -283,19 +283,17 @@ void DownloadManager::checkThatBookCanBeDownloaded(const kiwix::Book& book, cons
std::string DownloadManager::startDownload(const kiwix::Book& book, const QString& downloadDirPath)
{
- typedef std::vector> DownloadOptions;
-
const std::string& url = book.getUrl();
const QString bookId = QString::fromStdString(book.getId());
- const DownloadOptions downloadOptions{{"dir", downloadDirPath.toStdString()}};
std::string downloadId;
try {
- const auto d = mp_downloader->startDownload(url, downloadOptions);
+ const auto d = mp_downloader->startDownload(url, downloadDirPath.toStdString());
downloadId = d->getDid();
} catch (std::exception& e) {
throwDownloadUnavailableError();
}
+
return downloadId;
}
diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp
index 628cf0c..b5f31c4 100644
--- a/src/kiwixapp.cpp
+++ b/src/kiwixapp.cpp
@@ -157,7 +157,7 @@ QString KiwixApp::findLibraryDirectory()
return currentDataDir;
// Check for default dataDirectory.
- currentDataDir = QString::fromStdString(kiwix::getDataDirectory());
+ currentDataDir = getDataDirectory();
libraryFile = QFileInfo(currentDataDir, "library.xml");
if (libraryFile.exists())
return currentDataDir;
diff --git a/src/settingsmanager.cpp b/src/settingsmanager.cpp
index e475bcd..c573f15 100644
--- a/src/settingsmanager.cpp
+++ b/src/settingsmanager.cpp
@@ -7,6 +7,16 @@
#include
#include
+QString getDataDirectory()
+{
+ QString dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
+
+ if (!dataDir.isEmpty() && QDir().mkpath(dataDir))
+ return dataDir;
+
+ return QString::fromStdString(kiwix::getCurrentDirectory());
+}
+
SettingsManager::SettingsManager(QObject *parent)
: QObject(parent),
m_settings("Kiwix", "Kiwix-desktop"),
@@ -152,7 +162,7 @@ void SettingsManager::initSettings()
{
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8080).toInt();
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();
- m_downloadDir = m_settings.value("download/dir", QString::fromStdString(kiwix::getDataDirectory())).toString();
+ m_downloadDir = m_settings.value("download/dir", getDataDirectory()).toString();
m_kiwixServerIpAddress = m_settings.value("localKiwixServer/ipAddress", QString("0.0.0.0")).toString();
m_monitorDir = m_settings.value("monitor/dir", QString("")).toString();
m_moveToTrash = m_settings.value("moveToTrash", true).toBool();
diff --git a/src/settingsmanager.h b/src/settingsmanager.h
index 3b60306..78ec61c 100644
--- a/src/settingsmanager.h
+++ b/src/settingsmanager.h
@@ -77,4 +77,5 @@ private:
QList m_contentTypeList;
};
+QString getDataDirectory();
#endif // SETTINGSMANAGER_H
diff --git a/src/settingsview.cpp b/src/settingsview.cpp
index 3b42d15..919e667 100644
--- a/src/settingsview.cpp
+++ b/src/settingsview.cpp
@@ -109,7 +109,7 @@ bool SettingsView::confirmDialogMonitorDir(const QString &dir) {
void SettingsView::resetDownloadDir()
{
- auto dir = QString::fromStdString(kiwix::getDataDirectory());
+ auto dir = getDataDirectory();
const auto &downloadDir = KiwixApp::instance()->getSettingsManager()->getDownloadDir();
if (dir == downloadDir) {
return;