diff options
Diffstat (limited to 'structures.cpp')
-rw-r--r-- | structures.cpp | 154 |
1 files changed, 47 insertions, 107 deletions
diff --git a/structures.cpp b/structures.cpp index 6744a263..90dd0747 100644 --- a/structures.cpp +++ b/structures.cpp @@ -1,116 +1,56 @@ #include "structures.h" -#include "library/fileHandling.h" +#include "shared/fileHandling.h" #include <wx/intl.h> -#include <wx/stdpaths.h> -#include <wx/filename.h> +#include "shared/globalFunctions.h" -using namespace FreeFileSync; - -#ifdef FFS_WIN -const wxChar FreeFileSync::FILE_NAME_SEPARATOR = '\\'; -#elif defined FFS_LINUX -const wxChar FreeFileSync::FILE_NAME_SEPARATOR = '/'; -#else -assert(false); -#endif - -//these two global variables are language-dependent => cannot be set constant! See CustomLocale -const wxChar* FreeFileSync::DECIMAL_POINT = wxEmptyString; -const wxChar* FreeFileSync::THOUSANDS_SEPARATOR = wxEmptyString; +FreeFileSync::MainConfiguration::MainConfiguration() : + compareVar(CMP_BY_TIME_SIZE), + filterIsActive(false), //do not filter by default + includeFilter(wxT("*")), //include all files/folders + excludeFilter(wxEmptyString), //exclude nothing + handleDeletion(FreeFileSync::recycleBinExists() ? MOVE_TO_RECYCLE_BIN : DELETE_PERMANENTLY) {} //enable if OS supports it; else user will have to activate first and then get an error message -wxString assembleFileForUserData(const wxString fileName) +wxString FreeFileSync::getVariantName(CompareVariant var) { - static const bool isPortableVersion = !wxFileExists(wxT("uninstall.exe")); //this check is a bit lame... - - if (isPortableVersion) //use same directory as executable - return getInstallationDir() + FILE_NAME_SEPARATOR + fileName; - else //usen OS' standard paths + switch (var) { - wxString userDirectory = wxStandardPathsBase::Get().GetUserDataDir(); - - if (!userDirectory.EndsWith(wxString(FreeFileSync::FILE_NAME_SEPARATOR))) - userDirectory += FreeFileSync::FILE_NAME_SEPARATOR; - - if (!wxDirExists(userDirectory)) - try - { - FreeFileSync::createDirectory(userDirectory.c_str(), wxEmptyString, false); - } - catch (FreeFileSync::FileError&) - {} - - return userDirectory + fileName; + case CMP_BY_CONTENT: + return _("File content"); + case CMP_BY_TIME_SIZE: + return _("File size and date"); } -} - - -//save user configuration in OS' standard application folders -const wxString& FreeFileSync::getLastConfigFile() -{ - static wxString instance = assembleFileForUserData(wxT("LastRun.ffs_gui")); - return instance; -} - -const wxString& FreeFileSync::getGlobalConfigFile() -{ - static wxString instance = assembleFileForUserData(wxT("GlobalSettings.xml")); - return instance; -} - - -const wxString& FreeFileSync::getDefaultLogDirectory() -{ - static wxString instance = assembleFileForUserData(wxT("Logs")); - return instance; -} - - -const wxString& FreeFileSync::getLastErrorTxtFile() -{ - static wxString instance = assembleFileForUserData(wxT("LastError.txt")); - return instance; + assert(false); + return wxEmptyString; } -const wxString& FreeFileSync::getInstallationDir() -{ - static wxString instance = wxFileName(wxStandardPaths::Get().GetExecutablePath()).GetPath(); - return instance; -} - - -MainConfiguration::MainConfiguration() : - compareVar(CMP_BY_TIME_SIZE), - filterIsActive(false), //do not filter by default - includeFilter(wxT("*")), //include all files/folders - excludeFilter(wxEmptyString), //exclude nothing - useRecycleBin(FreeFileSync::recycleBinExists()) {} //enable if OS supports it; else user will have to activate first and then get an error message +using FreeFileSync::SyncConfiguration; SyncConfiguration::Variant SyncConfiguration::getVariant() { - if ( exLeftSideOnly == SYNC_DIR_RIGHT && - exRightSideOnly == SYNC_DIR_RIGHT && - leftNewer == SYNC_DIR_RIGHT && - rightNewer == SYNC_DIR_RIGHT && - different == SYNC_DIR_RIGHT) + if ( exLeftSideOnly == SYNC_DIR_CFG_RIGHT && + exRightSideOnly == SYNC_DIR_CFG_RIGHT && + leftNewer == SYNC_DIR_CFG_RIGHT && + rightNewer == SYNC_DIR_CFG_RIGHT && + different == SYNC_DIR_CFG_RIGHT) return MIRROR; //one way -> - else if (exLeftSideOnly == SYNC_DIR_RIGHT && - exRightSideOnly == SYNC_DIR_NONE && - leftNewer == SYNC_DIR_RIGHT && - rightNewer == SYNC_DIR_NONE && - different == SYNC_DIR_NONE) + else if (exLeftSideOnly == SYNC_DIR_CFG_RIGHT && + exRightSideOnly == SYNC_DIR_CFG_NONE && + leftNewer == SYNC_DIR_CFG_RIGHT && + rightNewer == SYNC_DIR_CFG_NONE && + different == SYNC_DIR_CFG_NONE) return UPDATE; //Update -> - else if (exLeftSideOnly == SYNC_DIR_RIGHT && - exRightSideOnly == SYNC_DIR_LEFT && - leftNewer == SYNC_DIR_RIGHT && - rightNewer == SYNC_DIR_LEFT && - different == SYNC_DIR_NONE) + else if (exLeftSideOnly == SYNC_DIR_CFG_RIGHT && + exRightSideOnly == SYNC_DIR_CFG_LEFT && + leftNewer == SYNC_DIR_CFG_RIGHT && + rightNewer == SYNC_DIR_CFG_LEFT && + different == SYNC_DIR_CFG_NONE) return TWOWAY; //two way <-> else return CUSTOM; //other @@ -140,25 +80,25 @@ void SyncConfiguration::setVariant(const Variant var) switch (var) { case MIRROR: - exLeftSideOnly = SYNC_DIR_RIGHT; - exRightSideOnly = SYNC_DIR_RIGHT; - leftNewer = SYNC_DIR_RIGHT; - rightNewer = SYNC_DIR_RIGHT; - different = SYNC_DIR_RIGHT; + exLeftSideOnly = SYNC_DIR_CFG_RIGHT; + exRightSideOnly = SYNC_DIR_CFG_RIGHT; + leftNewer = SYNC_DIR_CFG_RIGHT; + rightNewer = SYNC_DIR_CFG_RIGHT; + different = SYNC_DIR_CFG_RIGHT; break; case UPDATE: - exLeftSideOnly = SYNC_DIR_RIGHT; - exRightSideOnly = SYNC_DIR_NONE; - leftNewer = SYNC_DIR_RIGHT; - rightNewer = SYNC_DIR_NONE; - different = SYNC_DIR_NONE; + exLeftSideOnly = SYNC_DIR_CFG_RIGHT; + exRightSideOnly = SYNC_DIR_CFG_NONE; + leftNewer = SYNC_DIR_CFG_RIGHT; + rightNewer = SYNC_DIR_CFG_NONE; + different = SYNC_DIR_CFG_NONE; break; case TWOWAY: - exLeftSideOnly = SYNC_DIR_RIGHT; - exRightSideOnly = SYNC_DIR_LEFT; - leftNewer = SYNC_DIR_RIGHT; - rightNewer = SYNC_DIR_LEFT; - different = SYNC_DIR_NONE; + exLeftSideOnly = SYNC_DIR_CFG_RIGHT; + exRightSideOnly = SYNC_DIR_CFG_LEFT; + leftNewer = SYNC_DIR_CFG_RIGHT; + rightNewer = SYNC_DIR_CFG_LEFT; + different = SYNC_DIR_CFG_NONE; break; case CUSTOM: assert(false); |