{
case GUI_MSG_WINDOW_DEINIT:
{
+ g_PVRManager.SetPlayingGroup(m_group);
Clear();
}
break;
Close();
return true;
}
+
+ m_group = GetPlayingGroup();
+
CGUIWindow::OnMessage(message);
- Update();
+ Update(true);
+
return true;
}
break;
if (iAction == ACTION_MOVE_RIGHT || iAction == ACTION_MOVE_LEFT)
{
- CPVRChannelPtr channel;
- g_PVRManager.GetCurrentChannel(channel);
-
- CPVRChannelGroupPtr group = g_PVRManager.GetPlayingGroup(channel->IsRadio());
+ CPVRChannelGroupPtr group = GetPlayingGroup();
CPVRChannelGroupPtr nextGroup = iAction == ACTION_MOVE_RIGHT ? group->GetNextGroup() : group->GetPreviousGroup();
-
g_PVRManager.SetPlayingGroup(nextGroup);
Clear();
return CGUIDialog::OnMessage(message);
}
+CPVRChannelGroupPtr CGUIDialogPVRChannelsOSD::GetPlayingGroup()
+{
+ CPVRChannelPtr channel;
+ g_PVRManager.GetCurrentChannel(channel);
+ return g_PVRManager.GetPlayingGroup(channel->IsRadio());
+}
+
void CGUIDialogPVRChannelsOSD::Update()
{
+ CGUIDialogPVRChannelsOSD::Update(false);
+}
+
+void CGUIDialogPVRChannelsOSD::Update(bool selectPlayingChannel)
+{
// lock our display, as this window is rendered from the player thread
g_graphicsContext.Lock();
{
group->GetMembers(*m_vecItems);
m_viewControl.SetItems(*m_vecItems);
- m_viewControl.SetSelectedItem(group->GetIndex(*channel));
+ m_viewControl.SetSelectedItem(selectPlayingChannel ? group->GetIndex(*channel) : 0);
}
g_graphicsContext.Unlock();
else
CApplicationMessenger::Get().PlayFile(*pItem);
+ m_group = GetPlayingGroup();
+
CloseOrSelect(item);
}
#include "guilib/GUIDialog.h"
#include "GUIViewControl.h"
#include "utils/Observer.h"
+#include "pvr/channels/PVRChannelGroupsContainer.h"
class CFileItemList;
void ShowInfo(int item);
void Clear();
void Update();
+ void Update(bool selectPlayingChannel);
+ CPVRChannelGroupPtr GetPlayingGroup();
CGUIControl *GetFirstFocusableControl(int id);
CFileItemList *m_vecItems;
CGUIViewControl m_viewControl;
+
+ private:
+ CPVRChannelGroupPtr m_group;
};
}