Set DISPLAY environment variable if --display option
[pinentry-qt.git] / 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 <QDialog>
28 #include <QStyle>
29
30 #ifdef HAVE_W32CE_SYSTEM 
31 #include <string>
32 #endif
33
34 typedef std::string secstring;
35 typedef QString secqstring;
36 #include <QLineEdit>
37 typedef QLineEdit QSecureLineEdit;
38
39 #include "pinentry.h"
40
41 class QLabel;
42 class QPushButton;
43 class QString;
44 class QProgressBar;
45
46 QPixmap icon( QStyle::StandardPixmap which = QStyle::SP_CustomBase );
47
48 void raiseWindow( QWidget* w );
49
50 class PinEntryDialog : public QDialog {
51   Q_OBJECT
52
53   Q_PROPERTY( QString description READ description WRITE setDescription )
54   Q_PROPERTY( QString error READ error WRITE setError )
55   Q_PROPERTY( secqstring pin READ pin WRITE setPin )
56   Q_PROPERTY( QString prompt READ prompt WRITE setPrompt )
57 public:
58   friend class PinEntryController; // TODO: remove when assuan lets me use Qt eventloop.
59   explicit PinEntryDialog( QWidget* parent = 0, const char* name = 0, bool modal = false, bool enable_quality_bar = false );
60
61   void setDescription( const QString& );
62   QString description() const;
63
64   void setError( const QString& );
65   QString error() const;
66
67   void setPin( const secqstring & );
68   secqstring pin() const;
69
70   void setPrompt( const QString& );
71   QString prompt() const;
72
73   void setOkText( const QString& );
74   void setCancelText( const QString& );
75
76   void setQualityBar( const QString& );
77   void setQualityBarTT( const QString& );
78
79   void setPinentryInfo (pinentry_t);
80
81 public slots:
82   void updateQuality(const QString&);
83
84 protected:
85   /* reimp */ void showEvent( QShowEvent* event );
86   /* reimp */ void hideEvent( QHideEvent* );
87   /* reimp */ void paintEvent( QPaintEvent* event );
88
89 private:
90   QLabel*    _icon;
91   QLabel*    _desc;
92   QLabel*    _error;
93   QLabel*    _prompt;
94   QLabel*    _quality_bar_label;
95   QProgressBar* _quality_bar;
96   QSecureLineEdit* _edit;
97   QPushButton* _ok;
98   QPushButton* _cancel;
99   bool       _grabbed;
100   bool       _have_quality_bar;
101   pinentry_t _pinentry_info;
102 };
103
104 #endif // __PINENTRYDIALOG_H__