Skip to content
Snippets Groups Projects
MainScore.qml 3.48 KiB
Newer Older
/***************************************************************************
 *   Copyright (C) 2017 by Tomasz Bojczuk                                  *
 *   seelook@gmail.com                                                     *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 3 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *  You should have received a copy of the GNU General Public License      *
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
 ***************************************************************************/

import QtQuick 2.7
import QtQuick.Controls 2.0


Score {
  id: mainScore

  width: parent.width

  property alias scoreMenu: scoreMenu
  property TnoteItem currentNote: null
  Rectangle { // note highlight
    parent: currentNote
    visible: currentNote != null
    width: currentNote ? (currentNote.width - currentNote.alterWidth) * 1.5 : 0
    height: currentNote ? Math.min(12.0, currentNote.notePosY + 6.0) : 0
    x: currentNote ? -width * 0.25 : 0
    y: currentNote ? Math.min(currentNote.height - height, Math.max(0.0, currentNote.notePosY - height / 2.0)) : 0
    color: Qt.rgba(activPal.highlight.r, activPal.highlight.g, activPal.highlight.b, 0.3)
    z: -1
    radius: width / 3.0
  }

  NoteCursor {
    parent: scoreObj.activeNote
    anchors.fill: parent
    yPos: scoreObj.activeYpos
    upperLine: scoreObj.upperLine
    onClicked: {
      scoreObj.noteClicked(y)
      mainScore.currentNote = scoreObj.activeNote
    }
  }

  Menu {
      id: scoreMenu
      width: nootkaWindow.fontSize * 15

      MenuItem {
        text: qsTr("Additional accidentals")
        checkable: true
      }
      MenuItem {
        text: qsTr("Show note names")
        checkable: true
      }
      MenuItem {
        id: zoomOut
        text: qsTr("Zoom score out")
        onTriggered: scaleFactor = Math.max(0.4, scaleFactor - 0.2)
      }
      MenuItem {
        id: zoomIn
        text: qsTr("Zoom score in")
        onTriggered:  scaleFactor = Math.min(scaleFactor + 0.2, 1.0)
      }
  Shortcut { sequence: StandardKey.ZoomOut; onActivated: zoomOut.triggered() }
  Shortcut { sequence: StandardKey.ZoomIn; onActivated: zoomIn.triggered() }
  Shortcut {
    sequence: StandardKey.MoveToNextChar;
    onActivated: {
      if (currentNote) {
          if (currentNote.index < notesCount - 1)
            currentNote =  scoreObj.note(currentNote.index + 1)
      } else
          currentNote = scoreObj.note(0)
    }
  }
  Shortcut {
    sequence: StandardKey.MoveToPreviousChar;
    onActivated: {
      if (currentNote) {
          if (currentNote.index > 0)
            currentNote = scoreObj.note(currentNote.index - 1)
      } else {
          currentNote = scoreObj.note(0)
      }
    }
  }