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 = ""; - QString format = "%1 - %2
%3

"; - QString formatDefault = "%1 - %2
%3

"; + const QString format = "%1 - %2
%3

"; + const QString formatDefault = "%1 - %2
%3

"; 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(); + 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)); }