diff --git a/applet/declarative/contents/ui/main.qml b/applet/declarative/contents/ui/main.qml
index 8ea88cc..aa81707 100644
--- a/applet/declarative/contents/ui/main.qml
+++ b/applet/declarative/contents/ui/main.qml
@@ -19,6 +19,7 @@
*/
import QtQuick 1.1
+import org.kde.plasma.extras 0.1 as PlasmaExtras
import org.kde.plasma.components 0.1 as PlasmaComponents
import org.kde.plasma.core 0.1 as PlasmaCore
import org.kde.networkmanagement 0.1 as PlasmaNM
@@ -77,16 +78,7 @@ Item {
anchors.fill: parent
}
- ListView {
- id: connectionView;
-
- property bool expandedItem: false;
- property string previouslyExpandedItem: "";
-
- property bool activeExpanded: true;
- property bool previousExpanded: true;
- property bool unknownExpanded: true;
-
+ PlasmaExtras.ScrollArea {
anchors {
left: parent.left;
right: parent.right;
@@ -95,50 +87,64 @@ Item {
topMargin: padding.margins.top;
bottomMargin: padding.margins.bottom
}
- clip: true
- model: connectionSortModel;
- currentIndex: -1;
- interactive: true;
- boundsBehavior: Flickable.StopAtBounds;
- section.property: "itemSection";
- section.delegate: SectionHeader {
- onHideSection: {
- if (section == i18n("Active connections")) {
- connectionView.activeExpanded = false;
- } else if (section == i18n("Previous connections")) {
- connectionView.previousExpanded = false;
- } else {
- connectionView.unknownExpanded = false;
+
+ ListView {
+ id: connectionView;
+
+ property bool expandedItem: false;
+ property string previouslyExpandedItem: "";
+
+ property bool activeExpanded: true;
+ property bool previousExpanded: true;
+ property bool unknownExpanded: true;
+
+ anchors.fill: parent;
+
+ clip: true
+ model: connectionSortModel;
+ currentIndex: -1;
+ interactive: true;
+ boundsBehavior: Flickable.StopAtBounds;
+ section.property: "itemSection";
+ section.delegate: SectionHeader {
+ onHideSection: {
+ if (section == i18n("Active connections")) {
+ connectionView.activeExpanded = false;
+ } else if (section == i18n("Previous connections")) {
+ connectionView.previousExpanded = false;
+ } else {
+ connectionView.unknownExpanded = false;
+ }
}
- }
- onShowSection: {
- if (section == i18n("Active connections")) {
- connectionView.activeExpanded = true;
- } else if (section == i18n("Previous connections")) {
- connectionView.previousExpanded = true;
- } else {
- connectionView.unknownExpanded = true;
+ onShowSection: {
+ if (section == i18n("Active connections")) {
+ connectionView.activeExpanded = true;
+ } else if (section == i18n("Previous connections")) {
+ connectionView.previousExpanded = true;
+ } else {
+ connectionView.unknownExpanded = true;
+ }
}
}
- }
- delegate: ConnectionItem {
- expanded: connectionView.expandedItem && connectionView.previouslyExpandedItem == itemUni;
- onItemExpanded: {
- if (itemExpanded) {
- connectionView.expandedItem = true;
- connectionView.previouslyExpandedItem = itemUni;;
- connectionView.currentIndex = index;
- } else {
- connectionView.expandedItem = false;
- connectionView.previouslyExpandedItem = "";
+ delegate: ConnectionItem {
+ expanded: connectionView.expandedItem && connectionView.previouslyExpandedItem == itemUni;
+ onItemExpanded: {
+ if (itemExpanded) {
+ connectionView.expandedItem = true;
+ connectionView.previouslyExpandedItem = itemUni;;
+ connectionView.currentIndex = index;
+ } else {
+ connectionView.expandedItem = false;
+ connectionView.previouslyExpandedItem = "";
+ }
}
- }
- ListView.onRemove: {
- if (ListView.isCurrentItem) {
- connectionView.previouslyExpandedItem = "";
+ ListView.onRemove: {
+ if (ListView.isCurrentItem) {
+ connectionView.previouslyExpandedItem = "";
+ }
}
}
}
diff --git a/declarative-plugins/applet/connectionicon.cpp b/declarative-plugins/applet/connectionicon.cpp
index c3f8540..76bdca0 100644
--- a/declarative-plugins/applet/connectionicon.cpp
+++ b/declarative-plugins/applet/connectionicon.cpp
@@ -166,12 +166,24 @@ void ConnectionIcon::setIcons()
foreach (const NetworkManager::ActiveConnection::Ptr & active, actives) {
if (((active->default4() || active->default6()) && active->state() == NetworkManager::ActiveConnection::Activated) || !defaultRouteExists) {
+ NetworkManager::ActiveConnection::Ptr activeConnection;
+ if (active->vpn()) {
+ NetworkManager::ActiveConnection::Ptr activeTmp;
+ activeTmp = NetworkManager::findActiveConnection(active->specificObject());
+ if (activeTmp) {
+ activeConnection = activeTmp;
+ }
- if (active->vpn() || active->devices().isEmpty()) {
+ vpnFound = true;
+ NMAppletDebug() << "Emit signal setHoverIcon(object-locked)";
+ Q_EMIT setHoverIcon("object-locked");
+ } else {
+ activeConnection = active;
+ }
+ if (activeConnection->devices().isEmpty()) {
continue;
}
-
- NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(active->devices().first());
+ NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(activeConnection->devices().first());
if (device) {
NetworkManager::Device::Type type = device->type();
@@ -184,7 +196,7 @@ void ConnectionIcon::setIcons()
setWirelessIconForSignalStrength(100);
connectionFound = true;
} else {
- NetworkManager::AccessPoint::Ptr ap = wifiDevice->findAccessPoint(active->specificObject());
+ NetworkManager::AccessPoint::Ptr ap = wifiDevice->findAccessPoint(activeConnection->specificObject());
if (ap) {
setWirelessIcon(device, ap->ssid());
connectionFound = true;
@@ -222,9 +234,7 @@ void ConnectionIcon::setIcons()
}
}
}
- }
-
- if (active->vpn() && active->state() == NetworkManager::ActiveConnection::Activated) {
+ } else if (active->vpn() && active->state() == NetworkManager::ActiveConnection::Activated) {
vpnFound = true;
NMAppletDebug() << "Emit signal setHoverIcon(object-locked)";
Q_EMIT setHoverIcon("object-locked");
diff --git a/declarative-plugins/applet/networkstatus.cpp b/declarative-plugins/applet/networkstatus.cpp
index d63066d..8149da9 100644
--- a/declarative-plugins/applet/networkstatus.cpp
+++ b/declarative-plugins/applet/networkstatus.cpp
@@ -129,8 +129,8 @@ void NetworkStatus::changeTooltip()
}
QString tooltip = "<qt>";
- QString format = "<b>%1 - %2</b><br>%3<br><br>";
- QString formatDefault = "<b>%1 - %2</b><br><b>%3</b><br><br>";
+ const QString format = "<b>%1 - %2</b><br>%3<br><br>";
+ const QString formatDefault = "<b>%1 - %2</b><br><b>%3</b><br><br>";
foreach (const NetworkManager::ActiveConnection::Ptr & active, NetworkManager::activeConnections()) {
if (!active->devices().isEmpty()) {
@@ -145,7 +145,6 @@ void NetworkStatus::changeTooltip()
} else {
devName = device->ipInterfaceName();
}
-// conType = NetworkManager::ConnectionSettings::typeAsString(active->connection()->settings()->connectionType());
if (active->vpn()) {
conType = i18n("VPN Connection");
} else {
diff --git a/declarative-plugins/model/model.cpp b/declarative-plugins/model/model.cpp
index 1b3f4c3..bb88362 100644
--- a/declarative-plugins/model/model.cpp
+++ b/declarative-plugins/model/model.cpp
@@ -230,7 +230,7 @@ void Model::addConnection(const QString& connection, const QString& device)
{
NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection);
- if (con->settings()->isSlave()) {
+ if (con->settings()->isSlave() || con->name().isEmpty() || con->uuid().isEmpty()) {
return;
}
@@ -395,7 +395,11 @@ void Model::removeWirelessNetwork(const QString& ssid, const QString& device)
if (wirelessDevice) {
accessPoint = wirelessDevice->findAccessPoint(item->specificPath());
}
- if (accessPoint && accessPoint->mode() == NetworkManager::AccessPoint::Adhoc &&
+
+ // When accesspoint in ad-hoc mode dissapears, we should remove the item only when there is no connection. Similar case is when
+ // a wireless device is in AP mode, but in this case there could be only one visible AP and this should always be associated with some connection.
+ if (accessPoint && ((accessPoint->mode() == NetworkManager::AccessPoint::Adhoc && !item->connectionPath().isEmpty()) ||
+ wirelessDevice->mode() == NetworkManager::WirelessDevice::ApMode) &&
NetworkManager::isWirelessEnabled() && NetworkManager::isWirelessHardwareEnabled()) {
item->setWirelessNetwork(QString());
if (updateItem(item)) {
diff --git a/declarative-plugins/model/modelitem.cpp b/declarative-plugins/model/modelitem.cpp
index 9a5931f..58d5c42 100644
--- a/declarative-plugins/model/modelitem.cpp
+++ b/declarative-plugins/model/modelitem.cpp
@@ -151,6 +151,17 @@ QString ModelItem::icon() const
break;
case NetworkManager::ConnectionSettings::Wireless:
if (m_signal == 0 ) {
+ if (!m_connectionPath.isEmpty()) {
+ NetworkManager::Connection::Ptr con = NetworkManager::findConnection(m_connectionPath);
+ if (con) {
+ NetworkManager::WirelessSetting::Ptr wirelessSetting;
+ wirelessSetting = con->settings()->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>();
+ if (wirelessSetting && (wirelessSetting->mode() == NetworkManager::WirelessSetting::Adhoc ||
+ wirelessSetting->mode() == NetworkManager::WirelessSetting::Ap)) {
+ return "network-wireless-100";
+ }
+ }
+ }
return "network-wireless-00";
} else if (m_signal < 20) {
return "network-wireless-20";
diff --git a/kded/bluetoothmonitor.cpp b/kded/bluetoothmonitor.cpp
index 2221d09..5d0218b 100644
--- a/kded/bluetoothmonitor.cpp
+++ b/kded/bluetoothmonitor.cpp
@@ -220,6 +220,7 @@ void BluetoothMonitor::init()
mDunDevice = reply.value();
}
+
#if WITH_MODEMMANAGER_SUPPORT
void BluetoothMonitor::modemAdded(const QString &udi)
{
diff --git a/lib/editor/bridgewidget.cpp b/lib/editor/bridgewidget.cpp
index 8815eb2..95344c4 100644
--- a/lib/editor/bridgewidget.cpp
+++ b/lib/editor/bridgewidget.cpp
@@ -216,5 +216,5 @@ void BridgeWidget::populateBridges()
bool BridgeWidget::isValid() const
{
- return !m_ui->ifaceName->text().isEmpty() && m_ui->bridges->count() > 0;
+ return !m_ui->ifaceName->text().isEmpty();
}
diff --git a/vpn/vpnc/vpnc.cpp b/vpn/vpnc/vpnc.cpp
index d4a511d..645249d 100644
--- a/vpn/vpnc/vpnc.cpp
+++ b/vpn/vpnc/vpnc.cpp
@@ -145,7 +145,6 @@ NMVariantMapMap VpncUiPlugin::importConnectionSettings(const QString &fileName)
KConfigGroup cg(config, "main"); // Keys&Values are stored under [main]
if (cg.exists()) {
// Setup cisco-decrypt binary to decrypt the passwords
- QStringList decrArgs;
const QString ciscoDecryptBinary = KStandardDirs::findExe("cisco-decrypt", QString::fromLocal8Bit(qgetenv("PATH")) + ":/usr/lib/vpnc");
if (ciscoDecryptBinary.isEmpty()) {
mErrorMessage = i18n("Needed executable cisco-decrypt could not be found.");
@@ -174,11 +173,11 @@ NMVariantMapMap VpncUiPlugin::importConnectionSettings(const QString &fileName)
}
else if (!decrPlugin->readStringKeyValue(cg,"enc_UserPassword").isEmpty() && !ciscoDecryptBinary.isEmpty()) {
// Decrypt the password and insert into map
- decrArgs.clear();
- decrArgs << decrPlugin->readStringKeyValue(cg,"enc_UserPassword");
- decrPlugin->ciscoDecrypt->setProgram(ciscoDecryptBinary, decrArgs);
+ decrPlugin->ciscoDecrypt->setProgram(ciscoDecryptBinary);
decrPlugin->ciscoDecrypt->start();
- if (decrPlugin->ciscoDecrypt->waitForStarted() && decrPlugin->ciscoDecrypt->waitForFinished()) {
+ decrPlugin->ciscoDecrypt->waitForStarted();
+ decrPlugin->ciscoDecrypt->write(decrPlugin->readStringKeyValue(cg,"enc_UserPassword").toUtf8());
+ if (decrPlugin->ciscoDecrypt->waitForFinished()) {
secretData.insert(NM_VPNC_KEY_XAUTH_PASSWORD, decrPlugin->decryptedPasswd);
}
}
@@ -203,11 +202,11 @@ NMVariantMapMap VpncUiPlugin::importConnectionSettings(const QString &fileName)
}
else if (!decrPlugin->readStringKeyValue(cg,"enc_GroupPwd").isEmpty() && !ciscoDecryptBinary.isEmpty()) {
//Decrypt the password and insert into map
- decrArgs.clear();
- decrArgs << decrPlugin->readStringKeyValue(cg,"enc_GroupPwd");
- decrPlugin->ciscoDecrypt->setProgram(ciscoDecryptBinary, decrArgs);
+ decrPlugin->ciscoDecrypt->setProgram(ciscoDecryptBinary);
decrPlugin->ciscoDecrypt->start();
- if (decrPlugin->ciscoDecrypt->waitForStarted() && decrPlugin->ciscoDecrypt->waitForFinished()) {
+ decrPlugin->ciscoDecrypt->waitForStarted();
+ decrPlugin->ciscoDecrypt->write(decrPlugin->readStringKeyValue(cg,"enc_GroupPwd").toUtf8());
+ if (decrPlugin->ciscoDecrypt->waitForFinished()) {
secretData.insert(NM_VPNC_KEY_SECRET, decrPlugin->decryptedPasswd);
data.insert(NM_VPNC_KEY_SECRET"-flags", QString::number(NetworkManager::Setting::AgentOwned));
}