summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiesecurity/multiauthmainwindow.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libopie2/opiesecurity/multiauthmainwindow.cpp b/libopie2/opiesecurity/multiauthmainwindow.cpp
index e60d245..6404811 100644
--- a/libopie2/opiesecurity/multiauthmainwindow.cpp
+++ b/libopie2/opiesecurity/multiauthmainwindow.cpp
@@ -5,140 +5,141 @@
5 5
6namespace Opie { 6namespace Opie {
7namespace Security { 7namespace Security {
8 8
9/// Initializes widgets according to allowBypass argument (false by default) and explanScreens config 9/// Initializes widgets according to allowBypass argument (false by default) and explanScreens config
10/** 10/**
11 * \note if allowBypass is true, we will show explanatory screens anyway 11 * \note if allowBypass is true, we will show explanatory screens anyway
12 */ 12 */
13MultiauthMainWindow::MultiauthMainWindow(bool allowBypass = false) 13MultiauthMainWindow::MultiauthMainWindow(bool allowBypass = false)
14 : QDialog(0, "main Opie multiauth modal dialog", TRUE, 14 : QDialog(0, "main Opie multiauth modal dialog", TRUE,
15 Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop) 15 Qt::WStyle_NoBorder | Qt::WStyle_Customize | Qt::WStyle_StaysOnTop)
16 16
17{ 17{
18 alreadyDone = false; 18 alreadyDone = false;
19 // initializes widget pointers which not always point to an object 19 // initializes widget pointers which not always point to an object
20 quit = 0; 20 quit = 0;
21 message2 = 0; 21 message2 = 0;
22 22
23 if (allowBypass == true) 23 if (allowBypass == true)
24 explanScreens = true; 24 explanScreens = true;
25 else 25 else
26 { 26 {
27 Config *pcfg = new Config("Security"); 27 Config *pcfg = new Config("Security");
28 pcfg->setGroup("Misc"); 28 pcfg->setGroup("Misc");
29 explanScreens = pcfg->readBoolEntry("explanScreens", true); 29 explanScreens = pcfg->readBoolEntry("explanScreens", true);
30 delete pcfg; 30 delete pcfg;
31 } 31 }
32 32
33 layout = new QVBoxLayout(this); 33 layout = new QVBoxLayout(this);
34 layout->setSpacing(11); 34 layout->setSpacing(11);
35 layout->setMargin(11); 35 layout->setMargin(11);
36 layout->setAlignment( Qt::AlignTop ); 36 layout->setAlignment( Qt::AlignTop );
37 37
38 // if explanScreens is false, we don't show any text in the QDialog, 38 // if explanScreens is false, we don't show any text in the QDialog,
39 // and we proceed directly 39 // and we proceed directly
40 if ( explanScreens == true ) 40 if ( explanScreens == true )
41 { 41 {
42 title = new QLabel("<center><h1>" + tr("Welcome to Opie Multi-authentication Framework") + "</h1></center>", this); 42 title = new QLabel("<center><h1>" + tr("Welcome to Opie Multi-authentication Framework") + "</h1></center>", this);
43 message = new QLabel("<center><h3>" + tr("Launching authentication plugins...") + "</h3></center>", this); 43 message = new QLabel("<center><h3>" + tr("Launching authentication plugins...") + "</h3></center>", this);
44 } else { 44 } else {
45 title = new QLabel("", this); 45 title = new QLabel("", this);
46 message = new QLabel("", this); 46 message = new QLabel("", this);
47 } 47 }
48 48
49 layout->addWidget(title); 49 layout->addWidget(title);
50 layout->addWidget(message); 50 layout->addWidget(message);
51 proceedButton = new QPushButton(tr("Proceed..."), this); 51 proceedButton = new QPushButton(tr("Proceed..."), this);
52 layout->addWidget(proceedButton, 0, Qt::AlignHCenter); 52 layout->addWidget(proceedButton, 0, Qt::AlignHCenter);
53 53
54 QObject::connect(proceedButton, SIGNAL(clicked()), this, SLOT(proceed())); 54 QObject::connect(proceedButton, SIGNAL(clicked()), this, SLOT(proceed()));
55 55
56 if ( explanScreens == true ) 56 if ( explanScreens == true )
57 { 57 {
58 quit = new QPushButton("Exit", this); 58 quit = new QPushButton("Exit", this);
59 layout->addWidget(quit, 0, Qt::AlignHCenter); 59 layout->addWidget(quit, 0, Qt::AlignHCenter);
60 if ( allowBypass == true ) 60 if ( allowBypass == true )
61 { 61 {
62 // very important: we can close the widget through the quit button, and bypass authentication, only if allowBypass is set! 62 // very important: we can close the widget through the quit button, and bypass authentication, only if allowBypass is set!
63 message2 = new QLabel("<center><i>" + tr("Note: this 'exit' button only appears during <b>simulations</b>, like the one we are in. If you don't succeed an authentication step at some point, it will keep on asking you to authenticate, but remember you can <b>skip</b> it too (and have access to this button again).") + "</i></center>", this); 63 message2 = new QLabel("<center><i>" + tr("Note: this 'exit' button only appears during <b>simulations</b>, like the one we are in. If you don't succeed an authentication step at some point, it will keep on asking you to authenticate, but remember you can <b>skip</b> it too (and have access to this button again).") + "</i></center>", this);
64 layout->addWidget(message2); 64 layout->addWidget(message2);
65 QObject::connect(quit, SIGNAL(clicked()), this, SLOT(close())); 65 QObject::connect(quit, SIGNAL(clicked()), this, SLOT(close()));
66 } 66 }
67 else 67 else
68 { 68 {
69 quit->hide(); 69 quit->hide();
70 } 70 }
71 71
72 } 72 }
73 else 73 else
74 { 74 {
75 // we will need this button only if runPlugins() fails in proceed() 75 // we will need this button only if runPlugins() fails in proceed()
76 proceedButton->hide(); 76 proceedButton->hide();
77 // let's proceed now 77 // let's proceed now
78 proceed(); 78 proceed();
79 } 79 }
80} 80}
81 81
82/// nothing to do 82/// nothing to do
83MultiauthMainWindow::~MultiauthMainWindow() { 83MultiauthMainWindow::~MultiauthMainWindow() {
84} 84}
85 85
86/// launch the authentication 86/// launch the authentication
87void MultiauthMainWindow::proceed() { 87void MultiauthMainWindow::proceed() {
88 int result = Internal::runPlugins(); 88 int result = Internal::runPlugins();
89 89
90 90
91 if ( (result == 0) && !explanScreens ) 91 if ( (result == 0) && !explanScreens )
92 { 92 {
93 // the authentication has succeeded, we can exit directly 93 // the authentication has succeeded, we can exit directly
94 // this will work if we haven't been called by the constructor of MultiauthMainWindow 94 // this will work if we haven't been called by the constructor of MultiauthMainWindow
95 close(); 95 close();
96 // and if we've been called by this constructor, we use this variable to tell our 96 // and if we've been called by this constructor, we use this variable to tell our
97 // caller we're already done 97 // caller we're already done
98 alreadyDone = true; 98 alreadyDone = true;
99 return; 99 return;
100 } 100 }
101 else 101 else
102 { 102 {
103 103
104 proceedButton->setText("Another try?"); 104 proceedButton->setText("Another try?");
105 QString resultMessage; 105 QString resultMessage;
106 106
107 if (result == 0) 107 if (result == 0)
108 { 108 {
109 // authentication has succeeded, adapt interface then 109 // authentication has succeeded, adapt interface then
110 message->setText( "<center><h3>" + tr("Congratulations! Your authentication has been successful.") + "</h3></center>" ); 110 message->setText( "<center><h3>" + tr("Congratulations! Your authentication has been successful.") + "</h3></center>" );
111 quit->setText("Enter Opie"); 111 quit->setText("Enter Opie");
112 if ( quit->isHidden() ) 112 if ( quit->isHidden() )
113 { 113 {
114 // that means we don't allow to bypass, but now we can show and connect this button 114 // that means we don't allow to bypass, but now we can show and connect this button
115 QObject::connect(quit, SIGNAL(clicked()), this, SLOT(close())); 115 QObject::connect(quit, SIGNAL(clicked()), this, SLOT(close()));
116 quit->show(); 116 quit->show();
117 } else { 117 } else {
118 if ( message2 != 0 ) message2->hide(); 118 if ( message2 != 0 ) message2->hide();
119 } 119 }
120 } 120 }
121 else 121 else
122 { 122 {
123 // authentication has failed, explain that according to allowBypass 123 // authentication has failed, explain that according to allowBypass
124 message->setText( "<center><h3>" + tr("You have <b>not</b> succeeded enough authentication steps!") + "</h3></center>" ); 124 message->setText( "<center><h3>" + tr("You have <b>not</b> succeeded enough authentication steps!") + "</h3></center>" );
125 proceedButton->show(); 125 proceedButton->show();
126 if ( allowBypass == true ) 126 if ( allowBypass == true )
127 { 127 {
128 message2->setText( "<center><p>" + tr("Be careful: if this was not a <b>simulation</b>, you would have to go back through all the steps now.") + "</p></center>" ); 128 message2->setText( "<center><p>" + tr("Be careful: if this was not a <b>simulation</b>, you would have to go back through all the steps now.") + "</p></center>" );
129 message2->show(); 129 message2->show();
130 } 130 }
131 } 131 }
132} 132}
133}
133 134
134/** When we don't show explanatory screens and we succeed authentication, 135/** When we don't show explanatory screens and we succeed authentication,
135 * as early as during the proceed() call of the constructor, the caller must know 136 * as early as during the proceed() call of the constructor, the caller must know
136 * (through this function) authentication has already been succeeded.. 137 * (through this function) authentication has already been succeeded..
137 * \todo try to avoid this hack? 138 * \todo try to avoid this hack?
138 */ 139 */
139bool MultiauthMainWindow::isAlreadyDone() { 140bool MultiauthMainWindow::isAlreadyDone() {
140 return alreadyDone; 141 return alreadyDone;
141} 142}
142 143
143} 144}
144} 145}