diff --git a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp index 38595342b..ab58b0b95 100644 --- a/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/coolstream/controlapi.cpp @@ -1389,6 +1389,24 @@ void CControlAPI::SendTimers(CyhookHandler *hh) } } +//----------------------------------------------------------------------------- +void CControlAPI::_SendTime(CyhookHandler *hh, struct tm *Time, int digits){ + char zTime[25] = {0}; + char zDate[25] = {0}; + strftime(zTime,20,"%H:%M",Time); + strftime(zDate,20,"%d.%m.%Y",Time); + hh->printf("\t\t\t\t\t%s %s\n",zDate,zTime); + hh->printf("\t\t\t\t\t%s\n",zDate); + hh->printf("\t\t\t\t\t\n",zTime); + hh->printf("\t\t\t\t\t%d\n",digits); + hh->printf("\t\t\t\t\t%d\n",Time->tm_mday); + hh->printf("\t\t\t\t\t%d\n",Time->tm_mon+1); + hh->printf("\t\t\t\t\t%d\n",Time->tm_year+1900); + hh->printf("\t\t\t\t\t%d\n",Time->tm_hour); + hh->printf("\t\t\t\t\t%d\n",Time->tm_min); +} +//----------------------------------------------------------------------------- +// build xml for all timer data (needed for yWeb 3) //----------------------------------------------------------------------------- void CControlAPI::SendTimersXML(CyhookHandler *hh) { @@ -1409,14 +1427,10 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) // Look for Recording Safety Timers too int pre=0, post=0; - //FIXME: determine recording safety status - //if(eventinfo->recordingSafety){ - NeutrinoAPI->Timerd->getRecordingSafety(pre,post); - //} + NeutrinoAPI->Timerd->getRecordingSafety(pre,post); // hh->printf("\t\t\t%d\n",(int)timer->recordingSafety); hh->printf("\t\t\t%d\n",pre); hh->printf("\t\t\t%d\n",post); - // TODO: Timer config hh->WriteLn("\t\n"); // start timer list @@ -1430,50 +1444,53 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) hh->printf("\t\t\t%d\n",(int)timer->eventState); hh->printf("\t\t\t%d\n",(int)timer->eventType); - // build alarm/stoptime - char zAlarmTime[25] = {0}; - struct tm *alarmTime = localtime(&(timer->alarmTime)); - strftime(zAlarmTime,20,"%d.%m. %H:%M",alarmTime); - hh->printf("\t\t\t%s\n",zAlarmTime); - hh->printf("\t\t\t%d\n",(int)timer->alarmTime); + // alarmtime + hh->WriteLn("\t\t\t\n"); + + struct tm *alarmTime = localtime(&(timer->alarmTime)); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, alarmTime, (int)timer->alarmTime); + hh->WriteLn("\t\t\t\t\n"); - char zSafetyAlarmTime[25] = {0}; time_t real_alarmTimeT = timer->alarmTime - pre; struct tm *safetyAlarmTime = localtime(&real_alarmTimeT); - strftime(zSafetyAlarmTime,20,"%d.%m. %H:%M",safetyAlarmTime); - hh->printf("\t\t\t%s\n",zSafetyAlarmTime); - hh->printf("\t\t\t%d\n",(int)real_alarmTimeT); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, safetyAlarmTime, (int)real_alarmTimeT); + hh->WriteLn("\t\t\t\t\n"); - char zAnnounceTime[25] = {0}; + hh->WriteLn("\t\t\t\n"); + + // announcetime + hh->WriteLn("\t\t\t\n"); struct tm *announceTime = localtime(&(timer->announceTime)); - strftime(zAnnounceTime,20,"%d.%m. %H:%M",announceTime); - hh->printf("\t\t\t%s\n",zAnnounceTime); - hh->printf("\t\t\t%d\n",(int)timer->announceTime); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, announceTime, (int)timer->announceTime); + hh->WriteLn("\t\t\t\t\n"); - char zSafetyAnnounceTime[25] = {0}; time_t real_announceTimeT = timer->announceTime - pre; struct tm *safetyAnnounceTime = localtime(&real_announceTimeT); - strftime(zSafetyAnnounceTime,20,"%d.%m. %H:%M",safetyAnnounceTime); - hh->printf("\t\t\t%s\n",zSafetyAnnounceTime); - hh->printf("\t\t\t%d\n",(int)real_announceTimeT); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, safetyAnnounceTime, (int)real_announceTimeT); + hh->WriteLn("\t\t\t\t\n"); + hh->WriteLn("\t\t\t\n"); - char zStopTime[25] = {0}; + // stoptime if(timer->stopTime > 0){ + hh->WriteLn("\t\t\t\n"); struct tm *stopTime = localtime(&(timer->stopTime)); - strftime(zStopTime,20,"%d.%m. %H:%M",stopTime); - } - hh->printf("\t\t\t%s\n",zStopTime); - hh->printf("\t\t\t%d\n",(int)timer->stopTime); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, stopTime, (int)timer->stopTime); + hh->WriteLn("\t\t\t\t\n"); - char zSafetyStopTime[25] = {0}; - time_t real_stopTimeT = timer->stopTime - post; - if(timer->stopTime > 0){ + time_t real_stopTimeT = timer->stopTime - post; struct tm *safetyStopTime = localtime(&real_stopTimeT); - strftime(zSafetyStopTime,20,"%d.%m. %H:%M",safetyStopTime); + hh->WriteLn("\t\t\t\t\n"); + _SendTime(hh, safetyStopTime, (int)real_stopTimeT); + hh->WriteLn("\t\t\t\t\n"); + + hh->WriteLn("\t\t\t\n"); } - hh->printf("\t\t\t%s\n",zSafetyStopTime); - hh->printf("\t\t\t%d\n",(int)real_stopTimeT); // repeat std::string zRep = NeutrinoAPI->timerEventRepeat2Str(timer->eventRepeat); @@ -1482,12 +1499,14 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) zRepCount = "-"; else zRepCount = (timer->repeatCount == 0) ? "∞" : string_printf("%dx",timer->repeatCount); - hh->printf("\t\t\t%s\n",zRepCount.c_str()); - hh->printf("\t\t\t%d\n",(int)timer->eventRepeat); - hh->printf("\t\t\t%s\n",zRep.c_str()); + hh->WriteLn("\t\t\t\n"); + hh->printf("\t\t\t\t%s\n",zRepCount.c_str()); + hh->printf("\t\t\t\t%d\n",(int)timer->eventRepeat); + hh->printf("\t\t\t\t%s\n",zRep.c_str()); char weekdays[8]={0}; NeutrinoAPI->Timerd->setWeekdaysToStr(timer->eventRepeat, weekdays); - hh->printf("\t\t\t%s\n",weekdays); + hh->printf("\t\t\t\t%s\n",weekdays); + hh->WriteLn("\t\t\t\n"); // channel infos std::string channel_name = NeutrinoAPI->GetServiceName(timer->channel_id); @@ -1503,10 +1522,10 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) title = epgdata.title; } + // timer specific data switch(timer->eventType) { case CTimerd::TIMER_NEXTPROGRAM :{ -// hh->WriteLn("\t\t\tnext_program\n"); hh->printf("\t\t\t" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS "\n",timer->channel_id); hh->printf("\t\t\t%s\n",channel_name.c_str()); hh->printf("\t\t\t%s\n",title.c_str()); @@ -1514,7 +1533,6 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) break; case CTimerd::TIMER_ZAPTO :{ -// hh->WriteLn("\t\t\tzapto\n"); hh->printf("\t\t\t" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS "\n",timer->channel_id); hh->printf("\t\t\t%s\n",channel_name.c_str()); hh->printf("\t\t\t%s\n",title.c_str()); @@ -1522,7 +1540,6 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) break; case CTimerd::TIMER_RECORD :{ -// hh->WriteLn("\t\t\trecord\n"); hh->printf("\t\t\t" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS "\n",timer->channel_id); hh->printf("\t\t\t%s\n",channel_name.c_str()); hh->printf("\t\t\t%s\n",title.c_str()); @@ -1545,13 +1562,11 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) break; case CTimerd::TIMER_STANDBY :{ -// hh->WriteLn("\t\t\tstandby\n"); hh->printf("\t\t\t%s\n",(timer->standby_on)? "on" : "off"); } break; case CTimerd::TIMER_REMIND :{ -// hh->WriteLn("\t\t\tremind\n"); std::string _message; _message = std::string(timer->message).substr(0,20); hh->printf("\t\t\t%s\n",_message.c_str()); @@ -1559,18 +1574,15 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh) break; case CTimerd::TIMER_EXEC_PLUGIN :{ -// hh->WriteLn("\t\t\tplugin\n"); hh->printf("\t\t\t%s\n",timer->pluginName); } break; case CTimerd::TIMER_SLEEPTIMER :{ -// hh->WriteLn("\t\t\tsleeptimer\n"); } break; case CTimerd::TIMER_IMMEDIATE_RECORD :{ -// hh->WriteLn("\t\t\timmediate_record\n"); } break; @@ -1726,16 +1738,13 @@ void CControlAPI::doNewTimer(CyhookHandler *hh) tnull = time(NULL); struct tm *alarmTime=localtime(&tnull); alarmTime->tm_sec = 0; - if(sscanf(hh->ParamList["alDate"].c_str(),"%2d.%2d.%4d",&(alarmTime->tm_mday), &(alarmTime->tm_mon), &(alarmTime->tm_year)) == 3) - { - alarmTime->tm_mon -= 1; - alarmTime->tm_year -= 1900; - } + strptime(hh->ParamList["alDate"].c_str(), "%d.%m.%Y", alarmTime); // Alarm Time - Format exact! HH:MM if(hh->ParamList["alTime"] != "") - sscanf(hh->ParamList["alTime"].c_str(),"%2d.%2d",&(alarmTime->tm_hour), &(alarmTime->tm_min)); + strptime(hh->ParamList["alTime"].c_str(), "%H:%M", alarmTime); alHour = alarmTime->tm_hour; + correctTime(alarmTime); alarmTimeT = mktime(alarmTime); announceTimeT = alarmTimeT; @@ -1743,15 +1752,12 @@ void CControlAPI::doNewTimer(CyhookHandler *hh) stopTime->tm_sec = 0; // Stop Time - Format exact! HH:MM if(hh->ParamList["stTime"] != "") - sscanf(hh->ParamList["stTime"].c_str(),"%2d.%2d",&(stopTime->tm_hour), &(stopTime->tm_min)); + strptime(hh->ParamList["stTime"].c_str(), "%H:%M", stopTime); // Stop Date - Format exact! DD.MM.YYYY if(hh->ParamList["stDate"] != "") - if(sscanf(hh->ParamList["stDate"].c_str(),"%2d.%2d.%4d",&(stopTime->tm_mday), &(stopTime->tm_mon), &(stopTime->tm_year)) == 3) - { - stopTime->tm_mon -= 1; - stopTime->tm_year -= 1900; - } + strptime(hh->ParamList["stDate"].c_str(), "%d.%m.%Y", stopTime); + stopTime->tm_sec = 0; correctTime(stopTime); stopTimeT = mktime(stopTime); if(hh->ParamList["stDate"] == "" && alHour > stopTime->tm_hour) diff --git a/src/nhttpd/tuxboxapi/coolstream/controlapi.h b/src/nhttpd/tuxboxapi/coolstream/controlapi.h index de9d93bcc..986aaf82f 100644 --- a/src/nhttpd/tuxboxapi/coolstream/controlapi.h +++ b/src/nhttpd/tuxboxapi/coolstream/controlapi.h @@ -43,7 +43,7 @@ private: friend class CNeutrinoWebserver; // for timer /fb/ compatibility void doModifyTimer(CyhookHandler *hh); void doNewTimer(CyhookHandler *hh); - + void _SendTime(CyhookHandler *hh, struct tm *Time, int digits); //yweb void YWeb_SendVideoStreamingPids(CyhookHandler *hh, int apid_no); void YWeb_SendRadioStreamingPid(CyhookHandler *hh); diff --git a/src/nhttpd/web/Y_Tools_Timer_Sync.js b/src/nhttpd/web/Y_Tools_Timer_Sync.js index 276f74ce1..3a062af99 100644 --- a/src/nhttpd/web/Y_Tools_Timer_Sync.js +++ b/src/nhttpd/web/Y_Tools_Timer_Sync.js @@ -282,7 +282,7 @@ function do_set_timer() +"&rec_dir="+document.f.rec_dir.value +"&rs=1" +"&update=1"; - _url = _urlt.replace(/:/gi,"."); +// _url = _urlt.replace(/:/gi,"."); /*_url = encodeURI(_url);*/ loadSyncURL(_url); channels++;