27 fWinSock = AcquireWinSock();
32 pProgressBar =
nullptr;
39 if (fWinSock) ReleaseWinSock();
43 void C4DownloadDlg::SetStatus(
const char *szNewText, int32_t iProgressPercent)
53 pStatusLabel->
SetBounds(caMain.GetFromTop(iMsgHeight));
56 if (iProgressPercent >= 0)
71 if (pProgressBar) {
delete pProgressBar; pProgressBar =
nullptr; }
97 StdStrBuf sStatus; int32_t iProgress = -1;
120 else if (
iSize <= 1024*1024)
123 sSize.
Format(
" (%ld MB)", (
long)(
iSize/1024/1024));
127 const char *szStatusString =
LoadResStr(
"IDS_PRC_DOWNLOADINGFILE");
140 if (szError)
return szError;
150 if (!HTTPClient.
Init())
return false;
153 if (!
Show(pScreen,
true))
return false;
155 if (!HTTPClient.
Query(
nullptr,
true))
return false;
176 if (!pDlg->
ShowModal(pScreen, szURL, szSaveAsFilename))
179 const char *szError = pDlg->
GetError();
180 if (!szError || !*szError) szError =
LoadResStr(
"IDS_PRC_UNKOWNERROR");
184 if (
SSearch(szError,
"404") && szNotFoundMessage)
185 { sError.
Append(
"|"); sError.
Append(szNotFoundMessage); }
C4GraphicsResource GraphicsResource
#define C4GUI_ProgressDlgPBHgt
#define C4GUI_ProgressDlgWdt
#define C4GUI_ButtonAreaHgt
#define C4GUI_DefDlgIndent
#define C4GUI_MessageFontClr
#define C4GUI_DefButtonWdt
const char * LoadResStr(const char *id)
bool LogF(const char *strMessage,...)
const char * SSearch(const char *szString, const char *szIndex)
StdStrBuf FormatString(const char *szFmt,...)
char * GetFilename(char *szPath)
static bool DownloadFile(const char *szDLType, C4GUI::Screen *pScreen, const char *szURL, const char *szSaveAsFilename, const char *szNotFoundMessage=nullptr)
~C4DownloadDlg() override
void UserClose(bool fOK) override
C4DownloadDlg(const char *szDLType)
bool ShowModal(C4GUI::Screen *pScreen, const char *szURL, const char *szSaveAsFilename)
void AddElement(Element *pChild)
void SetClientSize(int32_t iToWdt, int32_t iToHgt)
bool Show(Screen *pOnScreen, bool fCB)
void SetBounds(const C4Rect &rcNewBound)
void SetToolTip(const char *szNewTooltip, bool is_immediate=false)
void SetText(const char *szToText, bool fAllowHotkey=true)
void SetProgress(int32_t iToProgress)
bool ShowMessageModal(const char *szMessage, const char *szCaption, DWORD dwButtons, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
C4Rect & GetClientRect() override
size_t getTotalSize() const
bool Execute(int iMaxTime=-1, pollfd *readyfds=nullptr) override
virtual const char * GetError() const
bool SetServer(const char *szServerAddress)
bool Query(const StdBuf &Data, bool fBinary)
size_t getDownloadedSize() const
const StdBuf & getResultBin() const
const char * getURL() const
void Cancel(const char *szReason)
std::tuple< std::string, int > BreakMessage(const char *szMsg, int iWdt, bool fCheckMarkup, float fZoom=1.0f)
bool SaveToFile(const char *szFile) const
void Ref(const char *pnData)
const char * getData() const
void Append(const char *pnData, size_t iChars)
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O