mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-27 15:32:52 +02:00
Ask user for storing overlapping CI timer from epg
Origin commit data
------------------
Branch: ni/coolstream
Commit: 7543aa602c
Author: FlatTV <FlatTV@gmx.de>
Date: 2016-07-10 (Sun, 10 Jul 2016)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -330,6 +330,7 @@ int CTimerdClient::addTimerEvent( CTimerd::CTimerEventTypes evType, void* data,
|
||||
tri.epg_starttime = ri->epg_starttime;
|
||||
tri.epgID = ri->epgID;
|
||||
tri.recordingSafety = ri->recordingSafety;
|
||||
tri.channel_ci = ri->channel_ci; //NI
|
||||
strncpy(tri.recordingDir, ri->recordingDir, RECORD_DIR_MAXLEN-1);
|
||||
length = sizeof( CTimerd::TransferRecordingInfo);
|
||||
data = &tri;
|
||||
@@ -418,7 +419,6 @@ CTimerd::TimerList CTimerdClient::getOverlappingTimers(time_t& startTime, time_t
|
||||
}
|
||||
return overlapping;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
bool CTimerdClient::shutdown()
|
||||
|
@@ -111,7 +111,7 @@ class CTimerdClient:private CBasicClient
|
||||
// adds new record timer event
|
||||
int addRecordTimerEvent(const t_channel_id channel_id, time_t alarmtime, time_t stoptime,
|
||||
uint64_t epgID=0, time_t epg_starttime=0, time_t announcetime = 0,
|
||||
unsigned char apids=TIMERD_APIDS_STD, bool safety=false,std::string recDir="", bool forceAdd=true)
|
||||
unsigned char apids=TIMERD_APIDS_STD, bool safety=false,std::string recDir="", bool forceAdd=true,/*NI*/bool channel_ci=false)
|
||||
{
|
||||
CTimerd::RecordingInfo eventInfo;
|
||||
eventInfo.channel_id = channel_id;
|
||||
@@ -119,6 +119,7 @@ class CTimerdClient:private CBasicClient
|
||||
eventInfo.epg_starttime = epg_starttime;
|
||||
eventInfo.apids = apids;
|
||||
eventInfo.recordingSafety = safety;
|
||||
eventInfo.channel_ci = channel_ci; //NI
|
||||
strncpy(eventInfo.recordingDir, recDir.c_str(), RECORD_DIR_MAXLEN);
|
||||
return addTimerEvent(CTimerd::TIMER_RECORD, &eventInfo, announcetime, alarmtime, stoptime,CTimerd::TIMERREPEAT_ONCE, 0,forceAdd);
|
||||
};
|
||||
|
@@ -87,6 +87,7 @@ class CTimerd
|
||||
t_channel_id channel_id;
|
||||
unsigned char apids;
|
||||
bool recordingSafety;
|
||||
bool channel_ci; //NI - channel is member of CI bouquet?
|
||||
};
|
||||
|
||||
struct TransferEventInfo
|
||||
@@ -96,6 +97,7 @@ class CTimerd
|
||||
t_channel_id channel_id;
|
||||
unsigned char apids;
|
||||
bool recordingSafety;
|
||||
bool channel_ci; //NI - channel is member of CI bouquet?
|
||||
};
|
||||
|
||||
struct TransferRecordingInfo : TransferEventInfo
|
||||
@@ -116,6 +118,7 @@ class CTimerd
|
||||
epgID = e.epgID;
|
||||
epg_starttime = e.epg_starttime;
|
||||
recordingSafety = e.recordingSafety;
|
||||
channel_ci = e.channel_ci; //NI
|
||||
};
|
||||
RecordingInfo& operator = (EventInfo& e)
|
||||
{
|
||||
@@ -124,6 +127,7 @@ class CTimerd
|
||||
epgID = e.epgID;
|
||||
epg_starttime = e.epg_starttime;
|
||||
recordingSafety = e.recordingSafety;
|
||||
channel_ci = e.channel_ci; //NI
|
||||
return *this;
|
||||
}
|
||||
unsigned char apids;
|
||||
@@ -157,7 +161,7 @@ class CTimerd
|
||||
char pluginName[EXEC_PLUGIN_NAME_MAXLEN]; //only filled if applicable
|
||||
char recordingDir[RECORD_DIR_MAXLEN]; //only filled if applicable
|
||||
char epgTitle[EPG_TITLE_MAXLEN]; //only filled if applicable
|
||||
|
||||
bool channel_ci; //NI
|
||||
bool operator< (const responseGetTimer& a) const
|
||||
{
|
||||
return this->alarmTime < a.alarmTime ;
|
||||
|
@@ -45,6 +45,8 @@
|
||||
#include <gui/widget/messagebox.h>
|
||||
#include <gui/timerlist.h>
|
||||
|
||||
#include <zapit/zapit.h> //NI
|
||||
|
||||
#include <global.h>
|
||||
#include <neutrino.h>
|
||||
|
||||
@@ -98,14 +100,18 @@ int CFollowScreenings::exec(CMenuTarget* /*parent*/, const std::string & actionK
|
||||
#endif
|
||||
return menu_return::RETURN_REPAINT;
|
||||
}
|
||||
if (!SAME_TRANSPONDER(channel_id, i->channel_id)) {
|
||||
if (!SAME_TRANSPONDER(channel_id, i->channel_id) ||/*NI*/CZapit::getInstance()->getUseChannelFilter()) {
|
||||
if (!askUserOnTimerConflict(start, stop, channel_id))
|
||||
return menu_return::RETURN_REPAINT;
|
||||
else
|
||||
break; //NI - show conflicts only once
|
||||
}
|
||||
}
|
||||
//NI
|
||||
CZapitChannel * ch = CServiceManager::getInstance()->FindChannel(channel_id);
|
||||
|
||||
if (g_Timerd->addRecordTimerEvent(channel_id, e->startTime, e->startTime + e->duration, e->eventID,
|
||||
e->startTime, e->startTime - (ANNOUNCETIME + 120 ), apids, true, recDir, true) == -1) {
|
||||
e->startTime, e->startTime - (ANNOUNCETIME + 120 ), apids, true, recDir, true,/*NI*/ch->bUseCI) == -1) {
|
||||
//FIXME -- no error handling, but this shouldn't happen ...
|
||||
} else {
|
||||
#if 0
|
||||
|
@@ -737,6 +737,7 @@ void CTimerList::paintItem(int pos)
|
||||
case CTimerd::TIMER_RECORD :
|
||||
{
|
||||
zAddData = convertChannelId2String(timer.channel_id); // UTF-8
|
||||
zAddData += timer.channel_ci?"(CI)":""; //NI
|
||||
if (timer.apids != TIMERD_APIDS_CONF)
|
||||
{
|
||||
std::string sep = "";
|
||||
@@ -1263,7 +1264,11 @@ int CTimerList::newTimer()
|
||||
|
||||
bool askUserOnTimerConflict(time_t announceTime, time_t stopTime, t_channel_id channel_id)
|
||||
{
|
||||
if (CFEManager::getInstance()->getEnabledCount() == 1) {
|
||||
//NI
|
||||
CZapitChannel * channel = CServiceManager::getInstance()->FindChannel(channel_id);
|
||||
bool useCI = channel->bUseCI;
|
||||
|
||||
if (CFEManager::getInstance()->getEnabledCount() == 1 || /*NI*/useCI) {
|
||||
CTimerdClient Timer;
|
||||
CTimerd::TimerList overlappingTimers = Timer.getOverlappingTimers(announceTime,stopTime);
|
||||
//printf("[CTimerdClient] attention\n%d\t%d\t%d conflicts with:\n",timerNew.announceTime,timerNew.alarmTime,timerNew.stopTime);
|
||||
@@ -1272,7 +1277,10 @@ bool askUserOnTimerConflict(time_t announceTime, time_t stopTime, t_channel_id c
|
||||
if (channel_id) {
|
||||
CTimerd::TimerList::iterator i;
|
||||
for (i = overlappingTimers.begin(); i != overlappingTimers.end(); i++)
|
||||
if ((i->eventType != CTimerd::TIMER_RECORD || !SAME_TRANSPONDER(channel_id, i->channel_id)))
|
||||
//NI if ((i->eventType != CTimerd::TIMER_RECORD || !SAME_TRANSPONDER(channel_id, i->channel_id)))
|
||||
if ((i->eventType != CTimerd::TIMER_RECORD ||
|
||||
(!SAME_TRANSPONDER(channel_id, i->channel_id) && !useCI) ||
|
||||
(useCI && i->channel_ci)))
|
||||
break;
|
||||
if (i == overlappingTimers.end())
|
||||
return true; // yes, add timer
|
||||
@@ -1283,6 +1291,10 @@ bool askUserOnTimerConflict(time_t announceTime, time_t stopTime, t_channel_id c
|
||||
for (CTimerd::TimerList::iterator it = overlappingTimers.begin();
|
||||
it != overlappingTimers.end(); ++it)
|
||||
{
|
||||
//NI
|
||||
if(useCI && !it->channel_ci)
|
||||
continue;
|
||||
|
||||
timerbuf += CTimerList::convertTimerType2String(it->eventType);
|
||||
timerbuf += " (";
|
||||
timerbuf += CTimerList::convertChannelId2String(it->channel_id); // UTF-8
|
||||
|
@@ -115,6 +115,7 @@ bool timerd_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
||||
resp.apids = ev->eventInfo.apids;
|
||||
strcpy(resp.recordingDir, ev->recordingDir.substr(0,sizeof(resp.recordingDir)-1).c_str());
|
||||
strcpy(resp.epgTitle, ev->epgTitle.substr(0,sizeof(resp.epgTitle)-1).c_str());
|
||||
resp.channel_ci = ev->eventInfo.channel_ci; //NI
|
||||
}
|
||||
else if(event->eventType == CTimerd::TIMER_ZAPTO)
|
||||
{
|
||||
@@ -184,6 +185,7 @@ bool timerd_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
||||
lresp.apids = ev->eventInfo.apids;
|
||||
strcpy(lresp.recordingDir, ev->recordingDir.substr(0,sizeof(lresp.recordingDir)-1).c_str());
|
||||
strcpy(lresp.epgTitle, ev->epgTitle.substr(0,sizeof(lresp.epgTitle)-1).c_str());
|
||||
lresp.channel_ci = ev->eventInfo.channel_ci; //NI
|
||||
}
|
||||
else if(event->eventType == CTimerd::TIMER_ZAPTO)
|
||||
{
|
||||
@@ -321,7 +323,8 @@ bool timerd_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
||||
recInfo.apids,
|
||||
msgAddTimer.eventRepeat,
|
||||
msgAddTimer.repeatCount,
|
||||
recInfo.recordingDir);
|
||||
recInfo.recordingDir,
|
||||
recInfo.channel_ci); //NI
|
||||
rspAddTimer.eventID = CTimerManager::getInstance()->addEvent(event);
|
||||
|
||||
break;
|
||||
|
@@ -1134,13 +1134,14 @@ CTimerEvent_Record::CTimerEvent_Record(time_t announce_Time, time_t alarm_Time,
|
||||
event_id_t epgID,
|
||||
time_t epg_starttime, unsigned char apids,
|
||||
CTimerd::CTimerEventRepeat evrepeat,
|
||||
uint32_t repeatcount, const std::string &recDir) :
|
||||
uint32_t repeatcount, const std::string &recDir,/*NI*/bool channel_ci) :
|
||||
CTimerEvent(getEventType(), announce_Time, alarm_Time, stop_Time, evrepeat, repeatcount)
|
||||
{
|
||||
eventInfo.epgID = epgID;
|
||||
eventInfo.epg_starttime = epg_starttime;
|
||||
eventInfo.channel_id = channel_id;
|
||||
eventInfo.apids = apids;
|
||||
eventInfo.channel_ci = channel_ci; //NI
|
||||
recordingDir = recDir;
|
||||
epgTitle="";
|
||||
CShortEPGData epgdata;
|
||||
@@ -1172,6 +1173,9 @@ CTimerEvent_Record::CTimerEvent_Record(CConfigFile *config, int iId):
|
||||
|
||||
epgTitle = config->getString("EPG_TITLE_"+id);
|
||||
dprintf("read EPG_TITLE_%s %s (%p)\n",id.c_str(),epgTitle.c_str(),&epgTitle);
|
||||
//NI
|
||||
eventInfo.channel_ci = config->getBool("EVENT_INFO_CHANNEL_CI_"+id);
|
||||
dprintf("read EVENT_INFO_CHANNEL_CI_%s %i\n",id.c_str(),eventInfo.channel_ci);
|
||||
}
|
||||
//------------------------------------------------------------
|
||||
void CTimerEvent_Record::fireEvent()
|
||||
@@ -1238,6 +1242,9 @@ void CTimerEvent_Record::saveToConfig(CConfigFile *config)
|
||||
|
||||
config->setString("EPG_TITLE_"+id,epgTitle);
|
||||
dprintf("set EPG_TITLE_%s to %s (%p)\n",id.c_str(),epgTitle.c_str(), &epgTitle);
|
||||
//NI
|
||||
config->setBool("EVENT_INFO_CHANNEL_CI_"+id, eventInfo.channel_ci);
|
||||
dprintf("set EVENT_INFO_CHANNEL_CI_%s to %i\n",id.c_str(),eventInfo.channel_ci);
|
||||
}
|
||||
//------------------------------------------------------------
|
||||
void CTimerEvent_Record::Reschedule()
|
||||
|
@@ -123,7 +123,7 @@ class CTimerEvent_Record : public CTimerEvent
|
||||
time_t epg_starttime = 0,
|
||||
unsigned char apids = TIMERD_APIDS_STD,
|
||||
CTimerd::CTimerEventRepeat evrepeat = CTimerd::TIMERREPEAT_ONCE,
|
||||
uint32_t repeatcount = 1, const std::string &recDir = "");
|
||||
uint32_t repeatcount = 1, const std::string &recDir = "",/*NI*/bool channel_ci=false);
|
||||
CTimerEvent_Record(CConfigFile *config, int iId);
|
||||
virtual ~CTimerEvent_Record(){};
|
||||
virtual CTimerd::CTimerEventTypes getEventType(void) const { return CTimerd::TIMER_RECORD; };
|
||||
|
@@ -273,5 +273,7 @@ class CZapit : public OpenThreads::Thread
|
||||
void unlockPlayBack(const bool sendpmt = true);
|
||||
void Rezap();
|
||||
std::list<std::string> *GetWebTVXML(void) { return webtv_xml; }
|
||||
//NI
|
||||
bool getUseChannelFilter();
|
||||
};
|
||||
#endif /* __zapit_h__ */
|
||||
|
@@ -2469,6 +2469,11 @@ static bool zapit_parse_command(CBasicMessage::Header &rmsg, int connfd)
|
||||
{
|
||||
return CZapit::getInstance()->ParseCommand(rmsg, connfd);
|
||||
}
|
||||
//NI
|
||||
bool CZapit::getUseChannelFilter()
|
||||
{
|
||||
return CCamManager::getInstance()->getChannelFilter();
|
||||
}
|
||||
|
||||
void CZapit::run()
|
||||
{
|
||||
|
Reference in New Issue
Block a user