#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 createdDir(string dirName) = 0; virtual void copiedDir(string dirName) = 0; }; class fileCopySet { private: FileVector fileList; FilePath sourceDir; string label; unsigned long dataSize; unsigned long dataFiles; public: FilePath destDir; fileCopySet(); fileCopySet(string label, FileVector files, FilePath &from, FilePath &to); char *destination(File *file); unsigned long getOriginalSize(); unsigned long getOriginalFiles(); 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; unsigned long dataFiles; copyProgressBar progressBar; fileCopyMonitor *monitor; protected: public: fileCopier::fileCopier(fileCopyMonitor *monitor, fileCopySetList &list); fileCopier::fileCopier(fileCopyMonitor *monitor); void fileCopier::addSet(fileCopySet &set); bool checkSpace(); void copy(); }; #define _FILECOPIER_H_ #endif