dfbd19fe934e694930af1443e7e1bbe10b6c23c5
[pinentry.git] / qt4 / pinentryconfirm.cpp
1 /*
2    pinentryconfirm.cpp - A QMessageBox with a timeout
3
4    Copyright (C) 2011 Ben Kibbey <bjk@luxsci.net>
5
6    This program is free software; you can redistribute it and/or
7    modify it under the terms of the GNU General Public License as
8    published by the Free Software Foundation; either version 2 of the
9    License, or (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful, but
12    WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20 #include "pinentryconfirm.h"
21 #include "pinentrydialog.h"
22 #include <QAbstractButton>
23
24 PinentryConfirm::PinentryConfirm(Icon icon, int timeout, const QString &title,
25         const QString &desc, StandardButtons buttons, QWidget *parent) :
26     QMessageBox(icon, title, desc, buttons, parent)
27 {
28     if (timeout > 0) {
29         _timer = new QTimer(this);
30         connect(_timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
31         _timer->start(timeout*1000);
32     }
33     setAccessibleDescription (desc);
34     setAccessibleName (title);
35     raiseWindow (this);
36 }
37
38 void PinentryConfirm::showEvent( QShowEvent* event )
39 {
40     QDialog::showEvent( event );
41     raiseWindow( this );
42 }
43
44 void PinentryConfirm::slotTimeout()
45 {
46     QAbstractButton *b = button(QMessageBox::Cancel);
47
48     if (b)
49         b->animateClick(0);
50 }
51
52 #include "pinentryconfirm.moc"