From ff68be114e3db8bf1d2fa1fd0153862a25bf5e8b Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 16 Aug 2016 11:30:49 +0200 Subject: Fix documentation of the Windows parts of QSettings::setPath() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Explain in terms of CSIDL_ values and update the sample locations. Task-number: QTBUG-55065 Change-Id: I15ddf32555d43cffae66d98c6ac12d62a98d5e6d Reviewed-by: Maurice Kalinowski Reviewed-by: Leena Miettinen Reviewed-by: Topi Reiniƶ --- src/corelib/io/qsettings.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/corelib/io/qsettings.cpp') diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 64a7b9529b..9e0e6c2769 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -2270,16 +2270,20 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile, On Windows, the following files are used: \list 1 - \li \c{%APPDATA%\MySoft\Star Runner.ini} - \li \c{%APPDATA%\MySoft.ini} - \li \c{%COMMON_APPDATA%\MySoft\Star Runner.ini} - \li \c{%COMMON_APPDATA%\MySoft.ini} + \li \c{CSIDL_APPDATA\MySoft\Star Runner.ini} + \li \c{CSIDL_APPDATA\MySoft.ini} + \li \c{CSIDL_COMMON_APPDATA\MySoft\Star Runner.ini} + \li \c{CSIDL_COMMON_APPDATA\MySoft.ini} \endlist - The \c %APPDATA% path is usually \tt{C:\\Documents and - Settings\\\e{User Name}\\Application Data}; the \c - %COMMON_APPDATA% path is usually \tt{C:\\Documents and - Settings\\All Users\\Application Data}. + The identifiers prefixed by \c{CSIDL_} are special item ID lists to be passed + to the Win32 API function \c{SHGetSpecialFolderPath()} to obtain the + corresponding path. + + \c{CSIDL_APPDATA} usually points to \tt{C:\\Users\\\e{User Name}\\AppData\\Roaming}, + also shown by the environment variable \c{%APPDATA%}. + + \c{CSIDL_COMMON_APPDATA} usually points to \tt{C:\\ProgramData}. On BlackBerry only a single file is used (see \l{Platform Limitations}). If the file format is IniFormat, this is "Settings/MySoft/Star Runner.ini" @@ -3385,8 +3389,8 @@ void QSettings::setUserIniPath(const QString &dir) \table \header \li Platform \li Format \li Scope \li Path - \row \li{1,2} Windows \li{1,2} IniFormat \li UserScope \li \c %APPDATA% - \row \li SystemScope \li \c %COMMON_APPDATA% + \row \li{1,2} Windows \li{1,2} IniFormat \li UserScope \li \c CSIDL_APPDATA + \row \li SystemScope \li \c CSIDL_COMMON_APPDATA \row \li{1,2} Unix \li{1,2} NativeFormat, IniFormat \li UserScope \li \c $HOME/.config \row \li SystemScope \li \c /etc/xdg \row \li{1,2} Qt for Embedded Linux \li{1,2} NativeFormat, IniFormat \li UserScope \li \c $HOME/Settings -- cgit v1.2.3 From bc1b45ff9f952edd0676e5d9509f9adef746c977 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 29 Jun 2016 16:20:31 -0700 Subject: QSettings: Remove calls to deprecated API on macOS CFURLCreateDataAndPropertiesFromResource and CFURLWriteDataAndPropertiestoResource have been deprecated since 10.9. We replace them with simple QFile access. Code cleaning and included. Change-Id: I19c7ceac41c8c511962f1128bd8e210e3adb434c Reviewed-by: Timur Pocheptsov Reviewed-by: Jake Petroules --- src/corelib/io/qsettings.cpp | 92 ++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 50 deletions(-) (limited to 'src/corelib/io/qsettings.cpp') diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 8000dc5272..fcdc1e362b 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -1355,7 +1355,6 @@ void QConfFileSettingsPrivate::syncConfFile(int confFileNo) { QConfFile *confFile = confFiles[confFileNo].data(); bool readOnly = confFile->addedKeys.isEmpty() && confFile->removedKeys.isEmpty(); - bool ok; /* We can often optimize the read-only case, if the file on disk @@ -1415,31 +1414,26 @@ void QConfFileSettingsPrivate::syncConfFile(int confFileNo) because they don't exist) are treated as empty files. */ if (file.isReadable() && fileInfo.size() != 0) { + bool ok = false; #ifdef Q_OS_MAC if (format == QSettings::NativeFormat) { - ok = readPlistFile(confFile->name, &confFile->originalKeys); + QByteArray data = file.readAll(); + ok = readPlistFile(data, &confFile->originalKeys); } else #endif - { - if (format <= QSettings::IniFormat) { - QByteArray data = file.readAll(); - ok = readIniFile(data, &confFile->unparsedIniSections); - } else { - if (readFunc) { - QSettings::SettingsMap tempNewKeys; - ok = readFunc(file, tempNewKeys); - - if (ok) { - QSettings::SettingsMap::const_iterator i = tempNewKeys.constBegin(); - while (i != tempNewKeys.constEnd()) { - confFile->originalKeys.insert(QSettingsKey(i.key(), - caseSensitivity), - i.value()); - ++i; - } - } - } else { - ok = false; + if (format <= QSettings::IniFormat) { + QByteArray data = file.readAll(); + ok = readIniFile(data, &confFile->unparsedIniSections); + } else if (readFunc) { + QSettings::SettingsMap tempNewKeys; + ok = readFunc(file, tempNewKeys); + + if (ok) { + QSettings::SettingsMap::const_iterator i = tempNewKeys.constBegin(); + while (i != tempNewKeys.constEnd()) { + confFile->originalKeys.insert(QSettingsKey(i.key(), caseSensitivity), + i.value()); + ++i; } } } @@ -1457,44 +1451,42 @@ void QConfFileSettingsPrivate::syncConfFile(int confFileNo) so everything is under control. */ if (!readOnly) { + bool ok = false; ensureAllSectionsParsed(confFile); ParsedSettingsMap mergedKeys = confFile->mergedKeyMap(); -#ifdef Q_OS_MAC - if (format == QSettings::NativeFormat) { - ok = writePlistFile(confFile->name, mergedKeys); - } else -#endif - { #ifndef QT_BOOTSTRAPPED - QSaveFile sf(confFile->name); + QSaveFile sf(confFile->name); #else - QFile sf(confFile->name); + QFile sf(confFile->name); #endif - if (!sf.open(QIODevice::WriteOnly)) { - setStatus(QSettings::AccessError); - ok = false; - } else if (format <= QSettings::IniFormat) { - ok = writeIniFile(sf, mergedKeys); - } else { - if (writeFunc) { - QSettings::SettingsMap tempOriginalKeys; + if (!sf.open(QIODevice::WriteOnly)) { + setStatus(QSettings::AccessError); + return; + } - ParsedSettingsMap::const_iterator i = mergedKeys.constBegin(); - while (i != mergedKeys.constEnd()) { - tempOriginalKeys.insert(i.key(), i.value()); - ++i; - } - ok = writeFunc(sf, tempOriginalKeys); - } else { - ok = false; - } +#ifdef Q_OS_MAC + if (format == QSettings::NativeFormat) { + ok = writePlistFile(sf, mergedKeys); + } else +#endif + if (format <= QSettings::IniFormat) { + ok = writeIniFile(sf, mergedKeys); + } else if (writeFunc) { + QSettings::SettingsMap tempOriginalKeys; + + ParsedSettingsMap::const_iterator i = mergedKeys.constBegin(); + while (i != mergedKeys.constEnd()) { + tempOriginalKeys.insert(i.key(), i.value()); + ++i; } + ok = writeFunc(sf, tempOriginalKeys); + } + #ifndef QT_BOOTSTRAPPED - if (ok) - ok = sf.commit(); + if (ok) + ok = sf.commit(); #endif - } if (ok) { confFile->unparsedIniSections.clear(); -- cgit v1.2.3