summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Wieninger <cwieninger (at) gmx (dot) de>2007-04-22 18:40:22 +0000
committerChristian Wieninger <cwieninger (at) gmx (dot) de>2007-04-22 18:40:22 +0000
commit8c1dc4e20b9d131f5382f756738dbde49f740184 (patch)
tree6cf5d99c954dffd349eba6b71d200ac16c2d24d8
parenta2f99769cf849c79569359a41a66f4877bb233b8 (diff)
downloadvdr-plugin-live-8c1dc4e20b9d131f5382f756738dbde49f740184.tar.gz
vdr-plugin-live-8c1dc4e20b9d131f5382f756738dbde49f740184.tar.bz2
- added helper classes for searchresults
-rw-r--r--epgsearch.cpp35
-rw-r--r--epgsearch.h52
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