This commit is contained in:
Benau
2016-06-05 09:34:30 +08:00
parent 56c6062a81
commit f4fef6fbf2
2 changed files with 19 additions and 3 deletions

View File

@@ -55,6 +55,11 @@ AddonsManager* addons_manager = 0;
AddonsManager::AddonsManager() : m_addons_list(std::vector<Addon>() ),
m_state(STATE_INIT)
{
// Clean .part file which may be left behind
std::string addons_part = file_manager->getAddonsFile("addons.xml.part");
if (file_manager->fileExists(addons_part))
file_manager->removeFile(addons_part);
m_file_installed = file_manager->getAddonsFile("addons_installed.xml");
// Load the addons list (even if internet is disabled)
@@ -90,6 +95,8 @@ void AddonsManager::init(const XMLNode *xml,
StkTime::TimeType mtime(0);
const XMLNode *include = xml->getNode("include");
std::string filename=file_manager->getAddonsFile("addons.xml");
// Prevent downloading when .part file created, which is already downloaded
std::string filename_part=file_manager->getAddonsFile("addons.xml.part");
if(!include)
{
file_manager->removeFile(filename);
@@ -110,7 +117,8 @@ void AddonsManager::init(const XMLNode *xml,
( mtime > UserConfigParams::m_addons_last_updated +frequency ||
force_refresh ||
!file_manager->fileExists(filename) )
&& UserConfigParams::m_internet_status == RequestManager::IPERM_ALLOWED;
&& UserConfigParams::m_internet_status == RequestManager::IPERM_ALLOWED
&& !file_manager->fileExists(filename_part);
if (download)
{

View File

@@ -40,6 +40,12 @@ NewsManager::NewsManager() : m_news(std::vector<NewsMessage>())
m_current_news_message = -1;
m_error_message.setAtomic("");
m_force_refresh = false;
// Clean .part file which may be left behind
std::string news_part = file_manager->getAddonsFile("news.xml.part");
if (file_manager->fileExists(news_part))
file_manager->removeFile(news_part);
init(false);
} // NewsManage
@@ -99,6 +105,8 @@ void* NewsManager::downloadNews(void *obj)
me->clearErrorMessage();
std::string xml_file = file_manager->getAddonsFile("news.xml");
// Prevent downloading when .part file created, which is already downloaded
std::string xml_file_part = file_manager->getAddonsFile("news.xml.part");
bool news_exists = file_manager->fileExists(xml_file);
// The news message must be updated if either it has never been updated,
@@ -111,8 +119,8 @@ void* NewsManager::downloadNews(void *obj)
< StkTime::getTimeSinceEpoch() ||
me->m_force_refresh ||
!news_exists )
&& UserConfigParams::m_internet_status==RequestManager::IPERM_ALLOWED;
&& UserConfigParams::m_internet_status==RequestManager::IPERM_ALLOWED
&& !file_manager->fileExists(xml_file_part);
const XMLNode *xml = NULL;
if(!download && news_exists)