本文整理汇总了C++中CPVRChannelPtr::IsRadio方法的典型用法代码示例。如果您正苦于以下问题:C++ CPVRChannelPtr::IsRadio方法的具体用法?C++ CPVRChannelPtr::IsRadio怎么用?C++ CPVRChannelPtr::IsRadio使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPVRChannelPtr
的用法示例。
在下文中一共展示了CPVRChannelPtr::IsRadio方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateSummary
CPVRTimerInfoTag::CPVRTimerInfoTag(const PVR_TIMER &timer, const CPVRChannelPtr &channel, unsigned int iClientId) :
m_strTitle(timer.strTitle),
m_strDirectory(timer.strDirectory)
{
m_iClientId = iClientId;
m_iClientIndex = timer.iClientIndex;
m_iClientChannelUid = channel ? channel->UniqueID() : timer.iClientChannelUid;
m_iChannelNumber = channel ? g_PVRChannelGroups->GetGroupAll(channel->IsRadio())->GetChannelNumber(channel) : 0;
m_StartTime = timer.startTime + g_advancedSettings.m_iPVRTimeCorrection;
m_StopTime = timer.endTime + g_advancedSettings.m_iPVRTimeCorrection;
m_bIsRepeating = timer.bIsRepeating;
m_FirstDay = timer.firstDay + g_advancedSettings.m_iPVRTimeCorrection;
m_iWeekdays = timer.iWeekdays;
m_iPriority = timer.iPriority;
m_iLifetime = timer.iLifetime;
m_iMarginStart = timer.iMarginStart;
m_iMarginEnd = timer.iMarginEnd;
m_genre = StringUtils::Split(CEpg::ConvertGenreIdToString(timer.iGenreType, timer.iGenreSubType), g_advancedSettings.m_videoItemSeparator);
m_iGenreType = timer.iGenreType;
m_iGenreSubType = timer.iGenreSubType;
CEpgInfoTagPtr emptyTag;
m_epgTag = emptyTag;
m_channel = channel;
m_bIsRadio = channel && channel->IsRadio();
m_state = timer.state;
m_strFileNameAndPath = StringUtils::Format("pvr://client%i/timers/%i", m_iClientId, m_iClientIndex);
m_iTimerId = 0;
UpdateSummary();
}
示例2: Update
void CGUIDialogPVRChannelsOSD::Update()
{
// lock our display, as this window is rendered from the player thread
g_graphicsContext.Lock();
if (!IsObserving(g_infoManager))
g_infoManager.RegisterObserver(this);
m_viewControl.SetCurrentView(DEFAULT_VIEW_LIST);
// empty the list ready for population
Clear();
CPVRChannelPtr channel;
if (g_PVRManager.GetCurrentChannel(channel))
{
CPVRChannelGroupPtr group = g_PVRManager.GetPlayingGroup(channel->IsRadio());
if (group)
{
group->GetMembers(*m_vecItems);
m_viewControl.SetItems(*m_vecItems);
if (!m_group)
{
m_group = group;
m_viewControl.SetSelectedItem(CGUIWindowPVRBase::GetSelectedItemPath(channel->IsRadio()));
SaveSelectedItemPath(group->GroupID());
}
}
}
g_graphicsContext.Unlock();
}
示例3: CanPlayChannel
bool CPVRClient::CanPlayChannel(const CPVRChannelPtr &channel) const
{
assert(channel.get());
return (m_bReadyToUse &&
((m_addonCapabilities.bSupportsTV && !channel->IsRadio()) ||
(m_addonCapabilities.bSupportsRadio && channel->IsRadio())));
}
示例4: SetPlayingGroup
void CPVRManager::SetPlayingGroup(const CPVRChannelPtr &channel)
{
CPVRChannelGroupPtr group = m_channelGroups->GetSelectedGroup(channel->IsRadio());
if (!group || !group->IsGroupMember(channel))
{
// The channel we'll switch to is not part of the current selected group.
// Set the first group as the selected group where the channel is a member.
CPVRChannelGroups *channelGroups = m_channelGroups->Get(channel->IsRadio());
std::vector<CPVRChannelGroupPtr> groups = channelGroups->GetGroupsByChannel(channel, true);
if (!groups.empty())
channelGroups->SetSelectedGroup(groups.front());
}
}
示例5: OpenLiveStream
bool CPVRManager::OpenLiveStream(const CFileItem &fileItem)
{
bool bReturn(false);
if (!fileItem.HasPVRChannelInfoTag())
return bReturn;
CLog::Log(LOGDEBUG,"PVRManager - %s - opening live stream on channel '%s'",
__FUNCTION__, fileItem.GetPVRChannelInfoTag()->ChannelName().c_str());
// check if we're allowed to play this file
if (IsParentalLocked(fileItem.GetPVRChannelInfoTag()))
return bReturn;
if ((bReturn = m_addons->OpenStream(fileItem.GetPVRChannelInfoTag(), false)) != false)
{
CSingleLock lock(m_critSection);
m_currentFile.reset(new CFileItem(fileItem));
}
if (bReturn)
{
const CPVRChannelPtr channel(m_addons->GetPlayingChannel());
if (channel)
{
SetPlayingGroup(channel);
UpdateLastWatched(channel);
// set channel as selected item
CGUIWindowPVRBase::SetSelectedItemPath(channel->IsRadio(), channel->Path());
}
}
return bReturn;
}
示例6: UpdateViewNext
void CGUIWindowPVRGuide::UpdateViewNext(bool bUpdateSelectedFile)
{
CPVRChannelPtr CurrentChannel;
bool bGotCurrentChannel = g_PVRManager.GetCurrentChannel(CurrentChannel);
bool bRadio = bGotCurrentChannel ? CurrentChannel->IsRadio() : false;
m_parent->m_guideGrid = NULL;
m_parent->m_viewControl.SetCurrentView(CONTROL_LIST_GUIDE_NOW_NEXT);
m_parent->SetLabel(m_iControlButton, g_localizeStrings.Get(19222) + ": " + g_localizeStrings.Get(19031));
m_parent->SetLabel(CONTROL_LABELGROUP, g_localizeStrings.Get(19031));
int iEpgItems = g_PVRManager.GetPlayingGroup(bRadio)->GetEPGNext(*m_parent->m_vecItems);
if (iEpgItems == 0 && bRadio)
// if we didn't get any events for radio, get tv instead
iEpgItems = g_PVRManager.GetPlayingGroup(false)->GetEPGNext(*m_parent->m_vecItems);
if (iEpgItems)
{
CFileItemPtr item;
item.reset(new CFileItem("pvr://guide/next/empty.epg", false));
item->SetLabel(g_localizeStrings.Get(19028));
item->SetLabelPreformated(true);
m_parent->m_vecItems->Add(item);
}
m_parent->m_viewControl.SetItems(*m_parent->m_vecItems);
}
示例7: GetMatch
CFileItemPtr CPVRTimers::GetMatch(const CEpgInfoTag *Epg)
{
CSingleLock lock(m_critSection);
for (map<CDateTime, vector<CPVRTimerInfoTag *>* >::iterator it = m_tags.begin(); it != m_tags.end(); it++)
{
for (unsigned int iTimerPtr = 0; iTimerPtr < it->second->size(); iTimerPtr++)
{
CPVRTimerInfoTag *timer = it->second->at(iTimerPtr);
CPVRChannelPtr channel;
if (Epg)
channel = Epg->ChannelTag();
if (!channel)
continue;
if (timer->ChannelNumber() != channel->ChannelNumber()
|| timer->m_bIsRadio != channel->IsRadio())
continue;
if (timer->StartAsUTC() > Epg->StartAsUTC() || timer->EndAsUTC() < Epg->EndAsUTC())
continue;
CFileItemPtr fileItem(new CFileItem(*timer));
return fileItem;
}
}
CFileItemPtr fileItem;
return fileItem;
}
示例8: GetTimerForEpgTag
CFileItemPtr CPVRTimers::GetTimerForEpgTag(const CFileItem *item) const
{
if (item && item->HasEPGInfoTag() && item->GetEPGInfoTag()->ChannelTag())
{
const CEpgInfoTagPtr epgTag(item->GetEPGInfoTag());
const CPVRChannelPtr channel(epgTag->ChannelTag());
CSingleLock lock(m_critSection);
for (MapTags::const_iterator it = m_tags.begin(); it != m_tags.end(); ++it)
{
for (VecTimerInfoTag::const_iterator timerIt = it->second->begin(); timerIt != it->second->end(); ++timerIt)
{
CPVRTimerInfoTagPtr timer = *timerIt;
if (timer->GetEpgInfoTag() == epgTag ||
(timer->m_iClientChannelUid == channel->UniqueID() &&
timer->m_bIsRadio == channel->IsRadio() &&
timer->StartAsUTC() <= epgTag->StartAsUTC() &&
timer->EndAsUTC() >= epgTag->EndAsUTC()))
{
CFileItemPtr fileItem(new CFileItem(timer));
return fileItem;
}
}
}
}
CFileItemPtr fileItem;
return fileItem;
}
示例9: PVRTransferChannelGroupMember
void CAddonCallbacksPVR::PVRTransferChannelGroupMember(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member)
{
if (!handle)
{
CLog::Log(LOGERROR, "PVR - %s - invalid handler data", __FUNCTION__);
return;
}
CPVRClient *client = GetPVRClient(addonData);
CPVRChannelGroup *group = static_cast<CPVRChannelGroup *>(handle->dataAddress);
if (!member || !client || !group)
{
CLog::Log(LOGERROR, "PVR - %s - invalid handler data", __FUNCTION__);
return;
}
CPVRChannelPtr channel = g_PVRChannelGroups->GetByUniqueID(member->iChannelUniqueId, client->GetID());
if (!channel)
{
CLog::Log(LOGERROR, "PVR - %s - cannot find group '%s' or channel '%d'", __FUNCTION__, member->strGroupName, member->iChannelUniqueId);
}
else if (group->IsRadio() == channel->IsRadio())
{
/* transfer this entry to the group */
group->AddToGroup(channel, member->iChannelNumber);
}
}
示例10: HideChannel
bool CPVRGUIActions::HideChannel(const CFileItemPtr &item) const
{
const CPVRChannelPtr channel(item->GetPVRChannelInfoTag());
/* check if the channel tag is valid */
if (!channel || channel->ChannelNumber() <= 0)
return false;
if (!CGUIDialogYesNo::ShowAndGetInput(CVariant{19054}, // "Hide channel"
CVariant{19039}, // "Are you sure you want to hide this channel?"
CVariant{""},
CVariant{channel->ChannelName()}))
return false;
if (!g_PVRChannelGroups->GetGroupAll(channel->IsRadio())->RemoveFromGroup(channel))
return false;
CGUIWindowPVRBase *pvrWindow = dynamic_cast<CGUIWindowPVRBase *>(g_windowManager.GetWindow(g_windowManager.GetActiveWindow()));
if (pvrWindow)
pvrWindow->DoRefresh();
else
CLog::Log(LOGERROR, "CPVRGUIActions - %s - called on non-pvr window. no refresh possible.", __FUNCTION__);
return true;
}
示例11: CloseStream
void CPVRManager::CloseStream(void)
{
CPVRChannelPtr channel;
bool bPersistChannel(false);
{
CSingleLock lock(m_critSection);
if (m_addons->GetPlayingChannel(channel))
{
/* store current time in iLastWatched */
time_t tNow;
CDateTime::GetCurrentDateTime().GetAsTime(tNow);
channel->SetLastWatched(tNow);
bPersistChannel = true;
m_channelGroups->SetLastPlayedGroup(GetPlayingGroup(channel->IsRadio()));
}
m_addons->CloseStream();
SAFE_DELETE(m_currentFile);
}
if (bPersistChannel)
channel->Persist();
}
示例12: SwitchChannel
bool CPVRClients::SwitchChannel(const CPVRChannel &channel)
{
{
CSingleLock lock(m_critSection);
if (m_bIsSwitchingChannels)
{
CLog::Log(LOGDEBUG, "PVRClients - %s - can't switch to channel '%s'. waiting for the previous switch to complete", __FUNCTION__, channel.ChannelName().c_str());
return false;
}
m_bIsSwitchingChannels = true;
}
bool bSwitchSuccessful(false);
CPVRChannelPtr currentChannel;
if (// no channel is currently playing
!GetPlayingChannel(currentChannel) ||
// different backend
currentChannel->ClientID() != channel.ClientID() ||
// different type
currentChannel->IsRadio() != channel.IsRadio() ||
// stream URL should always be opened as a new file
!channel.StreamURL().IsEmpty() || !currentChannel->StreamURL().IsEmpty())
{
if (channel.StreamURL().IsEmpty())
{
CloseStream();
bSwitchSuccessful = OpenStream(channel, true);
}
else
{
CFileItem m_currentFile(channel);
CApplicationMessenger::Get().PlayFile(m_currentFile, false);
bSwitchSuccessful = true;
}
}
// same channel
else if (currentChannel.get() && *currentChannel == channel)
{
bSwitchSuccessful = true;
}
else
{
PVR_CLIENT client;
if (GetConnectedClient(channel.ClientID(), client))
bSwitchSuccessful = client->SwitchChannel(channel);
}
{
CSingleLock lock(m_critSection);
m_bIsSwitchingChannels = false;
if (bSwitchSuccessful)
m_bIsValidChannelSettings = false;
}
if (!bSwitchSuccessful)
CLog::Log(LOGERROR, "PVR - %s - cannot switch to channel '%s' on client '%d'",__FUNCTION__, channel.ChannelName().c_str(), channel.ClientID());
return bSwitchSuccessful;
}
示例13: GetPlayingGroup
CPVRChannelGroupPtr CGUIDialogPVRChannelsOSD::GetPlayingGroup()
{
CPVRChannelPtr channel;
if (g_PVRManager.GetCurrentChannel(channel))
return g_PVRManager.GetPlayingGroup(channel->IsRadio());
else
return CPVRChannelGroupPtr();
}
示例14: CreateInstantTimerTag
CPVRTimerInfoTagPtr CPVRTimerInfoTag::CreateInstantTimerTag(const CPVRChannelPtr &channel)
{
if (!channel)
{
CLog::Log(LOGERROR, "%s - no channel set", __FUNCTION__);
return CPVRTimerInfoTagPtr();
}
CEpgInfoTagPtr epgTag(channel->GetEPGNow());
CPVRTimerInfoTagPtr newTimer;
if (epgTag)
newTimer = CreateFromEpg(epgTag);
if (!newTimer)
{
newTimer.reset(new CPVRTimerInfoTag);
newTimer->m_iClientIndex = PVR_TIMER_NO_CLIENT_INDEX;
newTimer->m_iParentClientIndex = PVR_TIMER_NO_PARENT;
newTimer->m_channel = channel;
newTimer->m_strTitle = channel->ChannelName();
newTimer->m_iChannelNumber = channel->ChannelNumber();
newTimer->m_iClientChannelUid = channel->UniqueID();
newTimer->m_iClientId = channel->ClientID();
newTimer->m_bIsRadio = channel->IsRadio();
// timertype: manual one-shot timer for given client
CPVRTimerTypePtr timerType(CPVRTimerType::CreateFromAttributes(
PVR_TIMER_TYPE_IS_MANUAL, PVR_TIMER_TYPE_IS_REPEATING | PVR_TIMER_TYPE_FORBIDS_NEW_INSTANCES, channel->ClientID()));
if (!timerType)
{
CLog::Log(LOGERROR, "%s - unable to create one shot manual timer type", __FUNCTION__);
return CPVRTimerInfoTagPtr();
}
newTimer->SetTimerType(timerType);
}
// no matter the timer was created from an epg tag, set special instant timer start and end times.
CDateTime startTime(0);
newTimer->SetStartFromUTC(startTime);
newTimer->m_iMarginStart = 0; /* set the start margin to 0 for instant timers */
int iDuration = CSettings::GetInstance().GetInt(CSettings::SETTING_PVRRECORD_INSTANTRECORDTIME);
CDateTime endTime = CDateTime::GetUTCDateTime() + CDateTimeSpan(0, 0, iDuration ? iDuration : 120, 0);
newTimer->SetEndFromUTC(endTime);
/* update summary string according to changed start/end time */
newTimer->UpdateSummary();
/* set epg tag at timer & timer at epg tag */
newTimer->UpdateEpgInfoTag();
/* unused only for reference */
newTimer->m_strFileNameAndPath = CPVRTimersPath::PATH_NEW;
return newTimer;
}
示例15: OnContextButton
bool CGUIDialogPVRChannelManager::OnContextButton(int itemNumber, CONTEXT_BUTTON button)
{
/* Check file item is in list range and get his pointer */
if (itemNumber < 0 || itemNumber >= (int)m_channelItems->Size()) return false;
CFileItemPtr pItem = m_channelItems->Get(itemNumber);
if (!pItem)
return false;
if (button == CONTEXT_BUTTON_MOVE)
{
m_bMovingMode = true;
pItem->Select(true);
}
else if (button == CONTEXT_BUTTON_SETTINGS)
{
PVR_ERROR ret = CServiceBroker::GetPVRManager().Clients()->OpenDialogChannelSettings(pItem->GetPVRChannelInfoTag());
if (ret == PVR_ERROR_NOT_IMPLEMENTED)
CGUIDialogOK::ShowAndGetInput(CVariant{19033}, CVariant{19038}); // "Information", "Not supported by the PVR backend."
else if (ret != PVR_ERROR_NO_ERROR)
CGUIDialogOK::ShowAndGetInput(CVariant{2103}, CVariant{16029}); // "Add-on error", "Check the log for more information about this message."
}
else if (button == CONTEXT_BUTTON_DELETE)
{
CGUIDialogYesNo* pDialog = g_windowManager.GetWindow<CGUIDialogYesNo>(WINDOW_DIALOG_YES_NO);
if (!pDialog)
return true;
pDialog->SetHeading(CVariant{19211}); // Delete channel
pDialog->SetText(CVariant{750}); // Are you sure?
pDialog->Open();
if (pDialog->IsConfirmed())
{
CPVRChannelPtr channel = pItem->GetPVRChannelInfoTag();
PVR_ERROR ret = CServiceBroker::GetPVRManager().Clients()->DeleteChannel(channel);
if (ret == PVR_ERROR_NO_ERROR)
{
CServiceBroker::GetPVRManager().ChannelGroups()->GetGroupAll(channel->IsRadio())->RemoveFromGroup(channel);
m_channelItems->Remove(m_iSelected);
m_viewControl.SetItems(*m_channelItems);
Renumber();
}
else if (ret == PVR_ERROR_NOT_IMPLEMENTED)
CGUIDialogOK::ShowAndGetInput(CVariant{19033}, CVariant{19038}); // "Information", "Not supported by the PVR backend."
else
CGUIDialogOK::ShowAndGetInput(CVariant{2103}, CVariant{16029}); // "Add-on error", "Check the log for more information about this message."
}
}
else if (button == CONTEXT_BUTTON_EDIT_SOURCE)
{
std::string strURL = pItem->GetProperty("StreamURL").asString();
if (CGUIKeyboardFactory::ShowAndGetInput(strURL, CVariant{g_localizeStrings.Get(19214)}, false))
pItem->SetProperty("StreamURL", strURL);
}
return true;
}