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