diff options
author | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2008-01-25 01:09:49 +0100 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2008-01-25 01:09:49 +0100 |
commit | 5c5da204386e7a63ed4fac1d458dd10a120470e0 (patch) | |
tree | deb3e5f385ddeee6c1746714859fb1de09177299 /recman.cpp | |
parent | e2496312144175ba6fc030eb9f8f9781590f5e6b (diff) | |
download | vdr-plugin-live-5c5da204386e7a63ed4fac1d458dd10a120470e0.tar.gz vdr-plugin-live-5c5da204386e7a63ed4fac1d458dd10a120470e0.tar.bz2 |
Fixed bug that the recordings items were not deleted when the tree was
rebuild. This was because of the non weak references to the parent
items.
Deleting of recordings can be triggered now. It still needs some
tweaking on the visual feedback. And possibly a 'undelete' option for
the last deleted recording.
Diffstat (limited to 'recman.cpp')
-rw-r--r-- | recman.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -90,6 +90,16 @@ namespace vdrlive { return 0; } + void RecordingsManager::DeleteRecording(cRecording const * recording) const + { + if (!recording) + return; + + string name(recording->FileName()); + const_cast<cRecording *>(recording)->Delete(); + Recordings.DelByName(name.c_str()); + } + bool RecordingsManager::IsArchived(cRecording const * recording) { string filename = recording->FileName(); @@ -151,7 +161,7 @@ namespace vdrlive { // StateChanged must be executed every time, so not part of // the short cut evaluation in the if statement below. bool stateChanged = Recordings.StateChanged(m_recordingsState); - if ((!m_recTree) || (!m_recList) || stateChanged) { + if (stateChanged || (!m_recTree) || (!m_recList)) { if (stateChanged) { m_recTree.reset(); m_recList.reset(); @@ -197,12 +207,12 @@ namespace vdrlive { RecordingsItem(name, parent), m_level(level) { - esyslog("REC: C: dir %s -> %s", name.c_str(), parent ? parent->Name().c_str() : "ROOT"); + dsyslog("REC: C: dir %s -> %s", name.c_str(), parent ? parent->Name().c_str() : "ROOT"); } RecordingsItemDir::~RecordingsItemDir() { - esyslog("REC: D: dir %s", Name().c_str()); + dsyslog("REC: D: dir %s", Name().c_str()); } @@ -214,12 +224,12 @@ namespace vdrlive { m_recording(recording), m_id(id) { - esyslog("REC: C: rec %s -> %s", name.c_str(), parent->Name().c_str()); + dsyslog("REC: C: rec %s -> %s", name.c_str(), parent->Name().c_str()); } RecordingsItemRec::~RecordingsItemRec() { - esyslog("REC: D: rec %s", Name().c_str()); + dsyslog("REC: D: rec %s", Name().c_str()); } time_t RecordingsItemRec::StartTime() const @@ -340,6 +350,12 @@ namespace vdrlive { /** * Implementation of class RecordingsTreePtr: */ + RecordingsTreePtr::RecordingsTreePtr() : + shared_ptr<RecordingsTree>(), + m_recManPtr() + { + } + RecordingsTreePtr::RecordingsTreePtr(RecordingsManagerPtr recManPtr, std::tr1::shared_ptr< RecordingsTree > recTree) : shared_ptr<RecordingsTree>(recTree), m_recManPtr(recManPtr) |