mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
The "Select folder" menu now adds the folder names of all existing recordings to any names that have been predefined in "folders.conf"
This commit is contained in:
parent
f2807bc782
commit
3e06c99a0a
@ -3171,6 +3171,8 @@ S
|
||||
changed after VDR has been started
|
||||
for reporting that the change "Fixed some compiler warnings with Clang 3.4.1" caused
|
||||
ci.c to no longer compile with older versions of gcc
|
||||
for suggesting to make the "Select folder" menu add the folder names of all existing
|
||||
recordings to any names that have been predefined in "folders.conf"
|
||||
|
||||
Peter Münster <pmlists@free.fr>
|
||||
for fixing 'make install' to not overwrite existing configuration files
|
||||
|
2
HISTORY
2
HISTORY
@ -8492,3 +8492,5 @@ Video Disk Recorder Revision History
|
||||
recording's folder path name (suggested by Christoph Haubrich). See MANUAL, section
|
||||
"Managing folders" for details.
|
||||
- Updated the Italian OSD texts (thanks to Nino Gerbino).
|
||||
- The "Select folder" menu now adds the folder names of all existing recordings to
|
||||
any names that have been predefined in "folders.conf" (suggested by Sören Moch).
|
||||
|
42
menu.c
42
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 3.40 2015/02/04 09:21:55 kls Exp $
|
||||
* $Id: menu.c 3.41 2015/02/04 12:18:27 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -766,8 +766,48 @@ void cMenuFolder::SetHelpKeys(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define FOLDERDELIMCHARSUBST 0x01
|
||||
static void AddRecordingFolders(cList<cNestedItem> *List, char *Path)
|
||||
{
|
||||
if (Path) {
|
||||
char *p = strchr(Path, FOLDERDELIMCHARSUBST);
|
||||
if (p)
|
||||
*p++ = 0;
|
||||
cNestedItem *Folder;
|
||||
for (Folder = List->First(); Folder; Folder = List->Next(Folder)) {
|
||||
if (strcmp(Path, Folder->Text()) == 0)
|
||||
break;
|
||||
}
|
||||
if (!Folder)
|
||||
List->Add(Folder = new cNestedItem(Path));
|
||||
if (p) {
|
||||
Folder->SetSubItems(true);
|
||||
AddRecordingFolders(Folder->SubItems(), p);
|
||||
}
|
||||
}
|
||||
else {
|
||||
cThreadLock RecordingsLock(&Recordings);
|
||||
cStringList Dirs;
|
||||
for (cRecording *Recording = Recordings.First(); Recording; Recording = Recordings.Next(Recording)) {
|
||||
cString Folder = Recording->Folder();
|
||||
strreplace((char *)*Folder, FOLDERDELIMCHAR, FOLDERDELIMCHARSUBST); // makes sure parent folders come before subfolders
|
||||
if (Dirs.Find(Folder) < 0)
|
||||
Dirs.Append(strdup(Folder));
|
||||
}
|
||||
Dirs.Sort();
|
||||
for (int i = 0; i < Dirs.Size(); i++) {
|
||||
char *s = Dirs[i];
|
||||
if (*s)
|
||||
AddRecordingFolders(&Folders, s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cMenuFolder::Set(const char *CurrentFolder)
|
||||
{
|
||||
static int RecordingsState = -1;
|
||||
if (list == &Folders && Recordings.StateChanged(RecordingsState))
|
||||
AddRecordingFolders(&Folders, NULL);
|
||||
firstFolder = NULL;
|
||||
Clear();
|
||||
if (!isempty(dir)) {
|
||||
|
Loading…
Reference in New Issue
Block a user