bool MythScreenType::gestureEvent(MythGestureEvent *event) { bool handled = false; if (event->gesture() == MythGestureEvent::Click) { switch (event->GetButton()) { case MythGestureEvent::RightButton : ShowMenu(); handled = true; break; default : break; } } if (!handled) { MythUIType *clicked = GetChildAt(event->GetPosition()); if (clicked && clicked->IsEnabled()) { SetFocusWidget(clicked); if (clicked->gestureEvent(event)) handled = true; } } return handled; }
bool MythScreenType::NextPrevWidgetFocus(bool up) { if (!m_CurrentFocusWidget || m_FocusWidgetList.isEmpty()) return SetFocusWidget(NULL); bool reachedCurrent = false; bool looped = false; QMap<int, MythUIType *>::iterator it = m_FocusWidgetList.begin(); MythUIType *current; // There is probably a more efficient way to do this, but the list // is never going to be that big so it will do for now if (up) { while (it != m_FocusWidgetList.end()) { current = *it; if ((looped || reachedCurrent) && current->IsVisible() && current->IsEnabled()) return SetFocusWidget(current); if (current == m_CurrentFocusWidget) reachedCurrent = true; ++it; if (it == m_FocusWidgetList.end()) { if (looped) return false; else { looped = true; it = m_FocusWidgetList.begin(); } } } } else { it = m_FocusWidgetList.end() - 1; while (it != m_FocusWidgetList.begin() - 1) { current = *it; if ((looped || reachedCurrent) && current->IsVisible() && current->IsEnabled()) return SetFocusWidget(current); if (current == m_CurrentFocusWidget) reachedCurrent = true; --it; if (it == m_FocusWidgetList.begin() - 1) { if (looped) return false; else { looped = true; it = m_FocusWidgetList.end() - 1; } } } } return false; }