Skip to content

Commit 57dc50f

Browse files
authored
Merge pull request #1169 from kiwix/feature/data-directory
Migrate getDataDirectory from libkiwix to kiwix-desktop
2 parents 61f4602 + 9f4d229 commit 57dc50f

File tree

5 files changed

+17
-8
lines changed

5 files changed

+17
-8
lines changed

src/downloadmanagement.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ namespace
105105
kiwix::Downloader* createDownloader()
106106
{
107107
try {
108-
return new kiwix::Downloader();
108+
return new kiwix::Downloader(getDataDirectory().toStdString());
109109
} catch (std::exception& e) {
110110
QMessageBox::critical(nullptr, gt("error-downloader-window-title"),
111111
gt("error-downloader-launch-message") + "<br><br>" + e.what());
@@ -283,19 +283,17 @@ void DownloadManager::checkThatBookCanBeDownloaded(const kiwix::Book& book, cons
283283

284284
std::string DownloadManager::startDownload(const kiwix::Book& book, const QString& downloadDirPath)
285285
{
286-
typedef std::vector<std::pair<std::string, std::string>> DownloadOptions;
287-
288286
const std::string& url = book.getUrl();
289287
const QString bookId = QString::fromStdString(book.getId());
290-
const DownloadOptions downloadOptions{{"dir", downloadDirPath.toStdString()}};
291288

292289
std::string downloadId;
293290
try {
294-
const auto d = mp_downloader->startDownload(url, downloadOptions);
291+
const auto d = mp_downloader->startDownload(url, downloadDirPath.toStdString());
295292
downloadId = d->getDid();
296293
} catch (std::exception& e) {
297294
throwDownloadUnavailableError();
298295
}
296+
299297
return downloadId;
300298
}
301299

src/kiwixapp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ QString KiwixApp::findLibraryDirectory()
157157
return currentDataDir;
158158

159159
// Check for default dataDirectory.
160-
currentDataDir = QString::fromStdString(kiwix::getDataDirectory());
160+
currentDataDir = getDataDirectory();
161161
libraryFile = QFileInfo(currentDataDir, "library.xml");
162162
if (libraryFile.exists())
163163
return currentDataDir;

src/settingsmanager.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77
#include <QLocale>
88
#include <QList>
99

10+
QString getDataDirectory()
11+
{
12+
QString dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
13+
14+
if (!dataDir.isEmpty() && QDir().mkpath(dataDir))
15+
return dataDir;
16+
17+
return QString::fromStdString(kiwix::getCurrentDirectory());
18+
}
19+
1020
SettingsManager::SettingsManager(QObject *parent)
1121
: QObject(parent),
1222
m_settings("Kiwix", "Kiwix-desktop"),
@@ -152,7 +162,7 @@ void SettingsManager::initSettings()
152162
{
153163
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8080).toInt();
154164
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();
155-
m_downloadDir = m_settings.value("download/dir", QString::fromStdString(kiwix::getDataDirectory())).toString();
165+
m_downloadDir = m_settings.value("download/dir", getDataDirectory()).toString();
156166
m_kiwixServerIpAddress = m_settings.value("localKiwixServer/ipAddress", QString("0.0.0.0")).toString();
157167
m_monitorDir = m_settings.value("monitor/dir", QString("")).toString();
158168
m_moveToTrash = m_settings.value("moveToTrash", true).toBool();

src/settingsmanager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,5 @@ public slots:
7777
QList<QVariant> m_contentTypeList;
7878
};
7979

80+
QString getDataDirectory();
8081
#endif // SETTINGSMANAGER_H

src/settingsview.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ bool SettingsView::confirmDialogMonitorDir(const QString &dir) {
109109

110110
void SettingsView::resetDownloadDir()
111111
{
112-
auto dir = QString::fromStdString(kiwix::getDataDirectory());
112+
auto dir = getDataDirectory();
113113
const auto &downloadDir = KiwixApp::instance()->getSettingsManager()->getDownloadDir();
114114
if (dir == downloadDir) {
115115
return;

0 commit comments

Comments
 (0)