summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2011-05-04 13:14:46 +0200
committerdt <qtc-committer@nokia.com>2011-05-12 12:23:06 +0200
commit8e171e0be0239c18843fc65784cb91120b252c8f (patch)
tree06900feae14b15b3897fff193cf36dbd44bad8b3 /src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
parent9ef4ea40f27befa4b5b553c3dfa94d979a34748c (diff)
downloadqt-creator-8e171e0be0239c18843fc65784cb91120b252c8f.tar.gz
Qt Version refactoring
Split up target specific code into subclasses. Also change Qt4BuildConfiguration to allow a null qtversion. Remove code that relied on always having a qt version. Also make it possible to remove all qt versions. Completly change the qt in path autodetection to be only a fall back if no configuration was found. Note: For now the old settings are not removed, as such 2.2 and master can coexist. Reviewed-By: hunger
Diffstat (limited to 'src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp')
-rw-r--r--src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp46
1 files changed, 27 insertions, 19 deletions
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 647e3bf2e0..6508b774a1 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -39,6 +39,8 @@
#include "qt4projectmanagerconstants.h"
#include "qt4projectmanager.h"
#include "qt4buildconfiguration.h"
+#include "qtversionfactory.h"
+#include "baseqtversion.h"
#include "ui_qt4projectconfigwidget.h"
#include <coreplugin/icore.h>
@@ -125,10 +127,11 @@ Qt4ProjectConfigWidget::~Qt4ProjectConfigWidget()
void Qt4ProjectConfigWidget::updateDetails()
{
- QtVersion *version = m_buildConfiguration->qtVersion();
+ BaseQtVersion *version = m_buildConfiguration->qtVersion();
QString versionString;
- versionString = version->displayName();
+ if (version)
+ versionString = version->displayName();
if (!version || !version->isValid()) {
// Not a valid qt version
@@ -157,10 +160,11 @@ void Qt4ProjectConfigWidget::environmentChanged()
void Qt4ProjectConfigWidget::updateShadowBuildUi()
{
- m_ui->shadowBuildCheckBox->setEnabled(m_buildConfiguration->qtVersion()->supportsShadowBuilds());
+ BaseQtVersion *version = m_buildConfiguration->qtVersion();
+ m_ui->shadowBuildCheckBox->setEnabled(version && version->supportsShadowBuilds());
bool isShadowbuilding = m_buildConfiguration->shadowBuild();
- m_ui->shadowBuildDirEdit->setEnabled(isShadowbuilding && m_buildConfiguration->qtVersion()->supportsShadowBuilds());
- m_browseButton->setEnabled(isShadowbuilding && m_buildConfiguration->qtVersion()->supportsShadowBuilds());
+ m_ui->shadowBuildDirEdit->setEnabled(isShadowbuilding && version && version->supportsShadowBuilds());
+ m_browseButton->setEnabled(isShadowbuilding && version && version->supportsShadowBuilds());
m_ui->shadowBuildDirEdit->setPath(m_buildConfiguration->shadowBuildDirectory());
}
@@ -218,7 +222,8 @@ void Qt4ProjectConfigWidget::init(ProjectExplorer::BuildConfiguration *bc)
bool shadowBuild = m_buildConfiguration->shadowBuild();
m_ui->shadowBuildCheckBox->setChecked(shadowBuild);
- m_ui->shadowBuildCheckBox->setEnabled(m_buildConfiguration->qtVersion()->supportsShadowBuilds());
+ m_ui->shadowBuildCheckBox->setEnabled(m_buildConfiguration->qtVersion()
+ && m_buildConfiguration->qtVersion()->supportsShadowBuilds());
updateShadowBuildUi();
updateImportLabel();
@@ -236,10 +241,11 @@ void Qt4ProjectConfigWidget::qtVersionChanged()
if (m_ignoreChange)
return;
- int versionId = m_buildConfiguration->qtVersion()->uniqueId();
+ int versionId = -1;
+ if (m_buildConfiguration->qtVersion())
+ versionId = m_buildConfiguration->qtVersion()->uniqueId();
int comboBoxIndex = m_ui->qtVersionComboBox->findData(QVariant(versionId), Qt::UserRole);
- if (comboBoxIndex > -1)
- m_ui->qtVersionComboBox->setCurrentIndex(comboBoxIndex);
+ m_ui->qtVersionComboBox->setCurrentIndex(comboBoxIndex);
updateShadowBuildUi();
updateImportLabel();
@@ -253,9 +259,9 @@ void Qt4ProjectConfigWidget::qtVersionsChanged()
QtVersionManager *vm = QtVersionManager::instance();
m_ui->qtVersionComboBox->clear();
- QtVersion * qtVersion = m_buildConfiguration->qtVersion();
+ BaseQtVersion *qtVersion = m_buildConfiguration->qtVersion();
- const QList<QtVersion *> validVersions(vm->versionsForTargetId(m_buildConfiguration->target()->id()));
+ QList<BaseQtVersion *> validVersions = vm->versionsForTargetId(m_buildConfiguration->target()->id());
if (!validVersions.isEmpty()) {
for (int i = 0; i < validVersions.size(); ++i) {
m_ui->qtVersionComboBox->addItem(validVersions.at(i)->displayName(),
@@ -265,7 +271,7 @@ void Qt4ProjectConfigWidget::qtVersionsChanged()
m_ui->qtVersionComboBox->setCurrentIndex(i);
}
}
- if (!qtVersion->isValid()) {
+ if (!qtVersion || !qtVersion->isValid()) {
m_ui->qtVersionComboBox->addItem(tr("Invalid Qt version"), -1);
m_ui->qtVersionComboBox->setCurrentIndex(m_ui->qtVersionComboBox->count() - 1);
}
@@ -340,7 +346,7 @@ void Qt4ProjectConfigWidget::updateImportLabel()
makefile.append(m_buildConfiguration->makefile());
QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(makefile);
- QtVersion *version = m_buildConfiguration->qtVersion();
+ BaseQtVersion *version = m_buildConfiguration->qtVersion();
// check that there's a makefile
if (!qmakePath.isEmpty()) {
// Is it from the same build?
@@ -353,10 +359,10 @@ void Qt4ProjectConfigWidget::updateImportLabel()
// and that the qmake path is different from the current version
// import enable
visible = true;
- QtVersion *newVersion = vm->qtVersionForQMakeBinary(qmakePath);
+ BaseQtVersion *newVersion = vm->qtVersionForQMakeBinary(qmakePath);
bool mustDelete(false);
if (!newVersion) {
- newVersion = new QtVersion(qmakePath);
+ newVersion = QtVersionFactory::createQtVersionFromQMakePath(qmakePath);
mustDelete = true;
}
targetMatches = newVersion->supportsTargetId(m_buildConfiguration->target()->id());
@@ -376,9 +382,11 @@ void Qt4ProjectConfigWidget::updateImportLabel()
QString buildDirectory = m_buildConfiguration->target()->project()->projectDirectory();;
if (m_buildConfiguration->shadowBuild())
buildDirectory = m_buildConfiguration->buildDirectory();
- QList<ProjectExplorer::Task> issues = m_buildConfiguration->qtVersion()->reportIssues(m_buildConfiguration->target()->project()->file()->fileName(),
- buildDirectory,
- true);
+ QList<ProjectExplorer::Task> issues;
+ if (m_buildConfiguration->qtVersion())
+ issues = m_buildConfiguration->qtVersion()->reportIssues(m_buildConfiguration->target()->project()->file()->fileName(),
+ buildDirectory,
+ true);
if (incompatibleBuild) {
m_ui->problemLabel->setVisible(true);
@@ -453,7 +461,7 @@ void Qt4ProjectConfigWidget::qtVersionSelected(const QString &)
m_ui->qtVersionComboBox->removeItem(m_ui->qtVersionComboBox->count() - 1);
QtVersionManager *vm = QtVersionManager::instance();
- QtVersion *newQtVersion = vm->version(newQtVersionId);
+ BaseQtVersion *newQtVersion = vm->version(newQtVersionId);
m_ignoreChange = true;
m_buildConfiguration->setQtVersion(newQtVersion);