コード例 #1
0
ファイル: GUIBaseContainer.cpp プロジェクト: Castlecard/plex
void CGUIBaseContainer::UpdateScrollByLetter()
{
  m_letterOffsets.clear();

  // for scrolling by letter we have an offset table into our vector.
  CStdString currentMatch;
  for (unsigned int i = 0; i < m_items.size(); i++)
  {
    CGUIListItemPtr item = m_items[i];
    if (currentMatch != item->GetSortLabel().Left(1))
    {
      currentMatch = item->GetSortLabel().Left(1);
      m_letterOffsets.push_back(make_pair((int)i, currentMatch));
    }
  }
}
コード例 #2
0
ファイル: GUIBaseContainer.cpp プロジェクト: Castlecard/plex
void CGUIBaseContainer::OnJumpLetter(char letter)
{
  if (m_matchTimer.GetElapsedMilliseconds() < letter_match_timeout)
    m_match.push_back(letter);
  else
    m_match.Format("%c", letter);

  m_matchTimer.StartZero();

  // we can't jump through letters if we have none
  if (0 == m_letterOffsets.size())
    return;

  // find the current letter we're focused on
  int offset = CorrectOffset(m_offset, m_cursor);
  for (unsigned int i = (offset + 1) % m_items.size(); i != offset; i = (i+1) % m_items.size())
  {
    CGUIListItemPtr item = m_items[i];
    if (0 == strnicmp(item->GetSortLabel().c_str(), m_match.c_str(), m_match.size()))
    {
      SelectItem(i);
      return;
    }
  }
  // no match found - repeat with a single letter
  if (m_match.size() > 1)
  {
    m_match.clear();
    OnJumpLetter(letter);
  }
}
コード例 #3
0
void CGUIBaseContainer::UpdateScrollByLetter()
{
    m_letterOffsets.clear();

    // for scrolling by letter we have an offset table into our vector.
    CStdString currentMatch;
    for (unsigned int i = 0; i < m_items.size(); i++)
    {
        CGUIListItemPtr item = m_items[i];
        // The letter offset jumping is only for ASCII characters at present, and
        // our checks are all done in uppercase
        CStdString nextLetter;
        g_charsetConverter.wToUTF8(item->GetSortLabel().Left(1).ToUpper(), nextLetter);
        if (currentMatch != nextLetter)
        {
            currentMatch = nextLetter;
            m_letterOffsets.push_back(make_pair((int)i, currentMatch));
        }
    }
}