Exemple #1
0
void JSONSerializer::RenderValue( const QVariant &vValue )
{
    
    // -----------------------------------------------------------------------
    // See if this value is actually a child object
    // -----------------------------------------------------------------------

    if ( vValue.canConvert< QObject* >()) 
    { 
        const QObject *pObject = vValue.value< QObject* >(); 

        bool bSavedCommaNeeded = m_bCommaNeeded;
        m_bCommaNeeded = false;

        m_Stream << "{";
        SerializeObjectProperties( pObject );
        m_Stream << "}";

        m_bCommaNeeded = bSavedCommaNeeded;

        return;
    }
    
    // -----------------------------------------------------------------------
    // Handle QVariant special cases...
    // -----------------------------------------------------------------------

    switch( vValue.type() )
    {
        case QVariant::List:        RenderList      ( vValue.toList()       );  break;
        case QVariant::StringList:  RenderStringList( vValue.toStringList() );  break;
        case QVariant::Map:         RenderMap       ( vValue.toMap()        );  break;
        case QVariant::DateTime:
        {
            m_Stream << "\"" << Encode( 
                MythDate::toString( vValue.toDateTime(), MythDate::ISODate ) )
                << "\"";
            break;
        }
        default:
        {
            m_Stream << "\"" << Encode( vValue.toString() ) << "\"";
            break;
        }
    }
}
Exemple #2
0
void XmlPListSerializer::RenderValue(const QString &sName,
                                     const QVariant &vValue,
                                     bool  needKey)
{
    if ( vValue.canConvert<QObject*>())
    {
        const QObject *pObject = vValue.value<QObject*>();
        SerializePListObjectProperties(sName, pObject, needKey);
        return;
    }

    switch(vValue.type())
    {
        case QVariant::List:
        {
            RenderList(sName, vValue.toList());
            break;
        }

        case QVariant::StringList:
        {
            RenderStringList(sName, vValue.toStringList());
            break;
        }

        case QVariant::Map:
        {
            RenderMap(sName, vValue.toMap());
            break;
        }

        case QVariant::DateTime:
        {
            if (vValue.toDateTime().isValid())
            {
                if (needKey)
                    m_pXmlWriter->writeTextElement("key", sName);
                m_pXmlWriter->writeTextElement("date", vValue.toDateTime()
                                               .toUTC().toString("yyyy-MM-ddThh:mm:ssZ"));
            }
            break;
        }

        case QVariant::ByteArray:
        {
            if (!vValue.toByteArray().isNull())
            {
                if (needKey)
                    m_pXmlWriter->writeTextElement("key", sName);
                m_pXmlWriter->writeTextElement("data",
                                vValue.toByteArray().toBase64().data());
            }
            break;
        }

        case QVariant::Bool:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeEmptyElement(vValue.toBool() ?
                                            "true" : "false");
            break;
        }

        case QVariant::UInt:
        case QVariant::ULongLong:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("integer",
                    QString::number(vValue.toULongLong()));
            break;
        }

        case QVariant::Int:
        case QVariant::LongLong:
        case QVariant::Double:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("real",
                    QString("%1").arg(vValue.toDouble(), 0, 'f', 6));
            break;
        }

        // anything else will be unrecognised, so wrap in a string
        case QVariant::String:
        default:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("string", vValue.toString());
            break;
        }
    }
}