From d94e7f259b05e87688f6f4fc3942e7bd46649ae2 Mon Sep 17 00:00:00 2001
From: Steven Ceuppens <steven.ceuppens@cense.be>
Date: Thu, 17 Jan 2013 16:18:29 +0100
Subject: [PATCH] Added QQuickItem to new class wizard

When creating a new class, you can select the "Base class" or "Type information"
QObject, QWidget, QDeclarativeItem... are available, but QQuickItem isn't..

Change-Id: I9fce6b6a43c915364fc405b99edd0b0d7ebab4fe
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/libs/utils/newclasswidget.cpp        | 2 ++
 src/libs/utils/newclasswidget.h          | 8 ++++++--
 src/libs/utils/newclasswidget.ui         | 7 ++++++-
 src/plugins/cppeditor/cppclasswizard.cpp | 7 ++++++-
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/libs/utils/newclasswidget.cpp b/src/libs/utils/newclasswidget.cpp
index b564d573673..a2a97fa5094 100644
--- a/src/libs/utils/newclasswidget.cpp
+++ b/src/libs/utils/newclasswidget.cpp
@@ -419,6 +419,8 @@ static inline NewClassWidget::ClassType classTypeForBaseClass(const QString &bas
     // Declarative Items
     if (baseClass == QLatin1String("QDeclarativeItem"))
         return NewClassWidget::ClassInheritsQDeclarativeItem;
+    if (baseClass == QLatin1String("QQuickItem"))
+        return NewClassWidget::ClassInheritsQQuickItem;
     return NewClassWidget::NoClassType;
 }
 
diff --git a/src/libs/utils/newclasswidget.h b/src/libs/utils/newclasswidget.h
index a9f1dc0d1fc..78c1852ebd9 100644
--- a/src/libs/utils/newclasswidget.h
+++ b/src/libs/utils/newclasswidget.h
@@ -71,9 +71,13 @@ class QTCREATOR_UTILS_EXPORT NewClassWidget : public QWidget
     Q_ENUMS(ClassType)
 
 public:
-    enum ClassType { NoClassType, ClassInheritsQObject, ClassInheritsQWidget,
+    enum ClassType { NoClassType,
+                     ClassInheritsQObject,
+                     ClassInheritsQWidget,
                      ClassInheritsQDeclarativeItem,
-                     SharedDataClass };
+                     ClassInheritsQQuickItem,
+                     SharedDataClass
+                   };
 
     explicit NewClassWidget(QWidget *parent = 0);
     ~NewClassWidget();
diff --git a/src/libs/utils/newclasswidget.ui b/src/libs/utils/newclasswidget.ui
index dc3c315e86b..7279892c553 100644
--- a/src/libs/utils/newclasswidget.ui
+++ b/src/libs/utils/newclasswidget.ui
@@ -71,7 +71,12 @@
      </item>
      <item>
       <property name="text">
-       <string>Inherits QDeclarativeItem</string>
+       <string>Inherits QDeclarativeItem - Qt Quick 1</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Inherits QQuickItem - Qt Quick 2</string>
       </property>
      </item>
      <item>
diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp
index 64f56d7c3bc..2f8cf1c4242 100644
--- a/src/plugins/cppeditor/cppclasswizard.cpp
+++ b/src/plugins/cppeditor/cppclasswizard.cpp
@@ -70,7 +70,8 @@ ClassNamePage::ClassNamePage(QWidget *parent) :
             << QLatin1String("QObject")
             << QLatin1String("QWidget")
             << QLatin1String("QMainWindow")
-            << QLatin1String("QDeclarativeItem"));
+            << QLatin1String("QDeclarativeItem")
+            << QLatin1String("QQuickItem"));
     m_newClassWidget->setBaseClassEditable(true);
     m_newClassWidget->setFormInputVisible(false);
     m_newClassWidget->setNamespacesEnabled(true);
@@ -250,6 +251,10 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par
         parentQObjectClass = QLatin1String("QDeclarativeItem");
         defineQObjectMacro = true;
         break;
+    case Utils::NewClassWidget::ClassInheritsQQuickItem:
+        parentQObjectClass = QLatin1String("QQuickItem");
+        defineQObjectMacro = true;
+        break;
     case Utils::NewClassWidget::NoClassType:
     case Utils::NewClassWidget::SharedDataClass:
         break;
-- 
GitLab