00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _udir_hpp_
00021 #define _udir_hpp_
00022 #include <ubit/ufile.hpp>
00023 #include <ubit/ustr.hpp>
00024
00025 namespace ubit {
00026
00027
00030 class UDir {
00031 public:
00032 UDir();
00033 UDir(const UStr& dirpath);
00034 virtual ~UDir();
00035
00036 void readDir(const UStr& path, int path_type,
00037 const UStr& prefix, const UStr& filter, bool hidden_files);
00045 UStr& getPath() const {return *dir_info.pname;}
00052 static void expandDirPath(UStr& dirpath);
00053
00054 std::vector<UFileInfo*> getFileInfos() const {return files;}
00055 UFileInfo* getFileInfo(int k) const {return files[k];}
00056
00066 unsigned int getFileCount() const {return files.size();}
00068
00069
00070
00071
00072 protected:
00073 friend class UIconbox;
00074 UFileInfo dir_info;
00075
00076 std::vector<UFileInfo*> files;
00077 std::vector<UStr*> filters;
00078
00079 static bool compareEntries(const UFileInfo*, const UFileInfo*);
00080
00081 void readLocalDir(const UStr& path, const UStr& prefix,
00082 const UStr& filter, bool hidden_files);
00083
00084 void readSshDir(const UStr& path, const UStr& prefix,
00085 const UStr& filter, bool hidden_files);
00086
00087 static void parseFilter(std::vector<UStr*>& filter_list,
00088 const UStr& filter_str);
00089 };
00090
00091 }
00092 #endif
00093
00094