void ScoreView::lyricsUpDown(bool up, bool end) { Lyrics* lyrics = static_cast<Lyrics*>(editObject); int track = lyrics->track(); ChordRest* cr = lyrics->chordRest(); int verse = lyrics->no(); const QList<Lyrics*>* ll = &lyrics->chordRest()->lyricsList(); if (up) { if (verse == 0) return; --verse; } else { ++verse; if (verse >= ll->size()) return; } endEdit(); _score->startCmd(); lyrics = ll->value(verse); if (!lyrics) { lyrics = new Lyrics(_score); lyrics->setTrack(track); lyrics->setParent(cr); lyrics->setNo(verse); _score->undoAddElement(lyrics); } _score->select(lyrics, SELECT_SINGLE, 0); startEdit(lyrics, -1); mscore->changeState(mscoreState()); adjustCanvasPosition(lyrics, false); if (end) ((Lyrics*)editObject)->moveCursorToEnd(); else ((Lyrics*)editObject)->moveCursorToStart(); _score->setLayoutAll(true); _score->end2(); _score->end1(); }
void ScoreView::lyricsUpDown(bool up, bool end) { Lyrics* lyrics = toLyrics(editData.element); int track = lyrics->track(); ChordRest* cr = lyrics->chordRest(); int verse = lyrics->no(); Placement placement = lyrics->placement(); PropertyFlags pFlags = lyrics->propertyFlags(Pid::PLACEMENT); if (up) { if (verse == 0) return; --verse; } else { ++verse; if (verse > cr->lastVerse(placement)) return; } changeState(ViewState::NORMAL); lyrics = cr->lyrics(verse, placement); if (!lyrics) { lyrics = new Lyrics(_score); lyrics->setTrack(track); lyrics->setParent(cr); lyrics->setNo(verse); lyrics->setPlacement(placement); lyrics->setPropertyFlags(Pid::PLACEMENT, pFlags); _score->startCmd(); _score->undoAddElement(lyrics); _score->endCmd(); } _score->select(lyrics, SelectType::SINGLE, 0); startEdit(lyrics, Grip::NO_GRIP); mscore->changeState(mscoreState()); adjustCanvasPosition(lyrics, false); lyrics = toLyrics(editData.element); TextCursor* cursor = lyrics->cursor(editData); if (end) { cursor->movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); cursor->movePosition(QTextCursor::End, QTextCursor::KeepAnchor); } else { cursor->movePosition(QTextCursor::End, QTextCursor::MoveAnchor); cursor->movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); } _score->setLayoutAll(); _score->update(); }
void InspectorLyric::valueChanged(int idx) { if (iList[idx].t == Pid::VERSE) { int val = getValue(iList[idx]).toInt(); Lyrics* l = toLyrics(inspector->element()); Lyrics* nl = l->chordRest()->lyrics(val, l->placement()); if (nl) { nl->undoChangeProperty(Pid::VERSE, l->no()); } } InspectorBase::valueChanged(idx); }
void InspectorLyric::valueChanged(int idx) { if (iList[idx].t == P_ID::VERSE) { int val = getValue(iList[idx]).toInt(); Lyrics* l = toLyrics(inspector->element()); printf("value changed %d old %d\n", val, l->no()); Lyrics* nl = l->chordRest()->lyrics(val, l->placement()); if (nl) { printf(" move away %d -> %d\n", nl->no(), l->no()); nl->undoChangeProperty(P_ID::VERSE, l->no()); } } InspectorBase::valueChanged(idx); }
void ScoreView::lyricsUpDown(bool up, bool end) { Lyrics* lyrics = toLyrics(editObject); int track = lyrics->track(); ChordRest* cr = lyrics->chordRest(); int verse = lyrics->no(); Element::Placement placement = lyrics->placement(); if (placement == Element::Placement::ABOVE) up = !up; if (up) { if (verse == 0) return; --verse; } else { ++verse; if (verse > cr->lastVerse(placement)) return; } endEdit(); _score->startCmd(); lyrics = cr->lyrics(verse, placement); if (!lyrics) { lyrics = new Lyrics(_score); lyrics->setTrack(track); lyrics->setParent(cr); lyrics->setNo(verse); lyrics->setPlacement(placement); _score->undoAddElement(lyrics); } _score->select(lyrics, SelectType::SINGLE, 0); startEdit(lyrics, Grip::NO_GRIP); mscore->changeState(mscoreState()); adjustCanvasPosition(lyrics, false); if (end) { ((Lyrics*)editObject)->movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); ((Lyrics*)editObject)->movePosition(QTextCursor::End, QTextCursor::KeepAnchor); } else { ((Lyrics*)editObject)->movePosition(QTextCursor::End, QTextCursor::MoveAnchor); ((Lyrics*)editObject)->movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); } _score->setLayoutAll(); _score->update(); }