From c721bad2e8ad6acc2d9fceeb075725d73aeb40f5 Mon Sep 17 00:00:00 2001 From: Dieter Hametner Date: Sat, 6 Jan 2007 12:21:05 +0000 Subject: fix typo in recordings_item. Further enhancments --- pages/recordings.ecpp | 4 +++- pages/recordings_item.ecpp | 23 ++++++++++++++++++++--- recordings.cpp | 43 +++++++++++++++++++++++++++++++++++++------ recordings.h | 15 +++++++-------- 4 files changed, 67 insertions(+), 18 deletions(-) diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp index 6a3a8cf..d056f15 100644 --- a/pages/recordings.ecpp +++ b/pages/recordings.ecpp @@ -38,8 +38,10 @@ using namespace vdrlive; % RecordingsTree recordingsTree; +% std::string pathArg("Filme"); +% esyslog("DH: calling component: %s with arg %s", "recordings_item", pathArg.c_str());
-<& recordings_item &> +<& recordings_item path=("Serien") path=("Familie Heinz Becker") &>
% } diff --git a/pages/recordings_item.ecpp b/pages/recordings_item.ecpp index bb96d53..f8eb24c 100644 --- a/pages/recordings_item.ecpp +++ b/pages/recordings_item.ecpp @@ -6,19 +6,25 @@ using namespace vdrlive; <%args> +path[]; diff --git a/recordings.cpp b/recordings.cpp index 8290f80..3eaef45 100644 --- a/recordings.cpp +++ b/recordings.cpp @@ -40,8 +40,9 @@ namespace vdrlive { level++; } else { - RecordingsItemPtr recPtr (new RecordingsItemRec(recording)); - dir->m_entries[name] = recPtr; + string dirName(name.substr(index, name.length() - index)); + RecordingsItemPtr recPtr (new RecordingsItemRec(dirName, recording)); + dir->m_entries[dirName] = recPtr; } } while (pos != string::npos); } @@ -58,7 +59,36 @@ namespace vdrlive { globalInstance = 0; } - RecordingsTree::RecordingsItem::RecordingsItem() : + RecordingsTree::Map::iterator RecordingsTree::begin(const vector< string >& path) + { + if (path.empty()) { + return m_root->m_entries.begin(); + } + + RecordingsItemPtr recItem = m_root; + for (vector< string >::const_iterator i = path.begin(); i != path.end(); ++i) + { + recItem = recItem->m_entries[*i]; + } + return recItem->m_entries.begin(); + } + + RecordingsTree::Map::iterator RecordingsTree::end(const vector< string >&path) + { + if (path.empty()) { + return m_root->m_entries.end(); + } + + RecordingsItemPtr recItem = m_root; + for (vector< string >::const_iterator i = path.begin(); i != path.end(); ++i) + { + recItem = recItem->m_entries[*i]; + } + return recItem->m_entries.end(); + } + + RecordingsTree::RecordingsItem::RecordingsItem(const string& name) : + m_name(name), m_entries() { } @@ -68,7 +98,7 @@ namespace vdrlive { } RecordingsTree::RecordingsItemDir::RecordingsItemDir() : - m_name(), + RecordingsItem(""), m_level(0) { } @@ -78,12 +108,13 @@ namespace vdrlive { } RecordingsTree::RecordingsItemDir::RecordingsItemDir(const string& name, int level) : - m_name(name), + RecordingsItem(name), m_level(level) { } - RecordingsTree::RecordingsItemRec::RecordingsItemRec(cRecording* recording) : + RecordingsTree::RecordingsItemRec::RecordingsItemRec(const string& name, cRecording* recording) : + RecordingsItem(name), m_recording(recording) { } diff --git a/recordings.h b/recordings.h index 748b832..78041f3 100644 --- a/recordings.h +++ b/recordings.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -31,12 +32,13 @@ namespace vdrlive { virtual time_t StartTime() const = 0; virtual bool IsDir() const = 0; - virtual const char* Name() const = 0; + virtual const string& Name() const { return m_name; } protected: - RecordingsItem(); + RecordingsItem(const string& name); private: + string m_name; Map m_entries; }; @@ -50,23 +52,20 @@ namespace vdrlive { virtual time_t StartTime() const { return 0; } virtual bool IsDir() const { return true; } - virtual const char* Name() const { return m_name.c_str(); } private: - string m_name; int m_level; }; class RecordingsItemRec : public RecordingsItem { public: - RecordingsItemRec(cRecording* recording); + RecordingsItemRec(const string& name, cRecording* recording); virtual ~RecordingsItemRec(); virtual time_t StartTime() const; virtual bool IsDir() const { return false; } - virtual const char* Name() const { return m_recording->Name(); } private: cRecording *m_recording; @@ -76,8 +75,8 @@ namespace vdrlive { virtual ~RecordingsTree(); - Map::iterator begin() { return m_root->m_entries.begin(); } - Map::iterator end() { return m_root->m_entries.end(); } + Map::iterator begin(const vector< string >& path); + Map::iterator end(const vector< string >&path); int MaxLevel() const { return m_maxLevel; } -- cgit v1.2.3