bool CPVRChannelGroup::AddToGroup(const CPVRChannelPtr &channel, const CPVRChannelNumber &channelNumber, bool bUseBackendChannelNumbers) { bool bReturn(false); CSingleLock lock(m_critSection); if (!CPVRChannelGroup::IsGroupMember(channel)) { const PVRChannelGroupMember& realChannel(IsInternalGroup() ? GetByUniqueID(channel->StorageId()) : m_allChannelsGroup->GetByUniqueID(channel->StorageId())); if (realChannel.channel) { unsigned int iChannelNumber = channelNumber.GetChannelNumber(); if (!channelNumber.IsValid() || (!bUseBackendChannelNumbers && (iChannelNumber > m_members.size() + 1))) iChannelNumber = m_members.size() + 1; PVRChannelGroupMember newMember(realChannel); newMember.channelNumber = CPVRChannelNumber(iChannelNumber, channelNumber.GetSubChannelNumber()); m_sortedMembers.push_back(newMember); m_members.insert(std::make_pair(realChannel.channel->StorageId(), newMember)); m_bChanged = true; SortAndRenumber(); //! @todo notify observers bReturn = true; } } return bReturn; }
bool CPVRChannelNumberInputHandler::CheckInputAndExecuteAction() { const CPVRChannelNumber channelNumber = GetChannelNumber(); if (channelNumber.IsValid()) { // we have a valid channel number; execute the associated action now. ExecuteAction(); return true; } return false; }
void CGUIDialogPVRChannelsOSD::OnInputDone() { const CPVRChannelNumber channelNumber = GetChannelNumber(); if (channelNumber.IsValid()) { int itemIndex = 0; for (const CFileItemPtr channel : m_vecItems->GetList()) { if (channel->GetPVRChannelInfoTag()->ChannelNumber() == channelNumber) { m_viewControl.SetSelectedItem(itemIndex); return; } ++itemIndex; } } }
bool CPVRChannelGroupInternal::AddToGroup(const CPVRChannelPtr &channel, const CPVRChannelNumber &channelNumber, bool bUseBackendChannelNumbers) { bool bReturn(false); CSingleLock lock(m_critSection); /* get the group member, because we need the channel ID in this group, and the channel from this group */ PVRChannelGroupMember& groupMember = GetByUniqueID(channel->StorageId()); if (!groupMember.channel) return bReturn; bool bSort = false; /* switch the hidden flag */ if (groupMember.channel->IsHidden()) { groupMember.channel->SetHidden(false); if (m_iHiddenChannels > 0) m_iHiddenChannels--; bSort = true; } unsigned int iChannelNumber = channelNumber.GetChannelNumber(); if (!channelNumber.IsValid() || (!bUseBackendChannelNumbers && (iChannelNumber > m_members.size() - m_iHiddenChannels))) iChannelNumber = m_members.size() - m_iHiddenChannels; if (groupMember.channelNumber.GetChannelNumber() != iChannelNumber) { groupMember.channelNumber = CPVRChannelNumber(iChannelNumber, channelNumber.GetSubChannelNumber()); bSort = true; } if (bSort) SortAndRenumber(); if (m_bLoaded) { bReturn = Persist(); groupMember.channel->Persist(); } return bReturn; }