]> git.saurik.com Git - wxWidgets.git/blame - src/palmos/progdlg.cpp
applying OSAF patch for "toolbar selection not correct on Mac after calling Realize...
[wxWidgets.git] / src / palmos / progdlg.cpp
CommitLineData
555f645a
WS
1///////////////////////////////////////////////////////////////////////////////
2// Name: src/palmos/progdlg.cpp
3// Purpose: wxProgressDialog implementation
4// Author: Wlodzimierz ABX Skiba
5// Modified by:
6// Created: 29.12.2004
7// RCS-ID: $Id$
8// Copyright: (c) Wlodzimierz Skiba
9// License: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13#pragma implementation "progdlg.h"
14#endif
15
16// For compilers that support precompilation, includes "wx.h".
17#include "wx/wxprec.h"
18
19#ifdef __BORLANDC__
20#pragma hdrstop
21#endif
22
23#ifndef WX_PRECOMP
24 #include "wx/string.h"
25#endif //WX_PRECOMP
26
27#if wxUSE_PROGRESSDLG
28
555f645a
WS
29#include "wx/progdlg.h"
30#include "wx/msgdlg.h"
31
32IMPLEMENT_CLASS(wxProgressDialog, wxDialog)
33
34static Boolean wxProgressCallback(PrgCallbackData *data)
35{
36 if(!data)
37 return false;
38
39 wxProgressDialog *dialog = (wxProgressDialog *)data->userDataP;
40
41 if(!dialog)
42 return false;
43
7d81eb8c 44 return dialog->Callback(data);
555f645a
WS
45}
46
47wxProgressDialog::wxProgressDialog(const wxString &title,
48 wxString const &message,
49 int maximum,
50 wxWindow *parent,
51 int style)
52 :wxDialog(parent, wxID_ANY, title),
53 m_prgFrame(NULL),
54 m_msg(message),
55 m_cur(0),
7d81eb8c
WS
56 m_max(maximum),
57 m_canSkip((style & wxPD_CAN_SKIP )==wxPD_CAN_SKIP)
555f645a
WS
58{
59 wxString prgTitle = title.Mid(0, progressMaxTitle);
7d81eb8c 60
555f645a
WS
61 m_prgFrame = PrgStartDialog(prgTitle.ToAscii(), wxProgressCallback, this);
62}
63
64wxProgressDialog::~wxProgressDialog()
65{
66 if(m_prgFrame)
67 {
68 PrgStopDialog(m_prgFrame, false);
69 m_prgFrame = NULL;
70 }
71}
72
73bool wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
74{
75 if(!m_prgFrame)
76 return false;
77 if(!newmsg.empty())
7d81eb8c 78 m_msg = newmsg;
555f645a 79 m_cur = value;
7d81eb8c
WS
80
81 EventType event;
82
83 do
84 {
85 EvtGetEvent(&event, 0);
86 Boolean handled = PrgHandleEvent(m_prgFrame, &event);
87 if (!PrgHandleEvent(m_prgFrame, &event))
88 if( PrgUserCancel(m_prgFrame) )
89 return false;
90 }
91 while(event.eType != sysEventNilEvent);
92
93 PrgUpdateDialog(m_prgFrame, 0, 0, "", true);
94
95 m_activeSkip = m_canSkip && true;
96
555f645a
WS
97 return true;
98}
99
100void wxProgressDialog::Resume()
101{
102}
103
104bool wxProgressDialog::Show(bool show)
105{
106 return false;
107}
108
7d81eb8c
WS
109Boolean wxProgressDialog::Callback(PrgCallbackData *data)
110{
111 strncpy( data->textP, m_msg.ToAscii() , data->textLen - 1 );
112 data->textChanged = true;
113 data->displaySkipBtn = m_canSkip;
114 data->barMaxValue = (uint32_t)m_max;
115 data->barCurValue = (uint32_t)m_cur;
116 data->delay = (m_max == m_cur);
117
118 return true;
119}
120
555f645a 121#endif // wxUSE_PROGRESSDLG