2010-09-25 08:54:27 +02:00
|
|
|
/****************************************************************************
|
2010-12-18 14:20:45 +01:00
|
|
|
* Copyright (C) 2010
|
|
|
|
* by Dimok
|
|
|
|
*
|
|
|
|
* This software is provided 'as-is', without any express or implied
|
|
|
|
* warranty. In no event will the authors be held liable for any
|
|
|
|
* damages arising from the use of this software.
|
|
|
|
*
|
|
|
|
* Permission is granted to anyone to use this software for any
|
|
|
|
* purpose, including commercial applications, and to alter it and
|
|
|
|
* redistribute it freely, subject to the following restrictions:
|
|
|
|
*
|
|
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
|
|
* must not claim that you wrote the original software. If you use
|
|
|
|
* this software in a product, an acknowledgment in the product
|
|
|
|
* documentation would be appreciated but is not required.
|
|
|
|
*
|
|
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
|
|
* must not be misrepresented as being the original software.
|
|
|
|
*
|
|
|
|
* 3. This notice may not be removed or altered from any source
|
|
|
|
* distribution.
|
|
|
|
*
|
2010-09-25 08:54:27 +02:00
|
|
|
* DirList Class
|
2010-12-18 14:20:45 +01:00
|
|
|
* for WiiXplorer 2010
|
2010-09-25 08:54:27 +02:00
|
|
|
***************************************************************************/
|
|
|
|
#ifndef ___DIRLIST_H_
|
|
|
|
#define ___DIRLIST_H_
|
|
|
|
|
2010-12-18 14:20:45 +01:00
|
|
|
#include <vector>
|
2011-02-21 20:41:48 +01:00
|
|
|
#include <string>
|
2010-09-25 08:54:27 +02:00
|
|
|
#include <gctypes.h>
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
char * FilePath;
|
|
|
|
u64 FileSize;
|
|
|
|
bool isDir;
|
2010-09-25 08:54:27 +02:00
|
|
|
} FileInfos;
|
|
|
|
|
|
|
|
class DirList
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
public:
|
|
|
|
//!Constructor
|
2012-05-06 12:59:58 +02:00
|
|
|
DirList() {}
|
|
|
|
//!Overload
|
2011-07-26 00:28:22 +02:00
|
|
|
//!\param path Path from where to load the filelist of all files
|
|
|
|
//!\param filter A fileext that needs to be filtered
|
|
|
|
//!\param flags search/filter flags from the enum
|
|
|
|
DirList(const char * path, const char *filter = NULL, u32 flags = Files | Dirs);
|
|
|
|
//!Destructor
|
|
|
|
~DirList();
|
|
|
|
//! Load all the files from a directory
|
|
|
|
bool LoadPath(const char * path, const char *filter = NULL, u32 flags = Files | Dirs);
|
|
|
|
bool LoadPath(std::string &path, const char *filter = NULL, u32 flags = Files | Dirs);
|
|
|
|
//! Get a filename of the list
|
|
|
|
//!\param list index
|
|
|
|
const char * GetFilename(int index);
|
|
|
|
//! Get the a filepath of the list
|
|
|
|
//!\param list index
|
2012-05-06 12:59:58 +02:00
|
|
|
const char * GetFilepath(int index) { if(!valid(index)) return NULL; return FileInfo[index].FilePath; }
|
2011-07-26 00:28:22 +02:00
|
|
|
//! Get the a filesize of the list
|
|
|
|
//!\param list index
|
2012-05-06 12:59:58 +02:00
|
|
|
u64 GetFilesize(int index) { if(!valid(index)) return 0; return FileInfo[index].FileSize; }
|
2011-07-26 00:28:22 +02:00
|
|
|
//! Is index a dir or a file
|
|
|
|
//!\param list index
|
2012-05-06 12:59:58 +02:00
|
|
|
bool IsDir(int index) { if(!valid(index)) return 0; return FileInfo[index].isDir; }
|
2016-01-02 17:23:01 +01:00
|
|
|
//! Erase an entry of the list
|
|
|
|
//!\param list index
|
|
|
|
void RemoveEntrie(int index) { if(!valid(index)) return; FileInfo.erase(FileInfo.begin()+index); }
|
2011-07-26 00:28:22 +02:00
|
|
|
//! Get the filecount of the whole list
|
2012-05-06 12:59:58 +02:00
|
|
|
int GetFilecount() { return FileInfo.size(); }
|
2011-07-26 00:28:22 +02:00
|
|
|
//! Sort list by filepath
|
|
|
|
void SortList();
|
|
|
|
//! Custom sort command for custom sort functions definitions
|
|
|
|
void SortList(bool (*SortFunc)(const FileInfos &a, const FileInfos &b));
|
2010-09-25 08:54:27 +02:00
|
|
|
//! Get the index of the specified filename
|
|
|
|
int GetFileIndex(const char *filename);
|
2010-12-18 14:20:45 +01:00
|
|
|
//! Enum for search/filter flags
|
|
|
|
enum
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
Files = 0x01,
|
|
|
|
Dirs = 0x02,
|
2012-05-06 12:59:58 +02:00
|
|
|
CheckSubfolders = 0x08
|
2010-12-18 14:20:45 +01:00
|
|
|
};
|
2011-07-26 00:28:22 +02:00
|
|
|
protected:
|
|
|
|
//!Add a list entrie
|
|
|
|
void AddEntrie(const char * folderpath, const char * filename, u64 filesize, bool isDir);
|
|
|
|
//! Clear the list
|
|
|
|
void ClearList();
|
|
|
|
//! Check if valid pos is requested
|
2012-05-06 12:59:58 +02:00
|
|
|
inline bool valid(int pos) { return (pos >= 0 && pos < (int) FileInfo.size()); }
|
2010-09-25 08:54:27 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
std::vector<FileInfos> FileInfo;
|
2010-09-25 08:54:27 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|