summaryrefslogtreecommitdiff
path: root/recman.cpp
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-01-25 01:09:49 +0100
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2008-01-25 01:09:49 +0100
commit5c5da204386e7a63ed4fac1d458dd10a120470e0 (patch)
treedeb3e5f385ddeee6c1746714859fb1de09177299 /recman.cpp
parente2496312144175ba6fc030eb9f8f9781590f5e6b (diff)
downloadvdr-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.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/recman.cpp b/recman.cpp
index 153e9dd..c7010e7 100644
--- a/recman.cpp
+++ b/recman.cpp
@@ -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)