diff --git a/code/nel/src/gui/group_html.cpp b/code/nel/src/gui/group_html.cpp index 0c082ae58..ab5644f9d 100644 --- a/code/nel/src/gui/group_html.cpp +++ b/code/nel/src/gui/group_html.cpp @@ -366,8 +366,11 @@ namespace NLGUI time_t currentTime; time(¤tTime); - CHttpCacheObject cache = CHttpCache::getInstance()->lookup(download.dest); - if (CFile::fileExists(download.dest) && cache.Expires > currentTime) + CHttpCacheObject cache; + if (CFile::fileExists(download.dest)) + cache = CHttpCache::getInstance()->lookup(download.dest); + + if (cache.Expires > currentTime) { #ifdef LOG_DL nlwarning("Cache for (%s) is not expired (%s, expires:%d)", download.url.c_str(), download.dest.c_str(), cache.Expires - currentTime); @@ -450,6 +453,19 @@ namespace NLGUI { string finalUrl = upgradeInsecureUrl(getAbsoluteUrl(url)); + // use requested url for local name (cache) + string dest = localImageName(url); + #ifdef LOG_DL + nlwarning("add to download '%s' dest '%s' img %p", finalUrl.c_str(), dest.c_str(), img); + #endif + + // Display cached image while downloading new + if (type != TImageType::OverImage && CFile::fileExists(dest)) + { + setImage(img, dest, type); + setImageSize(img, style); + } + // Search if we are not already downloading this url. for(uint i = 0; i < Curls.size(); i++) { @@ -463,12 +479,6 @@ namespace NLGUI } } - // use requested url for local name (cache) - string dest = localImageName(url); - #ifdef LOG_DL - nlwarning("add to download '%s' dest '%s' img %p", finalUrl.c_str(), dest.c_str(), img); - #endif - Curls.push_back(CDataDownload(finalUrl, dest, ImgType, img, "", "", style, type)); if (Curls.size() < options.curlMaxConnections) { if (!startCurlDownload(Curls.back())) @@ -1767,7 +1777,7 @@ namespace NLGUI tooltip = value[MY_HTML_IMG_TITLE]; // Mouse over image - const char *overSrc = value[MY_HTML_IMG_SRC]; + string overSrc; if (present[MY_HTML_IMG_DATA_OVER_SRC] && value[MY_HTML_IMG_DATA_OVER_SRC]) { overSrc = value[MY_HTML_IMG_DATA_OVER_SRC]; @@ -1781,7 +1791,7 @@ namespace NLGUI overSrc, "browse", params.c_str(), tooltip, style); } else - if (tooltip || overSrc) + if (tooltip || !overSrc.empty()) { addButton(CCtrlButton::PushButton, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], overSrc, "", "", tooltip, style); diff --git a/code/nel/src/misc/system_info.cpp b/code/nel/src/misc/system_info.cpp index 680329dcf..545de0cc6 100644 --- a/code/nel/src/misc/system_info.cpp +++ b/code/nel/src/misc/system_info.cpp @@ -1390,7 +1390,7 @@ uint64 CSystemInfo::availableHDSpace (const string &filename) struct statfs stfs; if (::statfs(path.c_str(), &stfs) != 0) return 0; - return (uint64)(stfs.f_bavail * stfs.f_bsize); + return (uint64)stfs.f_bavail * (uint64)stfs.f_bsize; #else ULARGE_INTEGER freeSpace = {0}; BOOL bRes = ::GetDiskFreeSpaceExW(utf8ToWide(path), &freeSpace, NULL, NULL); diff --git a/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp b/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp index 81fc7ecd3..fd034aebf 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/downloader.cpp @@ -180,9 +180,10 @@ void CDownloader::getFileHead() void CDownloader::downloadFile() { - qint64 freeSpace = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks() ? 0:NLMISC::CSystemInfo::availableHDSpace(m_fullPath.toUtf8().constData()); + bool ignoreFreeDiskSpaceChecks = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks(); + qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_fullPath.toUtf8().constData()); - if (freeSpace == 0) + if (!ignoreFreeDiskSpaceChecks && freeSpace == 0) { if (m_listener) { @@ -192,7 +193,7 @@ void CDownloader::downloadFile() return; } - if (freeSpace < m_size - m_offset) + if (!ignoreFreeDiskSpaceChecks && freeSpace < m_size - m_offset) { // we have not enough free disk space to continue download if (m_listener) m_listener->operationFail(tr("You only have %1 bytes left on the device, but %2 bytes are needed.").arg(freeSpace).arg(m_size - m_offset)); diff --git a/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp index d246701ea..99a2194f7 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/migratedialog.cpp @@ -123,10 +123,11 @@ void CMigrateDialog::updateDestinationText() void CMigrateDialog::accept() { // check free disk space - qint64 freeSpace = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks() ? 0:NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); + bool ignoreFreeDiskSpaceChecks = CConfigFile::getInstance()->ignoreFreeDiskSpaceChecks(); + qint64 freeSpace = NLMISC::CSystemInfo::availableHDSpace(m_dstDirectory.toUtf8().constData()); // shouldn't happen - if (freeSpace == 0) + if (!ignoreFreeDiskSpaceChecks && freeSpace == 0) { int error = NLMISC::getLastError(); @@ -134,7 +135,7 @@ void CMigrateDialog::accept() } // compare with exact size of current directory - if (freeSpace && freeSpace < getDirectorySize(m_currentDirectory, true)) + if (!ignoreFreeDiskSpaceChecks && freeSpace && freeSpace < getDirectorySize(m_currentDirectory, true)) { QMessageBox::StandardButton res = QMessageBox::warning(this, tr("Not enough free disk space"), tr("You don't have enough free space on this disk, please make more space or choose a directory on another disk.")); return;