Skip to content

Commit

Permalink
Added accessibility
Browse files Browse the repository at this point in the history
  • Loading branch information
Eism committed Sep 10, 2023
1 parent 5f98c35 commit 7610712
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 33 deletions.
41 changes: 37 additions & 4 deletions src/engraving/dom/stringtunings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "undo.h"

#include "containers.h"
#include "translation.h"

using namespace mu;
using namespace mu::engraving;
Expand Down Expand Up @@ -111,16 +112,17 @@ PropertyValue StringTunings::propertyDefault(Pid id) const
bool StringTunings::setProperty(Pid id, const PropertyValue& val)
{
if (id == Pid::STRINGTUNINGS_STRINGS_COUNT) {
if (staff()->isTabStaff(Fraction(0, 1))) {
staff()->staffType(Fraction(0, 1))->setLines(val.toInt());
Fraction tick = this->tick();
if (staff()->isTabStaff(tick)) {
staff()->staffType(tick)->setLines(val.toInt());
} else {
for (Staff* _staff : staff()->staffList()) {
if (_staff == staff()) {
continue;
}

if (_staff->score() == staff()->score() && _staff->isTabStaff(Fraction(0, 1))) {
_staff->staffType(Fraction(0, 1))->setLines(val.toInt());
if (_staff->score() == staff()->score() && _staff->isTabStaff(tick)) {
_staff->staffType(tick)->setLines(val.toInt());
}
}
}
Expand All @@ -140,6 +142,37 @@ bool StringTunings::setProperty(Pid id, const PropertyValue& val)
return true;
}

String StringTunings::accessibleInfo() const
{
const StringData* stringData = this->stringData();
if (stringData->isNull()) {
return String();
}

String info;

std::vector<instrString> stringList = stringData->stringList();
for (string_idx_t i = 0; i < stringList.size(); ++i) {
if (mu::contains(m_visibleStrings, i)) {
String pitchStr = pitch2string(stringList[i].pitch);
if (pitchStr.empty()) {
LOGE() << "Invalid get pitch name for " << stringList[i].pitch;
continue;
}

info += mtrc("engraving", "String %1").arg(String::number(i + 1)) + u", "
+ mtrc("engraving", "Value %1").arg(pitchStr) + u"; ";
}
}

return info;
}

String StringTunings::screenReaderInfo() const
{
return accessibleInfo();
}

const StringData* StringTunings::stringData() const
{
return &m_stringData;
Expand Down
3 changes: 3 additions & 0 deletions src/engraving/dom/stringtunings.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ class StringTunings final : public StaffTextBase
PropertyValue propertyDefault(Pid id) const override;
bool setProperty(Pid id, const PropertyValue& val) override;

String accessibleInfo() const override;
String screenReaderInfo() const override;

const StringData* stringData() const;
void setStringData(const StringData& stringData);
void undoStringData(const StringData& stringData);
Expand Down
3 changes: 2 additions & 1 deletion src/importexport/musicxml/internal/musicxml/exportxml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5832,7 +5832,8 @@ static bool commonAnnotations(ExportMusicXml* exp, const EngravingItem* e, staff
exp->symbol(toSymbol(e), sstaff);
} else if (e->isTempoText()) {
exp->tempoText(toTempoText(e), sstaff);
} else if (e->isPlayTechAnnotation() || e->isCapo() || e->isStringTunings() || e->isStaffText() || e->isSystemText() || e->isTripletFeel() || e->isText()
} else if (e->isPlayTechAnnotation() || e->isCapo() || e->isStringTunings() || e->isStaffText() || e->isSystemText()
|| e->isTripletFeel() || e->isText()
|| e->isExpression() || (e->isInstrumentChange() && e->visible())) {
exp->words(toTextBase(e), sstaff);
} else if (e->isDynamic()) {
Expand Down
2 changes: 1 addition & 1 deletion src/notation/internal/instrumentsrepository.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ bool InstrumentsRepository::loadStringTuningsPresets(const io::path_t& path)
JsonObject presetObj = presetVal.toObject();

StringTuningPreset preset;
preset.name = trc("instruments/stringTunings", presetObj.value("name").toStdString().c_str()); // todo
preset.name = trc("instruments/stringTunings", presetObj.value("name").toStdString().c_str());

JsonArray valuesArr = presetObj.value("value").toArray();
for (size_t l = 0; l < valuesArr.size(); ++l) {
Expand Down
2 changes: 1 addition & 1 deletion src/notation/notationtypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ struct StringTuningsInfo
std::vector<StringTuningPreset> presets;
};

using InstrumentStringTuningsMap = std::map<std::string, std::vector<StringTuningsInfo>>;
using InstrumentStringTuningsMap = std::map<std::string, std::vector<StringTuningsInfo> >;
}

#endif // MU_NOTATION_NOTATIONTYPES_H
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ StyledPopupView {
navigation.name: "Presets"
navigation.panel: navPanel
navigation.row: 1
navigation.accessible: titleLabel.text + " " + currentText

model: stringTuningsModel.presets

Expand All @@ -107,16 +108,17 @@ StyledPopupView {

Layout.preferredWidth: 92

navigation.name: "StringNumber"
navigation.name: "StringsNumber"
navigation.panel: navPanel
navigation.row: 2
navigation.accessible.name: qsTrc("notation", "Number of strings:") + " " + currentText

model: stringTuningsModel.stringNumbers
model: stringTuningsModel.numbersOfStrings

currentIndex: indexOfValue(stringTuningsModel.currentStringNumber)
currentIndex: indexOfValue(stringTuningsModel.currentNumberOfStrings)

onActivated: function(index, value) {
stringTuningsModel.currentStringNumber = parseInt(textOfValue(value))
stringTuningsModel.currentNumberOfStrings = parseInt(textOfValue(value))
}
}
}
Expand All @@ -127,7 +129,7 @@ StyledPopupView {
direction: NavigationPanel.Vertical
section: root.notationViewNavigationSection
order: navPanel.order + 1
accessible.name: qsTrc("notation", "Strings") // todo
accessible.name: qsTrc("notation", "Strings")
}

GridLayout {
Expand Down Expand Up @@ -161,7 +163,7 @@ StyledPopupView {
navigation.panel: stringsNavPanel
navigation.row: index
navigation.column: 1
// navigation.accessible.name: hint // todo
navigation.accessible.name: visibleBox.navigation.accessible.name + " " + qsTrc("notation", "Value %1").arg(valueControl.currentValue)

VisibilityBox {
id: visibleBox
Expand All @@ -170,18 +172,21 @@ StyledPopupView {
anchors.verticalCenter: parent.verticalCenter

isVisible: modelData["show"]
text: modelData["number"] // todo
text: modelData["number"]

navigation.panel: stringsNavPanel
navigation.row: index
navigation.column: 2
accessibleText: qsTrc("notation", "String %1").arg(text)

onVisibleToggled: {
stringTuningsModel.toggleString(index)
}
}

IncrementalPropertyControl {
id: valueControl

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

Expand Down
18 changes: 9 additions & 9 deletions src/notation/view/internal/stringtuningssettingsmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ void StringTuningsSettingsModel::init()
m_strings.push_back(item);
}

emit stringNumbersChanged();
emit currentStringNumberChanged();
emit numbersOfStringsChanged();
emit currentNumberOfStringsChanged();
emit presetsChanged();
emit currentPresetChanged();
emit stringsChanged();
Expand Down Expand Up @@ -185,7 +185,7 @@ QVariantList StringTuningsSettingsModel::presets(bool withCustom) const
presetsList << customMap;
}

int currentStringNumber = this->currentStringNumber();
int currentStringNumber = this->currentNumberOfStrings();

for (const StringTuningsInfo& stringTuning : stringTunings.at(m_itemId)) {
if (stringTuning.number != currentStringNumber) {
Expand Down Expand Up @@ -244,7 +244,7 @@ void StringTuningsSettingsModel::setCurrentPreset(const QString& preset)
endMultiCommands();
}

QVariantList StringTuningsSettingsModel::stringNumbers() const
QVariantList StringTuningsSettingsModel::numbersOfStrings() const
{
const InstrumentStringTuningsMap& stringTunings = instrumentsRepository()->stringTuningsPresets();

Expand All @@ -264,22 +264,22 @@ QVariantList StringTuningsSettingsModel::stringNumbers() const
return numbersList;
}

int StringTuningsSettingsModel::currentStringNumber() const
int StringTuningsSettingsModel::currentNumberOfStrings() const
{
return m_item ? engraving::toStringTunings(m_item)->getProperty(engraving::Pid::STRINGTUNINGS_STRINGS_COUNT).toInt() : 0;
}

void StringTuningsSettingsModel::setCurrentStringNumber(int stringNumber)
void StringTuningsSettingsModel::setCurrentNumberOfStrings(int number)
{
if (currentStringNumber() == stringNumber) {
if (currentNumberOfStrings() == number) {
return;
}

beginMultiCommands();

changeItemProperty(mu::engraving::Pid::STRINGTUNINGS_STRINGS_COUNT, stringNumber);
changeItemProperty(mu::engraving::Pid::STRINGTUNINGS_STRINGS_COUNT, number);

emit currentStringNumberChanged();
emit currentNumberOfStringsChanged();
emit presetsChanged();

setCurrentPreset(presets(false /*withCustom*/).first().toMap()["text"].toString());
Expand Down
17 changes: 7 additions & 10 deletions src/notation/view/internal/stringtuningssettingsmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ class StringTuningsSettingsModel : public AbstractElementPopupModel
Q_PROPERTY(QVariantList presets READ presets NOTIFY presetsChanged)
Q_PROPERTY(QString currentPreset READ currentPreset WRITE setCurrentPreset NOTIFY currentPresetChanged)

Q_PROPERTY(QVariantList stringNumbers READ stringNumbers NOTIFY stringNumbersChanged)
Q_PROPERTY(int currentStringNumber READ currentStringNumber WRITE setCurrentStringNumber NOTIFY currentStringNumberChanged)
Q_PROPERTY(QVariantList numbersOfStrings READ numbersOfStrings NOTIFY numbersOfStringsChanged)
Q_PROPERTY(int currentNumberOfStrings READ currentNumberOfStrings WRITE setCurrentNumberOfStrings NOTIFY currentNumberOfStringsChanged)

Q_PROPERTY(QList<StringTuningsItem*> strings READ strings NOTIFY stringsChanged)

Expand All @@ -70,19 +70,18 @@ class StringTuningsSettingsModel : public AbstractElementPopupModel
QString currentPreset() const;
void setCurrentPreset(const QString& preset);

QVariantList stringNumbers() const;
void setStringNumbers(const QVariantList& newStringNumbers);
QVariantList numbersOfStrings() const;

int currentStringNumber() const;
void setCurrentStringNumber(int stringNumber);
int currentNumberOfStrings() const;
void setCurrentNumberOfStrings(int number);

QList<StringTuningsItem*> strings() const;

signals:
void presetsChanged();
void currentPresetChanged();
void stringNumbersChanged();
void currentStringNumberChanged();
void numbersOfStringsChanged();
void currentNumberOfStringsChanged();
void stringsChanged();

private:
Expand All @@ -96,8 +95,6 @@ class StringTuningsSettingsModel : public AbstractElementPopupModel
QList<StringTuningsItem*> m_strings;

std::string m_itemId;

int m_lastSuccessfullyInstalledStringValue = -1;
};

class StringTuningsItem : public QObject
Expand Down

0 comments on commit 7610712

Please sign in to comment.