From: Steve Brokenshire Date: Sat, 3 Feb 2018 13:24:09 +0000 (+0000) Subject: frmPreferences: Clean up and delete account directory on account delete X-Git-Tag: release-0.06~5 X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=commitdiff_plain;h=4ee1691d79d18f5a702f25e3ace79d4ab6049e23;hp=902d948e5e45ad483c8e235690dda8f2bf596ad5 frmPreferences: Clean up and delete account directory on account delete --- diff --git a/source/forms/preferences/frmPreferences.cpp b/source/forms/preferences/frmPreferences.cpp index 07a4715..8157bbb 100644 --- a/source/forms/preferences/frmPreferences.cpp +++ b/source/forms/preferences/frmPreferences.cpp @@ -328,7 +328,7 @@ void frmPreferences::DeleteAccount( wxCommandEvent& event ) accountDirDelFull.Append(wxT("/.xestiacal/accounts/")); accountDirDelFull.Append(accountDirFull); - wxRmDir(accountDirDelFull); + DeleteDirectory(accountDirDelFull); } @@ -425,4 +425,37 @@ void frmPreferences::SetupPointers(bool *reloadAccountInc){ reloadAccountConfig = reloadAccountInc; -} \ No newline at end of file +} + +void frmPreferences::DeleteDirectory(wxString directoryPath) +{ + + // Open the directory and look for files and directories + // to delete. + + wxDir directoryHandle(directoryPath); + + if (!directoryHandle.IsOpened()) + { + return; + } + + wxString directoryFilename; + + bool continueProcessing = directoryHandle.GetFirst(&directoryFilename, wxEmptyString, wxDIR_FILES|wxDIR_DIRS|wxDIR_HIDDEN); + while (continueProcessing) + { + wxString directoryFilenameFull = directoryPath + "/" + directoryFilename; + if (wxDir::Exists(directoryFilenameFull)) + { + DeleteDirectory(directoryFilenameFull); + continueProcessing = directoryHandle.GetNext(&directoryFilename); + continue; + } + wxRemoveFile(directoryFilenameFull); + continueProcessing = directoryHandle.GetNext(&directoryFilename); + } + directoryHandle.Close(); + + wxRmDir(directoryPath); +} diff --git a/source/forms/preferences/frmPreferences.h b/source/forms/preferences/frmPreferences.h index a5eec97..29f9b90 100644 --- a/source/forms/preferences/frmPreferences.h +++ b/source/forms/preferences/frmPreferences.h @@ -63,6 +63,7 @@ class frmPreferences : public frmPreferencesADT void DeleteAccount( wxCommandEvent& event ); void SavePreferences( wxCommandEvent& event ); void CloseWindow( wxCommandEvent& event ); + void DeleteDirectory( wxString directoryPath ); public: /** Constructor */ frmPreferences( wxWindow* parent );