forked from qt-creator/qt-creator
Delay autodetection of the tool chains to a point where it's needed.
Change-Id: Ic05b2ec842be1486203c3d9e6e0fc28f1fcf91b4 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -1108,8 +1108,6 @@ void ProjectExplorerPlugin::clearSession()
|
|||||||
|
|
||||||
void ProjectExplorerPlugin::extensionsInitialized()
|
void ProjectExplorerPlugin::extensionsInitialized()
|
||||||
{
|
{
|
||||||
d->m_toolChainManager->restoreToolChains();
|
|
||||||
|
|
||||||
d->m_proWindow->extensionsInitialized();
|
d->m_proWindow->extensionsInitialized();
|
||||||
d->m_fileFactories = ProjectFileFactory::createFactories(&d->m_projectFilterString);
|
d->m_fileFactories = ProjectFileFactory::createFactories(&d->m_projectFilterString);
|
||||||
foreach (ProjectFileFactory *pf, d->m_fileFactories) {
|
foreach (ProjectFileFactory *pf, d->m_fileFactories) {
|
||||||
|
@@ -76,10 +76,32 @@ namespace Internal {
|
|||||||
class ToolChainManagerPrivate
|
class ToolChainManagerPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QList<ToolChain *> m_toolChains;
|
ToolChainManagerPrivate(ToolChainManager *parent);
|
||||||
|
|
||||||
|
QList<ToolChain *> &toolChains();
|
||||||
|
|
||||||
|
ToolChainManager *q;
|
||||||
|
bool m_initialized;
|
||||||
QMap<QString, Utils::FileName> m_abiToDebugger;
|
QMap<QString, Utils::FileName> m_abiToDebugger;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<ToolChain *> m_toolChains;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ToolChainManagerPrivate::ToolChainManagerPrivate(ToolChainManager *parent)
|
||||||
|
: q(parent), m_initialized(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
|
||||||
|
{
|
||||||
|
if (!m_initialized) {
|
||||||
|
m_initialized = true;
|
||||||
|
q->restoreToolChains();
|
||||||
|
}
|
||||||
|
return m_toolChains;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@@ -94,7 +116,7 @@ ToolChainManager *ToolChainManager::instance()
|
|||||||
|
|
||||||
ToolChainManager::ToolChainManager(QObject *parent) :
|
ToolChainManager::ToolChainManager(QObject *parent) :
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
d(new Internal::ToolChainManagerPrivate)
|
d(new Internal::ToolChainManagerPrivate(this))
|
||||||
{
|
{
|
||||||
Q_ASSERT(!m_instance);
|
Q_ASSERT(!m_instance);
|
||||||
m_instance = this;
|
m_instance = this;
|
||||||
@@ -170,7 +192,7 @@ void ToolChainManager::restoreToolChains()
|
|||||||
ToolChainManager::~ToolChainManager()
|
ToolChainManager::~ToolChainManager()
|
||||||
{
|
{
|
||||||
// Deregister tool chains
|
// Deregister tool chains
|
||||||
QList<ToolChain *> copy = d->m_toolChains;
|
QList<ToolChain *> copy = d->toolChains();
|
||||||
foreach (ToolChain *tc, copy)
|
foreach (ToolChain *tc, copy)
|
||||||
deregisterToolChain(tc);
|
deregisterToolChain(tc);
|
||||||
|
|
||||||
@@ -184,7 +206,7 @@ void ToolChainManager::saveToolChains()
|
|||||||
writer.saveValue(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
writer.saveValue(QLatin1String(TOOLCHAIN_FILE_VERSION_KEY), 1);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (ToolChain *tc, d->m_toolChains) {
|
foreach (ToolChain *tc, d->toolChains()) {
|
||||||
if (tc->isValid()) {
|
if (tc->isValid()) {
|
||||||
QVariantMap tmp = tc->toMap();
|
QVariantMap tmp = tc->toMap();
|
||||||
if (tmp.isEmpty())
|
if (tmp.isEmpty())
|
||||||
@@ -257,13 +279,13 @@ QList<ToolChain *> ToolChainManager::restoreToolChains(const QString &fileName)
|
|||||||
|
|
||||||
QList<ToolChain *> ToolChainManager::toolChains() const
|
QList<ToolChain *> ToolChainManager::toolChains() const
|
||||||
{
|
{
|
||||||
return d->m_toolChains;
|
return d->toolChains();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ToolChain *> ToolChainManager::findToolChains(const Abi &abi) const
|
QList<ToolChain *> ToolChainManager::findToolChains(const Abi &abi) const
|
||||||
{
|
{
|
||||||
QList<ToolChain *> result;
|
QList<ToolChain *> result;
|
||||||
foreach (ToolChain *tc, d->m_toolChains) {
|
foreach (ToolChain *tc, toolChains()) {
|
||||||
Abi targetAbi = tc->targetAbi();
|
Abi targetAbi = tc->targetAbi();
|
||||||
if (targetAbi.isCompatibleWith(abi))
|
if (targetAbi.isCompatibleWith(abi))
|
||||||
result.append(tc);
|
result.append(tc);
|
||||||
@@ -276,7 +298,7 @@ ToolChain *ToolChainManager::findToolChain(const QString &id) const
|
|||||||
if (id.isEmpty())
|
if (id.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
foreach (ToolChain *tc, d->m_toolChains) {
|
foreach (ToolChain *tc, d->toolChains()) {
|
||||||
if (tc->id() == id || (!tc->legacyId().isEmpty() && tc->legacyId() == id))
|
if (tc->id() == id || (!tc->legacyId().isEmpty() && tc->legacyId() == id))
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
@@ -290,30 +312,30 @@ Utils::FileName ToolChainManager::defaultDebugger(const Abi &abi) const
|
|||||||
|
|
||||||
void ToolChainManager::notifyAboutUpdate(ProjectExplorer::ToolChain *tc)
|
void ToolChainManager::notifyAboutUpdate(ProjectExplorer::ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || !d->m_toolChains.contains(tc))
|
if (!tc || !toolChains().contains(tc))
|
||||||
return;
|
return;
|
||||||
emit toolChainUpdated(tc);
|
emit toolChainUpdated(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ToolChainManager::registerToolChain(ToolChain *tc)
|
bool ToolChainManager::registerToolChain(ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || d->m_toolChains.contains(tc))
|
if (!tc || d->toolChains().contains(tc))
|
||||||
return true;
|
return true;
|
||||||
foreach (ToolChain *current, d->m_toolChains) {
|
foreach (ToolChain *current, d->toolChains()) {
|
||||||
if (*tc == *current)
|
if (*tc == *current)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
d->m_toolChains.append(tc);
|
d->toolChains().append(tc);
|
||||||
emit toolChainAdded(tc);
|
emit toolChainAdded(tc);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolChainManager::deregisterToolChain(ToolChain *tc)
|
void ToolChainManager::deregisterToolChain(ToolChain *tc)
|
||||||
{
|
{
|
||||||
if (!tc || !d->m_toolChains.contains(tc))
|
if (!tc || !d->toolChains().contains(tc))
|
||||||
return;
|
return;
|
||||||
d->m_toolChains.removeOne(tc);
|
d->toolChains().removeOne(tc);
|
||||||
emit toolChainRemoved(tc);
|
emit toolChainRemoved(tc);
|
||||||
delete tc;
|
delete tc;
|
||||||
}
|
}
|
||||||
|
@@ -94,12 +94,12 @@ private:
|
|||||||
|
|
||||||
void notifyAboutUpdate(ProjectExplorer::ToolChain *);
|
void notifyAboutUpdate(ProjectExplorer::ToolChain *);
|
||||||
|
|
||||||
|
|
||||||
Internal::ToolChainManagerPrivate *const d;
|
Internal::ToolChainManagerPrivate *const d;
|
||||||
|
|
||||||
static ToolChainManager *m_instance;
|
static ToolChainManager *m_instance;
|
||||||
|
|
||||||
friend class ProjectExplorerPlugin;
|
friend class Internal::ToolChainManagerPrivate; // for the restoreToolChains methods
|
||||||
|
friend class ProjectExplorerPlugin; // for constructor
|
||||||
friend class ToolChain;
|
friend class ToolChain;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user