From da501a4b8299ca37efab4612a1a63d829beb2784 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 25 Sep 2005 11:35:56 +0200 Subject: The 'new' indicator in the Recordings menu is now kept up-to-date --- CONTRIBUTORS | 1 + HISTORY | 2 ++ menu.c | 11 ++++++++++- recording.c | 17 ++++++++++++++++- recording.h | 4 +++- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 9a6d1692..efe1157f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1465,6 +1465,7 @@ Thomas G for suggesting to move cMenuEditTimer and cMenuEvent to menu.h so that plugins can use it for fixing converting arbitrarily formatted summary.vdr files + for making the 'new' indicator in the Recordings menu kept up-to-date David Woodhouse for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with diff --git a/HISTORY b/HISTORY index 72e030be..07f12a82 100644 --- a/HISTORY +++ b/HISTORY @@ -3841,3 +3841,5 @@ Video Disk Recorder Revision History into the respective code block. Thanks to Carsten Koch for his help in testing and debugging this. +- The 'new' indicator in the Recordings menu is now kept up-to-date (thanks to + Thomas Günther). diff --git a/menu.c b/menu.c index ce415ea3..5423416c 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.360 2005/09/25 09:45:01 kls Exp $ + * $Id: menu.c 1.361 2005/09/25 11:30:55 kls Exp $ */ #include "menu.h" @@ -2221,6 +2221,8 @@ cMenuSetupRecord::cMenuSetupRecord(void) // --- cMenuSetupReplay ------------------------------------------------------ class cMenuSetupReplay : public cMenuSetupBase { +protected: + virtual void Store(void); public: cMenuSetupReplay(void); }; @@ -2233,6 +2235,13 @@ cMenuSetupReplay::cMenuSetupReplay(void) Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99)); } +void cMenuSetupReplay::Store(void) +{ + if (Setup.ResumeID != data.ResumeID) + Recordings.ResetResume(); + cMenuSetupBase::Store(); +} + // --- cMenuSetupMisc -------------------------------------------------------- class cMenuSetupMisc : public cMenuSetupBase { diff --git a/recording.c b/recording.c index ccdb71c4..d4aa7eaf 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 1.115 2005/09/25 10:40:31 kls Exp $ + * $Id: recording.c 1.116 2005/09/25 11:31:52 kls Exp $ */ #include "recording.h" @@ -215,6 +215,7 @@ bool cResumeFile::Save(int Index) if (safe_write(f, &Index, sizeof(Index)) < 0) LOG_ERROR_STR(fileName); close(f); + Recordings.ResetResume(fileName); return true; } } @@ -226,6 +227,7 @@ void cResumeFile::Delete(void) if (fileName) { if (remove(fileName) < 0 && errno != ENOENT) LOG_ERROR_STR(fileName); + Recordings.ResetResume(fileName); } } @@ -732,6 +734,11 @@ bool cRecording::Remove(void) return RemoveVideoFile(FileName()); } +void cRecording::ResetResume(void) const +{ + resume = RESUME_NOT_INITIALIZED; +} + // --- cRecordings ----------------------------------------------------------- cRecordings Recordings; @@ -860,6 +867,14 @@ void cRecordings::DelByName(const char *FileName) } } +void cRecordings::ResetResume(const char *ResumeFileName) +{ + for (cRecording *recording = First(); recording; recording = Next(recording)) { + if (!ResumeFileName || strncmp(ResumeFileName, recording->FileName(), strlen(recording->FileName())) == 0) + recording->ResetResume(); + } +} + // --- cMark ----------------------------------------------------------------- cMark::cMark(int Position, const char *Comment) diff --git a/recording.h b/recording.h index 23c4fd84..aa33dd3b 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 1.41 2005/09/25 10:07:40 kls Exp $ + * $Id: recording.h 1.42 2005/09/25 11:31:28 kls Exp $ */ #ifndef __RECORDING_H @@ -79,6 +79,7 @@ public: const cRecordingInfo *Info(void) const { return info; } const char *PrefixFileName(char Prefix); int HierarchyLevels(void) const; + void ResetResume(void) const; bool IsNew(void) const { return GetResume() <= 0; } bool IsEdited(void) const; bool WriteInfo(void); @@ -116,6 +117,7 @@ public: bool NeedsUpdate(void); void ChangeState(void) { state++; } bool StateChanged(int &State); + void ResetResume(const char *ResumeFileName = NULL); cRecording *GetByName(const char *FileName); void AddByName(const char *FileName); void DelByName(const char *FileName); -- cgit v1.2.3