diff --git a/src/charts/qml/ChartTipMelody.qml b/src/charts/qml/ChartTipMelody.qml index a0d758b42c37f2e130785f76e8807a20af93738e..89006fcacbdab594348b4002863e7fab178e0c80 100644 --- a/src/charts/qml/ChartTipMelody.qml +++ b/src/charts/qml/ChartTipMelody.qml @@ -4,6 +4,7 @@ import "../" import "../score" +import Nootka import Nootka.Charts 1.0 import QtQuick 2.12 import Score 1.0 diff --git a/src/charts/tbarchartdelegate.cpp b/src/charts/tbarchartdelegate.cpp index 95e339d61c58b04c1998037e9a6811fa1bead1d1..d2080fa2caa4ea7bc2f15464685d692e187c1e72 100644 --- a/src/charts/tbarchartdelegate.cpp +++ b/src/charts/tbarchartdelegate.cpp @@ -38,12 +38,8 @@ QString trStyle(QColor c) TbarChartDelegate::TbarChartDelegate(QQuickItem *parent) : QQuickPaintedItem(parent) { - // setRenderTarget(QQuickPaintedItem::FramebufferObject); setAntialiasing(true); - - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - update(); - }); + qApp->installEventFilter(this); } TbarChartDelegate::~TbarChartDelegate() @@ -176,3 +172,11 @@ void TbarChartDelegate::paint(QPainter *painter) painter->setBrush(QBrush(grad)); painter->drawRoundedRect(rect, width() / 8.0, width() / 8.0); } + +bool TbarChartDelegate::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + update(); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/charts/tbarchartdelegate.h b/src/charts/tbarchartdelegate.h index 256ed6016108cc908a7836e02d685c1100e63bf2..d25e1e74d7c3c7df47f9a2c95641a7c3e8ed77bc 100644 --- a/src/charts/tbarchartdelegate.h +++ b/src/charts/tbarchartdelegate.h @@ -68,6 +68,11 @@ signals: void groupNrChanged(); void examChanged(); +protected: +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif + private: TchartItem *m_chart = nullptr; bool m_hovered = false; diff --git a/src/charts/tlinchartdelegate.cpp b/src/charts/tlinchartdelegate.cpp index 3f6aad091c8df1a9b6c30124e8e1b080b726eee6..f0697ad397d38cd2a0d450996301cefa7b707ebf 100644 --- a/src/charts/tlinchartdelegate.cpp +++ b/src/charts/tlinchartdelegate.cpp @@ -45,19 +45,16 @@ TlinChartDelegate::TlinChartDelegate(QQuickItem *parent) : QQuickPaintedItem(parent) { - // setRenderTarget(QQuickPaintedItem::FramebufferObject); setAntialiasing(true); setAcceptHoverEvents(true); m_qInf = new TtipInfo(); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - update(); - }); connect(this, &QQuickItem::heightChanged, this, [=] { calcProgressRangeY(); emit pointYChanged(); }); + qApp->installEventFilter(this); } TlinChartDelegate::~TlinChartDelegate() @@ -398,3 +395,11 @@ void TlinChartDelegate::calcProgressRangeY() m_thisAverY = 0.0; } } + +bool TlinChartDelegate::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + update(); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/charts/tlinchartdelegate.h b/src/charts/tlinchartdelegate.h index 3cdceeecc2a3732b6ab6b72f2b45e0840243ee0c..860b8539d4ffeef5a266e9316b2540dbec1f7765 100644 --- a/src/charts/tlinchartdelegate.h +++ b/src/charts/tlinchartdelegate.h @@ -110,6 +110,9 @@ protected: void hoverEnterEvent(QHoverEvent *e) override; void hoverMoveEvent(QHoverEvent *e) override; void hoverLeaveEvent(QHoverEvent *) override; +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif private: TchartItem *m_chart = nullptr; diff --git a/src/libs/core/score/tbeamobject.cpp b/src/libs/core/score/tbeamobject.cpp index 589600bab79e2f20337dc4aa07ab89aa1b59d707..afb55ac98f1bee1df20a0e5f93a1dfbd0c44e3d6 100644 --- a/src/libs/core/score/tbeamobject.cpp +++ b/src/libs/core/score/tbeamobject.cpp @@ -62,19 +62,17 @@ TbeamObject::TbeamObject(TnotePair *sn, TmeasureObject *m) setAntialiasing(true); addNote(sn); setParent(m_measure->score()); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - update(); - }); connect(this, &QQuickPaintedItem::visibleChanged, this, [=] { if (isVisible() && count() > 1) drawBeam(); }); + qApp->installEventFilter(this); } TbeamObject::~TbeamObject() { // qDebug() << " [BEAM] deleted of id" << (m_notes.isEmpty() ? -1 : first()->index()); - for (TnotePair *np : qAsConst(m_notes)) { + for (TnotePair *np : std::as_const(m_notes)) { np->addChange(TnotePair::e_beamChanged); np->setBeam(nullptr); // resetBeam(np); @@ -127,7 +125,7 @@ void TbeamObject::prepareBeam() int stemDirStrength = 0; bool stemsUpPossible = true; qreal hiNote = 99.0, loNote = 0.0; - for (TnotePair *np : qAsConst(m_notes)) { + for (TnotePair *np : std::as_const(m_notes)) { stemDirStrength += np->item()->notePosY() - (m_measure->staff()->upperLine() + (m_measure->score()->isPianoStaff() && np->item()->notePosY() > m_measure->staff()->upperLine() + 13.0 ? 26.0 : 4.0)); @@ -150,7 +148,7 @@ void TbeamObject::prepareBeam() if ((allStemsDown && stemTop < upperMidLine) || (!allStemsDown && stemTop > upperMidLine)) stemTop = upperMidLine; // keep beam on staff middle line } - for (TnotePair *np : qAsConst(m_notes)) { + for (TnotePair *np : std::as_const(m_notes)) { np->note()->rtm.setStemDown(allStemsDown); np->addChange(TnotePair::e_stemDirChanged); np->item()->setStemHeight(qAbs(np->item()->notePosY() - stemTop)); @@ -223,7 +221,7 @@ bool TbeamObject::removeNote(TnotePair *np) { bool deleteBeam = false; int noteId = m_notes.indexOf(np); - if (noteId == -1) { // TODO remove this if does not occur + if (noteId == -1) { qDebug() << " [BEAM] of note id" << first()->index() << "has no note to remove"; return false; } @@ -293,7 +291,7 @@ void TbeamObject::setMeasure(TmeasureObject *m) void TbeamObject::deleteBeam() { m_measure->score()->storeBeam(this); - for (TnotePair *np : qAsConst(m_notes)) { + for (TnotePair *np : std::as_const(m_notes)) { resetBeam(np); } m_16beams.clear(); @@ -302,6 +300,14 @@ void TbeamObject::deleteBeam() m_measure = nullptr; } +bool TbeamObject::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + update(); + } + return QObject::eventFilter(obj, event); +} + void TbeamObject::resetBeam(TnotePair *noteToRemove) { noteToRemove->note()->rtm.setBeam(Trhythm::e_noBeam); // restore beams diff --git a/src/libs/core/score/tbeamobject.h b/src/libs/core/score/tbeamobject.h index 1536c2506766fa6eacf22076fa68468d25d4209f..5706ffcda81f53f21429c204f1c4ffbe05ea1b23 100644 --- a/src/libs/core/score/tbeamobject.h +++ b/src/libs/core/score/tbeamobject.h @@ -95,6 +95,9 @@ protected: void setMeasure(TmeasureObject *m); void deleteBeam(); +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif private: void resetBeam(TnotePair *noteToRemove); diff --git a/src/libs/core/score/tmeasureobject.cpp b/src/libs/core/score/tmeasureobject.cpp index 708b7cf6de848d09092dff6db9cc5ae9fc9f0978..c906a9d5fe41f0df5a136743cf5015f0c16dc48c 100644 --- a/src/libs/core/score/tmeasureobject.cpp +++ b/src/libs/core/score/tmeasureobject.cpp @@ -51,10 +51,7 @@ TmeasureObject::TmeasureObject(int nr, TscoreObject *parent) m_duration = m_score->meter()->duration(); m_free = m_duration; - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - if (m_barLine) - m_barLine->setProperty("color", qApp->palette().text().color()); - }); + qApp->installEventFilter(this); } TmeasureObject::~TmeasureObject() @@ -74,7 +71,7 @@ void TmeasureObject::setStaff(TstaffItem *st) { if (m_staff != st) { m_staff = st; - for (TnotePair *np : qAsConst(m_notes)) + for (TnotePair *np : std::as_const(m_notes)) np->item()->setStaff(m_staff); } } @@ -178,7 +175,7 @@ void TmeasureObject::insertNote(TnoteItem *afterItem) // cut note duration if it is longer than possible measure duration starting from the item auto newRtmList = Trhythm::resolve(workDur > possibleDur ? possibleDur : workDur); Tpairs nl; - for (Trhythm rtm : qAsConst(newRtmList)) { + for (Trhythm rtm : std::as_const(newRtmList)) { Tnote newNote(0, 0, 0, Trhythm(rtm.rhythm(), true)); auto np = m_score->insertSilently(afterItem->index(), newNote, this); m_notes.removeAt(afterIdInBar); @@ -620,6 +617,14 @@ void TmeasureObject::insertSilently(int id, TnotePair *np) np->item()->setNoteNameVisible(true); } +bool TmeasureObject::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + if (m_barLine) + m_barLine->setProperty("color", qApp->palette().text().color()); + } + return QObject::eventFilter(obj, event); +} // ################################################################################################# // ################### PRIVATE ############################################ // ################################################################################################# diff --git a/src/libs/core/score/tmeasureobject.h b/src/libs/core/score/tmeasureobject.h index 80c35ff9f2e2f4e32a6bd44eea88b09c73e1b152..8cd3e187813f1a9bb04dfa226ed172b4214c7769 100644 --- a/src/libs/core/score/tmeasureobject.h +++ b/src/libs/core/score/tmeasureobject.h @@ -196,6 +196,9 @@ protected: * squeezes extra note @p np silently, without invoking visual changes */ void insertSilently(int id, TnotePair *np); +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif private: void clearAccidState(); diff --git a/src/libs/core/score/tnoteitem.cpp b/src/libs/core/score/tnoteitem.cpp index 0c5793975d0efc8619623122816a6042e0783fc8..e54ff3b3b584194362f93ae253b8bb5612835568 100644 --- a/src/libs/core/score/tnoteitem.cpp +++ b/src/libs/core/score/tnoteitem.cpp @@ -102,9 +102,7 @@ TnoteItem::TnoteItem(TstaffItem *staffObj, TnotePair *wrapper) setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton); updateNoteHead(); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - setColor(qApp->palette().text().color()); - }); + qApp->installEventFilter(this); } TnoteItem::~TnoteItem() @@ -944,3 +942,11 @@ void TnoteItem::checkAddLinesVisibility() m_underLoLines[1]->setVisible(v && m_notePosY >= staff()->upperLine() + 34.0); } } + +bool TnoteItem::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + setColor(qApp->palette().text().color()); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/libs/core/score/tnoteitem.h b/src/libs/core/score/tnoteitem.h index 08b8a4d3f6d5b6cc902b57d710cff2d0deba6c67..400f2b83b44a0fe3c23cf9d9eb6c20280cc3edd6 100644 --- a/src/libs/core/score/tnoteitem.h +++ b/src/libs/core/score/tnoteitem.h @@ -213,6 +213,9 @@ protected: void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif private: TstaffItem *m_staff; diff --git a/src/libs/core/score/tscoreobject.cpp b/src/libs/core/score/tscoreobject.cpp index 17b5352a175f75f7c7fe8e98d4f54bde6f1df009..bc007946e8406338a13ffbcb95881447a23a69b9 100644 --- a/src/libs/core/score/tscoreobject.cpp +++ b/src/libs/core/score/tscoreobject.cpp @@ -210,7 +210,7 @@ void TscoreObject::setKeySignature(int k) m_accidInKeyArray[(startVal + sign * (i * 4)) % 7] = 0; } m_keyChanged = true; - for (TmeasureObject *m : qAsConst(m_measures)) + for (TmeasureObject *m : std::as_const(m_measures)) m->keySignatureChanged(); if (notesCount() > 0) adjustScoreWidth(); @@ -1605,11 +1605,11 @@ void TscoreObject::clearScorePrivate() setSelectedItem(nullptr); m_activeBarNr = -1; changeActiveNote(nullptr); - for (TnotePair *s : qAsConst(m_segments)) { + for (TnotePair *s : std::as_const(m_segments)) { s->flush(); m_spareSegments << s; } - for (TmeasureObject *m : qAsConst(m_measures)) { + for (TmeasureObject *m : std::as_const(m_measures)) { m->flush(); m_spareMeasures << m; } diff --git a/src/libs/core/score/tstafflines.cpp b/src/libs/core/score/tstafflines.cpp index a3675dfb23ab90bee245ec847afb4303effba455..7a0f3dd5527b2b97d6d90e5c41605b1f69f10a96 100644 --- a/src/libs/core/score/tstafflines.cpp +++ b/src/libs/core/score/tstafflines.cpp @@ -35,9 +35,7 @@ TstaffLines::TstaffLines(QQuickItem *parent) setRenderTarget(QQuickPaintedItem::FramebufferObject); setAntialiasing(true); setHeight(9.0); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - update(); - }); + qApp->installEventFilter(this); } void TstaffLines::setStaffScale(qreal stScale) @@ -64,9 +62,16 @@ void TstaffLines::paint(QPainter *painter) void TstaffLines::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) { - // QQuickPaintedItem::geometryChange(newGeometry, oldGeometry); if (newGeometry.width() != oldGeometry.width() || newGeometry.height() != oldGeometry.height()) { setTextureSize(QSize(qRound(m_staffScale * newGeometry.width()), qRound(newGeometry.height() * m_staffScale))); update(); } } + +bool TstaffLines::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + update(); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/libs/core/score/tstafflines.h b/src/libs/core/score/tstafflines.h index 0b6d0305e8d7831ab08d76bd15e8fa18742850ec..76948a02a3df6d93a4ac972f65798464a3cf06f0 100644 --- a/src/libs/core/score/tstafflines.h +++ b/src/libs/core/score/tstafflines.h @@ -41,6 +41,9 @@ public: protected: void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif private: qreal m_staffScale = 1.0; diff --git a/src/libs/core/tnootkaqml.cpp b/src/libs/core/tnootkaqml.cpp index 35b06b5fcf504e9976fc45cbabfb39c65d6c7806..f11f8d48cb18d4e088b684ac30cad0584e33df1d 100644 --- a/src/libs/core/tnootkaqml.cpp +++ b/src/libs/core/tnootkaqml.cpp @@ -572,10 +572,7 @@ void TnootkaQML::setQmlEngine(QQmlEngine *e) connect(m_aboutAct, &Taction::triggered, this, &TnootkaQML::aboutActTriggered); m_messageColor = qApp->palette().highlight().color(); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - setMessageColor(qApp->palette().highlight().color()); - m_scoreAct->setBgColor(qApp->palette().highlight().color()); - }); + qApp->installEventFilter(this); } /** @@ -920,3 +917,12 @@ QList<Tnote> &TnootkaQML::scoreNoteList() const { return m_scoreObject->noteList(); } + +bool TnootkaQML::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + setMessageColor(qApp->palette().highlight().color()); + m_scoreAct->setBgColor(qApp->palette().highlight().color()); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/libs/core/tnootkaqml.h b/src/libs/core/tnootkaqml.h index e8ba162eec949bf2c7b43b5a26c4488f7e3b5fbd..b23a0c82a1dff536b6527bb88c1a1636605c9235 100644 --- a/src/libs/core/tnootkaqml.h +++ b/src/libs/core/tnootkaqml.h @@ -313,6 +313,10 @@ protected: void warnNewerVersionSlot(const QString &fileName); +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif + private: static TnootkaQML *m_instance; diff --git a/src/main/tmainscoreobject.cpp b/src/main/tmainscoreobject.cpp index 47a1f9adc595c400cb5dddceca564ff5fed54085..2b6bd00196d3d6827fdeb5050e8f460faf093089 100644 --- a/src/main/tmainscoreobject.cpp +++ b/src/main/tmainscoreobject.cpp @@ -113,7 +113,6 @@ TmainScoreObject::TmainScoreObject(QObject *parent) m_nextNoteAct->createQmlShortcut(&actionsComp, "StandardKey.MoveToNextChar"); m_prevNoteAct->createQmlShortcut(&actionsComp, "StandardKey.MoveToPreviousChar"); - connect(qApp, &QGuiApplication::paletteChanged, this, &TmainScoreObject::paletteSlot); connect(SOUND, &Tsound::playingChanged, this, [=] { m_playAct->setIconTag(SOUND->playing() ? QLatin1String("stopMelody") : QLatin1String("playMelody")); m_playAct->setText(SOUND->playing() ? qTR("QShortcut", "Stop") : qTR("TtoolBar", "Play")); @@ -122,6 +121,7 @@ TmainScoreObject::TmainScoreObject(QObject *parent) isExamChangedSlot(); connect(NOO, &TnootkaQML::wantOpenXml, this, &TmainScoreObject::openXmlFileSlot); + qApp->installEventFilter(this); } TmainScoreObject::~TmainScoreObject() @@ -601,7 +601,8 @@ void TmainScoreObject::isExamChangedSlot() if (m_questionMark) { m_questionMark->setParentItem(qvariant_cast<QQuickItem *>(qobject_cast<QQuickItem *>(m_scoreObj->parent())->property("bgRect"))); m_questionMark->setVisible(false); - paletteSlot(); + if (m_questionMark) + m_questionMark->setProperty("color", scoreBackgroundColor(GLOB->EquestionColor, 40)); } } singleModeSlot(); @@ -657,12 +658,6 @@ void TmainScoreObject::singleModeSlot() } } -void TmainScoreObject::paletteSlot() -{ - if (m_questionMark) - m_questionMark->setProperty("color", scoreBackgroundColor(GLOB->EquestionColor, 40)); -} - void TmainScoreObject::applyCorrectSlot() { markNoteHead(GLOB->correctColor(), m_correctNoteId); @@ -789,3 +784,12 @@ void TmainScoreObject::checkExtraStaves() } } } + +bool TmainScoreObject::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + if (m_questionMark) + m_questionMark->setProperty("color", scoreBackgroundColor(GLOB->EquestionColor, 40)); + } + return QObject::eventFilter(obj, event); +} diff --git a/src/main/tmainscoreobject.h b/src/main/tmainscoreobject.h index 17597db6ba0ed0653305f54336be6ce8cfa1ea39..56d217d24cd8ab3a129ebf7b3f063b4d70e01d4c 100644 --- a/src/main/tmainscoreobject.h +++ b/src/main/tmainscoreobject.h @@ -182,7 +182,6 @@ protected: void randMelodySlot(); void isExamChangedSlot(); void singleModeSlot(); - void paletteSlot(); void getMelodyNameSlot(); void playScoreSlot(); void gotItNoteSelectedSlot(); @@ -193,6 +192,9 @@ protected: void checkSingleNoteVisibility(); void checkExtraStaves(); +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif protected slots: void applyCorrectSlot(); diff --git a/src/main/tnameitem.cpp b/src/main/tnameitem.cpp index cbb37dd993f42d60d2b202b13fba5ed6bf75bd20..f5dad0b1ed03f1d174909b66955be2daa251c437 100644 --- a/src/main/tnameitem.cpp +++ b/src/main/tnameitem.cpp @@ -43,13 +43,10 @@ TnameItem::TnameItem(QQuickItem *parent) m_note.setOctave(-4); m_bgColor = qApp->palette().base().color(); m_bgColor.setAlpha(175); - connect(qApp, &QGuiApplication::paletteChanged, this, [=] { - if (!m_questionAsked) // update color only when question is not asked - changeNameBgColor(qApp->palette().base().color()); - }); connect(GLOB, &Tglobals::showEnharmNotesChanged, this, &TnameItem::nameTextChanged); connect(GLOB, &Tglobals::noteNameStyleChanged, this, &TnameItem::nameTextChanged); connect(GLOB, &Tglobals::seventhIsBChanged, this, &TnameItem::nameTextChanged); + qApp->installEventFilter(this); } TnameItem::~TnameItem() @@ -273,3 +270,19 @@ void TnameItem::finishCorrectAnim() { emit correctionFinished(); } + +bool TnameItem::eventFilter(QObject *obj, QEvent *event) +{ + if (obj == qApp && event->type() == QEvent::ApplicationPaletteChange) { + if (!m_questionAsked) // update color only when question is not asked + changeNameBgColor(qApp->palette().base().color()); + } + return QObject::eventFilter(obj, event); +} + +void TnameItem::changeNameBgColor(const QColor &c) +{ + m_bgColor = c; + m_bgColor.setAlpha(175); + emit bgColorChanged(); +} diff --git a/src/main/tnameitem.h b/src/main/tnameitem.h index 03353ebd8982196f4e347cb12164a69bd3d9492d..811ac253fa0969393ec757ff9440d365383ea120 100644 --- a/src/main/tnameitem.h +++ b/src/main/tnameitem.h @@ -118,13 +118,11 @@ signals: void correctName(); void correctionFinished(); -private: - void changeNameBgColor(const QColor &c) - { - m_bgColor = c; - m_bgColor.setAlpha(175); - emit bgColorChanged(); - } +protected: +#if !defined(Q_OS_ANDROID) + virtual bool eventFilter(QObject *obj, QEvent *event) override; +#endif + void changeNameBgColor(const QColor &c); private: Tnote m_note, m_okNote;