OSDN Git Service

Fix targetsetuppage's shadowbuild dirs
authorTobias Hunger <tobias.hunger@nokia.com>
Tue, 8 Jun 2010 12:19:05 +0000 (14:19 +0200)
committercon <qtc-committer@nokia.com>
Thu, 10 Jun 2010 09:00:00 +0000 (11:00 +0200)
 * Fix displayed shadow build location
 * Fix shadow build location used by newly set up shadow builds

Task-number: QTCREATORBUG-1599
Reviewed-by: dt
(cherry picked from commit 1d8e176067c48705cdfd746e2c1fb23539f58a8e)

src/plugins/projectexplorer/project.cpp
src/plugins/projectexplorer/project.h
src/plugins/qt4projectmanager/projectloadwizard.cpp
src/plugins/qt4projectmanager/qt4project.cpp
src/plugins/qt4projectmanager/qt4project.h
src/plugins/qt4projectmanager/qt4target.cpp
src/plugins/qt4projectmanager/qt4target.h
src/plugins/qt4projectmanager/wizards/qtwizard.cpp
src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
src/plugins/qt4projectmanager/wizards/targetsetuppage.h

index fb6793b..bdea6c9 100644 (file)
@@ -229,10 +229,16 @@ QVariantMap Project::toMap() const
 
 QString Project::projectDirectory() const
 {
-    QFileInfo info(file()->fileName());
+    return projectDirectory(file()->fileName());
+}
+
+QString Project::projectDirectory(const QString &proFile)
+{
+    QFileInfo info(proFile);
     return info.absoluteDir().path();
 }
 
+
 bool Project::fromMap(const QVariantMap &map)
 {
     if (map.contains(QLatin1String(EDITOR_SETTINGS_KEY))) {
index 79f4f8b..01b4569 100644 (file)
@@ -129,6 +129,7 @@ public:
 
     // The directory that holds the project file. This includes the absolute path.
     QString projectDirectory() const;
+    static QString projectDirectory(const QString &proFile);
 
 signals:
     void fileListChanged();
index 89dae97..334dce5 100644 (file)
@@ -99,7 +99,7 @@ void ProjectLoadWizard::setupTargetPage()
                                                                m_project->file()->fileName());
     importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory(),
                                                                              m_project->file()->fileName()));
-    importVersions.append(TargetSetupPage::importInfosForKnownQtVersions(m_project));
+    importVersions.append(TargetSetupPage::importInfosForKnownQtVersions());
 
     m_targetSetupPage = new TargetSetupPage(this);
     m_targetSetupPage->setProFilePath(m_project->file()->fileName());
index e72aca8..006352f 100644 (file)
@@ -780,8 +780,13 @@ bool Qt4Project::wasEvaluateCanceled()
 
 QString Qt4Project::defaultTopLevelBuildDirectory() const
 {
-    QFileInfo info(file()->fileName());
-    return QDir(projectDirectory() + QLatin1String("/../") + info.baseName() + QLatin1String("-build")).absolutePath();
+    return defaultTopLevelBuildDirectory(file()->fileName());
+}
+
+QString Qt4Project::defaultTopLevelBuildDirectory(const QString &profilePath)
+{
+    QFileInfo info(profilePath);
+    return QDir(projectDirectory(profilePath) + QLatin1String("/../") + info.baseName() + QLatin1String("-build")).absolutePath();
 }
 
 void Qt4Project::asyncUpdate()
index 84aad0e..a9629a5 100644 (file)
@@ -160,6 +160,7 @@ public:
     bool wasEvaluateCanceled();
 
     QString defaultTopLevelBuildDirectory() const;
+    static QString defaultTopLevelBuildDirectory(const QString &profilePath);
 
 signals:
     /// emitted after parse
index 784897f..59b8c1b 100644 (file)
@@ -366,23 +366,28 @@ QString Qt4Target::defaultBuildDirectory() const
         )
         return project()->projectDirectory();
 
+    return defaultShadowBuildDirectory(qt4Project()->defaultTopLevelBuildDirectory(), id());
+}
+
+QString Qt4Target::defaultShadowBuildDirectory(const QString &projectLocation, const QString &id)
+{
     QString shortName = QLatin1String("unknown");
-    if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID))
+    if (id == QLatin1String(Constants::DESKTOP_TARGET_ID))
         shortName = QLatin1String("desktop");
-    else if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
+    else if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         shortName = QLatin1String("symbian_emulator");
-    else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
+    else if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         shortName = QLatin1String("symbian");
-    else if (id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
+    else if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         shortName = QLatin1String("maemo");
-    else if (id() == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID))
+    else if (id == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID))
         shortName = QLatin1String("simulator");
 
     // currently we can't have the build directory to be deeper then the source directory
     // since that is broken in qmake
     // Once qmake is fixed we can change that to have a top directory and
     // subdirectories per build. (Replacing "QChar('-')" with "QChar('/') )
-    return qt4Project()->defaultTopLevelBuildDirectory() + QChar('-') + shortName;
+    return projectLocation + QChar('-') + shortName;
 }
 
 bool Qt4Target::fromMap(const QVariantMap &map)
index 13b9d2c..9b7f7f0 100644 (file)
@@ -81,6 +81,7 @@ public:
     ProjectExplorer::ToolChain::ToolChainType preferredToolChainType(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const;
 
     QString defaultBuildDirectory() const;
+    static QString defaultShadowBuildDirectory(const QString &projectLocation, const QString &id);
 
 signals:
     void buildDirectoryInitialized();
index a6211f9..65954e9 100644 (file)
@@ -236,7 +236,7 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m
     connect(this, SIGNAL(projectLocationChanged(QString)),
             m_targetSetupPage, SLOT(setProFilePath(QString)));
 
-    QList<TargetSetupPage::ImportInfo> infos = TargetSetupPage::importInfosForKnownQtVersions(0);
+    QList<TargetSetupPage::ImportInfo> infos = TargetSetupPage::importInfosForKnownQtVersions();
     if (!targets.isEmpty())
         infos = TargetSetupPage::filterImportInfos(targets, infos);
     m_targetSetupPage->setImportDirectoryBrowsingEnabled(false);
index edb1a8a..111dea1 100644 (file)
@@ -168,7 +168,15 @@ void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos)
             versionItem->setToolTip(1, status);
 
             // Column 2 (directory):
-            const QString dir = QDir::toNativeSeparators(i.directory);
+            QString dir;
+            if (i.directory.isEmpty()) {
+                if (i.version->supportsShadowBuilds())
+                    dir = QDir::toNativeSeparators(Qt4Target::defaultShadowBuildDirectory(Qt4Project::defaultTopLevelBuildDirectory(m_proFilePath), t));
+                else
+                    dir = QDir::toNativeSeparators(Qt4Project::projectDirectory(m_proFilePath));
+            } else {
+                dir = QDir::toNativeSeparators(i.directory);
+            }
             versionItem->setText(2, dir);
             versionItem->setToolTip(2, dir);
         }
@@ -308,8 +316,7 @@ void TargetSetupPage::setProFilePath(const QString &path)
     setImportInfos(tmp);
 }
 
-QList<TargetSetupPage::ImportInfo>
-TargetSetupPage::importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project)
+QList<TargetSetupPage::ImportInfo> TargetSetupPage::importInfosForKnownQtVersions()
 {
     QList<ImportInfo> results;
     QtVersionManager * vm = QtVersionManager::instance();
@@ -319,12 +326,6 @@ TargetSetupPage::importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *pr
         validVersions.append(vm->versions().at(0)); // there is always one!
     foreach (QtVersion *v, validVersions) {
         ImportInfo info;
-        if (project) {
-            if (v->supportsShadowBuilds())
-                info.directory = project->defaultTopLevelBuildDirectory();
-            else
-                info.directory = project->projectDirectory();
-        }
         info.isExistingBuild = false;
         info.isTemporary = false;
         info.version = v;
index a60c386..27985d7 100644 (file)
@@ -99,7 +99,7 @@ public:
     void setShowLocationInformation(bool location);
     void setPreferMobile(bool mobile);
 
-    static QList<ImportInfo> importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project);
+    static QList<ImportInfo> importInfosForKnownQtVersions();
     static QList<ImportInfo> filterImportInfos(const QSet<QString> &validTargets,
                                                const QList<ImportInfo> &infos);