예제 #1
0
void MetaInfoReader::propertyDefinition(const QString &name, const QVariant &value)
{
    switch (parserState()) {
    case ParsingType:
        readTypeProperty(name, value);
        break;
    case ParsingItemLibrary:
        readItemLibraryEntryProperty(name, value);
        break;
    case ParsingProperty:
        readPropertyProperty(name, value);
        break;
    case ParsingQmlSource:
        readQmlSourceProperty(name, value);
        break;
    case ParsingMetaInfo:
        addError(tr("No property definition allowed"), currentSourceLocation());
        break;
    case ParsingDocument:
    case Finished:
    case Undefined:
        setParserState(Error);
        addError(tr("Illegal state while parsing"), currentSourceLocation());
    case Error:
    default:
        return;
    }
}
예제 #2
0
void MetaInfoReader::elementStart(const QString &name)
{
    switch (parserState()) {
    case ParsingDocument:
        setParserState(readDocument(name));
        break;
    case ParsingMetaInfo:
        setParserState(readMetaInfoRootElement(name));
        break;
    case ParsingType:
        setParserState(readTypeElement(name));
        break;
    case ParsingItemLibrary:
        setParserState(readItemLibraryEntryElement(name));
        break;
    case ParsingProperty:
        setParserState(readPropertyElement(name));
        break;
    case ParsingQmlSource:
        setParserState(readQmlSourceElement(name));
        break;
    case Finished:
    case Undefined:
        setParserState(Error);
        addError(tr("Illegal state while parsing"), currentSourceLocation());
    case Error:
    default:
        return;
    }
}
예제 #3
0
void MetaInfoReader::elementEnd()
{
    switch (parserState()) {
    case ParsingMetaInfo:
        setParserState(Finished);
        break;
    case ParsingType:
        setParserState(ParsingMetaInfo);
        break;
    case ParsingItemLibrary:
        insertItemLibraryEntry();
        setParserState((ParsingType));
        break;
    case ParsingProperty:
        insertProperty();
        setParserState(ParsingItemLibrary);
        break;
    case ParsingQmlSource:
        setParserState(ParsingItemLibrary);
        break;
    case ParsingDocument:
    case Finished:
    case Undefined:
        setParserState(Error);
        addError(tr("Illegal state while parsing"), currentSourceLocation());
    case Error:
    default:
        return;
    }
}
예제 #4
0
void MetaInfoReader::readQmlSourceProperty(const QString &name, const QVariant &value)
{
    if (name == QLatin1String("source")) {
        m_currentEntry.setQml(value.toString());
    } else {
        addError(tr("Unknown property for QmlSource %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #5
0
void MetaInfoReader::readQmlSourceProperty(const QString &name, const QVariant &value)
{
    if (name == QStringLiteral("source")) {
        m_currentEntry.setQmlPath(absoluteFilePathForDocument(value.toString()));
    } else {
        addError(tr("Unknown property for QmlSource %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #6
0
void MetaInfoReader::readTypeProperty(const QString &name, const QVariant &value)
{
    if (name == QLatin1String("name")) {
        m_currentClassName = value.toString();
    } else if (name == QLatin1String("icon")) {
        m_currentIcon = value.toString();
    } else {
        addError(tr("Unknown property for Type %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #7
0
void SimpleReader::propertyDefinition(const QString &name, const QVariant &value)
{
    Q_ASSERT(m_currentNode);

    qCDebug(simpleReaderLog) << "propertyDefinition()" << m_currentNode.data()->name() << name << value;

    if (m_currentNode.data()->propertyNames().contains(name))
        addError(tr("Property is defined twice."), currentSourceLocation());

    m_currentNode.data()->setProperty(name, value);
}
예제 #8
0
void MetaInfoReader::readPropertyProperty(const QString &name, const QVariant &value)
{
    if (name == QLatin1String("name")) {
       m_currentPropertyName = value.toString();
    } else if (name == QLatin1String("type")) {
        m_currentPropertyType = value.toString();
    } else if (name == QLatin1String("value")) {
        m_currentPropertyValue = value;
    } else {
        addError(tr("Unknown property for Property %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #9
0
void MetaInfoReader::readTypeProperty(const QString &name, const QVariant &value)
{
    if (name == QLatin1String("name")) {
        m_currentClassName = value.toString().toUtf8();
        if (!m_qualication.isEmpty()) //prepend qualification
            m_currentClassName = m_qualication + "." + m_currentClassName;
    } else if (name == QStringLiteral("icon")) {
        m_currentIcon = absoluteFilePathForDocument(value.toString());
    } else {
        addError(tr("Unknown property for Type %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #10
0
void MetaInfoReader::readImportsProperty(const QString &name, const QVariant &value)
{
    const auto values = value.toStringList();

    if (name == "blacklistImports" && !values.isEmpty()) {
        m_metaInfo.itemLibraryInfo()->addBlacklistImports(values);
    } else if (name == "showTagsForImports" && !values.isEmpty()) {
        m_metaInfo.itemLibraryInfo()->addShowTagsForImports(values);
    } else {
        addError(tr("Unknown property for Imports %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #11
0
MetaInfoReader::ParserSate MetaInfoReader::readItemLibraryEntryElement(const QString &name)
{
    if (name == QmlSourceElementName) {
        return ParsingQmlSource;
    } else if (name == PropertyElementName) {
        m_currentPropertyName = QString();
        m_currentPropertyType = QString();
        m_currentPropertyValue = QVariant();
        return ParsingProperty;
    } else {
        addError(tr("Invalid type %1").arg(name), currentSourceLocation());
        return Error;
    }
}
예제 #12
0
void MetaInfoReader::readItemLibraryEntryProperty(const QString &name, const QVariant &value)
{
    if (name == QStringLiteral("name")) {
        m_currentEntry.setName(value.toString());
    } else if (name == QStringLiteral("category")) {
        m_currentEntry.setCategory(value.toString());
    } else if (name == QStringLiteral("libraryIcon")) {
        m_currentEntry.setLibraryEntryIconPath(absoluteFilePathForDocument(value.toString()));
    } else if (name == QStringLiteral("version")) {
        setVersion(value.toString());
    } else if (name == QStringLiteral("requiredImport")) {
        m_currentEntry.setRequiredImport(value.toString());
    } else {
        addError(tr("Unknown property for ItemLibraryEntry %1").arg(name), currentSourceLocation());
        setParserState(Error);
    }
}
예제 #13
0
void MetaInfoReader::addErrorInvalidType(const QString &typeName)
{
    addError(tr("Invalid type %1").arg(typeName), currentSourceLocation());
}
예제 #14
0
void MetaInfoReader::insertItemLibraryEntry()
{
    if (debug) {
        qDebug() << "insertItemLibraryEntry()";
        qDebug() << m_currentEntry;
    }

    try {
        m_metaInfo.itemLibraryInfo()->addEntry(m_currentEntry);
    } catch (InvalidMetaInfoException &) {
        addError(tr("Invalid or duplicate item library entry %1").arg(m_currentEntry.name()), currentSourceLocation());
    }
}
예제 #15
0
MetaInfoReader::ParserSate MetaInfoReader::readQmlSourceElement(const QString &name)
{
    addError(tr("Invalid type %1").arg(name), currentSourceLocation());
    return Error;
}
예제 #16
0
void MetaInfoReader::syncItemLibraryEntries()
{
    try {
        m_metaInfo.itemLibraryInfo()->addEntries(m_bufferedEntries, m_overwriteDuplicates);
    } catch (const InvalidMetaInfoException &) {
        addError(tr("Invalid or duplicate item library entry %1").arg(m_currentEntry.name()), currentSourceLocation());
    }
    m_bufferedEntries.clear();
}