private void CreateSearcher()
{
int control = 0;
for (; m_curPossIndex < m_possibilities.Count; m_curPossIndex++)
{
// Every so often see whether the user has typed something that makes our search irrelevant.
if (control++ % 50 == 0 && ShouldAbort())
return;
ICmPossibility poss = m_possibilities[m_curPossIndex];
ITsString name = null;
foreach (int ws in WritingSystemServices.GetWritingSystemIdsFromLabel(m_cache, m_displayWs, m_cache.ServiceLocator.WritingSystemManager.UserWritingSystem,
poss.Hvo, CmPossibilityTags.kflidName, null))
{
ITsString tss = poss.Name.StringOrNull(ws);
if (tss != null && tss.Length > 0)
{
name = tss;
m_searcher.Add(poss, 0, tss);
break;
}
}
foreach (int ws in WritingSystemServices.GetWritingSystemIdsFromLabel(m_cache, m_displayWs, m_cache.ServiceLocator.WritingSystemManager.UserWritingSystem,
poss.Hvo, CmPossibilityTags.kflidAbbreviation, null))
{
ITsString tss = poss.Abbreviation.StringOrNull(ws);
if (tss != null && tss.Length > 0)
{
m_searcher.Add(poss, 0, tss);
if (name != null)
{
var tisb = TsIncStrBldrClass.Create();
tisb.AppendTsString(tss);
tisb.AppendTsString(m_cache.TsStrFactory.MakeString(" - ", m_cache.DefaultUserWs));
tisb.AppendTsString(name);
m_searcher.Add(poss, 0, tisb.GetString());
}
break;
}
}
}
}