#ifndef _FILECOPIER_H_ #include "file.h" #include "filePath.h" #include "copyProgress.h" #include "diskSpace.h" class fileCopyMonitor { public: fileCopyMonitor() {}; virtual void copiedFile(string from, string to) = 0; virtual void copiedDir(string dirName) = 0; }; class fileCopySet { private: FileVector fileList; FilePath sourceDir; unsigned long dataSize; public: FilePath destDir; fileCopySet(); fileCopySet(FileVector files, FilePath &from, FilePath &to); char *destination(File *file); unsigned long getOriginalSize(); unsigned long getCopiedSize(DiskSpace &space); bool ensureParent(FilePath &child, fileCopyMonitor *monitor); bool copyFile(File *file, fileCopyMonitor *monitor, copyProgressBar &progressBar); void copy(File *file, fileCopyMonitor *monitor, copyProgressBar &progressBar); void copy(fileCopyMonitor *monitor, copyProgressBar &progressBar); }; typedef vector fileCopySetList; class fileCopier { private: fileCopySetList list; unsigned long dataSize; unsigned long copied; copyProgressBar progressBar; fileCopyMonitor *monitor; protected: public: fileCopier::fileCopier(fileCopyMonitor *monitor, fileCopySetList &list); fileCopier::fileCopier(fileCopyMonitor *monitor); void fileCopier::addSet(fileCopySet &set) { this->list.push_back(set); } bool checkSpace(); void copy(); }; #define _FILECOPIER_H_ #endif