Applied patches to the qt4 versions.
[pinentry.git] / qt4 / pinentrydialog.h
1 /*
2    pinentrydialog.h - A (not yet) secure Qt 4 dialog for PIN entry.
3
4    Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB)
5    Copyright 2007 Ingo Klöcker
6
7    Written by Steffen Hansen <steffen@klaralvdalens-datakonsult.se>.
8
9    This program is free software; you can redistribute it and/or
10    modify it under the terms of the GNU General Public License as
11    published by the Free Software Foundation; either version 2 of the
12    License, or (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful, but
15    WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17    General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 */
23
24 #ifndef __PINENTRYDIALOG_H__
25 #define __PINENTRYDIALOG_H__
26
27 #include <QProgressBar>
28 #include <QDialog>
29 #include <QStyle>
30
31 #include "secstring.h"
32 #include "pinentry.h"
33
34 class QLabel;
35 class QPushButton;
36 class QSecureLineEdit;
37 class QString;
38
39 QPixmap icon( QStyle::StandardPixmap which = QStyle::SP_CustomBase );
40
41 void raiseWindow( QWidget* w );
42
43 class PinEntryDialog : public QDialog {
44   Q_OBJECT
45
46   Q_PROPERTY( QString description READ description WRITE setDescription )
47   Q_PROPERTY( QString error READ error WRITE setError )
48   Q_PROPERTY( secqstring pin READ pin WRITE setPin )
49   Q_PROPERTY( QString prompt READ prompt WRITE setPrompt )
50 public:
51   friend class PinEntryController; // TODO: remove when assuan lets me use Qt eventloop.
52   explicit PinEntryDialog( QWidget* parent = 0, const char* name = 0, bool modal = false, bool enable_quality_bar = false );
53
54   void setDescription( const QString& );
55   QString description() const;
56
57   void setError( const QString& );
58   QString error() const;
59
60   void setPin( const secqstring & );
61   secqstring pin() const;
62
63   void setPrompt( const QString& );
64   QString prompt() const;
65
66   void setOkText( const QString& );
67   void setCancelText( const QString& );
68
69   void setQualityBar( const QString& );
70   void setQualityBarTT( const QString& );
71
72   void setPinentryInfo (pinentry_t);
73
74 public slots:
75   void updateQuality(const secqstring&);
76
77 signals:
78   void accepted();
79   void rejected();
80
81 protected:
82   /* reimp */ void showEvent( QShowEvent* event );
83   /* reimp */ void keyPressEvent( QKeyEvent *e );
84   /* reimp */ void hideEvent( QHideEvent* );
85   /* reimp */ void paintEvent( QPaintEvent* event );
86
87 private Q_SLOTS:
88   void setFixedSize();
89
90 private:
91   QLabel*    _icon;
92   QLabel*    _desc;
93   QLabel*    _error;
94   QLabel*    _prompt;
95   QLabel*    _quality_bar_label;
96   QProgressBar* _quality_bar;
97   QSecureLineEdit* _edit;
98   QPushButton* _ok;
99   QPushButton* _cancel;
100   bool       _grabbed;
101   bool       _have_quality_bar;
102   pinentry_t _pinentry_info;
103 };
104
105 #endif // __PINENTRYDIALOG_H__