reference: GuiWebDownload

git-svn-id: svn://ultimatepp.org/upp/trunk@4807 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2012-04-18 17:39:43 +00:00
parent 2324a5b85b
commit f109091d29
3 changed files with 68 additions and 0 deletions

View file

@ -0,0 +1,9 @@
uses
CtrlLib;
file
main.cpp;
mainconfig
"" = "GUI SSE2";

View file

@ -0,0 +1,4 @@
#ifndef _SocketProgress_icpp_init_stub
#define _SocketProgress_icpp_init_stub
#include "CtrlLib/init"
#endif

View file

@ -0,0 +1,55 @@
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
struct Loader {
Progress pi;
HttpRequest http;
int64 loaded;
typedef Loader CLASSNAME;
void ProcessContent(const void *ptr, int size);
void Perform();
void ShowProgress();
};
void Loader::Perform()
{
String url = "http://www.samgrob.ch/images/video/m60/m60_mtzion-nw-music1.divx";
for(;;) {
if(!EditText(url, "Download", "URL"))
break;
loaded = 0;
HttpRequest http(url);
http.MaxContentSize(INT_MAX);
http.WhenContent = THISBACK(ProcessContent);
http.WhenWait = THISBACK(ShowProgress);
http.Execute();
if(!http.IsSuccess())
Exclamation("Failed !");
}
}
void Loader::ProcessContent(const void *ptr, int size)
{
loaded += size;
}
void Loader::ShowProgress()
{
DDUMP(http.GetPeerAddr());
if(http.GetContentLength() >= 0)
pi.Set((int)loaded, (int)http.GetContentLength());
else
pi.Set(0, 0);
pi.SetText(http.GetPhaseName());
if(pi.Canceled())
http.Abort();
}
GUI_APP_MAIN
{
HttpRequest::Trace();
Loader().Perform();
}