Use data directory in portable mode

This commit is contained in:
sgourdas 2024-08-23 23:17:38 +03:00 committed by Kelson
parent 380c3ae672
commit 78a50cfe76
3 changed files with 35 additions and 2 deletions

View File

@ -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())

View File

@ -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))
@ -17,9 +22,30 @@ 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();
}
namespace {
QString 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();
@ -162,7 +188,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();

View File

@ -78,4 +78,6 @@ private:
};
QString getDataDirectory();
bool isPortableMode();
#endif // SETTINGSMANAGER_H