1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2025-06-02 13:34:09 +02:00

ConfigFile: use QStandardPaths::AppConfigLocation for the config file

Also use appName instead of appNameGui in order to compute the path

Issue: 

The reason is to respect the XDG spec on Unix () and might help
on windows roaming profiles ()
This commit is contained in:
Olivier Goffart 2017-12-06 15:29:07 +01:00
parent ac844a2a45
commit e0a14cac5b
5 changed files with 28 additions and 18 deletions

View File

@ -119,7 +119,7 @@ Preventing Automatic Updates in Linux Environments
Because the Linux client does not provide automatic updating functionality, there is no Because the Linux client does not provide automatic updating functionality, there is no
need to remove the automatic-update check. However, if you want to disable it edit your desktop need to remove the automatic-update check. However, if you want to disable it edit your desktop
client configuration file, ``$HOME/.local/share/data/ownCloud/owncloud.cfg``. client configuration file, ``$HOME/.config/ownCloud/owncloud.cfg``.
Add this line to the [General] section:: Add this line to the [General] section::
skipUpdateCheck=true skipUpdateCheck=true

View File

@ -1,13 +1,13 @@
The ownCloud Client reads a configuration file. You can locate this configuration file as follows: The ownCloud Client reads a configuration file. You can locate this configuration file as follows:
On Linux distributions: On Linux distributions:
``$HOME/.local/share/data/ownCloud/owncloud.cfg`` ``$HOME/.config/ownCloud/owncloud.cfg``
On Microsoft Windows systems: On Microsoft Windows systems:
``%LOCALAPPDATA%\ownCloud\owncloud.cfg`` ``%APPDATA%\ownCloud\owncloud.cfg``
On MAC OS X systems: On MAC OS X systems:
``$HOME/Library/Application Support/ownCloud/owncloud.cfg`` ``$HOME/Library/Preferences/ownCloud/owncloud.cfg``
The configuration file contains settings using the Microsoft Windows .ini file The configuration file contains settings using the Microsoft Windows .ini file

View File

@ -119,10 +119,29 @@ Application::Application(int &argc, char **argv)
// TODO: Can't set this without breaking current config paths // TODO: Can't set this without breaking current config paths
// setOrganizationName(QLatin1String(APPLICATION_VENDOR)); // setOrganizationName(QLatin1String(APPLICATION_VENDOR));
setOrganizationDomain(QLatin1String(APPLICATION_REV_DOMAIN)); setOrganizationDomain(QLatin1String(APPLICATION_REV_DOMAIN));
setApplicationName(_theme->appNameGUI()); setApplicationName(_theme->appName());
setWindowIcon(_theme->applicationIcon()); setWindowIcon(_theme->applicationIcon());
setAttribute(Qt::AA_UseHighDpiPixmaps, true); setAttribute(Qt::AA_UseHighDpiPixmaps, true);
auto confDir = ConfigFile().configPath();
if (!QFileInfo(confDir).exists()) {
// Migrate from version <= 2.4
setApplicationName(_theme->appNameGUI());
QString oldDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
setApplicationName(_theme->appName());
if (QFileInfo(oldDir).isDir()) {
qCInfo(lcApplication) << "Migrating old config from" << oldDir << "to" << confDir;
if (!QFile::rename(oldDir, confDir)) {
qCWarning(lcApplication) << "Failed to move the old config file to its new location (" << oldDir << "to" << confDir << ")";
} else {
#ifndef Q_OS_WIN
// Create a symbolic link so a downgrade of the client would still find the config.
QFile::link(confDir, oldDir);
#endif
}
}
}
parseOptions(arguments()); parseOptions(arguments());
//no need to waste time; //no need to waste time;
if (_helpOnly || _versionOnly) if (_helpOnly || _versionOnly)

View File

@ -26,7 +26,6 @@
#ifndef TOKEN_AUTH_ONLY #ifndef TOKEN_AUTH_ONLY
#include <QWidget> #include <QWidget>
#include <QHeaderView> #include <QHeaderView>
#include <QDesktopServices>
#endif #endif
#include <QCoreApplication> #include <QCoreApplication>
@ -36,6 +35,7 @@
#include <QLoggingCategory> #include <QLoggingCategory>
#include <QSettings> #include <QSettings>
#include <QNetworkProxy> #include <QNetworkProxy>
#include <QStandardPaths>
#define DEFAULT_REMOTE_POLL_INTERVAL 30000 // default remote poll time in milliseconds #define DEFAULT_REMOTE_POLL_INTERVAL 30000 // default remote poll time in milliseconds
#define DEFAULT_FULL_LOCAL_DISCOVERY_INTERVAL (60 * 60 * 1000) // 1 hour #define DEFAULT_FULL_LOCAL_DISCOVERY_INTERVAL (60 * 60 * 1000) // 1 hour
@ -252,13 +252,11 @@ QVariant ConfigFile::getPolicySetting(const QString &setting, const QVariant &de
QString ConfigFile::configPath() const QString ConfigFile::configPath() const
{ {
#ifndef TOKEN_AUTH_ONLY
if (_confDir.isEmpty()) { if (_confDir.isEmpty()) {
// Qt 5's QStandardPaths::writableLocation gives us wrong results (without /data/), // On Unix, use the AppConfigLocation for the settings, that's configurable with the XDG_CONFIG_HOME env variable.
// so we'll have to use the deprecated version for now // On Windows, use AppDataLocation, that's where the roaming data is and where we should store the config file
_confDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); _confDir = QStandardPaths::writableLocation(Utility::isWindows() ? QStandardPaths::AppDataLocation : QStandardPaths::AppConfigLocation);
} }
#endif
QString dir = _confDir; QString dir = _confDir;
if (!dir.endsWith(QLatin1Char('/'))) if (!dir.endsWith(QLatin1Char('/')))
@ -266,12 +264,6 @@ QString ConfigFile::configPath() const
return dir; return dir;
} }
QString ConfigFile::configPathWithAppName() const
{
//HACK
return QFileInfo(configFile()).dir().absolutePath().append("/");
}
static const QLatin1String exclFile("sync-exclude.lst"); static const QLatin1String exclFile("sync-exclude.lst");
QString ConfigFile::excludeFile(Scope scope) const QString ConfigFile::excludeFile(Scope scope) const

View File

@ -43,7 +43,6 @@ public:
SystemScope }; SystemScope };
QString configPath() const; QString configPath() const;
QString configPathWithAppName() const;
QString configFile() const; QString configFile() const;
QString excludeFile(Scope scope) const; QString excludeFile(Scope scope) const;
static QString excludeFileFromSystem(); // doesn't access config dir static QString excludeFileFromSystem(); // doesn't access config dir