mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	The Recordings menu can now be called with a cRecordingFilter
This commit is contained in:
		@@ -2868,6 +2868,8 @@ Lars Hanisch <dvb@flensrocker.de>
 | 
				
			|||||||
 for reporting a possible crash if the recordings list is updated externally while the
 | 
					 for reporting a possible crash if the recordings list is updated externally while the
 | 
				
			||||||
 Recordings menu is open
 | 
					 Recordings menu is open
 | 
				
			||||||
 for reporting a missing closing ')' in the help entry of the --vfat option
 | 
					 for reporting a missing closing ')' in the help entry of the --vfat option
 | 
				
			||||||
 | 
					 for making the Recordings menu able to be called with a cRecordingFilter, which allows
 | 
				
			||||||
 | 
					 the caller to have it display only a certain subset of the recordings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Alex Lasnier <alex@fepg.org>
 | 
					Alex Lasnier <alex@fepg.org>
 | 
				
			||||||
 for adding tuning support for ATSC devices
 | 
					 for adding tuning support for ATSC devices
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							@@ -8072,3 +8072,6 @@ Video Disk Recorder Revision History
 | 
				
			|||||||
- Fixed setting the name of the video directory to avoid a crash when using --genindex,
 | 
					- Fixed setting the name of the video directory to avoid a crash when using --genindex,
 | 
				
			||||||
  and also to use the correct directory with --edit (the latter reported by Marko
 | 
					  and also to use the correct directory with --edit (the latter reported by Marko
 | 
				
			||||||
  M<>kel<65>).
 | 
					  M<>kel<65>).
 | 
				
			||||||
 | 
					- The Recordings menu can now be called with a cRecordingFilter, which allows the
 | 
				
			||||||
 | 
					  caller to have it display only a certain subset of the recordings (thanks to Lars
 | 
				
			||||||
 | 
					  Hanisch).
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								menu.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 * See the main source file 'vdr.c' for copyright information and
 | 
					 * See the main source file 'vdr.c' for copyright information and
 | 
				
			||||||
 * how to reach the author.
 | 
					 * how to reach the author.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: menu.c 3.13 2013/11/03 14:08:35 kls Exp $
 | 
					 * $Id: menu.c 3.14 2013/12/25 12:03:32 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "menu.h"
 | 
					#include "menu.h"
 | 
				
			||||||
@@ -2571,12 +2571,13 @@ void cMenuRecordingItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, b
 | 
				
			|||||||
cString cMenuRecordings::path;
 | 
					cString cMenuRecordings::path;
 | 
				
			||||||
cString cMenuRecordings::fileName;
 | 
					cString cMenuRecordings::fileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
 | 
					cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus, const cRecordingFilter *Filter)
 | 
				
			||||||
:cOsdMenu(Base ? Base : tr("Recordings"), 9, 6, 6)
 | 
					:cOsdMenu(Base ? Base : tr("Recordings"), 9, 6, 6)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  SetMenuCategory(mcRecording);
 | 
					  SetMenuCategory(mcRecording);
 | 
				
			||||||
  base = Base ? strdup(Base) : NULL;
 | 
					  base = Base ? strdup(Base) : NULL;
 | 
				
			||||||
  level = Setup.RecordingDirs ? Level : -1;
 | 
					  level = Setup.RecordingDirs ? Level : -1;
 | 
				
			||||||
 | 
					  filter = Filter;
 | 
				
			||||||
  Recordings.StateChanged(recordingsState); // just to get the current state
 | 
					  Recordings.StateChanged(recordingsState); // just to get the current state
 | 
				
			||||||
  helpKeys = -1;
 | 
					  helpKeys = -1;
 | 
				
			||||||
  Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay
 | 
					  Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay
 | 
				
			||||||
@@ -2633,7 +2634,7 @@ void cMenuRecordings::Set(bool Refresh)
 | 
				
			|||||||
  GetRecordingsSortMode(DirectoryName());
 | 
					  GetRecordingsSortMode(DirectoryName());
 | 
				
			||||||
  Recordings.Sort();
 | 
					  Recordings.Sort();
 | 
				
			||||||
  for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
 | 
					  for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
 | 
				
			||||||
      if (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == FOLDERDELIMCHAR)) {
 | 
					      if ((!filter || filter->Filter(recording)) && (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == FOLDERDELIMCHAR))) {
 | 
				
			||||||
         cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
 | 
					         cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
 | 
				
			||||||
         cMenuRecordingItem *LastDir = NULL;
 | 
					         cMenuRecordingItem *LastDir = NULL;
 | 
				
			||||||
         if (Item->IsDirectory()) {
 | 
					         if (Item->IsDirectory()) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								menu.h
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								menu.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 * See the main source file 'vdr.c' for copyright information and
 | 
					 * See the main source file 'vdr.c' for copyright information and
 | 
				
			||||||
 * how to reach the author.
 | 
					 * how to reach the author.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: menu.h 3.4 2013/10/30 14:32:13 kls Exp $
 | 
					 * $Id: menu.h 3.5 2013/12/25 12:06:03 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __MENU_H
 | 
					#ifndef __MENU_H
 | 
				
			||||||
@@ -191,6 +191,13 @@ public:
 | 
				
			|||||||
cOsdObject *CamControl(void);
 | 
					cOsdObject *CamControl(void);
 | 
				
			||||||
bool CamMenuActive(void);
 | 
					bool CamMenuActive(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cRecordingFilter {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  virtual ~cRecordingFilter(void) {};
 | 
				
			||||||
 | 
					  virtual bool Filter(const cRecording *Recording) const = 0;
 | 
				
			||||||
 | 
					      ///< Returns true if the given Recording shall be displayed in the Recordings menu.
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class cMenuRecordingItem;
 | 
					class cMenuRecordingItem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class cMenuRecordings : public cOsdMenu {
 | 
					class cMenuRecordings : public cOsdMenu {
 | 
				
			||||||
@@ -199,6 +206,7 @@ private:
 | 
				
			|||||||
  int level;
 | 
					  int level;
 | 
				
			||||||
  int recordingsState;
 | 
					  int recordingsState;
 | 
				
			||||||
  int helpKeys;
 | 
					  int helpKeys;
 | 
				
			||||||
 | 
					  const cRecordingFilter *filter;
 | 
				
			||||||
  static cString path;
 | 
					  static cString path;
 | 
				
			||||||
  static cString fileName;
 | 
					  static cString fileName;
 | 
				
			||||||
  void SetHelpKeys(void);
 | 
					  void SetHelpKeys(void);
 | 
				
			||||||
@@ -213,7 +221,7 @@ private:
 | 
				
			|||||||
protected:
 | 
					protected:
 | 
				
			||||||
  cString DirectoryName(void);
 | 
					  cString DirectoryName(void);
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
 | 
					  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL);
 | 
				
			||||||
  ~cMenuRecordings();
 | 
					  ~cMenuRecordings();
 | 
				
			||||||
  virtual eOSState ProcessKey(eKeys Key);
 | 
					  virtual eOSState ProcessKey(eKeys Key);
 | 
				
			||||||
  static void SetPath(const char *Path);
 | 
					  static void SetPath(const char *Path);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user