Skip to content

Commit

Permalink
implemented the case insensitive search
Browse files Browse the repository at this point in the history
Duplicate of musescore#8866, part 3
  • Loading branch information
RomanPudashkin authored and Jojo-Schmitz committed Aug 18, 2021
1 parent 75b220a commit cc49e95
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions libmscore/instrtemplate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -753,14 +753,30 @@ 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;
}
}
}
return nullptr;
Expand All @@ -785,17 +801,9 @@ 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 cc49e95

Please sign in to comment.