Example #1
0
void SymbolBehavior::fromJson(const QJsonObject &json)
{
    ItemBehavior::fromJson(json);

    int type = json.value(DataKey::SymbolType).toInt();
    setData(type, LP::SymbolType);

    int instrument = json.value(DataKey::Instrument).toInt();
    setData(instrument, LP::SymbolInstrument);

    QString name = json.value(DataKey::SymbolName).toString();
    setData(name, LP::SymbolName);

    if (hasOption(HasLength)) {
        int length = json.value(DataKey::Lenght).toInt();
        Length::Value lengthValue = static_cast<Length::Value>(length);
        setData(QVariant::fromValue<Length::Value>(lengthValue), LP::SymbolLength);
    }

    if (hasOption(HasPitch)) {
        QJsonObject pitchObject = json.value(DataKey::Pitch).toObject();
        Pitch pitch;
        pitch.fromJson(pitchObject);
        setData(QVariant::fromValue<Pitch>(pitch), LP::SymbolPitch);
    }

    int spanType = json.value(DataKey::SymbolSpanType).toInt();
    if (spanType != 0) {
        SpanType type = static_cast<SpanType>(spanType);
        setData(QVariant::fromValue<SpanType>(type), LP::SymbolSpanType);
    }
}