本文整理汇总了C++中CFileItemPtr::HasEPGInfoTag方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItemPtr::HasEPGInfoTag方法的具体用法?C++ CFileItemPtr::HasEPGInfoTag怎么用?C++ CFileItemPtr::HasEPGInfoTag使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItemPtr
的用法示例。
在下文中一共展示了CFileItemPtr::HasEPGInfoTag方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnPlaybackStarted
void CPVRManager::OnPlaybackStarted(const CFileItemPtr item)
{
m_playingChannel.reset();
m_playingRecording.reset();
m_playingEpgTag.reset();
if (item->HasPVRChannelInfoTag())
{
const CPVRChannelPtr channel(item->GetPVRChannelInfoTag());
m_playingChannel = channel;
SetPlayingGroup(channel);
UpdateLastWatched(channel);
}
else if (item->HasPVRRecordingInfoTag())
{
m_playingRecording = item->GetPVRRecordingInfoTag();
}
else if (item->HasEPGInfoTag())
{
m_playingEpgTag = item->GetEPGInfoTag();
}
m_guiActions->OnPlaybackStarted(item);
}
示例2: AddTimer
JSONRPC_STATUS CPVROperations::AddTimer(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
{
if (!g_PVRManager.IsStarted())
return FailedToExecute;
CFileItemPtr broadcast = CPVROperations::GetBroadcastFromBroadcastid(parameterObject["broadcastid"].asUnsignedInteger());
if (!broadcast)
return InvalidParams;
if (!broadcast->HasEPGInfoTag())
return InvalidParams;
CEpgInfoTagPtr epgTag = broadcast->GetEPGInfoTag();
if (!epgTag)
return InvalidParams;
if (epgTag->HasTimer())
return InvalidParams;
CPVRTimerInfoTagPtr newTimer = CPVRTimerInfoTag::CreateFromEpg(epgTag, parameterObject["timerrule"].asBoolean(false));
if (newTimer)
{
if (g_PVRTimers->AddTimer(newTimer))
return ACK;
}
return FailedToExecute;
}
示例3: GetContextButtons
void CGUIWindowPVRSearch::GetContextButtons(int itemNumber, CContextButtons &buttons)
{
if (itemNumber < 0 || itemNumber >= m_vecItems->Size())
return;
CFileItemPtr pItem = m_vecItems->Get(itemNumber);
if (pItem->HasEPGInfoTag())
{
if (pItem->GetEPGInfoTag()->EndAsLocalTime() > CDateTime::GetCurrentDateTime())
{
if (!pItem->GetEPGInfoTag()->HasTimer())
{
if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime())
buttons.Add(CONTEXT_BUTTON_START_RECORD, 264); /* RECORD programme */
else
buttons.Add(CONTEXT_BUTTON_START_RECORD, 19061); /* Create a Timer */
}
else
{
if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime())
buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* Stop recording */
else
buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19060); /* Delete Timer */
}
}
buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* Epg info button */
if (pItem->GetEPGInfoTag()->HasPVRChannel() &&
g_PVRClients->HasMenuHooks(pItem->GetEPGInfoTag()->ChannelTag()->ClientID(), PVR_MENUHOOK_EPG))
buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */
}
buttons.Add(CONTEXT_BUTTON_CLEAR, 19232); /* Clear search results */
}
示例4: GetContextButtons
void CGUIWindowPVRGuide::GetContextButtons(int itemNumber, CContextButtons &buttons)
{
if (itemNumber < 0 || itemNumber >= m_vecItems->Size())
return;
CFileItemPtr pItem = m_vecItems->Get(itemNumber);
buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 19000); /* switch channel */
if (pItem->HasEPGInfoTag() && pItem->GetEPGInfoTag()->HasRecording())
buttons.Add(CONTEXT_BUTTON_PLAY_OTHER, 19687); /* play recording */
CFileItemPtr timer = g_PVRTimers->GetTimerForEpgTag(pItem.get());
if (timer && timer->HasPVRTimerInfoTag())
{
if (timer->GetPVRTimerInfoTag()->IsRecording())
buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19059); /* stop recording */
else if (timer->GetPVRTimerInfoTag()->HasTimerType() &&
!timer->GetPVRTimerInfoTag()->GetTimerType()->IsReadOnly())
buttons.Add(CONTEXT_BUTTON_STOP_RECORD, 19060); /* delete timer */
}
else if (pItem->HasEPGInfoTag() && pItem->GetEPGInfoTag()->EndAsLocalTime() > CDateTime::GetCurrentDateTime())
{
if (pItem->GetEPGInfoTag()->StartAsLocalTime() < CDateTime::GetCurrentDateTime())
buttons.Add(CONTEXT_BUTTON_START_RECORD, 264); /* record */
buttons.Add(CONTEXT_BUTTON_START_RECORD, 19061); /* add timer */
buttons.Add(CONTEXT_BUTTON_ADVANCED_RECORD, 841); /* add custom timer */
}
buttons.Add(CONTEXT_BUTTON_INFO, 19047); /* epg info */
buttons.Add(CONTEXT_BUTTON_FIND, 19003); /* find similar program */
if (m_viewControl.GetCurrentControl() == GUIDE_VIEW_TIMELINE)
{
buttons.Add(CONTEXT_BUTTON_BEGIN, 19063); /* go to begin */
buttons.Add(CONTEXT_BUTTON_NOW, 19070); /* go to now */
buttons.Add(CONTEXT_BUTTON_END, 19064); /* go to end */
}
if (pItem->HasEPGInfoTag() &&
pItem->GetEPGInfoTag()->HasPVRChannel() &&
g_PVRClients->HasMenuHooks(pItem->GetEPGInfoTag()->ChannelTag()->ClientID(), PVR_MENUHOOK_EPG))
buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195); /* PVR client specific action */
CGUIWindowPVRBase::GetContextButtons(itemNumber, buttons);
CContextMenuManager::Get().AddVisibleItems(pItem, buttons);
}
示例5: OnPlaybackStarted
void CPVRManager::OnPlaybackStarted(const CFileItemPtr item)
{
m_playingChannel.reset();
m_playingRecording.reset();
m_playingEpgTag.reset();
m_playingClientId = -1;
m_strPlayingClientName.clear();
if (item->HasPVRChannelInfoTag())
{
const CPVRChannelPtr channel(item->GetPVRChannelInfoTag());
m_playingChannel = channel;
m_playingClientId = m_playingChannel->ClientID();
SetPlayingGroup(channel);
int iLastWatchedDelay = m_settings.GetIntValue(CSettings::SETTING_PVRPLAYBACK_DELAYMARKLASTWATCHED) * 1000;
if (iLastWatchedDelay > 0)
{
// Insert new / replace existing last watched update timer
if (m_lastWatchedUpdateTimer)
m_lastWatchedUpdateTimer->Stop(true);
m_lastWatchedUpdateTimer.reset(new CLastWatchedUpdateTimer(*this, channel, CDateTime::GetUTCDateTime()));
m_lastWatchedUpdateTimer->Start(iLastWatchedDelay);
}
else
{
// Store last watched timestamp immediately
UpdateLastWatched(channel, CDateTime::GetUTCDateTime());
}
}
else if (item->HasPVRRecordingInfoTag())
{
m_playingRecording = item->GetPVRRecordingInfoTag();
m_playingClientId = m_playingRecording->m_iClientId;
}
else if (item->HasEPGInfoTag())
{
m_playingEpgTag = item->GetEPGInfoTag();
m_playingClientId = m_playingEpgTag->ClientID();
}
if (m_playingClientId != -1)
{
const CPVRClientPtr client = GetClient(m_playingClientId);
if (client)
m_strPlayingClientName = client->GetFriendlyName();
}
m_guiActions->OnPlaybackStarted(item);
m_epgContainer.OnPlaybackStarted(item);
}
示例6: OnPlaybackStopped
void CPVRManager::OnPlaybackStopped(const CFileItemPtr item)
{
// Playback ended due to user interaction
if (item->HasPVRChannelInfoTag() && item->GetPVRChannelInfoTag() == m_playingChannel)
{
bool bUpdateLastWatched = true;
if (m_lastWatchedUpdateTimer)
{
if (m_lastWatchedUpdateTimer->IsRunning())
{
// If last watched timer is still running, cancel it. Channel was not watched long enough to store the value.
m_lastWatchedUpdateTimer->Stop(true);
bUpdateLastWatched = false;
}
m_lastWatchedUpdateTimer.reset();
}
if (bUpdateLastWatched)
{
// If last watched timer is not running (any more), channel was watched long enough to store the value.
UpdateLastWatched(m_playingChannel, CDateTime::GetUTCDateTime());
}
SetChanged();
NotifyObservers(ObservableMessageChannelPlaybackStopped);
m_playingChannel.reset();
m_playingClientId = -1;
m_strPlayingClientName.clear();
}
else if (item->HasPVRRecordingInfoTag() && item->GetPVRRecordingInfoTag() == m_playingRecording)
{
m_playingRecording.reset();
m_playingClientId = -1;
m_strPlayingClientName.clear();
}
else if (item->HasEPGInfoTag() && item->GetEPGInfoTag() == m_playingEpgTag)
{
m_playingEpgTag.reset();
m_playingClientId = -1;
m_strPlayingClientName.clear();
}
m_guiActions->OnPlaybackStopped(item);
m_epgContainer.OnPlaybackStopped(item);
}
示例7: ToggleTimer
bool CPVRGUIActions::ToggleTimer(const CFileItemPtr &item) const
{
if (!item->HasEPGInfoTag())
return false;
const CPVRTimerInfoTagPtr timer(CPVRItem(item).GetTimerInfoTag());
if (timer)
{
if (timer->IsRecording())
return StopRecording(item);
else
return DeleteTimer(item);
}
else
return AddTimer(item, false);
}
示例8: GetTimerRule
CFileItemPtr CPVRTimers::GetTimerRule(const CFileItemPtr &item) const
{
CPVRTimerInfoTagPtr timer;
if (item && item->HasEPGInfoTag())
timer = GetTimerForEpgTag(item->GetEPGInfoTag());
else if (item && item->HasPVRTimerInfoTag())
timer = item->GetPVRTimerInfoTag();
if (timer)
{
timer = GetTimerRule(timer);
if (timer)
return CFileItemPtr(new CFileItem(timer));
}
return CFileItemPtr();
}
示例9: OnPlaybackStopped
void CPVRManager::OnPlaybackStopped(const CFileItemPtr item)
{
// Playback ended due to user interaction
if (item->HasPVRChannelInfoTag() && item->GetPVRChannelInfoTag() == m_playingChannel)
{
UpdateLastWatched(item->GetPVRChannelInfoTag());
m_playingChannel.reset();
}
else if (item->HasPVRRecordingInfoTag() && item->GetPVRRecordingInfoTag() == m_playingRecording)
{
m_playingRecording.reset();
}
else if (item->HasEPGInfoTag() && item->GetEPGInfoTag() == m_playingEpgTag)
{
m_playingEpgTag.reset();
}
m_guiActions->OnPlaybackStopped(item);
}
示例10: ToggleTimer
JSONRPC_STATUS CPVROperations::ToggleTimer(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
{
if (!g_PVRManager.IsStarted())
return FailedToExecute;
CFileItemPtr broadcast = CPVROperations::GetBroadcastFromBroadcastid(parameterObject["broadcastid"].asUnsignedInteger());
if (!broadcast)
return InvalidParams;
if (!broadcast->HasEPGInfoTag())
return InvalidParams;
CEpgInfoTagPtr epgTag = broadcast->GetEPGInfoTag();
if (!epgTag)
return InvalidParams;
bool timerrule = parameterObject["timerrule"].asBoolean(false);
bool sentOkay = false;
CPVRTimerInfoTagPtr timer(epgTag->Timer());
if (timer)
{
if (timerrule)
timer = g_PVRTimers->GetTimerRule(timer);
if (timer)
sentOkay = g_PVRTimers->DeleteTimer(timer, timer->IsRecording(), false);
}
else
{
timer = CPVRTimerInfoTag::CreateFromEpg(epgTag, timerrule);
sentOkay = g_PVRTimers->AddTimer(timer);
}
if (sentOkay)
return ACK;
return FailedToExecute;
}
示例11: OnInitWindow
void CGUIDialogPVRGuideOSD::OnInitWindow()
{
/* Close dialog immediately if no TV or radio channel is playing */
if (!g_PVRManager.IsPlaying())
{
Close();
return;
}
// lock our display, as this window is rendered from the player thread
g_graphicsContext.Lock();
m_viewControl.SetCurrentView(DEFAULT_VIEW_LIST);
// empty the list ready for population
Clear();
g_PVRManager.GetCurrentEpg(*m_vecItems);
m_viewControl.SetItems(*m_vecItems);
g_graphicsContext.Unlock();
// call init
CGUIDialog::OnInitWindow();
// select the active entry
unsigned int iSelectedItem = 0;
for (int iEpgPtr = 0; iEpgPtr < m_vecItems->Size(); iEpgPtr++)
{
CFileItemPtr entry = m_vecItems->Get(iEpgPtr);
if (entry->HasEPGInfoTag() && entry->GetEPGInfoTag()->IsActive())
{
iSelectedItem = iEpgPtr;
break;
}
}
m_viewControl.SetSelectedItem(iSelectedItem);
}
示例12: HandleFileItem
void CFileItemHandler::HandleFileItem(const char *ID, bool allowFile, const char *resultname, CFileItemPtr item, const CVariant ¶meterObject, const std::set<std::string> &validFields, CVariant &result, bool append /* = true */, CThumbLoader *thumbLoader /* = NULL */)
{
CVariant object;
std::set<std::string> fields(validFields.begin(), validFields.end());
if (item.get())
{
std::set<std::string>::const_iterator fileField = fields.find("file");
if (fileField != fields.end())
{
if (allowFile)
{
if (item->HasVideoInfoTag() && !item->GetVideoInfoTag()->GetPath().empty())
object["file"] = item->GetVideoInfoTag()->GetPath().c_str();
if (item->HasMusicInfoTag() && !item->GetMusicInfoTag()->GetURL().empty())
object["file"] = item->GetMusicInfoTag()->GetURL().c_str();
if (item->HasPVRRecordingInfoTag() && !item->GetPVRRecordingInfoTag()->GetPath().empty())
object["file"] = item->GetPVRRecordingInfoTag()->GetPath().c_str();
if (item->HasPVRTimerInfoTag() && !item->GetPVRTimerInfoTag()->m_strFileNameAndPath.empty())
object["file"] = item->GetPVRTimerInfoTag()->m_strFileNameAndPath.c_str();
if (!object.isMember("file"))
object["file"] = item->GetPath().c_str();
}
fields.erase(fileField);
}
if (ID)
{
if (item->HasPVRChannelInfoTag() && item->GetPVRChannelInfoTag()->ChannelID() > 0)
object[ID] = item->GetPVRChannelInfoTag()->ChannelID();
else if (item->HasEPGInfoTag() && item->GetEPGInfoTag()->UniqueBroadcastID() > 0)
object[ID] = item->GetEPGInfoTag()->UniqueBroadcastID();
else if (item->HasPVRRecordingInfoTag() && item->GetPVRRecordingInfoTag()->m_iRecordingId > 0)
object[ID] = item->GetPVRRecordingInfoTag()->m_iRecordingId;
else if (item->HasPVRTimerInfoTag() && item->GetPVRTimerInfoTag()->m_iTimerId > 0)
object[ID] = item->GetPVRTimerInfoTag()->m_iTimerId;
else if (item->HasMusicInfoTag() && item->GetMusicInfoTag()->GetDatabaseId() > 0)
object[ID] = (int)item->GetMusicInfoTag()->GetDatabaseId();
else if (item->HasVideoInfoTag() && item->GetVideoInfoTag()->m_iDbId > 0)
object[ID] = item->GetVideoInfoTag()->m_iDbId;
if (stricmp(ID, "id") == 0)
{
if (item->HasPVRChannelInfoTag())
object["type"] = "channel";
else if (item->HasMusicInfoTag())
{
std::string type = item->GetMusicInfoTag()->GetType();
if (type == MediaTypeAlbum || type == MediaTypeSong || type == MediaTypeArtist)
object["type"] = type;
else if (!item->m_bIsFolder)
object["type"] = MediaTypeSong;
}
else if (item->HasVideoInfoTag() && !item->GetVideoInfoTag()->m_type.empty())
{
std::string type = item->GetVideoInfoTag()->m_type;
if (type == MediaTypeMovie || type == MediaTypeTvShow || type == MediaTypeEpisode || type == MediaTypeMusicVideo)
object["type"] = type;
}
else if (item->HasPictureInfoTag())
object["type"] = "picture";
if (!object.isMember("type"))
object["type"] = "unknown";
if (fields.find("filetype") != fields.end())
{
if (item->m_bIsFolder)
object["filetype"] = "directory";
else
object["filetype"] = "file";
}
}
}
bool deleteThumbloader = false;
if (thumbLoader == NULL)
{
if (item->HasVideoInfoTag())
thumbLoader = new CVideoThumbLoader();
else if (item->HasMusicInfoTag())
thumbLoader = new CMusicThumbLoader();
if (thumbLoader != NULL)
{
deleteThumbloader = true;
thumbLoader->OnLoaderStart();
}
}
if (item->HasPVRChannelInfoTag())
FillDetails(item->GetPVRChannelInfoTag().get(), item, fields, object, thumbLoader);
if (item->HasEPGInfoTag())
FillDetails(item->GetEPGInfoTag().get(), item, fields, object, thumbLoader);
if (item->HasPVRRecordingInfoTag())
FillDetails(item->GetPVRRecordingInfoTag().get(), item, fields, object, thumbLoader);
if (item->HasPVRTimerInfoTag())
FillDetails(item->GetPVRTimerInfoTag().get(), item, fields, object, thumbLoader);
if (item->HasVideoInfoTag())
//.........这里部分代码省略.........