summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Wieninger <cwieninger (at) gmx (dot) de>2008-02-21 19:38:34 +0100
committerChristian Wieninger <cwieninger (at) gmx (dot) de>2008-02-21 19:38:34 +0100
commit5ce71e1affd32470b2d8b6c46f18a1f9751289af (patch)
tree29ea7bdb8b086cd7ae3b4640ba27568494150364
parentea408d448aa65350c686a75d445450979fc8cd9e (diff)
downloadvdr-plugin-live-5ce71e1affd32470b2d8b6c46f18a1f9751289af.tar.gz
vdr-plugin-live-5ce71e1affd32470b2d8b6c46f18a1f9751289af.tar.bz2
timer conflict implementation moved to timerconflict.cpp/h
-rw-r--r--Makefile2
-rw-r--r--epgsearch.cpp61
-rw-r--r--epgsearch.h52
-rw-r--r--pages/timerconflicts.ecpp2
-rw-r--r--timerconflict.cpp84
-rw-r--r--timerconflict.h67
6 files changed, 154 insertions, 114 deletions
diff --git a/Makefile b/Makefile
index d3bfa06..21d26e5 100644
--- a/Makefile
+++ b/Makefile
@@ -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
+