Android: Add Libraries: Disable library model while parse is in progress

Change-Id: I314e7db6178d6d6863b3f99a0bf1f0eec0956303
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This commit is contained in:
Daniel Teske
2014-03-11 18:05:17 +01:00
parent c577906823
commit 3d8000a926
4 changed files with 47 additions and 20 deletions

View File

@@ -40,9 +40,11 @@ AndroidExtraLibraryListModel::AndroidExtraLibraryListModel(QmakeProjectManager::
: QAbstractItemModel(parent)
, m_project(project)
{
reset();
QmakeProjectManager::QmakeProFileNode *node = m_project->rootQmakeProjectNode();
proFileUpdated(node, node->validParse(), node->parseInProgress());
connect(m_project, SIGNAL(proFilesEvaluated()), this, SLOT(reset()));
connect(m_project, SIGNAL(proFileUpdated(QmakeProjectManager::QmakeProFileNode*,bool,bool)),
this, SLOT(proFileUpdated(QmakeProjectManager::QmakeProFileNode*,bool,bool)));
}
QModelIndex AndroidExtraLibraryListModel::index(int row, int column, const QModelIndex &) const
@@ -75,15 +77,40 @@ QVariant AndroidExtraLibraryListModel::data(const QModelIndex &index, int role)
};
}
void AndroidExtraLibraryListModel::reset()
void AndroidExtraLibraryListModel::proFileUpdated(QmakeProjectManager::QmakeProFileNode *node, bool success, bool parseInProgress)
{
if (m_project->rootQmakeProjectNode()->projectType() != QmakeProjectManager::ApplicationTemplate)
QmakeProjectManager::QmakeProFileNode *root = m_project->rootQmakeProjectNode();
if (node != root)
return;
if (parseInProgress) {
emit enabledChanged(false);
return;
}
bool enabled;
beginResetModel();
QmakeProjectManager::QmakeProFileNode *node = m_project->rootQmakeProjectNode();
m_entries = node->variableValue(QmakeProjectManager::AndroidExtraLibs);
if (success && root->projectType() == QmakeProjectManager::ApplicationTemplate) {
m_entries = node->variableValue(QmakeProjectManager::AndroidExtraLibs);
enabled = true;
} else {
// parsing error or not a application template
m_entries.clear();
enabled = false;
}
endResetModel();
emit enabledChanged(enabled);
}
bool AndroidExtraLibraryListModel::isEnabled() const
{
QmakeProjectManager::QmakeProFileNode *root = m_project->rootQmakeProjectNode();
if (root->parseInProgress())
return false;
if (root->projectType() != QmakeProjectManager::ApplicationTemplate)
return false;
return true;
}
void AndroidExtraLibraryListModel::addEntries(const QStringList &list)