diff options
author | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2008-02-21 19:38:34 +0100 |
---|---|---|
committer | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2008-02-21 19:38:34 +0100 |
commit | 5ce71e1affd32470b2d8b6c46f18a1f9751289af (patch) | |
tree | 29ea7bdb8b086cd7ae3b4640ba27568494150364 | |
parent | ea408d448aa65350c686a75d445450979fc8cd9e (diff) | |
download | vdr-plugin-live-5ce71e1affd32470b2d8b6c46f18a1f9751289af.tar.gz vdr-plugin-live-5ce71e1affd32470b2d8b6c46f18a1f9751289af.tar.bz2 |
timer conflict implementation moved to timerconflict.cpp/h
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | epgsearch.cpp | 61 | ||||
-rw-r--r-- | epgsearch.h | 52 | ||||
-rw-r--r-- | pages/timerconflicts.ecpp | 2 | ||||
-rw-r--r-- | timerconflict.cpp | 84 | ||||
-rw-r--r-- | timerconflict.h | 67 |
6 files changed, 154 insertions, 114 deletions
@@ -73,7 +73,7 @@ VERSIONSUFFIX = gen_version_suffix.h PLUGINOBJS = $(PLUGIN).o thread.o tntconfig.o setup.o i18n.o timers.o \ tools.o recman.o tasks.o status.o epg_events.o epgsearch.o \ - grab.o md5.o filecache.o livefeatures.o preload.o + grab.o md5.o filecache.o livefeatures.o preload.o timerconflict.o WEBLIBS = pages/libpages.a css/libcss.a javascript/libjavascript.a diff --git a/epgsearch.cpp b/epgsearch.cpp index 5a91c28..de0d63b 100644 --- a/epgsearch.cpp +++ b/epgsearch.cpp @@ -13,7 +13,7 @@ namespace vdrlive { using namespace std; -char ServiceInterface[] = "Epgsearch-services-v1.0"; +static char ServiceInterface[] = "Epgsearch-services-v1.0"; bool operator<( SearchTimer const& left, SearchTimer const& right ) { @@ -641,63 +641,4 @@ 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 diff --git a/epgsearch.h b/epgsearch.h index 39d3837..39ee564 100644 --- a/epgsearch.h +++ b/epgsearch.h @@ -411,58 +411,6 @@ public: static bool WriteValue(const std::string& entry, const std::string& value); }; -// classes for timer conflict interface - -// conflicting timer -class TimerInConflict -{ -public: - int timerIndex; // it's index in VDR - int percentage; // percentage of recording - std::list<int> concurrentTimerIndices; // concurrent timer indices - - TimerInConflict(int TimerIndex=-1, int Percentage=0) : timerIndex(TimerIndex), percentage(Percentage) {} -}; - -class TimerConflict; - -bool operator<( TimerConflict const& left, TimerConflict const& right ); - -// one timer conflict time -class TimerConflict -{ - time_t conflictTime; // time of conflict - std::list< TimerInConflict > conflictingTimers; // conflicting timers at this time -public: - friend bool operator<( TimerConflict const& left, TimerConflict const& right ); - - TimerConflict( std::string const& data ); - TimerConflict(); - void Init(); - - time_t ConflictTime() { return conflictTime; } - const std::list< TimerInConflict >& ConflictingTimers() { return conflictingTimers; } -}; - -class TimerConflicts -{ -public: - typedef std::list< TimerConflict > ConflictList; - typedef ConflictList::size_type size_type; - typedef ConflictList::iterator iterator; - typedef ConflictList::const_iterator const_iterator; - - TimerConflicts(); - - size_type size() const { return m_conflicts.size(); } - iterator begin() { return m_conflicts.begin(); } - const_iterator begin() const { return m_conflicts.begin(); } - iterator end() { return m_conflicts.end(); } - const_iterator end() const { return m_conflicts.end(); } -private: - ConflictList m_conflicts; -}; - } // namespace vdrlive diff --git a/pages/timerconflicts.ecpp b/pages/timerconflicts.ecpp index fe59561..07d6ac0 100644 --- a/pages/timerconflicts.ecpp +++ b/pages/timerconflicts.ecpp @@ -1,7 +1,7 @@ <%pre> #include <vdr/channels.h> #include <vdr/i18n.h> -#include "epgsearch.h" +#include "timerconflict.h" #include "tools.h" #include "setup.h" #include "epg_events.h" diff --git a/timerconflict.cpp b/timerconflict.cpp new file mode 100644 index 0000000..9f0f8af --- /dev/null +++ b/timerconflict.cpp @@ -0,0 +1,84 @@ +#include <vector> +#include "timerconflict.h" +#include "tools.h" +#include "epgsearch/services.h" +#include "exception.h" +#include "epgsearch.h" +#include <vdr/plugin.h> + +namespace vdrlive { + +bool CheckEpgsearchVersion(); + +using namespace std; + +static char ServiceInterface[] = "Epgsearch-services-v1.0"; + +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(); +} + +bool TimerConflicts::CheckAdvised() +{ + Epgsearch_services_v1_0 service; + if ( !CheckEpgsearchVersion() || cPluginManager::CallFirstService(ServiceInterface, &service) == 0 ) + throw HtmlError( tr("EPGSearch version outdated! Please update.") ); + return service.handler->IsConflictCheckAdvised(); +} + +} // namespace vdrlive diff --git a/timerconflict.h b/timerconflict.h new file mode 100644 index 0000000..e6c2744 --- /dev/null +++ b/timerconflict.h @@ -0,0 +1,67 @@ +#ifndef VDR_LIVE_TIMERCONFLICT_H +#define VDR_LIVE_TIMERCONFLICT_H + +#include <list> + +namespace vdrlive { + +// classes for timer conflict interface + +// conflicting timer +class TimerInConflict +{ +public: + int timerIndex; // it's index in VDR + int percentage; // percentage of recording + std::list<int> concurrentTimerIndices; // concurrent timer indices + + TimerInConflict(int TimerIndex=-1, int Percentage=0) : timerIndex(TimerIndex), percentage(Percentage) {} +}; + +class TimerConflict; + +bool operator<( TimerConflict const& left, TimerConflict const& right ); + +// one timer conflict time +class TimerConflict +{ + time_t conflictTime; // time of conflict + std::list< TimerInConflict > conflictingTimers; // conflicting timers at this time +public: + friend bool operator<( TimerConflict const& left, TimerConflict const& right ); + + TimerConflict( std::string const& data ); + TimerConflict(); + void Init(); + + time_t ConflictTime() { return conflictTime; } + const std::list< TimerInConflict >& ConflictingTimers() { return conflictingTimers; } +}; + +class TimerConflicts +{ +public: + typedef std::list< TimerConflict > ConflictList; + typedef ConflictList::size_type size_type; + typedef ConflictList::iterator iterator; + typedef ConflictList::const_iterator const_iterator; + + TimerConflicts(); + + size_type size() const { return m_conflicts.size(); } + iterator begin() { return m_conflicts.begin(); } + const_iterator begin() const { return m_conflicts.begin(); } + iterator end() { return m_conflicts.end(); } + const_iterator end() const { return m_conflicts.end(); } + + bool CheckAdvised(); +private: + ConflictList m_conflicts; +}; + +} + + // namespace vdrlive + +#endif // VDR_LIVE_TIMERCONFLICT_H + |