00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#include <wx/wxprec.h>
00029
00030
#ifdef __BORLANDC__
00031
#pragma hdrstop
00032
#endif
00033
00034
#ifndef WX_PRECOMP
00035
00036
#include <wx/wx.h>
00037
#endif
00038
#include <wx/filename.h>
00039
00040
#include "fileutil.hpp"
00041
#include "checksumfactory.hpp"
00042
#include "fdftlmk.hpp"
00043
#include "sumfile.hpp"
00044
#include "md5file.hpp"
00045
#include "sfvfile.hpp"
00046
00047
#include "compat.hpp"
00048
00049
00050
00051
00052
using namespace std;
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 wxFileDialogFilterMaker getFilterForKnownTypesOfChecksumsFiles()
00066 {
00067
wxFileDialogFilterMaker fltMaker;
00068 fltMaker.
AddFilter(_(
"Known checksums files"), wxT(
"sfv|md5"));
00069
for (
int i = 0; i <
SumFileFactory::getSumFilesCount(); i++)
00070 fltMaker.
AddFilter(SumFileFactory::getSumFileDescription(i), SumFileFactory::getSumFileExtension(i));
00071 fltMaker.
AddFilter(_(
"All the files"), wxT(
"*"));
00072
00073
return fltMaker;
00074 }
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 SumFile*
openChecksumFile(
const wxFileName& fileName)
00094 {
00095
if (::wxDirExists(fileName.GetFullPath()))
00096
00097
return NULL;
00098
00099
bool hasTrySFV =
false;
00100
bool hasTryMD5 =
false;
00101 wxString ext = fileName.GetExt();
00102
00103
if (ext.CmpNoCase(wxT(
"sfv")) == 0)
00104 {
00105 hasTrySFV =
true;
00106
SFVFile* f =
new SFVFile();
00107
if (f->
read(fileName))
00108
return f;
00109
else
00110
delete f;
00111 }
00112
else if (ext.CmpNoCase(wxT(
"md5")) == 0)
00113 {
00114 hasTryMD5 =
true;
00115
MD5File* f =
new MD5File();
00116
if (f->
read(fileName))
00117
return f;
00118
else
00119
delete f;
00120 }
00121
00122
if (!hasTryMD5)
00123 {
00124 hasTryMD5 =
true;
00125
MD5File* f =
new MD5File();
00126
if (f->
read(fileName))
00127
return f;
00128
else
00129
delete f;
00130 }
00131
00132
if (!hasTrySFV)
00133 {
00134 hasTrySFV =
true;
00135
SFVFile* f =
new SFVFile();
00136
if (f->
read(fileName))
00137
return f;
00138
else
00139
delete f;
00140 }
00141
00142
return NULL;
00143 }
00144