예제 #1
0
void
GridView::MoveFocus(Direction direction)
{
  signed focusPos = GetIndexOfItemInFocus();

  if (focusPos == -1)
    // We are on a page without enabled items.
    // We should show the next page if exists
    ShowNextPage(direction);
  else {
    signed newFocusPos = GetNextItemIndex(focusPos, direction);

    if (newFocusPos != -1) {
      // we are on the same page
      items[newFocusPos]->SetFocus();
      if (!items[newFocusPos]->HasFocus()) {
        /* unable to set the focus, let's try simple Tab/Shift-Tab
           behavior instead */
        newFocusPos = GetNextEnabledItemIndex(focusPos, direction);
        if (newFocusPos != -1)
          items[newFocusPos]->SetFocus();
      }
      RefreshLayout();
    } else
      ShowNextPage(direction);
  }
}
예제 #2
0
fresult ItemsListFormBase::SetActiveItem( sbyte_t index )
{
	fresult fres;

	_currentItemIndex = index;

	sbyte_t prevIndex = GetPrevItemIndex(index);
	
	if (prevIndex == -1)
	{
		fres = _mnuBack->SetVisible(FALSE);
		ENSURESUCCESS(fres);
		fres = _mnuBack->SetEnabled(FALSE);
		ENSURESUCCESS(fres);
	}
	else
	{
		fres = _mnuBack->SetVisible(TRUE);
		ENSURESUCCESS(fres);
		fres = _mnuBack->SetEnabled(TRUE);
		ENSURESUCCESS(fres);
	}
	
	sbyte_t nextIndex = GetNextItemIndex(index);
	if (nextIndex == -1)
	{
		fres = _mnuNext->SetVisible(FALSE);
		ENSURESUCCESS(fres);
		fres = _mnuNext->SetEnabled(FALSE);
		ENSURESUCCESS(fres);
	}
	else
	{
		fres = _mnuNext->SetVisible(TRUE);
		ENSURESUCCESS(fres);
		fres = _mnuNext->SetEnabled(TRUE);
		ENSURESUCCESS(fres);
	}

	return SUCCESS;

}
예제 #3
0
fresult ItemsListFormBase::OnMenuR( IMenuItem* mi )
{
	fresult fres;
	sbyte_t index;
	index = GetNextItemIndex(_currentItemIndex);

	if (index != -1)
	{
		fres = SetActiveItem(index);
		ENSURESUCCESS(fres);
	}
	else
	{
		//should't be here
		fres = SetActiveItem(_currentItemIndex);
		ENSURESUCCESS(fres);
	}

	return SUCCESS;
}