]> git.vomp.tv Git - vompclient.git/blob - directory.h
v0.6 dev
[vompclient.git] / directory.h
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #ifndef DIRECTORY_H
22 #define DIRECTORY_H
23
24 #include <stdio.h>
25 #include <vector>
26 #include <algorithm>
27
28 #include "defines.h"
29 #include "recording.h"
30
31 class Directory;
32 typedef std::vector<Directory*> DirectoryList;
33 typedef std::vector<Recording*> RecordingList;
34
35 class Directory
36 {
37   public:
38     Directory(const char* newName);
39     ~Directory();
40
41     Directory* getDirByName(char* dirName);
42     ULONG getNumRecordings();
43     ULONG getNumNewRecordings();
44     
45     void sort(bool chronoSortOrder);
46
47     char* name;
48
49     int index;
50
51     Directory* parent;
52     DirectoryList dirList;
53     RecordingList recList;
54
55 };
56
57 struct DirectorySorter
58 {
59   bool operator() (const Directory* a, const Directory* b)
60   {
61     int c = strcmp(b->name, a->name);
62     if (c > 0) return true;
63     return false;
64   }
65 };
66
67 struct RecordingSorterAlpha
68 {
69   bool operator() (const Recording* a, const Recording* b)
70   {
71     int c = strcmp(b->getProgName(), a->getProgName());
72     if (c > 0) return true;
73     if (c < 0) return false;
74
75     return a->getStartTime() < b->getStartTime();
76   }
77 };
78
79 struct RecordingSorterChrono
80 {
81   bool operator() (const Recording* a, const Recording* b)
82   {
83     return a->getStartTime() < b->getStartTime();
84   }
85 };
86
87 #endif