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); } }