From c5bc38df6d86e16a5da87e2a23fcbd016a4fa6cb Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 5 Jul 2010 10:47:24 +0200
Subject: [PATCH] Add QDeclarativeItem as base class for NewClassWidget.

---
 src/libs/utils/newclasswidget.cpp        |  3 +++
 src/libs/utils/newclasswidget.h          |  1 +
 src/libs/utils/newclasswidget.ui         |  7 ++++++-
 src/plugins/cppeditor/cppclasswizard.cpp | 10 +++++++++-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/libs/utils/newclasswidget.cpp b/src/libs/utils/newclasswidget.cpp
index afec2c0cf5d..bd946d70786 100644
--- a/src/libs/utils/newclasswidget.cpp
+++ b/src/libs/utils/newclasswidget.cpp
@@ -407,6 +407,9 @@ static inline NewClassWidget::ClassType classTypeForBaseClass(const QString &bas
     if (baseClass == QLatin1String("QWidget") || baseClass == QLatin1String("QMainWindow")
         || baseClass == QLatin1String("QDialog"))
         return NewClassWidget::ClassInheritsQWidget;
+    // Declarative Items
+    if (baseClass == QLatin1String("QDeclarativeItem"))
+        return NewClassWidget::ClassInheritsQDeclarativeItem;
     return NewClassWidget::NoClassType;
 }
 
diff --git a/src/libs/utils/newclasswidget.h b/src/libs/utils/newclasswidget.h
index 68962c2d1b9..ddf8be2886f 100644
--- a/src/libs/utils/newclasswidget.h
+++ b/src/libs/utils/newclasswidget.h
@@ -78,6 +78,7 @@ class QTCREATOR_UTILS_EXPORT NewClassWidget : public QWidget
     Q_ENUMS(ClassType)
 public:
     enum ClassType { NoClassType, ClassInheritsQObject, ClassInheritsQWidget,
+                     ClassInheritsQDeclarativeItem,
                      SharedDataClass };
 
     explicit NewClassWidget(QWidget *parent = 0);
diff --git a/src/libs/utils/newclasswidget.ui b/src/libs/utils/newclasswidget.ui
index e23ef8ed4b0..dc3c315e86b 100644
--- a/src/libs/utils/newclasswidget.ui
+++ b/src/libs/utils/newclasswidget.ui
@@ -69,6 +69,11 @@
        <string>Inherits QWidget</string>
       </property>
      </item>
+     <item>
+      <property name="text">
+       <string>Inherits QDeclarativeItem</string>
+      </property>
+     </item>
      <item>
       <property name="text">
        <string>Based on QSharedData</string>
@@ -175,7 +180,7 @@
     </widget>
    </item>
    <item row="8" column="1">
-    <widget class="Utils::PathChooser" name="pathChooser" native="true"/>
+    <widget class="Utils::PathChooser" name="pathChooser"/>
    </item>
   </layout>
  </widget>
diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp
index 2333cc4daff..3f7e66b56df 100644
--- a/src/plugins/cppeditor/cppclasswizard.cpp
+++ b/src/plugins/cppeditor/cppclasswizard.cpp
@@ -69,7 +69,8 @@ ClassNamePage::ClassNamePage(QWidget *parent) :
     m_newClassWidget->setBaseClassChoices(QStringList() << QString()
             << QLatin1String("QObject")
             << QLatin1String("QWidget")
-            << QLatin1String("QMainWindow"));
+            << QLatin1String("QMainWindow")
+            << QLatin1String("QDeclarativeItem"));
     m_newClassWidget->setBaseClassEditable(true);
     m_newClassWidget->setFormInputVisible(false);
     m_newClassWidget->setNamespacesEnabled(true);
@@ -257,6 +258,13 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par
         parentQObjectClass = QLatin1String("QWidget");
         defineQObjectMacro = true;
         break;
+    case Utils::NewClassWidget::ClassInheritsQDeclarativeItem:
+        parentQObjectClass = QLatin1String("QDeclarativeItem");
+        defineQObjectMacro = true;
+        break;
+    case Utils::NewClassWidget::NoClassType:
+    case Utils::NewClassWidget::SharedDataClass:
+        break;
     }
     const QString baseClass = params.baseClass.isEmpty()
                               && params.classType != Utils::NewClassWidget::NoClassType ?
-- 
GitLab