Skip to content

Commit

Permalink
Percussion panel - tweaks to percussion preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
mathesoncalum committed Jan 13, 2025
1 parent 7469191 commit 68e434e
Showing 1 changed file with 95 additions and 65 deletions.
160 changes: 95 additions & 65 deletions src/appshell/qml/Preferences/PercussionPreferencesPage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,14 @@ PreferencesPage {
id: percussionPanelPreferences

title: qsTrc("appshell/preferences", "Percussion")
rowSpacing: 20

navigation.section: root.navigationSection

CheckBox {
id: unpitchedSelectedCheckbox

visible: percussionPreferencesModel.useNewPercussionPanel
enabled: percussionPreferencesModel.useNewPercussionPanel
width: parent.width

text: qsTrc("appshell/preferences", "Open the percussion panel when an unpitched staff is selected")
Expand All @@ -65,109 +66,138 @@ PreferencesPage {
}
}

StyledTextLabel {
id: padSwapInfo
Column {
id: swappingOptionsColumn

visible: percussionPreferencesModel.useNewPercussionPanel
width: parent.width
spacing: 12

horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
text: qsTrc("notation/percussion", "When swapping the positions of two drum pads:")
}

RadioButtonGroup {
id: radioButtons
StyledTextLabel {
id: padSwapInfo

property int navigationRowStart: unpitchedSelectedCheckbox.navigation.row + 1
property int navigationRowEnd: radioButtons.navigationRowStart + model.length
enabled: percussionPreferencesModel.useNewPercussionPanel
width: parent.width

visible: percussionPreferencesModel.useNewPercussionPanel
horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
text: qsTrc("notation/percussion", "When swapping the positions of two drum pads:")
}

width: parent.width
spacing: percussionPanelPreferences.spacing
RadioButtonGroup {
id: radioButtons

orientation: ListView.Vertical
property int navigationRowStart: unpitchedSelectedCheckbox.navigation.row + 1
property int navigationRowEnd: radioButtons.navigationRowStart + model.length

model: [
{ text: qsTrc("notation/percussion", "Move MIDI notes and keyboard shortcuts with their sounds"), value: true },
{ text: qsTrc("notation/percussion", "Leave MIDI notes and keyboard shortcuts fixed to original pad positions"), value: false }
]
enabled: percussionPreferencesModel.useNewPercussionPanel

delegate: Row {
width: parent.width
spacing: 6
spacing: swappingOptionsColumn.spacing

orientation: ListView.Vertical

model: [
{ text: qsTrc("notation/percussion", "Move MIDI notes and keyboard shortcuts with their sounds"), value: true },
{ text: qsTrc("notation/percussion", "Leave MIDI notes and keyboard shortcuts fixed to original pad positions"), value: false }
]

delegate: Row {
width: parent.width
spacing: 6

RoundedRadioButton {
id: radioButton
RoundedRadioButton {
id: radioButton

anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenter: parent.verticalCenter

navigation.name: modelData.text
navigation.panel: percussionPanelPreferences.navigation
navigation.row: radioButtons.navigationRowStart + model.index
navigation.name: modelData.text
navigation.panel: percussionPanelPreferences.navigation
navigation.row: radioButtons.navigationRowStart + model.index

checked: modelData.value === percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts
checked: modelData.value === percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts

onToggled: {
percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts = modelData.value
onToggled: {
percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts = modelData.value
}
}
}

//! NOTE: Can't use radioButton.text because it won't wrap
StyledTextLabel {
width: parent.width - parent.spacing - radioButton.width
//! NOTE: Can't use radioButton.text because it won't wrap
StyledTextLabel {
width: parent.width - parent.spacing - radioButton.width

anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenter: parent.verticalCenter

horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
text: modelData.text
horizontalAlignment: Text.AlignLeft
wrapMode: Text.Wrap
text: modelData.text

MouseArea {
id: mouseArea
MouseArea {
id: mouseArea

anchors.fill: parent
anchors.fill: parent

onClicked: {
percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts = modelData.value
onClicked: {
percussionPreferencesModel.percussionPanelMoveMidiNotesAndShortcuts = modelData.value
}
}
}
}
}

CheckBox {
id: alwaysAsk

enabled: percussionPreferencesModel.useNewPercussionPanel
width: parent.width

text: qsTrc("global", "Always ask")

navigation.name: "AlwaysAskCheckBox"
navigation.panel: percussionPanelPreferences.navigation
navigation.row: radioButtons.navigationRowEnd

checked: percussionPreferencesModel.showPercussionPanelPadSwapDialog

onClicked: {
percussionPreferencesModel.showPercussionPanelPadSwapDialog = !alwaysAsk.checked
}
}
}

CheckBox {
id: alwaysAsk
Row {
id: useLegacyToggleRow

visible: percussionPreferencesModel.useNewPercussionPanel
height: useLegacyToggle.height
width: parent.width

text: qsTrc("global", "Always ask")
spacing: 6

navigation.name: "AlwaysAskCheckBox"
navigation.panel: percussionPanelPreferences.navigation
navigation.row: radioButtons.navigationRowEnd
ToggleButton {
id: useLegacyToggle

checked: percussionPreferencesModel.showPercussionPanelPadSwapDialog
checked: !percussionPreferencesModel.useNewPercussionPanel

onClicked: {
percussionPreferencesModel.showPercussionPanelPadSwapDialog = !alwaysAsk.checked
navigation.name: "UseLegacyPercussionPanel"
navigation.panel: percussionPanelPreferences.navigation
navigation.row: alwaysAsk.navigation.row + 1

onToggled: {
percussionPreferencesModel.useNewPercussionPanel = !percussionPreferencesModel.useNewPercussionPanel
}
}
}

FlatButton {
id: useNewPercussionPanel
StyledTextLabel {
id: legacyToggleInfo

text: percussionPreferencesModel.useNewPercussionPanel ? qsTrc("notation/percussion", "Switch to old percussion panel")
: qsTrc("notation/percussion", "Switch to new percussion panel")
enabled: percussionPreferencesModel.useNewPercussionPanel

navigation.name: "SwitchPercussionPanels"
navigation.panel: percussionPanelPreferences.navigation
navigation.row: alwaysAsk.navigation.row + 1
height: parent.height

horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter

onClicked: {
percussionPreferencesModel.useNewPercussionPanel = !percussionPreferencesModel.useNewPercussionPanel
wrapMode: Text.Wrap
text: qsTrc("notation/percussion", "Use legacy percussion panel")
}
}
}
Expand Down

0 comments on commit 68e434e

Please sign in to comment.