CPVRChannelGroupPtr CGUIWindowPVRChannels::SelectNextGroup(void) { CPVRChannelGroupPtr currentGroup = SelectedGroup(); CPVRChannelGroupPtr nextGroup = currentGroup->GetNextGroup(); while (nextGroup && *nextGroup != *currentGroup && nextGroup->Size() == 0) nextGroup = nextGroup->GetNextGroup(); /* always update so users can reset the list */ if (nextGroup) { SetSelectedGroup(nextGroup); UpdateData(); } return m_selectedGroup; }
CPVRChannelGroupPtr CGUIWindowPVRChannels::SelectNextGroup(void) { CPVRChannelGroupPtr currentGroup = SelectedGroup(); CPVRChannelGroupPtr nextGroup = currentGroup->GetNextGroup(); while (nextGroup && nextGroup->Size() == 0 && // break if the group matches *nextGroup != *currentGroup && // or if we hit the first group !nextGroup->IsInternalGroup()) nextGroup = nextGroup->GetNextGroup(); /* always update so users can reset the list */ if (nextGroup) { SetSelectedGroup(nextGroup); UpdateData(); } return m_selectedGroup; }
bool CGUIDialogPVRChannelsOSD::OnAction(const CAction &action) { switch (action.GetID()) { case ACTION_PREVIOUS_CHANNELGROUP: case ACTION_NEXT_CHANNELGROUP: { CPVRChannelGroupPtr group = GetPlayingGroup(); CPVRChannelGroupPtr nextGroup = action.GetID() == ACTION_NEXT_CHANNELGROUP ? group->GetNextGroup() : group->GetPreviousGroup(); g_PVRManager.SetPlayingGroup(nextGroup); SetLastSelectedItem(group->GroupID()); Update(); return true; } } return CGUIDialog::OnAction(action); }
bool CGUIDialogPVRChannelsOSD::OnAction(const CAction &action) { switch (action.GetID()) { case ACTION_PREVIOUS_CHANNELGROUP: case ACTION_NEXT_CHANNELGROUP: { // save control states and currently selected item of group SaveControlStates(); // switch to next or previous group CPVRChannelGroupPtr group = GetPlayingGroup(); CPVRChannelGroupPtr nextGroup = action.GetID() == ACTION_NEXT_CHANNELGROUP ? group->GetNextGroup() : group->GetPreviousGroup(); g_PVRManager.SetPlayingGroup(nextGroup); Update(); // restore control states and previously selected item of group RestoreControlStates(); return true; } } return CGUIDialog::OnAction(action); }
bool CGUIDialogPVRChannelsOSD::OnMessage(CGUIMessage& message) { switch (message.GetMessage()) { case GUI_MSG_WINDOW_DEINIT: { if (m_group) { g_PVRManager.SetPlayingGroup(m_group); SetLastSelectedItem(m_group->GroupID()); } Clear(); } break; case GUI_MSG_WINDOW_INIT: { /* Close dialog immediately if now TV or radio channel is playing */ if (!g_PVRManager.IsPlaying()) { Close(); return true; } m_group = GetPlayingGroup(); CGUIWindow::OnMessage(message); Update(true); return true; } break; case GUI_MSG_CLICKED: { int iControl = message.GetSenderId(); if (m_viewControl.HasControl(iControl)) // list/thumb control { int iItem = m_viewControl.GetSelectedItem(); int iAction = message.GetParam1(); if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_MOUSE_LEFT_CLICK) { /* Switch to channel */ GotoChannel(iItem); return true; } else if (iAction == ACTION_SHOW_INFO || iAction == ACTION_MOUSE_RIGHT_CLICK) { /* Show information Dialog */ ShowInfo(iItem); return true; } } } break; case GUI_MSG_MOVE: { int iAction = message.GetParam1(); if (iAction == ACTION_MOVE_RIGHT || iAction == ACTION_MOVE_LEFT) { CPVRChannelGroupPtr group = GetPlayingGroup(); CPVRChannelGroupPtr nextGroup = iAction == ACTION_MOVE_RIGHT ? group->GetNextGroup() : group->GetPreviousGroup(); g_PVRManager.SetPlayingGroup(nextGroup); SetLastSelectedItem(group->GroupID()); Update(); return true; } } break; } return CGUIDialog::OnMessage(message); }