void ChordRest::remove(Element* e) { switch (e->type()) { case Element::Type::ARTICULATION: { Articulation* a = static_cast<Articulation*>(e); if (!_articulations.removeOne(a)) qDebug("ChordRest::remove(): articulation not found"); if (a->timeStretch() != 1.0) score()->fixTicks(); // update tempo map } break; case Element::Type::LYRICS: { for (int i = 0; i < _lyricsList.size(); ++i) { if (_lyricsList[i] != e) continue; _lyricsList[i] = 0; while (!_lyricsList.isEmpty() && _lyricsList.back() == 0) _lyricsList.takeLast(); return; } } qDebug("ChordRest::remove: %s %p not found", e->name(), e); break; default: qFatal("ChordRest::remove: unknown element <%s>", e->name()); } }
void ChordRest::add(Element* e) { e->setParent(this); e->setTrack(track()); switch(e->type()) { case Element::Type::ARTICULATION: { Articulation* a = static_cast<Articulation*>(e); _articulations.push_back(a); if (a->timeStretch() != 1.0) score()->fixTicks(); // update tempo map } break; case Element::Type::LYRICS: { Lyrics* l = static_cast<Lyrics*>(e); int size = _lyricsList.size(); if (l->no() >= size) { for (int i = size-1; i < l->no(); ++i) _lyricsList.append(0); } _lyricsList[l->no()] = l; } break; default: qFatal("ChordRest::add: unknown element %s", e->name()); break; } }