mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
137 lines
2.7 KiB
C++
137 lines
2.7 KiB
C++
#include "main.h"
|
|
#include "threads.h"
|
|
|
|
App::App()
|
|
{
|
|
/* Begin: Main settings */
|
|
Title("ErrorThread20070606");
|
|
SetDefaultCharset(CHARSET_UTF8);
|
|
SetRect(0, 0, 800, 500);
|
|
/* End */
|
|
|
|
/* Begin: Main Ctrls */
|
|
AddFrame(menu);
|
|
MenuContent(menu);
|
|
Add(tab);
|
|
TabContent(tab);
|
|
AddFrame(status);
|
|
StatusContent(status);
|
|
/* End */
|
|
|
|
/* Begin: Main actions */
|
|
WhenClose = THISBACK(ActionExit);
|
|
/* End */
|
|
}
|
|
|
|
void App::MenuContent(MenuBar& menu)
|
|
{
|
|
menu.Add("File", THISBACK(MenuContent_File));
|
|
}
|
|
|
|
void App::MenuContent_File(Bar& bar)
|
|
{
|
|
bar.Add("Exit", THISBACK(ActionExit))
|
|
.Key(K_ESCAPE);
|
|
}
|
|
|
|
void App::TabContent(TabCtrl& tab)
|
|
{
|
|
tab.SizePos();
|
|
|
|
Content_Download(contentDownload);
|
|
tab.Add(contentDownload, "Home page");
|
|
}
|
|
|
|
void App::Content_Download(StaticRect& ctrl)
|
|
{
|
|
ctrl.SizePos();
|
|
ctrl.Color(SWhite);
|
|
ctrl.SetFrame(InsetFrame());
|
|
|
|
downloadButton.SetLabel("Download START (~46kB)");
|
|
downloadButton.LeftPos(10, 150).TopPos(10, 20);
|
|
downloadButton <<= THISBACK(ActionDownloadStart);
|
|
ctrl.Add(downloadButton);
|
|
|
|
cancelDownloadButton.SetLabel("Download STOP");
|
|
cancelDownloadButton.LeftPos(10, 150).TopPos(40, 20);
|
|
cancelDownloadButton.Disable();
|
|
cancelDownloadButton <<= THISBACK1(ActionDownloadStop, true);
|
|
ctrl.Add(cancelDownloadButton);
|
|
|
|
downloadResult.LeftPos(10, 750).TopPos(75, 330);
|
|
ctrl.Add(downloadResult);
|
|
}
|
|
|
|
void App::ActionDownloadStart()
|
|
{
|
|
if (isProgressCanceled) {
|
|
cancelDownloadButton.Enable();
|
|
CallerInfo caller;
|
|
caller.app = this;
|
|
httpThread.Run(callback1(DownloadThread, caller));
|
|
SetTimeCallback(-50, callback(this, &App::StatusUpdate), 0);
|
|
StatusUpdate();
|
|
}
|
|
}
|
|
|
|
void App::ActionDownloadStop(bool clearResult = false)
|
|
{
|
|
isProgressCanceled = true;
|
|
cancelDownloadButton.Disable();
|
|
statusInfo = "";
|
|
if (clearResult) {
|
|
String result = "";
|
|
downloadResult.Set(result);
|
|
}
|
|
progressDisplay.x = -95;
|
|
KillTimeCallback(0);
|
|
}
|
|
|
|
bool App::ProgressCanceled(int pos, int size)
|
|
{
|
|
return isProgressCanceled;
|
|
}
|
|
|
|
void App::StatusContent(StatusBar& status)
|
|
{
|
|
status = GetTitle().ToString();
|
|
statusInfo.SetDefault(" ");
|
|
statusInfo.Set("");
|
|
status.AddFrame(statusInfo.Right(150));
|
|
progressDisplay.x = -100;
|
|
isProgressCanceled = true;
|
|
}
|
|
|
|
void App::StatusUpdate()
|
|
{
|
|
PaintRect rect(progressDisplay);
|
|
statusInfo.Set(rect);
|
|
if (progressDisplay.x >= 150 - 5) {
|
|
progressDisplay.x = -95;
|
|
} else {
|
|
progressDisplay.x += 5;
|
|
}
|
|
}
|
|
|
|
void App::ActionExit()
|
|
{
|
|
isProgressCanceled = true;
|
|
Close();
|
|
}
|
|
|
|
bool App::Key(dword key, int count)
|
|
{
|
|
/*if(key == K_ESCAPE) {
|
|
ActionExit();
|
|
return true;
|
|
}*/
|
|
return TopWindow::Key(key, count);
|
|
}
|
|
|
|
|
|
GUI_APP_MAIN
|
|
{
|
|
App app;
|
|
app.Run();
|
|
}
|