bool CPVRManager::ToggleRecordingOnChannel(unsigned int iChannelId) { bool bReturn = false; CPVRChannelPtr channel = m_channelGroups->GetChannelById(iChannelId); if (!channel) return bReturn; if (m_addons->HasTimerSupport(channel->ClientID())) { /* timers are supported on this channel */ if (!channel->IsRecording()) { bReturn = m_timers->InstantTimer(*channel); if (!bReturn) CGUIDialogOK::ShowAndGetInput(19033,0,19164,0); } else { /* delete active timers */ bReturn = m_timers->DeleteTimersOnChannel(*channel, false, true); } } return bReturn; }
JSONRPC_STATUS CPVROperations::Record(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { if (!g_PVRManager.IsStarted()) return FailedToExecute; CPVRChannelPtr pChannel; CVariant channel = parameterObject["channel"]; if (channel.isString() && channel.asString() == "current") { pChannel = g_PVRManager.GetCurrentChannel(); if (!pChannel) return InternalError; } else if (channel.isInteger()) { CPVRChannelGroupsContainer *channelGroupContainer = g_PVRManager.ChannelGroups(); if (channelGroupContainer == NULL) return FailedToExecute; pChannel = channelGroupContainer->GetChannelById((int)channel.asInteger()); } else return InvalidParams; if (pChannel == NULL) return InvalidParams; else if (!pChannel->CanRecord()) return FailedToExecute; CVariant record = parameterObject["record"]; bool toggle = true; if (record.isBoolean() && record.asBoolean() == pChannel->IsRecording()) toggle = false; if (toggle) { if (!g_PVRManager.ToggleRecordingOnChannel(pChannel->ChannelID())) return FailedToExecute; } return ACK; }
bool CPVRManager::IsRecordingOnPlayingChannel(void) const { const CPVRChannelPtr currentChannel = GetPlayingChannel(); return currentChannel && currentChannel->IsRecording(); }
bool CPVRClients::IsRecordingOnPlayingChannel(void) const { CPVRChannelPtr currentChannel; return GetPlayingChannel(currentChannel) && currentChannel->IsRecording(); }