Fixed accessibility for edit pitch dialog
This commit is contained in:
parent
97ff3b8ef5
commit
5353fc7660
5 changed files with 65 additions and 36 deletions
|
@ -198,6 +198,7 @@ public:
|
|||
GRADUATION_CAP = 0xF19D,
|
||||
|
||||
SCORE = 0xF319,
|
||||
CLEF_TREBLE = 0xF31A,
|
||||
|
||||
AUTO_TEXT = 0xF329,
|
||||
NOTE_HEAD_EIGHTH = 0xF33A,
|
||||
|
|
|
@ -41,24 +41,16 @@ bool WidgetNavigationFix::fixNavigationForTableWidget(const WidgetNavigationFix:
|
|||
return false;
|
||||
}
|
||||
|
||||
auto lastItem = tableWidget->item(tableWidget->rowCount() - 1, tableWidget->columnCount() - 1);
|
||||
if (lastItem == tableWidget->currentItem()) {
|
||||
chain->nextWidget->setFocus();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
chain->nextWidget->setFocus();
|
||||
return true;
|
||||
}
|
||||
case Qt::Key_Backtab: {
|
||||
if (!chain->prevWidget) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto firstItem = tableWidget->item(0, 0);
|
||||
if (firstItem == tableWidget->currentItem()) {
|
||||
chain->prevWidget->setFocus();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
chain->prevWidget->setFocus();
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -21,7 +21,12 @@
|
|||
*/
|
||||
#include "editpitch.h"
|
||||
|
||||
#include <QKeyEvent>
|
||||
|
||||
#include "translation.h"
|
||||
#include "ui/view/iconcodes.h"
|
||||
#include "ui/view/widgetstatestore.h"
|
||||
#include "ui/view/widgetnavigationfix.h"
|
||||
|
||||
using namespace mu::notation;
|
||||
using namespace mu::ui;
|
||||
|
@ -35,20 +40,20 @@ EditPitch::EditPitch(QWidget* parent)
|
|||
: QDialog(parent)
|
||||
{
|
||||
setObjectName("EditPitchNew");
|
||||
setupUi(this);
|
||||
setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
setup();
|
||||
|
||||
tableWidget->setCurrentCell(tableWidget->rowCount() - 1 - 5, 0); // select centre C by default
|
||||
WidgetStateStore::restoreGeometry(this);
|
||||
}
|
||||
|
||||
EditPitch::EditPitch(QWidget* parent, int midiCode)
|
||||
: QDialog(parent)
|
||||
{
|
||||
setObjectName("EditPitchEdit");
|
||||
setupUi(this);
|
||||
setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
setup();
|
||||
|
||||
tableWidget->setCurrentCell(tableWidget->rowCount() - 1 - (midiCode / 12), midiCode % 12);
|
||||
WidgetStateStore::restoreGeometry(this);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
@ -61,6 +66,44 @@ void EditPitch::hideEvent(QHideEvent* ev)
|
|||
QWidget::hideEvent(ev);
|
||||
}
|
||||
|
||||
bool EditPitch::eventFilter(QObject* obj, QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
QKeyEvent* keyEvent = dynamic_cast<QKeyEvent*>(event);
|
||||
if (keyEvent
|
||||
&& WidgetNavigationFix::fixNavigationForTableWidget(
|
||||
new WidgetNavigationFix::NavigationChain { tableWidget, buttonBox, buttonBox },
|
||||
keyEvent->key())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return QDialog::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
void EditPitch::setup()
|
||||
{
|
||||
setupUi(this);
|
||||
setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
|
||||
auto clefTrebleItem = tableWidget->item(5, 7);
|
||||
if (clefTrebleItem) {
|
||||
clefTrebleItem->setText(iconCodeToChar(IconCode::Code::CLEF_TREBLE) + QString(" ") + qtrc("notation", "G 4"));
|
||||
}
|
||||
|
||||
auto clefBassItem = tableWidget->item(6, 5);
|
||||
if (clefBassItem) {
|
||||
clefBassItem->setText(iconCodeToChar(IconCode::Code::CLEF_BASS) + QString(" ") + qtrc("notation", "F 3"));
|
||||
}
|
||||
|
||||
WidgetStateStore::restoreGeometry(this);
|
||||
|
||||
//! NOTE: It is necessary for the correct start of navigation in the dialog
|
||||
setFocus();
|
||||
|
||||
qApp->installEventFilter(this);
|
||||
}
|
||||
|
||||
void EditPitch::accept()
|
||||
{
|
||||
on_tableWidget_cellDoubleClicked(tableWidget->currentRow(), tableWidget->currentColumn());
|
||||
|
|
|
@ -33,17 +33,21 @@ class EditPitch : public QDialog, private Ui::EditPitchBase
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
virtual void hideEvent(QHideEvent*);
|
||||
|
||||
private slots:
|
||||
void on_tableWidget_cellDoubleClicked(int row, int column);
|
||||
void accept();
|
||||
void reject() { done(-1); } // return an invalid pitch MIDI code
|
||||
|
||||
public:
|
||||
EditPitch(QWidget* parent);
|
||||
EditPitch(QWidget* parent, int midiCode);
|
||||
~EditPitch() {}
|
||||
|
||||
private slots:
|
||||
void on_tableWidget_cellDoubleClicked(int row, int column);
|
||||
void accept() override;
|
||||
void reject() override { done(-1); } // return an invalid pitch MIDI code
|
||||
|
||||
private:
|
||||
virtual void hideEvent(QHideEvent*) override;
|
||||
bool eventFilter(QObject* obj, QEvent* event) override;
|
||||
|
||||
void setup();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -740,10 +740,6 @@
|
|||
<property name="text">
|
||||
<string>G 4</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="musescore.qrc">
|
||||
<normaloff>:/data/icons/clef.svg</normaloff>:/data/icons/clef.svg</iconset>
|
||||
</property>
|
||||
<property name="flags">
|
||||
<set>ItemIsSelectable|ItemIsEnabled</set>
|
||||
</property>
|
||||
|
@ -838,10 +834,6 @@
|
|||
<property name="text">
|
||||
<string>F 3</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="musescore.qrc">
|
||||
<normaloff>:/data/icons/clef-bass.svg</normaloff>:/data/icons/clef-bass.svg</iconset>
|
||||
</property>
|
||||
<property name="flags">
|
||||
<set>ItemIsSelectable|ItemIsEnabled</set>
|
||||
</property>
|
||||
|
@ -1356,9 +1348,6 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="musescore.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
|
|
Loading…
Reference in a new issue