2 * This file is part of the KDE Libraries
3 * Copyright (C) 2002 Hamish Rodda <rodda@kde.org>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
21 #ifndef _KTIMERDIALOG_H_
22 #define _KTIMERDIALOG_H_
35 * Provides a dialog that is only available for a specified amount
36 * of time, and reports the time remaining to the user.
38 * The timer is capable of counting up or down, for any number of milliseconds.
40 * The button which is activated upon timeout can be specified, as can the
41 * update interval for the dialog box.
43 * In addition, this class retains all of the functionality of @see KDialog.
45 * @short A dialog with a time limit and corresponding UI features.
46 * @author Hamish Rodda <rodda@kde.org>
48 class KTimerDialog
: public KDialog
55 * @li @p CountDown - The timer counts downwards from the seconds given.
56 * @li @p CountUp - The timer counts up to the number of seconds given.
57 * @li @p Manual - The timer is not invoked; the caller must update the
68 * Constructor for the standard mode where you must specify the main
69 * widget with @ref setMainWidget() . See @see KDialog for further details.
71 * For the rest of the arguments, See @see KDialog .
73 explicit KTimerDialog( int msec
, TimerStyle style
=CountDown
, QWidget
*parent
=0,
74 const QString
&caption
=QString(),
75 int buttonMask
=Ok
|Apply
|Cancel
, ButtonCode defaultButton
=Ok
,
77 const KGuiItem
&user1
=KGuiItem(),
78 const KGuiItem
&user2
=KGuiItem(),
79 const KGuiItem
&user3
=KGuiItem() );
87 * Execute the dialog modelessly - see @see QDialog .
89 virtual void setVisible( bool visible
);
92 * Set the refresh interval for the timer progress. Defaults to one second.
94 void setRefreshInterval( int msec
);
97 * Retrieves the @ref ButtonCode which will be activated once the timer
98 * times out. @see setTimeoutButton
100 int timeoutButton() const;
103 * Sets the @ref ButtonCode to determine which button will be activated
104 * once the timer times out. @see timeoutButton
106 void setTimeoutButton( ButtonCode newButton
);
109 * Retrieves the current @ref TimerStyle. @see setTimerStyle
111 int timerStyle() const;
114 * Sets the @ref TimerStyle. @see timerStyle
116 void setTimerStyle( TimerStyle newStyle
);
119 * Overridden function which is used to set the main widget of the dialog.
120 * @see KDialog::setMainWidget.
122 void setMainWidget( QWidget
*widget
);
126 * Signal which is emitted once the timer has timed out.
132 * Execute the dialog modally - see @see QDialog .
138 * Updates the dialog with the current progress levels.
140 void slotUpdateTime( bool update
= true );
145 void slotInternalTimeout();
149 * Prepares the layout that manages the widgets of the dialog
155 int msecRemaining
, updateInterval
, msecTotal
;
157 ButtonCode buttonOnTimeout
;
161 QProgressBar
*timerProgress
;
165 class KTimerDialogPrivate
;
166 KTimerDialogPrivate
*d
;