示例#1
0
bool CPVRManager::StartRecordingOnPlayingChannel(bool bOnOff)
{
  bool bReturn = false;

  CPVRChannel channel;
  if (!m_addons->GetPlayingChannel(channel))
    return bReturn;

  if (m_addons->HasTimerSupport(channel.ClientID()))
  {
    /* timers are supported on this channel */
    if (bOnOff && !channel.IsRecording())
    {
      CPVRTimerInfoTag *newTimer = m_timers->InstantTimer(&channel);
      if (!newTimer)
        CGUIDialogOK::ShowAndGetInput(19033,0,19164,0);
      else
        bReturn = true;
    }
    else if (!bOnOff && channel.IsRecording())
    {
      /* delete active timers */
      bReturn = m_timers->DeleteTimersOnChannel(channel, false, true);
    }
  }

  return bReturn;
}
示例#2
0
bool CPVRManager::ToggleRecordingOnChannel(unsigned int iChannelId)
{
  bool bReturn = false;

  CPVRChannel *channel;
  channel = m_channelGroups->GetChannelById(iChannelId);
  if (!channel)
    return bReturn;

  if (m_addons->HasTimerSupport(channel->ClientID()))
  {
    /* timers are supported on this channel */
    if (!channel->IsRecording())
    {
      CPVRTimerInfoTag *newTimer = m_timers->InstantTimer(channel);
      if (!newTimer)
        CGUIDialogOK::ShowAndGetInput(19033,0,19164,0);
      else
        bReturn = true;
    }
    else
    {
      /* delete active timers */
      bReturn = m_timers->DeleteTimersOnChannel(*channel, false, true);
    }
  }

  return bReturn;
}
示例#3
0
文件: PVRChannel.cpp 项目: rdaoc/xbmc
bool CPVRChannel::UpdateFromClient(const CPVRChannel &channel)
{
  bool bChanged = false;

  bChanged = SetClientID(channel.ClientID()) || bChanged;
  bChanged = SetClientChannelNumber(channel.ClientChannelNumber()) || bChanged;
  bChanged = SetClientChannelName(channel.ClientChannelName()) || bChanged;
  bChanged = SetInputFormat(channel.InputFormat()) || bChanged;
  bChanged = SetStreamURL(channel.StreamURL()) || bChanged;
  bChanged = SetEncryptionSystem(channel.EncryptionSystem()) || bChanged;
  bChanged = SetRecording(channel.IsRecording()) || bChanged;

  if (m_strChannelName.IsEmpty())
  {
    m_strChannelName = channel.ClientChannelName();
    bChanged = true;
  }

  if (m_strIconPath.IsEmpty())
  {
    m_strIconPath = channel.IconPath();
    bChanged = true;
  }

  return bChanged;
}
示例#4
0
JSON_STATUS CPVROperations::RecordCurrentChannel(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
  if (!g_PVRManager.IsStarted())
  {
    CLog::Log(LOGDEBUG, "JSONRPC: PVR not started");
    return FailedToExecute;
  }

  CPVRChannel currentChannel;
  if (g_PVRManager.GetCurrentChannel(currentChannel))
  {
    bool bOnOff = !currentChannel.IsRecording();
    if (g_PVRManager.StartRecordingOnPlayingChannel(bOnOff))
    {
      CLog::Log(LOGDEBUG, "JSONRPC: set recording on currently playing channel to '%s'", bOnOff ? "on" : "off" );
      return ACK;
    }
    else
    {
      CLog::Log(LOGERROR, "JSONRPC: unable to set recording to '%s'", bOnOff ? "on" : "off" );
      return InternalError;
    }
  }
  else
  {
    CLog::Log(LOGERROR, "JSONRPC: failed to start recording - no channel is playing");
    return FailedToExecute;
  }
}
示例#5
0
void CPVRClient::WriteClientChannelInfo(const CPVRChannel &xbmcChannel, PVR_CHANNEL &addonChannel)
{
    addonChannel.iUniqueId         = xbmcChannel.UniqueID();
    addonChannel.iChannelNumber    = xbmcChannel.ClientChannelNumber();
    addonChannel.strChannelName    = xbmcChannel.ClientChannelName().c_str();
    addonChannel.strIconPath       = xbmcChannel.IconPath().c_str();
    addonChannel.iEncryptionSystem = xbmcChannel.EncryptionSystem();
    addonChannel.bIsRadio          = xbmcChannel.IsRadio();
    addonChannel.bIsHidden         = xbmcChannel.IsHidden();
    addonChannel.bIsRecording      = xbmcChannel.IsRecording();
    addonChannel.strInputFormat    = xbmcChannel.InputFormat().c_str();
    addonChannel.strStreamURL      = xbmcChannel.StreamURL().c_str();
}
void CGUIWindowPVRChannels::GetContextButtons(int itemNumber, CContextButtons &buttons) const
{
  if (itemNumber < 0 || itemNumber >= m_parent->m_vecItems->Size())
    return;
  CFileItemPtr pItem = m_parent->m_vecItems->Get(itemNumber);
  CPVRChannel *channel = pItem->GetPVRChannelInfoTag();

  if (pItem->GetPath() == "pvr://channels/.add.channel")
  {
    /* If yes show only "New Channel" on context menu */
    buttons.Add(CONTEXT_BUTTON_ADD, 19046);                                           /* add new channel */
  }
  else
  {
    buttons.Add(CONTEXT_BUTTON_INFO, 19047);                                          /* channel info */
    buttons.Add(CONTEXT_BUTTON_FIND, 19003);                                          /* find similar program */
    buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 19000);                                     /* switch to channel */
    buttons.Add(CONTEXT_BUTTON_RECORD_ITEM, channel->IsRecording() ? 19256 : 19255);  /* start/stop recording on channel */
    buttons.Add(CONTEXT_BUTTON_SET_THUMB, 20019);                                     /* change icon */
    buttons.Add(CONTEXT_BUTTON_GROUP_MANAGER, 19048);                                 /* group manager */
    buttons.Add(CONTEXT_BUTTON_HIDE, m_bShowHiddenChannels ? 19049 : 19054);          /* show/hide channel */

    if (m_parent->m_vecItems->Size() > 1 && !m_bShowHiddenChannels)
      buttons.Add(CONTEXT_BUTTON_MOVE, 116);                                          /* move channel up or down */

    if (m_bShowHiddenChannels || g_PVRChannelGroups->GetGroupAllTV()->GetNumHiddenChannels() > 0)
      buttons.Add(CONTEXT_BUTTON_SHOW_HIDDEN, m_bShowHiddenChannels ? 19050 : 19051); /* show hidden/visible channels */

    if (g_PVRClients->HasMenuHooks(pItem->GetPVRChannelInfoTag()->ClientID(), PVR_MENUHOOK_CHANNEL))
      buttons.Add(CONTEXT_BUTTON_MENU_HOOKS, 19195);                                  /* PVR client specific action */

    CPVRChannel *channel = pItem->GetPVRChannelInfoTag();
    buttons.Add(CONTEXT_BUTTON_ADD_LOCK, channel->IsLocked() ? 19258 : 19257);        /* show lock/unlock channel */

    buttons.Add(CONTEXT_BUTTON_FILTER, 19249);                                        /* filter channels */
    buttons.Add(CONTEXT_BUTTON_UPDATE_EPG, 19251);                                    /* update EPG information */
  }
}
示例#7
0
bool CPVRClients::IsRecordingOnPlayingChannel(void) const
{
  CPVRChannel currentChannel;
  return GetPlayingChannel(currentChannel) && currentChannel.IsRecording();
}