diff --git a/src/qml/settings/InstrumentPage.qml b/src/qml/settings/InstrumentPage.qml index 1a3ae0e27d61f757e28a58526d9029da713e4357..d2e76e6ea4dce37d98d95c0e6ba1b2890199b3c8 100644 --- a/src/qml/settings/InstrumentPage.qml +++ b/src/qml/settings/InstrumentPage.qml @@ -18,7 +18,7 @@ Flickable { contentHeight: instrCol.height + NOO.factor() * 2 contentWidth: Math.max(width, NOO.factor() * 35) - property bool first: true // read props first time from GLOB but when instrument changed then from its profile + property bool first: true // read props first time from GLOB but when instrument changes then from its profile ScrollBar.vertical: ScrollBar { active: false; visible: active } @@ -36,19 +36,20 @@ Flickable { if (first) { transp.shift = GLOB.transposition prefFlatRadio.checked = GLOB.preferFlats - first = false } else { + settings.instrument = instrument var ins = NOO.instr(instrument) + settings,clef = ins.clef transp.shift = ins.transposition prefFlatRadio.checked = ins.isSax ? true : false prefSharpRadio.checked = ins.isSax ? false : true tuningCombo.model = instrument === Tinstrument.BassGuitar ? NOO.bassTunings() : NOO.guitarTunings() if (ins.isGuitar) { - score.clef = ins.clef if (instrument === Tinstrument.BassGuitar) setTuning(NOO.tuning(Ttune.Bass4_EADG)) else setTuning(NOO.tuning(Ttune.Standard_EADGBE)) + fretsNrSpin.value = ins.fretNumber } else if (ins.type === Tinstrument.NoInstrument) { setTuning(NOO.tuning(score.scoreObj.lowestNote(), score.scoreObj.highestNote(), NOO.emptyNote(), NOO.emptyNote(), NOO.emptyNote(), NOO.emptyNote())) } @@ -57,29 +58,29 @@ Flickable { } } - Grid { - visible: NOO.instr(instrSel.instrument).isGuitar - anchors.horizontalCenter: parent.horizontalCenter - spacing: NOO.factor() - columns: parent.width < NOO.factor() * 50 ? 1 : 2 - horizontalItemAlignment: Grid.AlignHCenter - Row { - spacing: NOO.factor() - Text { text: qsTr("number of frets:"); anchors.verticalCenter: parent.verticalCenter; color: activPal.text } - TspinBox { id: fretsNrSpin; from: 15; to: 24; value: GLOB.fretNumber } - } - Row { - spacing: NOO.factor() - Text { text: qsTr("number of strings:"); anchors.verticalCenter: parent.verticalCenter; color: activPal.text } - TspinBox { id: stringNrSpin; from: 3; to: 6; value: GLOB.stringNumber() } - } - } - Tile { visible: instrSel.instrument <= Tinstrument.BassGuitar Column { spacing: NOO.factor() width: parent.width + Grid { + visible: NOO.instr(instrSel.instrument).isGuitar + anchors.horizontalCenter: parent.horizontalCenter + spacing: NOO.factor() + columns: parent.width < NOO.factor() * 50 ? 1 : 2 + horizontalItemAlignment: Grid.AlignHCenter + Row { + spacing: NOO.factor() + Text { text: qsTr("number of frets:"); anchors.verticalCenter: parent.verticalCenter; color: activPal.text } + TspinBox { id: fretsNrSpin; from: 15; to: 24; value: GLOB.fretNumber } + } + Row { + spacing: NOO.factor() + Text { text: qsTr("number of strings:"); anchors.verticalCenter: parent.verticalCenter; color: activPal.text } + TspinBox { id: stringNrSpin; from: 3; to: 6; value: GLOB.stringNumber() } + } + } + Item { width: NOO.factor(); height: NOO.factor() } Row { spacing: NOO.factor() anchors.horizontalCenter: parent.horizontalCenter @@ -104,6 +105,8 @@ Flickable { meter: Tmeter.NoMeter scoreObj.onClicked: tuningCombo.currentIndex = tuningCombo.count - 1 scoreObj.editMode: true + clef: settings.clef + onClefChanged: settings.clef = clef Component.onCompleted: { stringNrSpin.valueModified.connect(strNrChanged) tuningCombo.activated.connect(tuningSelected) @@ -204,16 +207,17 @@ Flickable { showOtherPosChB.checked = GLOB.showOtherPos fretDots.text = GLOB.markedFrets var tmpTrans = GLOB.transposition - instrSel.instrument = GLOB.instrument.type - (GLOB.instrument.type === 0 ? -1 : 1) // FIXME: workaround for Qt 5.10.1 and above - score.clef = GLOB.clefType instrSel.instrument = GLOB.instrument.type transp.shift = tmpTrans if (GLOB.instrument.isGuitar) { - if (GLOB.tuning.type === Ttune.Custom) - tuningCombo.currentIndex = tuningCombo.count - 1 - else - tuningCombo.currentIndex = GLOB.tuning.type - (GLOB.instrument.type === Tinstrument.BassGuitar ? 100 : 0) + if (GLOB.tuning.type === Ttune.Custom) { + setTuning(NOO.tuning(GLOB.tuning.string(1), GLOB.tuning.string(2), GLOB.tuning.string(3), + GLOB.tuning.string(4), GLOB.tuning.string(5), GLOB.tuning.string(6))) + tuningCombo.currentIndex = tuningCombo.count - 1 + } else + tuningCombo.currentIndex = GLOB.tuning.type - (GLOB.instrument.type === Tinstrument.BassGuitar ? 100 : 0) } + first = false } } @@ -230,6 +234,7 @@ Flickable { score.deleteLast() } } + stringNrSpin.value = t.stringNumber } function save() { diff --git a/src/qml/settings/ScorePage.qml b/src/qml/settings/ScorePage.qml index db6ecb009aada8f94c5824ec59e3fb54b60e0f14..55916e08318408c84523a230b17502ffe81634f6 100644 --- a/src/qml/settings/ScorePage.qml +++ b/src/qml/settings/ScorePage.qml @@ -23,7 +23,7 @@ Column { StackLayout { id: swipePages - height: parent.height - headList.height - NOO.factor() / 2 + height: parent.height - headList.height width: parent.width Tflickable { // 1st page (general) @@ -174,6 +174,7 @@ Column { width: parent.width spacing: NOO.isAndroid() ? 2 : NOO.factor() / 2 Text { + id: clefText text: qsTr("Select default clef for the application.") + "<br><b>" + qsTr("Remember! Not all clefs are suitable for some possible tunings or instrument types!") + "<b>" textFormat: Text.StyledText @@ -184,8 +185,9 @@ Column { } ClefMenu { id: clefs - width: parent.width; height: swipePages.height - NOO.factor() * 5 - Component.onCompleted: selClef = GLOB.clefType + width: parent.width; height: swipePages.height - parent.spacing - clefText.height + selClef: settings.clef + onSelClefChanged: settings.clef = selClef } } @@ -296,7 +298,7 @@ Column { GLOB.seventhIsB = is7BSelector.is7B GLOB.namesOnScore = namesOnScoreChB.checked GLOB.nameColor = nameColorButt.color - GLOB.clefType = clefs.selClef + // GLOB.clefType saved in TsettingsDialog.qml if (GLOB.keySignatureEnabled) { GLOB.showKeyName = showKeyNamesChB.checked if (GLOB.showKeyName) { @@ -314,7 +316,7 @@ Column { enharmNoteColor.color = Qt.rgba(0, 0.6352941176470588, 0.6352941176470588, 1) doubleAccidsChB.checked = false pointerColorButt.color = "pink" - clefs.selClef = GLOB.instrument.clef + settings.clef = GLOB.instrument.clef enableKeyChB.checked = false musicalRadio.checked = true diff --git a/src/qml/settings/SoundPage.qml b/src/qml/settings/SoundPage.qml index 00d8805b4900c884a1023f0cb2113f8723f54ea3..3b920d50dc762e2d8d06e50d115adb9f5de64396 100644 --- a/src/qml/settings/SoundPage.qml +++ b/src/qml/settings/SoundPage.qml @@ -81,7 +81,8 @@ Column { TlabelText { text: qsTr("minimum note duration") } TspinBox { id: minDurSpin - from: 80; to: 1000 + from: settings.instrument !== 3 ? 80 : 160 // longer note if bass + to: 1000 stepSize: 10 editable: true } diff --git a/src/qml/settings/TsettingsDialog.qml b/src/qml/settings/TsettingsDialog.qml index 29e9aed4200be69425695869d5defa121487f987..dc14a34be69b6ba1bdf87e62113e709c3a72e513 100644 --- a/src/qml/settings/TsettingsDialog.qml +++ b/src/qml/settings/TsettingsDialog.qml @@ -7,6 +7,16 @@ import QtQuick.Controls 2.2 Item { + id: settings + + property int clef: GLOB.clefType + property int instrument: GLOB.instrument.typeINT + + onInstrumentChanged: { + if (pages.buttons.length > 2) + pages.buttons[2].pixmap = NOO.pix("pane/i-0" + instrument) + } + width: parent.width height: parent.height @@ -28,6 +38,7 @@ Item { } function apply() { + GLOB.clefType = clef // it can be changed either by score or instrument page for (var i = 0; i < pages.pages.length; ++i) { if (typeof(pages.pages[i]) === 'object') pages.pages[i].save()