diff --git a/coreengine/listelements.c b/coreengine/listelements.c index 02b32d5..0bc6816 100644 --- a/coreengine/listelements.c +++ b/coreengine/listelements.c @@ -4,6 +4,373 @@ #include #include +// eLeMenuDefaultIT, eLeMenuDefaultST +#define TOKEN_LMD_IT eLeMenuDefaultIT +#define TOKEN_LMD_ST eLeMenuDefaultST + +#define ADD_TOKEN_LMD_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMD_IT::entry, value) +#define ADD_TOKEN_LMD_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMD_ST::entry, value) + +// eLeGroupListIT, eLeGroupListST +#define TOKEN_LGL_IT eLeGroupListIT +#define TOKEN_LGL_ST eLeGroupListST + +#define ADD_TOKEN_LGL_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LGL_IT::entry, value) +#define ADD_TOKEN_LGL_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LGL_ST::entry, value) + +// eLeChannelListIT, eLeChannelListST +#define TOKEN_LCL_IT eLeChannelListIT +#define TOKEN_LCL_ST eLeChannelListST + +#define ADD_TOKEN_LCL_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LCL_IT::entry, value) +#define ADD_TOKEN_LCL_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LCL_ST::entry, value) + +// eLeDisplayTracksIT, eLeDisplayTracksST +#define TOKEN_LDT_IT eLeDisplayTracksIT +#define TOKEN_LDT_ST eLeDisplayTracksST + +#define ADD_TOKEN_LDT_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LDT_IT::entry, value) +#define ADD_TOKEN_LDT_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LDT_ST::entry, value) + +/*-------------------------------------------------------------------------------------------------------*/ + +// eCeMenuTimersIT, eCeMenuTimersST +#define TOKEN_CMT_IT eCeMenuTimersIT +#define TOKEN_CMT_ST eCeMenuTimersST + +#define ADD_TOKEN_CMT_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_CMT_IT::entry, value) +#define ADD_TOKEN_CMT_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_CMT_ST::entry, value) + +// eLeMenuTimersIT, eLeMenuTimersST +#define TOKEN_LMT_IT eLeMenuTimersIT +#define TOKEN_LMT_ST eLeMenuTimersST + +#define ADD_TOKEN_LMT_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMT_IT::entry, value) +#define ADD_TOKEN_LMT_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMT_ST::entry, value) + +/*----------------------------------------------------------------------------------------------*/ +/* fill tokens common for eCeMenuTimersIT, eCeMenuTimersST, eLeMenuTimersIT and eLeMenuTimersST */ +/*----------------------------------------------------------------------------------------------*/ +#define DEF_TOK_CONT_MT(token_it, token_st) \ + { \ + /* fill tokens for eCeMenuTimersIT, eCeMenuTimersST, eLeMenuTimersIT and eLeMenuTimersST */ \ + tokenContainer->DefineStringToken("{title}", (int)token_st::title); \ + tokenContainer->DefineStringToken("{timerstart}", (int)token_st::timerstart); \ + tokenContainer->DefineStringToken("{timerstop}", (int)token_st::timerstop); \ + tokenContainer->DefineStringToken("{day}", (int)token_st::day); \ + tokenContainer->DefineStringToken("{dayname}", (int)token_st::dayname); \ + tokenContainer->DefineStringToken("{monthname}", (int)token_st::monthname); \ + tokenContainer->DefineStringToken("{channelname}", (int)token_st::channelname); \ + tokenContainer->DefineStringToken("{channelid}", (int)token_st::channelid); \ + tokenContainer->DefineStringToken("{eventtitle}", (int)token_st::eventtitle); \ + tokenContainer->DefineStringToken("{eventstart}", (int)token_st::eventstart); \ + tokenContainer->DefineStringToken("{eventstop}", (int)token_st::eventstop); \ + tokenContainer->DefineStringToken("{state}", (int)token_st::state); \ + tokenContainer->DefineStringToken("{stateinfo}", (int)token_st::stateinfo); \ + tokenContainer->DefineStringToken("{action}", (int)token_st::action); \ + tokenContainer->DefineStringToken("{vdrname}", (int)token_st::vdrname); \ + tokenContainer->DefineStringToken("{type}", (int)token_st::type); \ + tokenContainer->DefineIntToken("{month}", (int)token_it::month); \ + tokenContainer->DefineIntToken("{year}", (int)token_it::year); \ + tokenContainer->DefineIntToken("{channellogoexists}", (int)token_it::channellogoexists); \ + tokenContainer->DefineIntToken("{channelnumber}", (int)token_it::channelnumber); \ + tokenContainer->DefineIntToken("{flagactive}", (int)token_it::flagactive); \ + tokenContainer->DefineIntToken("{flaginstant}", (int)token_it::flaginstant); \ + tokenContainer->DefineIntToken("{flagvps}", (int)token_it::flagvps); \ + tokenContainer->DefineIntToken("{flagrecording}", (int)token_it::flagrecording); \ + tokenContainer->DefineIntToken("{flagpending}", (int)token_it::flagpending); \ + tokenContainer->DefineIntToken("{isvdrrunning}", (int)token_it::isvdrrunning); \ + tokenContainer->DefineIntToken("{isremote}", (int)token_it::isremote); \ +} + +/*-----------------------------------------------------------------*/ +/* Add token for cCeMenuTimers::Parse() and cLeMenuTimers::Parse() */ +/*-----------------------------------------------------------------*/ +#define ADD_TOKEN_MT(token_it) \ + { \ + tokenContainer->AddIntToken((int)token_it::flagactive, timer->HasFlags(tfActive)); \ + tokenContainer->AddIntToken((int)token_it::flaginstant, timer->HasFlags(tfInstant)); \ + tokenContainer->AddIntToken((int)token_it::flagvps, timer->HasFlags(tfVps)); \ + tokenContainer->AddIntToken((int)token_it::flagrecording, timer->Recording()); \ + tokenContainer->AddIntToken((int)token_it::flagpending, timer->Pending()); \ + } + +/*-------------------------------------------------------------------------------------------------------*/ + +// eCeMenuRecordingsIT, eCeMenuRecordingsST +#define TOKEN_CMR_IT eCeMenuRecordingsIT +#define TOKEN_CMR_ST eCeMenuRecordingsST + +#define ADD_TOKEN_CMR_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_CMR_IT::entry, value) +#define ADD_TOKEN_CMR_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_CMR_ST::entry, value) + +// eLeMenuRecordingsIT, eLeMenuRecordingsST +#define TOKEN_LMR_IT eLeMenuRecordingsIT +#define TOKEN_LMR_ST eLeMenuRecordingsST + +#define ADD_TOKEN_LMR_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMR_IT::entry, value) +#define ADD_TOKEN_LMR_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMR_ST::entry, value) + +/*-------------------------------------------------------------------------------------------------------*/ +/* fill tokens for eCeMenuRecordingsIT, eCeMenuRecordingsST, eLeMenuRecordingsIT and eLeMenuRecordingsST */ +/*-------------------------------------------------------------------------------------------------------*/ +#define DEF_TOK_CONT_MR(token_it, token_st) \ + { \ + tokenContainer->DefineStringToken("{name}", (int)token_st::name); \ + tokenContainer->DefineStringToken("{epgname}", (int)token_st::epgname); \ + tokenContainer->DefineStringToken("{shorttext}", (int)token_st::shorttext); \ + tokenContainer->DefineStringToken("{description}", (int)token_st::description); \ + tokenContainer->DefineStringToken("{date}", (int)token_st::date); \ + tokenContainer->DefineStringToken("{time}", (int)token_st::time); \ + tokenContainer->DefineStringToken("{durationminutes}", (int)token_st::durationminutes); \ + tokenContainer->DefineStringToken("{durationeventminutes}", (int)token_st::durationeventminutes); \ + tokenContainer->DefineStringToken("{thumbnailpath}", (int)token_st::thumbnailpath); \ + tokenContainer->DefineStringToken("{posterpath}", (int)token_st::posterpath); \ + tokenContainer->DefineIntToken("{new}", (int)token_it::isnew); \ + tokenContainer->DefineIntToken("{percentseen}", (int)token_it::percentseen); \ + tokenContainer->DefineIntToken("{watched}", (int)token_it::watched); \ + tokenContainer->DefineIntToken("{cutted}", (int)token_it::cutted); \ + tokenContainer->DefineIntToken("{folder}", (int)token_it::folder); \ + tokenContainer->DefineIntToken("{daynumeric}", (int)token_it::daynumeric); \ + tokenContainer->DefineIntToken("{month}", (int)token_it::month); \ + tokenContainer->DefineIntToken("{year}", (int)token_it::year); \ + tokenContainer->DefineIntToken("{duration}", (int)token_it::duration); \ + tokenContainer->DefineIntToken("{durationhours}", (int)token_it::durationhours); \ + tokenContainer->DefineIntToken("{durationevent}", (int)token_it::durationevent); \ + tokenContainer->DefineIntToken("{durationeventhours}", (int)token_it::durationeventhours); \ + tokenContainer->DefineIntToken("{numrecordingsfolder}", (int)token_it::numrecordingsfolder); \ + tokenContainer->DefineIntToken("{newrecordingsfolder}", (int)token_it::newrecordingsfolder); \ + tokenContainer->DefineIntToken("{hasposterthumbnail}", (int)token_it::hasposterthumbnail); \ + tokenContainer->DefineIntToken("{thumbnailwidth}", (int)token_it::thumbnailwidth); \ + tokenContainer->DefineIntToken("{thumbnailheight}", (int)token_it::thumbnailheight); \ + tokenContainer->DefineIntToken("{hasposter}", (int)token_it::hasposter); \ + tokenContainer->DefineIntToken("{posterwidth}", (int)token_it::posterwidth); \ + tokenContainer->DefineIntToken("{posterheight}", (int)token_it::posterheight); \ + tokenContainer->DefineIntToken("{fps}", (int)token_it::framesPerSecond); \ + tokenContainer->DefineIntToken("{isHD}", (int)token_it::isHD); \ + tokenContainer->DefineIntToken("{isUHD}", (int)token_it::isUHD); \ + tokenContainer->DefineIntToken("{isRadio}", (int)token_it::isRadio); \ + tokenContainer->DefineIntToken("{isRecording}", (int)token_it::isRecording); \ + tokenContainer->DefineStringToken("{recchannelname}", (int)token_st::recchannelname); \ + tokenContainer->DefineStringToken("{recchannelid}", (int)token_st::recchannelid); \ +} + +/*---------------------------------------------------------------------------------*/ +/* Add first SW part for cCeMenuRecordings::Parse() and cLeMenuRecordings::Parse() */ +/*---------------------------------------------------------------------------------*/ +#define ADD_TOKEN_MR1(token_it) \ + { \ + tokenContainer->AddIntToken((int)token_it::percentseen, percSeen); \ + tokenContainer->AddIntToken((int)token_it::newrecordingsfolder, New); \ + tokenContainer->AddIntToken((int)token_it::numrecordingsfolder, total); \ + tokenContainer->AddIntToken((int)token_it::cutted, usedRecording->IsEdited()); \ + \ + bool watched = false; \ + if (usedRecording->IsEdited()) { \ + if (percSeen >= 85) \ + watched = true; \ + } else { \ + int watchedLimit = recDuration * 85 / 100 - (Setup.MarginStop + 5)*60; \ + int watchedTime = percSeen * recDuration / 100; \ + if (watchedLimit > 0 && watchedTime > 0 && (watchedTime > watchedLimit)) \ + watched = true; \ + } \ + tokenContainer->AddIntToken((int)token_it::watched, watched); \ + } + +/*----------------------------------------------------------------------------------*/ +/* Add second SW part for cCeMenuRecordings::Parse() and cLeMenuRecordings::Parse() */ +/*----------------------------------------------------------------------------------*/ +#define ADD_TOKEN_MR2(token_it, token_st) \ + { \ + time_t startTime = event->StartTime(); \ + if (!startTime) \ + startTime = usedRecording->Start(); \ + struct tm * sStartTime = localtime(&startTime); \ + tokenContainer->AddIntToken((int)token_it::year, sStartTime->tm_year + 1900); \ + tokenContainer->AddIntToken((int)token_it::daynumeric, sStartTime->tm_mday); \ + tokenContainer->AddIntToken((int)token_it::month, sStartTime->tm_mon+1); \ + \ + int duration = event->Duration() / 60; \ + recDuration = (recDuration>0)?(recDuration / 60):0; \ + tokenContainer->AddStringToken((int)token_st::date, *recDate); \ + tokenContainer->AddStringToken((int)token_st::time, *recTime); \ + tokenContainer->AddIntToken((int)token_it::duration, recDuration); \ + tokenContainer->AddIntToken((int)token_it::durationhours, recDuration / 60); \ + tokenContainer->AddStringToken((int)token_st::durationminutes, *cString::sprintf("%.2d", recDuration%60)); \ + tokenContainer->AddIntToken((int)token_it::durationevent, duration); \ + tokenContainer->AddIntToken((int)token_it::durationeventhours, duration / 60); \ + tokenContainer->AddStringToken((int)token_st::durationeventminutes, *cString::sprintf("%.2d", duration%60)); \ + \ + tokenContainer->AddStringToken((int)token_st::shorttext, info->ShortText()); \ + tokenContainer->AddStringToken((int)token_st::description, info->Description()); \ + tokenContainer->AddIntToken((int)token_it::framesPerSecond, info->FramesPerSecond()); \ + tokenContainer->AddIntToken((int)token_it::isHD, RecordingIsHD(event)); /* detect HD from 'info' */ \ + tokenContainer->AddIntToken((int)token_it::isUHD, RecordingIsUHD(event)); /* detect UHD from 'info' */ \ + tokenContainer->AddIntToken((int)token_it::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); /* detect Radio from 'info' and FPS */ \ + tokenContainer->AddIntToken((int)token_it::isRecording, usedRecording->IsInUse() & ruTimer); \ + SetScraperRecordingPoster(tokenContainer, usedRecording, true); \ + } + +/*-------------------------------------------------------------------------------------------------------*/ + +// eCeMenuMainIT, eCeMenuMainST +#define TOKEN_CMM_IT eCeMenuMainIT +#define TOKEN_CMM_ST eCeMenuMainST + +#define ADD_TOKEN_CMM_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_CMM_IT::entry, value) +#define ADD_TOKEN_CMM_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_CMM_ST::entry, value) + +// eLeMenuMainIT, eLeMenuMainST +#define TOKEN_LMM_IT eLeMenuMainIT +#define TOKEN_LMM_ST eLeMenuMainST + +#define ADD_TOKEN_LMM_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMM_IT::entry, value) +#define ADD_TOKEN_LMM_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMM_ST::entry, value) + +/*-----------------------------------------------------------------------------------*/ +/* fill tokens common for eCeMenuMainIT, eCeMenuMainST, eLeMenuMainIT, eLeMenuMainST */ +/*-----------------------------------------------------------------------------------*/ +#define DEF_TOK_CONT_MM(token_st) \ + { \ + tokenContainer->DefineStringToken("{label}", (int)token_st::label); \ + tokenContainer->DefineStringToken("{number}", (int)token_st::number); \ + tokenContainer->DefineStringToken("{icon}", (int)token_st::icon); \ +} + +/*-------------------------------------------------------------*/ +/* Add token for cCeMenuMain::Parse() and cLeMenuMain::Parse() */ +/*-------------------------------------------------------------*/ +#define ADD_TOKEN_MM(token_st) \ + { \ + tokenContainer->AddStringToken((int)token_st::number, number); \ + tokenContainer->AddStringToken((int)token_st::label, label); \ + tokenContainer->AddStringToken((int)token_st::icon, imgCache->GetIconName(label).c_str()); \ + } + +/*-------------------------------------------------------------------------------------------------------*/ + +// eCeMenuSchedulesIT, eCeMenuSchedulesST +#define TOKEN_CMS_IT eCeMenuSchedulesIT +#define TOKEN_CMS_ST eCeMenuSchedulesST + +#define ADD_TOKEN_CMS_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_CMS_IT::entry, value) +#define ADD_TOKEN_CMS_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_CMS_ST::entry, value) + +// eLeMenuSchedulesIT, eLeMenuSchedulesST +#define TOKEN_LMS_IT eLeMenuSchedulesIT +#define TOKEN_LMS_ST eLeMenuSchedulesST + +#define ADD_TOKEN_LMS_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMS_IT::entry, value) +#define ADD_TOKEN_LMS_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMS_ST::entry, value) + +/*-------------------------------------------------------------------------------------------------------*/ +/* fill tokens common for eCeMenuSchedulesIT, eCeMenuSchedulesST, eLeMenuSchedulesIT, eLeMenuSchedulesST */ +/*-------------------------------------------------------------------------------------------------------*/ +#define DEF_TOK_CONT_MS(token_it, token_st) \ + { \ + tokenContainer->DefineStringToken("{title}", (int)token_st::title); \ + tokenContainer->DefineStringToken("{shorttext}", (int)token_st::shorttext); \ + tokenContainer->DefineStringToken("{start}", (int)token_st::start); \ + tokenContainer->DefineStringToken("{stop}", (int)token_st::stop); \ + tokenContainer->DefineStringToken("{day}", (int)token_st::day); \ + tokenContainer->DefineStringToken("{date}", (int)token_st::date); \ + tokenContainer->DefineIntToken("{month}", (int)token_it::month); \ + tokenContainer->DefineIntToken("{year}", (int)token_it::year); \ + tokenContainer->DefineIntToken("{running}", (int)token_it::running); \ + tokenContainer->DefineIntToken("{elapsed}", (int)token_it::elapsed); \ + tokenContainer->DefineIntToken("{duration}", (int)token_it::duration); \ + tokenContainer->DefineStringToken("{channelname}", (int)token_st::channelname); \ + tokenContainer->DefineStringToken("{channelid}", (int)token_st::channelid); \ + tokenContainer->DefineStringToken("{timertype}", (int)token_st::timertype); \ + tokenContainer->DefineIntToken("{whatson}", (int)token_it::whatson); \ + tokenContainer->DefineIntToken("{whatsonnow}", (int)token_it::whatsonnow); \ + tokenContainer->DefineIntToken("{whatsonnext}", (int)token_it::whatsonnext); \ + tokenContainer->DefineIntToken("{whatsonfavorites}", (int)token_it::whatsonfavorites); \ + tokenContainer->DefineIntToken("{timerpartitial}", (int)token_it::timerpartitial); \ + tokenContainer->DefineIntToken("{timerfull}", (int)token_it::timerfull); \ + tokenContainer->DefineIntToken("{isremotetimer}", (int)token_it::isremotetimer); \ + tokenContainer->DefineIntToken("{daynumeric}", (int)token_it::daynumeric); \ + tokenContainer->DefineIntToken("{durationhours}", (int)token_it::durationhours); \ + tokenContainer->DefineIntToken("{channelnumber}", (int)token_it::channelnumber); \ + tokenContainer->DefineIntToken("{channellogoexists}", (int)token_it::channellogoexists); \ +} + +/*-------------------------------------------------------------------------------------------------------*/ + +// eLeMenuChannelsIT, eLeMenuChannelsST +#define TOKEN_LMC_IT eLeMenuChannelsIT +#define TOKEN_LMC_ST eLeMenuChannelsST + +#define ADD_TOKEN_LMC_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_LMC_IT::entry, value) +#define ADD_TOKEN_LMC_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_LMC_ST::entry, value) + +// eCeMenuChannelsIT, eCeMenuChannelsST +#define TOKEN_CMC_IT eCeMenuChannelsIT +#define TOKEN_CMC_ST eCeMenuChannelsST + +#define ADD_TOKEN_CMC_IT(entry, value) tokenContainer->AddIntToken((int)TOKEN_CMC_IT::entry, value) +#define ADD_TOKEN_CMC_ST(entry, value) tokenContainer->AddStringToken((int)TOKEN_CMC_ST::entry, value) + +/*---------------------------------------------------------------------------------------------------*/ +/* fill tokens common for eCeMenuChannelsIT, eCeMenuChannelsST, eLeMenuChannelsIT, eLeMenuChannelsST */ +/*---------------------------------------------------------------------------------------------------*/ +#define DEF_TOK_CONT_MC(token_it, token_st) \ + { \ + tokenContainer->DefineStringToken("{name}", (int)token_st::name); \ + tokenContainer->DefineStringToken("{channelid}", (int)token_st::channelid); \ + tokenContainer->DefineStringToken("{source}", (int)token_st::source); \ + tokenContainer->DefineStringToken("{sourcedescription}", (int)token_st::sourcedescription); \ + tokenContainer->DefineStringToken("{position}", (int)token_st::position); \ + tokenContainer->DefineStringToken("{presenteventtitle}", (int)token_st::presenteventtitle); \ + tokenContainer->DefineStringToken("{presenteventstart}", (int)token_st::presenteventstart); \ + tokenContainer->DefineStringToken("{presenteventstop}", (int)token_st::presenteventstop); \ + tokenContainer->DefineIntToken("{number}", (int)token_it::number); \ + tokenContainer->DefineIntToken("{transponder}", (int)token_it::transponder); \ + tokenContainer->DefineIntToken("{frequency}", (int)token_it::frequency); \ + tokenContainer->DefineIntToken("{channellogoexists}", (int)token_it::channellogoexists); \ + tokenContainer->DefineIntToken("{isAtsc}", (int)token_it::isAtsc); \ + tokenContainer->DefineIntToken("{isCable}", (int)token_it::isCable); \ + tokenContainer->DefineIntToken("{isSat}", (int)token_it::isSat); \ + tokenContainer->DefineIntToken("{isTerr}", (int)token_it::isTerr); \ + tokenContainer->DefineIntToken("{isEncrypted}", (int)token_it::isEncrypted); \ + tokenContainer->DefineIntToken("{isRadio}", (int)token_it::isRadio); \ + tokenContainer->DefineIntToken("{isHD}", (int)token_it::isHD); \ + tokenContainer->DefineIntToken("{isUHD}", (int)token_it::isUHD); \ + } + +/*---------------------------------------------------------------------*/ +/* Add token for cCeMenuChannels::Parse() and cLeMenuChannels::Parse() */ +/*---------------------------------------------------------------------*/ +#define ADD_TOKEN_MC(token_it, token_st) \ + { \ + tokenContainer->AddIntToken((int)token_it::number, channel->Number()); \ + tokenContainer->AddIntToken((int)token_it::transponder, channel->Transponder()); \ + tokenContainer->AddIntToken((int)token_it::frequency, channel->Frequency()); \ + tokenContainer->AddIntToken((int)token_it::isEncrypted, channel->Ca()); \ + tokenContainer->AddIntToken((int)token_it::isRadio, isRadio); \ + tokenContainer->AddIntToken((int)token_it::isHD, isHD); \ + tokenContainer->AddIntToken((int)token_it::isUHD, isUHD); \ + \ + tokenContainer->AddStringToken((int)token_st::name, channel->Name()); \ + cString channelID = channel->GetChannelID().ToString(); \ + tokenContainer->AddStringToken((int)token_st::channelid, *channelID); \ + tokenContainer->AddIntToken((int)token_it::channellogoexists, imgCache->LogoExists(*channelID)); \ + \ + /* Channel Source Information */ \ + const cSource *source = Sources.Get(channel->Source()); \ + if (source) { \ + tokenContainer->AddStringToken((int)token_st::source, *cSource::ToString(source->Code())); \ + tokenContainer->AddStringToken((int)token_st::sourcedescription, source->Description()); \ + tokenContainer->AddIntToken((int)token_it::isAtsc, source->IsAtsc(source->Code())); \ + tokenContainer->AddIntToken((int)token_it::isCable, source->IsCable(source->Code())); \ + tokenContainer->AddIntToken((int)token_it::isSat, source->IsSat(source->Code())); \ + tokenContainer->AddIntToken((int)token_it::isTerr, source->IsTerr(source->Code())); \ + } \ + } + +/*-------------------------------------------------------------------------------------------------------*/ + /****************************************************************** * cListElement ******************************************************************/ @@ -242,69 +609,71 @@ cLeMenuDefault::~cLeMenuDefault(void) { void cLeMenuDefault::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{column1}", (int)eLeMenuDefaultST::column1); - tokenContainer->DefineStringToken("{column2}", (int)eLeMenuDefaultST::column2); - tokenContainer->DefineStringToken("{column3}", (int)eLeMenuDefaultST::column3); - tokenContainer->DefineStringToken("{column4}", (int)eLeMenuDefaultST::column4); - tokenContainer->DefineStringToken("{column5}", (int)eLeMenuDefaultST::column5); - tokenContainer->DefineStringToken("{column6}", (int)eLeMenuDefaultST::column6); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuDefaultIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuDefaultIT::current); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuDefaultIT::separator); - tokenContainer->DefineIntToken("{column2set}", (int)eLeMenuDefaultIT::column2set); - tokenContainer->DefineIntToken("{column3set}", (int)eLeMenuDefaultIT::column3set); - tokenContainer->DefineIntToken("{column4set}", (int)eLeMenuDefaultIT::column4set); - tokenContainer->DefineIntToken("{column5set}", (int)eLeMenuDefaultIT::column5set); - tokenContainer->DefineIntToken("{column6set}", (int)eLeMenuDefaultIT::column6set); - tokenContainer->DefineIntToken("{column1x}", (int)eLeMenuDefaultIT::column1x); - tokenContainer->DefineIntToken("{column2x}", (int)eLeMenuDefaultIT::column2x); - tokenContainer->DefineIntToken("{column3x}", (int)eLeMenuDefaultIT::column3x); - tokenContainer->DefineIntToken("{column4x}", (int)eLeMenuDefaultIT::column4x); - tokenContainer->DefineIntToken("{column5x}", (int)eLeMenuDefaultIT::column5x); - tokenContainer->DefineIntToken("{column6x}", (int)eLeMenuDefaultIT::column6x); - tokenContainer->DefineIntToken("{column1width}", (int)eLeMenuDefaultIT::column1width); - tokenContainer->DefineIntToken("{column2width}", (int)eLeMenuDefaultIT::column2width); - tokenContainer->DefineIntToken("{column3width}", (int)eLeMenuDefaultIT::column3width); - tokenContainer->DefineIntToken("{column4width}", (int)eLeMenuDefaultIT::column4width); - tokenContainer->DefineIntToken("{column5width}", (int)eLeMenuDefaultIT::column5width); - tokenContainer->DefineIntToken("{column6width}", (int)eLeMenuDefaultIT::column6width); - tokenContainer->DefineIntToken("{column1pb}", (int)eLeMenuDefaultIT::column1pb); - tokenContainer->DefineIntToken("{column2pb}", (int)eLeMenuDefaultIT::column2pb); - tokenContainer->DefineIntToken("{column3pb}", (int)eLeMenuDefaultIT::column3pb); - tokenContainer->DefineIntToken("{column4pb}", (int)eLeMenuDefaultIT::column4pb); - tokenContainer->DefineIntToken("{column5pb}", (int)eLeMenuDefaultIT::column5pb); - tokenContainer->DefineIntToken("{column6pb}", (int)eLeMenuDefaultIT::column6pb); - tokenContainer->DefineIntToken("{column1pbtotalsize}", (int)eLeMenuDefaultIT::column1pbtotalsize); - tokenContainer->DefineIntToken("{column2pbtotalsize}", (int)eLeMenuDefaultIT::column2pbtotalsize); - tokenContainer->DefineIntToken("{column3pbtotalsize}", (int)eLeMenuDefaultIT::column3pbtotalsize); - tokenContainer->DefineIntToken("{column4pbtotalsize}", (int)eLeMenuDefaultIT::column4pbtotalsize); - tokenContainer->DefineIntToken("{column5pbtotalsize}", (int)eLeMenuDefaultIT::column5pbtotalsize); - tokenContainer->DefineIntToken("{column6pbtotalsize}", (int)eLeMenuDefaultIT::column6pbtotalsize); - tokenContainer->DefineIntToken("{column1pbsize}", (int)eLeMenuDefaultIT::column1pbsize); - tokenContainer->DefineIntToken("{column2pbsize}", (int)eLeMenuDefaultIT::column2pbsize); - tokenContainer->DefineIntToken("{column3pbsize}", (int)eLeMenuDefaultIT::column3pbsize); - tokenContainer->DefineIntToken("{column4pbsize}", (int)eLeMenuDefaultIT::column4pbsize); - tokenContainer->DefineIntToken("{column5pbsize}", (int)eLeMenuDefaultIT::column5pbsize); - tokenContainer->DefineIntToken("{column6pbsize}", (int)eLeMenuDefaultIT::column6pbsize); - tokenContainer->DefineIntToken("{unknown}", (int)eLeMenuDefaultIT::unknown); - tokenContainer->DefineIntToken("{channeledit}", (int)eLeMenuDefaultIT::channeledit); - tokenContainer->DefineIntToken("{timeredit}", (int)eLeMenuDefaultIT::timeredit); - tokenContainer->DefineIntToken("{recordinginfo}", (int)eLeMenuDefaultIT::recordinginfo); - tokenContainer->DefineIntToken("{recordingedit}", (int)eLeMenuDefaultIT::recordingedit); - tokenContainer->DefineIntToken("{setup}", (int)eLeMenuDefaultIT::setup); - tokenContainer->DefineIntToken("{commands}", (int)eLeMenuDefaultIT::commands); - tokenContainer->DefineIntToken("{folder}", (int)eLeMenuDefaultIT::folder); - tokenContainer->DefineIntToken("{cam}", (int)eLeMenuDefaultIT::cam); - tokenContainer->DefineIntToken("{fritzbox}", (int)eLeMenuDefaultIT::fritzbox); - tokenContainer->DefineIntToken("{systeminfo}", (int)eLeMenuDefaultIT::systeminfo); - tokenContainer->DefineIntToken("{mailbox}", (int)eLeMenuDefaultIT::mailbox); - tokenContainer->DefineIntToken("{neutrinoepg}", (int)eLeMenuDefaultIT::neutrinoepg); - tokenContainer->DefineIntToken("{remotetimers}", (int)eLeMenuDefaultIT::remotetimers); - tokenContainer->DefineIntToken("{zaphistory}", (int)eLeMenuDefaultIT::zaphistory); - tokenContainer->DefineIntToken("{remoteosd}", (int)eLeMenuDefaultIT::remoteosd); - tokenContainer->DefineIntToken("{filebrowser}", (int)eLeMenuDefaultIT::filebrowser); - tokenContainer->DefineIntToken("{epgsearch}", (int)eLeMenuDefaultIT::epgsearch); - tokenContainer->DefineIntToken("{devstatus}", (int)eLeMenuDefaultIT::devstatus); + + tokenContainer->DefineStringToken("{column1}", (int)TOKEN_LMD_ST::column1); + tokenContainer->DefineStringToken("{column2}", (int)TOKEN_LMD_ST::column2); + tokenContainer->DefineStringToken("{column3}", (int)TOKEN_LMD_ST::column3); + tokenContainer->DefineStringToken("{column4}", (int)TOKEN_LMD_ST::column4); + tokenContainer->DefineStringToken("{column5}", (int)TOKEN_LMD_ST::column5); + tokenContainer->DefineStringToken("{column6}", (int)TOKEN_LMD_ST::column6); + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LMD_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMD_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMD_IT::separator); + tokenContainer->DefineIntToken("{column2set}", (int)TOKEN_LMD_IT::column2set); + tokenContainer->DefineIntToken("{column3set}", (int)TOKEN_LMD_IT::column3set); + tokenContainer->DefineIntToken("{column4set}", (int)TOKEN_LMD_IT::column4set); + tokenContainer->DefineIntToken("{column5set}", (int)TOKEN_LMD_IT::column5set); + tokenContainer->DefineIntToken("{column6set}", (int)TOKEN_LMD_IT::column6set); + tokenContainer->DefineIntToken("{column1x}", (int)TOKEN_LMD_IT::column1x); + tokenContainer->DefineIntToken("{column2x}", (int)TOKEN_LMD_IT::column2x); + tokenContainer->DefineIntToken("{column3x}", (int)TOKEN_LMD_IT::column3x); + tokenContainer->DefineIntToken("{column4x}", (int)TOKEN_LMD_IT::column4x); + tokenContainer->DefineIntToken("{column5x}", (int)TOKEN_LMD_IT::column5x); + tokenContainer->DefineIntToken("{column6x}", (int)TOKEN_LMD_IT::column6x); + tokenContainer->DefineIntToken("{column1width}", (int)TOKEN_LMD_IT::column1width); + tokenContainer->DefineIntToken("{column2width}", (int)TOKEN_LMD_IT::column2width); + tokenContainer->DefineIntToken("{column3width}", (int)TOKEN_LMD_IT::column3width); + tokenContainer->DefineIntToken("{column4width}", (int)TOKEN_LMD_IT::column4width); + tokenContainer->DefineIntToken("{column5width}", (int)TOKEN_LMD_IT::column5width); + tokenContainer->DefineIntToken("{column6width}", (int)TOKEN_LMD_IT::column6width); + tokenContainer->DefineIntToken("{column1pb}", (int)TOKEN_LMD_IT::column1pb); + tokenContainer->DefineIntToken("{column2pb}", (int)TOKEN_LMD_IT::column2pb); + tokenContainer->DefineIntToken("{column3pb}", (int)TOKEN_LMD_IT::column3pb); + tokenContainer->DefineIntToken("{column4pb}", (int)TOKEN_LMD_IT::column4pb); + tokenContainer->DefineIntToken("{column5pb}", (int)TOKEN_LMD_IT::column5pb); + tokenContainer->DefineIntToken("{column6pb}", (int)TOKEN_LMD_IT::column6pb); + tokenContainer->DefineIntToken("{column1pbtotalsize}", (int)TOKEN_LMD_IT::column1pbtotalsize); + tokenContainer->DefineIntToken("{column2pbtotalsize}", (int)TOKEN_LMD_IT::column2pbtotalsize); + tokenContainer->DefineIntToken("{column3pbtotalsize}", (int)TOKEN_LMD_IT::column3pbtotalsize); + tokenContainer->DefineIntToken("{column4pbtotalsize}", (int)TOKEN_LMD_IT::column4pbtotalsize); + tokenContainer->DefineIntToken("{column5pbtotalsize}", (int)TOKEN_LMD_IT::column5pbtotalsize); + tokenContainer->DefineIntToken("{column6pbtotalsize}", (int)TOKEN_LMD_IT::column6pbtotalsize); + tokenContainer->DefineIntToken("{column1pbsize}", (int)TOKEN_LMD_IT::column1pbsize); + tokenContainer->DefineIntToken("{column2pbsize}", (int)TOKEN_LMD_IT::column2pbsize); + tokenContainer->DefineIntToken("{column3pbsize}", (int)TOKEN_LMD_IT::column3pbsize); + tokenContainer->DefineIntToken("{column4pbsize}", (int)TOKEN_LMD_IT::column4pbsize); + tokenContainer->DefineIntToken("{column5pbsize}", (int)TOKEN_LMD_IT::column5pbsize); + tokenContainer->DefineIntToken("{column6pbsize}", (int)TOKEN_LMD_IT::column6pbsize); + tokenContainer->DefineIntToken("{unknown}", (int)TOKEN_LMD_IT::unknown); + tokenContainer->DefineIntToken("{channeledit}", (int)TOKEN_LMD_IT::channeledit); + tokenContainer->DefineIntToken("{timeredit}", (int)TOKEN_LMD_IT::timeredit); + tokenContainer->DefineIntToken("{recordinginfo}", (int)TOKEN_LMD_IT::recordinginfo); + tokenContainer->DefineIntToken("{recordingedit}", (int)TOKEN_LMD_IT::recordingedit); + tokenContainer->DefineIntToken("{setup}", (int)TOKEN_LMD_IT::setup); + tokenContainer->DefineIntToken("{commands}", (int)TOKEN_LMD_IT::commands); + tokenContainer->DefineIntToken("{folder}", (int)TOKEN_LMD_IT::folder); + tokenContainer->DefineIntToken("{cam}", (int)TOKEN_LMD_IT::cam); + tokenContainer->DefineIntToken("{fritzbox}", (int)TOKEN_LMD_IT::fritzbox); + tokenContainer->DefineIntToken("{systeminfo}", (int)TOKEN_LMD_IT::systeminfo); + tokenContainer->DefineIntToken("{mailbox}", (int)TOKEN_LMD_IT::mailbox); + tokenContainer->DefineIntToken("{neutrinoepg}", (int)TOKEN_LMD_IT::neutrinoepg); + tokenContainer->DefineIntToken("{remotetimers}", (int)TOKEN_LMD_IT::remotetimers); + tokenContainer->DefineIntToken("{zaphistory}", (int)TOKEN_LMD_IT::zaphistory); + tokenContainer->DefineIntToken("{remoteosd}", (int)TOKEN_LMD_IT::remoteosd); + tokenContainer->DefineIntToken("{filebrowser}", (int)TOKEN_LMD_IT::filebrowser); + tokenContainer->DefineIntToken("{epgsearch}", (int)TOKEN_LMD_IT::epgsearch); + tokenContainer->DefineIntToken("{devstatus}", (int)TOKEN_LMD_IT::devstatus); + InheritTokenContainer(); } @@ -324,9 +693,9 @@ bool cLeMenuDefault::Parse(bool forced) { return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::separator, !selectable); + ADD_TOKEN_LMD_IT(nummenuitem, num); + ADD_TOKEN_LMD_IT(current, current); + ADD_TOKEN_LMD_IT(separator, !selectable); for (int i = 0; i < MAX_TABS; i++) { bool colUsed = false; const char *s = GetTabbedText(text, i); @@ -370,19 +739,19 @@ void cLeMenuDefault::SetMenuCategory(void) { switch (menuCat) { case mcUnknown: case mcUndefined: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::unknown, 1); + ADD_TOKEN_LMD_IT(unknown, 1); break; case mcChannelEdit: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::channeledit, 1); + ADD_TOKEN_LMD_IT(channeledit, 1); break; case mcTimerEdit: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::timeredit, 1); + ADD_TOKEN_LMD_IT(timeredit, 1); break; case mcRecordingInfo: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::recordinginfo, 1); + ADD_TOKEN_LMD_IT(recordinginfo, 1); break; case mcRecordingEdit: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::recordingedit, 1); + ADD_TOKEN_LMD_IT(recordingedit, 1); break; case mcPluginSetup: case mcSetup: @@ -395,16 +764,16 @@ void cLeMenuDefault::SetMenuCategory(void) { case mcSetupReplay: case mcSetupMisc: case mcSetupPlugins: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::setup, 1); + ADD_TOKEN_LMD_IT(setup, 1); return; case mcCommand: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::commands, 1); + ADD_TOKEN_LMD_IT(commands, 1); return; case mcFolder: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::folder, 1); + ADD_TOKEN_LMD_IT(folder, 1); break; case mcCam: - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::cam, 1); + ADD_TOKEN_LMD_IT(cam, 1); break; default: break; @@ -414,25 +783,25 @@ void cLeMenuDefault::SetMenuCategory(void) { return; } if (!strcmp(plugName, "fritzbox")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::fritzbox, 1); + ADD_TOKEN_LMD_IT(fritzbox, 1); } else if (!strcmp(plugName, "systeminfo")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::systeminfo, 1); + ADD_TOKEN_LMD_IT(systeminfo, 1); } else if (!strcmp(plugName, "mailbox")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::mailbox, 1); + ADD_TOKEN_LMD_IT(mailbox, 1); } else if (!strcmp(plugName, "neutrinoepg")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::neutrinoepg, 1); + ADD_TOKEN_LMD_IT(neutrinoepg, 1); } else if (!strcmp(plugName, "remotetimers")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::remotetimers, 1); + ADD_TOKEN_LMD_IT(remotetimers, 1); } else if (!strcmp(plugName, "zaphistory")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::zaphistory, 1); + ADD_TOKEN_LMD_IT(zaphistory, 1); } else if (!strcmp(plugName, "remoteosd")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::remoteosd, 1); + ADD_TOKEN_LMD_IT(remoteosd, 1); } else if (!strcmp(plugName, "filebrowser")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::filebrowser, 1); + ADD_TOKEN_LMD_IT(filebrowser, 1); } else if (!strcmp(plugName, "epgsearch")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::epgsearch, 1); + ADD_TOKEN_LMD_IT(epgsearch, 1); } else if (!strcmp(plugName, "devstatus")) { - tokenContainer->AddIntToken((int)eLeMenuDefaultIT::devstatus, 1); + ADD_TOKEN_LMD_IT(devstatus, 1); } } @@ -570,12 +939,14 @@ cLeMenuMain::~cLeMenuMain(void) { void cLeMenuMain::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{label}", (int)eLeMenuMainST::label); - tokenContainer->DefineStringToken("{number}", (int)eLeMenuMainST::number); - tokenContainer->DefineStringToken("{icon}", (int)eLeMenuMainST::icon); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuMainIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuMainIT::current); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuMainIT::separator); + + // fill tokens common for eCeMenuMainIT, eCeMenuMainST, eLeMenuMainIT, eLeMenuMainST + DEF_TOK_CONT_MM(TOKEN_LMM_ST); + + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LMM_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMM_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMM_IT::separator); + InheritTokenContainer(); } @@ -595,13 +966,14 @@ bool cLeMenuMain::Parse(bool forced) { if (!dirty) return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuMainIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuMainIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuMainIT::separator, !selectable); + ADD_TOKEN_LMM_IT(nummenuitem, num); + ADD_TOKEN_LMM_IT(current, current); + ADD_TOKEN_LMM_IT(separator, !selectable); SplitText(); - tokenContainer->AddStringToken((int)eLeMenuMainST::number, number); - tokenContainer->AddStringToken((int)eLeMenuMainST::label, label); - tokenContainer->AddStringToken((int)eLeMenuMainST::icon, imgCache->GetIconName(label).c_str()); + + // do the same stuff as in cCeMenuMain::Parse() + ADD_TOKEN_MM(TOKEN_LMM_ST); + return true; } @@ -650,14 +1022,15 @@ void cCeMenuMain::SetText(const char *text) { void cCeMenuMain::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuMainIT::menuitemx); - tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuMainIT::menuitemy); - tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuMainIT::menuitemwidth); - tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuMainIT::menuitemheight); - tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuMainIT::numitem); - tokenContainer->DefineStringToken("{label}", (int)eCeMenuMainST::label); - tokenContainer->DefineStringToken("{number}", (int)eCeMenuMainST::number); - tokenContainer->DefineStringToken("{icon}", (int)eCeMenuMainST::icon); + + tokenContainer->DefineIntToken("{menuitemx}", (int)TOKEN_CMM_IT::menuitemx); + tokenContainer->DefineIntToken("{menuitemy}", (int)TOKEN_CMM_IT::menuitemy); + tokenContainer->DefineIntToken("{menuitemwidth}", (int)TOKEN_CMM_IT::menuitemwidth); + tokenContainer->DefineIntToken("{menuitemheight}", (int)TOKEN_CMM_IT::menuitemheight); + tokenContainer->DefineIntToken("{numitem}", (int)TOKEN_CMM_IT::numitem); + + // fill tokens common for eCeMenuMainIT, eCeMenuMainST, eLeMenuMainIT, eLeMenuMainST + DEF_TOK_CONT_MM(TOKEN_CMM_ST); InheritTokenContainer(); } @@ -669,9 +1042,9 @@ bool cCeMenuMain::Parse(bool forced) { tokenContainer->Clear(); SplitText(); SetListTokens(tokenContainer); - tokenContainer->AddStringToken((int)eLeMenuMainST::number, number); - tokenContainer->AddStringToken((int)eLeMenuMainST::label, label); - tokenContainer->AddStringToken((int)eLeMenuMainST::icon, imgCache->GetIconName(label).c_str()); + + // do the same stuff as in cLeMenuMain::Parse() + ADD_TOKEN_MM(TOKEN_CMM_ST); return true; } @@ -703,38 +1076,18 @@ cLeMenuSchedules::~cLeMenuSchedules(void) { void cLeMenuSchedules::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{title}", (int)eLeMenuSchedulesST::title); - tokenContainer->DefineStringToken("{shorttext}", (int)eLeMenuSchedulesST::shorttext); - tokenContainer->DefineStringToken("{start}", (int)eLeMenuSchedulesST::start); - tokenContainer->DefineStringToken("{stop}", (int)eLeMenuSchedulesST::stop); - tokenContainer->DefineStringToken("{day}", (int)eLeMenuSchedulesST::day); - tokenContainer->DefineStringToken("{date}", (int)eLeMenuSchedulesST::date); - tokenContainer->DefineStringToken("{durationminutes}", (int)eLeMenuSchedulesST::durationminutes); - tokenContainer->DefineStringToken("{channelname}", (int)eLeMenuSchedulesST::channelname); - tokenContainer->DefineStringToken("{channelid}", (int)eLeMenuSchedulesST::channelid); - tokenContainer->DefineStringToken("{timertype}", (int)eLeMenuSchedulesST::timertype); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuSchedulesIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuSchedulesIT::current); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuSchedulesIT::separator); - tokenContainer->DefineIntToken("{daynumeric}", (int)eLeMenuSchedulesIT::daynumeric); - tokenContainer->DefineIntToken("{month}", (int)eLeMenuSchedulesIT::month); - tokenContainer->DefineIntToken("{year}", (int)eLeMenuSchedulesIT::year); - tokenContainer->DefineIntToken("{istoday}", (int)eLeMenuSchedulesIT::istoday); - tokenContainer->DefineIntToken("{running}", (int)eLeMenuSchedulesIT::running); - tokenContainer->DefineIntToken("{elapsed}", (int)eLeMenuSchedulesIT::elapsed); - tokenContainer->DefineIntToken("{startsin}", (int)eLeMenuSchedulesIT::startsin); - tokenContainer->DefineIntToken("{duration}", (int)eLeMenuSchedulesIT::duration); - tokenContainer->DefineIntToken("{durationhours}", (int)eLeMenuSchedulesIT::durationhours); - tokenContainer->DefineIntToken("{channelnumber}", (int)eLeMenuSchedulesIT::channelnumber); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eLeMenuSchedulesIT::channellogoexists); - tokenContainer->DefineIntToken("{whatson}", (int)eLeMenuSchedulesIT::whatson); - tokenContainer->DefineIntToken("{whatsonnow}", (int)eLeMenuSchedulesIT::whatsonnow); - tokenContainer->DefineIntToken("{whatsonnext}", (int)eLeMenuSchedulesIT::whatsonnext); - tokenContainer->DefineIntToken("{whatsonfavorites}", (int)eLeMenuSchedulesIT::whatsonfavorites); - tokenContainer->DefineIntToken("{timerpartitial}", (int)eLeMenuSchedulesIT::timerpartitial); - tokenContainer->DefineIntToken("{timerfull}", (int)eLeMenuSchedulesIT::timerfull); - tokenContainer->DefineIntToken("{isremotetimer}", (int)eLeMenuSchedulesIT::isremotetimer); - tokenContainer->DefineIntToken("{hasVPS}", (int)eLeMenuSchedulesIT::hasVPS); + + // fill tokens common for eCeMenuSchedulesIT, eCeMenuSchedulesST, eLeMenuSchedulesIT, eLeMenuSchedulesST + DEF_TOK_CONT_MS(TOKEN_LMS_IT, TOKEN_LMS_ST); + + tokenContainer->DefineStringToken("{durationminutes}", (int)TOKEN_LMS_ST::durationminutes); \ + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LMS_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMS_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMS_IT::separator); + tokenContainer->DefineIntToken("{istoday}", (int)TOKEN_LMS_IT::istoday); + tokenContainer->DefineIntToken("{startsin}", (int)TOKEN_LMS_IT::startsin); + tokenContainer->DefineIntToken("{hasVPS}", (int)TOKEN_LMS_IT::hasVPS); + InheritTokenContainer(); } @@ -757,60 +1110,60 @@ bool cLeMenuSchedules::Parse(bool forced) { return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::separator, !selectable); + ADD_TOKEN_LMS_IT(nummenuitem, num); + ADD_TOKEN_LMS_IT(current, current); + ADD_TOKEN_LMS_IT(separator, !selectable); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::whatson, (menuCat == mcSchedule && !epgSearchFav) ? true : false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::whatsonnow, menuCat == mcScheduleNow ? true : false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::whatsonnext, menuCat == mcScheduleNext ? true : false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::whatsonfavorites, epgSearchFav); + ADD_TOKEN_LMS_IT(whatson, (menuCat == mcSchedule && !epgSearchFav) ? true : false); + ADD_TOKEN_LMS_IT(whatsonnow, menuCat == mcScheduleNow ? true : false); + ADD_TOKEN_LMS_IT(whatsonnext, menuCat == mcScheduleNext ? true : false); + ADD_TOKEN_LMS_IT(whatsonfavorites, epgSearchFav); if (timerMatch == tmFull) { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, true); + ADD_TOKEN_LMS_IT(timerpartitial, false); + ADD_TOKEN_LMS_IT(timerfull, true); } else if (timerMatch == tmPartial) { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, true); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, false); + ADD_TOKEN_LMS_IT(timerpartitial, true); + ADD_TOKEN_LMS_IT(timerfull, false); } else { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, false); + ADD_TOKEN_LMS_IT(timerpartitial, false); + ADD_TOKEN_LMS_IT(timerfull, false); } if (event) { if (selectable) { - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::title, event->Title()); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::shorttext, event->ShortText()); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::start, *(event->GetTimeString())); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::stop, *(event->GetEndTimeString())); + ADD_TOKEN_LMS_ST(title, event->Title()); + ADD_TOKEN_LMS_ST(shorttext, event->ShortText()); + ADD_TOKEN_LMS_ST(start, *(event->GetTimeString())); + ADD_TOKEN_LMS_ST(stop, *(event->GetEndTimeString())); time_t startTime = event->StartTime(); struct tm *sStartTime = localtime(&startTime); int day = sStartTime->tm_mday; int month = sStartTime->tm_mon; - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::day, *WeekDayName(startTime)); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::date, *ShortDateString(startTime)); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::year, sStartTime->tm_year + 1900); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::daynumeric, day); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::month, month + 1); + ADD_TOKEN_LMS_ST(day, *WeekDayName(startTime)); + ADD_TOKEN_LMS_ST(date, *ShortDateString(startTime)); + ADD_TOKEN_LMS_IT(year, sStartTime->tm_year + 1900); + ADD_TOKEN_LMS_IT(daynumeric, day); + ADD_TOKEN_LMS_IT(month, month + 1); bool isRunning = false; time_t now = time(NULL); if ((now >= event->StartTime()) && (now <= event->EndTime())) isRunning = true; - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::running, isRunning); + ADD_TOKEN_LMS_IT(running, isRunning); if (isRunning) { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::elapsed, (now - event->StartTime())/60); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::startsin, 0); + ADD_TOKEN_LMS_IT(elapsed, (now - event->StartTime())/60); + ADD_TOKEN_LMS_IT(startsin, 0); } else { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::elapsed, 0); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::startsin, (event->StartTime() - now)/60); + ADD_TOKEN_LMS_IT(elapsed, 0); + ADD_TOKEN_LMS_IT(startsin, (event->StartTime() - now)/60); } struct tm *sNow = localtime(&now); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::istoday, (day == sNow->tm_mday && month == sNow->tm_mon) ? true : false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::duration, event->Duration() / 60); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::durationhours, event->Duration() / 3600); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::durationminutes, *cString::sprintf("%.2d", (event->Duration() / 60)%60)); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::hasVPS, (bool)event->Vps()); + ADD_TOKEN_LMS_IT(istoday, (day == sNow->tm_mday && month == sNow->tm_mon) ? true : false); + ADD_TOKEN_LMS_IT(duration, event->Duration() / 60); + ADD_TOKEN_LMS_IT(durationhours, event->Duration() / 3600); + ADD_TOKEN_LMS_ST(durationminutes, *cString::sprintf("%.2d", (event->Duration() / 60)%60)); + ADD_TOKEN_LMS_IT(hasVPS, (bool)event->Vps()); if (timerMatch == tmFull || timerMatch == tmPartial) { cTimer_Detail_V1 data; @@ -820,13 +1173,13 @@ bool cLeMenuSchedules::Parse(bool forced) { data.type = 'R'; if (cPlugin* pEpg2Vdr = cPluginManager::GetPlugin("epg2vdr")) pEpg2Vdr->Service(EPG2VDR_TIMER_DETAIL_SERVICE, &data); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::isremotetimer, !data.local); + ADD_TOKEN_LMS_IT(isremotetimer, !data.local); char tp[2]; sprintf(tp, "%c", data.type); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::timertype, tp); + ADD_TOKEN_LMS_ST(timertype, tp); } } else { char *sep = ParseSeparator(event->Title()); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::title, sep); + ADD_TOKEN_LMS_ST(title, sep); free(sep); } } else if (!channel) { @@ -834,13 +1187,13 @@ bool cLeMenuSchedules::Parse(bool forced) { //stringTokens.insert(pair("title", dayseparator)); } if (channel) { - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::channelname, channel->Name()); + ADD_TOKEN_LMS_ST(channelname, channel->Name()); cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::channelid, *channelID); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::channelnumber, channel->Number()); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::channellogoexists, imgCache->LogoExists(*channelID)); + ADD_TOKEN_LMS_ST(channelid, *channelID); + ADD_TOKEN_LMS_IT(channelnumber, channel->Number()); + ADD_TOKEN_LMS_IT(channellogoexists, imgCache->LogoExists(*channelID)); if (!event && !selectable) { - tokenContainer->AddStringToken((int)eLeMenuSchedulesST::title, channel->Name()); + ADD_TOKEN_LMS_ST(title, channel->Name()); } } return true; @@ -867,46 +1220,27 @@ cCeMenuSchedules::~cCeMenuSchedules(void) { void cCeMenuSchedules::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{title}", (int)eCeMenuSchedulesST::title); - tokenContainer->DefineStringToken("{shorttext}", (int)eCeMenuSchedulesST::shorttext); - tokenContainer->DefineStringToken("{description}", (int)eCeMenuSchedulesST::description); - tokenContainer->DefineStringToken("{start}", (int)eCeMenuSchedulesST::start); - tokenContainer->DefineStringToken("{stop}", (int)eCeMenuSchedulesST::stop); - tokenContainer->DefineStringToken("{day}", (int)eCeMenuSchedulesST::day); - tokenContainer->DefineStringToken("{date}", (int)eCeMenuSchedulesST::date); - tokenContainer->DefineStringToken("{channelname}", (int)eCeMenuSchedulesST::channelname); - tokenContainer->DefineStringToken("{channelid}", (int)eCeMenuSchedulesST::channelid); - tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuSchedulesST::posterpath); - tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuSchedulesST::bannerpath); - tokenContainer->DefineStringToken("{timertype}", (int)eCeMenuSchedulesST::timertype); - tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuSchedulesIT::menuitemx); - tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuSchedulesIT::menuitemy); - tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuSchedulesIT::menuitemwidth); - tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuSchedulesIT::menuitemheight); - tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuSchedulesIT::numitem); - tokenContainer->DefineIntToken("{daynumeric}", (int)eCeMenuSchedulesIT::daynumeric); - tokenContainer->DefineIntToken("{month}", (int)eCeMenuSchedulesIT::month); - tokenContainer->DefineIntToken("{year}", (int)eCeMenuSchedulesIT::year); - tokenContainer->DefineIntToken("{running}", (int)eCeMenuSchedulesIT::running); - tokenContainer->DefineIntToken("{elapsed}", (int)eCeMenuSchedulesIT::elapsed); - tokenContainer->DefineIntToken("{duration}", (int)eCeMenuSchedulesIT::duration); - tokenContainer->DefineIntToken("{durationhours}", (int)eCeMenuSchedulesIT::durationhours); - tokenContainer->DefineIntToken("{durationminutes}", (int)eCeMenuSchedulesIT::durationminutes); - tokenContainer->DefineIntToken("{channelnumber}", (int)eCeMenuSchedulesIT::channelnumber); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eCeMenuSchedulesIT::channellogoexists); - tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuSchedulesIT::hasposter); - tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuSchedulesIT::posterwidth); - tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuSchedulesIT::posterheight); - tokenContainer->DefineIntToken("{hasbanner}", (int)eCeMenuSchedulesIT::hasbanner); - tokenContainer->DefineIntToken("{bannerwidth}", (int)eCeMenuSchedulesIT::bannerwidth); - tokenContainer->DefineIntToken("{bannerheight}", (int)eCeMenuSchedulesIT::bannerheight); - tokenContainer->DefineIntToken("{whatson}", (int)eCeMenuSchedulesIT::whatson); - tokenContainer->DefineIntToken("{whatsonnow}", (int)eCeMenuSchedulesIT::whatsonnow); - tokenContainer->DefineIntToken("{whatsonnext}", (int)eCeMenuSchedulesIT::whatsonnext); - tokenContainer->DefineIntToken("{whatsonfavorites}", (int)eCeMenuSchedulesIT::whatsonfavorites); - tokenContainer->DefineIntToken("{timerpartitial}", (int)eCeMenuSchedulesIT::timerpartitial); - tokenContainer->DefineIntToken("{timerfull}", (int)eCeMenuSchedulesIT::timerfull); - tokenContainer->DefineIntToken("{isremotetimer}", (int)eCeMenuSchedulesIT::isremotetimer); + + // fill tokens common for eCeMenuSchedulesIT, eCeMenuSchedulesST, eLeMenuSchedulesIT, eLeMenuSchedulesST + DEF_TOK_CONT_MS(TOKEN_CMS_IT, TOKEN_CMS_ST); + + tokenContainer->DefineStringToken("{description}", (int)TOKEN_CMS_ST::description); + + tokenContainer->DefineIntToken("{menuitemx}", (int)TOKEN_CMS_IT::menuitemx); + tokenContainer->DefineIntToken("{menuitemy}", (int)TOKEN_CMS_IT::menuitemy); + tokenContainer->DefineIntToken("{menuitemwidth}", (int)TOKEN_CMS_IT::menuitemwidth); + tokenContainer->DefineIntToken("{menuitemheight}", (int)TOKEN_CMS_IT::menuitemheight); + tokenContainer->DefineIntToken("{numitem}", (int)TOKEN_CMS_IT::numitem); + + tokenContainer->DefineStringToken("{posterpath}", (int)TOKEN_CMS_ST::posterpath); + tokenContainer->DefineStringToken("{bannerpath}", (int)TOKEN_CMS_ST::bannerpath); + tokenContainer->DefineIntToken("{hasposter}", (int)TOKEN_CMS_IT::hasposter); + tokenContainer->DefineIntToken("{posterwidth}", (int)TOKEN_CMS_IT::posterwidth); + tokenContainer->DefineIntToken("{posterheight}", (int)TOKEN_CMS_IT::posterheight); + tokenContainer->DefineIntToken("{hasbanner}", (int)TOKEN_CMS_IT::hasbanner); + tokenContainer->DefineIntToken("{bannerwidth}", (int)TOKEN_CMS_IT::bannerwidth); + tokenContainer->DefineIntToken("{bannerheight}", (int)TOKEN_CMS_IT::bannerheight); + tokenContainer->DefineLoopToken("{schedule[title]}", (int)eCeMenuSchedulesLT::title); tokenContainer->DefineLoopToken("{schedule[shorttext]}", (int)eCeMenuSchedulesLT::shorttext); tokenContainer->DefineLoopToken("{schedule[start]}", (int)eCeMenuSchedulesLT::start); @@ -931,47 +1265,47 @@ bool cCeMenuSchedules::Parse(bool forced) { return false; tokenContainer->Clear(); SetListTokens(tokenContainer); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::whatson, (menuCat == mcSchedule && !epgSearchFav) ? true : false); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::whatsonnow, menuCat == mcScheduleNow ? true : false); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::whatsonnext, menuCat == mcScheduleNext ? true : false); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::whatsonfavorites, epgSearchFav); + ADD_TOKEN_CMS_IT(whatson, (menuCat == mcSchedule && !epgSearchFav) ? true : false); + ADD_TOKEN_CMS_IT(whatsonnow, menuCat == mcScheduleNow ? true : false); + ADD_TOKEN_CMS_IT(whatsonnext, menuCat == mcScheduleNext ? true : false); + ADD_TOKEN_CMS_IT(whatsonfavorites, epgSearchFav); if (timerMatch == tmFull) { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, true); + ADD_TOKEN_CMS_IT(timerpartitial, false); + ADD_TOKEN_CMS_IT(timerfull, true); } else if (timerMatch == tmPartial) { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, true); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, false); + ADD_TOKEN_CMS_IT(timerpartitial, true); + ADD_TOKEN_CMS_IT(timerfull, false); } else { - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerpartitial, false); - tokenContainer->AddIntToken((int)eLeMenuSchedulesIT::timerfull, false); + ADD_TOKEN_CMS_IT(timerpartitial, false); + ADD_TOKEN_CMS_IT(timerfull, false); } if (event) { - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::title, event->Title()); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::shorttext, event->ShortText()); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::description, event->Description()); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::start, *(event->GetTimeString())); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::stop, *(event->GetEndTimeString())); + ADD_TOKEN_CMS_ST(title, event->Title()); + ADD_TOKEN_CMS_ST(shorttext, event->ShortText()); + ADD_TOKEN_CMS_ST(description, event->Description()); + ADD_TOKEN_CMS_ST(start, *(event->GetTimeString())); + ADD_TOKEN_CMS_ST(stop, *(event->GetEndTimeString())); time_t startTime = event->StartTime(); struct tm * sStartTime = localtime(&startTime); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::day, *WeekDayName(startTime)); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::date, *ShortDateString(startTime)); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::year, sStartTime->tm_year + 1900); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::daynumeric, sStartTime->tm_mday); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::month, sStartTime->tm_mon+1); + ADD_TOKEN_CMS_ST(day, *WeekDayName(startTime)); + ADD_TOKEN_CMS_ST(date, *ShortDateString(startTime)); + ADD_TOKEN_CMS_IT(year, sStartTime->tm_year + 1900); + ADD_TOKEN_CMS_IT(daynumeric, sStartTime->tm_mday); + ADD_TOKEN_CMS_IT(month, sStartTime->tm_mon+1); bool isRunning = false; time_t now = time(NULL); if ((now >= event->StartTime()) && (now <= event->EndTime())) isRunning = true; - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::running, isRunning); + ADD_TOKEN_CMS_IT(running, isRunning); if (isRunning) { - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::elapsed, (now - event->StartTime())/60); + ADD_TOKEN_CMS_IT(elapsed, (now - event->StartTime())/60); } else { - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::elapsed, 0); + ADD_TOKEN_CMS_IT(elapsed, 0); } - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::duration, event->Duration() / 60); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::durationhours, event->Duration() / 3600); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::durationminutes, (event->Duration() / 60) % 60); + ADD_TOKEN_CMS_IT(duration, event->Duration() / 60); + ADD_TOKEN_CMS_IT(durationhours, event->Duration() / 3600); + ADD_TOKEN_CMS_IT(durationminutes, (event->Duration() / 60) % 60); if (timerMatch == tmFull || timerMatch == tmPartial) { cTimer_Detail_V1 data; @@ -981,19 +1315,19 @@ bool cCeMenuSchedules::Parse(bool forced) { data.type = 'R'; if (cPlugin* pEpg2Vdr = cPluginManager::GetPlugin("epg2vdr")) pEpg2Vdr->Service(EPG2VDR_TIMER_DETAIL_SERVICE, &data); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::isremotetimer, !data.local); + ADD_TOKEN_CMS_IT(isremotetimer, !data.local); char tp[2]; sprintf(tp, "%c", data.type); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::timertype, tp); + ADD_TOKEN_CMS_ST(timertype, tp); } if (LoadFullScrapInfo(event, NULL)) SetScraperPosterBanner(tokenContainer); } if (channel) { - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::channelname, channel->Name()); + ADD_TOKEN_CMS_ST(channelname, channel->Name()); cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eCeMenuSchedulesST::channelid, *channelID); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::channelnumber, channel->Number()); - tokenContainer->AddIntToken((int)eCeMenuSchedulesIT::channellogoexists, imgCache->LogoExists(*channelID)); + ADD_TOKEN_CMS_ST(channelid, *channelID); + ADD_TOKEN_CMS_IT(channelnumber, channel->Number()); + ADD_TOKEN_CMS_IT(channellogoexists, imgCache->LogoExists(*channelID)); } if (menuCat == mcScheduleNow || menuCat == mcScheduleNext) { @@ -1057,29 +1391,14 @@ cLeMenuChannels::~cLeMenuChannels(void) { void cLeMenuChannels::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{name}", (int)eLeMenuChannelsST::name); - tokenContainer->DefineStringToken("{channelid}", (int)eLeMenuChannelsST::channelid); - tokenContainer->DefineStringToken("{source}", (int)eLeMenuChannelsST::source); - tokenContainer->DefineStringToken("{sourcedescription}", (int)eLeMenuChannelsST::sourcedescription); - tokenContainer->DefineStringToken("{position}", (int)eLeMenuChannelsST::position); - tokenContainer->DefineStringToken("{presenteventtitle}", (int)eLeMenuChannelsST::presenteventtitle); - tokenContainer->DefineStringToken("{presenteventstart}", (int)eLeMenuChannelsST::presenteventstart); - tokenContainer->DefineStringToken("{presenteventstop}", (int)eLeMenuChannelsST::presenteventstop); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuChannelsIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuChannelsIT::current); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuChannelsIT::separator); - tokenContainer->DefineIntToken("{number}", (int)eLeMenuChannelsIT::number); - tokenContainer->DefineIntToken("{transponder}", (int)eLeMenuChannelsIT::transponder); - tokenContainer->DefineIntToken("{frequency}", (int)eLeMenuChannelsIT::frequency); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eLeMenuChannelsIT::channellogoexists); - tokenContainer->DefineIntToken("{isAtsc}", (int)eLeMenuChannelsIT::isAtsc); - tokenContainer->DefineIntToken("{isCable}", (int)eLeMenuChannelsIT::isCable); - tokenContainer->DefineIntToken("{isSat}", (int)eLeMenuChannelsIT::isSat); - tokenContainer->DefineIntToken("{isTerr}", (int)eLeMenuChannelsIT::isTerr); - tokenContainer->DefineIntToken("{isEncrypted}", (int)eLeMenuChannelsIT::isEncrypted); - tokenContainer->DefineIntToken("{isRadio}", (int)eLeMenuChannelsIT::isRadio); - tokenContainer->DefineIntToken("{isHD}", (int)eLeMenuChannelsIT::isHD); - tokenContainer->DefineIntToken("{isUHD}", (int)eLeMenuChannelsIT::isUHD); + + // fill tokens common for eCeMenuChannelsIT, eCeMenuChannelsST, eLeMenuChannelsIT, eLeMenuChannelsST + DEF_TOK_CONT_MC(TOKEN_LMC_IT, TOKEN_LMC_ST); + + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LMC_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMC_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMC_IT::separator); + InheritTokenContainer(); } @@ -1114,32 +1433,12 @@ bool cLeMenuChannels::Parse(bool forced) { }; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::separator, !selectable); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::number, channel->Number()); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::transponder, channel->Transponder()); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::frequency, channel->Frequency()); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isEncrypted, channel->Ca()); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isRadio, isRadio); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isHD, isHD); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isUHD, isUHD); + ADD_TOKEN_LMC_IT(nummenuitem, num); + ADD_TOKEN_LMC_IT(current, current); + ADD_TOKEN_LMC_IT(separator, !selectable); - tokenContainer->AddStringToken((int)eLeMenuChannelsST::name, channel->Name()); - cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eLeMenuChannelsST::channelid, *channelID); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::channellogoexists, imgCache->LogoExists(*channelID)); - - //Channel Source Information - const cSource *source = Sources.Get(channel->Source()); - if (source) { - tokenContainer->AddStringToken((int)eLeMenuChannelsST::source, *cSource::ToString(source->Code())); - tokenContainer->AddStringToken((int)eLeMenuChannelsST::sourcedescription, source->Description()); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isAtsc, source->IsAtsc(source->Code())); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isCable, source->IsCable(source->Code())); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isSat, source->IsSat(source->Code())); - tokenContainer->AddIntToken((int)eLeMenuChannelsIT::isTerr, source->IsTerr(source->Code())); - } + // do the same stuff as in cCeMenuChannels::Parse() + ADD_TOKEN_MC(TOKEN_LMC_IT, TOKEN_LMC_ST); //current schedule #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) @@ -1153,9 +1452,9 @@ bool cLeMenuChannels::Parse(bool forced) { if (schedule) { const cEvent *presentEvent = schedule->GetPresentEvent(); if (presentEvent) { - tokenContainer->AddStringToken((int)eLeMenuChannelsST::presenteventtitle, presentEvent->Title()); - tokenContainer->AddStringToken((int)eLeMenuChannelsST::presenteventstart, *presentEvent->GetTimeString()); - tokenContainer->AddStringToken((int)eLeMenuChannelsST::presenteventstop, *presentEvent->GetEndTimeString()); + ADD_TOKEN_LMC_ST(presenteventtitle, presentEvent->Title()); + ADD_TOKEN_LMC_ST(presenteventstart, *presentEvent->GetTimeString()); + ADD_TOKEN_LMC_ST(presenteventstop, *presentEvent->GetEndTimeString()); } } return true; @@ -1183,57 +1482,42 @@ cCeMenuChannels::~cCeMenuChannels(void) { void cCeMenuChannels::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{name}", (int)eCeMenuChannelsST::name); - tokenContainer->DefineStringToken("{channelid}", (int)eCeMenuChannelsST::channelid); - tokenContainer->DefineStringToken("{source}", (int)eCeMenuChannelsST::source); - tokenContainer->DefineStringToken("{sourcedescription}", (int)eCeMenuChannelsST::sourcedescription); - tokenContainer->DefineStringToken("{position}", (int)eCeMenuChannelsST::position); - tokenContainer->DefineStringToken("{presenteventtitle}", (int)eCeMenuChannelsST::presenteventtitle); - tokenContainer->DefineStringToken("{presenteventstart}", (int)eCeMenuChannelsST::presenteventstart); - tokenContainer->DefineStringToken("{presenteventstop}", (int)eCeMenuChannelsST::presenteventstop); - tokenContainer->DefineStringToken("{presenteventshorttext}", (int)eCeMenuChannelsST::presenteventshorttext); - tokenContainer->DefineStringToken("{presenteventdescription}", (int)eCeMenuChannelsST::presenteventdescription); - tokenContainer->DefineStringToken("{presenteventday}", (int)eCeMenuChannelsST::presenteventday); - tokenContainer->DefineStringToken("{presenteventdate}", (int)eCeMenuChannelsST::presenteventdate); - tokenContainer->DefineStringToken("{presenteventdurationminutes}", (int)eCeMenuChannelsST::presenteventdurationminutes); - tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuChannelsST::posterpath); - tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuChannelsST::bannerpath); - tokenContainer->DefineStringToken("{nexteventtitle}", (int)eCeMenuChannelsST::nexteventtitle); - tokenContainer->DefineStringToken("{nexteventstart}", (int)eCeMenuChannelsST::nexteventstart); - tokenContainer->DefineStringToken("{nexteventstop}", (int)eCeMenuChannelsST::nexteventstop); - tokenContainer->DefineStringToken("{nexteventshorttext}", (int)eCeMenuChannelsST::nexteventshorttext); - tokenContainer->DefineStringToken("{nexteventdescription}", (int)eCeMenuChannelsST::nexteventdescription); - tokenContainer->DefineStringToken("{nexteventdurationminutes}", (int)eCeMenuChannelsST::nexteventdurationminutes); - tokenContainer->DefineStringToken("{nexteventday}", (int)eCeMenuChannelsST::nexteventday); - tokenContainer->DefineStringToken("{nexteventdate}", (int)eCeMenuChannelsST::nexteventdate); - tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuChannelsIT::menuitemx); - tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuChannelsIT::menuitemy); - tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuChannelsIT::menuitemwidth); - tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuChannelsIT::menuitemheight); - tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuChannelsIT::numitem); - tokenContainer->DefineIntToken("{number}", (int)eCeMenuChannelsIT::number); - tokenContainer->DefineIntToken("{transponder}", (int)eCeMenuChannelsIT::transponder); - tokenContainer->DefineIntToken("{frequency}", (int)eCeMenuChannelsIT::frequency); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eCeMenuChannelsIT::channellogoexists); - tokenContainer->DefineIntToken("{isAtsc}", (int)eCeMenuChannelsIT::isAtsc); - tokenContainer->DefineIntToken("{isCable}", (int)eCeMenuChannelsIT::isCable); - tokenContainer->DefineIntToken("{isSat}", (int)eCeMenuChannelsIT::isSat); - tokenContainer->DefineIntToken("{isTerr}", (int)eCeMenuChannelsIT::isTerr); - tokenContainer->DefineIntToken("{isEncrypted}", (int)eCeMenuChannelsIT::isEncrypted); - tokenContainer->DefineIntToken("{isRadio}", (int)eCeMenuChannelsIT::isRadio); - tokenContainer->DefineIntToken("{isHD}", (int)eCeMenuChannelsIT::isHD); - tokenContainer->DefineIntToken("{isUHD}", (int)eCeMenuChannelsIT::isUHD); - tokenContainer->DefineIntToken("{presenteventelapsed}", (int)eCeMenuChannelsIT::presenteventelapsed); - tokenContainer->DefineIntToken("{presenteventduration}", (int)eCeMenuChannelsIT::presenteventduration); - tokenContainer->DefineIntToken("{presenteventdurationhours}", (int)eCeMenuChannelsIT::presenteventdurationhours); - tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuChannelsIT::hasposter); - tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuChannelsIT::posterwidth); - tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuChannelsIT::posterheight); - tokenContainer->DefineIntToken("{hasbanner}", (int)eCeMenuChannelsIT::hasbanner); - tokenContainer->DefineIntToken("{bannerwidth}", (int)eCeMenuChannelsIT::bannerwidth); - tokenContainer->DefineIntToken("{bannerheight}", (int)eCeMenuChannelsIT::bannerheight); - tokenContainer->DefineIntToken("{nexteventduration}", (int)eCeMenuChannelsIT::nexteventduration); - tokenContainer->DefineIntToken("{nexteventdurationhours}", (int)eCeMenuChannelsIT::nexteventdurationhours); + + // fill tokens common for eCeMenuChannelsIT, eCeMenuChannelsST, eLeMenuChannelsIT, eLeMenuChannelsST + DEF_TOK_CONT_MC(TOKEN_CMC_IT, TOKEN_CMC_ST); + + tokenContainer->DefineStringToken("{presenteventshorttext}", (int)TOKEN_CMC_ST::presenteventshorttext); + tokenContainer->DefineStringToken("{presenteventdescription}", (int)TOKEN_CMC_ST::presenteventdescription); + tokenContainer->DefineStringToken("{presenteventday}", (int)TOKEN_CMC_ST::presenteventday); + tokenContainer->DefineStringToken("{presenteventdate}", (int)TOKEN_CMC_ST::presenteventdate); + tokenContainer->DefineStringToken("{presenteventdurationminutes}", (int)TOKEN_CMC_ST::presenteventdurationminutes); + tokenContainer->DefineStringToken("{posterpath}", (int)TOKEN_CMC_ST::posterpath); + tokenContainer->DefineStringToken("{bannerpath}", (int)TOKEN_CMC_ST::bannerpath); + tokenContainer->DefineStringToken("{nexteventtitle}", (int)TOKEN_CMC_ST::nexteventtitle); + tokenContainer->DefineStringToken("{nexteventstart}", (int)TOKEN_CMC_ST::nexteventstart); + tokenContainer->DefineStringToken("{nexteventstop}", (int)TOKEN_CMC_ST::nexteventstop); + tokenContainer->DefineStringToken("{nexteventshorttext}", (int)TOKEN_CMC_ST::nexteventshorttext); + tokenContainer->DefineStringToken("{nexteventdescription}", (int)TOKEN_CMC_ST::nexteventdescription); + tokenContainer->DefineStringToken("{nexteventdurationminutes}", (int)TOKEN_CMC_ST::nexteventdurationminutes); + tokenContainer->DefineStringToken("{nexteventday}", (int)TOKEN_CMC_ST::nexteventday); + tokenContainer->DefineStringToken("{nexteventdate}", (int)TOKEN_CMC_ST::nexteventdate); + tokenContainer->DefineIntToken("{menuitemx}", (int)TOKEN_CMC_IT::menuitemx); + tokenContainer->DefineIntToken("{menuitemy}", (int)TOKEN_CMC_IT::menuitemy); + tokenContainer->DefineIntToken("{menuitemwidth}", (int)TOKEN_CMC_IT::menuitemwidth); + tokenContainer->DefineIntToken("{menuitemheight}", (int)TOKEN_CMC_IT::menuitemheight); + tokenContainer->DefineIntToken("{numitem}", (int)TOKEN_CMC_IT::numitem); + + tokenContainer->DefineIntToken("{presenteventelapsed}", (int)TOKEN_CMC_IT::presenteventelapsed); + tokenContainer->DefineIntToken("{presenteventduration}", (int)TOKEN_CMC_IT::presenteventduration); + tokenContainer->DefineIntToken("{presenteventdurationhours}", (int)TOKEN_CMC_IT::presenteventdurationhours); + tokenContainer->DefineIntToken("{hasposter}", (int)TOKEN_CMC_IT::hasposter); + tokenContainer->DefineIntToken("{posterwidth}", (int)TOKEN_CMC_IT::posterwidth); + tokenContainer->DefineIntToken("{posterheight}", (int)TOKEN_CMC_IT::posterheight); + tokenContainer->DefineIntToken("{hasbanner}", (int)TOKEN_CMC_IT::hasbanner); + tokenContainer->DefineIntToken("{bannerwidth}", (int)TOKEN_CMC_IT::bannerwidth); + tokenContainer->DefineIntToken("{bannerheight}", (int)TOKEN_CMC_IT::bannerheight); + tokenContainer->DefineIntToken("{nexteventduration}", (int)TOKEN_CMC_IT::nexteventduration); + tokenContainer->DefineIntToken("{nexteventdurationhours}", (int)TOKEN_CMC_IT::nexteventdurationhours); tokenContainer->DefineLoopToken("{schedule[title]}", (int)eCeMenuChannelsLT::title); tokenContainer->DefineLoopToken("{schedule[shorttext]}", (int)eCeMenuChannelsLT::shorttext); tokenContainer->DefineLoopToken("{schedule[start]}", (int)eCeMenuChannelsLT::start); @@ -1272,29 +1556,8 @@ bool cCeMenuChannels::Parse(bool forced) { SetListTokens(tokenContainer); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::number, channel->Number()); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::transponder, channel->Transponder()); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::frequency, channel->Frequency()); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isEncrypted, channel->Ca()); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isRadio, isRadio); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isHD, isHD); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isUHD, isUHD); - - tokenContainer->AddStringToken((int)eCeMenuChannelsST::name, channel->Name()); - cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::channelid, *channelID); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::channellogoexists, imgCache->LogoExists(*channelID)); - - //Channel Source Information - const cSource *source = Sources.Get(channel->Source()); - if (source) { - tokenContainer->AddStringToken((int)eCeMenuChannelsST::source, *cSource::ToString(source->Code())); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::sourcedescription, source->Description()); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isAtsc, source->IsAtsc(source->Code())); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isCable, source->IsCable(source->Code())); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isSat, source->IsSat(source->Code())); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::isTerr, source->IsTerr(source->Code())); - } + // do the same stuff as in cLeMenuChannels::Parse() + ADD_TOKEN_MC(TOKEN_CMC_IT, TOKEN_CMC_ST); #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_SCHEDULES_READ; @@ -1307,17 +1570,17 @@ bool cCeMenuChannels::Parse(bool forced) { if (schedule) { const cEvent *presentEvent = schedule->GetPresentEvent(); if (presentEvent) { - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventtitle, presentEvent->Title()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventshorttext, presentEvent->ShortText()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventdescription, presentEvent->Description()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventstart, *presentEvent->GetTimeString()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventstop, *presentEvent->GetEndTimeString()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventday, *WeekDayName(presentEvent->StartTime())); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventdate, *ShortDateString(presentEvent->StartTime())); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::presenteventelapsed, (time(0) - presentEvent->StartTime())/60); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::presenteventduration, presentEvent->Duration() / 60); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::presenteventdurationhours, presentEvent->Duration() / 3600); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventdurationminutes, *cString::sprintf("%.2d", (presentEvent->Duration() / 60)%60)); + ADD_TOKEN_CMC_ST(presenteventtitle, presentEvent->Title()); + ADD_TOKEN_CMC_ST(presenteventshorttext, presentEvent->ShortText()); + ADD_TOKEN_CMC_ST(presenteventdescription, presentEvent->Description()); + ADD_TOKEN_CMC_ST(presenteventstart, *presentEvent->GetTimeString()); + ADD_TOKEN_CMC_ST(presenteventstop, *presentEvent->GetEndTimeString()); + ADD_TOKEN_CMC_ST(presenteventday, *WeekDayName(presentEvent->StartTime())); + ADD_TOKEN_CMC_ST(presenteventdate, *ShortDateString(presentEvent->StartTime())); + ADD_TOKEN_CMC_IT(presenteventelapsed, (time(0) - presentEvent->StartTime())/60); + ADD_TOKEN_CMC_IT(presenteventduration, presentEvent->Duration() / 60); + ADD_TOKEN_CMC_IT(presenteventdurationhours, presentEvent->Duration() / 3600); + ADD_TOKEN_CMC_ST(presenteventdurationminutes, *cString::sprintf("%.2d", (presentEvent->Duration() / 60)%60)); if (LoadFullScrapInfo(presentEvent, NULL)) SetScraperPosterBannerChannel(tokenContainer); } @@ -1325,16 +1588,16 @@ bool cCeMenuChannels::Parse(bool forced) { if (events && presentEvent) { const cEvent *nextEvent = events->Next(presentEvent); if (nextEvent) { - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventtitle, nextEvent->Title()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventshorttext, nextEvent->ShortText()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventdescription, nextEvent->Description()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventstart, *nextEvent->GetTimeString()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventstop, *nextEvent->GetEndTimeString()); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventday, *WeekDayName(nextEvent->StartTime())); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventdate, *ShortDateString(nextEvent->StartTime())); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::nexteventduration, nextEvent->Duration() / 60); - tokenContainer->AddIntToken((int)eCeMenuChannelsIT::nexteventdurationhours, nextEvent->Duration() / 3600); - tokenContainer->AddStringToken((int)eCeMenuChannelsST::nexteventdurationminutes, *cString::sprintf("%.2d", (nextEvent->Duration() / 60)%60)); + ADD_TOKEN_CMC_ST(nexteventtitle, nextEvent->Title()); + ADD_TOKEN_CMC_ST(nexteventshorttext, nextEvent->ShortText()); + ADD_TOKEN_CMC_ST(nexteventdescription, nextEvent->Description()); + ADD_TOKEN_CMC_ST(nexteventstart, *nextEvent->GetTimeString()); + ADD_TOKEN_CMC_ST(nexteventstop, *nextEvent->GetEndTimeString()); + ADD_TOKEN_CMC_ST(nexteventday, *WeekDayName(nextEvent->StartTime())); + ADD_TOKEN_CMC_ST(nexteventdate, *ShortDateString(nextEvent->StartTime())); + ADD_TOKEN_CMC_IT(nexteventduration, nextEvent->Duration() / 60); + ADD_TOKEN_CMC_IT(nexteventdurationhours, nextEvent->Duration() / 3600); + ADD_TOKEN_CMC_ST(nexteventdurationminutes, *cString::sprintf("%.2d", (nextEvent->Duration() / 60)%60)); } } } @@ -1392,36 +1655,12 @@ cLeMenuTimers::~cLeMenuTimers(void) { void cLeMenuTimers::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{title}", (int)eLeMenuTimersST::title); - tokenContainer->DefineStringToken("{timerstart}", (int)eLeMenuTimersST::timerstart); - tokenContainer->DefineStringToken("{timerstop}", (int)eLeMenuTimersST::timerstop); - tokenContainer->DefineStringToken("{day}", (int)eLeMenuTimersST::day); - tokenContainer->DefineStringToken("{dayname}", (int)eLeMenuTimersST::dayname); - tokenContainer->DefineStringToken("{monthname}", (int)eLeMenuTimersST::monthname); - tokenContainer->DefineStringToken("{channelname}", (int)eLeMenuTimersST::channelname); - tokenContainer->DefineStringToken("{channelid}", (int)eLeMenuTimersST::channelid); - tokenContainer->DefineStringToken("{eventtitle}", (int)eLeMenuTimersST::eventtitle); - tokenContainer->DefineStringToken("{eventstart}", (int)eLeMenuTimersST::eventstart); - tokenContainer->DefineStringToken("{eventstop}", (int)eLeMenuTimersST::eventstop); - tokenContainer->DefineStringToken("{state}", (int)eLeMenuTimersST::state); - tokenContainer->DefineStringToken("{stateinfo}", (int)eLeMenuTimersST::stateinfo); - tokenContainer->DefineStringToken("{action}", (int)eLeMenuTimersST::action); - tokenContainer->DefineStringToken("{vdrname}", (int)eLeMenuTimersST::vdrname); - tokenContainer->DefineStringToken("{type}", (int)eLeMenuTimersST::type); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuTimersIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuTimersIT::current); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuTimersIT::separator); - tokenContainer->DefineIntToken("{month}", (int)eLeMenuTimersIT::month); - tokenContainer->DefineIntToken("{year}", (int)eLeMenuTimersIT::year); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eLeMenuTimersIT::channellogoexists); - tokenContainer->DefineIntToken("{channelnumber}", (int)eLeMenuTimersIT::channelnumber); - tokenContainer->DefineIntToken("{flagactive}", (int)eLeMenuTimersIT::flagactive); - tokenContainer->DefineIntToken("{flaginstant}", (int)eLeMenuTimersIT::flaginstant); - tokenContainer->DefineIntToken("{flagvps}", (int)eLeMenuTimersIT::flagvps); - tokenContainer->DefineIntToken("{flagrecording}", (int)eLeMenuTimersIT::flagrecording); - tokenContainer->DefineIntToken("{flagpending}", (int)eLeMenuTimersIT::flagpending); - tokenContainer->DefineIntToken("{isvdrrunning}", (int)eLeMenuTimersIT::isvdrrunning); - tokenContainer->DefineIntToken("{isremote}", (int)eLeMenuTimersIT::isremote); + + // fill tokens common for eCeMenuTimersIT, eCeMenuTimersST, eLeMenuTimersIT, eLeMenuTimersST + DEF_TOK_CONT_MT(TOKEN_LMT_IT, TOKEN_LMT_ST); + + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMT_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMT_IT::separator); InheritTokenContainer(); } @@ -1441,23 +1680,21 @@ bool cLeMenuTimers::Parse(bool forced) { return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::separator, !selectable); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::flagactive, timer->HasFlags(tfActive)); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::flaginstant, timer->HasFlags(tfInstant)); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::flagvps, timer->HasFlags(tfVps)); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::flagrecording, timer->Recording()); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::flagpending, timer->Pending()); + ADD_TOKEN_LMT_IT(nummenuitem, num); + ADD_TOKEN_LMT_IT(current, current); + ADD_TOKEN_LMT_IT(separator, !selectable); + + // do the same stuff as in cCeMenuTimers::Parse() + ADD_TOKEN_MT(TOKEN_LMT_IT); const char *file = Setup.FoldersInTimerMenu ? NULL : strrchr(timer->File(), FOLDERDELIMCHAR); if (file && strcmp(file + 1, TIMERMACRO_TITLE) && strcmp(file + 1, TIMERMACRO_EPISODE)) file++; else file = timer->File(); - tokenContainer->AddStringToken((int)eLeMenuTimersST::title, file); - tokenContainer->AddStringToken((int)eLeMenuTimersST::timerstart, *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)); - tokenContainer->AddStringToken((int)eLeMenuTimersST::timerstop, *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)); + ADD_TOKEN_LMT_ST(title, file); + ADD_TOKEN_LMT_ST(timerstart, *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)); + ADD_TOKEN_LMT_ST(timerstop, *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)); cString day(""); cString dayName(""); @@ -1487,42 +1724,42 @@ bool cLeMenuTimers::Parse(bool forced) { strftime(buffer3, sizeof(buffer3), "%Y", &tm_r); int year = atoi(buffer3); - tokenContainer->AddStringToken((int)eLeMenuTimersST::day, *day); - tokenContainer->AddStringToken((int)eLeMenuTimersST::dayname, *dayName); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::month, month); - tokenContainer->AddStringToken((int)eLeMenuTimersST::monthname, buffer2); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::year, year); + ADD_TOKEN_LMT_ST(day, *day); + ADD_TOKEN_LMT_ST(dayname, *dayName); + ADD_TOKEN_LMT_IT(month, month); + ADD_TOKEN_LMT_ST(monthname, buffer2); + ADD_TOKEN_LMT_IT(year, year); const cChannel *channel = timer->Channel(); if (channel) { - tokenContainer->AddStringToken((int)eLeMenuTimersST::channelname, channel->Name()); + ADD_TOKEN_LMT_ST(channelname, channel->Name()); cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eLeMenuTimersST::channelid, *channelID); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::channellogoexists, imgCache->LogoExists(*channelID)); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::channelnumber, channel->Number()); + ADD_TOKEN_LMT_ST(channelid, *channelID); + ADD_TOKEN_LMT_IT(channellogoexists, imgCache->LogoExists(*channelID)); + ADD_TOKEN_LMT_IT(channelnumber, channel->Number()); } const cEvent *event = timer->Event(); if (event) { - tokenContainer->AddStringToken((int)eLeMenuTimersST::eventtitle, event->Title()); - tokenContainer->AddStringToken((int)eLeMenuTimersST::eventstart, *event->GetTimeString()); - tokenContainer->AddStringToken((int)eLeMenuTimersST::eventstop, *event->GetEndTimeString()); + ADD_TOKEN_LMT_ST(eventtitle, event->Title()); + ADD_TOKEN_LMT_ST(eventstart, *event->GetTimeString()); + ADD_TOKEN_LMT_ST(eventstop, *event->GetEndTimeString()); } cEpgTimer_Interface_V1* epgTimer; if (epgTimer = dynamic_cast((cTimer*)timer)) { - tokenContainer->AddIntToken((int)eLeMenuTimersIT::isvdrrunning, epgTimer->isVdrRunning()); - tokenContainer->AddIntToken((int)eLeMenuTimersIT::isremote, epgTimer->isRemote()); + ADD_TOKEN_LMT_IT(isvdrrunning, epgTimer->isVdrRunning()); + ADD_TOKEN_LMT_IT(isremote, epgTimer->isRemote()); stringstream state; state << epgTimer->State(); - tokenContainer->AddStringToken((int)eLeMenuTimersST::state, state.str().c_str()); - tokenContainer->AddStringToken((int)eLeMenuTimersST::stateinfo, epgTimer->StateInfo()); - tokenContainer->AddStringToken((int)eLeMenuTimersST::vdrname, epgTimer->VdrName()); + ADD_TOKEN_LMT_ST(state, state.str().c_str()); + ADD_TOKEN_LMT_ST(stateinfo, epgTimer->StateInfo()); + ADD_TOKEN_LMT_ST(vdrname, epgTimer->VdrName()); char tp[2]; sprintf(tp, "%c", epgTimer->Type()); - tokenContainer->AddStringToken((int)eLeMenuTimersST::type, tp); + ADD_TOKEN_LMT_ST(type, tp); stringstream action; action << epgTimer->Action(); - tokenContainer->AddStringToken((int)eLeMenuTimersST::action, action.str().c_str()); + ADD_TOKEN_LMT_ST(action, action.str().c_str()); } return true; @@ -1549,48 +1786,26 @@ cCeMenuTimers::~cCeMenuTimers(void) { void cCeMenuTimers::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{title}", (int)eCeMenuTimersST::title); - tokenContainer->DefineStringToken("{timerstart}", (int)eCeMenuTimersST::timerstart); - tokenContainer->DefineStringToken("{timerstop}", (int)eCeMenuTimersST::timerstop); - tokenContainer->DefineStringToken("{day}", (int)eCeMenuTimersST::day); - tokenContainer->DefineStringToken("{dayname}", (int)eCeMenuTimersST::dayname); - tokenContainer->DefineStringToken("{monthname}", (int)eCeMenuTimersST::monthname); - tokenContainer->DefineStringToken("{channelname}", (int)eCeMenuTimersST::channelname); - tokenContainer->DefineStringToken("{channelid}", (int)eCeMenuTimersST::channelid); - tokenContainer->DefineStringToken("{eventtitle}", (int)eCeMenuTimersST::eventtitle); - tokenContainer->DefineStringToken("{eventstart}", (int)eCeMenuTimersST::eventstart); - tokenContainer->DefineStringToken("{eventstop}", (int)eCeMenuTimersST::eventstop); - tokenContainer->DefineStringToken("{eventshorttext}", (int)eCeMenuTimersST::eventshorttext); - tokenContainer->DefineStringToken("{eventdescription}", (int)eCeMenuTimersST::eventdescription); - tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuTimersST::posterpath); - tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuTimersST::bannerpath); - tokenContainer->DefineStringToken("{state}", (int)eCeMenuTimersST::state); - tokenContainer->DefineStringToken("{stateinfo}", (int)eCeMenuTimersST::stateinfo); - tokenContainer->DefineStringToken("{action}", (int)eCeMenuTimersST::action); - tokenContainer->DefineStringToken("{vdrname}", (int)eCeMenuTimersST::vdrname); - tokenContainer->DefineStringToken("{type}", (int)eCeMenuTimersST::type); - tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuTimersIT::menuitemx); - tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuTimersIT::menuitemy); - tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuTimersIT::menuitemwidth); - tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuTimersIT::menuitemheight); - tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuTimersIT::numitem); - tokenContainer->DefineIntToken("{month}", (int)eCeMenuTimersIT::month); - tokenContainer->DefineIntToken("{year}", (int)eCeMenuTimersIT::year); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eCeMenuTimersIT::channellogoexists); - tokenContainer->DefineIntToken("{channelnumber}", (int)eCeMenuTimersIT::channelnumber); - tokenContainer->DefineIntToken("{flagactive}", (int)eCeMenuTimersIT::flagactive); - tokenContainer->DefineIntToken("{flaginstant}", (int)eCeMenuTimersIT::flaginstant); - tokenContainer->DefineIntToken("{flagvps}", (int)eCeMenuTimersIT::flagvps); - tokenContainer->DefineIntToken("{flagrecording}", (int)eCeMenuTimersIT::flagrecording); - tokenContainer->DefineIntToken("{flagpending}", (int)eCeMenuTimersIT::flagpending); - tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuTimersIT::hasposter); - tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuTimersIT::posterwidth); - tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuTimersIT::posterheight); - tokenContainer->DefineIntToken("{hasbanner}", (int)eCeMenuTimersIT::hasbanner); - tokenContainer->DefineIntToken("{bannerwidth}", (int)eCeMenuTimersIT::bannerwidth); - tokenContainer->DefineIntToken("{bannerheight}", (int)eCeMenuTimersIT::bannerheight); - tokenContainer->DefineIntToken("{isvdrrunning}", (int)eCeMenuTimersIT::isvdrrunning); - tokenContainer->DefineIntToken("{isremote}", (int)eCeMenuTimersIT::isremote); + + // fill tokens common for eCeMenuTimersIT, eCeMenuTimersST, eLeMenuTimersIT, eLeMenuTimersST + DEF_TOK_CONT_MT(TOKEN_CMT_IT, TOKEN_CMT_ST); + + // fill tokens specific for eCeMenuTimersIT, eCeMenuTimersST + tokenContainer->DefineStringToken("{eventshorttext}", (int)TOKEN_CMT_ST::eventshorttext); + tokenContainer->DefineStringToken("{eventdescription}", (int)TOKEN_CMT_ST::eventdescription); + tokenContainer->DefineStringToken("{posterpath}", (int)TOKEN_CMT_ST::posterpath); + tokenContainer->DefineStringToken("{bannerpath}", (int)TOKEN_CMT_ST::bannerpath); + tokenContainer->DefineIntToken("{menuitemx}", (int)TOKEN_CMT_IT::menuitemx); + tokenContainer->DefineIntToken("{menuitemy}", (int)TOKEN_CMT_IT::menuitemy); + tokenContainer->DefineIntToken("{menuitemwidth}", (int)TOKEN_CMT_IT::menuitemwidth); + tokenContainer->DefineIntToken("{menuitemheight}", (int)TOKEN_CMT_IT::menuitemheight); + tokenContainer->DefineIntToken("{numitem}", (int)TOKEN_CMT_IT::numitem); + tokenContainer->DefineIntToken("{hasposter}", (int)TOKEN_CMT_IT::hasposter); + tokenContainer->DefineIntToken("{posterwidth}", (int)TOKEN_CMT_IT::posterwidth); + tokenContainer->DefineIntToken("{posterheight}", (int)TOKEN_CMT_IT::posterheight); + tokenContainer->DefineIntToken("{hasbanner}", (int)TOKEN_CMT_IT::hasbanner); + tokenContainer->DefineIntToken("{bannerwidth}", (int)TOKEN_CMT_IT::bannerwidth); + tokenContainer->DefineIntToken("{bannerheight}", (int)TOKEN_CMT_IT::bannerheight); InheritTokenContainer(); } @@ -1608,20 +1823,18 @@ bool cCeMenuTimers::Parse(bool forced) { tokenContainer->Clear(); SetListTokens(tokenContainer); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::flagactive, timer->HasFlags(tfActive)); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::flaginstant, timer->HasFlags(tfInstant)); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::flagvps, timer->HasFlags(tfVps)); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::flagrecording, timer->Recording()); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::flagpending, timer->Pending()); + + // do the same stuff as in cLeMenuTimers::Parse() + ADD_TOKEN_MT(TOKEN_CMT_IT); const char *file = Setup.FoldersInTimerMenu ? NULL : strrchr(timer->File(), FOLDERDELIMCHAR); if (file && strcmp(file + 1, TIMERMACRO_TITLE) && strcmp(file + 1, TIMERMACRO_EPISODE)) file++; else file = timer->File(); - tokenContainer->AddStringToken((int)eCeMenuTimersST::title, file); - tokenContainer->AddStringToken((int)eCeMenuTimersST::timerstart, *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)); - tokenContainer->AddStringToken((int)eCeMenuTimersST::timerstop, *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)); + ADD_TOKEN_CMT_ST(title, file); + ADD_TOKEN_CMT_ST(timerstart, *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)); + ADD_TOKEN_CMT_ST(timerstop, *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)); cString day(""); cString dayName(""); @@ -1651,46 +1864,46 @@ bool cCeMenuTimers::Parse(bool forced) { strftime(buffer3, sizeof(buffer3), "%Y", &tm_r); int year = atoi(buffer3); - tokenContainer->AddStringToken((int)eCeMenuTimersST::day, *day); - tokenContainer->AddStringToken((int)eCeMenuTimersST::dayname, *dayName); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::month, month); - tokenContainer->AddStringToken((int)eCeMenuTimersST::monthname, buffer2); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::year, year); + ADD_TOKEN_CMT_ST(day, *day); + ADD_TOKEN_CMT_ST(dayname, *dayName); + ADD_TOKEN_CMT_IT(month, month); + ADD_TOKEN_CMT_ST(monthname, buffer2); + ADD_TOKEN_CMT_IT(year, year); const cChannel *channel = timer->Channel(); if (channel) { - tokenContainer->AddStringToken((int)eCeMenuTimersST::channelname, channel->Name()); + ADD_TOKEN_CMT_ST(channelname, channel->Name()); cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eCeMenuTimersST::channelid, *channelID); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::channellogoexists, imgCache->LogoExists(*channelID)); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::channelnumber, channel->Number()); + ADD_TOKEN_CMT_ST(channelid, *channelID); + ADD_TOKEN_CMT_IT(channellogoexists, imgCache->LogoExists(*channelID)); + ADD_TOKEN_CMT_IT(channelnumber, channel->Number()); } const cEvent *event = timer->Event(); if (event) { - tokenContainer->AddStringToken((int)eCeMenuTimersST::eventtitle, event->Title()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::eventstart, *event->GetTimeString()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::eventstop, *event->GetEndTimeString()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::eventshorttext, event->ShortText()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::eventdescription, event->Description()); + ADD_TOKEN_CMT_ST(eventtitle, event->Title()); + ADD_TOKEN_CMT_ST(eventstart, *event->GetTimeString()); + ADD_TOKEN_CMT_ST(eventstop, *event->GetEndTimeString()); + ADD_TOKEN_CMT_ST(eventshorttext, event->ShortText()); + ADD_TOKEN_CMT_ST(eventdescription, event->Description()); if (LoadFullScrapInfo(event, NULL)) SetScraperPosterBannerTimer(tokenContainer); } cEpgTimer_Interface_V1* epgTimer; if (epgTimer = dynamic_cast((cTimer*)timer)) { - tokenContainer->AddIntToken((int)eCeMenuTimersIT::isvdrrunning, epgTimer->isVdrRunning()); - tokenContainer->AddIntToken((int)eCeMenuTimersIT::isremote, epgTimer->isRemote()); + ADD_TOKEN_CMT_IT(isvdrrunning, epgTimer->isVdrRunning()); + ADD_TOKEN_CMT_IT(isremote, epgTimer->isRemote()); stringstream state; state << epgTimer->State(); - tokenContainer->AddStringToken((int)eCeMenuTimersST::state, state.str().c_str()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::stateinfo, epgTimer->StateInfo()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::vdrname, epgTimer->VdrName()); + ADD_TOKEN_CMT_ST(state, state.str().c_str()); + ADD_TOKEN_CMT_ST(stateinfo, epgTimer->StateInfo()); + ADD_TOKEN_CMT_ST(vdrname, epgTimer->VdrName()); char tp[2]; sprintf(tp, "%c", epgTimer->Type()); - tokenContainer->AddStringToken((int)eCeMenuTimersST::type, tp); + ADD_TOKEN_CMT_ST(type, tp); stringstream action; action << epgTimer->Action(); - tokenContainer->AddStringToken((int)eCeMenuTimersST::action, action.str().c_str()); + ADD_TOKEN_CMT_ST(action, action.str().c_str()); } return true; @@ -1721,46 +1934,14 @@ cLeMenuRecordings::~cLeMenuRecordings(void) { void cLeMenuRecordings::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{name}", (int)eLeMenuRecordingsST::name); - tokenContainer->DefineStringToken("{epgname}", (int)eLeMenuRecordingsST::epgname); - tokenContainer->DefineStringToken("{shorttext}", (int)eLeMenuRecordingsST::shorttext); - tokenContainer->DefineStringToken("{description}", (int)eLeMenuRecordingsST::description); - tokenContainer->DefineStringToken("{date}", (int)eLeMenuRecordingsST::date); - tokenContainer->DefineStringToken("{time}", (int)eLeMenuRecordingsST::time); - tokenContainer->DefineStringToken("{durationminutes}", (int)eLeMenuRecordingsST::durationminutes); - tokenContainer->DefineStringToken("{durationeventminutes}", (int)eLeMenuRecordingsST::durationeventminutes); - tokenContainer->DefineStringToken("{thumbnailpath}", (int)eLeMenuRecordingsST::thumbnailpath); - tokenContainer->DefineStringToken("{posterpath}", (int)eLeMenuRecordingsST::posterpath); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeMenuRecordingsIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeMenuRecordingsIT::current); - tokenContainer->DefineIntToken("{new}", (int)eLeMenuRecordingsIT::isnew); - tokenContainer->DefineIntToken("{separator}", (int)eLeMenuRecordingsIT::separator); - tokenContainer->DefineIntToken("{percentseen}", (int)eLeMenuRecordingsIT::percentseen); - tokenContainer->DefineIntToken("{watched}", (int)eLeMenuRecordingsIT::watched); - tokenContainer->DefineIntToken("{cutted}", (int)eLeMenuRecordingsIT::cutted); - tokenContainer->DefineIntToken("{folder}", (int)eLeMenuRecordingsIT::folder); - tokenContainer->DefineIntToken("{daynumeric}", (int)eLeMenuRecordingsIT::daynumeric); - tokenContainer->DefineIntToken("{month}", (int)eLeMenuRecordingsIT::month); - tokenContainer->DefineIntToken("{year}", (int)eLeMenuRecordingsIT::year); - tokenContainer->DefineIntToken("{duration}", (int)eLeMenuRecordingsIT::duration); - tokenContainer->DefineIntToken("{durationhours}", (int)eLeMenuRecordingsIT::durationhours); - tokenContainer->DefineIntToken("{durationevent}", (int)eLeMenuRecordingsIT::durationevent); - tokenContainer->DefineIntToken("{durationeventhours}", (int)eLeMenuRecordingsIT::durationeventhours); - tokenContainer->DefineIntToken("{numrecordingsfolder}", (int)eLeMenuRecordingsIT::numrecordingsfolder); - tokenContainer->DefineIntToken("{newrecordingsfolder}", (int)eLeMenuRecordingsIT::newrecordingsfolder); - tokenContainer->DefineIntToken("{hasposterthumbnail}", (int)eLeMenuRecordingsIT::hasposterthumbnail); - tokenContainer->DefineIntToken("{thumbnailwidth}", (int)eLeMenuRecordingsIT::thumbnailwidth); - tokenContainer->DefineIntToken("{thumbnailheight}", (int)eLeMenuRecordingsIT::thumbnailheight); - tokenContainer->DefineIntToken("{hasposter}", (int)eLeMenuRecordingsIT::hasposter); - tokenContainer->DefineIntToken("{posterwidth}", (int)eLeMenuRecordingsIT::posterwidth); - tokenContainer->DefineIntToken("{posterheight}", (int)eLeMenuRecordingsIT::posterheight); - tokenContainer->DefineIntToken("{fps}", (int)eLeMenuRecordingsIT::framesPerSecond); - tokenContainer->DefineIntToken("{isHD}", (int)eLeMenuRecordingsIT::isHD); - tokenContainer->DefineIntToken("{isUHD}", (int)eLeMenuRecordingsIT::isUHD); - tokenContainer->DefineIntToken("{isRadio}", (int)eLeMenuRecordingsIT::isRadio); - tokenContainer->DefineIntToken("{isRecording}", (int)eLeMenuRecordingsIT::isRecording); - tokenContainer->DefineStringToken("{recchannelname}", (int)eLeMenuRecordingsST::recchannelname); - tokenContainer->DefineStringToken("{recchannelid}", (int)eLeMenuRecordingsST::recchannelid); + + // fill tokens common for eCeMenuRecordingsIT, eCeMenuRecordingsST, eLeMenuRecordingsIT, eLeMenuRecordingsST + DEF_TOK_CONT_MR(TOKEN_LMR_IT, TOKEN_LMR_ST); + + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LMR_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LMR_IT::current); + tokenContainer->DefineIntToken("{separator}", (int)TOKEN_LMR_IT::separator); + InheritTokenContainer(); } @@ -1785,14 +1966,13 @@ bool cLeMenuRecordings::Parse(bool forced) { return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::current, current); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::separator, !selectable); + ADD_TOKEN_LMR_IT(nummenuitem, num); + ADD_TOKEN_LMR_IT(current, current); + ADD_TOKEN_LMR_IT(separator, !selectable); bool isFolder = (total > 0) ? true : false; - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::folder, isFolder); - + ADD_TOKEN_LMR_IT(folder, isFolder); char *recName = RecName(recording->Name(), level); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::name, recName); + ADD_TOKEN_LMR_ST(name, recName); const cRecording *usedRecording = recording; @@ -1814,7 +1994,8 @@ bool cLeMenuRecordings::Parse(bool forced) { delete folderInfo; } } - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isnew, usedRecording->IsNew()); + + ADD_TOKEN_LMR_IT(isnew, usedRecording->IsNew()); int percSeen = 0; #if APIVERSNUM < 20108 @@ -1827,26 +2008,14 @@ bool cLeMenuRecordings::Parse(bool forced) { percSeen = (double)framesSeen / (double)framesTotal * 100; } #endif - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::percentseen, percSeen); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::newrecordingsfolder, New); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::numrecordingsfolder, total); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::cutted, usedRecording->IsEdited()); - int recDuration = usedRecording->LengthInSeconds(); - bool watched = false; - if (usedRecording->IsEdited()) { - if (percSeen >= 85) - watched = true; - } else { - int watchedLimit = recDuration * 85 / 100 - (Setup.MarginStop + 5)*60; - int watchedTime = percSeen * recDuration / 100; - if (watchedLimit > 0 && watchedTime > 0 && (watchedTime > watchedLimit)) - watched = true; - } - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::watched, watched); + // do the same stuff as in cCeMenuRecordings::Parse() (part 1) + int recDuration = usedRecording->LengthInSeconds(); \ + ADD_TOKEN_MR1(TOKEN_LMR_IT); + + const cEvent *event = NULL; \ + const cRecordingInfo *info = usedRecording->Info(); \ - const cEvent *event = NULL; - const cRecordingInfo *info = usedRecording->Info(); if (!info) { delete[] recName; return true; @@ -1856,14 +2025,14 @@ bool cLeMenuRecordings::Parse(bool forced) { delete[] recName; return true; } - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::epgname, info->Title() ? info->Title() : recName); + ADD_TOKEN_LMR_ST(epgname, info->Title() ? info->Title() : recName); delete[] recName; if (info) { - if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelname, info->ChannelName()); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelid, info->ChannelID().ToString()); - } else { + if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { + ADD_TOKEN_LMR_ST(recchannelname, info->ChannelName()); + ADD_TOKEN_LMR_ST(recchannelid, info->ChannelID().ToString()); + } else { #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_CHANNELS_READ; const cChannel *channel = Channels->GetByChannelID(info->ChannelID()); @@ -1871,10 +2040,10 @@ bool cLeMenuRecordings::Parse(bool forced) { const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); #endif if (channel) { - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); - } - } + ADD_TOKEN_LMR_ST(recchannelname, channel->Name()); + ADD_TOKEN_LMR_ST(recchannelid, *channel->GetChannelID().ToString()); + } + } } cString recDate = event->GetDateString(); @@ -1885,33 +2054,8 @@ bool cLeMenuRecordings::Parse(bool forced) { recTime = TimeString(start); } - time_t startTime = event->StartTime(); - if (!startTime) - startTime = usedRecording->Start(); - struct tm * sStartTime = localtime(&startTime); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::year, sStartTime->tm_year + 1900); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::daynumeric, sStartTime->tm_mday); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::month, sStartTime->tm_mon+1); - - int duration = event->Duration() / 60; - recDuration = (recDuration>0)?(recDuration / 60):0; - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::date, *recDate); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::time, *recTime); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::duration, recDuration); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::durationhours, recDuration / 60); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::durationminutes, *cString::sprintf("%.2d", recDuration%60)); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::durationevent, duration); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::durationeventhours, duration / 60); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::durationeventminutes, *cString::sprintf("%.2d", duration%60)); - - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::shorttext, info->ShortText()); - tokenContainer->AddStringToken((int)eLeMenuRecordingsST::description, info->Description()); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond()); - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info' - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS - tokenContainer->AddIntToken((int)eLeMenuRecordingsIT::isRecording, usedRecording->IsInUse() & ruTimer); - SetScraperRecordingPoster(tokenContainer, usedRecording, true); + // do the same stuff as in cCeMenuRecordings::Parse() (part 2) + ADD_TOKEN_MR2(TOKEN_LMR_IT, TOKEN_LMR_ST); return true; } @@ -1995,48 +2139,16 @@ cCeMenuRecordings::~cCeMenuRecordings(void) { void cCeMenuRecordings::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{name}", (int)eCeMenuRecordingsST::name); - tokenContainer->DefineStringToken("{epgname}", (int)eCeMenuRecordingsST::epgname); - tokenContainer->DefineStringToken("{shorttext}", (int)eCeMenuRecordingsST::shorttext); - tokenContainer->DefineStringToken("{description}", (int)eCeMenuRecordingsST::description); - tokenContainer->DefineStringToken("{date}", (int)eCeMenuRecordingsST::date); - tokenContainer->DefineStringToken("{time}", (int)eCeMenuRecordingsST::time); - tokenContainer->DefineStringToken("{durationminutes}", (int)eCeMenuRecordingsST::durationminutes); - tokenContainer->DefineStringToken("{durationeventminutes}", (int)eCeMenuRecordingsST::durationeventminutes); - tokenContainer->DefineStringToken("{thumbnailpath}", (int)eCeMenuRecordingsST::thumbnailpath); - tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuRecordingsST::posterpath); - tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuRecordingsIT::menuitemx); - tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuRecordingsIT::menuitemy); - tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuRecordingsIT::menuitemwidth); - tokenContainer->DefineIntToken("{menuitemheight}", (int)eCeMenuRecordingsIT::menuitemheight); - tokenContainer->DefineIntToken("{numitem}", (int)eCeMenuRecordingsIT::numitem); - tokenContainer->DefineIntToken("{new}", (int)eCeMenuRecordingsIT::isnew); - tokenContainer->DefineIntToken("{percentseen}", (int)eCeMenuRecordingsIT::percentseen); - tokenContainer->DefineIntToken("{watched}", (int)eCeMenuRecordingsIT::watched); - tokenContainer->DefineIntToken("{cutted}", (int)eCeMenuRecordingsIT::cutted); - tokenContainer->DefineIntToken("{folder}", (int)eCeMenuRecordingsIT::folder); - tokenContainer->DefineIntToken("{daynumeric}", (int)eCeMenuRecordingsIT::daynumeric); - tokenContainer->DefineIntToken("{month}", (int)eCeMenuRecordingsIT::month); - tokenContainer->DefineIntToken("{year}", (int)eCeMenuRecordingsIT::year); - tokenContainer->DefineIntToken("{duration}", (int)eCeMenuRecordingsIT::duration); - tokenContainer->DefineIntToken("{durationhours}", (int)eCeMenuRecordingsIT::durationhours); - tokenContainer->DefineIntToken("{durationevent}", (int)eCeMenuRecordingsIT::durationevent); - tokenContainer->DefineIntToken("{durationeventhours}", (int)eCeMenuRecordingsIT::durationeventhours); - tokenContainer->DefineIntToken("{numrecordingsfolder}", (int)eCeMenuRecordingsIT::numrecordingsfolder); - tokenContainer->DefineIntToken("{newrecordingsfolder}", (int)eCeMenuRecordingsIT::newrecordingsfolder); - tokenContainer->DefineIntToken("{hasposterthumbnail}", (int)eCeMenuRecordingsIT::hasposterthumbnail); - tokenContainer->DefineIntToken("{thumbnailwidth}", (int)eCeMenuRecordingsIT::thumbnailwidth); - tokenContainer->DefineIntToken("{thumbnailheight}", (int)eCeMenuRecordingsIT::thumbnailheight); - tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuRecordingsIT::hasposter); - tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuRecordingsIT::posterwidth); - tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuRecordingsIT::posterheight); - tokenContainer->DefineIntToken("{fps}", (int)eCeMenuRecordingsIT::framesPerSecond); - tokenContainer->DefineIntToken("{isHD}", (int)eCeMenuRecordingsIT::isHD); - tokenContainer->DefineIntToken("{isUHD}", (int)eCeMenuRecordingsIT::isUHD); - tokenContainer->DefineIntToken("{isRadio}", (int)eCeMenuRecordingsIT::isRadio); - tokenContainer->DefineIntToken("{isRecording}", (int)eCeMenuRecordingsIT::isRecording); - tokenContainer->DefineStringToken("{recchannelname}", (int)eCeMenuRecordingsST::recchannelname); - tokenContainer->DefineStringToken("{recchannelid}", (int)eCeMenuRecordingsST::recchannelid); + + // fill tokens common for eCeMenuRecordingsIT, eCeMenuRecordingsST, eLeMenuRecordingsIT, eLeMenuRecordingsST + DEF_TOK_CONT_MR(TOKEN_CMR_IT, TOKEN_CMR_ST); + + tokenContainer->DefineIntToken("{menuitemx}", (int)TOKEN_CMR_IT::menuitemx); + tokenContainer->DefineIntToken("{menuitemy}", (int)TOKEN_CMR_IT::menuitemy); + tokenContainer->DefineIntToken("{menuitemwidth}", (int)TOKEN_CMR_IT::menuitemwidth); + tokenContainer->DefineIntToken("{menuitemheight}", (int)TOKEN_CMR_IT::menuitemheight); + tokenContainer->DefineIntToken("{numitem}", (int)TOKEN_CMR_IT::numitem); + InheritTokenContainer(); } @@ -2057,7 +2169,7 @@ bool cCeMenuRecordings::Parse(bool forced) { tokenContainer->Clear(); SetListTokens(tokenContainer); bool isFolder = (total > 0) ? true : false; - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::folder, isFolder); + ADD_TOKEN_CMR_IT(folder, isFolder); string name = recording->Name() ? recording->Name() : ""; string buffer = ""; @@ -2103,8 +2215,8 @@ bool cCeMenuRecordings::Parse(bool forced) { } } - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::name, buffer.c_str()); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isnew, usedRecording->IsNew()); + ADD_TOKEN_CMR_ST(name, buffer.c_str()); + ADD_TOKEN_CMR_IT(isnew, usedRecording->IsNew()); int percSeen = 0; #if APIVERSNUM < 20108 @@ -2117,34 +2229,22 @@ bool cCeMenuRecordings::Parse(bool forced) { percSeen = (double)framesSeen / (double)framesTotal * 100; } #endif - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::percentseen, percSeen); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::newrecordingsfolder, New); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::numrecordingsfolder, total); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::cutted, usedRecording->IsEdited()); - int recDuration = usedRecording->LengthInSeconds(); - bool watched = false; - if (usedRecording->IsEdited()) { - if (percSeen >= 85) - watched = true; - } else { - int watchedLimit = recDuration * 85 / 100 - (Setup.MarginStop + 5)*60; - int watchedTime = percSeen * recDuration / 100; - if (watchedLimit > 0 && watchedTime > 0 && (watchedTime > watchedLimit)) - watched = true; - } - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::watched, watched); + // do the same stuff as in cLeMenuRecordings::Parse() (part 1) + int recDuration = usedRecording->LengthInSeconds(); \ + ADD_TOKEN_MR1(TOKEN_CMR_IT); + + const cEvent *event = NULL; \ + const cRecordingInfo *info = usedRecording->Info(); \ - const cEvent *event = NULL; - const cRecordingInfo *info = usedRecording->Info(); if (!info) return true; event = info->GetEvent(); if (!event) return true; if (info) { if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) { - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, info->ChannelName()); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, info->ChannelID().ToString()); + ADD_TOKEN_CMR_ST(recchannelname, info->ChannelName()); + ADD_TOKEN_CMR_ST(recchannelid, info->ChannelID().ToString()); } else { #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_CHANNELS_READ; @@ -2153,13 +2253,13 @@ bool cCeMenuRecordings::Parse(bool forced) { const cChannel *channel = Channels.GetByChannelID(info->ChannelID()); #endif if (channel) { - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelname, channel->Name()); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::recchannelid, *channel->GetChannelID().ToString()); + ADD_TOKEN_CMR_ST(recchannelname, channel->Name()); + ADD_TOKEN_CMR_ST(recchannelid, *channel->GetChannelID().ToString()); } } } - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::epgname, info->Title() ? info->Title() : buffer.c_str()); + ADD_TOKEN_CMR_ST(epgname, info->Title() ? info->Title() : buffer.c_str()); cString recDate = event->GetDateString(); cString recTime = event->GetTimeString(); if (strstr(*recDate, "1970")) { @@ -2168,34 +2268,8 @@ bool cCeMenuRecordings::Parse(bool forced) { recTime = TimeString(start); } - time_t startTime = event->StartTime(); - if (!startTime) - startTime = usedRecording->Start(); - struct tm * sStartTime = localtime(&startTime); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::year, sStartTime->tm_year + 1900); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::daynumeric, sStartTime->tm_mday); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::month, sStartTime->tm_mon+1); - - int duration = event->Duration() / 60; - recDuration = (recDuration>0)?(recDuration / 60):0; - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::date, *recDate); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::time, *recTime); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::duration, recDuration); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::durationhours, recDuration / 60); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::durationminutes, *cString::sprintf("%.2d", recDuration%60)); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::durationevent, duration); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::durationeventhours, duration / 60); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::durationeventminutes, *cString::sprintf("%.2d", duration%60)); - - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::shorttext, info->ShortText()); - tokenContainer->AddStringToken((int)eCeMenuRecordingsST::description, info->Description()); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::framesPerSecond, info->FramesPerSecond()); - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isHD, RecordingIsHD(event)); // detect HD from 'info' - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info' - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS - tokenContainer->AddIntToken((int)eCeMenuRecordingsIT::isRecording, usedRecording->IsInUse() & ruTimer); - - SetScraperRecordingPoster(tokenContainer, usedRecording, false); + // do the same stuff as in cLeMenuRecordings::Parse() (part 2) + ADD_TOKEN_MR2(TOKEN_CMR_IT, TOKEN_CMR_ST); return true; } @@ -2299,9 +2373,9 @@ cLeAudioTracks::~cLeAudioTracks(void) { void cLeAudioTracks::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{title}", (int)eLeDisplayTracksST::title); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeDisplayTracksIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeDisplayTracksIT::current); + tokenContainer->DefineStringToken("{title}", (int)TOKEN_LDT_ST::title); + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LDT_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LDT_IT::current); InheritTokenContainer(); } @@ -2317,9 +2391,9 @@ bool cLeAudioTracks::Parse(bool forced) { if (!dirty) return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeDisplayTracksIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeDisplayTracksIT::current, current); - tokenContainer->AddStringToken((int)eLeDisplayTracksST::title, text); + ADD_TOKEN_LDT_IT(nummenuitem, num); + ADD_TOKEN_LDT_IT(current, current); + ADD_TOKEN_LDT_ST(title, text); return true; } @@ -2339,20 +2413,20 @@ cLeChannelList::~cLeChannelList(void) { void cLeChannelList::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{name}", (int)eLeChannelListST::name); - tokenContainer->DefineStringToken("{channelid}", (int)eLeChannelListST::channelid); - tokenContainer->DefineStringToken("{presenteventtitle}", (int)eLeChannelListST::presenteventtitle); - tokenContainer->DefineStringToken("{presenteventstart}", (int)eLeChannelListST::presenteventstart); - tokenContainer->DefineStringToken("{presenteventstop}", (int)eLeChannelListST::presenteventstop); - tokenContainer->DefineStringToken("{nexteventtitle}", (int)eLeChannelListST::nexteventtitle); - tokenContainer->DefineStringToken("{nexteventstart}", (int)eLeChannelListST::nexteventstart); - tokenContainer->DefineStringToken("{nexteventstop}", (int)eLeChannelListST::nexteventstop); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeChannelListIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeChannelListIT::current); - tokenContainer->DefineIntToken("{number}", (int)eLeChannelListIT::number); - tokenContainer->DefineIntToken("{channellogoexists}", (int)eLeChannelListIT::channellogoexists); - tokenContainer->DefineIntToken("{presenteventelapsed}", (int)eLeChannelListIT::presenteventelapsed); - tokenContainer->DefineIntToken("{presenteventremaining}", (int)eLeChannelListIT::presenteventremaining); + tokenContainer->DefineStringToken("{name}", (int)TOKEN_LCL_ST::name); + tokenContainer->DefineStringToken("{channelid}", (int)TOKEN_LCL_ST::channelid); + tokenContainer->DefineStringToken("{presenteventtitle}", (int)TOKEN_LCL_ST::presenteventtitle); + tokenContainer->DefineStringToken("{presenteventstart}", (int)TOKEN_LCL_ST::presenteventstart); + tokenContainer->DefineStringToken("{presenteventstop}", (int)TOKEN_LCL_ST::presenteventstop); + tokenContainer->DefineStringToken("{nexteventtitle}", (int)TOKEN_LCL_ST::nexteventtitle); + tokenContainer->DefineStringToken("{nexteventstart}", (int)TOKEN_LCL_ST::nexteventstart); + tokenContainer->DefineStringToken("{nexteventstop}", (int)TOKEN_LCL_ST::nexteventstop); + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LCL_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LCL_IT::current); + tokenContainer->DefineIntToken("{number}", (int)TOKEN_LCL_IT::number); + tokenContainer->DefineIntToken("{channellogoexists}", (int)TOKEN_LCL_IT::channellogoexists); + tokenContainer->DefineIntToken("{presenteventelapsed}", (int)TOKEN_LCL_IT::presenteventelapsed); + tokenContainer->DefineIntToken("{presenteventremaining}", (int)TOKEN_LCL_IT::presenteventremaining); InheritTokenContainer(); } @@ -2367,13 +2441,13 @@ bool cLeChannelList::Parse(bool forced) { if (!dirty) return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeChannelListIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeChannelListIT::current, current); - tokenContainer->AddIntToken((int)eLeChannelListIT::number, channel->Number()); - tokenContainer->AddStringToken((int)eLeChannelListST::name, channel->Name()); + ADD_TOKEN_LCL_IT(nummenuitem, num); + ADD_TOKEN_LCL_IT(current, current); + ADD_TOKEN_LCL_IT(number, channel->Number()); + ADD_TOKEN_LCL_ST(name, channel->Name()); cString channelID = channel->GetChannelID().ToString(); - tokenContainer->AddStringToken((int)eLeChannelListST::channelid, *channelID); - tokenContainer->AddIntToken((int)eLeChannelListIT::channellogoexists, imgCache->LogoExists(*channelID)); + ADD_TOKEN_LCL_ST(channelid, *channelID); + ADD_TOKEN_LCL_IT(channellogoexists, imgCache->LogoExists(*channelID)); #if defined (APIVERSNUM) && (APIVERSNUM >= 20301) LOCK_SCHEDULES_READ; @@ -2386,19 +2460,19 @@ bool cLeChannelList::Parse(bool forced) { if (schedule) { const cEvent *presentEvent = schedule->GetPresentEvent(); if (presentEvent) { - tokenContainer->AddStringToken((int)eLeChannelListST::presenteventtitle, presentEvent->Title()); - tokenContainer->AddStringToken((int)eLeChannelListST::presenteventstart, *presentEvent->GetTimeString()); - tokenContainer->AddStringToken((int)eLeChannelListST::presenteventstop, *presentEvent->GetEndTimeString()); - tokenContainer->AddIntToken((int)eLeChannelListIT::presenteventelapsed, (time(0) - presentEvent->StartTime())/60); - tokenContainer->AddIntToken((int)eLeChannelListIT::presenteventremaining, presentEvent->Duration()/60 - (time(0) - presentEvent->StartTime())/60); + ADD_TOKEN_LCL_ST(presenteventtitle, presentEvent->Title()); + ADD_TOKEN_LCL_ST(presenteventstart, *presentEvent->GetTimeString()); + ADD_TOKEN_LCL_ST(presenteventstop, *presentEvent->GetEndTimeString()); + ADD_TOKEN_LCL_IT(presenteventelapsed, (time(0) - presentEvent->StartTime())/60); + ADD_TOKEN_LCL_IT(presenteventremaining, presentEvent->Duration()/60 - (time(0) - presentEvent->StartTime())/60); } const cList *events = schedule->Events(); if (events && presentEvent) { const cEvent *nextEvent = events->Next(presentEvent); if (nextEvent) { - tokenContainer->AddStringToken((int)eLeChannelListST::nexteventtitle, nextEvent->Title()); - tokenContainer->AddStringToken((int)eLeChannelListST::nexteventstart, *nextEvent->GetTimeString()); - tokenContainer->AddStringToken((int)eLeChannelListST::nexteventstop, *nextEvent->GetEndTimeString()); + ADD_TOKEN_LCL_ST(nexteventtitle, nextEvent->Title()); + ADD_TOKEN_LCL_ST(nexteventstart, *nextEvent->GetTimeString()); + ADD_TOKEN_LCL_ST(nexteventstop, *nextEvent->GetEndTimeString()); } } } @@ -2424,10 +2498,10 @@ cLeGroupList::~cLeGroupList(void) { void cLeGroupList::SetTokenContainer(void) { tokenContainer = new skindesignerapi::cTokenContainer(); - tokenContainer->DefineStringToken("{groupname}", (int)eLeGroupListST::groupname); - tokenContainer->DefineIntToken("{numchannels}", (int)eLeGroupListIT::numchannels); - tokenContainer->DefineIntToken("{nummenuitem}", (int)eLeGroupListIT::nummenuitem); - tokenContainer->DefineIntToken("{current}", (int)eLeGroupListIT::current); + tokenContainer->DefineStringToken("{groupname}", (int)TOKEN_LGL_ST::groupname); + tokenContainer->DefineIntToken("{numchannels}", (int)TOKEN_LGL_IT::numchannels); + tokenContainer->DefineIntToken("{nummenuitem}", (int)TOKEN_LGL_IT::nummenuitem); + tokenContainer->DefineIntToken("{current}", (int)TOKEN_LGL_IT::current); InheritTokenContainer(); } @@ -2443,9 +2517,11 @@ bool cLeGroupList::Parse(bool forced) { if (!dirty) return false; tokenContainer->Clear(); - tokenContainer->AddIntToken((int)eLeGroupListIT::nummenuitem, num); - tokenContainer->AddIntToken((int)eLeGroupListIT::current, current); - tokenContainer->AddIntToken((int)eLeGroupListIT::numchannels, numChannels); - tokenContainer->AddStringToken((int)eLeGroupListST::groupname, group); + ADD_TOKEN_LGL_IT(nummenuitem, num); + ADD_TOKEN_LGL_IT(current, current); + ADD_TOKEN_LGL_IT(numchannels, numChannels); + ADD_TOKEN_LGL_ST(groupname, group); return true; } + +// vim: ts=4 sw=4 et