Skip to content

Commit

Permalink
Merge pull request xbmc#6322 from AlwinEsch/channel-manager-fix-2
Browse files Browse the repository at this point in the history
  • Loading branch information
jenkins4kodi committed Feb 7, 2015
2 parents fe27d3d + fb6264d commit 18e4a08
Showing 1 changed file with 49 additions and 31 deletions.
80 changes: 49 additions & 31 deletions xbmc/pvr/dialogs/GUIDialogPVRChannelManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,52 +75,70 @@ bool CGUIDialogPVRChannelManager::OnActionMove(const CAction &action)
{
bool bReturn(false);
int iActionId = action.GetID();
if (GetFocusedControlID() == CONTROL_LIST_CHANNELS &&
(iActionId == ACTION_MOVE_DOWN || iActionId == ACTION_MOVE_UP ||
iActionId == ACTION_PAGE_DOWN || iActionId == ACTION_PAGE_UP ||
iActionId == ACTION_MOUSE_MOVE)) // item should be selected on hover

if (GetFocusedControlID() == CONTROL_LIST_CHANNELS)
{
bReturn = true;
if (!m_bMovingMode)
if (iActionId == ACTION_MOUSE_MOVE)
{
CGUIDialog::OnAction(action);
int iSelected = m_viewControl.GetSelectedItem();
if (iSelected != m_iSelected)
if (m_iSelected < iSelected)
{
m_iSelected = iSelected;
SetData(m_iSelected);
iActionId = ACTION_MOVE_DOWN;
}
else if (m_iSelected > iSelected)
{
iActionId = ACTION_MOVE_UP;
}
else
{
return bReturn;
}
}
else

if (iActionId == ACTION_MOVE_DOWN || iActionId == ACTION_MOVE_UP ||
iActionId == ACTION_PAGE_DOWN || iActionId == ACTION_PAGE_UP)
{
std::string strNumber;
CGUIDialog::OnAction(action);
int iSelected = m_viewControl.GetSelectedItem();

bool bMoveUp = iActionId == ACTION_PAGE_UP || iActionId == ACTION_MOVE_UP;
unsigned int iLines = bMoveUp ? abs(m_iSelected - m_viewControl.GetSelectedItem()) : 1;
bool bOutOfBounds = bMoveUp ? m_iSelected <= 0 : m_iSelected >= m_channelItems->Size() - 1;
if (bOutOfBounds)
bReturn = true;
if (!m_bMovingMode)
{
bMoveUp = !bMoveUp;
iLines = m_channelItems->Size() - 1;
if (iSelected != m_iSelected)
{
m_iSelected = iSelected;
SetData(m_iSelected);
}
}

for (unsigned int iLine = 0; iLine < iLines; iLine++)
else
{
unsigned int iNewSelect = bMoveUp ? m_iSelected - 1 : m_iSelected + 1;
if (m_channelItems->Get(iNewSelect)->GetProperty("Number").asString() != "-")
std::string strNumber;

bool bMoveUp = iActionId == ACTION_PAGE_UP || iActionId == ACTION_MOVE_UP;
unsigned int iLines = bMoveUp ? abs(m_iSelected - iSelected) : 1;
bool bOutOfBounds = bMoveUp ? m_iSelected <= 0 : m_iSelected >= m_channelItems->Size() - 1;
if (bOutOfBounds)
{
strNumber = StringUtils::Format("%i", m_iSelected+1);
m_channelItems->Get(iNewSelect)->SetProperty("Number", strNumber);
strNumber = StringUtils::Format("%i", iNewSelect+1);
m_channelItems->Get(m_iSelected)->SetProperty("Number", strNumber);
bMoveUp = !bMoveUp;
iLines = m_channelItems->Size() - 1;
}
for (unsigned int iLine = 0; iLine < iLines; iLine++)
{
unsigned int iNewSelect = bMoveUp ? m_iSelected - 1 : m_iSelected + 1;
if (m_channelItems->Get(iNewSelect)->GetProperty("Number").asString() != "-")
{
strNumber = StringUtils::Format("%i", m_iSelected+1);
m_channelItems->Get(iNewSelect)->SetProperty("Number", strNumber);
strNumber = StringUtils::Format("%i", iNewSelect+1);
m_channelItems->Get(m_iSelected)->SetProperty("Number", strNumber);
}
m_channelItems->Swap(iNewSelect, m_iSelected);
m_iSelected = iNewSelect;
}
m_channelItems->Swap(iNewSelect, m_iSelected);
m_iSelected = iNewSelect;
}

m_viewControl.SetItems(*m_channelItems);
m_viewControl.SetSelectedItem(m_iSelected);
m_viewControl.SetItems(*m_channelItems);
m_viewControl.SetSelectedItem(m_iSelected);
}
}
}

Expand Down

0 comments on commit 18e4a08

Please sign in to comment.