]> git.vomp.tv Git - vompclient.git/blob - directory.cc
Control/main/winmain/util reorg
[vompclient.git] / directory.cc
1 /*
2     Copyright 2004-2020 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, see <https://www.gnu.org/licenses/>.
18 */
19
20 #include "directory.h"
21
22 Directory::Directory(const char* newName)
23 {
24   name = new char[strlen(newName) + 1];
25   strcpy(name, newName);
26 }
27
28 Directory::~Directory()
29 {
30   if (name) delete[] name;
31   name = NULL;
32   index = -1; // just in case // FIXME remove this
33   UINT i;
34
35   for (i = 0; i < dirList.size(); i++)
36   {
37     delete dirList[i];
38   }
39   dirList.clear();
40
41   for (i = 0; i < recList.size(); i++)
42   {
43     delete recList[i];
44   }
45   recList.clear();
46 }
47
48 Directory* Directory::getDirByName(char* dirName)
49 {
50   for(UINT i = 0; i < dirList.size(); i++)
51   {
52     if (!strcmp(dirName, dirList[i]->name)) return dirList[i];
53   }
54   return NULL;
55 }
56
57 ULONG Directory::getNumRecordings()
58 {
59   ULONG total = recList.size();
60   for(UINT i = 0; i < dirList.size(); i++)
61   {
62     total += dirList[i]->getNumRecordings();
63   }
64   return total;
65 }
66
67 ULONG Directory::getNumNewRecordings()
68 {
69   ULONG total = 0;
70   for (UINT i = 0; i < recList.size(); i++)
71   {
72     if (recList[i]->getNew()) ++total;
73   }
74  
75   for(UINT i = 0; i < dirList.size(); i++)
76   {
77     total += dirList[i]->getNumNewRecordings();
78   }
79   return total;
80 }
81
82 void Directory::sort(bool chronoSortOrder)
83 {
84   // Sort the directory order
85   std::sort(dirList.begin(), dirList.end(), DirectorySorter());
86
87   // Sort the recordings order
88   if (chronoSortOrder)
89     std::sort(recList.begin(), recList.end(), RecordingSorterChrono());
90   else
91     std::sort(recList.begin(), recList.end(), RecordingSorterAlpha());
92
93   // Now get the dirs to sort themselves! oh I love recursion.
94   for(UINT i = 0; i < dirList.size(); i++) dirList[i]->sort(chronoSortOrder);
95 }