Removed all duplicated and complicated #ifdefs for enabling Skip and Abort in progress dialog (Smartphone fixes).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
fa9a4f7f81
commit
69c695466d
@ -84,6 +84,13 @@ private:
|
||||
// as the next windows in the sizer, returns the created control
|
||||
wxStaticText *CreateLabel(const wxString& text, wxSizer *sizer);
|
||||
|
||||
// shortcuts for enabling buttons
|
||||
void EnableClose();
|
||||
void EnableSkip(bool enable=true);
|
||||
void EnableAbort(bool enable=true);
|
||||
inline void DisableSkip() { EnableSkip(false); }
|
||||
inline void DisableAbort() { EnableAbort(false); }
|
||||
|
||||
// the status bar
|
||||
wxGauge *m_gauge;
|
||||
// the message displayed
|
||||
@ -102,48 +109,51 @@ private:
|
||||
// parent top level window (may be NULL)
|
||||
wxWindow *m_parentTop;
|
||||
|
||||
// continue processing or not (return value for Update())
|
||||
enum
|
||||
{
|
||||
Uncancelable = -1, // dialog can't be canceled
|
||||
Canceled, // can be cancelled and, in fact, was
|
||||
Continue, // can be cancelled but wasn't
|
||||
Finished // finished, waiting to be removed from screen
|
||||
} m_state;
|
||||
// continue processing or not (return value for Update())
|
||||
enum
|
||||
{
|
||||
Uncancelable = -1, // dialog can't be canceled
|
||||
Canceled, // can be cancelled and, in fact, was
|
||||
Continue, // can be cancelled but wasn't
|
||||
Finished // finished, waiting to be removed from screen
|
||||
} m_state;
|
||||
|
||||
// skip some portion
|
||||
bool m_skip;
|
||||
// skip some portion
|
||||
bool m_skip;
|
||||
|
||||
#if !defined(__SMARTPHONE__)
|
||||
// the abort and skip buttons (or NULL if none)
|
||||
wxButton *m_btnAbort;
|
||||
wxButton *m_btnSkip;
|
||||
// the abort and skip buttons (or NULL if none)
|
||||
wxButton *m_btnAbort;
|
||||
wxButton *m_btnSkip;
|
||||
#endif
|
||||
|
||||
// the maximum value
|
||||
int m_maximum;
|
||||
// the maximum value
|
||||
int m_maximum;
|
||||
|
||||
// saves the time when elapsed time was updated so there is only one
|
||||
// update per second
|
||||
unsigned long m_last_timeupdate;
|
||||
// tells how often a change of the estimated time has to be confirmed
|
||||
// before it is actually displayed - this reduces the frequence of updates
|
||||
// of estimated and remaining time
|
||||
const int m_delay;
|
||||
// counts the confirmations
|
||||
int m_ctdelay;
|
||||
unsigned long m_display_estimated;
|
||||
// saves the time when elapsed time was updated so there is only one
|
||||
// update per second
|
||||
unsigned long m_last_timeupdate;
|
||||
// tells how often a change of the estimated time has to be confirmed
|
||||
// before it is actually displayed - this reduces the frequence of updates
|
||||
// of estimated and remaining time
|
||||
const int m_delay;
|
||||
// counts the confirmations
|
||||
int m_ctdelay;
|
||||
unsigned long m_display_estimated;
|
||||
|
||||
bool m_hasAbortButton,
|
||||
m_hasSkipButton;
|
||||
|
||||
#if defined(__WXMSW__ ) || defined(__WXPM__)
|
||||
// the factor we use to always keep the value in 16 bit range as the native
|
||||
// control only supports ranges from 0 to 65,535
|
||||
size_t m_factor;
|
||||
// the factor we use to always keep the value in 16 bit range as the native
|
||||
// control only supports ranges from 0 to 65,535
|
||||
size_t m_factor;
|
||||
#endif // __WXMSW__
|
||||
|
||||
// for wxPD_APP_MODAL case
|
||||
class WXDLLEXPORT wxWindowDisabler *m_winDisabler;
|
||||
// for wxPD_APP_MODAL case
|
||||
class WXDLLEXPORT wxWindowDisabler *m_winDisabler;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_EVENT_TABLE()
|
||||
private:
|
||||
// Virtual function hiding supression
|
||||
virtual void Update() { wxDialog::Update(); }
|
||||
|
@ -103,21 +103,23 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
|
||||
int style)
|
||||
: wxDialog(parent, wxID_ANY, title),
|
||||
m_skip(false),
|
||||
m_delay(3)
|
||||
m_delay(3),
|
||||
m_hasAbortButton(false),
|
||||
m_hasSkipButton(false)
|
||||
{
|
||||
// we may disappear at any moment, let the others know about it
|
||||
SetExtraStyle(GetExtraStyle() | wxWS_EX_TRANSIENT);
|
||||
m_windowStyle |= style;
|
||||
|
||||
bool hasAbortButton = (style & wxPD_CAN_ABORT) != 0;
|
||||
bool hasSkipButton = (style & wxPD_CAN_SKIP) != 0;
|
||||
m_hasAbortButton = (style & wxPD_CAN_ABORT) != 0;
|
||||
m_hasSkipButton = (style & wxPD_CAN_SKIP) != 0;
|
||||
|
||||
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||
// we have to remove the "Close" button from the title bar then as it is
|
||||
// confusing to have it - it doesn't work anyhow
|
||||
//
|
||||
// FIXME: should probably have a (extended?) window style for this
|
||||
if ( !hasAbortButton )
|
||||
if ( !m_hasAbortButton )
|
||||
{
|
||||
EnableCloseButton(false);
|
||||
}
|
||||
@ -127,7 +129,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
|
||||
SetLeftMenu();
|
||||
#endif
|
||||
|
||||
m_state = hasAbortButton ? Continue : Uncancelable;
|
||||
m_state = m_hasAbortButton ? Continue : Uncancelable;
|
||||
m_maximum = maximum;
|
||||
|
||||
#if defined(__WXMSW__) || defined(__WXPM__)
|
||||
@ -214,9 +216,9 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
|
||||
}
|
||||
|
||||
#if defined(__SMARTPHONE__)
|
||||
if ( hasSkipButton )
|
||||
if ( m_hasSkipButton )
|
||||
SetRightMenu(wxID_SKIP, _("Skip"));
|
||||
if ( hasAbortButton )
|
||||
if ( m_hasAbortButton )
|
||||
SetLeftMenu(wxID_CANCEL);
|
||||
#else
|
||||
m_btnAbort = m_btnSkip = (wxButton *)NULL;
|
||||
@ -231,7 +233,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
|
||||
#endif // MSW/!MSW
|
||||
;
|
||||
|
||||
if ( hasSkipButton )
|
||||
if ( m_hasSkipButton )
|
||||
{
|
||||
m_btnSkip = new wxButton(this, wxID_SKIP, _("Skip"));
|
||||
|
||||
@ -241,7 +243,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title,
|
||||
sizeDlgModified = true;
|
||||
}
|
||||
|
||||
if ( hasAbortButton )
|
||||
if ( m_hasAbortButton )
|
||||
{
|
||||
m_btnAbort = new wxButton(this, wxID_CANCEL);
|
||||
|
||||
@ -414,26 +416,10 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
||||
m_state = Finished;
|
||||
if( !(GetWindowStyle() & wxPD_AUTO_HIDE) )
|
||||
{
|
||||
#if defined(__SMARTPHONE__)
|
||||
SetLeftMenu(wxID_CANCEL, _("Close"));
|
||||
SetRightMenu();
|
||||
#endif
|
||||
if ( m_btnSkip )
|
||||
{
|
||||
// tell the user what he should do...
|
||||
m_btnSkip->Disable();
|
||||
}
|
||||
|
||||
if ( m_btnAbort )
|
||||
{
|
||||
// tell the user what he should do...
|
||||
m_btnAbort->SetLabel(_("Close"));
|
||||
}
|
||||
EnableClose();
|
||||
DisableSkip();
|
||||
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||
else // enable the button to give the user a way to close the dlg
|
||||
{
|
||||
EnableCloseButton();
|
||||
}
|
||||
EnableCloseButton();
|
||||
#endif // __WXMSW__
|
||||
|
||||
if ( !newmsg.empty() )
|
||||
@ -466,8 +452,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
||||
{
|
||||
*skip = true;
|
||||
m_skip = false;
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Enable();
|
||||
EnableSkip();
|
||||
}
|
||||
}
|
||||
|
||||
@ -483,19 +468,9 @@ void wxProgressDialog::Resume()
|
||||
m_ctdelay = m_delay; // force an update of the elapsed/estimated/remaining time
|
||||
m_break += wxGetCurrentTime()-m_timeStop;
|
||||
|
||||
// it may have been disabled by OnCancel(), so enable it back to let the
|
||||
// user interrupt us again if needed
|
||||
if(m_btnAbort)
|
||||
m_btnAbort->Enable();
|
||||
|
||||
// enable skipping because the one before OnCancel() is no more valid
|
||||
EnableAbort();
|
||||
EnableSkip();
|
||||
m_skip = false;
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Enable();
|
||||
|
||||
#if defined(__SMARTPHONE__)
|
||||
SetLeftMenu(wxID_CANCEL, _("Cancel"));
|
||||
#endif
|
||||
}
|
||||
|
||||
bool wxProgressDialog::Show( bool show )
|
||||
@ -527,16 +502,10 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event)
|
||||
// will handle it
|
||||
m_state = Canceled;
|
||||
|
||||
// update the button state immediately so that the user knows that the
|
||||
// update the buttons state immediately so that the user knows that the
|
||||
// request has been noticed
|
||||
if(m_btnAbort)
|
||||
m_btnAbort->Disable();
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Disable();
|
||||
|
||||
#if defined(__SMARTPHONE__)
|
||||
SetLeftMenu();
|
||||
#endif
|
||||
DisableAbort();
|
||||
DisableSkip();
|
||||
|
||||
// save the time when the dialog was stopped
|
||||
m_timeStop = wxGetCurrentTime();
|
||||
@ -545,8 +514,7 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event)
|
||||
|
||||
void wxProgressDialog::OnSkip(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Disable();
|
||||
DisableSkip();
|
||||
m_skip = true;
|
||||
}
|
||||
|
||||
@ -566,14 +534,9 @@ void wxProgressDialog::OnClose(wxCloseEvent& event)
|
||||
{
|
||||
// next Update() will notice it
|
||||
m_state = Canceled;
|
||||
if(m_btnAbort)
|
||||
m_btnAbort->Disable();
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Disable();
|
||||
DisableAbort();
|
||||
DisableSkip();
|
||||
|
||||
#if defined(__SMARTPHONE__)
|
||||
SetLeftMenu();
|
||||
#endif
|
||||
m_timeStop = wxGetCurrentTime();
|
||||
}
|
||||
}
|
||||
@ -621,4 +584,52 @@ static void SetTimeLabel(unsigned long val, wxStaticText *label)
|
||||
}
|
||||
}
|
||||
|
||||
void wxProgressDialog::EnableSkip(bool enable)
|
||||
{
|
||||
if(m_hasSkipButton)
|
||||
{
|
||||
#ifdef __SMARTPHONE__
|
||||
if(enable)
|
||||
SetRightMenu(wxID_SKIP, _("Skip"));
|
||||
else
|
||||
SetRightMenu();
|
||||
#else
|
||||
if(m_btnSkip)
|
||||
m_btnSkip->Enable(enable);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void wxProgressDialog::EnableAbort(bool enable)
|
||||
{
|
||||
if(m_hasAbortButton)
|
||||
{
|
||||
#ifdef __SMARTPHONE__
|
||||
if(enable)
|
||||
SetLeftMenu(wxID_CANCEL, _("Cancel"));
|
||||
else
|
||||
SetLeftMenu();
|
||||
#else
|
||||
if(m_btnAbort)
|
||||
m_btnAbort->Enable(enable);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void wxProgressDialog::EnableClose()
|
||||
{
|
||||
if(m_hasAbortButton)
|
||||
{
|
||||
#ifdef __SMARTPHONE__
|
||||
SetLeftMenu(wxID_CANCEL, _("Close"));
|
||||
#else
|
||||
if(m_btnAbort)
|
||||
{
|
||||
m_btnAbort->Enable();
|
||||
m_btnAbort->SetLabel(_("Close"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif // wxUSE_PROGRESSDLG
|
||||
|
Loading…
Reference in New Issue
Block a user