Patch level :a2.2

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Migliorato unzipping delle sottocartelle


git-svn-id: svn://10.65.10.50/trunk@13942 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2006-04-21 12:59:47 +00:00
parent ee4a4f4bfe
commit af646cd925

View File

@ -14,16 +14,19 @@
///////////////////////////////////////////////////////////
#include <wx/dir.h>
#include <wx/progdlg.h>
#include <wx/wfstream.h>
#include <wx/zipstrm.h>
#include <wx/progdlg.h>
unsigned int aga_ziplist(const char* zipfile, wxArrayString& aFiles)
static unsigned int aga_getziplist(const char* zipfile, wxArrayString& aFiles)
{
wxFFileInputStream fin(zipfile);
wxZipInputStream zip(fin);
for (wxZipEntry* z = zip.GetNextEntry(); z; z = zip.GetNextEntry())
aFiles.Add(z->GetInternalName());
{
const wxString str = z->GetInternalName();
aFiles.Add(str);
}
return aFiles.GetCount();
}
@ -53,7 +56,7 @@ void aga_create_dir(wxString strPath)
bool aga_unzip(const char* zipfile, const char* destdir)
{
wxArrayString aFiles;
const unsigned int files = aga_ziplist(zipfile, aFiles);
const unsigned int files = aga_getziplist(zipfile, aFiles);
wxProgressDialog pi("Unzip", "", files, NULL, wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_CAN_ABORT);
@ -63,7 +66,7 @@ bool aga_unzip(const char* zipfile, const char* destdir)
if (!pi.Update(f, strFileName))
break;
if (wxEndsWithPathSeparator(strFileName)) // Is dir name
if (wxEndsWithPathSeparator(strFileName) || strFileName.Find('.') < 0) // Is dir name
{
wxString strOutDir = destdir;
if (!wxEndsWithPathSeparator(strOutDir))
@ -96,12 +99,6 @@ bool aga_unzip(const char* zipfile, const char* destdir)
// Zip support
///////////////////////////////////////////////////////////
static size_t AddFilesToList(const wxString& strBase, const wxString& strMask, wxArrayString& aFiles)
{
const size_t n = wxDir::GetAllFiles(strBase, &aFiles, strMask);
return n;
}
static void AddFileToZip(const wxString& strPrefix, const wxString& strFile,
wxZipOutputStream& zip)
{
@ -150,7 +147,7 @@ bool aga_zip(const char* srcfiles, const char* zipfile)
strMask += strExt;
wxArrayString aFiles;
AddFilesToList(strBase, strMask, aFiles);
wxDir::GetAllFiles(strBase, &aFiles, strMask);
return AddFilesToZip(strBase, aFiles, zipfile);
}