00001 #ifndef FILESYSTEM_H
00002 #define FILESYSTEM_H
00003
00004 #include "arraylist.h"
00005 #include "bcwindowbase.inc"
00006 #include "sizes.h"
00007
00008 class FileItem
00009 {
00010 public:
00011 FileItem();
00012 FileItem(char *path,
00013 char *name,
00014 int is_dir,
00015 int64_t size,
00016 int month,
00017 int day,
00018 int year,
00019 int64_t calendar_time);
00020 ~FileItem();
00021
00022 int set_path(char *path);
00023 int set_name(char *name);
00024 int reset();
00025 char *path;
00026 char *name;
00027 int is_dir;
00028 int64_t size;
00029 int month;
00030 int day;
00031 int year;
00032 int64_t calendar_time;
00033 };
00034
00035 class FileSystem
00036 {
00037 public:
00038
00039 FileSystem();
00040 virtual ~FileSystem();
00041
00042
00043
00044
00045 int update(char *new_dir = 0);
00046
00047
00048
00049 int change_dir(char *new_dir);
00050
00051 int set_current_dir(char *new_dir);
00052
00053 int move_up();
00054 char *get_current_dir();
00055
00056
00057
00058 int set_filter(char *new_filter);
00059 int set_show_all();
00060 int set_want_directory();
00061 int set_sort_order(int value);
00062 int set_sort_field(int field);
00063 int create_dir(char *new_dir_);
00064 int complete_path(char *filename);
00065
00066 int is_dir(const char *new_dir_);
00067 int extract_dir(char *out, const char *in);
00068 int extract_name(char *out, const char *in, int test_dir = 1);
00069 int join_names(char *out, char *dir_in, char *name_in);
00070 static int64_t get_date(char *filename);
00071 static int64_t get_size(char *filename);
00072 int add_end_slash(char *new_dir);
00073 int total_files();
00074 FileItem* get_entry(int entry);
00075
00076 int parse_tildas(char *new_dir);
00077 int parse_directories(char *new_dir);
00078 int parse_dots(char *new_dir);
00079
00080
00081
00082 void alphabetize();
00083
00084
00085
00086 ArrayList<FileItem*> dir_list;
00087
00088
00089 enum
00090 {
00091 SORT_ASCENDING,
00092 SORT_DESCENDING
00093 };
00094
00095
00096 enum
00097 {
00098 SORT_PATH,
00099 SORT_SIZE,
00100 SORT_DATE,
00101 SORT_EXTENSION
00102 };
00103
00104 private:
00105 int dot_reverse_filename(char *out, const char *in);
00106 int compare_items(ArrayList<FileItem*> *dir_list, int item1, int item2);
00107 int sort_table(ArrayList<FileItem*> *dir_list);
00108
00109
00110
00111 int combine(ArrayList<FileItem*> *dir_list, ArrayList<FileItem*> *file_list);
00112
00113 int is_root_dir(char *path);
00114
00115 int test_filter(FileItem *file);
00116 int reset_parameters();
00117 int delete_directory();
00118 char filter[BCTEXTLEN];
00119 int want_directory;
00120 int show_all_files;
00121 char current_dir[BCTEXTLEN];
00122 char string[BCTEXTLEN], string2[BCTEXTLEN];
00123 int sort_order;
00124 int sort_field;
00125 };
00126
00127 #endif