From 95dc70b75164ab0e0a84e8c73a09b753e5a71c3f Mon Sep 17 00:00:00 2001 From: SeeLook <SeeLook@localhost> Date: Thu, 28 Dec 2017 18:07:08 +0100 Subject: [PATCH] Use main score object for displaying key name logic instead of Qt bindings in QML --- src/libs/core/tnootkaqml.cpp | 2 +- src/main/tmainscoreobject.cpp | 9 +++++++++ src/main/tmainscoreobject.h | 4 ++++ src/qml/MainScore.qml | 6 +----- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/libs/core/tnootkaqml.cpp b/src/libs/core/tnootkaqml.cpp index 7819bbfde..d366e97cb 100755 --- a/src/libs/core/tnootkaqml.cpp +++ b/src/libs/core/tnootkaqml.cpp @@ -199,7 +199,7 @@ QString TnootkaQML::minorKeyName(int key) { QString TnootkaQML::majAndMinKeyName(int key) { - return TkeySignature(static_cast<char>(key)).getMajorName() + QLatin1String("<br>") + TkeySignature(static_cast<char>(key)).getMinorName(); + return majorKeyName(key) + QLatin1String("<br>") + minorKeyName(key); } diff --git a/src/main/tmainscoreobject.cpp b/src/main/tmainscoreobject.cpp index f176e0442..33f4392f6 100644 --- a/src/main/tmainscoreobject.cpp +++ b/src/main/tmainscoreobject.cpp @@ -101,6 +101,15 @@ void TmainScoreObject::setScoreObject(TscoreObject* scoreObj) { connect(m_scoreObj, &TscoreObject::singleNoteChanged, this, &TmainScoreObject::singleModeSlot); connect(GLOB, &Tglobals::showEnharmNotesChanged, this, &TmainScoreObject::checkSingleNoteVisibility); connect(GLOB, &Tglobals::enableDoubleAccidsChanged, this, &TmainScoreObject::checkSingleNoteVisibility); + connect(m_scoreObj, &TscoreObject::keySignatureChanged, [=]{ + if (GLOB->keySignatureEnabled() && GLOB->showKeyName() && !GLOB->isExam()) + emit keyNameTextChanged(); + }); +} + + +QString TmainScoreObject::keyNameText() const { + return m_scoreObj ? NOO->majAndMinKeyName(m_scoreObj->keySignature()) : QString(); } diff --git a/src/main/tmainscoreobject.h b/src/main/tmainscoreobject.h index 167e10a72..f8a05d394 100644 --- a/src/main/tmainscoreobject.h +++ b/src/main/tmainscoreobject.h @@ -59,6 +59,7 @@ class TmainScoreObject : public QObject Q_PROPERTY(Taction* zoomOutAct READ zoomOutAct) Q_PROPERTY(Taction* zoomInAct READ zoomInAct) Q_PROPERTY(QList<QObject*> scoreActions READ scoreActions NOTIFY scoreActionsChanged) + Q_PROPERTY(QString keyNameText READ keyNameText NOTIFY keyNameTextChanged) public: explicit TmainScoreObject(QObject* parent = nullptr); @@ -82,6 +83,8 @@ public: QList<QObject*> scoreActions() { return m_scoreActions; } + QString keyNameText() const; + // redirected from TscoreObject void setReadOnly(bool ro); void clearScore(); @@ -102,6 +105,7 @@ public: signals: void scoreActionsChanged(); + void keyNameTextChanged(); // redirected from TscoreObject void clicked(); diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml index 3218a2b13..f7cbcc093 100644 --- a/src/qml/MainScore.qml +++ b/src/qml/MainScore.qml @@ -88,10 +88,7 @@ Score { y: clef === Tclef.PianoStaffClefs ? 3.7 : 6.2 color: activPal.text font { family: "Sans"; pixelSize: 2 } - text: getKeyNameText() - function getKeyNameText() { - return enableKeySign && firstStaff.keySignature ? Noo.majAndMinKeyName(firstStaff.keySignature.key) : "" - } + text: GLOB.showKeyName && enableKeySign ? mainObj.keyNameText : "" } // private @@ -108,7 +105,6 @@ Score { } Connections { target: GLOB - onKeyNameChanged: keyName.text = Qt.binding(keyName.getKeyNameText) onClefTypeChanged: score.clef = GLOB.clefType } Connections { -- GitLab