00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ORG_PROGGEN_DEDUPE_GUIINTERFACE
00009 #define ORG_PROGGEN_DEDUPE_GUIINTERFACE
00010
00011 #include <vector>
00012 #include <fileinfo.h>
00013 #include <kernel.h>
00014
00015 namespace Dedupe
00016 {
00017 namespace GUI
00018 {
00019 namespace MainAction
00020 {
00025 enum MainAction
00026 {
00027 Track,
00028 Untrack,
00029 Index,
00030 Manage,
00031 Delete,
00032 Edit,
00033
00034 Hide,
00035 Show,
00036 Quit
00037 };
00038 }
00039
00043 class Main
00044 {
00045 public:
00050 virtual void TrackFile( const Dedupe::FileInfo & file ) = 0;
00051
00055 virtual void UntrackFile( const Dedupe::FileInfo & file ) = 0;
00056
00060 virtual void ClearTrackedFiles() = 0;
00061
00066 virtual bool IsRecursive() = 0;
00067
00068 public:
00072 virtual int exec() = 0;
00073
00074 Main( int argc, char *argv[] )
00075 : Kernel( ":memory:", 0, std::cout ) { }
00076 virtual ~Main() {}
00077
00078 protected:
00082 virtual std::vector<Dedupe::FileInfo> GetFiles() = 0;
00086 virtual std::vector<Dedupe::FileInfo> GetSelectedTrackedFiles() = 0;
00090 Dedupe::Core::Kernel Kernel;
00091
00092 void OnTrack()
00093 {
00094 const std::vector<Dedupe::FileInfo> files = GetFiles();
00095 if( files.size() > 0 )
00096 {
00097 bool recursive = IsRecursive();
00098 Dedupe::FilePaths paths;
00099 for( unsigned int i = 0; i < files.size(); i++ )
00100 {
00101 TrackFile( files[i] );
00102 paths.push_back( files[i].GetPath() );
00103 }
00104 Kernel.TrackFiles( paths, recursive );
00105 }
00106 }
00107
00108 void OnUntrack()
00109 {
00110 const std::vector<Dedupe::FileInfo> files = GetSelectedTrackedFiles();
00111 if( files.size() > 0 )
00112 {
00113 bool recursive = IsRecursive();
00114 Dedupe::FilePaths paths;
00115 for( unsigned int i = 0; i < files.size(); i++ )
00116 {
00117 UntrackFile( files[i] );
00118 paths.push_back( files[i].GetPath() );
00119 }
00120 Kernel.UntrackFiles( paths, recursive );
00121 }
00122 }
00123
00124 void OnIndex()
00125 {
00126 ClearTrackedFiles();
00127 Dedupe::FileStream files = Kernel.GetDatabase();
00128 for( unsigned int i = 0; i < files.size(); i++ )
00129 TrackFile( files.at( i ).GetPath() );
00130 }
00131
00132 void OnManage()
00133 {
00134 std::cout << "OnManage" << std::endl;
00135 }
00136
00137 void OnDelete()
00138 {
00139 std::cout << "OnDelete" << std::endl;
00140 }
00141
00142 void OnEdit()
00143 {
00144 std::cout << "OnEdit" << std::endl;
00145 }
00146
00147 void OnHide()
00148 {
00149 std::cout << "Hiding window" << std::endl;
00150 }
00151
00152 void OnShow()
00153 {
00154 std::cout << "Showing window" << std::endl;
00155 }
00156
00157 void OnQuit()
00158 {
00159 std::cout << "Shutting down" << std::endl;
00160 }
00161
00162 };
00163 }
00164 }
00165
00166 #endif