diff --git a/src/libs/core/CMakeLists.txt b/src/libs/core/CMakeLists.txt index 06b5b48503c2e79b9820e75657fe65b50acc838b..72974745b3faf337da8747339a28da4263d7fbd2 100644 --- a/src/libs/core/CMakeLists.txt +++ b/src/libs/core/CMakeLists.txt @@ -32,6 +32,7 @@ set(LIB_NOOTKACORE_SRC music/tmelody.cpp music/tmeter.cpp music/tnotestruct.cpp + music/tnotedata.cpp score/tscoreobject.cpp score/tstaffobject.cpp diff --git a/src/libs/core/instruments/tguitarbg.cpp b/src/libs/core/instruments/tguitarbg.cpp index 4e8e8d910725a1e49b9de13d177ef8d7281bf299..26ad2402749d76312ff3adcf09e37a7885d2ff6b 100644 --- a/src/libs/core/instruments/tguitarbg.cpp +++ b/src/libs/core/instruments/tguitarbg.cpp @@ -99,6 +99,25 @@ void TguitarBg::setNote(const Tnote& n) { } +void TguitarBg::setFingerPos(const TfingerPos& fp) { + QPoint p = fretToPos(fp).toPoint(); + for (int s = 0; s < 6; ++ s) { + if (fp.fret() == 0) { // open string + m_fingerItems[s]->setVisible(false); + m_stringItems[s]->setVisible(fp.str() == s + 1); + } else { // some fret + if (fp.isValid() && fp.str() == s + 1) { + m_fingerItems[s]->setVisible(true); + m_fingerItems[s]->setX(p.x()); + m_fingerItems[s]->setY(p.y() - m_fingerItems[s]->height() * 0.15); + } else + m_fingerItems[s]->setVisible(false); + m_stringItems[s]->setVisible(false); + } + } +} + + qreal TguitarBg::xiiFret() const { return static_cast<qreal>(m_fretsPos[11]); } @@ -260,21 +279,7 @@ void TguitarBg::paint(QPainter* painter) { void TguitarBg::askQuestion(const Tnote& n, int noteData) { p_note = n; TfingerPos fp(static_cast<quint8>(noteData)); - QPoint p = fretToPos(fp).toPoint(); - for (int s = 0; s < 6; ++ s) { - if (fp.fret() == 0) { // open string - m_fingerItems[s]->setVisible(false); - m_stringItems[s]->setVisible(fp.str() == s + 1); - } else { // some fret - if (fp.str() == s + 1) { - m_fingerItems[s]->setVisible(true); - m_fingerItems[s]->setX(p.x()); - m_fingerItems[s]->setY(p.y() - m_fingerItems[s]->height() * 0.15); - } else - m_fingerItems[s]->setVisible(false); - m_stringItems[s]->setVisible(false); - } - } + setFingerPos(fp); } @@ -364,11 +369,17 @@ void TguitarBg::mousePressEvent(QMouseEvent* event) { CHECKTIME ( if (event->buttons() & Qt::LeftButton) { if (m_curStr < 7) { - Tnote n(GLOB->Gtune()->strChromatic(m_curStr + 1) + m_curFret); - setNote(n); m_selectedPos.setPos(m_curStr + 1, m_curFret); + Tnote n(GLOB->Gtune()->strChromatic(m_curStr + 1) + m_curFret); + if (GLOB->showOtherPos()) + setNote(n); // selects all possible positions on the fingerboard + else { // it selects only just clicked position + p_note = n; + setFingerPos(m_selectedPos); + } emit fingerPosChanged(); emit noteChanged(); + hoverLeaveEvent(nullptr); // hide highlight that covers selected fret/string } } ) diff --git a/src/libs/core/instruments/tguitarbg.h b/src/libs/core/instruments/tguitarbg.h index 232a3756a4f77f885abd10d73a0df0fefa2ec1cc..0d837990ea52081996fc8db8bd9c96b913d680e9 100644 --- a/src/libs/core/instruments/tguitarbg.h +++ b/src/libs/core/instruments/tguitarbg.h @@ -63,6 +63,8 @@ public: void setNote(const Tnote& n) override; + void setFingerPos(const TfingerPos& fp); + void paint(QPainter* painter) override; void askQuestion(const Tnote& n, int noteData) override; diff --git a/src/libs/core/tglobals.cpp b/src/libs/core/tglobals.cpp index af57c66165b285910a9aa8826520ae098cc1b3d4..3218c27ff621292622b79f96c8c2e209c810bfcc 100755 --- a/src/libs/core/tglobals.cpp +++ b/src/libs/core/tglobals.cpp @@ -489,7 +489,7 @@ void Tglobals::loadSettings(QSettings* cfg) { if (cfg->contains("fingerColor")) GfingerColor = cfg->value(QStringLiteral("fingerColor")).value<QColor>(); else - GfingerColor = QColor(255, 0, 127, 200); // nice pink + GfingerColor = QColor(255, 0, 127, 150); // nice pink with translucency if (cfg->contains("selectedColor")) GselectedColor = cfg->value(QStringLiteral("selectedColor")).value<QColor>(); else