Skip to content
Snippets Groups Projects
WizardClef.qml 2.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • /** This file is part of Nootka (http://nootka.sf.net)               *
    
     * Copyright (C) 2017-2021 by Tomasz Bojczuk (seelook@gmail.com)     *
    
     * on the terms of GNU GPLv3 license (http://www.gnu.org/licenses)   */
    
    
    SeeLook's avatar
    SeeLook committed
    import "../"
    import Nootka 1.0
    
    import QtQuick 2.12
    
    SeeLook's avatar
    SeeLook committed
    Tflickable {
        id: clefPage
    
    SeeLook's avatar
    SeeLook committed
        // private
        property var instrDetails: null
    
    SeeLook's avatar
    SeeLook committed
        function changeInstrument() {
            if (instrDetails !== null)
                instrDetails.destroy();
    
    SeeLook's avatar
    SeeLook committed
            var instrQML = "WizardOther";
            switch (nootkaWindow.instrument) {
            case 1:
            case 2:
                instrQML = "WizardGuitars";
                break;
            case 3:
                instrQML = "WizardBass";
                break;
            case 4:
                instrQML = "WizardPiano";
                break;
            case 5:
                instrQML = "WizardBando";
                break;
            case 6:
            case 7:
                instrQML = "WizardSax";
                break;
            case 8:
                instrQML = "WizardUkulele";
                break;
            }
            instrDetails = Qt.createComponent("qrc:/wizard/" + instrQML + ".qml").createObject(mainItem);
        }
    
    SeeLook's avatar
    SeeLook committed
        function setInstrParams() {
            var selectedIns = instrPage.getInstrument();
            var instr = NOO.instr(selectedIns);
            if (instrDetails && instr.none) {
                GLOB.clefType = instrDetails.clef;
                GLOB.transposition = instrDetails.transposition;
            } else {
                // saxophones
    
    SeeLook's avatar
    SeeLook committed
                GLOB.clefType = instr.clef;
                if (instrDetails && instr.isSax)
                    GLOB.transposition = instrDetails.transposition;
                else
                    GLOB.transposition = instr.transposition;
            }
            var tuning;
            var empty = NOO.emptyNote();
            if (instr.none && instrDetails)
                tuning = NOO.tuning(instrDetails.getNote(0), instrDetails.getNote(1), empty, empty, empty, empty);
            else
                tuning = NOO.defaultScale(selectedIns);
            if (instr.isGuitar)
                GLOB.markedFrets = instr.ukulele ? "5,7,10,12!" : "5,7,9,12!,15,17";
    
    SeeLook's avatar
    SeeLook committed
            GLOB.setGuitarParams(instr.fretNumber, tuning);
        }
    
    SeeLook's avatar
    SeeLook committed
        height: parent.height
        contentHeight: mainItem.height + NOO.factor() * 2
        contentWidth: width
        Component.onCompleted: changeInstrument()
    
    SeeLook's avatar
    SeeLook committed
        Item {
            id: mainItem
    
    SeeLook's avatar
    SeeLook committed
            y: Math.max(0, (clefPage.height - height) / 2)
            width: parent.width
            height: childrenRect.height
    
    SeeLook's avatar
    SeeLook committed
        Connections {
            target: nootkaWindow
    
            function onInstrumentChanged() : void { changeInstrument() }