[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [plasma-nm] /: Bond setting widget, WIP, still disabled
From: Lukáš Tinkl <lukas () kde ! org>
Date: 2013-04-30 21:28:05
Message-ID: 20130430212805.B5EF5A603F () git ! kde ! org
[Download RAW message or body]
Git commit 9fc92caa2317af30c67d7f3aca72b7b225c4b79b by Lukáš Tinkl.
Committed on 30/04/2013 at 23:27.
Pushed by lukas into branch 'master'.
Bond setting widget, WIP, still disabled
M +109 -5 editor/bondwidget.cpp
M +10 -2 editor/bondwidget.h
M +62 -37 editor/connectiondetaileditor.cpp
M +15 -3 editor/connectiondetaileditor.h
M +2 -3 editor/connectioneditor.cpp
M +74 -10 editor/ui/bond.ui
M +5 -5 lib/hwaddrcombobox.cpp
http://commits.kde.org/plasma-nm/9fc92caa2317af30c67d7f3aca72b7b225c4b79b
diff --git a/editor/bondwidget.cpp b/editor/bondwidget.cpp
index dde2f18..16bdd52 100644
--- a/editor/bondwidget.cpp
+++ b/editor/bondwidget.cpp
@@ -20,17 +20,51 @@
#include "bondwidget.h"
#include "ui_bond.h"
+#include "connectiondetaileditor.h"
+
+#include <QDebug>
#include <NetworkManagerQt/generic-types.h>
+#include <NetworkManagerQt/connection.h>
#include <KLocalizedString>
-BondWidget::BondWidget(const NetworkManager::Settings::Setting::Ptr &setting, \
QWidget* parent, Qt::WindowFlags f): +#define NM_SETTING_BOND_OPTION_MII_MONITOR \
"mii" +#define NM_SETTING_BOND_OPTION_ARP_MONITOR "arp"
+
+BondWidget::BondWidget(const QString & masterUuid, const \
NetworkManager::Settings::Setting::Ptr &setting, QWidget* parent, Qt::WindowFlags f): \
SettingWidget(setting, parent, f), + m_uuid(masterUuid),
m_ui(new Ui::BondWidget)
{
m_ui->setupUi(this);
+ // Add context menu
+ m_menu = new QMenu(this);
+ QAction * action = new QAction(i18n("Ethernet"), this);
+ action->setData(NetworkManager::Settings::ConnectionSettings::Wired);
+ m_menu->addAction(action);
+ action = new QAction(i18n("InfiniBand"), this);
+ action->setData(NetworkManager::Settings::ConnectionSettings::Infiniband);
+ m_menu->addAction(action);
+ m_ui->btnAdd->setMenu(m_menu);
+ connect(m_menu, SIGNAL(triggered(QAction*)), SLOT(addBond(QAction*)));
+
+ // mode
+ m_ui->mode->addItem(i18nc("bond mode", "Round-robin"), \
QLatin1String("balance-rr")); + m_ui->mode->addItem(i18nc("bond mode", "Active \
backup"), QLatin1String("active-backup")); + m_ui->mode->addItem(i18nc("bond \
mode", "Broadcast"), QLatin1String("broadcast")); + \
m_ui->mode->addItem(i18nc("bond mode", "802.3ad"), QLatin1String("802.3ad")); + \
m_ui->mode->addItem(i18nc("bond mode", "Adaptive transmit load balancing"), \
QLatin1String("balance-tlb")); + m_ui->mode->addItem(i18nc("bond mode", "Adaptive \
load balancing"), QLatin1String("balance-alb")); +
+ // link monitor
+ m_ui->linkMonitoring->addItem(i18nc("bond link monitoring", "MII \
(recommended)"), NM_SETTING_BOND_OPTION_MII_MONITOR); + \
m_ui->linkMonitoring->addItem(i18nc("bond link monitoring", "ARP"), \
NM_SETTING_BOND_OPTION_ARP_MONITOR); +
+ // bonds
+ connect(m_ui->bonds, \
SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), \
SLOT(currentBondChanged(QListWidgetItem*,QListWidgetItem*))); +
if (setting)
loadConfig(setting);
}
@@ -47,20 +81,90 @@ void BondWidget::loadConfig(const \
NetworkManager::Settings::Setting::Ptr &settin
NMStringMap options = bondSetting.options();
- // TODO
+ // mode
+ int modeIndex = \
m_ui->mode->findData(options.value(NM_SETTING_BOND_OPTION_MODE)); + if (modeIndex \
== -1) + modeIndex = 0;
+ m_ui->mode->setCurrentIndex(modeIndex);
+
+ const QString arpTargets = options.value(NM_SETTING_BOND_OPTION_ARP_IP_TARGET);
+ if (!arpTargets.isEmpty()) { // ARP
+ m_ui->linkMonitoring->setCurrentIndex(m_ui->linkMonitoring->findData(NM_SETTING_BOND_OPTION_ARP_MONITOR));
+
+ bool ok = false;
+ const int arpMonFreq = \
options.value(NM_SETTING_BOND_OPTION_ARP_INTERVAL).toInt(&ok); + if (ok && \
arpMonFreq > 0) + m_ui->monitorFreq->setValue(arpMonFreq);
+
+ m_ui->arpTargets->setText(arpTargets);
+ } else { // MII
+ m_ui->linkMonitoring->setCurrentIndex(m_ui->linkMonitoring->findData(NM_SETTING_BOND_OPTION_MII_MONITOR));
+
+ bool ok = false;
+ const int miiMonFreq = \
options.value(NM_SETTING_BOND_OPTION_MIIMON).toInt(&ok); + if (ok && \
miiMonFreq > 0) + m_ui->monitorFreq->setValue(miiMonFreq);
+
+ ok = false;
+ const int upDelay = \
options.value(NM_SETTING_BOND_OPTION_UPDELAY).toInt(&ok); + if (ok && upDelay \
> 0) + m_ui->upDelay->setValue(upDelay);
+
+ ok = false;
+ const int downDelay = \
options.value(NM_SETTING_BOND_OPTION_DOWNDELAY).toInt(&ok); + if (ok && \
downDelay > 0) + m_ui->upDelay->setValue(downDelay);
+ }
}
QVariantMap BondWidget::setting(bool agentOwned) const
{
- Q_UNUSED(agentOwned);
+ Q_UNUSED(agentOwned)
NetworkManager::Settings::BondSetting setting;
setting.setInterfaceName(m_ui->ifaceName->text());
NMStringMap options;
-
- // TODO
+ options.insert(NM_SETTING_BOND_OPTION_MODE, \
m_ui->mode->itemData(m_ui->mode->currentIndex()).toString()); +
+ if (m_ui->linkMonitoring->itemData(m_ui->linkMonitoring->currentIndex()).toString() \
== NM_SETTING_BOND_OPTION_MII_MONITOR) { // MII + \
options.insert(NM_SETTING_BOND_OPTION_MIIMON, \
QString::number(m_ui->monitorFreq->value())); + const int upDelay = \
m_ui->upDelay->value(); + if (upDelay)
+ options.insert(NM_SETTING_BOND_OPTION_UPDELAY, \
QString::number(upDelay)); + const int downDelay = m_ui->downDelay->value();
+ if (downDelay)
+ options.insert(NM_SETTING_BOND_OPTION_DOWNDELAY, \
QString::number(downDelay)); + } else { // ARP
+ options.insert(NM_SETTING_BOND_OPTION_ARP_INTERVAL, \
QString::number(m_ui->monitorFreq->value())); + const QString arpTargets = \
m_ui->arpTargets->text(); + if (!arpTargets.isEmpty())
+ options.insert(NM_SETTING_BOND_OPTION_ARP_IP_TARGET, arpTargets);
+ }
setting.setOptions(options);
return setting.toMap();
}
+
+void BondWidget::addBond(QAction *action)
+{
+ qDebug() << "Adding bonded connection:" << action->data();
+ qDebug() << "Master UUID:" << m_uuid;
+ qDebug() << "Slave type:" << type();
+
+ ConnectionDetailEditor * bondEditor = new \
ConnectionDetailEditor(NetworkManager::Settings::ConnectionSettings::typeFromString(action->data().toString()),
+ this, \
QString(), m_uuid, type()); + if (bondEditor->exec() == QDialog::Accepted) {
+ qDebug() << "Saving slave connection:" << bondEditor->uuid();
+ }
+}
+
+void BondWidget::currentBondChanged(QListWidgetItem *current, QListWidgetItem \
*previous) +{
+ Q_UNUSED(previous)
+
+ m_ui->btnEdit->setEnabled(current);
+ m_ui->btnDelete->setEnabled(current);
+
+ // TODO
+}
diff --git a/editor/bondwidget.h b/editor/bondwidget.h
index a24f96d..794f480 100644
--- a/editor/bondwidget.h
+++ b/editor/bondwidget.h
@@ -21,7 +21,9 @@
#ifndef PLASMA_NM_BOND_WIDGET_H
#define PLASMA_NM_BOND_WIDGET_H
-#include <QtGui/QWidget>
+#include <QWidget>
+#include <QMenu>
+#include <QListWidgetItem>
#include <NetworkManagerQt/settings/bond.h>
@@ -36,15 +38,21 @@ class BondWidget : public SettingWidget
{
Q_OBJECT
public:
- BondWidget(const NetworkManager::Settings::Setting::Ptr &setting = \
NetworkManager::Settings::Setting::Ptr(), QWidget* parent = 0, Qt::WindowFlags f = \
0); + BondWidget(const QString & masterUuid, const \
NetworkManager::Settings::Setting::Ptr &setting = \
NetworkManager::Settings::Setting::Ptr(), QWidget* parent = 0, Qt::WindowFlags f = \
0); virtual ~BondWidget();
void loadConfig(const NetworkManager::Settings::Setting::Ptr &setting);
QVariantMap setting(bool agentOwned = false) const;
+private slots:
+ void addBond(QAction * action);
+ void currentBondChanged(QListWidgetItem * current, QListWidgetItem * previous);
+
private:
+ QString m_uuid;
Ui::BondWidget * m_ui;
+ QMenu * m_menu;
};
#endif // PLASMA_NM_BOND_WIDGET_H
diff --git a/editor/connectiondetaileditor.cpp b/editor/connectiondetaileditor.cpp
index 477f309..f7da34f 100644
--- a/editor/connectiondetaileditor.cpp
+++ b/editor/connectiondetaileditor.cpp
@@ -1,5 +1,6 @@
/*
Copyright 2013 Jan Grulich <jgrulich@redhat.com>
+ Copyright 2013 Lukas Tinkl <ltinkl@redhat.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -33,6 +34,7 @@
#include "cdmawidget.h"
#include "btwidget.h"
#include "infinibandwidget.h"
+#include "bondwidget.h"
#include "vpnuiplugin.h"
#include <QDebug>
@@ -49,29 +51,32 @@
using namespace NetworkManager;
-ConnectionDetailEditor::ConnectionDetailEditor(NetworkManager::Settings::ConnectionSettings::ConnectionType \
type, const QString &vpnType, QWidget* parent, Qt::WindowFlags f): \
+ConnectionDetailEditor::ConnectionDetailEditor(NetworkManager::Settings::ConnectionSettings::ConnectionType \
type, QWidget* parent, + const QString \
&vpnType, const QString &masterUuid, const QString &slaveType, Qt::WindowFlags f): \
QDialog(parent, f),
- m_detailEditor(new Ui::ConnectionDetailEditor),
+ m_ui(new Ui::ConnectionDetailEditor),
m_connection(new NetworkManager::Settings::ConnectionSettings(type)),
m_numSecrets(0),
m_new(true),
- m_vpnType(vpnType)
+ m_vpnType(vpnType),
+ m_masterUuid(masterUuid),
+ m_slaveType(slaveType)
{
setAttribute(Qt::WA_DeleteOnClose);
- m_detailEditor->setupUi(this);
+ m_ui->setupUi(this);
initEditor();
}
ConnectionDetailEditor::ConnectionDetailEditor(Settings::ConnectionSettings::ConnectionType \
type, const QVariantList &args, QWidget *parent, Qt::WindowFlags f): QDialog(parent, \
f),
- m_detailEditor(new Ui::ConnectionDetailEditor),
+ m_ui(new Ui::ConnectionDetailEditor),
m_connection(new NetworkManager::Settings::ConnectionSettings(type)),
m_numSecrets(0),
m_new(true)
{
setAttribute(Qt::WA_DeleteOnClose);
- m_detailEditor->setupUi(this);
+ m_ui->setupUi(this);
// parse args given from the wizard
qDebug() << "Editing new mobile connection, number of args:" << args.count();
@@ -112,13 +117,13 @@ \
ConnectionDetailEditor::ConnectionDetailEditor(Settings::ConnectionSettings::Con
ConnectionDetailEditor::ConnectionDetailEditor(const \
NetworkManager::Settings::ConnectionSettings::Ptr &connection, QWidget* parent, \
Qt::WindowFlags f): QDialog(parent, f),
- m_detailEditor(new Ui::ConnectionDetailEditor),
+ m_ui(new Ui::ConnectionDetailEditor),
m_connection(connection),
m_numSecrets(0),
m_new(false)
{
setAttribute(Qt::WA_DeleteOnClose);
- m_detailEditor->setupUi(this);
+ m_ui->setupUi(this);
initEditor();
}
@@ -187,10 +192,10 @@ void ConnectionDetailEditor::initEditor()
if (m_connection->id().isEmpty()) {
setWindowTitle(i18n("New Connection (%1)", \
m_connection->typeAsString(m_connection->connectionType())));
- m_detailEditor->connectionName->setText(i18n("New %1 connection", \
m_connection->typeAsString(m_connection->connectionType()))); + \
m_ui->connectionName->setText(i18n("New %1 connection", \
m_connection->typeAsString(m_connection->connectionType()))); } else {
setWindowTitle(i18n("Edit Connection '%1'", m_connection->id()));
- m_detailEditor->connectionName->setText(m_connection->id());
+ m_ui->connectionName->setText(m_connection->id());
}
connect(this, SIGNAL(accepted()), SLOT(saveSetting()));
@@ -201,48 +206,59 @@ void ConnectionDetailEditor::initEditor()
void ConnectionDetailEditor::initTabs()
{
ConnectionWidget * connectionWidget = new ConnectionWidget(m_connection);
- m_detailEditor->tabWidget->addTab(connectionWidget, i18n("General"));
+ m_ui->tabWidget->addTab(connectionWidget, i18n("General"));
+
+ // create/set UUID
+ QString uuid = m_connection->uuid();
+ if (QUuid(uuid).isNull()) {
+ uuid = NetworkManager::Settings::ConnectionSettings::createNewUuid();
+ m_connection->setUuid(uuid);
+ }
+ qDebug() << "Initting tabs, UUID:" << uuid;
const NetworkManager::Settings::ConnectionSettings::ConnectionType type = \
m_connection->connectionType();
/*Adsl, Cdma, Gsm, Infiniband, Pppoe, Vpn, Wired, Wireless, Bluetooth, OlpcMesh, \
Vlan, Wimax, Bond, Bridge */ if (type == \
NetworkManager::Settings::ConnectionSettings::Wired) {
WiredConnectionWidget * wiredWidget = new \
WiredConnectionWidget(m_connection->setting(NetworkManager::Settings::Setting::Wired), \
this);
- m_detailEditor->tabWidget->addTab(wiredWidget, i18n("Wired"));
+ m_ui->tabWidget->addTab(wiredWidget, i18n("Wired"));
WiredSecurity * wiredSecurity = new \
WiredSecurity(m_connection->setting(NetworkManager::Settings::Setting::Security8021x).staticCast<NetworkManager::Settings::Security8021xSetting>(), \
this);
- m_detailEditor->tabWidget->addTab(wiredSecurity, i18n("802.1x Security"));
+ m_ui->tabWidget->addTab(wiredSecurity, i18n("802.1x Security"));
} else if (type == NetworkManager::Settings::ConnectionSettings::Wireless) {
WifiConnectionWidget * wifiWidget = new \
WifiConnectionWidget(m_connection->setting(NetworkManager::Settings::Setting::Wireless), \
this);
- m_detailEditor->tabWidget->addTab(wifiWidget, i18n("Wireless"));
+ m_ui->tabWidget->addTab(wifiWidget, i18n("Wireless"));
WifiSecurity * wifiSecurity = new \
WifiSecurity(m_connection->setting(NetworkManager::Settings::Setting::WirelessSecurity),
m_connection->setting(NetworkManager::Settings::Setting::Security8021x).staticCast<NetworkManager::Settings::Security8021xSetting>(),
this);
- m_detailEditor->tabWidget->addTab(wifiSecurity, i18n("Wi-Fi Security"));
+ m_ui->tabWidget->addTab(wifiSecurity, i18n("Wi-Fi Security"));
} else if (type == NetworkManager::Settings::ConnectionSettings::Pppoe) { // DSL
PppoeWidget * pppoeWidget = new \
PppoeWidget(m_connection->setting(NetworkManager::Settings::Setting::Pppoe), \
this);
- m_detailEditor->tabWidget->addTab(pppoeWidget, i18n("DSL"));
+ m_ui->tabWidget->addTab(pppoeWidget, i18n("DSL"));
WiredConnectionWidget * wiredWidget = new \
WiredConnectionWidget(m_connection->setting(NetworkManager::Settings::Setting::Wired), \
this);
- m_detailEditor->tabWidget->addTab(wiredWidget, i18n("Wired"));
+ m_ui->tabWidget->addTab(wiredWidget, i18n("Wired"));
} else if (type == NetworkManager::Settings::ConnectionSettings::Gsm) { // GSM
GsmWidget * gsmWidget = new \
GsmWidget(m_connection->setting(NetworkManager::Settings::Setting::Gsm), \
this);
- m_detailEditor->tabWidget->addTab(gsmWidget, i18n("Mobile Broadband (%1)", \
m_connection->typeAsString(m_connection->connectionType()))); + \
m_ui->tabWidget->addTab(gsmWidget, i18n("Mobile Broadband (%1)", \
m_connection->typeAsString(m_connection->connectionType())));
} else if (type == NetworkManager::Settings::ConnectionSettings::Cdma) { // CDMA
CdmaWidget * cdmaWidget = new \
CdmaWidget(m_connection->setting(NetworkManager::Settings::Setting::Cdma), \
this);
- m_detailEditor->tabWidget->addTab(cdmaWidget, i18n("Mobile Broadband (%1)", \
m_connection->typeAsString(m_connection->connectionType()))); + \
m_ui->tabWidget->addTab(cdmaWidget, i18n("Mobile Broadband (%1)", \
m_connection->typeAsString(m_connection->connectionType())));
} else if (type == NetworkManager::Settings::ConnectionSettings::Bluetooth) { \
// Bluetooth
BtWidget * btWidget = new \
BtWidget(m_connection->setting(NetworkManager::Settings::Setting::Bluetooth), \
this);
- m_detailEditor->tabWidget->addTab(btWidget, i18n("Bluetooth"));
+ m_ui->tabWidget->addTab(btWidget, i18n("Bluetooth"));
NetworkManager::Settings::BluetoothSetting::Ptr btSetting = \
m_connection->setting(NetworkManager::Settings::Setting::Bluetooth).staticCast<NetworkManager::Settings::BluetoothSetting>();
if (btSetting->profileType() == \
NetworkManager::Settings::BluetoothSetting::Dun) {
GsmWidget * gsmWidget = new \
GsmWidget(m_connection->setting(NetworkManager::Settings::Setting::Gsm), \
this);
- m_detailEditor->tabWidget->addTab(gsmWidget, i18n("GSM"));
+ m_ui->tabWidget->addTab(gsmWidget, i18n("GSM"));
PPPWidget * pppWidget = new \
PPPWidget(m_connection->setting(NetworkManager::Settings::Setting::Ppp), \
this);
- m_detailEditor->tabWidget->addTab(pppWidget, i18n("PPP"));
+ m_ui->tabWidget->addTab(pppWidget, i18n("PPP"));
}
} else if (type == NetworkManager::Settings::ConnectionSettings::Infiniband) { \
// Infiniband
InfinibandWidget * infinibandWidget = new \
InfinibandWidget(m_connection->setting(NetworkManager::Settings::Setting::Infiniband), \
this);
- m_detailEditor->tabWidget->addTab(infinibandWidget, i18n("Infiniband"));
+ m_ui->tabWidget->addTab(infinibandWidget, i18n("Infiniband"));
+ } else if (type == NetworkManager::Settings::ConnectionSettings::Bond) { // Bond
+ BondWidget * bondWidget = new BondWidget(uuid, \
m_connection->setting(NetworkManager::Settings::Setting::Bond), this); + \
m_ui->tabWidget->addTab(bondWidget, i18n("Bond"));
} else if (type == NetworkManager::Settings::ConnectionSettings::Vpn) { // VPN
QString error;
VpnUiPlugin * vpnPlugin = 0;
@@ -266,30 +282,36 @@ void ConnectionDetailEditor::initTabs()
if (vpnPlugin && error.isEmpty()) {
const QString shortName = serviceType.section('.', -1);
SettingWidget * vpnWidget = vpnPlugin->widget(vpnSetting, this);
- m_detailEditor->tabWidget->addTab(vpnWidget, i18n("VPN (%1)", \
shortName)); + m_ui->tabWidget->addTab(vpnWidget, i18n("VPN (%1)", \
shortName)); } else {
qDebug() << error << ", serviceType == " << serviceType;
}
}
}
+ // PPP widget
if (type == Settings::ConnectionSettings::Pppoe || type == \
Settings::ConnectionSettings::Cdma || type == \
Settings::ConnectionSettings::Gsm) {
PPPWidget * pppWidget = new \
PPPWidget(m_connection->setting(NetworkManager::Settings::Setting::Ppp), \
this);
- m_detailEditor->tabWidget->addTab(pppWidget, i18n("PPP"));
+ m_ui->tabWidget->addTab(pppWidget, i18n("PPP"));
}
- IPv4Widget * ipv4Widget = new \
IPv4Widget(m_connection->setting(NetworkManager::Settings::Setting::Ipv4), \
this);
- m_detailEditor->tabWidget->addTab(ipv4Widget, i18n("IPv4"));
+ // IPv4 widget
+ if (!isSlave()) {
+ IPv4Widget * ipv4Widget = new \
IPv4Widget(m_connection->setting(NetworkManager::Settings::Setting::Ipv4), this); + \
m_ui->tabWidget->addTab(ipv4Widget, i18n("IPv4")); + }
- if (type == Settings::ConnectionSettings::Wired || type == \
Settings::ConnectionSettings::Wireless || type == \
Settings::ConnectionSettings::Infiniband) { + // IPv6 widget
+ if ((type == Settings::ConnectionSettings::Wired || type == \
Settings::ConnectionSettings::Wireless || + type == \
Settings::ConnectionSettings::Infiniband || type == \
Settings::ConnectionSettings::Bond) && !isSlave()) {
IPv6Widget * ipv6Widget = new \
IPv6Widget(m_connection->setting(NetworkManager::Settings::Setting::Ipv6), \
this);
- m_detailEditor->tabWidget->addTab(ipv6Widget, i18n("IPv6"));
+ m_ui->tabWidget->addTab(ipv6Widget, i18n("IPv6"));
}
}
void ConnectionDetailEditor::saveSetting()
{
- ConnectionWidget * connectionWidget = \
static_cast<ConnectionWidget*>(m_detailEditor->tabWidget->widget(0)); + \
ConnectionWidget * connectionWidget = \
static_cast<ConnectionWidget*>(m_ui->tabWidget->widget(0));
NMVariantMapMap settings = connectionWidget->setting();
@@ -299,8 +321,8 @@ void ConnectionDetailEditor::saveSetting()
}
qDebug() << "agent owned - " << agentOwned;
- for (int i = 1; i < m_detailEditor->tabWidget->count(); ++i) {
- SettingWidget * widget = \
static_cast<SettingWidget*>(m_detailEditor->tabWidget->widget(i)); + for (int i = \
1; i < m_ui->tabWidget->count(); ++i) { + SettingWidget * widget = \
static_cast<SettingWidget*>(m_ui->tabWidget->widget(i)); const QString type = \
widget->type();
if (type != \
NetworkManager::Settings::Setting::typeAsString(NetworkManager::Settings::Setting::Security8021x) \
&&
type != \
NetworkManager::Settings::Setting::typeAsString(NetworkManager::Settings::Setting::WirelessSecurity)) \
{ @@ -330,7 +352,7 @@ void ConnectionDetailEditor::saveSetting()
NetworkManager::Settings::ConnectionSettings * connectionSettings = new \
NetworkManager::Settings::ConnectionSettings(m_connection->connectionType());
connectionSettings->fromMap(settings);
- connectionSettings->setId(m_detailEditor->connectionName->text());
+ connectionSettings->setId(m_ui->connectionName->text());
if (connectionSettings->connectionType() == \
Settings::ConnectionSettings::Wireless) { \
NetworkManager::Settings::WirelessSecuritySetting::Ptr securitySetting = \
connectionSettings->setting(Settings::Setting::WirelessSecurity).staticCast<NetworkManager::Settings::WirelessSecuritySetting>();
@@ -344,10 +366,12 @@ void ConnectionDetailEditor::saveSetting()
}
// set UUID
- if (m_new) {
- connectionSettings->setUuid(NetworkManager::Settings::ConnectionSettings::createNewUuid());
- } else {
- connectionSettings->setUuid(m_connection->uuid());
+ connectionSettings->setUuid(m_connection->uuid());
+
+ // set master & slave type
+ if (isSlave()) {
+ connectionSettings->setMaster(m_masterUuid);
+ connectionSettings->setSlaveType(m_slaveType);
}
connectionSettings->printSetting(); // debug
@@ -368,6 +392,7 @@ void ConnectionDetailEditor::saveSetting()
void ConnectionDetailEditor::connectionAddComplete(const QString& id, bool success, \
const QString& msg) {
qDebug() << id << " - " << success << " - " << msg;
+ emit connectionAdded(id, success, msg); // for slave dialogs
}
void ConnectionDetailEditor::gotSecrets(const QString& id, bool success, const \
NMVariantMapMap& secrets, const QString& msg)
diff --git a/editor/connectiondetaileditor.h b/editor/connectiondetaileditor.h
index 8aabe19..c0de9b3 100644
--- a/editor/connectiondetaileditor.h
+++ b/editor/connectiondetaileditor.h
@@ -36,8 +36,11 @@ class ConnectionDetailEditor : public QDialog
public:
ConnectionDetailEditor(NetworkManager::Settings::ConnectionSettings::ConnectionType \
type,
- const QString &vpnType,
- QWidget* parent = 0, Qt::WindowFlags f = 0);
+ QWidget* parent = 0,
+ const QString &vpnType = QString(),
+ const QString &masterUuid = QString(),
+ const QString &slaveType = QString(),
+ Qt::WindowFlags f = 0);
ConnectionDetailEditor(const NetworkManager::Settings::ConnectionSettings::Ptr \
&setting, QWidget* parent = 0, Qt::WindowFlags f = 0);
ConnectionDetailEditor(NetworkManager::Settings::ConnectionSettings::ConnectionType \
type, @@ -45,17 +48,26 @@ public:
QWidget* parent = 0, Qt::WindowFlags f = 0);
virtual ~ConnectionDetailEditor();
+ bool isSlave() const { return !m_masterUuid.isEmpty() && !m_slaveType.isEmpty(); \
} +
+ QString uuid() const { return m_connection->uuid(); }
+
+signals:
+ void connectionAdded(const QString & id, bool success, const QString & msg);
+
private Q_SLOTS:
void connectionAddComplete(const QString & id, bool success, const QString & \
msg); void disconnectSignals();
void gotSecrets(const QString & id, bool success, const NMVariantMapMap & \
secrets, const QString & msg); void saveSetting();
private:
- Ui::ConnectionDetailEditor * m_detailEditor;
+ Ui::ConnectionDetailEditor * m_ui;
NetworkManager::Settings::ConnectionSettings::Ptr m_connection;
int m_numSecrets;
bool m_new;
QString m_vpnType;
+ QString m_masterUuid;
+ QString m_slaveType;
void initEditor();
void initTabs();
diff --git a/editor/connectioneditor.cpp b/editor/connectioneditor.cpp
index 7138ca8..5653247 100644
--- a/editor/connectioneditor.cpp
+++ b/editor/connectioneditor.cpp
@@ -88,8 +88,7 @@ ConnectionEditor::ConnectionEditor(QWidget* parent, Qt::WindowFlags \
flags):
action = new QAction(i18n("Bond"), this);
action->setData(NetworkManager::Settings::ConnectionSettings::Bond);
- // TODO: disabled for now
- action->setDisabled(true);
+ action->setDisabled(true); // TODO
m_menu->addAction(action);
action = new QAction(i18n("Bridge"), this);
action->setData(NetworkManager::Settings::ConnectionSettings::Bridge);
@@ -288,7 +287,7 @@ void ConnectionEditor::addConnection(QAction* action)
wizard.data()->deleteLater();
}
} else {
- ConnectionDetailEditor * editor = new ConnectionDetailEditor(type, vpnType, \
this); + ConnectionDetailEditor * editor = new ConnectionDetailEditor(type, \
this, vpnType); editor->exec();
}
}
diff --git a/editor/ui/bond.ui b/editor/ui/bond.ui
index 3a98b44..ebf16ce 100644
--- a/editor/ui/bond.ui
+++ b/editor/ui/bond.ui
@@ -38,27 +38,58 @@
<item row="2" column="0" colspan="2">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" rowspan="4">
- <widget class="QListWidget" name="bonds"/>
+ <widget class="KListWidget" name="bonds">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="uniformItemSizes">
+ <bool>true</bool>
+ </property>
+ </widget>
</item>
<item row="0" column="1">
- <widget class="QPushButton" name="pushButton">
+ <widget class="KPushButton" name="btnAdd">
<property name="text">
<string>&Add...</string>
</property>
+ <property name="icon">
+ <iconset theme="list-add">
+ <normaloff/>
+ </iconset>
+ </property>
</widget>
</item>
<item row="1" column="1">
- <widget class="QPushButton" name="pushButton_2">
+ <widget class="KPushButton" name="btnEdit">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
<property name="text">
<string>&Edit...</string>
</property>
+ <property name="icon">
+ <iconset theme="configure">
+ <normaloff/>
+ </iconset>
+ </property>
</widget>
</item>
<item row="2" column="1">
- <widget class="QPushButton" name="pushButton_3">
+ <widget class="KPushButton" name="btnDelete">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
<property name="text">
<string>&Delete</string>
</property>
+ <property name="icon">
+ <iconset theme="edit-delete">
+ <normaloff/>
+ </iconset>
+ </property>
</widget>
</item>
<item row="3" column="1">
@@ -202,7 +233,7 @@
<item row="0" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
- <string>ARP & targets:</string>
+ <string>ARP &targets:</string>
</property>
<property name="buddy">
<cstring>arpTargets</cstring>
@@ -210,7 +241,11 @@
</widget>
</item>
<item row="0" column="1">
- <widget class="QLineEdit" name="arpTargets"/>
+ <widget class="QLineEdit" name="arpTargets">
+ <property name="toolTip">
+ <string>An IP address or comma-separated list of addresses.</string>
+ </property>
+ </widget>
</item>
</layout>
</widget>
@@ -218,12 +253,24 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>KPushButton</class>
+ <extends>QPushButton</extends>
+ <header>kpushbutton.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KListWidget</class>
+ <extends>QListWidget</extends>
+ <header>klistwidget.h</header>
+ </customwidget>
+ </customwidgets>
<tabstops>
<tabstop>ifaceName</tabstop>
<tabstop>bonds</tabstop>
- <tabstop>pushButton</tabstop>
- <tabstop>pushButton_2</tabstop>
- <tabstop>pushButton_3</tabstop>
+ <tabstop>btnAdd</tabstop>
+ <tabstop>btnEdit</tabstop>
+ <tabstop>btnDelete</tabstop>
<tabstop>mode</tabstop>
<tabstop>linkMonitoring</tabstop>
<tabstop>monitorFreq</tabstop>
@@ -232,5 +279,22 @@
<tabstop>arpTargets</tabstop>
</tabstops>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>linkMonitoring</sender>
+ <signal>currentIndexChanged(int)</signal>
+ <receiver>monitorStack</receiver>
+ <slot>setCurrentIndex(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>310</x>
+ <y>273</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>360</x>
+ <y>334</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
</ui>
diff --git a/lib/hwaddrcombobox.cpp b/lib/hwaddrcombobox.cpp
index 32a1b60..980f907 100644
--- a/lib/hwaddrcombobox.cpp
+++ b/lib/hwaddrcombobox.cpp
@@ -49,7 +49,7 @@ QString HwAddrComboBox::hwAddress() const
else
result = currentText(); // FIXME validate
- qDebug() << "Result:" << currentIndex() << result;
+ //qDebug() << "Result:" << currentIndex() << result;
return result;
}
@@ -68,7 +68,7 @@ void HwAddrComboBox::init(const NetworkManager::Device::Type \
&deviceType, const {
m_initialAddress = address;
- qDebug() << "Initial address:" << m_initialAddress;
+ //qDebug() << "Initial address:" << m_initialAddress;
foreach(const NetworkManager::Device::Ptr & device, \
NetworkManager::networkInterfaces()) { const NetworkManager::Device::Type type = \
device->type(); @@ -90,7 +90,7 @@ void HwAddrComboBox::addAddressToCombo(const \
NetworkManager::Device::Ptr &device {
const NetworkManager::Device::Type type = device->type();
- qDebug() << "Adding to combo, type:" << type;
+ //qDebug() << "Adding to combo, type:" << type;
QVariant data;
if (type == NetworkManager::Device::Ethernet) {
@@ -113,7 +113,7 @@ void HwAddrComboBox::addAddressToCombo(const \
NetworkManager::Device::Ptr &device data = \
device->as<NetworkManager::VlanDevice>()->hwAddress(); }
- qDebug() << "Data:" << data;
+ //qDebug() << "Data:" << data;
QString name;
if (device->state() == NetworkManager::Device::Activated)
@@ -121,7 +121,7 @@ void HwAddrComboBox::addAddressToCombo(const \
NetworkManager::Device::Ptr &device else
name = device->interfaceName();
- qDebug() << "Name:" << name;
+ //qDebug() << "Name:" << name;
if (!data.isNull()) {
if (name == data.toString()) {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic