mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
reference: GuiWebDownload
git-svn-id: svn://ultimatepp.org/upp/trunk@4807 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
2324a5b85b
commit
f109091d29
3 changed files with 68 additions and 0 deletions
9
reference/GuiWebDownload/GuiWebDownload.upp
Normal file
9
reference/GuiWebDownload/GuiWebDownload.upp
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
uses
|
||||
CtrlLib;
|
||||
|
||||
file
|
||||
main.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI SSE2";
|
||||
|
||||
4
reference/GuiWebDownload/init
Normal file
4
reference/GuiWebDownload/init
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef _SocketProgress_icpp_init_stub
|
||||
#define _SocketProgress_icpp_init_stub
|
||||
#include "CtrlLib/init"
|
||||
#endif
|
||||
55
reference/GuiWebDownload/main.cpp
Normal file
55
reference/GuiWebDownload/main.cpp
Normal 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();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue