1  /*
2   * wpa_gui - UserDataRequest class
3   * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi>
4   *
5   * This software may be distributed under the terms of the BSD license.
6   * See README for more details.
7   */
8  
9  #include "userdatarequest.h"
10  #include "wpagui.h"
11  #include "common/wpa_ctrl.h"
12  
13  
UserDataRequest(QWidget * parent,const char *,bool,Qt::WindowFlags)14  UserDataRequest::UserDataRequest(QWidget *parent, const char *, bool,
15  				 Qt::WindowFlags)
16  	: QDialog(parent)
17  {
18  	setupUi(this);
19  
20  	connect(buttonOk, SIGNAL(clicked()), this, SLOT(sendReply()));
21  	connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
22  	connect(queryEdit, SIGNAL(returnPressed()), this, SLOT(sendReply()));
23  }
24  
25  
~UserDataRequest()26  UserDataRequest::~UserDataRequest()
27  {
28  }
29  
30  
languageChange()31  void UserDataRequest::languageChange()
32  {
33  	retranslateUi(this);
34  }
35  
36  
setParams(WpaGui * _wpagui,const char * reqMsg)37  int UserDataRequest::setParams(WpaGui *_wpagui, const char *reqMsg)
38  {
39  	char *tmp, *pos, *pos2;
40  	wpagui = _wpagui;
41  	tmp = strdup(reqMsg);
42  	if (tmp == NULL)
43  		return -1;
44  	pos = strchr(tmp, '-');
45  	if (pos == NULL) {
46  		free(tmp);
47  		return -1;
48  	}
49  	*pos++ = '\0';
50  	field = tmp;
51  	pos2 = strchr(pos, ':');
52  	if (pos2 == NULL) {
53  		free(tmp);
54  		return -1;
55  	}
56  	*pos2++ = '\0';
57  
58  	networkid = atoi(pos);
59  	queryInfo->setText(pos2);
60  	if (strcmp(tmp, "PASSWORD") == 0) {
61  		queryField->setText(tr("Password: "));
62  		queryEdit->setEchoMode(QLineEdit::Password);
63  	} else if (strcmp(tmp, "NEW_PASSWORD") == 0) {
64  		queryField->setText(tr("New password: "));
65  		queryEdit->setEchoMode(QLineEdit::Password);
66  	} else if (strcmp(tmp, "IDENTITY") == 0)
67  		queryField->setText(tr("Identity: "));
68  	else if (strcmp(tmp, "PASSPHRASE") == 0) {
69  		queryField->setText(tr("Private key passphrase: "));
70  		queryEdit->setEchoMode(QLineEdit::Password);
71  	} else
72  		queryField->setText(field + ":");
73  	free(tmp);
74  
75  	return 0;
76  }
77  
78  
sendReply()79  void UserDataRequest::sendReply()
80  {
81  	char reply[10];
82  	size_t reply_len = sizeof(reply);
83  
84  	if (wpagui == NULL) {
85  		reject();
86  		return;
87  	}
88  
89  	QString cmd = QString(WPA_CTRL_RSP) + field + '-' +
90  		QString::number(networkid) + ':' +
91  		queryEdit->text();
92  	wpagui->ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len);
93  	accept();
94  }
95