Add QModelIndex as a built-in metatype.
authorStephen Kelly <stephen.kelly@kdab.com>
Tue, 10 Jan 2012 13:46:34 +0000 (14:46 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 11 Jan 2012 18:32:34 +0000 (19:32 +0100)
Change-Id: Ib87cfff8b4baee78189f3df5e20d2e1a00d690e1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
src/corelib/kernel/qmetatype.cpp
src/corelib/kernel/qmetatype.h
src/corelib/kernel/qvariant.cpp
src/corelib/kernel/qvariant.h
tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp

index 112dfe9..375c7b7 100644 (file)
@@ -62,6 +62,7 @@
 #  include "qbitarray.h"
 #  include "qurl.h"
 #  include "qvariant.h"
+#  include "qabstractitemmodel.h"
 #endif
 
 #ifndef QT_NO_GEOM_VARIANT
@@ -108,6 +109,7 @@ template<> struct TypeDefiniton<QVariant> { static const bool IsAvailable = fals
 template<> struct TypeDefiniton<QBitArray> { static const bool IsAvailable = false; };
 template<> struct TypeDefiniton<QUrl> { static const bool IsAvailable = false; };
 template<> struct TypeDefiniton<QEasingCurve> { static const bool IsAvailable = false; };
+template<> struct TypeDefiniton<QModelIndex> { static const bool IsAvailable = false; };
 #endif
 #ifdef QT_NO_REGEXP
 template<> struct TypeDefiniton<QRegExp> { static const bool IsAvailable = false; };
@@ -1124,6 +1126,10 @@ void *QMetaType::create(int type, const void *copy)
 #endif
         case QMetaType::QUuid:
             return new NS(QUuid)(*static_cast<const NS(QUuid)*>(copy));
+#ifndef QT_BOOTSTRAPPED
+        case QMetaType::QModelIndex:
+            return new NS(QModelIndex)(*static_cast<const NS(QModelIndex)*>(copy));
+#endif
         case QMetaType::Void:
             return 0;
         default:
@@ -1223,6 +1229,10 @@ void *QMetaType::create(int type, const void *copy)
 #endif
         case QMetaType::QUuid:
             return new NS(QUuid);
+#ifndef QT_BOOTSTRAPPED
+        case QMetaType::QModelIndex:
+            return new NS(QModelIndex);
+#endif
         case QMetaType::Void:
             return 0;
         default:
@@ -1393,6 +1403,11 @@ void QMetaType::destroy(int type, void *data)
     case QMetaType::QUuid:
         delete static_cast< NS(QUuid)* >(data);
         break;
+#ifndef QT_BOOTSTRAPPED
+    case QMetaType::QModelIndex:
+        delete static_cast< NS(QModelIndex)* >(data);
+        break;
+#endif
     case QMetaType::Void:
         break;
     default: {
index ab0203e..843044e 100644 (file)
@@ -99,6 +99,7 @@ QT_MODULE(Core)
     F(QRegExp, 27, QRegExp) \
     F(QEasingCurve, 29, QEasingCurve) \
     F(QUuid, 30, QUuid) \
+    F(QModelIndex, 31, QModelIndex) \
     F(QVariant, 138, QVariant) \
 
 #define QT_FOR_EACH_STATIC_CORE_POINTER(F)\
@@ -183,7 +184,7 @@ public:
         // these are merged with QVariant
         QT_FOR_EACH_STATIC_TYPE(QT_DEFINE_METATYPE_ID)
 
-        LastCoreType = QUuid,
+        LastCoreType = QModelIndex,
         FirstGuiType = QFont,
         LastGuiType = QPolygonF,
         FirstWidgetsType = QIcon,
index e4894ec..72229c0 100644 (file)
@@ -53,6 +53,9 @@
 #include "qurl.h"
 #include "qlocale.h"
 #include "quuid.h"
+#ifndef QT_BOOTSTRAPPED
+#include "qabstractitemmodel.h"
+#endif
 #include "private/qvariant_p.h"
 #include "qmetatype_p.h"
 
@@ -102,6 +105,7 @@ struct TypeDefiniton {
 // Ignore these types, as incomplete
 #ifdef QT_BOOTSTRAPPED
 template<> struct TypeDefiniton<QEasingCurve> { static const bool IsAvailable = false; };
+template<> struct TypeDefiniton<QModelIndex> { static const bool IsAvailable = false; };
 #endif
 #ifdef QT_NO_GEOM_VARIANT
 template<> struct TypeDefiniton<QRect> { static const bool IsAvailable = false; };
@@ -995,6 +999,7 @@ Q_CORE_EXPORT void QVariantPrivate::unregisterHandler(const int /* Modules::Name
     \value Double  a double
     \value EasingCurve a QEasingCurve
     \value Uuid a QUuid
+    \value ModelIndex a QModelIndex
     \value Font  a QFont
     \value Hash a QVariantHash
     \value Icon  a QIcon
index 738e516..35c584f 100644 (file)
@@ -124,6 +124,7 @@ class Q_CORE_EXPORT QVariant
         Hash = QMetaType::QVariantHash,
         EasingCurve = QMetaType::QEasingCurve,
         Uuid = QMetaType::QUuid,
+        ModelIndex = QMetaType::QModelIndex,
         LastCoreType = QMetaType::LastCoreType,
 
         Font = QMetaType::QFont,
index 475f190..d5aa369 100644 (file)
@@ -449,6 +449,9 @@ template<> struct TestValueFactory<QMetaType::QEasingCurve> {
 template<> struct TestValueFactory<QMetaType::QUuid> {
     static QUuid *create() { return new QUuid(); }
 };
+template<> struct TestValueFactory<QMetaType::QModelIndex> {
+    static QModelIndex *create() { return new QModelIndex(); }
+};
 template<> struct TestValueFactory<QMetaType::QRegExp> {
     static QRegExp *create()
     {