diff options
Diffstat (limited to 'epgsearch.cpp')
-rw-r--r-- | epgsearch.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/epgsearch.cpp b/epgsearch.cpp index d22c636..5a91c28 100644 --- a/epgsearch.cpp +++ b/epgsearch.cpp @@ -641,4 +641,63 @@ bool EPGSearchSetupValues::WriteValue(const std::string& entry, const std::strin return service.handler->WriteSetupValue(entry, value); } +bool operator<( TimerConflict const& left, TimerConflict const& right ) +{ + return left.conflictTime < right.conflictTime; +} + +TimerConflict::TimerConflict() +{ + Init(); +} + +void TimerConflict::Init() +{ + conflictTime = 0; +} + +TimerConflict::TimerConflict( string const& data ) +{ + Init(); + vector< string > parts = StringSplit( data, ':' ); + try { + vector< string >::const_iterator part = parts.begin(); + if (parts.size() > 0) { + conflictTime = lexical_cast< time_t >( *part++ ); + for ( int i = 1; part != parts.end(); ++i, ++part ) { + vector< string > timerparts = StringSplit( *part, '|' ); + vector< string >::const_iterator timerpart = timerparts.begin(); + TimerInConflict timer; + for ( int j = 0; timerpart != timerparts.end(); ++j, ++timerpart ) + switch(j) { + case 0: timer.timerIndex = lexical_cast< int >( *timerpart ); break; + case 1: timer.percentage = lexical_cast< int >( *timerpart ); break; + case 2: + { + vector< string > conctimerparts = StringSplit( *timerpart, '#' ); + vector< string >::const_iterator conctimerpart = conctimerparts.begin(); + for ( int k = 0; conctimerpart != conctimerparts.end(); ++k, ++conctimerpart ) + timer.concurrentTimerIndices.push_back(lexical_cast< int >( *conctimerpart )); + break; + } + } + conflictingTimers.push_back(timer); + } + } + } + catch ( bad_lexical_cast const& ex ) { + } +} + +TimerConflicts::TimerConflicts() +{ + Epgsearch_services_v1_0 service; + if ( !CheckEpgsearchVersion() || cPluginManager::CallFirstService(ServiceInterface, &service) == 0 ) + throw HtmlError( tr("EPGSearch version outdated! Please update.") ); + + list< string > conflicts = service.handler->TimerConflictList(); + m_conflicts.assign( conflicts.begin(), conflicts.end() ); + m_conflicts.sort(); +} + } // namespace vdrlive |