diff options
author | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2007-04-22 18:40:22 +0000 |
---|---|---|
committer | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2007-04-22 18:40:22 +0000 |
commit | 8c1dc4e20b9d131f5382f756738dbde49f740184 (patch) | |
tree | 6cf5d99c954dffd349eba6b71d200ac16c2d24d8 | |
parent | a2f99769cf849c79569359a41a66f4877bb233b8 (diff) | |
download | vdr-plugin-live-8c1dc4e20b9d131f5382f756738dbde49f740184.tar.gz vdr-plugin-live-8c1dc4e20b9d131f5382f756738dbde49f740184.tar.bz2 |
- added helper classes for searchresults
-rw-r--r-- | epgsearch.cpp | 35 | ||||
-rw-r--r-- | epgsearch.h | 52 |
2 files changed, 87 insertions, 0 deletions
diff --git a/epgsearch.cpp b/epgsearch.cpp index ff9a07f..d0a886d 100644 --- a/epgsearch.cpp +++ b/epgsearch.cpp @@ -432,4 +432,39 @@ Blacklists::Blacklists() m_list.sort(); } +SearchResult::SearchResult( string const& data ) +{ + 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_searchId = lexical_cast< int >( *part ); break; + case 1: m_eventId = lexical_cast< u_int32_t >( *part ); break; + case 2: m_title = *part; break; + case 3: m_shorttext = *part; break; + case 4: m_starttime = lexical_cast< unsigned long >( *part ); break; + case 5: m_stoptime = lexical_cast< unsigned long >( *part ); break; + case 6: m_channel = lexical_cast< tChannelID >( *part ); break; + case 7: m_timerstart = lexical_cast< unsigned long >( *part ); break; + case 8: m_timerstop = lexical_cast< unsigned long >( *part ); break; + case 9: m_file = *part; break; + case 10: m_timerMode = lexical_cast< int >( *part ); break; + } + } + } catch ( bad_lexical_cast const& ex ) { + } +} + +SearchResults::SearchResults(int id) +{ + Epgsearch_services_v1_0 service; + if ( cPluginManager::CallFirstService("Epgsearch-services-v1.0", &service) == 0 ) + throw HtmlError( tr("No searchtimers available") ); + + list< string > list = service.handler->QuerySearchTimer(id); + m_list.assign( list.begin(), list.end() ); + m_list.sort(); +} + } // namespace vdrlive diff --git a/epgsearch.h b/epgsearch.h index 0b80ecb..75956a0 100644 --- a/epgsearch.h +++ b/epgsearch.h @@ -5,6 +5,7 @@ #include <list> #include <string> #include <vdr/channels.h> +#include <vdr/epg.h> namespace vdrlive { @@ -298,6 +299,57 @@ private: blacklist m_list; }; +class SearchResult +{ +public: + SearchResult( std::string const& data ); + + int SearchId() const { return m_searchId; } + tEventID EventId() const { return m_eventId; } + std::string const& Title() const { return m_title; } + std::string const& ShortText() const { return m_shorttext; } + time_t StartTime() const { return m_starttime; } + time_t StopTime() const { return m_stoptime; } + tChannelID Channel() const { return m_channel; } + time_t TimerStartTime() const { return m_timerstart; } + time_t TimerStopTime() const { return m_timerstop; } + int TimerMode() const { return m_timerMode; } + bool operator<( SearchResult const& other ) const { return m_starttime < other.m_starttime; } + +private: + int m_searchId; + tEventID m_eventId; + std::string m_title; + std::string m_shorttext; + time_t m_starttime; + time_t m_stoptime; + tChannelID m_channel; + time_t m_timerstart; + time_t m_timerstop; + std::string m_file; + int m_timerMode; +}; + +class SearchResults +{ +public: + typedef std::list< SearchResult > searchresults; + typedef searchresults::size_type size_type; + typedef searchresults::iterator iterator; + typedef searchresults::const_iterator const_iterator; + + SearchResults(int searchId); + + size_type size() const { return m_list.size(); } + + iterator begin() { return m_list.begin(); } + const_iterator begin() const { return m_list.begin(); } + iterator end() { return m_list.end(); } + const_iterator end() const { return m_list.end(); } +private: + searchresults m_list; +}; + } // namespace vdrlive |