summaryrefslogtreecommitdiffstats
path: root/kde/patch/plasma-nm/plasma-nm-fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde/patch/plasma-nm/plasma-nm-fixes.patch')
-rw-r--r--kde/patch/plasma-nm/plasma-nm-fixes.patch322
1 files changed, 322 insertions, 0 deletions
diff --git a/kde/patch/plasma-nm/plasma-nm-fixes.patch b/kde/patch/plasma-nm/plasma-nm-fixes.patch
new file mode 100644
index 0000000..d98448d
--- /dev/null
+++ b/kde/patch/plasma-nm/plasma-nm-fixes.patch
@@ -0,0 +1,322 @@
+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));
+ }