From 9f4d229da6f310ed7a2757eefd2ffd31b3ff7f5e Mon Sep 17 00:00:00 2001 From: sgourdas Date: Fri, 9 Aug 2024 14:53:42 +0300 Subject: [PATCH] Migrate getDataDirectory from libkiwix --- src/downloadmanagement.cpp | 8 +++----- src/kiwixapp.cpp | 2 +- src/settingsmanager.cpp | 12 +++++++++++- src/settingsmanager.h | 1 + src/settingsview.cpp | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) 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;