summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-01-06 12:21:05 +0000
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-01-06 12:21:05 +0000
commitc721bad2e8ad6acc2d9fceeb075725d73aeb40f5 (patch)
treeffe074377078155b6c5086f48a6de3352b0c29ea
parent8f9342e733730ac36f296140367e7b6b21d941c6 (diff)
downloadvdr-plugin-live-c721bad2e8ad6acc2d9fceeb075725d73aeb40f5.tar.gz
vdr-plugin-live-c721bad2e8ad6acc2d9fceeb075725d73aeb40f5.tar.bz2
fix typo in recordings_item. Further enhancments
-rw-r--r--pages/recordings.ecpp4
-rw-r--r--pages/recordings_item.ecpp23
-rw-r--r--recordings.cpp43
-rw-r--r--recordings.h15
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;
</tr>
</table>
% RecordingsTree recordingsTree;
+% std::string pathArg("Filme");
+% esyslog("DH: calling component: %s with arg %s", "recordings_item", pathArg.c_str());
<div class="recordings">
-<& recordings_item &>
+<& recordings_item path=("Serien") path=("Familie Heinz Becker") &>
</div>
% }
</div>
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;
</%pre>
<%args>
+path[];
</%args>
<ul class="recordingslist">
<{
+esyslog("DH: in component 'recordings_item' path elements are:");
+for (path_type::const_iterator i = path.begin(); i != path.end(); ++i) {
+ esyslog("DH: %s", (*i).c_str());
+}
RecordingsTree& recordingsTree = LiveRecordingsTree();
bool active = false;
RecordingsTree::Map::iterator iter;
-for (iter = recordingsTree.begin(); iter != recordingsTree.end(); iter++) {
+RecordingsTree::Map::iterator end = recordingsTree.end(path);
+for (iter = recordingsTree.begin(path); iter != end; iter++) {
RecordingsTree::RecordingsItemPtr recItem = iter->second;
active = !active;
}>
<li class="recording <? active ? "active" ?>">
% if (recItem->IsDir()) {
- <span class="recordingexpand"></span>
+ <span class="recordingexpand">DirIcon</span>
<span class="recordingdate"><$ recItem->StartTime() $></span>
<span class="recordingtime"><$ recItem->StartTime() $></span>
% } else {
@@ -27,8 +33,19 @@ for (iter = recordingsTree.begin(); iter != recordingsTree.end(); iter++) {
<span class="recordingtime"><$ FormatDateTime(tr("%I:%M %p"), recItem->StartTime()) $></span>
% }
<span class="recordingname"><$ recItem->Name() $></span>
+<{
+ if (recItem->IsDir()) {
+ std::string pathArg;
+ for (path_type::const_iterator i = path.begin(); i != path.end(); ++i) {
+ pathArg += "path=(" + *i + ") ";
+ }
+ string name(recItem->Name());
+ pathArg += "path=(" + name + ") ";
+}>
+ <span class="recordingtest"><$ pathArg $></span>
+% }
</li>
-<(
+<{
}
}>
</ul>
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 <ctime>
#include <map>
+#include <vector>
#include <boost/shared_ptr.hpp>
#include <vdr/recording.h>
@@ -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; }