looks working...

This commit is contained in:
arcan1s 2014-02-25 16:09:37 +04:00
parent 76877f737e
commit 946b470d11
16 changed files with 240 additions and 37 deletions

View File

@ -56,7 +56,6 @@ QHash<QString, QString> BridgeWidget::getSettings()
if (isOk() == 0) {
if (ui->checkBox_skip->checkState() == Qt::Checked)
bridgeSettings[QString("SkipForwardingDelay")] = QString("yes");
clear();
}
return bridgeSettings;

View File

@ -121,7 +121,6 @@ QHash<QString, QString> EthernetWidget::getSettings()
ethernetSettings[QString("TimeoutCarrier")] = QString(ui->spinBox_timeoutCarrier->value());
if (ui->spinBox_timeoutWpa->value() != 15)
ethernetSettings[QString("TimeoutWPA")] = QString(ui->spinBox_timeoutWpa->value());
clear();
}
return ethernetSettings;

View File

@ -147,7 +147,6 @@ QHash<QString, QString> GeneralWidget::getSettings()
generalSettings[QString("ExecDownPre")] = QString("'") + ui->lineEdit_execDownPre->text() + QString("'");
if (ui->checkBox_forceConnect->checkState() == Qt::Checked)
generalSettings[QString("ForceConnect")] = QString("yes");
clear();
}
return generalSettings;

View File

@ -471,7 +471,6 @@ QHash<QString, QString> IpWidget::getSettings()
dnsOpt.append(QString("'") + ui->listWidget_dnsOptions->item(i)->text() + QString("'"));
ipSettings[QString("DNSOptions")] = dnsOpt.join(QString(" "));
}
clear();
}
return ipSettings;

View File

@ -168,6 +168,7 @@ void MainWindow::createActions()
connect(ui->lineEdit_profile, SIGNAL(returnPressed()), this, SLOT(profileTabLoadProfile()));
connect(ui->pushButton_profile, SIGNAL(clicked(bool)), this, SLOT(profileTabBrowseProfile()));
connect(ui->pushButton_profileClear, SIGNAL(clicked(bool)), this, SLOT(profileTabClear()));
connect(ui->pushButton_profileSave, SIGNAL(clicked(bool)), this, SLOT(profileTabCreateProfile()));
connect(ui->pushButton_profileLoad, SIGNAL(clicked(bool)), this, SLOT(profileTabLoadProfile()));
connect(generalWid->connectionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabChangeState(QString)));
@ -235,7 +236,9 @@ void MainWindow::updateMainTab()
void MainWindow::updateProfileTab()
{
ui->tabWidget->setDisabled(true);
profileTabClear();
ui->tabWidget->setEnabled(true);
}
@ -412,25 +415,6 @@ void MainWindow::profileTabBrowseProfile()
}
void MainWindow::profileTabClear()
{
ui->lineEdit_profile->clear();
generalWid->clear();
ipWid->clear();
bridgeWid->clear();
ethernetWid->clear();
mobileWid->clear();
pppoeWid->clear();
tunnelWid->clear();
tuntapWid->clear();
vlanWid->clear();
wirelessWid->clear();
profileTabChangeState(generalWid->connectionType->currentText());
}
void MainWindow::profileTabChangeState(QString current)
{
if (current == QString("ethernet")) {
@ -545,11 +529,202 @@ void MainWindow::profileTabChangeState(QString current)
}
void MainWindow::profileTabClear()
{
ui->lineEdit_profile->clear();
generalWid->clear();
ipWid->clear();
bridgeWid->clear();
ethernetWid->clear();
mobileWid->clear();
pppoeWid->clear();
tunnelWid->clear();
tuntapWid->clear();
vlanWid->clear();
wirelessWid->clear();
profileTabChangeState(generalWid->connectionType->currentText());
}
void MainWindow::profileTabCreateProfile()
{
// error checking
if (ui->lineEdit_profile->text().isEmpty()) {
return;
}
if (generalWid->isOk() == 1) {
return;
}
else if (generalWid->isOk() == 2) {
return;
}
if ((generalWid->connectionType->currentText() == QString("ethernet")) ||
(generalWid->connectionType->currentText() == QString("wireless")) ||
(generalWid->connectionType->currentText() == QString("bond")) ||
(generalWid->connectionType->currentText() == QString("dummy")) ||
(generalWid->connectionType->currentText() == QString("bridge")) ||
(generalWid->connectionType->currentText() == QString("tunnel")) ||
(generalWid->connectionType->currentText() == QString("tuntap")) ||
(generalWid->connectionType->currentText() == QString("vlan"))) {
if (ipWid->isOk() == 1) {
return;
}
else if (ipWid->isOk() == 2) {
return;
}
}
if (generalWid->connectionType->currentText() == QString("ethernet")) {
if (ethernetWid->isOk() == 1) {
return;
}
}
else if (generalWid->connectionType->currentText() == QString("wireless")) {
if (wirelessWid->isOk() == 1) {
return;
}
else if (wirelessWid->isOk() == 2) {
return;
}
else if (wirelessWid->isOk() == 3) {
return;
}
else if (wirelessWid->isOk() == 4) {
return;
}
else if (wirelessWid->isOk() == 5) {
return;
}
}
else if (generalWid->connectionType->currentText() == QString("bridge")) {
}
else if (generalWid->connectionType->currentText() == QString("pppoe")) {
if (pppoeWid->isOk() == 1) {
return;
}
else if (pppoeWid->isOk() == 2) {
return;
}
else if (pppoeWid->isOk() == 3) {
return;
}
else if (pppoeWid->isOk() == 4) {
return;
}
}
else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) {
if (mobileWid->isOk() == 1) {
return;
}
if (mobileWid->isOk() == 2) {
return;
}
}
else if (generalWid->connectionType->currentText() == QString("tunnel")) {
}
else if (generalWid->connectionType->currentText() == QString("tuntap")) {
if (tuntapWid->isOk() == 1) {
return;
}
if (tuntapWid->isOk() == 2) {
return;
}
}
else if (generalWid->connectionType->currentText() == QString("vlan")) {
if (ethernetWid->isOk() == 1) {
return;
}
}
ui->tabWidget->setDisabled(true);
// read settings
QString profile = ui->lineEdit_profile->text();
QHash<QString, QString> settings;
settings = generalWid->getSettings();
if (generalWid->connectionType->currentText() == QString("ethernet")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = ethernetWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("wireless")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = wirelessWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if ((generalWid->connectionType->currentText() == QString("bond")) ||
(generalWid->connectionType->currentText() == QString("dummy"))) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("bridge")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = bridgeWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("pppoe")) {
QHash<QString, QString> addSettings = pppoeWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("mobile_ppp")) {
QHash<QString, QString> addSettings = mobileWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("tunnel")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = tunnelWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("tuntap")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = tuntapWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
else if (generalWid->connectionType->currentText() == QString("vlan")) {
QHash<QString, QString> addSettings = ipWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = ethernetWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
addSettings = vlanWid->getSettings();
for (int i=0; i<addSettings.keys().count(); i++)
settings.insert(addSettings.keys()[i], addSettings[addSettings.keys()[i]]);
}
// call netctlprofile
QString profileTempName = netctlProfile->createProfile(profile, settings);
if (netctlProfile->copyProfile(profileTempName))
ui->statusBar->showMessage(QApplication::translate("MainWindow", "Done"));
else
ui->statusBar->showMessage(QApplication::translate("MainWindow", "Error"));
updateProfileTab();
}
void MainWindow::profileTabLoadProfile()
{
QString profile = ui->lineEdit_profile->text();
QHash<QString, QString> settings = netctlProfile->getSettingsFromProfile(profile);
printf("%i\n", settings.count());
generalWid->setSettings(settings);
if (generalWid->connectionType->currentText() == QString("ethernet")) {

View File

@ -82,6 +82,7 @@ private slots:
void profileTabBrowseProfile();
void profileTabChangeState(QString current);
void profileTabClear();
void profileTabCreateProfile();
void profileTabLoadProfile();
// wifi tab slots
void wifiTabSetEnabled(bool state);

View File

@ -18,7 +18,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="tab_main">
<attribute name="title">
@ -190,8 +190,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>439</width>
<height>357</height>
<width>429</width>
<height>348</height>
</rect>
</property>
<property name="sizePolicy">
@ -356,7 +356,7 @@
<x>0</x>
<y>0</y>
<width>471</width>
<height>23</height>
<height>20</height>
</rect>
</property>
<widget class="QMenu" name="menuMenu">

View File

@ -120,7 +120,6 @@ QHash<QString, QString> MobileWidget::getSettings()
mobileSettings[QString("UsePeerDNS")] = QString("false");
if (!ui->lineEdit_options->text().isEmpty())
mobileSettings[QString("OptionsFile")] = QString("'") + ui->lineEdit_options->text() + QString("'");
clear();
}
return mobileSettings;

View File

@ -74,7 +74,7 @@ QStringList Netctl::getProfileDescriptions(QStringList profileList)
else if (fileStr[0] != '#')
if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2)
if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("Description"))
descriptions.append(fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0]);
descriptions.append(fileStr.split(QString("="), QString::SkipEmptyParts)[1].remove(QString("\n")));
}
else
descriptions.append(QString("<unknown>"));
@ -125,7 +125,7 @@ QString Netctl::getSsidFromProfile(QString profile)
else if (fileStr[0] != '#') {
if (fileStr.split(QString("="), QString::SkipEmptyParts).count() == 2)
if (fileStr.split(QString("="), QString::SkipEmptyParts)[0] == QString("ESSID"))
ssidName = fileStr.split(QString("="), QString::SkipEmptyParts)[1].split(QString("\n"), QString::SkipEmptyParts)[0];
ssidName = fileStr.split(QString("="), QString::SkipEmptyParts)[1].remove(QString("\n"));
}
}

View File

@ -18,6 +18,9 @@
#include "netctlprofile.h"
#include <QFile>
#include <QFileInfo>
#include <QProcess>
#include <QTextStream>
#include "mainwindow.h"
@ -37,6 +40,38 @@ NetctlProfile::~NetctlProfile()
}
bool NetctlProfile::copyProfile(QString oldPath)
{
QString newPath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(oldPath).fileName();
QProcess command;
command.start(sudoCommand + QString(" /usr/bin/cp ") + oldPath + QString(" ") + newPath);
command.waitForFinished(-1);
if (command.exitCode() == 0)
return true;
else
return false;
}
QString NetctlProfile::createProfile(QString profile, QHash<QString, QString> settings)
{
QString profileTempName = QDir::homePath() + QDir::separator() +
QString(".cache") + QDir::separator() + QFileInfo(profile).fileName();
QFile profileFile(profileTempName);
if (!profileFile.open(QIODevice::WriteOnly | QIODevice::Text))
return profileTempName;
QTextStream out(&profileFile);
for (int i=0; i<settings.keys().count(); i++)
out << settings.keys()[i] << QString("=") << settings[settings.keys()[i]] << QString("\n");
profileFile.close();
return profileTempName;
}
QHash<QString, QString> NetctlProfile::getSettingsFromProfile(QString profile)
{
QHash<QString, QString> settings;

View File

@ -33,6 +33,8 @@ public:
QString profileDir = QString(""),
QString sudoPath = QString(""));
~NetctlProfile();
bool copyProfile(QString oldPath);
QString createProfile(QString profile, QHash<QString, QString> settings);
QHash<QString, QString> getSettingsFromProfile(QString profile);
private:

View File

@ -161,7 +161,6 @@ QHash<QString, QString> PppoeWidget::getSettings()
pppoeSettings[QString("PPPoEMAC")] = QString("'") + ui->lineEdit_mac->text() + QString("'");
if (ui->checkBox_ipv6->checkState() == Qt::Checked)
pppoeSettings[QString("PPPoEIP6")] = QString("yes");
clear();
}
return pppoeSettings;

View File

@ -93,7 +93,6 @@ QHash<QString, QString> TunnelWidget::getSettings()
tunnelSettings[QString("Local")] = QString("'") + getIp(ui->lineEdit_local->text().remove(QString(" "))) + QString("'");
if (!ui->lineEdit_remote->text().split(QString(".")).join(QString("")).remove(QString(" ")).isEmpty())
tunnelSettings[QString("Remote")] = QString("'") + getIp(ui->lineEdit_remote->text().remove(QString(" "))) + QString("'");
clear();
}
return tunnelSettings;

View File

@ -59,7 +59,6 @@ QHash<QString, QString> TuntapWidget::getSettings()
tuntapSettings[QString("Mode")] = QString("'") + ui->comboBox_mode->currentText() + QString("'");
tuntapSettings[QString("User")] = QString("'") + ui->lineEdit_user->text() + QString("'");
tuntapSettings[QString("Group")] = QString("'") + ui->lineEdit_group->text() + QString("'");
clear();
}
return tuntapSettings;

View File

@ -55,7 +55,6 @@ QHash<QString, QString> VlanWidget::getSettings()
if (isOk() == 0) {
vlanSettings[QString("VLANID")] = QString(ui->spinBox_vlan->value());
clear();
}
return vlanSettings;

View File

@ -232,7 +232,7 @@ QHash<QString, QString> WirelessWidget::getSettings()
wirelessSettings[QString("Priority")] = QString(ui->spinBox_priority->value());
if (!ui->lineEdit_country->text().isEmpty())
wirelessSettings[QString("Country")] = QString("'") + ui->lineEdit_country->text() + QString("'");
if (!ui->lineEdit_wpaGroup->text().isEmpty())
if (ui->lineEdit_wpaGroup->text() != QString("wheel"))
wirelessSettings[QString("WPAGroup")] = QString("'") + ui->lineEdit_wpaGroup->text() + QString("'");
if (ui->listWidget_drivers->count() != 0) {
QStringList drivers;
@ -246,7 +246,6 @@ QHash<QString, QString> WirelessWidget::getSettings()
wirelessSettings[QString("TimeoutWPA")] = QString(ui->spinBox_timeoutWpa->value());
if (ui->checkBox_exclude->checkState() == Qt::Checked)
wirelessSettings[QString("ExcludeAuto")] = QString("yes");
clear();
}
return wirelessSettings;