Subversion Repositories Scribus

Rev

Rev 13710 | Rev 14875 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/


#include "scxmlstreamreader.h"

#include "scclocale.h"

ScXmlStreamAttributes::ScXmlStreamAttributes(void) : QXmlStreamAttributes()
{

}

ScXmlStreamAttributes::ScXmlStreamAttributes(const QXmlStreamAttributes& attrs)
                                         : QXmlStreamAttributes(attrs)
{

}

bool ScXmlStreamAttributes::valueAsBool (const char* attrName, bool def) const
{
        bool retValue = def;
        QStringRef att = value(QLatin1String(attrName));
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                int intVal = strVal.toInt(&success);
                if (success)
                        retValue = static_cast<bool>(intVal);
        }
        return retValue;
}

bool ScXmlStreamAttributes::valueAsBool (const QString& attrName, bool def) const
{
        bool retValue = def;
        QStringRef att = value(attrName);
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                int intVal = strVal.toInt(&success);
                if (success)
                        retValue = static_cast<bool>(intVal);
        }
        return retValue;
}

int ScXmlStreamAttributes::valueAsInt (const char* attrName, int def) const
{
        int retValue = def;
        QStringRef att = value(QLatin1String(attrName));
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                int intVal = strVal.toInt(&success);
                if (success)
                        retValue = intVal;
        }
        return retValue;
}

int ScXmlStreamAttributes::valueAsInt (const QString& attrName, int def) const
{
        int retValue = def;
        QStringRef att = value(attrName);
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                int intVal = strVal.toInt(&success);
                if (success)
                        retValue = intVal;
        }
        return retValue;
}

uint ScXmlStreamAttributes::valueAsUInt  (const char*    attrName, uint def) const
{
        uint retValue = def;
        QStringRef att = value(QLatin1String(attrName));
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                uint intVal = strVal.toUInt(&success);
                if (success)
                        retValue = intVal;
        }
        return retValue;
}

uint ScXmlStreamAttributes::valueAsUInt  (const QString& attrName, uint def) const
{
        uint retValue = def;
        QStringRef att = value(attrName);
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                uint intVal = strVal.toUInt(&success);
                if (success)
                        retValue = intVal;
        }
        return retValue;
}

double ScXmlStreamAttributes::valueAsDouble (const char* attrName, double def) const
{
        double retValue = def;
        QStringRef att = value(QLatin1String(attrName));
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                retValue = ScCLocale::toDoubleC(strVal, def);
        }
        return retValue;
}

double ScXmlStreamAttributes::valueAsDouble (const QString& attrName, double def) const
{
        double retValue = def;
        QStringRef att = value(attrName);
        if (!att.isEmpty())
        {
                bool success = false;
                QString strVal = QString::fromRawData(att.constData(), att.length());
                retValue = ScCLocale::toDoubleC(strVal, def);
        }
        return retValue;
}

QString ScXmlStreamAttributes::valueAsString (const char*    attrName, const QString def) const
{
        QString retValue = def;
        QStringRef att = value(QLatin1String(attrName));
        if (!att.isEmpty() || hasAttribute(attrName))
                retValue = att.toString();
        return retValue;
}

QString ScXmlStreamAttributes::valueAsString (const QString& attrName, const QString def) const
{
        QString retValue = def;
        QStringRef att = value(attrName);
        if (!att.isEmpty() || hasAttribute(attrName))
                retValue = att.toString();
        return retValue;
}

ScXmlStreamAttributes ScXmlStreamReader::scAttributes(void) const
{
        ScXmlStreamAttributes attrs(attributes());
        return attrs;
}

void ScXmlStreamReader::readToElementEnd(void)
{
        if (!isStartElement())
                return;
        int count = 1;
        QStringRef tagName = name();
        while(!atEnd() && !hasError())
        {
                readNext();
                if (isStartElement() && (name() == tagName))
                        ++count;
                if (isEndElement() && (name() == tagName))
                        --count;
                if (count == 0)
                        break;
        }
}