From 0a193f61210e4b5211a2fac4c6f21c701c5c8737 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 28 Jan 2011 01:16:19 +0200 Subject: [PATCH] Fixes #89 Downloader works correctly when countries dialog is closed --- storage/storage.cpp | 32 +++++++++++++++++++++----------- storage/storage.hpp | 1 + 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/storage/storage.cpp b/storage/storage.cpp index f26049680b..02bb19f83e 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -241,6 +241,26 @@ namespace storage m_observerChange(index); } + void Storage::ReInitCountries(bool forceReload) + { + if (forceReload) + m_countries.Clear(); + + if (m_countries.SiblingsCount() == 0) + { + TTilesContainer tiles; + if (LoadTiles(tiles, GetPlatform().ReadPathForFile(UPDATE_CHECK_FILE), m_currentVersion)) + { + if (!LoadCountries(GetPlatform().ReadPathForFile(COUNTRIES_FILE), tiles, m_countries)) + LOG(LWARNING, ("Can't load countries file", COUNTRIES_FILE)); + } + else + { + LOG(LWARNING, ("Can't load update file", UPDATE_CHECK_FILE)); + } + } + } + void Storage::Subscribe(TObserverChangeCountryFunction change, TObserverProgressFunction progress, TUpdateCheckFunction check) { @@ -248,16 +268,7 @@ namespace storage m_observerProgress = progress; m_observerUpdateCheck = check; - TTilesContainer tiles; - if (LoadTiles(tiles, GetPlatform().ReadPathForFile(UPDATE_CHECK_FILE), m_currentVersion)) - { - if (!LoadCountries(GetPlatform().ReadPathForFile(COUNTRIES_FILE), tiles, m_countries)) - LOG(LWARNING, ("Can't load countries file", COUNTRIES_FILE)); - } - else - { - LOG(LWARNING, ("Can't load update file", UPDATE_CHECK_FILE)); - } + ReInitCountries(false); } void Storage::Unsubscribe() @@ -265,7 +276,6 @@ namespace storage m_observerChange.clear(); m_observerProgress.clear(); m_observerUpdateCheck.clear(); - m_countries.Clear(); } string FileFromUrl(string const & url) diff --git a/storage/storage.hpp b/storage/storage.hpp index 5e40d4b6e6..4b12366a32 100644 --- a/storage/storage.hpp +++ b/storage/storage.hpp @@ -86,6 +86,7 @@ namespace storage void DownloadNextCountryFromQueue(); Country const & CountryByIndex(TIndex const & index) const; string UpdateBaseUrl() const; + void ReInitCountries(bool forceReload); public: Storage() {}