diff --git a/platform/settings.cpp b/platform/settings.cpp index 73f257d8fb..fdb45d4b1b 100644 --- a/platform/settings.cpp +++ b/platform/settings.cpp @@ -304,4 +304,17 @@ namespace Settings return true; } + + bool IsFirstLaunchForDate(int date) + { + char const * key = "FirstLaunchOnDate"; + int savedDate; + if (!Get(key, savedDate) || savedDate < date) + { + Set(key, date); + return true; + } + else + return false; + } } diff --git a/platform/settings.hpp b/platform/settings.hpp index dda6a4f721..f9fcbb549e 100644 --- a/platform/settings.hpp +++ b/platform/settings.hpp @@ -38,4 +38,8 @@ namespace Settings } enum Units { Metric = 0, Yard, Foot }; + + /// Use this function for running some stuff once according to date. + /// @param[in] date Current date in format yymmdd. + bool IsFirstLaunchForDate(int date); } diff --git a/storage/storage.cpp b/storage/storage.cpp index d47803f0a2..c2a1b6dec3 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -8,6 +8,7 @@ #include "../platform/platform.hpp" #include "../platform/servers_list.hpp" #include "../platform/file_name_utils.hpp" +#include "../platform/settings.hpp" #include "../coding/file_writer.hpp" #include "../coding/file_reader.hpp" @@ -65,17 +66,20 @@ namespace storage { LoadCountriesFile(false); - Platform & pl = GetPlatform(); - string const dir = pl.WritableDir(); + if (Settings::IsFirstLaunchForDate(121031)) + { + Platform & pl = GetPlatform(); + string const dir = pl.WritableDir(); - // Delete all: .mwm.downloading; .mwm.downloading2; .mwm.resume; .mwm.resume2 - string const regexp = "\\" DATA_FILE_EXTENSION "\\.(downloading2?$|resume2?$)"; + // Delete all: .mwm.downloading; .mwm.downloading2; .mwm.resume; .mwm.resume2 + string const regexp = "\\" DATA_FILE_EXTENSION "\\.(downloading2?$|resume2?$)"; - Platform::FilesList files; - pl.GetFilesByRegExp(dir, regexp, files); + Platform::FilesList files; + pl.GetFilesByRegExp(dir, regexp, files); - for (size_t j = 0; j < files.size(); ++j) - FileWriter::DeleteFileX(dir + files[j]); + for (size_t j = 0; j < files.size(); ++j) + FileWriter::DeleteFileX(dir + files[j]); + } } ////////////////////////////////////////////////////////////////////////////