Skip to content

Commit

Permalink
implemented the case insensitive search
Browse files Browse the repository at this point in the history
  • Loading branch information
RomanPudashkin committed Aug 16, 2021
1 parent 04ebda6 commit 8a34fba
Showing 1 changed file with 28 additions and 15 deletions.
43 changes: 28 additions & 15 deletions libmscore/instrtemplate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -753,12 +753,32 @@ InstrumentTemplate* searchTemplateForMusicXmlId(const QString& mxmlId)

InstrumentTemplate* searchTemplateForInstrNameList(const QList<QString>& nameList)
{
QStringList nameListLower;
for (const QString& name : nameList) {
if (!name.isEmpty()) {
nameListLower << name.toLower();
}
}

auto staffNameListToLower = [](const StaffNameList& names) {
QStringList result;
for (const StaffName& name : names) {
result << name.name().toLower();
}

return result;
};

for (InstrumentGroup* g : qAsConst(instrumentGroups)) {
for (InstrumentTemplate* it : qAsConst(g->instrumentTemplates)) {
for (const QString& name : nameList) {
if (it->trackName == name ||
it->longNames.contains(StaffName(name)) ||
it->shortNames.contains(StaffName(name)))
QString trackNameLower = it->trackName.toLower();
QStringList longNames = staffNameListToLower(it->longNames);
QStringList shortNames = staffNameListToLower(it->shortNames);

for (const QString& name : nameListLower) {
if (trackNameLower.contains(name) ||
longNames.contains(name) ||
shortNames.contains(name))
return it;
}
}
Expand All @@ -782,17 +802,10 @@ InstrumentTemplate* searchTemplateForMidiProgram(int midiProgram, const bool use

InstrumentTemplate* guessTemplateByNameData(const QList<QString>& nameDataList)
{
for (InstrumentGroup* g : qAsConst(instrumentGroups)) {
for (InstrumentTemplate* it : qAsConst(g->instrumentTemplates)) {
for (const QString& name : nameDataList) {
if (name.contains(it->trackName, Qt::CaseInsensitive) ||
name.contains(it->longNames.value(0).name(), Qt::CaseInsensitive) ||
name.contains(it->shortNames.value(0).name(), Qt::CaseInsensitive)) {
return it;
}
}
}
}
InstrumentTemplate* templ = searchTemplateForInstrNameList(nameDataList);
if (templ) {
return templ;
}

for (const QString& name : nameDataList) {
if (name.contains("drum", Qt::CaseInsensitive))
Expand Down

0 comments on commit 8a34fba

Please sign in to comment.