diff options
author | Daniel Teske <daniel.teske@digia.com> | 2014-03-11 18:05:17 +0100 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-03-19 16:38:17 +0100 |
commit | 3d8000a9264fb78e7e7db9f8b74d86ab2e512b7f (patch) | |
tree | 40619a1f8c612b2671d281f827407ff2ff437b99 | |
parent | c577906823f05c7c7f474ff3bdcf9e3e252c8760 (diff) | |
download | qt-creator-3d8000a9264fb78e7e7db9f8b74d86ab2e512b7f.tar.gz |
Android: Add Libraries: Disable library model while parse is in progress
Change-Id: I314e7db6178d6d6863b3f99a0bf1f0eec0956303
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
-rw-r--r-- | src/plugins/android/androiddeployqtwidget.cpp | 15 | ||||
-rw-r--r-- | src/plugins/android/androiddeployqtwidget.h | 1 | ||||
-rw-r--r-- | src/plugins/android/androidextralibrarylistmodel.cpp | 39 | ||||
-rw-r--r-- | src/plugins/android/androidextralibrarylistmodel.h | 12 |
4 files changed, 47 insertions, 20 deletions
diff --git a/src/plugins/android/androiddeployqtwidget.cpp b/src/plugins/android/androiddeployqtwidget.cpp index 0355bdbcb2..27f378b816 100644 --- a/src/plugins/android/androiddeployqtwidget.cpp +++ b/src/plugins/android/androiddeployqtwidget.cpp @@ -154,8 +154,10 @@ AndroidDeployQtWidget::AndroidDeployQtWidget(AndroidDeployQtStep *step) connect(m_ui->addAndroidExtraLibButton, SIGNAL(clicked()), this, SLOT(addAndroidExtraLib())); connect(m_ui->removeAndroidExtraLibButton, SIGNAL(clicked()), this, SLOT(removeAndroidExtraLib())); - connect(m_step->project(), SIGNAL(proFilesEvaluated()), this, SLOT(checkProjectTemplate())); - checkProjectTemplate(); + connect(m_extraLibraryListModel, SIGNAL(enabledChanged(bool)), + m_ui->additionalLibrariesGroupBox, SLOT(setEnabled(bool))); + + m_ui->additionalLibrariesGroupBox->setEnabled(m_extraLibraryListModel->isEnabled()); } AndroidDeployQtWidget::~AndroidDeployQtWidget() @@ -163,15 +165,6 @@ AndroidDeployQtWidget::~AndroidDeployQtWidget() delete m_ui; } -void AndroidDeployQtWidget::checkProjectTemplate() -{ - QmakeProjectManager::QmakeProject *project = static_cast<QmakeProjectManager::QmakeProject *>(m_step->project()); - if (project->rootQmakeProjectNode()->projectType() == QmakeProjectManager::ApplicationTemplate) - m_ui->additionalLibrariesGroupBox->setEnabled(true); - else - m_ui->additionalLibrariesGroupBox->setEnabled(false); -} - void AndroidDeployQtWidget::createManifestButton() { CreateAndroidManifestWizard wizard(m_step->target()); diff --git a/src/plugins/android/androiddeployqtwidget.h b/src/plugins/android/androiddeployqtwidget.h index f8b1edf66d..d44a79186a 100644 --- a/src/plugins/android/androiddeployqtwidget.h +++ b/src/plugins/android/androiddeployqtwidget.h @@ -75,7 +75,6 @@ private slots: void addAndroidExtraLib(); void removeAndroidExtraLib(); void checkEnableRemoveButton(); - void checkProjectTemplate(); private: virtual QString summaryText() const; diff --git a/src/plugins/android/androidextralibrarylistmodel.cpp b/src/plugins/android/androidextralibrarylistmodel.cpp index 01c24dfead..858b78adb3 100644 --- a/src/plugins/android/androidextralibrarylistmodel.cpp +++ b/src/plugins/android/androidextralibrarylistmodel.cpp @@ -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) diff --git a/src/plugins/android/androidextralibrarylistmodel.h b/src/plugins/android/androidextralibrarylistmodel.h index 3666a664e5..b575ce60cd 100644 --- a/src/plugins/android/androidextralibrarylistmodel.h +++ b/src/plugins/android/androidextralibrarylistmodel.h @@ -34,7 +34,10 @@ #include <QAbstractItemModel> #include <QStringList> -namespace QmakeProjectManager { class QmakeProject; } +namespace QmakeProjectManager { +class QmakeProject; +class QmakeProFileNode; +} namespace Android { namespace Internal { @@ -54,8 +57,13 @@ public: void removeEntries(QModelIndexList list); void addEntries(const QStringList &list); + bool isEnabled() const; + +signals: + void enabledChanged(bool); + private slots: - void reset(); + void proFileUpdated(QmakeProjectManager::QmakeProFileNode *node, bool success, bool parseInProgress); private: QmakeProjectManager::QmakeProject *m_project; |