diff options
author | Sascha Volkenandt <sascha (at) akv-soft (dot) de> | 2007-01-25 19:25:02 +0000 |
---|---|---|
committer | Sascha Volkenandt <sascha (at) akv-soft (dot) de> | 2007-01-25 19:25:02 +0000 |
commit | a92d514b4eda6e7d0db7b66c0af8c6b37e11ec4b (patch) | |
tree | e9bab7614d6859cf978d1d6001109026eb3f714f /epgsearch.cpp | |
parent | 6106c18ada0b6a0fa33ca6958b756b5acf5fcde3 (diff) | |
download | vdr-plugin-live-a92d514b4eda6e7d0db7b66c0af8c6b37e11ec4b.tar.gz vdr-plugin-live-a92d514b4eda6e7d0db7b66c0af8c6b37e11ec4b.tar.bz2 |
- added helper class for epgsearch services
Diffstat (limited to 'epgsearch.cpp')
-rw-r--r-- | epgsearch.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/epgsearch.cpp b/epgsearch.cpp new file mode 100644 index 0000000..1816574 --- /dev/null +++ b/epgsearch.cpp @@ -0,0 +1,97 @@ +#include <vector> +#include <vdr/plugin.h> +#include "epgsearch/services.h" +#include "epgsearch.h" +#include "exception.h" +#include "tools.h" + +namespace vdrlive { + +using namespace std; + +bool operator<( SearchTimer const& left, SearchTimer const& right ) +{ + return left.m_id < right.m_id; +} + +SearchTimer::SearchTimer( string const& data ): + m_id( 0 ), + m_useTime( false ), + m_startTime( 0 ), + m_stopTime( 0 ), + m_useChannel( NoChannel ), + m_useCase( false ), + m_mode( 0 ), + m_useTitle( false ), + m_useSubtitle( false ), + m_useDescription( false ), + m_useDuration( false ), + m_minDuration( 0 ), + m_maxDuration( 0 ), + m_useAsSearchTimer( false ), + m_useDayOfWeek( false ), + m_dayOfWeek( 0 ), + m_useEpisode( false ), + m_priority( 0 ), + m_lifetime( 0 ) +{ + vector< string > parts = StringSplit( data, ':' ); + try { + vector< string >::const_iterator part = parts.begin(); + for ( int i = 0; part != parts.end(); ++i, ++part ) { + switch ( i ) { + case 0: m_id = lexical_cast< int >( *part ); break; + case 1: m_search = StringReplace( StringReplace( *part, "|", ":" ), "!^pipe^!", "|" ); break; + case 2: m_useTime = lexical_cast< bool >( *part ); break; + case 3: if ( m_useTime ) m_startTime = lexical_cast< int >( *part ); break; + case 4: if ( m_useTime ) m_stopTime = lexical_cast< int >( *part ); break; + case 5: m_useChannel = lexical_cast< int >( *part ); break; + case 6: ParseChannel( *part ); break; + case 7: m_useCase = lexical_cast< int >( *part ); break; + case 8: m_mode = lexical_cast< int >( *part ); break; + case 9: m_useTitle = lexical_cast< bool >( *part ); break; + case 10: m_useSubtitle = lexical_cast< bool >( *part ); break; + case 11: m_useDescription = lexical_cast< bool >( *part ); break; + case 12: m_useDuration = lexical_cast< bool >( *part ); break; + case 13: if ( m_useDuration ) m_minDuration = lexical_cast< int >( *part ); break; + case 14: if ( m_useDuration ) m_maxDuration = lexical_cast< int >( *part ); break; + case 15: m_useAsSearchTimer = lexical_cast< bool >( *part ); break; + case 16: m_useDayOfWeek = lexical_cast< bool >( *part ); break; + case 17: m_dayOfWeek = lexical_cast< int >( *part ); break; + case 18: m_useEpisode = lexical_cast< bool >( *part ); break; + case 19: m_directory = *part; break; + case 20: m_priority = lexical_cast< int >( *part ); break; + case 21: m_lifetime = lexical_cast< int >( *part ); break; + } + } + } catch ( bad_lexical_cast const& ex ) { + } +} + +void SearchTimer::ParseChannel( string const& data ) +{ + switch ( m_useChannel ) { + case Interval: ParseChannelIDs( data ); break; + case Group: m_channelGroup = data; break; + } +} + +void SearchTimer::ParseChannelIDs( string const& data ) +{ + vector< string > parts = StringSplit( data, '|' ); + m_channelMin = lexical_cast< tChannelID >( parts[ 0 ] ); + if ( parts.size() == 2 ) + m_channelMax = lexical_cast< tChannelID >( parts[ 1 ] ); +} + +SearchTimers::SearchTimers() +{ + Epgsearch_services_v1_0 service; + if ( cPluginManager::CallFirstService("Epgsearch-services-v1.0", &service) == 0 ) + throw HtmlError( tr("No searchtimers available") ); + + list< string > timers = service.handler->SearchTimerList(); + m_timers.assign( timers.begin(), timers.end() ); +} + +} // namespace vdrlive |