delay a few things on startup, such as setting the visibility mode, which ensures...
[personal-kdebase.git] / runtime / kcontrol / componentchooser / ktimerdialog.h
blobdae0f0624bd26908dc98eefee28d9c3476ea9662
1 /*
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_
24 #include <QLabel>
26 #include <kdialog.h>
27 #include <kvbox.h>
29 class QTimer;
30 class KHBox;
31 class QProgressBar;
32 class QLabel;
34 /**
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
50 Q_OBJECT
52 public:
54 /**
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
58 * progress.
60 enum TimerStyle
62 CountDown,
63 CountUp,
64 Manual
67 /**
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,
76 bool separator=false,
77 const KGuiItem &user1=KGuiItem(),
78 const KGuiItem &user2=KGuiItem(),
79 const KGuiItem &user3=KGuiItem() );
81 /**
82 * Destructor.
84 ~KTimerDialog();
86 /**
87 * Execute the dialog modelessly - see @see QDialog .
89 virtual void setVisible( bool visible );
91 /**
92 * Set the refresh interval for the timer progress. Defaults to one second.
94 void setRefreshInterval( int msec );
96 /**
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 );
124 Q_SIGNALS:
126 * Signal which is emitted once the timer has timed out.
128 void timerTimeout();
130 public Q_SLOTS:
132 * Execute the dialog modally - see @see QDialog .
134 int exec();
136 private Q_SLOTS:
138 * Updates the dialog with the current progress levels.
140 void slotUpdateTime( bool update = true );
143 * The internal
145 void slotInternalTimeout();
147 private:
149 * Prepares the layout that manages the widgets of the dialog
151 void setupLayout();
153 QTimer *totalTimer;
154 QTimer *updateTimer;
155 int msecRemaining, updateInterval, msecTotal;
157 ButtonCode buttonOnTimeout;
158 TimerStyle tStyle;
160 KHBox *timerWidget;
161 QProgressBar *timerProgress;
162 QLabel *timerLabel;
163 KVBox *mainWidget;
165 class KTimerDialogPrivate;
166 KTimerDialogPrivate *d;
169 #endif