Do not construct settings/resource paths from QSettings object

These paths are controlled by ICore.

Add ICore::installerResourcePath() to replace constructions with
settings(SystemScope)
Replace constructions with settings()->fileName() by usage of
ICore::userResourcePath().

Change-Id: I5a9fa9d09f2563c39dc5d11a4586da825c62f9ac
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Eike Ziller
2018-01-10 17:29:27 +01:00
parent f3d7208aa9
commit f42ea09b74
11 changed files with 35 additions and 52 deletions

View File

@@ -127,8 +127,7 @@ namespace {
static QString sdkSettingsFileName() static QString sdkSettingsFileName()
{ {
return QFileInfo(Core::ICore::settings(QSettings::SystemScope)->fileName()).absolutePath() return Core::ICore::installerResourcePath() + "/android.xml";
+ QLatin1String("/qtcreator/android.xml");
} }
static bool is32BitUserSpace() static bool is32BitUserSpace()

View File

@@ -47,19 +47,13 @@ namespace Internal {
const char dataKeyC[] = "GdbServerProvider."; const char dataKeyC[] = "GdbServerProvider.";
const char countKeyC[] = "GdbServerProvider.Count"; const char countKeyC[] = "GdbServerProvider.Count";
const char fileVersionKeyC[] = "Version"; const char fileVersionKeyC[] = "Version";
const char fileNameKeyC[] = "/qtcreator/gdbserverproviders.xml"; const char fileNameKeyC[] = "/gdbserverproviders.xml";
static Utils::FileName settingsFileName(const QString &path)
{
const QFileInfo settingsLocation(Core::ICore::settings()->fileName());
return Utils::FileName::fromString(settingsLocation.absolutePath() + path);
}
static GdbServerProviderManager *m_instance = 0; static GdbServerProviderManager *m_instance = 0;
GdbServerProviderManager::GdbServerProviderManager(QObject *parent) GdbServerProviderManager::GdbServerProviderManager(QObject *parent)
: QObject(parent) : QObject(parent)
, m_configFile(settingsFileName(QLatin1String(fileNameKeyC))) , m_configFile(Utils::FileName::fromString(Core::ICore::userResourcePath() + fileNameKeyC))
, m_factories({new DefaultGdbServerProviderFactory, , m_factories({new DefaultGdbServerProviderFactory,
new OpenOcdGdbServerProviderFactory, new OpenOcdGdbServerProviderFactory,
new StLinkUtilGdbServerProviderFactory}) new StLinkUtilGdbServerProviderFactory})

View File

@@ -46,7 +46,7 @@ const char CMAKETOOL_COUNT_KEY[] = "CMakeTools.Count";
const char CMAKETOOL_DEFAULT_KEY[] = "CMakeTools.Default"; const char CMAKETOOL_DEFAULT_KEY[] = "CMakeTools.Default";
const char CMAKETOOL_DATA_KEY[] = "CMakeTools."; const char CMAKETOOL_DATA_KEY[] = "CMakeTools.";
const char CMAKETOOL_FILE_VERSION_KEY[] = "Version"; const char CMAKETOOL_FILE_VERSION_KEY[] = "Version";
const char CMAKETOOL_FILENAME[] = "/qtcreator/cmaketools.xml"; const char CMAKETOOL_FILENAME[] = "/cmaketools.xml";
class CMakeToolManagerPrivate class CMakeToolManagerPrivate
{ {
@@ -71,8 +71,7 @@ static void addCMakeTool(CMakeTool *item)
static FileName userSettingsFileName() static FileName userSettingsFileName()
{ {
QFileInfo settingsLocation(ICore::settings()->fileName()); return FileName::fromString(ICore::userResourcePath() + CMAKETOOL_FILENAME);
return FileName::fromString(settingsLocation.absolutePath() + QLatin1String(CMAKETOOL_FILENAME));
} }
static QList<CMakeTool *> readCMakeTools(const FileName &fileName, Core::Id *defaultId, bool fromSDK) static QList<CMakeTool *> readCMakeTools(const FileName &fileName, Core::Id *defaultId, bool fromSDK)
@@ -325,9 +324,8 @@ void CMakeToolManager::restoreCMakeTools()
{ {
Core::Id defaultId; Core::Id defaultId;
QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName()); FileName sdkSettingsFile = FileName::fromString(ICore::installerResourcePath()
FileName sdkSettingsFile = FileName::fromString(systemSettingsFile.absolutePath() + CMAKETOOL_FILENAME);
+ QLatin1String(CMAKETOOL_FILENAME));
QList<CMakeTool *> toolsToRegister = readCMakeTools(sdkSettingsFile, &defaultId, true); QList<CMakeTool *> toolsToRegister = readCMakeTools(sdkSettingsFile, &defaultId, true);

View File

@@ -421,6 +421,12 @@ QString ICore::userResourcePath()
return urp; return urp;
} }
QString ICore::installerResourcePath()
{
return QFileInfo(settings(QSettings::SystemScope)->fileName()).path() + '/'
+ Constants::IDE_ID;
}
QString ICore::documentationPath() QString ICore::documentationPath()
{ {
return QDir::cleanPath(QCoreApplication::applicationDirPath() + '/' + RELATIVE_DOC_PATH); return QDir::cleanPath(QCoreApplication::applicationDirPath() + '/' + RELATIVE_DOC_PATH);

View File

@@ -94,6 +94,7 @@ public:
static QString resourcePath(); static QString resourcePath();
static QString userResourcePath(); static QString userResourcePath();
static QString installerResourcePath();
static QString documentationPath(); static QString documentationPath();
static QString libexecPath(); static QString libexecPath();

View File

@@ -71,9 +71,9 @@ namespace Internal {
const char DEBUGGER_COUNT_KEY[] = "DebuggerItem.Count"; const char DEBUGGER_COUNT_KEY[] = "DebuggerItem.Count";
const char DEBUGGER_DATA_KEY[] = "DebuggerItem."; const char DEBUGGER_DATA_KEY[] = "DebuggerItem.";
const char DEBUGGER_LEGACY_FILENAME[] = "/qtcreator/profiles.xml"; const char DEBUGGER_LEGACY_FILENAME[] = "/profiles.xml";
const char DEBUGGER_FILE_VERSION_KEY[] = "Version"; const char DEBUGGER_FILE_VERSION_KEY[] = "Version";
const char DEBUGGER_FILENAME[] = "/qtcreator/debuggers.xml"; const char DEBUGGER_FILENAME[] = "/debuggers.xml";
const char debuggingToolsWikiLinkC[] = "http://wiki.qt.io/Qt_Creator_Windows_Debugging"; const char debuggingToolsWikiLinkC[] = "http://wiki.qt.io/Qt_Creator_Windows_Debugging";
class DebuggerItemModel; class DebuggerItemModel;
@@ -821,8 +821,7 @@ void DebuggerItemManagerPrivate::readLegacyDebuggers(const FileName &file)
static FileName userSettingsFileName() static FileName userSettingsFileName()
{ {
QFileInfo settingsLocation(ICore::settings()->fileName()); return FileName::fromString(ICore::userResourcePath() + DEBUGGER_FILENAME);
return FileName::fromString(settingsLocation.absolutePath() + QLatin1String(DEBUGGER_FILENAME));
} }
DebuggerItemManagerPrivate::DebuggerItemManagerPrivate() DebuggerItemManagerPrivate::DebuggerItemManagerPrivate()
@@ -918,8 +917,7 @@ void DebuggerItemManagerPrivate::readDebuggers(const FileName &fileName, bool is
void DebuggerItemManagerPrivate::restoreDebuggers() void DebuggerItemManagerPrivate::restoreDebuggers()
{ {
// Read debuggers from SDK // Read debuggers from SDK
QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName()); readDebuggers(FileName::fromString(ICore::installerResourcePath() + DEBUGGER_FILENAME), true);
readDebuggers(FileName::fromString(systemSettingsFile.absolutePath() + DEBUGGER_FILENAME), true);
// Read all debuggers from user file. // Read all debuggers from user file.
readDebuggers(userSettingsFileName(), false); readDebuggers(userSettingsFileName(), false);
@@ -929,10 +927,8 @@ void DebuggerItemManagerPrivate::restoreDebuggers()
autoDetectGdbOrLldbDebuggers(); autoDetectGdbOrLldbDebuggers();
// Add debuggers from pre-3.x profiles.xml // Add debuggers from pre-3.x profiles.xml
QFileInfo systemLocation(ICore::settings(QSettings::SystemScope)->fileName()); readLegacyDebuggers(FileName::fromString(ICore::installerResourcePath() + DEBUGGER_LEGACY_FILENAME));
readLegacyDebuggers(FileName::fromString(systemLocation.absolutePath() + QLatin1String(DEBUGGER_LEGACY_FILENAME))); readLegacyDebuggers(FileName::fromString(ICore::userResourcePath() + DEBUGGER_LEGACY_FILENAME));
QFileInfo userLocation(ICore::settings()->fileName());
readLegacyDebuggers(FileName::fromString(userLocation.absolutePath() + QLatin1String(DEBUGGER_LEGACY_FILENAME)));
} }
void DebuggerItemManagerPrivate::saveDebuggers() void DebuggerItemManagerPrivate::saveDebuggers()

View File

@@ -150,7 +150,7 @@ void DeviceManager::load()
// read devices file from global settings path // read devices file from global settings path
QHash<Core::Id, Core::Id> defaultDevices; QHash<Core::Id, Core::Id> defaultDevices;
QList<IDevice::Ptr> sdkDevices; QList<IDevice::Ptr> sdkDevices;
if (reader.load(systemSettingsFilePath(QLatin1String("/qtcreator/devices.xml")))) if (reader.load(systemSettingsFilePath(QLatin1String("/devices.xml"))))
sdkDevices = fromMap(reader.restoreValues().value(DeviceManagerKey).toMap(), &defaultDevices); sdkDevices = fromMap(reader.restoreValues().value(DeviceManagerKey).toMap(), &defaultDevices);
// read devices file from user settings path // read devices file from user settings path
QList<IDevice::Ptr> userDevices; QList<IDevice::Ptr> userDevices;
@@ -230,9 +230,8 @@ Utils::FileName DeviceManager::settingsFilePath(const QString &extension)
Utils::FileName DeviceManager::systemSettingsFilePath(const QString &deviceFileRelativePath) Utils::FileName DeviceManager::systemSettingsFilePath(const QString &deviceFileRelativePath)
{ {
return Utils::FileName::fromString( return Utils::FileName::fromString(Core::ICore::installerResourcePath()
QFileInfo(Core::ICore::settings(QSettings::SystemScope)->fileName()).absolutePath() + deviceFileRelativePath);
+ deviceFileRelativePath);
} }
void DeviceManager::addDevice(const IDevice::ConstPtr &_device) void DeviceManager::addDevice(const IDevice::ConstPtr &_device)

View File

@@ -53,12 +53,11 @@ const char KIT_DATA_KEY[] = "Profile.";
const char KIT_COUNT_KEY[] = "Profile.Count"; const char KIT_COUNT_KEY[] = "Profile.Count";
const char KIT_FILE_VERSION_KEY[] = "Version"; const char KIT_FILE_VERSION_KEY[] = "Version";
const char KIT_DEFAULT_KEY[] = "Profile.Default"; const char KIT_DEFAULT_KEY[] = "Profile.Default";
const char KIT_FILENAME[] = "/qtcreator/profiles.xml"; const char KIT_FILENAME[] = "/profiles.xml";
static FileName settingsFileName() static FileName settingsFileName()
{ {
QFileInfo settingsLocation(ICore::settings()->fileName()); return FileName::fromString(ICore::resourcePath() + KIT_FILENAME);
return FileName::fromString(settingsLocation.absolutePath() + QLatin1String(KIT_FILENAME));
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@@ -131,8 +130,7 @@ void KitManager::restoreKits()
QList<Kit *> sdkKits; QList<Kit *> sdkKits;
// read all kits from SDK // read all kits from SDK
QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName()); QFileInfo kitFile(ICore::installerResourcePath() + KIT_FILENAME);
QFileInfo kitFile(systemSettingsFile.absolutePath() + QLatin1String(KIT_FILENAME));
if (kitFile.exists()) { if (kitFile.exists()) {
KitList system = restoreKits(FileName(kitFile)); KitList system = restoreKits(FileName(kitFile));
// make sure we mark these as autodetected and run additional setup logic // make sure we mark these as autodetected and run additional setup logic

View File

@@ -44,14 +44,13 @@
static const char TOOLCHAIN_DATA_KEY[] = "ToolChain."; static const char TOOLCHAIN_DATA_KEY[] = "ToolChain.";
static const char TOOLCHAIN_COUNT_KEY[] = "ToolChain.Count"; static const char TOOLCHAIN_COUNT_KEY[] = "ToolChain.Count";
static const char TOOLCHAIN_FILE_VERSION_KEY[] = "Version"; static const char TOOLCHAIN_FILE_VERSION_KEY[] = "Version";
static const char TOOLCHAIN_FILENAME[] = "/qtcreator/toolchains.xml"; static const char TOOLCHAIN_FILENAME[] = "/toolchains.xml";
using namespace Utils; using namespace Utils;
static FileName settingsFileName(const QString &path) static FileName settingsFileName(const QString &path)
{ {
QFileInfo settingsLocation(Core::ICore::settings()->fileName()); return FileName::fromString(Core::ICore::resourcePath() + path);
return FileName::fromString(settingsLocation.absolutePath() + path);
} }
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -304,9 +303,8 @@ void ToolChainManager::restoreToolChains()
QList<ToolChain *> ToolChainManager::readSystemFileToolChains() QList<ToolChain *> ToolChainManager::readSystemFileToolChains()
{ {
QFileInfo systemSettingsFile(Core::ICore::settings(QSettings::SystemScope)->fileName()); QList<ToolChain *> systemTcs = restoreFromFile(
QList<ToolChain *> systemTcs FileName::fromString(Core::ICore::installerResourcePath() + TOOLCHAIN_FILENAME));
= restoreFromFile(FileName::fromString(systemSettingsFile.absolutePath() + QLatin1String(TOOLCHAIN_FILENAME)));
foreach (ToolChain *tc, systemTcs) foreach (ToolChain *tc, systemTcs)
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(ToolChain::AutoDetection);

View File

@@ -1571,8 +1571,7 @@ static QString maddeRoot(const QString &qmakePath)
void UserFileVersion11Upgrader::parseQtversionFile() void UserFileVersion11Upgrader::parseQtversionFile()
{ {
PersistentSettingsReader reader; PersistentSettingsReader reader;
QFileInfo settingsLocation = QFileInfo(Core::ICore::settings()->fileName()); reader.load(FileName::fromString(Core::ICore::userResourcePath() + "/../qtversion.xml"));
reader.load(FileName::fromString(settingsLocation.absolutePath() + "/qtversion.xml"));
QVariantMap data = reader.restoreValues(); QVariantMap data = reader.restoreValues();
int count = data.value("QtVersion.Count", 0).toInt(); int count = data.value("QtVersion.Count", 0).toInt();
@@ -1610,8 +1609,7 @@ void UserFileVersion11Upgrader::parseQtversionFile()
void UserFileVersion11Upgrader::parseToolChainFile() void UserFileVersion11Upgrader::parseToolChainFile()
{ {
PersistentSettingsReader reader; PersistentSettingsReader reader;
QFileInfo settingsLocation(Core::ICore::settings()->fileName()); reader.load(FileName::fromString(Core::ICore::userResourcePath() + "/../toolChains.xml"));
reader.load(FileName::fromString(settingsLocation.absolutePath() + "/toolChains.xml"));
QVariantMap data = reader.restoreValues(); QVariantMap data = reader.restoreValues();
int count = data.value("ToolChain.Count", 0).toInt(); int count = data.value("ToolChain.Count", 0).toInt();
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {

View File

@@ -63,7 +63,7 @@ using namespace Internal;
const char QTVERSION_DATA_KEY[] = "QtVersion."; const char QTVERSION_DATA_KEY[] = "QtVersion.";
const char QTVERSION_TYPE_KEY[] = "QtVersion.Type"; const char QTVERSION_TYPE_KEY[] = "QtVersion.Type";
const char QTVERSION_FILE_VERSION_KEY[] = "Version"; const char QTVERSION_FILE_VERSION_KEY[] = "Version";
const char QTVERSION_FILENAME[] = "/qtcreator/qtversion.xml"; const char QTVERSION_FILENAME[] = "/qtversion.xml";
static QMap<int, BaseQtVersion *> m_versions; static QMap<int, BaseQtVersion *> m_versions;
static int m_idcount = 0; static int m_idcount = 0;
@@ -77,16 +77,12 @@ enum { debug = 0 };
static FileName globalSettingsFileName() static FileName globalSettingsFileName()
{ {
QSettings *globalSettings = ExtensionSystem::PluginManager::globalSettings(); return FileName::fromString(Core::ICore::installerResourcePath() + QTVERSION_FILENAME);
return FileName::fromString(QFileInfo(globalSettings->fileName()).absolutePath()
+ QLatin1String(QTVERSION_FILENAME));
} }
static FileName settingsFileName(const QString &path) static FileName settingsFileName(const QString &path)
{ {
QSettings *settings = ExtensionSystem::PluginManager::settings(); return FileName::fromString(Core::ICore::resourcePath() + path);
QFileInfo settingsLocation(settings->fileName());
return FileName::fromString(settingsLocation.absolutePath() + path);
} }