diff options
author | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2007-01-06 02:24:11 +0000 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2007-01-06 02:24:11 +0000 |
commit | 8f9342e733730ac36f296140367e7b6b21d941c6 (patch) | |
tree | 5050953f2d5e3f0a6b97fa1918a1b71061f3cbec | |
parent | a92938f1dfcaf9b3be3258e46ab984c863153d58 (diff) | |
download | vdr-plugin-live-8f9342e733730ac36f296140367e7b6b21d941c6.tar.gz vdr-plugin-live-8f9342e733730ac36f296140367e7b6b21d941c6.tar.bz2 |
added recordings_items.ecpp; Updated html structure for recordings
-rw-r--r-- | .cvsignore | 1 | ||||
-rw-r--r-- | httpd/.cvsignore | 1 | ||||
-rw-r--r-- | pages/Makefile | 3 | ||||
-rw-r--r-- | pages/recordings.ecpp | 36 | ||||
-rw-r--r-- | pages/recordings_item.ecpp | 34 | ||||
-rw-r--r-- | recordings.cpp | 22 | ||||
-rw-r--r-- | recordings.h | 11 |
7 files changed, 75 insertions, 33 deletions
@@ -1,4 +1,5 @@ .git .gitignore .libs +.dependencies debian
\ No newline at end of file diff --git a/httpd/.cvsignore b/httpd/.cvsignore new file mode 100644 index 0000000..42864ae --- /dev/null +++ b/httpd/.cvsignore @@ -0,0 +1 @@ +.dependencies diff --git a/pages/Makefile b/pages/Makefile index 246a6c5..5c96adc 100644 --- a/pages/Makefile +++ b/pages/Makefile @@ -17,7 +17,8 @@ VDRDIR ?= ../../../.. OBJS = menu.o event_widget.o channels.o recordings.o schedule.o \ screenshot.o timers.o whats_on_now.o whats_on_next.o \ - keypress.o remote.o channels_widget.o edit_timer.o + keypress.o remote.o channels_widget.o edit_timer.o \ + recordings_item.o ### Default rules: diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp index ea5c02b..6a3a8cf 100644 --- a/pages/recordings.ecpp +++ b/pages/recordings.ecpp @@ -11,8 +11,6 @@ using namespace vdrlive; <%args> </%args> <{ - - }> <html> <head> @@ -22,7 +20,7 @@ using namespace vdrlive; <body> <div class="left_area"> <img src="logo.png" alt="VDR Live!" border="0" /> -<& menu > +<& menu &> </div> <div class="inhalt"> <div class="head_box"> @@ -36,38 +34,14 @@ using namespace vdrlive; <td class="head"><$ tr("Structure") $></td> <td class="head"><$ tr("Date") $></td> <td class="head"><$ tr("Time") $></td> - <td class="head"><$ tr("Levels") $></td> <td class="head"><$ tr("Name") $></td> </tr> + </table> % RecordingsTree recordingsTree; <div class="recordings"> - <ul> -<{ - bool active = false; - RecordingsTree::Map::iterator iter; - for (iter = recordingsTree.begin(); iter != recordingsTree.end(); iter++) { - RecordingsTree::RecordingsItemPtr recItem = iter->second; - active = !active; -}> - <table class="recording" cellspacing="0" cellpadding="0"> - <tr class="<? active ? "active" ?>"> - <td> </td> -% if (recItem->IsDir()) { - <td><$ recItem->StartTime() $></td> - <td><$ recItem->StartTime() $></td> -% } else { - <td> </td> - <td><$ FormatDateTime(tr("%a, %b %d"), recItem->StartTime()) $></td> - <td><$ FormatDateTime(tr("%I:%M %p"), recItem->StartTime()) $></td> -% } - <td><$ recItem->Name() $></td> - </tr> - </table> -<{ - } - } -}> - </table> +<& recordings_item &> + </div> +% } </div> </body> </html> diff --git a/pages/recordings_item.ecpp b/pages/recordings_item.ecpp new file mode 100644 index 0000000..bb96d53 --- /dev/null +++ b/pages/recordings_item.ecpp @@ -0,0 +1,34 @@ +<%pre> +#include "recordings.h" +#include "tools.h" + +using namespace vdrlive; + +</%pre> +<%args> +</%args> +<ul class="recordingslist"> +<{ +RecordingsTree& recordingsTree = LiveRecordingsTree(); +bool active = false; +RecordingsTree::Map::iterator iter; +for (iter = recordingsTree.begin(); iter != recordingsTree.end(); iter++) { + RecordingsTree::RecordingsItemPtr recItem = iter->second; + active = !active; +}> + <li class="recording <? active ? "active" ?>"> +% if (recItem->IsDir()) { + <span class="recordingexpand"></span> + <span class="recordingdate"><$ recItem->StartTime() $></span> + <span class="recordingtime"><$ recItem->StartTime() $></span> +% } else { + <span class="recordingexpand">FileIcon</span> + <span class="recordingdate"><$ FormatDateTime(tr("%a, %b %d"), recItem->StartTime()) $></span> + <span class="recordingtime"><$ FormatDateTime(tr("%I:%M %p"), recItem->StartTime()) $></span> +% } + <span class="recordingname"><$ recItem->Name() $></span> + </li> +<( +} +}> +</ul> diff --git a/recordings.cpp b/recordings.cpp index 08dd4cc..8290f80 100644 --- a/recordings.cpp +++ b/recordings.cpp @@ -4,12 +4,18 @@ namespace vdrlive { + RecordingsTree::RecordingsTree* RecordingsTree::globalInstance = 0; + RecordingsTree::RecordingsTree() : m_maxLevel(0), m_root(new RecordingsItemDir()), m_recordingsLock(&Recordings) { + if (globalInstance != 0) { + // TODO: report ERROR and fail. + } + for ( cRecording* recording = Recordings.First(); recording != 0; recording = Recordings.Next( recording ) ) { if (m_maxLevel < recording->HierarchyLevels()) { m_maxLevel = recording->HierarchyLevels(); @@ -39,10 +45,17 @@ namespace vdrlive { } } while (pos != string::npos); } + + globalInstance = this; } RecordingsTree::~RecordingsTree() { + if (globalInstance != this) + { + // TODO: report ERROR and fail + } + globalInstance = 0; } RecordingsTree::RecordingsItem::RecordingsItem() : @@ -84,4 +97,13 @@ namespace vdrlive { return m_recording->start; } + RecordingsTree& LiveRecordingsTree() + { + if (RecordingsTree::globalInstance == 0) + { + // TODO: report ERROR and fail! + } + return *RecordingsTree::globalInstance; + } + } // namespace vdrlive diff --git a/recordings.h b/recordings.h index d350bbd..748b832 100644 --- a/recordings.h +++ b/recordings.h @@ -13,6 +13,8 @@ namespace vdrlive { class RecordingsTree { + friend RecordingsTree& LiveRecordingsTree(); + public: class RecordingsItem; @@ -26,6 +28,7 @@ namespace vdrlive { public: virtual ~RecordingsItem(); + virtual time_t StartTime() const = 0; virtual bool IsDir() const = 0; virtual const char* Name() const = 0; @@ -41,9 +44,10 @@ namespace vdrlive { { public: RecordingsItemDir(); - virtual ~RecordingsItemDir(); RecordingsItemDir(const string& name, int level); + virtual ~RecordingsItemDir(); + virtual time_t StartTime() const { return 0; } virtual bool IsDir() const { return true; } virtual const char* Name() const { return m_name.c_str(); } @@ -57,6 +61,7 @@ namespace vdrlive { { public: RecordingsItemRec(cRecording* recording); + virtual ~RecordingsItemRec(); virtual time_t StartTime() const; @@ -68,6 +73,7 @@ namespace vdrlive { }; RecordingsTree(); + virtual ~RecordingsTree(); Map::iterator begin() { return m_root->m_entries.begin(); } @@ -79,8 +85,11 @@ namespace vdrlive { int m_maxLevel; RecordingsItemPtr m_root; cThreadLock m_recordingsLock; + + static RecordingsTree* globalInstance; }; + RecordingsTree& LiveRecordingsTree(); } // namespace vdrlive #endif // VDR_LIVE_RECORDINGS_H |