Skip to content

Commit

Permalink
Use data directory in portable mode
Browse files Browse the repository at this point in the history
  • Loading branch information
sgourdas committed Sep 9, 2024
1 parent 0ae1ab4 commit 862412a
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/kiwixapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,10 @@ void KiwixApp::newTab()
QString KiwixApp::findLibraryDirectory()
{
auto currentDataDir = QString::fromStdString(kiwix::removeLastPathElement(kiwix::getExecutablePath()));

if (isPortableMode())
return currentDataDir + QDir::separator() + "data";

// Check for library.xml in the same directory as the executable.
auto libraryFile = QFileInfo(currentDataDir, "library.xml");
if (libraryFile.exists())
Expand Down
27 changes: 25 additions & 2 deletions src/settingsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

QString getDataDirectory()
{
if (isPortableMode()) {
auto currentDataDir = QString::fromStdString(kiwix::removeLastPathElement(kiwix::getExecutablePath()));
return currentDataDir + QDir::separator() + "data";
}

QString dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);

if (!dataDir.isEmpty() && QDir().mkpath(dataDir))
Expand All @@ -17,9 +22,26 @@ QString getDataDirectory()
return QString::fromStdString(kiwix::getCurrentDirectory());
}

bool isPortableMode()
{
auto currentDataDir = QString::fromStdString(kiwix::removeLastPathElement(kiwix::getExecutablePath()));
auto portableFile = QFileInfo(currentDataDir, ".portable");

return portableFile.exists();
}

QString SettingsManager::getSettingsConfPath()
{
QString confDirectory = isPortableMode() ?
getDataDirectory() :
QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

return confDirectory + QDir::separator() + "Kiwix-desktop.conf";
}

SettingsManager::SettingsManager(QObject *parent)
: QObject(parent),
m_settings("Kiwix", "Kiwix-desktop"),
m_settings(getSettingsConfPath(), QSettings::NativeFormat),
m_view(nullptr)
{
initSettings();
Expand Down Expand Up @@ -162,7 +184,8 @@ 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", getDataDirectory()).toString();
QString dataDir = getDataDirectory();
m_downloadDir = isPortableMode() ? dataDir : m_settings.value("download/dir", dataDir).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();
Expand Down
2 changes: 2 additions & 0 deletions src/settingsmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class SettingsManager : public QObject
explicit SettingsManager(QObject *parent = nullptr);
virtual ~SettingsManager() {};

QString getSettingsConfPath();
SettingsView* getView();
void setSettings(const QString &key, const QVariant &value);
void deleteSettings(const QString &key);
Expand Down Expand Up @@ -78,4 +79,5 @@ public slots:
};

QString getDataDirectory();
bool isPortableMode();
#endif // SETTINGSMANAGER_H

0 comments on commit 862412a

Please sign in to comment.