예제 #1
0
QVariant QObjectXmlModel::typedValue(const QXmlNodeModelIndex &n) const
{
    switch (toNodeType(n))
    {
    case QObjectProperty:
    {
        const QVariant &candidate = toMetaProperty(n).read(asQObject(n));
        if (isTypeSupported(candidate.type()))
            return candidate;
        else
            return QVariant();
    }

    case MetaObjectClassName:
        return QVariant(static_cast<QMetaObject*>(n.internalPointer())->className());

    case MetaObjectSuperClass:
    {
        const QMetaObject *const superClass = static_cast<QMetaObject*>(n.internalPointer())->superClass();
        if (superClass)
            return QVariant(superClass->className());
        else
            return QVariant();
    }

    case QObjectClassName:
        return QVariant(asQObject(n)->metaObject()->className());

    default:
        return QVariant();
    }
}
예제 #2
0
void tst_QXmlNodeModelIndex::internalPointer() const
{
    /* Check default value. */
    {
        const QXmlNodeModelIndex index;
        QCOMPARE(index.internalPointer(), static_cast<void *>(0));
    }
}
예제 #3
0
void tst_QXmlNodeModelIndex::constCorrectness() const
{
    const QXmlNodeModelIndex index;
    /* All these functions should be const. */
    index.internalPointer();
    index.data();
    index.additionalData();
    index.isNull();
    index.model();
}
예제 #4
0
QXmlNodeModelIndex QObjectXmlModel::metaObjectSibling(const int pos, const QXmlNodeModelIndex &n) const
{
    Q_ASSERT(pos == 1 || pos == -1);
    Q_ASSERT(!n.isNull());

    const int indexOf = m_allMetaObjects.indexOf(static_cast<const QMetaObject *>(n.internalPointer())) + pos;

    if (indexOf >= 0 && indexOf < m_allMetaObjects.count())
        return createIndex(const_cast<QMetaObject *>(m_allMetaObjects.at(indexOf)), MetaObject);
    else
        return QXmlNodeModelIndex();
}