From 2be179b1b6671bf63ab7c0f9594c9c36bc1408f0 Mon Sep 17 00:00:00 2001 From: SeeLook <945374+SeeLook@users.noreply.github.com> Date: Mon, 16 Jun 2014 21:55:49 +0200 Subject: [PATCH] Implemented aplying new score options, proper key names initialisation --- changes | 7 +++- src/libs/core/score/tnotecontrol.cpp | 6 ++- src/libs/core/score/tscorenote.cpp | 17 ++++---- src/libs/core/score/tscorenote.h | 3 ++ src/libs/core/tinitcorelib.cpp | 5 ++- src/score/tmainscore.cpp | 63 +++++++++++++++++----------- src/score/tmainscore.h | 3 +- src/score/tscoreactions.cpp | 1 - src/settings/tnotenamesettings.cpp | 13 ++++-- src/settings/tscoresettings.cpp | 4 +- 10 files changed, 76 insertions(+), 46 deletions(-) diff --git a/changes b/changes index 1b8cc9df4..63ddb3cba 100644 --- a/changes +++ b/changes @@ -1,11 +1,14 @@ 1.1.1 alpha - - interactive score with staves systems, + - interactive score with staves (systems) - possibility of adding/removing notes to the score - option for displaying accidentals from key signature near a note - - displaying name below every note on the score + - note names can be displayed on the score (below every note) + - option for forwarding audio input through selected audio output Under the hood - ported to Qt5 - divided for libraries and external executable files + - updated RtAudio version + - merged audio input and output callback methods ================================================================ diff --git a/src/libs/core/score/tnotecontrol.cpp b/src/libs/core/score/tnotecontrol.cpp index f98fb9a31..dca64b458 100644 --- a/src/libs/core/score/tnotecontrol.cpp +++ b/src/libs/core/score/tnotecontrol.cpp @@ -77,7 +77,7 @@ TnoteControl::TnoteControl(TscoreStaff* staff, TscoreScene* scene) : m_name->setFont(TnooFont()); m_name->setParentItem(this); m_name->setScale(boundingRect().width() / m_name->boundingRect().width()); - m_name->setBrush(Qt::darkCyan); + m_name->setBrush(TscoreNote::nameColor()); // '-' for deleting notes m_cross = new QGraphicsSimpleTextItem("o"); m_cross->setFont(TnooFont()); @@ -97,6 +97,7 @@ TnoteControl::~TnoteControl() void TnoteControl::adjustSize() { m_height = staff()->height(); + m_name->setBrush(TscoreNote::nameColor()); qreal minusY = (staff()->isPianoStaff() ? staff()->lowerLinePos() : staff()->upperLinePos()) + 8.0; m_cross->setPos((WIDTH - m_cross->boundingRect().width() * m_cross->scale()) / 2.0, minusY); m_plus->setPos(0.0, staff()->upperLinePos() - 4.0 - m_plus->boundingRect().height() * m_plus->scale()); @@ -314,7 +315,8 @@ void TnoteControl::hoverMoveEvent(QGraphicsSceneHoverEvent* event) { .arg(TnooFont::span("o", qApp->fontMetrics().boundingRect("A").height() * 2.0, "color: #ff0000"))); // red else if (it == m_name) emit statusTip(tr("Click %1 to edit note name") - .arg(TnooFont::span("c", qApp->fontMetrics().boundingRect("A").height() * 1.5, "color: #008080"))); // #008080 - dark Cyan + .arg(TnooFont::span("c", qApp->fontMetrics().boundingRect("A").height() * 1.5, + "color: " + TscoreNote::nameColor().name()))); else emit statusTip(""); if (m_underItem) diff --git a/src/libs/core/score/tscorenote.cpp b/src/libs/core/score/tscorenote.cpp index 338ed49dd..d86b97d98 100644 --- a/src/libs/core/score/tscorenote.cpp +++ b/src/libs/core/score/tscorenote.cpp @@ -46,16 +46,17 @@ QString TscoreNote::getAccid(int accNr) { } -qreal TscoreNote::m_accidYoffset = 0.0; -qreal TscoreNote::m_accidScale = -1.0; -int TscoreNote::m_curentAccid = 0; -int TscoreNote::m_workPosY = 0; -QGraphicsEllipseItem* TscoreNote::m_workNote = 0; -QGraphicsSimpleTextItem* TscoreNote::m_workAccid = 0; +qreal TscoreNote::m_accidYoffset = 0.0; +qreal TscoreNote::m_accidScale = -1.0; +int TscoreNote::m_curentAccid = 0; +int TscoreNote::m_workPosY = 0; +QGraphicsEllipseItem* TscoreNote::m_workNote = 0; +QGraphicsSimpleTextItem* TscoreNote::m_workAccid = 0; QList<QGraphicsLineItem*> TscoreNote::m_upLines; QList<QGraphicsLineItem*> TscoreNote::m_downLines; QList<QGraphicsLineItem*> TscoreNote::m_midLines; -QColor TscoreNote::m_workColor = -1; +QColor TscoreNote::m_workColor = -1; +QColor TscoreNote::m_nameColor = Qt::darkCyan; TnoteControl* TscoreNote::m_rightBox = 0; TnoteControl* TscoreNote::m_leftBox = 0; @@ -342,7 +343,7 @@ void TscoreNote::showNoteName() { m_nameText->setZValue(10); m_nameText->setAcceptHoverEvents(false); QGraphicsDropShadowEffect *dropEff = new QGraphicsDropShadowEffect(); - dropEff->setColor(Qt::darkCyan); + dropEff->setColor(m_nameColor); dropEff->setOffset(0.7, 0.7); dropEff->setBlurRadius(5.0); m_nameText->setGraphicsEffect(dropEff); diff --git a/src/libs/core/score/tscorenote.h b/src/libs/core/score/tscorenote.h index 16e96b544..efa33c5a1 100644 --- a/src/libs/core/score/tscorenote.h +++ b/src/libs/core/score/tscorenote.h @@ -141,6 +141,8 @@ public: * when score scene has a view. */ static TnoteControl* right() { return m_rightBox; } static TnoteControl* left() { return m_leftBox; } + static void setNameColor(const QColor& nameC) { m_nameColor = nameC; } + static QColor nameColor() { return m_nameColor; } signals: void noteWasClicked(int); @@ -203,6 +205,7 @@ private: static QColor m_workColor; static TnoteControl *m_rightBox; static TnoteControl *m_leftBox; + static QColor m_nameColor; static QString m_staticTip; bool m_touchedToMove; /** Determines whether cursor follows moving finger */ diff --git a/src/libs/core/tinitcorelib.cpp b/src/libs/core/tinitcorelib.cpp index 0d3cf0787..17e3908d5 100755 --- a/src/libs/core/tinitcorelib.cpp +++ b/src/libs/core/tinitcorelib.cpp @@ -44,7 +44,8 @@ void initCoreLibrary(Tglobals* gl) { #else TpushButton::setCheckColor(qApp->palette().highlight().color(), qApp->palette().highlightedText().color() ); #endif - TkeySignature::setNameStyle(gl->S->nameStyleInKeySign, gl->S->majKeyNameSufix, gl->S->minKeyNameSufix); +// TkeySignature::setNameStyle(gl->S->nameStyleInKeySign, gl->S->majKeyNameSufix, gl->S->minKeyNameSufix); +// moved to prepareTranslations() due to suffix translations have to be known } @@ -65,6 +66,8 @@ void prepareTranslations(QApplication* a) { // QTranslator nooTranslator; nooTranslator.load("nootka_" + ll, Tglob::glob()->path + "lang"); a->installTranslator(&nooTranslator); + TkeySignature::setNameStyle(Tglob::glob()->S->nameStyleInKeySign, Tglob::glob()->S->majKeyNameSufix, + Tglob::glob()->S->minKeyNameSufix); } diff --git a/src/score/tmainscore.cpp b/src/score/tmainscore.cpp index 1771a2a54..db7849cbf 100644 --- a/src/score/tmainscore.cpp +++ b/src/score/tmainscore.cpp @@ -65,6 +65,7 @@ TmainScore::TmainScore(QWidget* parent) : staff()->setZValue(11); // to be above next staves - TnoteControl requires it m_acts = new TscoreActions(this, gl->path); + restoreNotesSettings(); addStaff(staff()); // set preferred clef setClef(gl->S->clef); @@ -74,7 +75,7 @@ TmainScore::TmainScore(QWidget* parent) : m_noteName << 0 << 0; // set note colors - restoreNotesSettings(); +// restoreNotesSettings(); setScordature(); setEnabledDblAccid(gl->S->doubleAccidentalsEnabled); setEnableKeySign(gl->S->keySignatureEnabled); @@ -87,8 +88,6 @@ TmainScore::TmainScore(QWidget* parent) : isExamExecuting(false); - -// connect(this, SIGNAL(pianoStaffSwitched()), this, SLOT(onPianoSwitch())); } @@ -115,9 +114,25 @@ void TmainScore::acceptSettings() { if ((bool)staff()->scoreKey() != gl->S->keySignatureEnabled) { setEnableKeySign(gl->S->keySignatureEnabled); } - //TODO - // - update notes when names were enabled or disabled - refresh its button state - // - update extra accidentals as well + restoreNotesSettings(); + bool nameColorChanged = false; + if (gl->S->nameColor != TscoreNote::nameColor()) { + nameColorChanged = true; + m_acts->noteNames()->setThisColors(gl->S->nameColor, palette().highlightedText().color()); + } + if (gl->S->namesOnScore != m_acts->noteNames()->isChecked() || nameColorChanged) { + m_acts->noteNames()->setChecked(gl->S->namesOnScore); + for (int st = 0; st < m_staves.size(); st++) { + for (int no = 0; no < m_staves[st]->count(); no++) { + if (m_acts->noteNames()->isChecked()) { + if (nameColorChanged) // remove name to pain it with new highlight + m_staves[st]->noteSegment(no)->removeNoteName(); + m_staves[st]->noteSegment(no)->showNoteName(); + } else + m_staves[st]->noteSegment(no)->removeNoteName(); + } + } + } if (gl->instrument == e_classicalGuitar || gl->instrument == e_electricGuitar) setScordature(); @@ -132,10 +147,12 @@ void TmainScore::acceptSettings() { staff()->scoreKey()->showKeyName(gl->S->showKeySignName); // setAmbitus(Tnote(gl->loString().getChromaticNrOfNote()-1), // Tnote(gl->hiString().getChromaticNrOfNote()+gl->GfretsNumber+1)); - restoreNotesSettings(); +// restoreNotesSettings(); enableAccidToKeyAnim(false); // prevent accidental animation to empty note - if (gl->S->keySignatureEnabled) + if (gl->S->keySignatureEnabled) { + TkeySignature::setNameStyle(gl->S->nameStyleInKeySign, gl->S->majKeyNameSufix, gl->S->minKeyNameSufix); setKeySignature(keySignature()); + } enableAccidToKeyAnim(true); } @@ -196,7 +213,7 @@ void TmainScore::noteWasSelected(int index) { emit noteWasChanged(index, *st->getNote(index)); } -int m_tempo = 60000 / 120, m_playedIndex; + void TmainScore::playScore() { if (m_scoreIsPlayed) { m_scoreIsPlayed = false; @@ -208,7 +225,7 @@ void TmainScore::playScore() { m_scoreIsPlayed = true; m_playTimer = new QTimer(this); connect(m_playTimer, SIGNAL(timeout()), this, SLOT(playSlot())); - m_playTimer->start(m_tempo); + m_playTimer->start(60000 / gl->S->tempo); m_playedIndex = m_currentIndex - 1; playSlot(); } @@ -547,14 +564,6 @@ void TmainScore::whenNoteWasChanged(int index, Tnote note) { //########################################## PROTECTED ############################################### //#################################################################################################### -void TmainScore::onPianoSwitch() { - restoreNotesSettings(); - if (*gl->Gtune() != Ttune::stdTune) - setScordature(); -} - - -int m_nameClickCounter; void TmainScore::showNameMenu(TscoreNote* sn) { if (!m_nameMenu) { m_nameMenu = new TnoteName(parentWidget()); @@ -685,8 +694,8 @@ void TmainScore::noteAddingSlot(int staffNr, int noteToAdd) { // qDebug() << "selected note moved forward"; m_currentIndex++; } -// if (m_namesButt->isChecked()) -// m_staves[staffNr]->noteSegment(noteToAdd)->showNoteName(); + if (gl->S->namesOnScore) + m_staves[staffNr]->noteSegment(noteToAdd)->showNoteName(); m_staves[staffNr]->noteSegment(noteToAdd)->enableAccidToKeyAnim(true); } @@ -934,6 +943,8 @@ void TmainScore::performScordatureSet() { void TmainScore::createActions() { m_settBar = new QToolBar(); + m_acts->noteNames()->setThisColors(gl->S->nameColor, palette().highlightedText().color()); + m_acts->noteNames()->setChecked(gl->S->namesOnScore); m_settBar->addWidget(m_acts->noteNames()); m_settBar->addWidget(m_acts->extraAccids()); @@ -966,14 +977,16 @@ void TmainScore::createActions() { void TmainScore::restoreNotesSettings() { // if (gl->S->enharmNotesColor == -1) // gl->S->enharmNotesColor = palette().highlight().color(); + TscoreNote::setNameColor(gl->S->nameColor); + staff()->noteSegment(0)->right()->adjustSize(); if (gl->S->pointerColor == -1) { gl->S->pointerColor = Tcolor::invert(palette().highlight().color()); gl->S->pointerColor.setAlpha(200); } -// if (staff()->count()) -// staff()->noteSegment(0)->setPointedColor(gl->S->pointerColor); - for (int i = 0; i < staff()->count(); i++) - staff()->noteSegment(0)->enableAccidToKeyAnim(true); + if (staff()->count()) + staff()->noteSegment(0)->setPointedColor(gl->S->pointerColor); +// for (int i = 0; i < staff()->count(); i++) +// staff()->noteSegment(0)->enableAccidToKeyAnim(true); // staff()->noteSegment(1)->setReadOnly(true); // staff()->noteSegment(1)->setColor(gl->S->enharmNotesColor); // staff()->noteSegment(2)->setReadOnly(true); @@ -1087,7 +1100,7 @@ void TmainScore::addStaff(TscoreStaff* st) { st->disconnect(SIGNAL(clefChanged(Tclef))); m_staves << st; } - if (m_acts->noteNames()->isChecked()) + if (gl->S->namesOnScore) m_staves.last()->noteSegment(0)->showNoteName(); m_staves.last()->setStafNumber(m_staves.size() - 1); m_staves.last()->setExtraAccids(m_acts->extraAccids()->isChecked()); diff --git a/src/score/tmainscore.h b/src/score/tmainscore.h index 5d2806e2f..071c93575 100644 --- a/src/score/tmainscore.h +++ b/src/score/tmainscore.h @@ -140,8 +140,6 @@ protected: TscoreStaff* currentStaff(); protected slots: - /** Refresh some things after switch scordature, notes state and color. */ - void onPianoSwitch(); // void strikeBlinkingFinished(); // void keyBlinkingFinished(); // void finishCorrection(); @@ -211,6 +209,7 @@ private: QPointer<QTimer> m_playTimer; TscoreKeys *m_keys; /** Score shortcuts */ TscoreActions *m_acts; /** Score actions (tool bars icons/buttons) */ + int m_nameClickCounter, m_playedIndex; }; #endif // TMAINSCORE_H diff --git a/src/score/tscoreactions.cpp b/src/score/tscoreactions.cpp index a3a8db936..6679f16a1 100644 --- a/src/score/tscoreactions.cpp +++ b/src/score/tscoreactions.cpp @@ -57,7 +57,6 @@ TscoreActions::TscoreActions(TmainScore* sc, const QString& path) : m_accidsButt->setThisColors(Qt::red, sc->palette().highlightedText().color()); m_namesButt = new TpushButton("c", sc); m_namesButt->setStatusTip(tr("Shows names of all notes on the score")); - m_namesButt->setThisColors(Qt::darkCyan, sc->palette().highlightedText().color()); QList<TpushButton*> buttons; buttons << m_accidsButt << m_namesButt; for (int i = 0; i < buttons.size(); i++) { diff --git a/src/settings/tnotenamesettings.cpp b/src/settings/tnotenamesettings.cpp index b2a1248d5..193cb12eb 100644 --- a/src/settings/tnotenamesettings.cpp +++ b/src/settings/tnotenamesettings.cpp @@ -51,8 +51,9 @@ TnoteNameSettings::TnoteNameSettings(QWidget *parent) : m_nameInScoreChB = new QCheckBox(tr("note name in the score"), this); m_nameInScoreChB->setStatusTip(tr("Shows names of all notes on the score")); + m_nameInScoreChB->setChecked(gl->S->namesOnScore); QLabel *nameColorLab = new QLabel(tr("names highlight color"), this); - m_nameColorButt = new TcolorButton(QColor(), this); + m_nameColorButt = new TcolorButton(gl->S->nameColor, this); QHBoxLayout *nameScoreLay = new QHBoxLayout; nameScoreLay->addWidget(m_nameInScoreChB); nameScoreLay->addStretch(2); @@ -63,9 +64,9 @@ TnoteNameSettings::TnoteNameSettings(QWidget *parent) : mainLay->addStretch(1); m_octInNameCh = new QCheckBox(tr("show octave in name of note"),this); - mainLay->addWidget(m_octInNameCh, 0, Qt::AlignCenter); - m_octInNameCh->setStatusTip(tr("Shows formatted note name. For small octave - the name is small letter,<br>for great octave - the name starts with a capital letter,<br>for one-line, digit <sup>1</sup> is added, and so on." )); - m_octInNameCh->setChecked(gl->S->octaveInNoteNameFormat); + mainLay->addWidget(m_octInNameCh, 0, Qt::AlignCenter); + m_octInNameCh->setStatusTip(tr("Shows formatted note name. For small octave - the name is small letter,<br>for great octave - the name starts with a capital letter,<br>for one-line, digit <sup>1</sup> is added, and so on." )); + m_octInNameCh->setChecked(gl->S->octaveInNoteNameFormat); mainLay->addStretch(1); setLayout(mainLay); @@ -84,6 +85,8 @@ void TnoteNameSettings::saveSettings() { gl->S->octaveInNoteNameFormat = m_octInNameCh->isChecked(); gl->S->solfegeStyle = m_nameStyleGr->getSolfegeStyle(); gl->S->seventhIs_B = is7th_b(); + gl->S->namesOnScore = m_nameInScoreChB->isChecked(); + gl->S->nameColor = m_nameColorButt->getColor(); } @@ -98,6 +101,8 @@ void TnoteNameSettings::restoreDefaults() { } seventhNoteWasChanged(m_select7->is7th_B()); m_octInNameCh->setChecked(true); + m_nameColorButt->setColor(Qt::darkCyan); + m_nameInScoreChB->setChecked(true); } diff --git a/src/settings/tscoresettings.cpp b/src/settings/tscoresettings.cpp index 39c24aa0e..3888f8186 100644 --- a/src/settings/tscoresettings.cpp +++ b/src/settings/tscoresettings.cpp @@ -240,7 +240,7 @@ void TscoreSettings::saveSettings() { gl->S->minKeyNameSufix = m_minEdit->text(); gl->S->nameStyleInKeySign = m_nameStyleGr->getNameStyle(); gl->S->showKeySignName = m_enablKeyNameGr->isChecked(); - TkeySignature::setNameStyle(gl->S->nameStyleInKeySign, gl->S->majKeyNameSufix, gl->S->minKeyNameSufix); +// TkeySignature::setNameStyle(gl->S->nameStyleInKeySign, gl->S->majKeyNameSufix, gl->S->minKeyNameSufix); } gl->S->pointerColor = m_notePointColorBut->getColor(); gl->S->pointerColor.setAlpha(200); @@ -248,6 +248,7 @@ void TscoreSettings::saveSettings() { gl->S->doubleAccidentalsEnabled = m_dblAccChBox->isChecked(); gl->S->showEnharmNotes = m_otherEnharmChBox->isChecked(); gl->S->enharmNotesColor = m_enharmColorBut->getColor(); + gl->S->tempo = m_tempoSpin->value(); } @@ -272,6 +273,7 @@ void TscoreSettings::restoreDefaults() { m_dblAccChBox->setChecked(false); m_otherEnharmChBox->setChecked(false); m_enharmColorBut->setColor(palette().highlight().color()); + m_tempoSpin->setValue(120); } -- GitLab