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) )
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
// 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
static const int max = 100;
wxProgressDialog dialog(_T("Progress dialog example"),
_T("An informative message"),
@ -1109,80 +1083,48 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
wxPD_ELAPSED_TIME |
wxPD_ESTIMATED_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 skip = false;
// 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 )
for ( int i = 0; i <= max; i++ )
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
// 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
wxMilliSleep(200);
wxString msg;
// test both behaviours of wxProgressDialog:
// determinate mode for first 33% and last 33% of the time
// indeterminate mode from 33% to 66% of the progress
const int firstpart = max /3,
secondpart = 2 * max /3;
bool determinate = i < firstpart || i > secondpart;
bool indeterminate = !determinate;
// test both modes of wxProgressDialog behaviour: start in
// indeterminate mode but switch to the determinate one later
const bool determinate = i > max/2;
if ( i == max )
{
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)
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
// will be set to true if "Skip" button was pressed
bool skip = false;
if ( determinate )
{
cont = dialog.Update(i, msg, &skip);
}
#else
cont = dialog.Update(i, msg, &skip);
#endif
}
else
{
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
{
cont = dialog.Pulse(msg, &skip);
}
#else
cont = dialog.Pulse(msg, &skip);
#endif
}
// each skip will move progress about quarter forward
if ( skip )
i += max/4;
if ( !cont )
{
if ( wxMessageBox(_T("Do you really want to cancel?"),