8907154c1a
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
123 lines
2.9 KiB
C++
123 lines
2.9 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/palmos/progdlg.cpp
|
|
// Purpose: wxProgressDialog implementation
|
|
// Author: Wlodzimierz ABX Skiba
|
|
// Modified by:
|
|
// Created: 29.12.2004
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Wlodzimierz Skiba
|
|
// License: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/string.h"
|
|
#endif //WX_PRECOMP
|
|
|
|
#if wxUSE_PROGRESSDLG
|
|
|
|
#include "wx/progdlg.h"
|
|
#include "wx/msgdlg.h"
|
|
|
|
#include <Progress.h>
|
|
#include <SysEvtMgr.h>
|
|
|
|
IMPLEMENT_CLASS(wxProgressDialog, wxDialog)
|
|
|
|
static Boolean wxProgressCallback(PrgCallbackData *data)
|
|
{
|
|
if(!data)
|
|
return false;
|
|
|
|
wxProgressDialog *dialog = (wxProgressDialog *)data->userDataP;
|
|
|
|
if(!dialog)
|
|
return false;
|
|
|
|
return dialog->Callback(data);
|
|
}
|
|
|
|
wxProgressDialog::wxProgressDialog(const wxString &title,
|
|
wxString const &message,
|
|
int maximum,
|
|
wxWindow *parent,
|
|
int style)
|
|
:wxDialog(parent, wxID_ANY, title),
|
|
m_prgFrame(NULL),
|
|
m_msg(message),
|
|
m_cur(0),
|
|
m_max(maximum),
|
|
m_canSkip((style & wxPD_CAN_SKIP )==wxPD_CAN_SKIP)
|
|
{
|
|
wxString prgTitle = title.Mid(0, progressMaxTitle);
|
|
|
|
m_prgFrame = PrgStartDialog(prgTitle.ToAscii(), wxProgressCallback, this);
|
|
}
|
|
|
|
wxProgressDialog::~wxProgressDialog()
|
|
{
|
|
if(m_prgFrame)
|
|
{
|
|
PrgStopDialog((ProgressType *)m_prgFrame, false);
|
|
m_prgFrame = NULL;
|
|
}
|
|
}
|
|
|
|
bool wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
|
{
|
|
if(!m_prgFrame)
|
|
return false;
|
|
if(!newmsg.empty())
|
|
m_msg = newmsg;
|
|
m_cur = value;
|
|
|
|
EventType event;
|
|
|
|
ProgressType *prg = (ProgressType *)m_prgFrame;
|
|
do
|
|
{
|
|
EvtGetEvent(&event, 0);
|
|
Boolean handled = PrgHandleEvent(prg, &event);
|
|
if (!PrgHandleEvent(prg, &event))
|
|
if( PrgUserCancel(prg) )
|
|
return false;
|
|
}
|
|
while(event.eType != sysEventNilEvent);
|
|
|
|
PrgUpdateDialog(prg, 0, 0, "", true);
|
|
|
|
m_activeSkip = m_canSkip && true;
|
|
|
|
return true;
|
|
}
|
|
|
|
void wxProgressDialog::Resume()
|
|
{
|
|
}
|
|
|
|
bool wxProgressDialog::Show(bool show)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
Boolean wxProgressDialog::Callback(void *data)
|
|
{
|
|
PrgCallbackData *palmData = (PrgCallbackData *)data;
|
|
strncpy( palmData->textP, m_msg.ToAscii() , palmData->textLen - 1 );
|
|
palmData->textChanged = true;
|
|
palmData->displaySkipBtn = m_canSkip;
|
|
palmData->barMaxValue = (uint32_t)m_max;
|
|
palmData->barCurValue = (uint32_t)m_cur;
|
|
palmData->delay = (m_max == m_cur);
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif // wxUSE_PROGRESSDLG
|