From 9b30763e9d20ca376bc0d457880288c7dfa5a0d3 Mon Sep 17 00:00:00 2001
From: ck <qt-info@nokia.com>
Date: Tue, 13 Jul 2010 17:16:23 +0200
Subject: [PATCH] Maemo: Factor out redundant code.

---
 .../qt-maemo/maemodeploystep.cpp              | 14 +++------
 .../qt-maemo/maemoglobal.cpp                  |  2 ++
 .../qt4projectmanager/qt-maemo/maemoglobal.h  | 13 +++++++++
 .../qt-maemo/maemorunconfiguration.cpp        | 29 ++++++-------------
 4 files changed, 28 insertions(+), 30 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
index eb13bb89333..889076d828a 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
@@ -149,16 +149,10 @@ void MaemoDeployStep::getDeployTimesFromMap(const QVariantMap &map)
 
 const MaemoPackageCreationStep *MaemoDeployStep::packagingStep() const
 {
-    const QList<ProjectExplorer::BuildStep *> &buildSteps
-        = buildConfiguration()->steps(ProjectExplorer::BuildStep::Deploy);
-    for (int i = buildSteps.count() - 1; i >= 0; --i) {
-        const MaemoPackageCreationStep * const pStep
-                = qobject_cast<MaemoPackageCreationStep *>(buildSteps.at(i));
-        if (pStep)
-            return pStep;
-    }
-    Q_ASSERT(!"Impossible: Maemo run configuration without packaging step.");
-    return 0;
+    const MaemoPackageCreationStep * const step
+        = MaemoGlobal::buildStep<MaemoPackageCreationStep>(buildConfiguration());
+    Q_ASSERT(step && "Impossible: Maemo build configuration without packaging step.");
+    return step;
 }
 
 void MaemoDeployStep::raiseError(const QString &errorString)
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp
index 3a6f7853511..9a797fd7ad9 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp
@@ -29,6 +29,8 @@
 
 #include "maemoglobal.h"
 
+#include <QtCore/QString>
+
 namespace Qt4ProjectManager {
 namespace Internal {
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
index 3d23e6eef18..7a8b2ff8df9 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h
@@ -32,6 +32,8 @@
 
 #include <projectexplorer/buildconfiguration.h>
 
+#include <QtCore/QList>
+
 QT_BEGIN_NAMESPACE
 class QString;
 QT_END_NAMESPACE
@@ -44,6 +46,17 @@ class MaemoGlobal
 public:
     static QString homeDirOnDevice(const QString &uname);
     static QString remoteSudo();
+
+    template<class T> static T *buildStep(const ProjectExplorer::BuildConfiguration *bc)
+    {
+        const QList<ProjectExplorer::BuildStep *> &buildSteps
+                = bc->steps(ProjectExplorer::BuildStep::Deploy);
+        for (int i = buildSteps.count() - 1; i >= 0; --i) {
+            if (T * const step = qobject_cast<T *>(buildSteps.at(i)))
+                return step;
+        }
+        return 0;
+    }
 };
 
 } // namespace Internal
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
index 1ab2ded58e7..3997dd9a9e6 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
@@ -30,6 +30,7 @@
 #include "maemorunconfiguration.h"
 
 #include "maemodeploystep.h"
+#include "maemoglobal.h"
 #include "maemopackagecreationstep.h"
 #include "maemorunconfigurationwidget.h"
 #include "maemotoolchain.h"
@@ -171,30 +172,18 @@ const QString MaemoRunConfiguration::gdbCmd() const
 
 const MaemoPackageCreationStep *MaemoRunConfiguration::packageStep() const
 {
-    const QList<ProjectExplorer::BuildStep *> &buildSteps
-        = activeQt4BuildConfiguration()->steps(ProjectExplorer::BuildStep::Deploy);
-    for (int i = buildSteps.count() - 1; i >= 0; --i) {
-        const MaemoPackageCreationStep * const pStep
-            = qobject_cast<MaemoPackageCreationStep *>(buildSteps.at(i));
-        if (pStep)
-            return pStep;
-    }
-    Q_ASSERT(!"Impossible: Maemo run configuration without packaging step.");
-    return 0;
+    const MaemoPackageCreationStep * const step
+        = MaemoGlobal::buildStep<MaemoPackageCreationStep>(activeQt4BuildConfiguration());
+    Q_ASSERT(step && "Impossible: Maemo build configuration without packaging step.");
+    return step;
 }
 
 MaemoDeployStep *MaemoRunConfiguration::deployStep() const
 {
-    const QList<ProjectExplorer::BuildStep *> &buildSteps
-        = activeQt4BuildConfiguration()->steps(ProjectExplorer::BuildStep::Deploy);
-    for (int i = buildSteps.count() - 1; i >= 0; --i) {
-        MaemoDeployStep * const step
-            = qobject_cast<MaemoDeployStep*>(buildSteps.at(i));
-        if (step)
-            return step;
-    }
-    Q_ASSERT(!"Impossible: Maemo run configuration without deploy step.");
-    return 0;
+    MaemoDeployStep * const step
+        = MaemoGlobal::buildStep<MaemoDeployStep>(activeQt4BuildConfiguration());
+    Q_ASSERT(step && !"Impossible: Maemo build configuration without deploy step.");
+    return step;
 }
 
 QString MaemoRunConfiguration::maddeRoot() const
-- 
GitLab