summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Teske <daniel.teske@digia.com>2014-03-11 18:05:17 +0100
committerDaniel Teske <daniel.teske@digia.com>2014-03-19 16:38:17 +0100
commit3d8000a9264fb78e7e7db9f8b74d86ab2e512b7f (patch)
tree40619a1f8c612b2671d281f827407ff2ff437b99
parentc577906823f05c7c7f474ff3bdcf9e3e252c8760 (diff)
downloadqt-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.cpp15
-rw-r--r--src/plugins/android/androiddeployqtwidget.h1
-rw-r--r--src/plugins/android/androidextralibrarylistmodel.cpp39
-rw-r--r--src/plugins/android/androidextralibrarylistmodel.h12
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;