ToolChainManager: Load tool chains in extensionsInitialized()

Change-Id: Iecbdad090c43fdabfb2d3ceac65fbbb2a72b33c2
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Tobias Hunger
2013-02-28 12:23:36 +01:00
parent f30b4db80d
commit aef18a4bca
3 changed files with 25 additions and 21 deletions

View File

@@ -80,13 +80,10 @@ public:
ToolChainManagerPrivate(ToolChainManager *parent);
~ToolChainManagerPrivate();
QList<ToolChain *> &toolChains();
ToolChainManager *q;
QMap<QString, Utils::FileName> m_abiToDebugger;
Utils::PersistentSettingsWriter *m_writer;
private:
QList<ToolChain *> m_toolChains;
};
@@ -101,13 +98,6 @@ ToolChainManagerPrivate::~ToolChainManagerPrivate()
delete m_writer;
}
QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
{
if (!m_writer)
q->restoreToolChains();
return m_toolChains;
}
} // namespace Internal
// --------------------------------------------------------------------------
@@ -139,7 +129,6 @@ ToolChainManager::ToolChainManager(QObject *parent) :
void ToolChainManager::restoreToolChains()
{
QTC_ASSERT(!d->m_writer, return);
QTC_CHECK(ProjectExplorerPlugin::instance()->pluginSpec()->state() == ExtensionSystem::PluginSpec::Running);
d->m_writer =
new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"));
@@ -209,6 +198,8 @@ void ToolChainManager::restoreToolChains()
// Store manual tool chains
foreach (ToolChain *tc, tcsToRegister)
registerToolChain(tc);
emit toolChainsLoaded();
}
ToolChainManager::~ToolChainManager()
@@ -223,7 +214,7 @@ void ToolChainManager::saveToolChains()
data.insert(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
int count = 0;
foreach (ToolChain *tc, d->toolChains()) {
foreach (ToolChain *tc, d->m_toolChains) {
if (tc->isValid()) {
QVariantMap tmp = tc->toMap();
if (tmp.isEmpty())
@@ -290,18 +281,19 @@ QList<ToolChain *> ToolChainManager::restoreToolChains(const Utils::FileName &fi
qPrintable(ToolChainFactory::idFromMap(tcMap)),
qPrintable(fileName.toUserOutput()));
}
return result;
}
QList<ToolChain *> ToolChainManager::toolChains() const
{
return d->toolChains();
return d->m_toolChains;
}
QList<ToolChain *> ToolChainManager::findToolChains(const Abi &abi) const
{
QList<ToolChain *> result;
foreach (ToolChain *tc, toolChains()) {
foreach (ToolChain *tc, d->m_toolChains) {
Abi targetAbi = tc->targetAbi();
if (targetAbi.isCompatibleWith(abi))
result.append(tc);
@@ -314,7 +306,7 @@ ToolChain *ToolChainManager::findToolChain(const QString &id) const
if (id.isEmpty())
return 0;
foreach (ToolChain *tc, d->toolChains()) {
foreach (ToolChain *tc, d->m_toolChains) {
if (tc->id() == id)
return tc;
}
@@ -326,32 +318,39 @@ Utils::FileName ToolChainManager::defaultDebugger(const Abi &abi) const
return d->m_abiToDebugger.value(abi.toString());
}
bool ToolChainManager::isLoaded() const
{
return d->m_writer;
}
void ToolChainManager::notifyAboutUpdate(ProjectExplorer::ToolChain *tc)
{
if (!tc || !toolChains().contains(tc))
if (!tc || !d->m_toolChains.contains(tc))
return;
emit toolChainUpdated(tc);
}
bool ToolChainManager::registerToolChain(ToolChain *tc)
{
if (!tc || d->toolChains().contains(tc))
QTC_ASSERT(d->m_writer, return false);
if (!tc || d->m_toolChains.contains(tc))
return true;
foreach (ToolChain *current, d->toolChains()) {
foreach (ToolChain *current, d->m_toolChains) {
if (*tc == *current && !tc->isAutoDetected())
return false;
}
d->toolChains().append(tc);
d->m_toolChains.append(tc);
emit toolChainAdded(tc);
return true;
}
void ToolChainManager::deregisterToolChain(ToolChain *tc)
{
if (!tc || !d->toolChains().contains(tc))
if (!tc || !d->m_toolChains.contains(tc))
return;
d->toolChains().removeOne(tc);
d->m_toolChains.removeOne(tc);
emit toolChainRemoved(tc);
delete tc;
}