reverted change which made the progress dialog more realistic but also made the code vastly more complex (rev 1.116), it's not really needed otherwise than to test the patch it was bundled with; simplified the test code for wxPD_SKIP (rev 1.119); increased the progress counter to see the indeterminate mode marker wrap around

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-10-22 21:18:45 +00:00
parent 2203a18560
commit b2c782f2b4

View File

@@ -1070,33 +1070,7 @@ void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )
void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
{ {
#if wxUSE_STOPWATCH && wxUSE_LONGLONG static const int max = 100;
// check the performance
int countrandomnumbers = 0, count = 0;
wxTimeSpan tsTest(0,0,0,250);
wxDateTime DT2, DT1 = wxDateTime::UNow();
srand(0);
while(1)
{
rand();
++countrandomnumbers;
if ( countrandomnumbers == 1000 )
{
srand(0);
countrandomnumbers = 0;
++count;
DT2 = wxDateTime::UNow();
wxTimeSpan ts = DT2.Subtract( DT1 );
if ( ts.IsLongerThan( tsTest ) )
{
break;
}
}
}
const int max = 40 * count;
#else
static const int max = 10;
#endif // wxUSE_STOPWATCH && wxUSE_LONGLONG
wxProgressDialog dialog(_T("Progress dialog example"), wxProgressDialog dialog(_T("Progress dialog example"),
_T("An informative message"), _T("An informative message"),
@@ -1109,79 +1083,47 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
wxPD_ELAPSED_TIME | wxPD_ELAPSED_TIME |
wxPD_ESTIMATED_TIME | wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME wxPD_REMAINING_TIME
//wxPD_SMOOTH - makes indeterminate mode bar on WinXP very small | wxPD_SMOOTH // - makes indeterminate mode bar on WinXP very small
); );
bool cont = true; bool cont = true;
bool skip = false; for ( int i = 0; i <= max; i++ )
// each skip will move progress about quarter forward
for ( int i = 0; i <= max; i = wxMin(i+(skip?int(max/4):1), max+1), skip = false )
{ {
#if wxUSE_STOPWATCH && wxUSE_LONGLONG wxMilliSleep(200);
// do (almost) the same operations as we did for the performance test
srand(0);
for ( int j = 0; j < 1000; j++ )
{
rand();
if ( j == 999 )
{
DT2 = wxDateTime::UNow();
wxTimeSpan ts = DT2.Subtract( DT1 );
if ( ts.IsLongerThan( tsTest ) )
{
// nothing to do
}
}
}
#else
wxSleep(1);
#endif
wxString msg; wxString msg;
// test both behaviours of wxProgressDialog: // test both modes of wxProgressDialog behaviour: start in
// determinate mode for first 33% and last 33% of the time // indeterminate mode but switch to the determinate one later
// indeterminate mode from 33% to 66% of the progress const bool determinate = i > max/2;
const int firstpart = max /3,
secondpart = 2 * max /3;
bool determinate = i < firstpart || i > secondpart;
bool indeterminate = !determinate;
if ( i == max ) if ( i == max )
{ {
msg = _T("That's all, folks!"); msg = _T("That's all, folks!");
} }
else if ( indeterminate ) else if ( !determinate )
{ {
msg = _T("Now test indeterminate mode"); msg = _T("Testing indeterminate mode");
} }
else if ( i > secondpart ) else if ( determinate )
{ {
msg = _T("Back to determinate mode"); msg = _T("Now in standard determinate mode");
} }
if (determinate) // will be set to true if "Skip" button was pressed
{ bool skip = false;
#if wxUSE_STOPWATCH && wxUSE_LONGLONG if ( determinate )
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
{ {
cont = dialog.Update(i, msg, &skip); cont = dialog.Update(i, msg, &skip);
} }
#else
cont = dialog.Update(i, msg, &skip);
#endif
}
else else
{ {
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
{
cont = dialog.Pulse(msg, &skip); cont = dialog.Pulse(msg, &skip);
} }
#else
cont = dialog.Pulse(msg, &skip); // each skip will move progress about quarter forward
#endif if ( skip )
} i += max/4;
if ( !cont ) if ( !cont )
{ {