immortalwrt/package/jsda/njitclient/src-gui/qt4gui/dialogs/mainDlg.cpp
2020-02-01 02:36:42 +08:00

264 lines
6.5 KiB
C++

#include <iostream>
#include "mainDlg.h"
//#include "main.h"
//#include "auth.h"
//#include "thread.h"
//#include "debug.h"
//extern pthread_t pthread;
extern USER userinfo;
MainDlg::MainDlg(QWidget *parent, Qt::WindowFlags f):QDialog(parent,f)
{
setWindowTitle(tr("xClient 802.1x"));
Qt::WindowFlags flags = Qt::Window;
flags |= Qt::WindowMinimizeButtonHint;
flags |= Qt::WindowCloseButtonHint;
setWindowFlags(flags);
initDlg();
createLeftLayout();
createRightLayout();
createBottomLayout();
createMainLayout();
setLayout(mainLayout);
getInfo();
connect(version,SIGNAL(clicked()),this,SLOT(showVersion()));
connect(reset,SIGNAL(clicked()),this,SLOT(resetInfo()));
connect(savePasswdBox,SIGNAL(toggled(bool)),\
this,SLOT(saveInfo()));
connect(start,SIGNAL(clicked()),this,SLOT(startNet()));
connect(stop,SIGNAL(clicked()),this,SLOT(stopNet()));
}
MainDlg::~MainDlg()
{
}
void MainDlg::getInfo()
{
QFile file("info.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_0);
qint32 magic;
in>>magic;
if (magic != (qint32)0xa1a2a3a4)
{
QMessageBox::information(this,"Tips",tr("Invalide file format"));
return;
}
QString userName;
QString passwd;
int netcard;
int startAuto;
int savePasswd;
in>>userName>>passwd>>netcard>>startAuto>>savePasswd;
userEdit->setText(userName);
passwdEdit->setText(passwd);
//passwdEdit->setEchoMode(QLineEdit::Password);
netcardEdit->setCurrentIndex(netcard);
autoStart->setCheckState((startAuto != 0)?Qt::Checked:Qt::Unchecked);
savePasswdBox->setCheckState((savePasswd != 0)?Qt::Unchecked:Qt::Checked);
}
void MainDlg::initDlg()
{
userLabel = new QLabel(tr("UserName"));
passwdLabel = new QLabel(tr("Password"));
netcardLabel = new QLabel(tr("NetCard"));
stateLabel = new QLabel(tr("Status"));
userEdit = new QLineEdit;
passwdEdit = new QLineEdit;
passwdEdit->setEchoMode(QLineEdit::Password);
autoStart = new QCheckBox(tr("Auto Start"));
savePasswdBox = new QCheckBox(tr("Save Passwd"));
netcardEdit = new QComboBox;
netcardEdit->insertItem(0,tr("eth0"));
netcardEdit->insertItem(1,tr("eth1"));
stateText = new QTextEdit;
stateText->setText("Net state...");
copyRight = new QLabel(tr("Author:WangDiwen(From njit) Date:2011-09-01"));
labelIcon = new QLabel();
QPixmap pic("./imags/pic.png");
labelIcon->resize(pic.width(),pic.height());
labelIcon->setPixmap(pic);
start = new QPushButton();
start->setText(tr("StartNet"));
stop = new QPushButton();
stop->setText(tr("StopNet"));
stop->setEnabled(false);
reset = new QPushButton();
reset->setText(tr("ResetNet"));
version = new QPushButton();
version->setText(tr("Version"));
}
void MainDlg::createLeftLayout()
{
leftLayout = new QGridLayout();
int labelCol = 0;
int contentCol1 = 1;
leftLayout->addWidget(userLabel,0,labelCol);
leftLayout->addWidget(userEdit,0,contentCol1);
leftLayout->addWidget(passwdLabel,1,labelCol);
leftLayout->addWidget(passwdEdit,1,contentCol1);
leftLayout->addWidget(netcardLabel,2,labelCol);
leftLayout->addWidget(netcardEdit,2,contentCol1);
leftLayout->addWidget(autoStart,3,labelCol);
leftLayout->addWidget(savePasswdBox,3,contentCol1);
leftLayout->addWidget(stateLabel,4,labelCol,Qt::AlignTop);
leftLayout->addWidget(stateText,4,contentCol1);
leftLayout->setColumnStretch(0,1);
leftLayout->setColumnStretch(1,3);
}
void MainDlg::createRightLayout()
{
rightLayout = new QVBoxLayout();
rightLayout->setMargin(10);
rightLayout->setSpacing(10);
rightLayout->addWidget(start);
rightLayout->addWidget(stop);
rightLayout->addWidget(reset);
rightLayout->addWidget(version);
rightLayout->addStretch();
rightLayout->addWidget(labelIcon);
//rightLayout->setSizeConstraint(QLayout::SetFixedSize);
//rightLayout->setAlignment(Qt::AlignTop);
}
void MainDlg::createBottomLayout()
{
bottomLayout = new QHBoxLayout();
bottomLayout->addWidget(copyRight);
}
void MainDlg::createMainLayout()
{
mainLayout = new QGridLayout(this);
mainLayout->setMargin(10);
mainLayout->setSpacing(10);
mainLayout->addLayout(leftLayout,0,0);
mainLayout->addLayout(rightLayout,0,1);
mainLayout->addLayout(bottomLayout,1,0);
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
}
void MainDlg::startNet()
{
QString user = userEdit->text();
QString pass = passwdEdit->text();
QString net = netcardEdit->currentText();
strcpy(userinfo.username,user.toLatin1().data());
strcpy(userinfo.passwd,pass.toLatin1().data());
strcpy(userinfo.netcard,net.toLatin1().data());
//DPRINTF("user: %s\n",userinfo.username);
//DPRINTF("pass: %s\n",userinfo.passwd);
//DPRINTF("net: %s\n",userinfo.netcard);
//Modified by WangDiwen(njit) for test;
/**
USER userinfo;
userinfo.username = "s-208080236";
userinfo.passwd = "126333";
userinfo.netcard = "eth0";
*/
int ret = -1/*pthread_create(&(pthread), NULL, thread_func, (void *)&userinfo)*/;
if (ret != 0)
{
//exit(ret);
std::cerr<<"create thread failed...\n";
}
std::clog<<"create thread success...\n";
stateText->setText("Connect Server Success!\nIf your net has not connected yet,\nPlease clicked the <startNet> button!\n");
start->setEnabled(false);
stop->setEnabled(true);
userEdit->setEnabled(false);
passwdEdit->setEnabled(false);
netcardEdit->setEnabled(false);
//pthread_join(pthread,NULL);
}
void MainDlg::stopNet()
{
//pthread_cancel(pthread);
start->setEnabled(true);
userEdit->setEnabled(true);
passwdEdit->setEnabled(true);
netcardEdit->setEnabled(true);
stateText->setText("Stop Connect!");
}
void MainDlg::showVersion()
{
QMessageBox::information(this,"Version",tr("xClient 802.1x for Linux!\nBased on QT4.\n\nAuthor:WangDiwen(From njit)\nEmail:dw_wang126@126.com"));
return;
}
void MainDlg::resetInfo()
{
userEdit->setText(tr(""));
passwdEdit->setText(tr(""));
netcardEdit->setCurrentIndex(0);
stateText->setText(tr(""));
return;
}
void MainDlg::saveInfo()
{
QString userName = userEdit->text();
QString passwd = passwdEdit->text();
int netcard = netcardEdit->currentIndex();
int startAuto = autoStart->isChecked()? 1 : 0;
int savePasswd = savePasswdBox->isChecked()? 1 : 0;
QFile file("info.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_0);
out<<(qint32)0xa1a2a3a4;
out<<userName<<passwd<<netcard<<startAuto<<savePasswd;
}
void *thread_func(void *arg)
{
// struct USER *user = (struct USER *)arg;
int ret = -1/*Authentication(user->username,user->passwd,user->netcard)*/;
if (ret == -1)
{
std::cerr<<"Authentication failed...\n";
}
std::clog<<"Authentication quit...\n";
// pthread_exit(NULL);
return NULL;
}