You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtjava/javalib/examples/progressbar/ProgressBar.java

175 lines
4.6 KiB

/***************************************************************************
* $Id$
**
* Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
* This file is part of an example program for Qt. This example
* program may be used, distributed and modified without limitation.
**
****************************************************************************/
import org.kde.qt.*;
class ProgressBar extends QButtonGroup
{
protected QRadioButton slow, normal, fast;
protected QPushButton start, pause, reset;
protected QProgressBar progress;
protected QTimer timer;
/*
Constructor
*
Creates child widgets of the ProgressBar widget
*/
ProgressBar( )
{
this(null, null);
}
ProgressBar( QWidget parent, String name )
{
super( 0, Horizontal, "Progress Bar", parent, name );
timer = new QTimer();
setMargin( 10 );
QGridLayout toplayout = new QGridLayout( layout(), 2, 2, 5);
setRadioButtonExclusive( true );
// insert three radiobuttons which the user can use
// to set the speed of the progress and two pushbuttons
// to start/pause/continue and reset the progress
slow = new QRadioButton( "&Slow", this );
normal = new QRadioButton( "&Normal", this );
fast = new QRadioButton( "&Fast", this );
QVBoxLayout vb1 = new QVBoxLayout();
toplayout.addLayout( vb1, 0, 0 );
vb1.addWidget( slow );
vb1.addWidget( normal );
vb1.addWidget( fast );
// two push buttons, one for start, for for reset.
start = new QPushButton( "&Start", this );
reset = new QPushButton( "&Reset", this );
QVBoxLayout vb2 = new QVBoxLayout();
toplayout.addLayout( vb2, 0, 1 );
vb2.addWidget( start );
vb2.addWidget( reset );
// Create the progressbar
progress = new QProgressBar( 100, this );
// progress.setStyle( new QMotifStyle() );
toplayout.addMultiCellWidget( progress, 1, 1, 0, 1 );
// connect the clicked() SIGNALs of the pushbuttons to SLOTs
connect( start, SIGNAL(" clicked()"), this, SLOT(" slotStart()") );
connect( reset, SIGNAL(" clicked()"), this, SLOT(" slotReset()") );
// connect the timeout() SIGNAL of the progress-timer to a SLOT
connect( timer, SIGNAL(" timeout()"), this, SLOT(" slotTimeout()") );
// Let's start with normal speed...
normal.setChecked( true );
// some contraints
start.setFixedWidth( 80 );
setMinimumWidth( 300 );
}
/*
SLOT slotStart
*
This SLOT is called if the user clicks start/pause/continue
button
*/
void slotStart()
{
// If the progress bar is at the beginning...
if ( progress.progress() == -1 ) {
// ...set according to the checked speed-radiobutton
// the number of steps which are needed to complete the process
if ( slow.isChecked() )
progress.setTotalSteps( 10000 );
else if ( normal.isChecked() )
progress.setTotalSteps( 1000 );
else
progress.setTotalSteps( 50 );
// disable the speed-radiobuttons
slow.setEnabled( false );
normal.setEnabled( false );
fast.setEnabled( false );
}
// If the progress is not running...
if ( !timer.isActive() ) {
// ...start the timer (and so the progress) with a interval of 1 ms...
timer.start( 1 );
// ...and rename the start/pause/continue button to Pause
start.setText( "&Pause" );
} else { // if the prgress is running...
// ...stop the timer (and so the prgress)...
timer.stop();
// ...and rename the start/pause/continue button to Continue
start.setText( "&Continue" );
}
}
/*
SLOT slotReset
*
This SLOT is called when the user clicks the reset button
*/
void slotReset()
{
// stop the timer and progress
timer.stop();
// rename the start/pause/continue button to Start...
start.setText( "&Start" );
// ...and enable this button
start.setEnabled( true );
// enable the speed-radiobuttons
slow.setEnabled( true );
normal.setEnabled( true );
fast.setEnabled( true );
// reset the progressbar
progress.reset();
}
/*
SLOT slotTimeout
*
This SLOT is called each ms when the timer is
active (== progress is running)
*/
void slotTimeout()
{
int p = progress.progress();
// If the progress is complete...
if ( p == progress.totalSteps() ) {
// ...rename the start/pause/continue button to Start...
start.setText( "&Start" );
// ...and disable it...
start.setEnabled( false );
// ...and return
return;
}
// If the process is not complete increase it
progress.setProgress( ++p );
}
}