From 13c63163b1d5c26172776e22a261c30976fd9bb2 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Sat, 22 Feb 2014 00:06:53 +0400 Subject: [PATCH] pppoe widget has been completed --- sources/gui/src/pppoewidget.cpp | 152 ++++++++++++++++++++++++++++++++ sources/gui/src/pppoewidget.h | 12 +++ sources/gui/src/pppoewidget.ui | 88 ++++++++---------- 3 files changed, 199 insertions(+), 53 deletions(-) diff --git a/sources/gui/src/pppoewidget.cpp b/sources/gui/src/pppoewidget.cpp index bbbc09c..cab9627 100644 --- a/sources/gui/src/pppoewidget.cpp +++ b/sources/gui/src/pppoewidget.cpp @@ -18,12 +18,19 @@ #include "pppoewidget.h" #include "ui_pppoewidget.h" +#include +#include +#include + PppoeWidget::PppoeWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PppoeWidget) { ui->setupUi(this); + createActions(); + createFilter(); + clear(); } @@ -31,3 +38,148 @@ PppoeWidget::~PppoeWidget() { delete ui; } + + +void PppoeWidget::clear() +{ + ui->lineEdit_username->clear(); + ui->lineEdit_password->clear(); + ui->comboBox_connection->setCurrentIndex(0); + changeMode(ui->comboBox_connection->currentIndex()); + ui->spinBox_timeout->setValue(300); + ui->spinBox_fail->setValue(5); + ui->checkBox_route->setCheckState(Qt::Checked); + ui->checkBox_dns->setCheckState(Qt::Checked); + ui->lineEdit_unit->clear(); + ui->spinBox_lcpInterval->setValue(30); + ui->spinBox_lcpFailure->setValue(4); + ui->lineEdit_options->clear(); + ui->lineEdit_service->clear(); + ui->lineEdit_ac->clear(); + ui->lineEdit_session->clear(); + ui->lineEdit_mac->clear(); + ui->checkBox_ipv6->setCheckState(Qt::Unchecked); + + ui->pushButton_pppoeAdvanced->setText(QApplication::translate("PppoeWidget", "Hide advanced")); + showAdvanced(); +} + + +void PppoeWidget::createFilter() +{ + // session mac + ui->lineEdit_session->setInputMask(QString(">99999:HH:HH:HH:HH:HH:HH")); + // mac + ui->lineEdit_mac->setInputMask(QString(">HH:HH:HH:HH:HH:HH")); +} + + +void PppoeWidget::createActions() +{ + connect(ui->pushButton_pppoeAdvanced, SIGNAL(clicked(bool)), this, SLOT(showAdvanced())); + connect(ui->comboBox_connection, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMode(int))); + connect(ui->pushButton_options, SIGNAL(clicked(bool)), this, SLOT(selectOptionsFile())); +} + + +void PppoeWidget::changeMode(int index) +{ + if (index == 0) + ui->widget_timeout->setHidden(true); + else if (index == 1) + ui->widget_timeout->setShown(true); +} + + +void PppoeWidget::selectOptionsFile() +{ + QString filename = QFileDialog::getOpenFileName( + this, + QApplication::translate("PppoeWidget", "Select options file"), + QDir::currentPath(), + QApplication::translate("PppoeWidget", "Configuration files (*.conf)")); + if (!filename.isEmpty()) + ui->lineEdit_options->setText(filename); +} + + +void PppoeWidget::showAdvanced() +{ + if (ui->pushButton_pppoeAdvanced->text().indexOf(QString("Show")) > -1) { + ui->widget_pppoeAdvanced->setShown(true); + ui->pushButton_pppoeAdvanced->setText(QApplication::translate("PppoeWidget", "Hide advanced")); + } + else { + ui->widget_pppoeAdvanced->setHidden(true); + ui->pushButton_pppoeAdvanced->setText(QApplication::translate("PppoeWidget", "Show advanced")); + } +} + + +QHash PppoeWidget::getSettings() +{ + QHash pppoeSettings; + + if (isOk() == 0) { + if (!ui->lineEdit_username->text().isEmpty()) + pppoeSettings[QString("User")] = QString("'") + ui->lineEdit_username->text() + QString("'"); + if (!ui->lineEdit_password->text().isEmpty()) + pppoeSettings[QString("Password")] = QString("'") + ui->lineEdit_password->text() + QString("'"); + pppoeSettings[QString("ConnectionMode")] = QString("'") + ui->comboBox_connection->currentText() + QString("'"); + if (ui->comboBox_connection->currentIndex() == 1) + pppoeSettings[QString("IdleTimeout")] = QString(ui->spinBox_timeout->value()); + if (ui->spinBox_fail->value() != 5) + pppoeSettings[QString("MaxFail")] = QString(ui->spinBox_fail->value()); + if (ui->checkBox_route->checkState() == Qt::Unchecked) + pppoeSettings[QString("DefaultRoute")] = QString("false"); + if (ui->checkBox_dns->checkState() == Qt::Unchecked) + pppoeSettings[QString("UsePeerDNS")] = QString("false"); + if (!ui->lineEdit_unit->text().isEmpty()) + pppoeSettings[QString("PPPUnit")] = ui->lineEdit_unit->text(); + if (ui->spinBox_lcpInterval->value() != 30) + pppoeSettings[QString("LCPEchoInterval")] = QString(ui->spinBox_lcpInterval->value()); + if (ui->spinBox_lcpFailure->value() != 4) + pppoeSettings[QString("LCPEchoFailure")] = QString(ui->spinBox_lcpFailure->value()); + if (!ui->lineEdit_options->text().isEmpty()) + pppoeSettings[QString("OptionsFile")] = ui->lineEdit_options->text(); + if (!ui->lineEdit_service->text().isEmpty()) + pppoeSettings[QString("PPPoEService")] = QString("'") + ui->lineEdit_service->text() + QString("'"); + if (!ui->lineEdit_ac->text().isEmpty()) + pppoeSettings[QString("PPPoEAC")] = QString("'") + ui->lineEdit_ac->text() + QString("'"); + if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) + pppoeSettings[QString("PPPoESession")] = QString("'") + ui->lineEdit_session->text().remove(QString(" ")) + QString("'"); + if (!ui->lineEdit_mac->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) + pppoeSettings[QString("PPPoEMAC")] = QString("'") + ui->lineEdit_mac->text() + QString("'"); + if (ui->checkBox_ipv6->checkState() == Qt::Checked) + pppoeSettings[QString("PPPoEIP6")] = QString("yes"); + } + + clear(); + return pppoeSettings; +} + + +int PppoeWidget::isOk() +{ + // config file doesn't exist + if (!ui->lineEdit_options->text().isEmpty()) + if (!QFile(ui->lineEdit_options->text()).exists()) + return 1; + // mac address + if (!ui->lineEdit_mac->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) + if (ui->lineEdit_mac->text().indexOf(QString(" ")) > -1) + return 2; + // session id is not set + if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) + if (ui->lineEdit_session->text().split(QString(":"))[0].remove(QString(" ")).isEmpty()) + return 3; + // session mac address + if (!ui->lineEdit_session->text().split(QString(":")).join(QString("")).remove(QString(" ")).isEmpty()) { + QStringList item = ui->lineEdit_session->text().split(QString(":")); + for (int i=1; i<7; i++) + if (item[i].indexOf(QString(" ")) > -1) + return 4; + } + // all fine + return 0; +} diff --git a/sources/gui/src/pppoewidget.h b/sources/gui/src/pppoewidget.h index 08dd35a..b223b1a 100644 --- a/sources/gui/src/pppoewidget.h +++ b/sources/gui/src/pppoewidget.h @@ -32,9 +32,21 @@ class PppoeWidget : public QWidget public: explicit PppoeWidget(QWidget *parent = 0); ~PppoeWidget(); + QHash getSettings(); + int isOk(); + +public slots: + void clear(); + +private slots: + void changeMode(int index); + void selectOptionsFile(); + void showAdvanced(); private: Ui::PppoeWidget *ui; + void createActions(); + void createFilter(); }; diff --git a/sources/gui/src/pppoewidget.ui b/sources/gui/src/pppoewidget.ui index ae9f3ce..3d58a15 100644 --- a/sources/gui/src/pppoewidget.ui +++ b/sources/gui/src/pppoewidget.ui @@ -7,7 +7,7 @@ 0 0 431 - 549 + 573 @@ -16,12 +16,6 @@ - - - 319 - 47 - - QDockWidget::NoDockWidgetFeatures @@ -113,37 +107,39 @@ - - - - - - 150 - 0 - - - - Idle timeout - - - - - - - This option specifies the idle time (in seconds) after which ‘pppd’ should disconnect - - - 999 - - - 10 - - - 300 - - - - + + + + + + + 150 + 0 + + + + Idle timeout + + + + + + + This option specifies the idle time (in seconds) after which ‘pppd’ should disconnect + + + 999 + + + 10 + + + 300 + + + + + @@ -410,21 +406,7 @@ - - - This option specifies an existing session to attach to, session ID - - - - - - - : - - - - - + This option specifies an existing session to attach to, MAC address