diff -pruN 0.1+git20110318.941cde9-2/applet/activatableitem.h 0.9~svngit20110408-0ubuntu2/applet/activatableitem.h
--- 0.1+git20110318.941cde9-2/applet/activatableitem.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/activatableitem.h	2011-04-08 18:47:06.000000000 +0100
@@ -59,7 +59,6 @@ protected:
     bool m_hasDefaultRoute;
     Knm::InterfaceConnection::ActivationState m_state;
     bool m_deleting;
-
 };
 
 #endif // ABSTRACTCONNECTABLEITEM_H
diff -pruN 0.1+git20110318.941cde9-2/applet/activatablelistwidget.cpp 0.9~svngit20110408-0ubuntu2/applet/activatablelistwidget.cpp
--- 0.1+git20110318.941cde9-2/applet/activatablelistwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/activatablelistwidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -29,6 +29,7 @@ along with this program.  If not, see <h
 #include <KDebug>
 #include <solid/control/networkmanager.h>
 #include <KToolInvocation>
+#include <KStandardDirs>
 
 // Plasma
 #include <Plasma/Label>
@@ -356,6 +357,6 @@ void ActivatableListWidget::connectToHid
     m_hiddenConnectionInProgress << ssid;
     QStringList args = QStringList(ssid) << "create";
     kDebug() << "invoking networkmanagement_configshell" << args;
-    KToolInvocation::kdeinitExec("networkmanagement_configshell", args);
+    KToolInvocation::kdeinitExec(KGlobal::dirs()->findResource("exe", "networkmanagement_configshell"), args);
 }
 // vim: sw=4 sts=4 et tw=100
diff -pruN 0.1+git20110318.941cde9-2/applet/CMakeLists.txt 0.9~svngit20110408-0ubuntu2/applet/CMakeLists.txt
--- 0.1+git20110318.941cde9-2/applet/CMakeLists.txt	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/CMakeLists.txt	2011-04-08 18:47:06.000000000 +0100
@@ -27,6 +27,8 @@ set(networkmanager_SRCS
 
 kde4_add_plugin(plasma_applet_networkmanagement ${networkmanager_SRCS})
 
+target_link_libraries(plasma_applet_networkmanagement ${KDE4_PLASMA_LIBS} knmclient knminternals ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS} solidcontrol)
+
 install(TARGETS plasma_applet_networkmanagement DESTINATION ${PLUGIN_INSTALL_DIR})
 install(FILES plasma-applet-networkmanagement.desktop DESTINATION ${SERVICES_INSTALL_DIR})
 
@@ -38,7 +40,7 @@ if (NOT IS45)
     install(FILES
         network.svgz
         DESTINATION ${DATA_INSTALL_DIR}/desktoptheme/default/icons/)
-    target_link_libraries(plasma_applet_networkmanagement ${KDE4_PLASMA_LIBS} knmclient knminternals ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS} solidcontrol ${KDE4_KUTILS_LIBS})
+    target_link_libraries(plasma_applet_networkmanagement ${KDE4_KUTILS_LIBS})
 else (NOT IS45)
-    target_link_libraries(plasma_applet_networkmanagement ${KDE4_PLASMA_LIBS} knmclient knminternals ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS} solidcontrol ${KDE4_KCMUTILS_LIBS})
+    target_link_libraries(plasma_applet_networkmanagement ${KDE4_KCMUTILS_LIBS})
 endif (NOT IS45)
diff -pruN 0.1+git20110318.941cde9-2/applet/interfaceitem.cpp 0.9~svngit20110408-0ubuntu2/applet/interfaceitem.cpp
--- 0.1+git20110318.941cde9-2/applet/interfaceitem.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/interfaceitem.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -102,7 +102,7 @@ InterfaceItem::InterfaceItem(Solid::Cont
     m_disconnectButton->setMaximumHeight(16);
     m_disconnectButton->setMaximumWidth(16);
     m_disconnectButton->setIcon(KIcon("dialog-close"));
-    m_disconnectButton->setToolTip(i18n("Disconnect"));
+    m_disconnectButton->setToolTip(i18nc("tooltip on disconnect icon", "Disconnect"));
     m_disconnectButton->hide();
     m_disconnect = false;
     // forward disconnect signal
@@ -201,6 +201,7 @@ Solid::Control::NetworkInterface* Interf
 
 void InterfaceItem::setActive(bool active)
 {
+    Q_UNUSED(active);
     if (m_iface) {
         connectionStateChanged(m_iface->connectionState());
     }
@@ -409,13 +410,7 @@ void InterfaceItem::connectionStateChang
 
     // Update connect button
     if (old_disco != m_disconnect) {
-        if (!m_disconnect) {
-            showItem(m_disconnectButton, false);
-        } else {
-            m_disconnectButton->setIcon(KIcon("dialog-close"));
-            m_disconnectButton->setToolTip(i18nc("tooltip on disconnect icon", "Disconnect"));
-            showItem(m_disconnectButton, true);
-        }
+        showItem(m_disconnectButton, m_disconnect);
     }
     m_connectionNameLabel->setText(lname);
     m_icon->nativeWidget()->setPixmap(interfacePixmap());
diff -pruN 0.1+git20110318.941cde9-2/applet/networkmanager.cpp 0.9~svngit20110408-0ubuntu2/applet/networkmanager.cpp
--- 0.1+git20110318.941cde9-2/applet/networkmanager.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/networkmanager.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -277,6 +277,18 @@ void NetworkManagerApplet::createConfigu
                     m_kcmNM->moduleInfo().icon());
     parent->addPage(m_kcmNMTray, m_kcmNMTray->moduleInfo().moduleName(),
                     m_kcmNMTray->moduleInfo().icon());
+
+    connect(parent, SIGNAL(applyClicked()), this, SLOT(saveConfiguration()));
+    connect(parent, SIGNAL(okClicked()), this, SLOT(saveConfiguration()));
+}
+
+void NetworkManagerApplet::saveConfiguration()
+{
+    // kcm_networkmanagement implicitly saves connection definition after
+    // editing is finished, so no need to call its save() method
+    // FIXME This just writes out changed values to ini file. kded module
+    // still continues to use old value
+    m_kcmNMTray->save();
 }
 
 void NetworkManagerApplet::constraintsEvent(Plasma::Constraints constraints)
@@ -550,13 +562,13 @@ void NetworkManagerApplet::toolTipAboutT
             text = i18nc("tooltip, all interfaces are down", "Disconnected");
 
             if (m_popup->hasWireless() && !Solid::Control::NetworkManager::isWirelessEnabled()) {
-                subText = i18nc("tooltip, wireless is disabled in software", "Wireless is disabled");
+                subText = i18nc("tooltip, wireless is disabled in software", "Wireless disabled in software");
             }
             if (!Solid::Control::NetworkManager::isNetworkingEnabled()) {
-                subText = i18nc("tooltip, all interfaces are down", "Networking is disabled");
+                subText = i18nc("tooltip, all interfaces are down", "Networking disabled");
             }
             if (m_popup->hasWireless() && !Solid::Control::NetworkManager::isWirelessHardwareEnabled()) {
-                subText = i18nc("tooltip, all interfaces are down", "Wireless killswitch is disabled");
+                subText = i18nc("tooltip, wireless is disabled by hardware", "Wireless disabled by hardware");
             }
 
         }
diff -pruN 0.1+git20110318.941cde9-2/applet/networkmanager.h 0.9~svngit20110408-0ubuntu2/applet/networkmanager.h
--- 0.1+git20110318.941cde9-2/applet/networkmanager.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/networkmanager.h	2011-04-08 18:47:06.000000000 +0100
@@ -110,6 +110,8 @@ private Q_SLOTS:
     void updatePixmap();
     void repaint();
     void clearActivatedOverlay();
+    // Request KCM module to persist changes
+    void saveConfiguration();
 
 private:
     bool hasInterfaceOfType(Solid::Control::NetworkInterface::Type type);
diff -pruN 0.1+git20110318.941cde9-2/applet/nmpopup.cpp 0.9~svngit20110408-0ubuntu2/applet/nmpopup.cpp
--- 0.1+git20110318.941cde9-2/applet/nmpopup.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/nmpopup.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -307,9 +307,6 @@ void NMPopup::interfaceAdded(const QStri
     kDebug() << "Interface Added.";
     Solid::Control::NetworkInterface * iface = Solid::Control::NetworkManager::findNetworkInterface(uni);
     addInterfaceInternal(iface);
-#ifdef NM_0_8
-    updateHasWwan();
-#endif
 }
 
 void NMPopup::interfaceRemoved(const QString& uni)
@@ -405,6 +402,9 @@ void NMPopup::addInterfaceInternal(Solid
         m_interfaces.insert(iface->uni(), ifaceItem);
     }
     updateHasWireless();
+#ifdef NM_0_8
+    updateHasWwan();
+#endif
 }
 
 void NMPopup::addVpnInterface()
diff -pruN 0.1+git20110318.941cde9-2/applet/vpninterfaceitem.cpp 0.9~svngit20110408-0ubuntu2/applet/vpninterfaceitem.cpp
--- 0.1+git20110318.941cde9-2/applet/vpninterfaceitem.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/applet/vpninterfaceitem.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -109,15 +109,7 @@ void VpnInterfaceItem::setConnectionInfo
         m_ifaceNameLabel->setText(i18nc("VPN connections interface", "<b>Virtual Private Network</b>"));
         m_connectionNameLabel->setText(i18nc("VPN state label", "Not Connected..."));
     }
-    if (!showDisconnect) {
-        //m_disconnectButton->setIcon("dialog-ok");
-        //m_disconnectButton->setToolTip(i18n("Connect"));
-        //m_disconnectButton->hide();
-    } else {
-        m_disconnectButton->setIcon(KIcon("dialog-close"));
-        m_disconnectButton->setToolTip(i18nc("tooltip on disconnect icon", "Disconnect"));
-        m_disconnectButton->show();
-    }
+    m_disconnectButton->setVisible(showDisconnect);
     if (m_vpnActivatables.count()) {
         //kDebug() << m_vpnActivatables.count() << "VPN connections have become available!";
         show();
diff -pruN 0.1+git20110318.941cde9-2/backends/NetworkManager/nmdbussettingsservice.cpp 0.9~svngit20110408-0ubuntu2/backends/NetworkManager/nmdbussettingsservice.cpp
--- 0.1+git20110318.941cde9-2/backends/NetworkManager/nmdbussettingsservice.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/backends/NetworkManager/nmdbussettingsservice.cpp	2011-04-15 15:26:54.000000000 +0100
@@ -182,6 +182,14 @@ void NMDBusSettingsService::handleAdd(Kn
             // its connections.
             if (d->uuidToPath.contains(ic->connectionUuid())) {
                 kDebug() << "tagging local InterfaceConnection " << ic->connectionName() << SERVICE_USER_SETTINGS << d->uuidToPath[ic->connectionUuid()].path();
+                kDebug() << "is default: " << ic->hasDefaultRoute();
+                Knm::Connection * conn = d->uuidToConnections[ic->connectionUuid()]->connection();
+                if (conn->autoConnect() != conn->originalAutoConnect())
+                {
+                    conn->setAutoConnect(conn->originalAutoConnect());
+                    handleUpdate(conn);
+                }
+                
                 ic->setProperty("NMDBusService", SERVICE_USER_SETTINGS);
                 ic->setProperty("NMDBusObjectPath", d->uuidToPath[ic->connectionUuid()].path());
             }
@@ -233,6 +241,7 @@ void NMDBusSettingsService::interfaceCon
 
 void NMDBusSettingsService::interfaceConnectionDeactivated()
 {
+    Q_D(NMDBusSettingsService);
     Knm::InterfaceConnection * ic = qobject_cast<Knm::InterfaceConnection*>(sender());
 #ifdef NM_0_8
     Solid::Control::NetworkInterface *iface = Solid::Control::NetworkManager::findNetworkInterface(ic->deviceUni());
diff -pruN 0.1+git20110318.941cde9-2/backends/NetworkManager/settings/802-11-wirelessdbus.cpp 0.9~svngit20110408-0ubuntu2/backends/NetworkManager/settings/802-11-wirelessdbus.cpp
--- 0.1+git20110318.941cde9-2/backends/NetworkManager/settings/802-11-wirelessdbus.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/backends/NetworkManager/settings/802-11-wirelessdbus.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -65,7 +65,7 @@ QVariantMap WirelessDbus::toMap()
       break;
   }
   // leave out band, NM seems to work automatically without it
-#if 0
+
   switch (setting->band()) {
     case Knm::WirelessSetting::EnumBand::a:
       map.insert("band", "a");
@@ -74,8 +74,8 @@ QVariantMap WirelessDbus::toMap()
       map.insert("band", "bg");
       break;
   }
-#endif
-  //map.insert("channel", setting->channel());
+
+  map.insert("channel", setting->channel());
   if (!setting->bssid().isEmpty()) {
       map.insert("bssid", SettingDbus::macHex2Bin(setting->bssid()));
   }
diff -pruN 0.1+git20110318.941cde9-2/dataengine/networkmanagementengine.cpp 0.9~svngit20110408-0ubuntu2/dataengine/networkmanagementengine.cpp
--- 0.1+git20110318.941cde9-2/dataengine/networkmanagementengine.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/dataengine/networkmanagementengine.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -74,14 +74,15 @@ NetworkManagementEngine::~NetworkManagem
 
 QStringList NetworkManagementEngine::sources() const
 {
-    return QStringList() << "networkStatus" << "connections";
+    return QStringList("connections");
+    //return QStringList() << "networkStatus" << "connections";
 }
 
 bool NetworkManagementEngine::sourceRequestEvent(const QString &name)
 {
     kDebug() << "Source requested:" << name << sources();
     setData(name, DataEngine::Data());
-    //setData("networkStatus", "isConnected", true);
+    setData("networkStatus", "isConnected", true);
     //scheduleSourcesUpdated();
 
     if (name == "connections") {
@@ -308,6 +309,9 @@ void NetworkManagementEngine::updateInte
         case Knm::Connection::Pppoe:
             _type = "Pppoe";
             break;
+        default:
+            _type = "I don't know.";
+            break;
     }
 
     setData(source(remote), "connectionType", _type);
@@ -417,6 +421,8 @@ void NetworkManagementEngine::updateWire
     setData(source, "securityToolTip", wirelessStatus->securityTooltip());
     setData(source, "securityIcon", wirelessStatus->securityIcon());
     setData(source, "adhoc", wirelessStatus->isAdhoc());
+    setData(source, "iconName", "network-wireless");
+
     scheduleSourcesUpdated();
 }
 
@@ -440,6 +446,7 @@ void NetworkManagementEngine::updateUnco
     }
     updateActivatable(remote);
     setData(source(remote), "activatableType", "UnconfiguredInterface");
+    setData(source(remote), "securityIcon", "security-low");
 
     scheduleSourcesUpdated();
 }
@@ -488,6 +495,8 @@ void NetworkManagementEngine::updateGsmI
     }
     updateInterfaceConnection(remote);
     setData(source(remote), "activatableType", "GsmInterfaceConnection");
+    setData(source(remote), "connectionName", " generic activatable");
+    setData(source(remote), "securityIcon", "security-low");
 
     scheduleSourcesUpdated();
 }
diff -pruN 0.1+git20110318.941cde9-2/dataengine/plasma-engine-networkmanagement.desktop 0.9~svngit20110408-0ubuntu2/dataengine/plasma-engine-networkmanagement.desktop
--- 0.1+git20110318.941cde9-2/dataengine/plasma-engine-networkmanagement.desktop	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/dataengine/plasma-engine-networkmanagement.desktop	2011-04-08 18:47:06.000000000 +0100
@@ -1,6 +1,24 @@
 [Desktop Entry]
 Name=Network Manager
+Name[da]=Network Manager
+Name[et]=Võrguhaldur
+Name[nl]=Netwerkbeheerder
+Name[pt]=Gestor da Rede
+Name[pt_BR]=Gerenciador de redes
+Name[sv]=Nätverkshanterare
+Name[uk]=Керування мережею
+Name[x-test]=xxNetwork Managerxx
+Name[zh_TW]=Network Manager
 Comment=Network Manager data engine
+Comment[da]=Datamotor til Network Manager
+Comment[et]=Võrguhalduri andmemootor
+Comment[nl]=Gegevens-engine van netwerkbeheerder
+Comment[pt]=Motor de dados da Gestão da Rede
+Comment[pt_BR]=Mecanismo de dados do gerenciador de redes
+Comment[sv]=Nätverkshanterarens datagränssnitt
+Comment[uk]=Рушій даних керування мережею
+Comment[x-test]=xxNetwork Manager data enginexx
+Comment[zh_TW]=Network Manager 資料引擎
 X-KDE-ServiceTypes=Plasma/DataEngine
 Type=Service
 Icon=networkmanager
diff -pruN 0.1+git20110318.941cde9-2/debian/changelog 0.9~svngit20110408-0ubuntu2/debian/changelog
--- 0.1+git20110318.941cde9-2/debian/changelog	2011-03-30 00:55:24.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/changelog	2011-04-15 11:55:25.000000000 +0100
@@ -1,109 +1,152 @@
-plasma-widget-networkmanagement (0.1+git20110318.941cde9-2) unstable; urgency=medium
+plasma-widget-networkmanagement (0.9~svngit20110408-0ubuntu2) natty; urgency=low
 
-  * Drop topgit support.
-  * Drop README.source, obsolelte and not needed anymore.
-  * Ship usr/share/kde4/apps/desktoptheme/default/icons/network.svgz
-    uncompressed as network.svg in order to avoid file conflict with
-    kdebase-runtime-data (>= 4:4.5) but still keep compatibility with
-    KDE SC 4.4
-  * Urgency=medium, shorten package aging as changes cannot break much.
-
- -- Modestas Vainius <modax@debian.org>  Wed, 30 Mar 2011 02:55:20 +0300
-
-plasma-widget-networkmanagement (0.1+git20110318.941cde9-1) unstable; urgency=low
-
-  * New upstream Git snapshot 941cde971277611da2575fc2dfccde01c4bbe564.
-    - Fixes crash on NetworkManager restart. (Closes: #590589)
-    - Correctly enable/disable wireless depending on the rfkill state and the
-      user settting. (Closes: #618761)
-  * debian/plasma-widget-networkmanagement.install
-    - Install new plasma_engine_networkmanagement.
+  * Add kubuntu_05_save_autoconnect_settings.diff, cherry-picked from upstream.
+    (LP: #760432)
 
- -- Michael Biebl <biebl@debian.org>  Sat, 19 Mar 2011 13:31:50 +0100
+ -- Felix Geyer <debfx-pkg@fobos.de>  Fri, 15 Apr 2011 12:37:13 +0200
 
-plasma-widget-networkmanagement (0.1~svn1175124-1) unstable; urgency=low
+plasma-widget-networkmanagement (0.9~svngit20110408-0ubuntu1) natty; urgency=low
 
-  * New upstream development snapshot:
-    - Last Changed Author: scripty
-    - Last Changed Rev: 1175124
-    - Last Changed Date: 2010-09-14 11:30:18 +0200
-  * Bump Standards-Version to 3.9.1. No further changes.
-  * Drop old Conflicts/Replaces: plasma-applet-networkmanager. No longer
-    required.
-  * Drop outdated debian/bug-presubj.
+  * New upstream snapshot
 
- -- Michael Biebl <biebl@debian.org>  Tue, 14 Sep 2010 23:26:24 +0200
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Fri, 08 Apr 2011 18:49:07 +0100
 
-plasma-widget-networkmanagement (0.1~svn1141976-1) unstable; urgency=low
+plasma-widget-networkmanagement (0.9~svngit20110312-0ubuntu1) natty; urgency=low
 
-  * New upstream development snapshot:
-    - Last Changed Author: pino
-    - Last Changed Rev: 1141976
-    - Last Changed Date: 2010-06-24 00:51:12 +0200
+  * New upstream snapshot
+  * Add build-dep and runtime depends on mobile-broadband-provider-info
+  * Add =binary version to plasma-widget-networkmanagement depends on knm-runtime
 
- -- Michael Biebl <biebl@debian.org>  Thu, 24 Jun 2010 03:52:15 +0200
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Mon, 21 Mar 2011 13:52:36 +0000
 
-plasma-widget-networkmanagement (0.1~svn1133205-1) unstable; urgency=low
+plasma-widget-networkmanagement (0.9~svn1176084-0ubuntu3) natty; urgency=low
 
-  * New upstream development snapshot:
-    - Last Changed Author: scripty
-    - Last Changed Rev: 1133205
-    - Last Changed Date: 2010-06-01 10:39:08 +0200
-  * debian/control
-    - Drop Build-Depends on libknotificationitem-1-dev which was merged and
-      renamed in kde4libs 4.4. (Closes: #584360)
-  * debian/rules
-    - Set -DINSTALL_KNM_AUTOSTART=ON to enable installation of knetworkmanager
-      autostart file.
-  * Re-add plasma-widget-networkmanagement package.
-  * Move the networkmanagement kded module from knm-runtime to
-    plasma-widget-networkmanagement. The kded service is not used by
-    knetworkmanager and actually breaks knetworkmanager due to being
-    auto-loaded and claiming the NetworkManagerUserSettings bus name.
-
- -- Michael Biebl <biebl@debian.org>  Fri, 18 Jun 2010 12:39:10 +0200
-
-plasma-widget-networkmanagement (0.1~svn1125524-1) unstable; urgency=low
-
-  * New upstream development snapshot:
-    - Last Changed Author: lvsouza
-    - Last Changed Rev: 1125524
-    - Last Changed Date: 2010-05-11 18:34:09 +0200
-    - Fixes placement of the systray applet context menu. (Closes: #580530)
-  * debian/patches/01-qt4.5-compat.patch
-    - Drop the Qt 4.5 compat patch again now that we have a recent enough
-      version in unstable and testing.
-  * debian/control
-    - Bump Build-Depends on libqt4-dev to (>= 4:4.6.0).
-    - Bump Build-Depends on kdelibs5-dev and kdebase-workspace-dev to
-      (>= 4:4.4.0)
-  * debian/knm-runtime.install
-    - Simplify install file by using wildcards where appropriate.
-    - Install new strongswan VPN plugin.
+  * Change .so versions to 4.6.0 from 4.5.0 in knm-runtime.install for builds
+    against KDE SC 4.6
 
- -- Michael Biebl <biebl@debian.org>  Thu, 13 May 2010 02:02:57 +0200
+ -- Scott Kitterman <scott@kitterman.com>  Mon, 13 Dec 2010 15:42:59 -0500
 
-plasma-widget-networkmanagement (0.1~svn1088283-1) unstable; urgency=medium
+plasma-widget-networkmanagement (0.9~svn1176084-0ubuntu2) natty; urgency=low
 
-  * New upstream development snapshot:
-    - Last Changed Author: scripty
-    - Last Changed Rev: 1088283
-    - Last Changed Date: 2010-02-10 14:11:26 +0100
+  * Rebuild against kdelibs5-dev 4.5.2a-0ubuntu2 for libkutils4 transition
 
-  [ Michael Biebl ]
-  * debian/patches/01-qt4.5-compat.patch
-    - Remove Qt 4.6 specific features so it compiles with Qt 4.5.
-  * debian/control
-    - Lower Build-Depends on libqt4-dev to (>= 4:4.5.0).
-    - Bump Standards-Version to 3.8.4. No further changes.
-  * Drop the plasma-widget-networkmanagement binary package for now as it not
-    yet stable enough. Add Conflicts to network-manager-kde so it is removed
-    on upgrades.
+ -- Alessandro Ghersi <alessandro-ghersi@kubuntu.org>  Fri, 22 Oct 2010 06:55:38 +0200
 
-  [ Modestas Vainius ]
-  * Enable parallel building - pass --parallel to dh.
+plasma-widget-networkmanagement (0.9~svn1176084-0ubuntu1) maverick; urgency=low
+
+  * New upstream snapshot
+    - Remove kubuntu_05_fix_qdbusfornm.diff fixed by upstream
+    - Drop outdated debian/bug-presubj.
+    - Bump Standards-Version to 3.9.1. No further changes.
+    - Bump build-dependencies
+
+ -- Alessandro Ghersi <alessandro-ghersi@kubuntu.org>  Thu, 16 Sep 2010 17:43:40 +0200
+
+plasma-widget-networkmanagement (0.9~svn1167391-0ubuntu1) maverick; urgency=low
+
+  * New upstream snapshot
+  * Add kubuntu_04_no_tests.diff to not build tests, they fail
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Tue, 24 Aug 2010 15:34:36 +0100
+
+plasma-widget-networkmanagement (0.9~svn1137272-0ubuntu2) maverick; urgency=low
+
+  * Add kubuntu_01_constant_explicitly_qreal.diff to fix FTBS on armel
+  * Update Vcs-Browser and Vcs-Bzr
+  * Add minimum version for quilt to make lintian happy
+
+ -- Alessandro Ghersi <alessandro-ghersi@kubuntu.org>  Thu, 24 Jun 2010 02:09:27 +0200
+
+plasma-widget-networkmanagement (0.9~svn1137272-0ubuntu1) maverick; urgency=low
+
+  * New upstream snapshot
+  * Remove caution notice on plasma-widget-networkmanagement description
+  * Add -DINSTALL_KNM_AUTOSTART=TRUE
+  * Add package network-manager-strongswan-kde
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Wed, 16 Jun 2010 18:44:27 +0100
+
+plasma-widget-networkmanagement (0.9~svn1112085-0ubuntu5) maverick; urgency=low
+
+  * Rebuild for libsolidcontrol4 -> libsolidcontrol4a transition
+  * Bump libraries version in knm-runtime.install
+
+ -- Alessandro Ghersi <alessandro-ghersi@kubuntu.org>  Sat, 12 Jun 2010 04:03:05 +0200
+
+plasma-widget-networkmanagement (0.9~svn1112085-0ubuntu4) lucid; urgency=low
+
+  * Fixed debian/control:
+    - knm-runtime does not recommend any package (it's the backend...)
+    - The two frontends suggest the VPN plugins and depend on the runtime.
+    - Closes LP: #563836
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Thu, 15 Apr 2010 18:18:47 +0200
+
+plasma-widget-networkmanagement (0.9~svn1112085-0ubuntu3) lucid; urgency=low
+
+  * Fixed debian/control again:
+    - knm-runtime only suggests, not recommends the vpn plugins
+    - knm-runtime suggests the kde packages to the vpn plugins
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 14 Apr 2010 14:13:45 +0200
+
+plasma-widget-networkmanagement (0.9~svn1112085-0ubuntu2) lucid; urgency=low
+
+  * Fixed debian/control:
+    - plasma-widget-networkmanagement Replaces knm-runtime (<< 0.9~svn1112085)
+    - Closes LP: #562770
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 14 Apr 2010 13:59:23 +0200
+
+plasma-widget-networkmanagement (0.9~svn1112085-0ubuntu1) lucid; urgency=low
+
+  * New upstream SVN snapshot
+  * Build-depends on quilt
+  * Fixed debian/rules so that the patches apply
+  * Fixed debian/control file:
+    - Create separate packages for openvpn, pptp and vpnc plugins to avoid people
+      to create a VPN connection without having the
+      corresponding network-manager package installed.
+    - No package for the Novell VPN plugin as network-manager currently doesn't
+      have the backend for Ubuntu.
+  * Both network-manager-kde and plasma-widget-networkmanagement conflict each
+    other
+  * Added kubuntu_04_autoload_networkmanagement.diff:
+    - this kded service is needed by the plasmoid, and can be enabled now we have
+      the package conflict with knetworkmanager set.
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Fri, 12 Mar 2010 16:15:08 +0100
+
+plasma-widget-networkmanagement (0.9~svn1075616-0ubuntu3) lucid; urgency=low
+
+  * Add kubuntu_03_no_dbusmenu.diff from Aurelien Gateau, turn off
+    dbusmenu for knetworkmanager
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Wed, 10 Mar 2010 13:04:46 +0000
 
- -- Michael Biebl <biebl@debian.org>  Mon, 15 Feb 2010 14:46:25 +0100
+plasma-widget-networkmanagement (0.9~svn1075616-0ubuntu2) lucid; urgency=low
+
+  * Rebuild to fix broken pot file (LP: #529483)
+
+ -- Harald Sitter <apachelogger@ubuntu.com>  Tue, 02 Mar 2010 23:38:13 +0100
+
+plasma-widget-networkmanagement (0.9~svn1075616-0ubuntu1) lucid; urgency=low
+
+  * Merge with Debian Experimental, remaining changes:
+    - Do not build-depend on libknotificationitem-1-dev
+    - Keep depends on knm-runtime for the plasma-widget-networkmanagement
+      binary package
+    - Do not specify NetworkManager 0.7 in the package description, we have
+      0.8
+    - Keep depends on knm-runtime for network-manager-kde
+    - Keep replaces on old plasma-widget-networkmanagement for
+      network-manager-kde
+    - Keep newer replace version on plasma-widget-networkmanagement for the
+      knm-runtime binary package
+    - Keep kubuntu_02_install_qdbusfornm.diff
+  * Install qdbusfornm, it accidentally got removed from the .install files
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Sun, 17 Jan 2010 09:18:01 -0500
 
 plasma-widget-networkmanagement (0.1~svn1075616-1) experimental; urgency=low
 
@@ -119,6 +162,52 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Michael Biebl <biebl@debian.org>  Sun, 17 Jan 2010 11:06:58 +0100
 
+plasma-widget-networkmanagement (0.9~svn1065133-0ubuntu2) lucid; urgency=low
+
+  * Actually unapply kubuntu_03_install_translations.diff, I forgot that
+    patches get applied when the source package is extracted.
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Wed, 23 Dec 2009 08:52:57 -0500
+
+plasma-widget-networkmanagement (0.9~svn1065133-0ubuntu1) lucid; urgency=low
+
+  * New upstream svn snapshot:
+    - Fixes LP: #451899
+    - Remove kubuntu_03_install_translations.diff, translations removed
+      upstream. (Moved to regular KDE l10n location)
+    - Bump various lib .so versions in knm-runtime.install
+  * Use source format 3.0 (quilt):
+    - Add debian/source/format
+    - Drop quilt build-dependency
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Tue, 22 Dec 2009 11:21:44 -0500
+
+plasma-widget-networkmanagement (0.9~svn1054632-0ubuntu2) lucid; urgency=low
+
+  * Update to build with KDE SC 4.4
+    - Bump KDE SC build-depends to 4:4.3.80
+    - Bump qt4-x11 to 4.6.0
+    - Drop build-dep on libknotificationitem-dev (incorporated into kdelibs)
+    - Bump sonames in knm-runtime.install to 4.4.0
+  * Bump build-dep on libnm-util-dev and network-manager-dev to 0.8~
+    - Package is patched to support network manager 0.8 
+
+ -- Scott Kitterman <scott@kitterman.com>  Fri, 18 Dec 2009 09:01:48 -0500
+
+plasma-widget-networkmanagement (0.9~svn1054632-0ubuntu1) lucid; urgency=low
+
+  * Merge with Debian Experimental, remaining changes:
+    - Do not use source format 3, Launchpad is slow in supporting it
+    - Keep quilt build-dep due to no source format 3
+    - Keep kubuntu_02_install_qdbusfornm.diff
+    - Keep kubuntu_03_install_translations.diff
+  * Add replaces to older versions of plasma-widget-networkmanagement to
+    knm-runtime and network-manager-kde
+  * network-manager-kde and plasma-widget-networkmanager depend on 
+    knm-runtime
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Fri, 04 Dec 2009 08:34:19 -0500
+
 plasma-widget-networkmanagement (0.1~svn1054632-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -135,6 +224,26 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Thu, 26 Nov 2009 23:39:48 +0200
 
+plasma-widget-networkmanagement (0.9~svn1029786+ag1-0ubuntu1) karmic; urgency=low
+
+  * Added support for WEP ASCII keys, kubuntu_05_support_for_wep_ascii_keys.diff, LP: #453260
+  * More readable wireless icons, monolithic/icons/
+  * Use a different icon for activated wired connection, kubuntu_06_use_different_icon_for_activated_wired_connection.diff
+  * Always show disconnect button as advised by upstream, kubuntu_07_always_show_disconnect_button.diff
+  * Add fix from upstream kubuntu_08_r1039152_store_restore_gsm_network_type.diff,
+    http://bugs.kde.org/207454 "Mobile connection type (GPRS/2G/3G) is not kept after saving connection"
+  * Add fix from upstream kubuntu_09_r1039472_fix_hmac_auth_key_type_mis_storage.diff, 
+    http://bugs.kde.org/205894 "OpenVPN plugin creates invalid connections"
+
+ -- Aurélien Gâteau <aurelien.gateau@canonical.com>  Tue, 20 Oct 2009 12:04:45 +0200
+
+plasma-widget-networkmanagement (0.9~svn1029786-0ubuntu1) karmic; urgency=low
+
+  * New upstream snapshot
+  * Upstream version number now 0.9
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Fri, 02 Oct 2009 14:17:11 +0100
+
 plasma-widget-networkmanagement (0.1~svn1029786-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -146,6 +255,37 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Thu, 01 Oct 2009 20:37:01 +0300
 
+plasma-widget-networkmanagement (0.1~svn1023224-0ubuntu1) karmic; urgency=low
+
+  * New upstream snapshot
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Mon, 14 Sep 2009 16:19:31 +0100
+
+plasma-widget-networkmanagement (0.1~svn1017841-0ubuntu2) karmic; urgency=low
+
+  * Add kubuntu_03_install_translations.diff to install translations
+  * Add kubuntu_04_compile_fix.diff, hopefully fix compile failure
+  * Add back patchsys-quilt to debian/rules and comment out unused debhelper 7 bits
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Fri, 04 Sep 2009 12:56:32 +0100
+
+plasma-widget-networkmanagement (0.1~svn1017841-0ubuntu1) karmic; urgency=low
+
+  * New upstream release, synced from SuSE, closes LP: #424035
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Thu, 03 Sep 2009 21:38:00 +0100
+
+plasma-widget-networkmanagement (0.1~svn1013816-0ubuntu1) karmic; urgency=low
+
+  * New upstream snapshot
+    - Bug fixing (LP:  #413643)
+  * Bump network-manager depends version to (>= 0.8~) since we have patched
+    our package to work with the newer NM
+  * Drop network manager versions from package descriptions
+  * Remove Suggests: kdebase-workspace-bin since the package now depends on it
+
+ -- Scott Kitterman <scott@kitterman.com>  Sat, 22 Aug 2009 11:49:04 -0400
+
 plasma-widget-networkmanagement (0.1~svn1013816-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -157,6 +297,24 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Fri, 21 Aug 2009 23:44:23 +0300
 
+plasma-widget-networkmanagement (0.1~svn1011298-0ubuntu2) karmic; urgency=low
+
+  * Add dependency on kdebase-workspace-bin
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Fri, 14 Aug 2009 13:17:39 +0100
+
+plasma-widget-networkmanagement (0.1~svn1011298-0ubuntu1) karmic; urgency=low
+
+  * New upstream snapshot
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Fri, 14 Aug 2009 12:31:50 +0100
+
+plasma-widget-networkmanagement (0.1~svn1002781-0ubuntu3) karmic; urgency=low
+
+  * Add kubuntu_03_uuid_branch_fix.diff by Alexander Sack
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Wed, 12 Aug 2009 15:55:22 +0100
+
 plasma-widget-networkmanagement (0.1~svn1007929-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -171,7 +329,7 @@ plasma-widget-networkmanagement (0.1~svn
     - network-manager-kde package is based on the one from the previous
       knetworkmanager debian source package.
       - take over of this binary package was granted by knetworkmanager
-        maintainer (Michael Biebl); 
+        maintainer (Michael Biebl);
       - moved to the section net;
       - recommends / custom depends moved to the knm-runtime package;
       - bump version of this binary package to 1:0.8~... to enable
@@ -194,6 +352,26 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Thu, 06 Aug 2009 22:57:13 +0300
 
+plasma-widget-networkmanagement (0.1~svn1002781-0ubuntu2) karmic; urgency=low
+
+  * Correct replaces for plasma-widget-network-manager
+  * Remove conflicts for plsama-widget-network-manager, that wouldn't work
+    too well with a transitional package
+  * Correct binary transitional package for plasma-widget-network-manager
+  * Remove debhelper dir as we do not use it and it has been dropped in Debian
+  * The plasma-widget-network-manager binary transitional package depends on
+    {misc:Depends} to make lintian happy
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Thu, 30 Jul 2009 11:39:03 -0400
+
+plasma-widget-networkmanagement (0.1~svn1002781-0ubuntu1) karmic; urgency=low
+
+  * New SVN snapshot
+  * Set KUBUNTU_DESKTOP_POT = playground-base
+  * Add kubuntu_02_install_qdbusfornm.diff for easier debugging
+
+ -- Jonathan Riddell <jriddell@ubuntu.com>  Mon, 27 Jul 2009 16:26:50 +0100
+
 plasma-widget-networkmanagement (0.1~svn970021-2) experimental; urgency=low
 
   * Use cmake support of debhelper 7.3.0:
@@ -204,6 +382,23 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Thu, 02 Jul 2009 21:09:09 +0300
 
+plasma-widget-networkmanagement (0.1~svn980510-0ubuntu1) karmic; urgency=low
+
+  * Merge with Debian Experimental, remaining changes:
+    - Keep build-depend on cdbs
+    - Recommend kwalletmanager
+    - Keep our transitional package for plasma-widget-network-manager
+    - Use kde.mk from pkg-kde-tools
+  * New upstream svn snapshot
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Fri, 19 Jun 2009 12:27:24 -0400
+
+plasma-widget-network-manager (0.0+svn976478-0ubuntu1) karmic; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Mon, 01 Jun 2009 21:17:44 +0200
+
 plasma-widget-networkmanagement (0.1~svn970021-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -216,6 +411,13 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Thu, 21 May 2009 09:53:14 +0300
 
+plasma-widget-network-manager (0.0+svn966653-0ubuntu1) karmic; urgency=low
+
+  * New svn snapshot. (LP: #334052) (LP: #330811)
+  * Manual update of kubuntu_01_place_kcm_in_network_kcm.diff
+
+ -- Andreas Wenning <awen@awen.dk>  Fri, 15 May 2009 20:51:08 +0200
+
 plasma-widget-networkmanagement (0.1~svn951801-1) experimental; urgency=low
 
   * New upstream development snapshot:
@@ -231,6 +433,20 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Fri, 10 Apr 2009 12:39:54 +0300
 
+plasma-widget-network-manager (0.0+svn930811-0ubuntu2) jaunty; urgency=low
+
+  * Add kubntu_01_place_kcm_in_network_kcm.diff to place the network manager
+    kcm inside the network settings kcm
+
+ -- Jonathan Thomas <echidnaman@kubuntu.org>  Tue, 17 Mar 2009 14:34:46 -0400
+
+plasma-widget-network-manager (0.0+svn930811-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+  * Essentially bug fixes, including memory leak
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Tue, 24 Feb 2009 11:55:30 +0100
+
 plasma-widget-networkmanagement (0.1~svn926306-1) experimental; urgency=low
 
   * New upstream development snapshot.
@@ -246,8 +462,117 @@ plasma-widget-networkmanagement (0.1~svn
 
  -- Modestas Vainius <modestas@vainius.eu>  Sun, 15 Feb 2009 22:51:46 +0200
 
+plasma-widget-network-manager (0.0+svn924363-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+  * Renamed to plasma-widget-network-manager
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Tue, 10 Feb 2009 16:33:42 +0100
+
+plasmoid-network-manager (0.0+svn923467-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Sun, 08 Feb 2009 21:34:12 +0100
+
+plasmoid-network-manager (0.0+svn921942-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Fri, 06 Feb 2009 01:08:18 +0100
+
+plasmoid-network-manager (0.0+svn921237-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot.
+  * Fixes a couple of regressions with the last upload.
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Thu, 05 Feb 2009 01:45:29 +0100
+
+plasmoid-network-manager (0.0+svn920770-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+  * Lots of little fixes upstream, including UI
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 04 Feb 2009 01:13:59 +0100
+
+plasmoid-network-manager (0.0+svn920546-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Tue, 03 Feb 2009 09:20:39 +0100
+
+plasmoid-network-manager (0.0+svn920287-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot. Should mostly work now.
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Mon, 02 Feb 2009 17:53:02 +0100
+
+plasmoid-network-manager (0.0+svn919860-0ubuntu1) jaunty; urgency=low
+
+  * Ne SVN snapshot.
+  * VPN support improvement.
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Sun, 01 Feb 2009 19:08:34 +0100
+
+plasmoid-network-manager (0.0+svn919052-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot, VPN plugins are now building
+  * Fixed debian/rules:
+    - Added needed DBUS_SYSTEM_POLICY_DIR variable
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Sat, 31 Jan 2009 14:53:41 +0100
+
+plasmoid-network-manager (0.0+svn918151-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Thu, 29 Jan 2009 14:46:14 +0100
+
+plasmoid-network-manager (0.0+svn917788-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot. Fixes a couple of crashes.
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 28 Jan 2009 17:27:34 +0100
+
 plasma-widget-networkmanagement (0.1~svn917381-1) experimental; urgency=low
 
   * Initial release. (Closes: #508438)
 
  -- Modestas Vainius <modestas@vainius.eu>  Wed, 28 Jan 2009 01:30:31 +0200
+
+plasmoid-network-manager (0.0+svn917510-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot... Seems to be stabilized a bit this time :)
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 28 Jan 2009 01:39:12 +0100
+
+plasmoid-network-manager (0.0+svn917247-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 28 Jan 2009 01:39:10 +0100
+
+plasmoid-network-manager (0.0+svn916543-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Fri, 23 Jan 2009 15:37:24 +0100
+
+plasmoid-network-manager (0.0+svn915416-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot 
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Fri, 23 Jan 2009 00:48:14 +0100
+
+plasmoid-network-manager (0.0+svn915231-0ubuntu1) jaunty; urgency=low
+
+  * New SVN snapshot
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Thu, 22 Jan 2009 16:57:23 +0100
+
+plasmoid-network-manager (0.0+svn915211-0ubuntu1) jaunty; urgency=low
+
+  * Initial release 
+
+ -- Anthony Mercatante <tonio@ubuntu.com>  Wed, 17 Dec 2008 22:33:22 +0100
+
diff -pruN 0.1+git20110318.941cde9-2/debian/control 0.9~svngit20110408-0ubuntu2/debian/control
--- 0.1+git20110318.941cde9-2/debian/control	2011-03-30 00:37:57.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/control	2011-04-08 18:49:05.000000000 +0100
@@ -1,30 +1,23 @@
 Source: plasma-widget-networkmanagement
 Section: kde
 Priority: optional
-Maintainer: Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org>
+Maintainer: Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org>
 Uploaders: Modestas Vainius <modestas@vainius.eu>, Michael Biebl <biebl@debian.org>
-Build-Depends: debhelper (>= 7.3.16), cmake (>= 2.6.2), pkg-kde-tools (>= 0.5),
- libqt4-dev (>= 4:4.6.0), kdelibs5-dev (>= 4:4.4.0), kdebase-workspace-dev (>= 4:4.4.0),
- network-manager-dev (>= 0.7.0), libnm-util-dev (>= 0.7.0)
+DM-Upload-Allowed: yes
+Build-Depends: debhelper (>= 7.3.16), cmake (>= 2.6.2), pkg-kde-tools (>= 0.5), quilt (>= 0.46-7~),
+ libqt4-dev (>= 4:4.7.0~), kdelibs5-dev (>= 4:4.5.2a-0ubuntu2), kdebase-workspace-dev (>= 4:4.5.2-0ubuntu3),
+ network-manager-dev (>= 0.8~), libnm-util-dev (>= 0.8~), mobile-broadband-provider-info
 Standards-Version: 3.9.1
-Vcs-Git: git://git.debian.org/git/pkg-kde/kde-extras/plasma-widget-networkmanagement.git
-Vcs-Browser: http://git.debian.org/?p=pkg-kde/kde-extras/plasma-widget-networkmanagement.git
-
-Package: network-manager-kde
-Architecture: any
-Section: net
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Conflicts: plasma-widget-networkmanagement
-Provides: knetworkmanager
-Description: KDE system tray applet for controlling NetworkManager
- System tray applet for controlling network connections managed by
- NetworkManager. It is mainly written for KDE but also works for other desktop
- environments like GNOME or Xfce.
+Vcs-Browser: http://bazaar.launchpad.net/~kubuntu-members/plasma-widget-networkmanagement/ubuntu
+Vcs-Bzr: https://code.launchpad.net/~kubuntu-members/plasma-widget-networkmanagement/ubuntu
 
 Package: plasma-widget-networkmanagement
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Suggests: kdebase-workspace-bin
+Depends: ${shlibs:Depends}, ${misc:Depends}, knm-runtime (= ${binary:Version}), mobile-broadband-provider-info
+Conflicts: plasma-applet-networkmanager, network-manager-kde
+Replaces: plasma-applet-networkmanager, knm-runtime (<< 0.9~svn1112085)
+Suggests: network-manager-vpnc-kde, network-manager-openvpn-kde, network-manager-pptp-kde
 Description: Network Management widget for KDE4 Plasma
  This package contains the Network Management plasma widget which aims to
  provide a fully featured GUI for managing networks.  Currently, the only
@@ -36,12 +29,57 @@ Description: Network Management widget f
  available in the kdebase-workspace-bin package. The user friendly name of the
  widget is "Network Management" (in e.g. "Add Widgets" dialog).
 
+Package: network-manager-kde
+Architecture: any
+Section: net
+Depends: ${shlibs:Depends}, ${misc:Depends}, knm-runtime
+Conflicts: plasma-widget-networkmanagement
+Replaces: plasma-widget-networkmanagement (<< 0.9~svn1054632)
+Provides: knetworkmanager
+Suggests: network-manager-vpnc-kde, network-manager-openvpn-kde, network-manager-pptp-kde
+Description: KDE system tray applet for controlling NetworkManager
+ System tray applet for controlling network connections managed by
+ NetworkManager. It is mainly written for KDE but also works for other desktop
+ environments like GNOME or Xfce.
+
+Package: network-manager-openvpn-kde
+Architecture: any
+Section: net
+Depends: ${shlibs:Depends}, ${misc:Depends}, network-manager-openvpn
+Description: KDE NetworkManagement infrastructure (OpenVPN plugin)
+ This package the OpenVPN plugin for the KDE Networkmanagement
+ infrastructure.
+
+Package: network-manager-strongswan-kde
+Architecture: any
+Section: net
+Depends: ${shlibs:Depends}, ${misc:Depends}, network-manager-strongswan
+Description: KDE NetworkManagement infrastructure (strongSwan plugin)
+ This package the strongSwan plugin for the KDE Networkmanagement
+ infrastructure.
+
+Package: network-manager-pptp-kde
+Architecture: any
+Section: net
+Depends: ${shlibs:Depends}, ${misc:Depends}, network-manager-pptp
+Description: KDE NetworkManagement infrastructure (PPTP plugin)
+ This package the PPTP plugin for the KDE Networkmanagement
+ infrastructure.
+
+Package: network-manager-vpnc-kde
+Architecture: any
+Section: net
+Depends: ${shlibs:Depends}, ${misc:Depends}, network-manager-vpnc
+Description: KDE NetworkManagement infrastructure (VPNC plugin)
+ This package the VPNC plugin for the KDE Networkmanagement
+ infrastructure.
+
 Package: knm-runtime
 Architecture: any
 Section: net
 Depends: ${shlibs:Depends}, ${misc:Depends}, network-manager (>= 0.7.0)
-Replaces: plasma-widget-networkmanagement (<< 0.1~svn1005432)
-Recommends: kwalletmanager, network-manager-vpnc, network-manager-openvpn, network-manager-pptp
+Replaces: plasma-widget-networkmanagement (<< 0.9~svn1054632)
+Recommends: kwalletmanager
 Description: KDE NetworkManagement infrastructure runtime files
  This package contains runtime libraries and binaries needed by both
  network-manager-kde (knetworkmanager) and plasma-widget-networkmanagement
@@ -58,7 +96,7 @@ Package: plasma-widget-networkmanagement
 Architecture: any
 Section: debug
 Priority: extra
-Depends: ${misc:Depends}, network-manager-kde (= ${knetworkmanager:Version})
+Depends: ${misc:Depends}, plasma-widget-networkmanagement (= ${binary:Version})
 Recommends: kdelibs5-dbg
 Suggests: kdebase-workspace-dbg
 Description: debugging symbols for KDE Network Management
diff -pruN 0.1+git20110318.941cde9-2/debian/knm-runtime.install 0.9~svngit20110408-0ubuntu2/debian/knm-runtime.install
--- 0.1+git20110318.941cde9-2/debian/knm-runtime.install	2011-03-30 00:37:57.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/knm-runtime.install	2011-04-08 18:49:05.000000000 +0100
@@ -1,25 +1,56 @@
 etc/dbus-1/system.d/NetworkManager-kde4.conf
+usr/bin/qdbusfornm
 usr/lib/kde4/kcm_networkmanagement.so
 usr/lib/kde4/kcm_networkmanagement_tray.so
+usr/lib/kde4/kded_networkmanagement.so
 usr/lib/kde4/libexec/networkmanagement_configshell
-usr/lib/kde4/networkmanagement_novellvpnui.so
-usr/lib/kde4/networkmanagement_openvpnui.so
-usr/lib/kde4/networkmanagement_pptpui.so
-usr/lib/kde4/networkmanagement_strongswanui.so
-usr/lib/kde4/networkmanagement_vpncui.so
 usr/lib/libknm_nm.so
-usr/lib/libknmclient.so.*
-usr/lib/libknminternals.so.*
-usr/lib/libknmservice.so.*
-usr/lib/libknmui.so.*
+usr/lib/libknmclient.so.4
+usr/lib/libknmclient.so.4.6.0
+usr/lib/libknminternals.so.4
+usr/lib/libknminternals.so.4.6.0
+usr/lib/libknmservice.so.4
+usr/lib/libknmservice.so.4.6.0
+usr/lib/libknmui.so.4
+usr/lib/libknmui.so.4.6.0
 usr/lib/libsolidcontrolfuture.so
-usr/share/icons/oxygen/
+usr/share/icons/oxygen/128x128/devices/network-wired-activated.png
+usr/share/icons/oxygen/128x128/devices/network-wireless-0.png
+usr/share/icons/oxygen/128x128/devices/network-wireless-100.png 
+usr/share/icons/oxygen/128x128/devices/network-wireless-25.png  
+usr/share/icons/oxygen/128x128/devices/network-wireless-50.png  
+usr/share/icons/oxygen/128x128/devices/network-wireless-75.png
+usr/share/icons/oxygen/16x16/devices/network-wired-activated.png
+usr/share/icons/oxygen/16x16/devices/network-wireless-0.png
+usr/share/icons/oxygen/16x16/devices/network-wireless-100.png
+usr/share/icons/oxygen/16x16/devices/network-wireless-25.png
+usr/share/icons/oxygen/16x16/devices/network-wireless-50.png
+usr/share/icons/oxygen/16x16/devices/network-wireless-75.png
+usr/share/icons/oxygen/22x22/devices/network-wired-activated.png
+usr/share/icons/oxygen/22x22/devices/network-wireless-0.png
+usr/share/icons/oxygen/22x22/devices/network-wireless-100.png
+usr/share/icons/oxygen/22x22/devices/network-wireless-25.png
+usr/share/icons/oxygen/22x22/devices/network-wireless-50.png
+usr/share/icons/oxygen/22x22/devices/network-wireless-75.png
+usr/share/icons/oxygen/32x32/devices/network-wired-activated.png
+usr/share/icons/oxygen/32x32/devices/network-wireless-0.png  
+usr/share/icons/oxygen/32x32/devices/network-wireless-100.png
+usr/share/icons/oxygen/32x32/devices/network-wireless-25.png
+usr/share/icons/oxygen/32x32/devices/network-wireless-50.png 
+usr/share/icons/oxygen/32x32/devices/network-wireless-75.png 
+usr/share/icons/oxygen/48x48/devices/network-wired-activated.png
+usr/share/icons/oxygen/48x48/devices/network-wireless-0.png
+usr/share/icons/oxygen/48x48/devices/network-wireless-100.png
+usr/share/icons/oxygen/48x48/devices/network-wireless-25.png
+usr/share/icons/oxygen/48x48/devices/network-wireless-50.png
+usr/share/icons/oxygen/48x48/devices/network-wireless-75.png
+usr/share/icons/oxygen/64x64/devices/network-wired-activated.png
+usr/share/icons/oxygen/64x64/devices/network-wireless-0.png     
+usr/share/icons/oxygen/64x64/devices/network-wireless-100.png   
+usr/share/icons/oxygen/64x64/devices/network-wireless-25.png    
+usr/share/icons/oxygen/64x64/devices/network-wireless-50.png    
+usr/share/icons/oxygen/64x64/devices/network-wireless-75.png    
 usr/share/kde4/apps/networkmanagement/networkmanagement.notifyrc
 usr/share/kde4/services/kcm_networkmanagement.desktop
 usr/share/kde4/services/kcm_networkmanagement_tray.desktop
-usr/share/kde4/services/networkmanagement_novellvpnui.desktop
-usr/share/kde4/services/networkmanagement_openvpnui.desktop
-usr/share/kde4/services/networkmanagement_pptpui.desktop
-usr/share/kde4/services/networkmanagement_strongswanui.desktop
-usr/share/kde4/services/networkmanagement_vpncui.desktop
 usr/share/kde4/servicetypes/networkmanagement_vpnuiplugin.desktop
diff -pruN 0.1+git20110318.941cde9-2/debian/network-manager-novellvpn-kde.install 0.9~svngit20110408-0ubuntu2/debian/network-manager-novellvpn-kde.install
--- 0.1+git20110318.941cde9-2/debian/network-manager-novellvpn-kde.install	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/network-manager-novellvpn-kde.install	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,2 @@
+usr/lib/kde4/networkmanagement_novellvpnui.so
+usr/share/kde4/services/networkmanagement_novellvpnui.desktop
diff -pruN 0.1+git20110318.941cde9-2/debian/network-manager-openvpn-kde.install 0.9~svngit20110408-0ubuntu2/debian/network-manager-openvpn-kde.install
--- 0.1+git20110318.941cde9-2/debian/network-manager-openvpn-kde.install	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/network-manager-openvpn-kde.install	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,2 @@
+usr/lib/kde4/networkmanagement_openvpnui.so
+usr/share/kde4/services/networkmanagement_openvpnui.desktop
\ No newline at end of file
diff -pruN 0.1+git20110318.941cde9-2/debian/network-manager-pptp-kde.install 0.9~svngit20110408-0ubuntu2/debian/network-manager-pptp-kde.install
--- 0.1+git20110318.941cde9-2/debian/network-manager-pptp-kde.install	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/network-manager-pptp-kde.install	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,2 @@
+usr/lib/kde4/networkmanagement_pptpui.so
+usr/share/kde4/services/networkmanagement_pptpui.desktop
\ No newline at end of file
diff -pruN 0.1+git20110318.941cde9-2/debian/network-manager-strongswan-kde.install 0.9~svngit20110408-0ubuntu2/debian/network-manager-strongswan-kde.install
--- 0.1+git20110318.941cde9-2/debian/network-manager-strongswan-kde.install	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/network-manager-strongswan-kde.install	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,2 @@
+usr/share/kde4/services/networkmanagement_strongswanui.desktop
+usr/lib/kde4/networkmanagement_strongswanui.so
diff -pruN 0.1+git20110318.941cde9-2/debian/network-manager-vpnc-kde.install 0.9~svngit20110408-0ubuntu2/debian/network-manager-vpnc-kde.install
--- 0.1+git20110318.941cde9-2/debian/network-manager-vpnc-kde.install	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/network-manager-vpnc-kde.install	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,2 @@
+usr/lib/kde4/networkmanagement_vpncui.so
+usr/share/kde4/services/networkmanagement_vpncui.desktop
\ No newline at end of file
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/kubuntu_01_constant_explicitly_qreal.diff 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_01_constant_explicitly_qreal.diff
--- 0.1+git20110318.941cde9-2/debian/patches/kubuntu_01_constant_explicitly_qreal.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_01_constant_explicitly_qreal.diff	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,11 @@
+--- plasma-widget-networkmanagement-0.9~svn1137272/applet/interfacedetailswidget.cpp	2010/06/23 22:46:15	1141975
++++ trunk/kdereview/networkmanagement-0.9~svn1137272/applet/interfacedetailswidget.cpp	2010/06/23 22:51:12	1141976
+@@ -473,7 +473,7 @@
+     QSize infoMinSh = m_info->nativeWidget()->minimumSizeHint();
+ 
+     qreal temp = (infoSh.width() - infoMinSh.width()) / 2 + infoMinSh.width();
+-    sh.setWidth(qMax(temp, 330.0));
++    sh.setWidth(qMax(temp, qreal(330.0)));
+ 
+     return sh;
+ }
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/kubuntu_02_install_qdbusfornm.diff 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_02_install_qdbusfornm.diff
--- 0.1+git20110318.941cde9-2/debian/patches/kubuntu_02_install_qdbusfornm.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_02_install_qdbusfornm.diff	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,8 @@
+--- a/tests/CMakeLists.txt	2009-07-27 16:26:30.000000000 +0100
++++ b/tests/CMakeLists.txt	2009-07-28 13:02:08.000000000 +0100
+@@ -26,4 +26,4 @@
+ kde4_add_executable(qdbusfornm qdbusfornm.cpp )
+ target_link_libraries(qdbusfornm knminternals ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} 
+                       ${KDE4_KDECORE_LIBS})
+-
++install(TARGETS qdbusfornm ${INSTALL_TARGETS_DEFAULT_ARGS})
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/kubuntu_03_no_dbusmenu.diff 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_03_no_dbusmenu.diff
--- 0.1+git20110318.941cde9-2/debian/patches/kubuntu_03_no_dbusmenu.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_03_no_dbusmenu.diff	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,23 @@
+diff --git a/monolithic/main.cpp b/monolithic/main.cpp
+index eef81f8..d744871 100644
+--- a/monolithic/main.cpp
++++ b/monolithic/main.cpp
+@@ -17,6 +17,7 @@ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
++#include <stdlib.h>
+ 
+ #include <KAboutData>
+ #include <KCmdLineArgs>
+@@ -30,6 +31,10 @@ static const char version[] = "v0.9";
+ 
+ int main( int argc, char** argv )
+ {
++    // Super ugly hack: DBusMenu can't represent the custom menu items
++    // KNetworkManager creates, so let's disable it for now
++    setenv("KSNI_NO_DBUSMENU", "1", 1 /* overwrite */);
++
+     KAboutData about("knetworkmanager", 0, ki18n("KNetworkManager"), version, ki18n(description), KAboutData::License_GPL, ki18n("(C) 2009 Will Stephenson"), KLocalizedString(), "http://techbase.kde.org/Projects/Network_Management");
+     about.addAuthor( ki18n("Will Stephenson"), ki18n("Original Author, Maintainer"), "wstephenson@kde.org" );
+     about.addAuthor( ki18n("Paul Marchouk"), ki18n("User Interface Polish"), "pmarchouk@gmail.com" );
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/kubuntu_04_no_tests.diff 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_04_no_tests.diff
--- 0.1+git20110318.941cde9-2/debian/patches/kubuntu_04_no_tests.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_04_no_tests.diff	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,13 @@
+Index: plasma-widget-networkmanagement-0.9~svn1167391/CMakeLists.txt
+===================================================================
+--- plasma-widget-networkmanagement-0.9~svn1167391.orig/CMakeLists.txt	2010-08-24 15:43:45.024309002 +0100
++++ plasma-widget-networkmanagement-0.9~svn1167391/CMakeLists.txt	2010-08-24 15:43:52.276309002 +0100
+@@ -48,7 +48,7 @@
+ add_subdirectory(applet)
+ add_subdirectory(backends)
+ add_subdirectory(libs)
+-add_subdirectory(tests)
++#add_subdirectory(tests)
+ add_subdirectory(settings)
+ add_subdirectory(vpnplugins)
+ add_subdirectory(solidcontrolfuture)
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/kubuntu_05_save_autoconnect_settings.diff 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_05_save_autoconnect_settings.diff
--- 0.1+git20110318.941cde9-2/debian/patches/kubuntu_05_save_autoconnect_settings.diff	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/kubuntu_05_save_autoconnect_settings.diff	2011-04-15 11:36:23.000000000 +0100
@@ -0,0 +1,38 @@
+From: Lamarque V. Souza <lamarque@gmail.com>
+Date: Sun, 10 Apr 2011 20:13:16 +0000
+Subject: Fix autoconnect being disabled without user request and autoconnect
+X-Git-Url: http://quickgit.kde.org/?p=networkmanagement.git&amp;a=commitdiff&amp;h=68a70a292460ff50eb371aa132ca74386d55d6f7
+---
+Fix autoconnect being disabled without user request and autoconnect
+setting not changing in configuration widget.
+---
+
+
+--- a/backends/NetworkManager/nmdbussettingsservice.cpp
++++ b/backends/NetworkManager/nmdbussettingsservice.cpp
+@@ -253,13 +253,6 @@ void NMDBusSettingsService::interfaceCon
+ #else
+     Solid::Control::NetworkManager::deactivateConnection(ic->property("NMDBusActiveConnectionObject").toString());
+ #endif
+-
+-    if (ic->hasDefaultRoute())
+-    {
+-       Knm::Connection * connection = d->uuidToConnections[ic->connectionUuid()]->connection();
+-       connection->setAutoConnect(false);
+-       handleUpdate(connection);
+-    }
+ }
+ 
+ void NMDBusSettingsService::handleUpdate(Knm::Activatable *)
+
+--- a/libs/ui/connectionwidget.cpp
++++ b/libs/ui/connectionwidget.cpp
+@@ -94,6 +94,7 @@ void ConnectionWidget::writeConfig()
+     Q_D(ConnectionWidget);
+     connection()->setName(d->ui.id->text());
+     connection()->setAutoConnect(d->ui.autoconnect->isChecked());
++    connection()->setOriginalAutoConnect(d->ui.autoconnect->isChecked());
+     // connection()->setIconName(..) is already called from buttonChooseIconClicked()
+ }
+ 
+
diff -pruN 0.1+git20110318.941cde9-2/debian/patches/series 0.9~svngit20110408-0ubuntu2/debian/patches/series
--- 0.1+git20110318.941cde9-2/debian/patches/series	2011-03-30 00:37:57.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/patches/series	2011-04-15 11:36:39.000000000 +0100
@@ -1 +1,4 @@
-# patches for plasma-widget-networkmanagement
+#kubuntu_01_constant_explicitly_qreal.diff
+kubuntu_02_install_qdbusfornm.diff
+kubuntu_03_no_dbusmenu.diff
+kubuntu_05_save_autoconnect_settings.diff
diff -pruN 0.1+git20110318.941cde9-2/debian/plasma-widget-networkmanagement.install 0.9~svngit20110408-0ubuntu2/debian/plasma-widget-networkmanagement.install
--- 0.1+git20110318.941cde9-2/debian/plasma-widget-networkmanagement.install	2011-03-30 00:47:22.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/plasma-widget-networkmanagement.install	2011-04-08 18:49:05.000000000 +0100
@@ -1,7 +1,5 @@
 usr/lib/kde4/plasma_applet_networkmanagement.so
-usr/lib/kde4/plasma_engine_networkmanagement.so
-usr/lib/kde4/kded_networkmanagement.so
 usr/share/kde4/services/plasma-applet-networkmanagement.desktop
-usr/share/kde4/services/plasma-engine-networkmanagement.desktop
+#usr/share/kde4/apps/desktoptheme/default/widgets/wireless.svgz
 usr/share/kde4/services/kded/networkmanagement.desktop
-usr/share/kde4/apps/desktoptheme/default/icons/network.svg
+usr/share/icons/oxygen/32x32/devices/network-defaultroute.png
diff -pruN 0.1+git20110318.941cde9-2/debian/README.source 0.9~svngit20110408-0ubuntu2/debian/README.source
--- 0.1+git20110318.941cde9-2/debian/README.source	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/README.source	2011-04-08 18:49:05.000000000 +0100
@@ -0,0 +1,30 @@
+This package uses git+topgit as the packaging VCS. Please install Debian topgit
+package 0.5 or higher and read /usr/share/doc/topgit/HOWTO-tg2quilt.gz for more
+information how to checkout, add, remove, modify patches (topic branches) and
+do other common tasks. Branch structure of the repository is as follows:
+
+* upstream   - upstream source code.
+* master     - the Debianization branch (upstream source and debian directory).
+               This branch also contains exported debian/patches ready for
+               building.
+
+Topic branches should be named as follows:
+
+* general/*  - namespace for general upstream patches. Patches can be named
+               freely, but it is recommended to suffix names with '_fix' for
+               patches fixing bugs and with '_feature' for patches introducing
+               new features. These patches should be based on the upstream
+               branch.
+* debian/*   - Debian specific patches should be put in this namespace. These
+               patches should be based on the upstream branch or even master
+               branch if necessary.
+
+If a patch depends on any other patch(es), create/adjust its topic branch
+dependencies as needed.
+
+However, topgit is not a build dependency. Patches are exported to
+debian/patches as quilt series before building. Please read
+/usr/share/doc/quilt/README.source (quilt version 0.46-4.1 or later) for more
+information on how to manage patches directly with quilt. Please note that this
+method is not acceptable for long term package management, only for quick
+patching.
diff -pruN 0.1+git20110318.941cde9-2/debian/rules 0.9~svngit20110408-0ubuntu2/debian/rules
--- 0.1+git20110318.941cde9-2/debian/rules	2011-03-30 00:51:12.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/debian/rules	2011-04-08 18:49:05.000000000 +0100
@@ -2,31 +2,42 @@
 
 # DEB_KDE_LINK_WITH_AS_NEEDED ?= yes
 
+ifneq (,$(shell which tg))
+QUILT_PATCH_DIR := debian/patches
+include /usr/share/topgit/tg2quilt.mk
+endif
+
+include /usr/share/quilt/quilt.make
+
+export KUBUNTU_DESKTOP_POT = playground-base
+
 DEB_BINARY_VERSION := $(shell dpkg-parsechangelog | grep '^Version: ' | sed 's/^Version: //')
 DEB_KNETWORKMANAGER_VERSION := $(shell echo '$(DEB_BINARY_VERSION)' | sed 's/^[[:digit:].]\+/1:0.9/')
 
 override_dh_auto_configure:
-	dh_auto_configure -Skde -- -DCMAKE_USE_RELATIVE_PATHS=ON -DDBUS_SYSTEM_POLICY_DIR=/etc/dbus-1/system.d -DINSTALL_KNM_AUTOSTART=ON
+	dh_auto_configure -Skde -- -DCMAKE_USE_RELATIVE_PATHS=ON -DDBUS_SYSTEM_POLICY_DIR=/etc/dbus-1/system.d -DINSTALL_KNM_AUTOSTART=TRUE
 
-override_dh_auto_install:
-	dh_auto_install
-	# Ship network.svgz uncompressed as network.svg in order to avoid file
-	# conflict with kdebase-runtime-data (>= 4:4.5) but still keep
-	# compatibility with KDE SC 4.4
-	( cd debian/tmp/usr/share/kde4/apps/desktoptheme/default/icons && \
-	  gunzip -c network.svgz > network.svg && rm -f network.svgz )
+override_dh_bugfiles:
+	dh_bugfiles -A
 
 override_dh_makeshlibs:
 	dh_makeshlibs -pknm-runtime -V'knm-runtime (= $(DEB_BINARY_VERSION))'
 	dh_makeshlibs --remaining-packages
 
 override_dh_gencontrol:
-	dh_gencontrol -pnetwork-manager-kde -- -v'$(DEB_KNETWORKMANAGER_VERSION)' \
-        -V'knetworkmanager:Version=$(DEB_KNETWORKMANAGER_VERSION)'
-	dh_gencontrol --remaining-packages -- \
-        -V'knetworkmanager:Version=$(DEB_KNETWORKMANAGER_VERSION)'
+	dh_gencontrol -pnetwork-manager-kde -- -v'$(DEB_KNETWORKMANAGER_VERSION)'
+	dh_gencontrol --remaining-packages
 
 %:
-	dh --parallel --with kde --dbg-package=plasma-widget-networkmanagement-dbg $@
+	dh --with kde --with quilt --dbg-package=plasma-widget-networkmanagement-dbg $@
+
+fetch_translations:
+	mkdir -p po
+	cd po; svn export svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4/subdirs
+	cd po; for asdf in `cat subdirs`; do mkdir -p $${asdf}; done
+	cd po; for asdf in `cat subdirs`; do echo $${asdf}; cd $${asdf}; svn export svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4/$${asdf}/messages/extragear-base/plasma_applet_networkmanagement.po; cd ..; done
+	cd po; for asdf in `cat subdirs`; do echo $${asdf}; cd $${asdf}; svn export svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4/$${asdf}/messages/extragear-base/knetworkmanager.pot; cd ..; done
+	cd po; for asdf in `cat subdirs`; do echo $${asdf}; cd $${asdf}; svn export svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4/$${asdf}/messages/extragear-base/libknetworkmanager.pot; cd ..; done
+	cd po; rm subdirs; rmdir --ignore-fail-on-non-empty *
 
 .PHONY: override_dh_auto_test
diff -pruN 0.1+git20110318.941cde9-2/kded/service.cpp 0.9~svngit20110408-0ubuntu2/kded/service.cpp
--- 0.1+git20110318.941cde9-2/kded/service.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/kded/service.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -109,12 +109,6 @@ NetworkManagementService::NetworkManagem
 
     d->nmDBusConnectionProvider = new NMDBusSettingsConnectionProvider(d->connectionList, NMDBusSettingsService::SERVICE_SYSTEM_SETTINGS, d->connectionList);
 
-    // there is a problem setting this as a child of connectionList or of activatableList since it has
-    // references to both and NetworkInterfaceActivatableProvider touches the activatableList
-    // in its dtor (needed so it cleans up when removed by the monitor)
-    // ideally this will always be deleted before the other list
-    d->networkInterfaceMonitor = new NetworkInterfaceMonitor(d->connectionList, d->activatableList, d->activatableList);
-
     // generic observers
     d->activatableList->registerObserver(d->configurationLauncher);
     d->activatableList->registerObserver(d->connectionUsageMonitor);
@@ -151,6 +145,12 @@ NetworkManagementService::NetworkManagem
 
     // load our local connections
     d->listPersistence->init();
+
+    // there is a problem setting this as a child of connectionList or of activatableList since it has
+    // references to both and NetworkInterfaceActivatableProvider touches the activatableList
+    // in its dtor (needed so it cleans up when removed by the monitor)
+    // ideally this will always be deleted before the other list
+    d->networkInterfaceMonitor = new NetworkInterfaceMonitor(d->connectionList, d->activatableList, d->activatableList);
 }
 
 
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/connection.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/connection.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/connection.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/connection.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -198,6 +198,11 @@ bool Connection::autoConnect() const
     return m_autoConnect;
 }
 
+bool Connection::originalAutoConnect() const
+{
+    return m_originalAutoConnect;
+}
+
 QDateTime Connection::timestamp() const
 {
     return m_timestamp;
@@ -245,6 +250,11 @@ void Connection::setAutoConnect(bool aut
     m_autoConnect = autoConnect;
 }
 
+void Connection::setOriginalAutoConnect(bool autoConnect)
+{
+    m_originalAutoConnect = autoConnect;
+}
+
 void Connection::updateTimestamp()
 {
     m_timestamp = QDateTime::currentDateTime();
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/connection.h 0.9~svngit20110408-0ubuntu2/libs/internals/connection.h
--- 0.1+git20110318.941cde9-2/libs/internals/connection.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/connection.h	2011-04-08 18:47:06.000000000 +0100
@@ -57,6 +57,7 @@ public:
     QUuid uuid() const;
     Connection::Type type() const;
     bool autoConnect() const;
+    bool originalAutoConnect() const;
     QDateTime timestamp() const;
 
     QString origin() const;
@@ -78,6 +79,7 @@ public:
     void setIconName(const QString &);
     void setUuid(const QUuid &);
     void setAutoConnect(bool);
+    void setOriginalAutoConnect(bool);
     void setTimestamp(const QDateTime&);
 
     /**
@@ -125,11 +127,13 @@ private:
      */
     void addSetting(Setting*);
 
+    
     QString m_name;
     QString m_iconName;
     QUuid m_uuid;
     Connection::Type m_type;
     bool m_autoConnect;
+    bool m_originalAutoConnect;
     QDateTime m_timestamp;
     QString m_origin;
     QList<Setting*> m_settings;
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/connectionpersistence.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/connectionpersistence.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/connectionpersistence.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/connectionpersistence.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -146,7 +146,7 @@ void ConnectionPersistence::save()
     cg.writeEntry("id", m_connection->name());
     cg.writeEntry("uuid", m_connection->uuid().toString());
     cg.writeEntry("type", Connection::typeAsString(m_connection->type()));
-    cg.writeEntry("autoconnect", m_connection->autoConnect());
+    cg.writeEntry("autoconnect", m_connection->originalAutoConnect());
     if (m_connection->timestamp().isValid())
         cg.writeEntry("timestamp", m_connection->timestamp());
     cg.writeEntry("icon", m_connection->iconName());
@@ -195,6 +195,7 @@ void ConnectionPersistence::load()
     if (cg.exists()) { // don't bother to try if the KConfigGroup doesn't exist, save opening the wallet too
         m_connection->setName(cg.readEntry("id"));
         m_connection->setAutoConnect(cg.readEntry<bool>("autoconnect", false));
+        m_connection->setOriginalAutoConnect(cg.readEntry<bool>("autoconnect", false));
         m_connection->setTimestamp(cg.readEntry<QDateTime>("timestamp", QDateTime()));
         m_connection->setIconName(cg.readEntry("icon"));
 
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/kconfig_compiler.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/kconfig_compiler.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/kconfig_compiler.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/kconfig_compiler.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -388,11 +388,11 @@ static QString getFunction(const QString
 }
 
 
-static void addQuotes( QString &s )
+/*static void addQuotes( QString &s )
 {
   if ( !s.startsWith( '"' ) ) s.prepend( '"' );
   if ( !s.endsWith( '"' ) ) s.append( '"' );
-}
+}*/
 
 static QString quoteString( const QString &s )
 {
@@ -899,7 +899,7 @@ QString itemType( const QString &type )
   return t;
 }
 
-static QString itemDeclaration(const CfgEntry *e)
+/*static QString itemDeclaration(const CfgEntry *e)
 {
   Q_UNUSED( e )
   if (itemAccessors)
@@ -911,7 +911,7 @@ static QString itemDeclaration(const Cfg
          "  *item" + fCap +
          ( (!e->param().isEmpty())?(QString("[%1]").arg(e->paramMax()+1)) : QString()) +
          ";\n";
-}
+}*/
 
 // returns the name of an item variable
 // use itemPath to know the full path
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/settings/802-11-wirelesspersistence.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/settings/802-11-wirelesspersistence.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/settings/802-11-wirelesspersistence.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/settings/802-11-wirelesspersistence.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -23,7 +23,7 @@ void WirelessPersistence::load()
     QString contents = m_config->readEntry("mode", "infrastructure");
     if (contents == "infrastructure")
       setting->setMode(WirelessSetting::EnumMode::infrastructure);
-    else     if (contents == "adhoc")
+    else if (contents == "adhoc")
       setting->setMode(WirelessSetting::EnumMode::adhoc);
 
   }
@@ -31,7 +31,7 @@ void WirelessPersistence::load()
     QString contents = m_config->readEntry("band", "bg");
     if (contents == "a")
       setting->setBand(WirelessSetting::EnumBand::a);
-    else     if (contents == "bg")
+    else if (contents == "bg")
       setting->setBand(WirelessSetting::EnumBand::bg);
 
   }
@@ -72,7 +72,9 @@ void WirelessPersistence::save()
   m_config->writeEntry("txpower", setting->txpower());
   m_config->writeEntry("macaddress", setting->macaddress());
   m_config->writeEntry("mtu", setting->mtu());
-  m_config->writeEntry("seenbssids", setting->seenbssids());
+  if (setting->mode() != WirelessSetting::EnumMode::adhoc) {
+      m_config->writeEntry("seenbssids", setting->seenbssids());
+  }
 kDebug() << setting->security();
   m_config->writeEntry("security", setting->security());
 }
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/settings/gsmpersistence.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/settings/gsmpersistence.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/settings/gsmpersistence.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/settings/gsmpersistence.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -39,20 +39,14 @@ void GsmPersistence::save()
   GsmSetting * setting = static_cast<GsmSetting *>(m_setting);
   m_config->writeEntry("number", setting->number());
   m_config->writeEntry("username", setting->username());
-  // SECRET
-  if (m_storageMode == ConnectionPersistence::PlainText) {
-    m_config->writeEntry("password", setting->password());
-  }
   m_config->writeEntry("apn", setting->apn());
   m_config->writeEntry("networkid", setting->networkid());
   m_config->writeEntry("networktype", setting->networktype());
   m_config->writeEntry("band", setting->band());
   // SECRET
   if (m_storageMode == ConnectionPersistence::PlainText) {
+    m_config->writeEntry("password", setting->password());
     m_config->writeEntry("pin", setting->pin());
-  }
-  // SECRET
-  if (m_storageMode == ConnectionPersistence::PlainText) {
     m_config->writeEntry("puk", setting->puk());
   }
 }
@@ -70,7 +64,7 @@ QMap<QString,QString> GsmPersistence::se
 void GsmPersistence::restoreSecrets(QMap<QString,QString> secrets) const
 {
   if (m_storageMode == ConnectionPersistence::Secure) {
-  GsmSetting * setting = static_cast<GsmSetting *>(m_setting);
+    GsmSetting * setting = static_cast<GsmSetting *>(m_setting);
     setting->setPassword(secrets.value("password"));
     setting->setPin(secrets.value("pin"));
     setting->setPuk(secrets.value("puk"));
diff -pruN 0.1+git20110318.941cde9-2/libs/internals/wirelessinterfaceconnectionhelpers.cpp 0.9~svngit20110408-0ubuntu2/libs/internals/wirelessinterfaceconnectionhelpers.cpp
--- 0.1+git20110318.941cde9-2/libs/internals/wirelessinterfaceconnectionhelpers.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/internals/wirelessinterfaceconnectionhelpers.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -114,8 +114,11 @@ void WirelessInterfaceConnectionBuilder:
                     mode = ap->mode();
                 }
             }
+            else if (wirelessSetting->mode() == Knm::WirelessSetting::EnumMode::adhoc) {
+                mode = Solid::Control::WirelessNetworkInterface::Adhoc;
+            }
         }
-
+        
         ic->m_interfaceCapabilities = m_interface->wirelessCapabilities();
         ic->m_ssid = wirelessSetting->ssid();
         ic->m_strength = strength;
diff -pruN 0.1+git20110318.941cde9-2/libs/service/configurationlauncher.cpp 0.9~svngit20110408-0ubuntu2/libs/service/configurationlauncher.cpp
--- 0.1+git20110318.941cde9-2/libs/service/configurationlauncher.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/service/configurationlauncher.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -27,6 +27,7 @@ License along with this library.  If not
 
 #include <KDebug>
 #include <KToolInvocation>
+#include <KStandardDirs>
 
 #include <solid/control/networkmanager.h>
 #include <solid/control/networkinterface.h>
@@ -149,7 +150,7 @@ void ConfigurationLauncher::configureWir
             .arg(apUni);
 
         args << QLatin1String("create") << QLatin1String("--type") << QLatin1String("802-11-wireless") << QLatin1String("--specific-args") << moduleArgs << QLatin1String("wifi_pass");
-        int ret = KToolInvocation::kdeinitExec("networkmanagement_configshell", args);
+        int ret = KToolInvocation::kdeinitExec(KGlobal::dirs()->findResource("exe", "networkmanagement_configshell"), args);
         kDebug() << ret << args;
     }
 }
@@ -217,7 +218,7 @@ void ConfigurationLauncher::unconfigured
             if (!editorArgs.isEmpty()) {
                 args << QLatin1String("--specific-args") << editorArgs;
             }
-            int ret = KToolInvocation::kdeinitExec("networkmanagement_configshell", args);
+            int ret = KToolInvocation::kdeinitExec(KGlobal::dirs()->findResource("exe", "networkmanagement_configshell"), args);
             kDebug() << ret << args;
         }
     }
diff -pruN 0.1+git20110318.941cde9-2/libs/service/networkinterfacemonitor.cpp 0.9~svngit20110408-0ubuntu2/libs/service/networkinterfacemonitor.cpp
--- 0.1+git20110318.941cde9-2/libs/service/networkinterfacemonitor.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/service/networkinterfacemonitor.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -18,11 +18,15 @@ You should have received a copy of the G
 License along with this library.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <KToolInvocation>
+#include <KStandardDirs>
+
 #include "networkinterfacemonitor.h"
 
 #include <solid/control/networkinterface.h>
 #include <solid/control/networkmanager.h>
 
+#include <connection.h>
 #include "activatablelist.h"
 #include "connectionlist.h"
 #include "networkinterfaceactivatableprovider.h"
@@ -91,6 +95,28 @@ void NetworkInterfaceMonitor::networkInt
         d->connectionList->registerConnectionHandler(provider);
         d->providers.insert(uni, provider);
         provider->init();
+
+#ifdef COMPILE_MODEM_MANAGER_SUPPORT
+        if (iface->type() == Solid::Control::NetworkInterface::Gsm ||
+            iface->type() == Solid::Control::NetworkInterface::Cdma) {
+
+            bool hasCellular = false;
+            foreach (const QString uuid, d->connectionList->connections()) {
+                const Knm::Connection *c = d->connectionList->findConnection(uuid);
+                if ((c->type() == Knm::Connection::Gsm && iface->type() == Solid::Control::NetworkInterface::Gsm) ||
+                    (c->type() == Knm::Connection::Cdma && iface->type() == Solid::Control::NetworkInterface::Cdma)) {
+                    hasCellular = true;
+                    break;
+                }
+            }
+
+            if (!hasCellular) {
+                QStringList args;
+                args << QLatin1String("create") << QLatin1String("--type") << QLatin1String("cellular");
+                KToolInvocation::kdeinitExec(KGlobal::dirs()->findResource("exe", "networkmanagement_configshell"), args);
+            }
+        }
+#endif
     }
 }
 
diff -pruN 0.1+git20110318.941cde9-2/libs/service/wirelessnetworkinterfaceactivatableprovider.cpp 0.9~svngit20110408-0ubuntu2/libs/service/wirelessnetworkinterfaceactivatableprovider.cpp
--- 0.1+git20110318.941cde9-2/libs/service/wirelessnetworkinterfaceactivatableprovider.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/service/wirelessnetworkinterfaceactivatableprovider.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -65,8 +65,13 @@ WirelessNetworkInterfaceActivatableProvi
 {
     Q_D(WirelessNetworkInterfaceActivatableProvider);
     d->environment = new Solid::Control::WirelessNetworkInterfaceEnvironment(interface);
+
     QObject::connect(d->environment, SIGNAL(networkAppeared(const QString &)), this, SLOT(networkAppeared(const QString&)));
     QObject::connect(d->environment, SIGNAL(networkDisappeared(const QString &)), this, SLOT(networkDisappeared(const QString&)));
+    connect(Solid::Control::NetworkManager::notifier(), SIGNAL(wirelessHardwareEnabledChanged(bool)),
+                this, SLOT(wirelessEnabledChanged(bool)));
+    connect(Solid::Control::NetworkManager::notifier(), SIGNAL(wirelessEnabledChanged(bool)),
+                this, SLOT(wirelessEnabledChanged(bool)));
     // try to create a connectable for each wireless network we can see
     // this is slightly inefficient because the NetworkInterfaceActivatableProvider ctor
     // already ran and created WirelessInterfaceConnections as needed, but a hash lookup in
@@ -129,15 +134,16 @@ void WirelessNetworkInterfaceActivatable
                 foreach (Knm::InterfaceConnection * ic, d->activatables) {
                     if (ic->activatableType() == Knm::Activatable::WirelessInterfaceConnection && ic->connectionUuid() == addedConnection->uuid()) {
                         ourWicFound = true;
+                        ourHiddenWicFound = true;
                     }
-                    if (ic->activatableType() == Knm::Activatable::HiddenWirelessInterfaceConnection && ic->connectionUuid() == addedConnection->uuid()) {
+                    else if (ic->activatableType() == Knm::Activatable::HiddenWirelessInterfaceConnection && ic->connectionUuid() == addedConnection->uuid()) {
                         ourHiddenWicFound = true;
                     }
                 }
 
                 // create WirelessInterfaceConnections only where the network is present
-                if (!ourWicFound && d->environment->networks().contains(wirelessSetting->ssid())) {
-                    kDebug() << "Adding WIC:" << wirelessSetting->ssid() <<  addedConnection->uuid() << addedConnection->name() << d->interface->uni();
+                if (!ourWicFound && (d->environment->networks().contains(wirelessSetting->ssid()) || wirelessSetting->mode() == Knm::WirelessSetting::EnumMode::adhoc)) {
+                    kDebug() << "Adding WIC:" << wirelessSetting->ssid() <<  addedConnection->uuid() << addedConnection->name() << d->interface->uni() << wirelessSetting->channel();
 
                     Knm::WirelessInterfaceConnection * ifaceConnection =
                         Knm::WirelessInterfaceConnectionHelpers::buildWirelessInterfaceConnection(
@@ -148,6 +154,10 @@ void WirelessNetworkInterfaceActivatable
                     if (network) {
                         connect(network, SIGNAL(signalStrengthChanged(int)), ifaceConnection, SLOT(setStrength(int)));
                     }
+                    else if (wirelessSetting->mode() == Knm::WirelessSetting::EnumMode::adhoc) {
+                        ifaceConnection->setStrength(-1);
+                        ourHiddenWicFound = true;
+                    }
 
                     // remove any WirelessNetwork created previously
                     Knm::WirelessNetwork * knmNetwork = d->wirelessNetworks.take(wirelessSetting->ssid());
@@ -160,7 +170,7 @@ void WirelessNetworkInterfaceActivatable
                     d->activatables.insert(addedConnection->uuid().toString(), ifaceConnection);
                     d->activatableList->addActivatable(ifaceConnection);
                 }
-                if (!ourHiddenWicFound) {
+                else if (!ourHiddenWicFound) {
                     // create a HiddenWirelessInterfaceConnection for this connection as well
                     // this allows adhoc and hidden wireless networks' connections to be activated
                     // see HiddenWIC's docu for why this is needed
@@ -253,7 +263,7 @@ void WirelessNetworkInterfaceActivatable
         if (ic->activatableType() == Knm::Activatable::WirelessInterfaceConnection ) {
             Knm::WirelessInterfaceConnection * wic = static_cast<Knm::WirelessInterfaceConnection*>(ic);
 
-            if (wic->ssid() == ssid) {
+            if (wic->ssid() == ssid && wic->operationMode() != Solid::Control::WirelessNetworkInterface::Adhoc) {
                 d->activatableList->removeActivatable(ic);
                 i = d->activatables.erase(i);
                 delete wic;
@@ -272,6 +282,34 @@ void WirelessNetworkInterfaceActivatable
     }
 }
 
+void WirelessNetworkInterfaceActivatableProvider::wirelessEnabledChanged(bool status)
+{
+    Q_D(WirelessNetworkInterfaceActivatableProvider);
+    kDebug() << "triggered with status " << status;
+    if (!status)
+    {
+        foreach (const QString &uuid, d->connectionList->connections()) {
+            Knm::Connection * connection = d->connectionList->findConnection(uuid);
+            Knm::WirelessSetting * wirelessSetting = dynamic_cast<Knm::WirelessSetting *>(connection->setting(Knm::Setting::Wireless));
+            if (wirelessSetting && wirelessSetting->mode() == Knm::WirelessSetting::EnumMode::adhoc)
+            {
+                networkDisappeared(wirelessSetting->ssid());
+            }
+        }
+    }
+    else
+    {
+        foreach (const QString &uuid, d->connectionList->connections()) {
+            Knm::Connection * connection = d->connectionList->findConnection(uuid);
+            Knm::WirelessSetting * wirelessSetting = dynamic_cast<Knm::WirelessSetting *>(connection->setting(Knm::Setting::Wireless));
+            if (wirelessSetting && wirelessSetting->mode() == Knm::WirelessSetting::EnumMode::adhoc)
+            {
+                networkAppeared(wirelessSetting->ssid());
+            }
+        }
+    }
+}
+
 bool WirelessNetworkInterfaceActivatableProvider::needsActivatableForUnconfigured() const
 {
     bool needed =  Solid::Control::NetworkManager::isWirelessEnabled()
diff -pruN 0.1+git20110318.941cde9-2/libs/service/wirelessnetworkinterfaceactivatableprovider.h 0.9~svngit20110408-0ubuntu2/libs/service/wirelessnetworkinterfaceactivatableprovider.h
--- 0.1+git20110318.941cde9-2/libs/service/wirelessnetworkinterfaceactivatableprovider.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/service/wirelessnetworkinterfaceactivatableprovider.h	2011-04-08 18:47:06.000000000 +0100
@@ -71,6 +71,7 @@ public slots:
      * Remove any Activatables related to this network
      */
     void networkDisappeared(const QString & ssid);
+    void wirelessEnabledChanged(bool);
 protected:
     virtual bool needsActivatableForUnconfigured() const;
 private:
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/802-11-wireless.ui 0.9~svngit20110408-0ubuntu2/libs/ui/802-11-wireless.ui
--- 0.1+git20110318.941cde9-2/libs/ui/802-11-wireless.ui	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/802-11-wireless.ui	2011-04-08 18:47:06.000000000 +0100
@@ -87,6 +87,68 @@
    <item row="2" column="0">
     <widget class="QLabel" name="label_3">
      <property name="text">
+      <string>B&amp;and:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="buddy">
+      <cstring>band</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="KComboBox" name="band">
+     <property name="toolTip">
+      <string>Frequency band of the wireless network.</string>
+     </property>
+     <property name="whatsThis">
+      <string>b/g is the most common band around 2.4 GHz. Less common is a at 5 GHz.</string>
+     </property>
+     <item>
+      <property name="text">
+       <string>a</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>b/g</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="label_4">
+     <property name="text">
+      <string>&amp;Channel:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="buddy">
+      <cstring>channel</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="Wireless80211WidgetBand" name="channel">
+     <property name="toolTip">
+      <string>Channel</string>
+     </property>
+     <property name="whatsThis">
+      <string>Sets the channel of the network.</string>
+     </property>
+     <property name="minimum">
+      <number>0</number>
+     </property>
+     <property name="singleStep">
+      <number>1</number>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
+    <widget class="QLabel" name="label_5">
+     <property name="text">
       <string>&amp;BSSID:</string>
      </property>
      <property name="alignment">
@@ -97,7 +159,7 @@
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
+   <item row="4" column="1">
     <widget class="KLineEdit" name="bssid">
      <property name="toolTip">
       <string>Only connect to the station with this hardware address</string>
@@ -110,8 +172,8 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="0">
-    <widget class="QLabel" name="label_4">
+   <item row="5" column="0">
+    <widget class="QLabel" name="label_6">
      <property name="text">
       <string>&amp;Restrict To Interface:</string>
      </property>
@@ -123,7 +185,7 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="1">
+   <item row="5" column="1">
     <widget class="KComboBox" name="cmbMacAddress">
      <item>
       <property name="text">
@@ -132,8 +194,8 @@
      </item>
     </widget>
    </item>
-   <item row="4" column="0">
-    <widget class="QLabel" name="label_5">
+   <item row="6" column="0">
+    <widget class="QLabel" name="label_7">
      <property name="text">
       <string>MT&amp;U:</string>
      </property>
@@ -145,7 +207,7 @@
      </property>
     </widget>
    </item>
-   <item row="4" column="1">
+   <item row="6" column="1">
     <widget class="KIntSpinBox" name="mtu">
      <property name="toolTip">
       <string>Maximum Transmission Unit</string>
@@ -187,6 +249,11 @@
    <extends>QComboBox</extends>
    <header>kcombobox.h</header>
   </customwidget>
+  <customwidget>
+   <class>Wireless80211WidgetBand</class>
+   <extends>QSpinBox</extends>
+   <header>802_11_wirelesswidget.h</header>
+  </customwidget>
  </customwidgets>
  <tabstops>
   <tabstop>ssid</tabstop>
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/802_11_wirelesswidget.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/802_11_wirelesswidget.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/802_11_wirelesswidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/802_11_wirelesswidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -66,6 +66,10 @@ Wireless80211Widget::Wireless80211Widget
             d->ui.cmbMacAddress->addItem(UiUtils::interfaceNameLabel(iface->uni()), wiface->hardwareAddress().toLatin1());
         }
     }
+    
+    modeChanged(d->ui.cmbMode->currentIndex());
+    connect(d->ui.cmbMode,SIGNAL(currentIndexChanged(int)),SLOT(modeChanged(int)));
+    connect(d->ui.band,SIGNAL(currentIndexChanged(int)),SLOT(bandChanged(int)));
 }
 
 Wireless80211Widget::~Wireless80211Widget()
@@ -80,6 +84,8 @@ void Wireless80211Widget::readConfig()
     {
         case Knm::WirelessSetting::EnumMode::adhoc:
             d->ui.cmbMode->setCurrentIndex(1);
+            d->ui.band->setCurrentIndex(d->setting->band());
+            d->ui.channel->setValue(d->ui.channel->posFromChannel(d->setting->channel()));
             break;
         case Knm::WirelessSetting::EnumMode::infrastructure:
         default:
@@ -101,6 +107,8 @@ void Wireless80211Widget::readConfig()
         }
     }
     d->ui.mtu->setValue(d->setting->mtu());
+    d->ui.band->setCurrentIndex(d->setting->band());
+    d->ui.channel->setValue(d->setting->channel());
 }
 
 void Wireless80211Widget::writeConfig()
@@ -116,6 +124,8 @@ void Wireless80211Widget::writeConfig()
             break;
         case 1:
             d->setting->setMode(Knm::WirelessSetting::EnumMode::adhoc);
+            d->setting->setBand(d->ui.band->currentIndex());
+            d->setting->setChannel(d->ui.channel->channelFromPos(d->ui.channel->value()));
             break;
     }
 
@@ -184,4 +194,73 @@ void Wireless80211Widget::validate()
     d->valid = (d->ui.ssid->text().length() > 0 && d->ui.ssid->text().length() < 33);
     emit valid(d->valid);
 }
+
+void Wireless80211Widget::modeChanged(int index)
+{
+    Q_D(Wireless80211Widget);
+    switch (index) {
+        case 1:
+            bandChanged(d->ui.band->currentIndex());
+            d->ui.band->setVisible(true);
+            d->ui.label_3->setVisible(true);
+            d->ui.channel->setVisible(true);
+            d->ui.label_4->setVisible(true);
+            break;
+        case 0:
+        default:
+            d->ui.band->setVisible(false);
+            d->ui.label_3->setVisible(false);
+            d->ui.channel->setVisible(false);
+            d->ui.label_4->setVisible(false);
+            break;
+    }
+}
+
+void Wireless80211Widget::bandChanged(int index)
+{
+    Q_D(Wireless80211Widget);
+    d->ui.channel->setBand(index);
+}
+
+
+Wireless80211WidgetBand::Wireless80211WidgetBand(QWidget * parent)
+    :QSpinBox(parent)
+{
+    selectedBand = 0;
+  
+    QList<int> channels_a;
+    QList<int> channels_b;
+
+    channels_a << 7 << 8 << 9 << 11 << 12 << 16 << 34 << 36 << 38 << 40 << 42 << 44 << 46 << 48 << 52 << 56 << 60 << 64 << 100 << 104 << 108 << 112 << 116 << 120 << 124 << 128 << 132 << 136 << 140 << 149 << 153 << 157 << 161 << 165 << 183 << 184 << 185 << 187 << 188 << 189 << 192 << 196;
+    channels_b << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9 << 10 << 11 << 12 << 13;
+    
+    channels << channels_a << channels_b;
+}
+
+QString Wireless80211WidgetBand::textFromValue(int value) const
+{
+    QString text = QString::number(channels.at(selectedBand).at(value),10);
+    return text;
+}
+
+uint Wireless80211WidgetBand::channelFromPos(int pos) const
+{
+    QString text = QString::number(channels.at(selectedBand).at(pos),10);
+    bool ok;
+    return text.toUInt(&ok,10);
+}
+
+uint Wireless80211WidgetBand::posFromChannel(int channel) const
+{
+    int pos = channels.at(selectedBand).indexOf(channel);
+    return (pos < 0) ? 0 : static_cast<uint>(pos);
+}
+
+void Wireless80211WidgetBand::setBand(int band)
+{
+    selectedBand = band;
+    setMaximum(channels.at(selectedBand).size()-1);
+    setValue(0);
+}
+
 // vim: sw=4 sts=4 et tw=100
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/802_11_wirelesswidget.h 0.9~svngit20110408-0ubuntu2/libs/ui/802_11_wirelesswidget.h
--- 0.1+git20110318.941cde9-2/libs/ui/802_11_wirelesswidget.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/802_11_wirelesswidget.h	2011-04-08 18:47:06.000000000 +0100
@@ -21,6 +21,9 @@ along with this program.  If not, see <h
 #ifndef WIRELESS802_11_WIDGET_H
 #define WIRELESS802_11_WIDGET_H
 
+#include <QSpinBox>
+#include <QValidator>
+
 #include "settingwidget.h"
 
 #include "knm_export.h"
@@ -43,9 +46,25 @@ public:
 protected Q_SLOTS:
     void scanClicked();
     void validate();
+    void modeChanged(int);
+    void bandChanged(int);
 
 Q_SIGNALS:
     void ssidSelected(const QString & ssid);
 };
 
+class Wireless80211WidgetBand : public QSpinBox
+{
+Q_OBJECT
+public:
+    Wireless80211WidgetBand(QWidget * parent = 0);
+    QString textFromValue(int) const;
+    uint channelFromPos(int) const;
+    uint posFromChannel(int) const;
+    void setBand(int);
+private:
+    QList< QList<int> > channels;
+    int selectedBand;
+};
+
 #endif // 802_11_WIRELESSWIDGET_H
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/connectionsecretsjob.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/connectionsecretsjob.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/connectionsecretsjob.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/connectionsecretsjob.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -41,6 +41,7 @@ along with this program.  If not, see <h
 #include <KLocale>
 #include <KServiceTypeTrader>
 #include <KStandardDirs>
+#include <KWindowSystem>
 
 #include "802_11_wirelesswidget.h"
 #include "cdmawidget.h"
@@ -173,6 +174,7 @@ void ConnectionSecretsJob::doAskUser()
         connect(m_askUserDialog, SIGNAL(cancelClicked()), SLOT(dialogRejected()));
 
         m_askUserDialog->show();
+        KWindowSystem::forceActiveWindow(m_askUserDialog->winId());
     } else {
         kDebug() << "Setting widget for" << mSettingName << "not yet ported, rejecting secrets request.";
         dialogRejected();
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/connectionwidget.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/connectionwidget.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/connectionwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/connectionwidget.cpp	2011-04-15 15:26:54.000000000 +0100
@@ -94,6 +94,7 @@ void ConnectionWidget::writeConfig()
     Q_D(ConnectionWidget);
     connection()->setName(d->ui.id->text());
     connection()->setAutoConnect(d->ui.autoconnect->isChecked());
+    connection()->setOriginalAutoConnect(d->ui.autoconnect->isChecked());
     // connection()->setIconName(..) is already called from buttonChooseIconClicked()
 }
 
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/gsmwidget.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/gsmwidget.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/gsmwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/gsmwidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -102,7 +102,7 @@ void GsmWidget::validate()
 
 void GsmWidget::setNetworkIds(const QList<QVariant> networkIds)
 {
-    Q_D(GsmWidget);
+    //Q_D(GsmWidget);
 
     QString temp;
 
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/scanwidget.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/scanwidget.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/scanwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/scanwidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -23,6 +23,7 @@ along with this program.  If not, see <h
 
 #include <QTreeView>
 #include <QHeaderView>
+#include <QSortFilterProxyModel>
 
 #include <KDebug>
 
@@ -52,12 +53,17 @@ ScanWidget::ScanWidget(QWidget *parent)
     m_scanView->setSelectionModel(m_scanSelectionModel);
     m_stack->insertWidget(0, m_scanView);
 
+    QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
+    proxyModel->setSourceModel(m_scanModel);
+    proxyModel->setDynamicSortFilter(true);
+    proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
     m_detailsView = new QTreeView(this);
     m_detailsView->setSelectionBehavior(QAbstractItemView::SelectRows);
     m_detailsView->setAllColumnsShowFocus(true);
     m_detailsView->setRootIsDecorated(false);
-    m_detailsView->setModel(m_scanModel);
+    m_detailsView->setModel(proxyModel);
     m_detailsView->setSelectionModel(m_scanSelectionModel);
+    m_detailsView->setSortingEnabled(true);
     m_stack->insertWidget(1, m_detailsView);
 
     m_stack->setCurrentWidget(m_scanView);
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/security/eapmethodsimple.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/security/eapmethodsimple.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/security/eapmethodsimple.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/security/eapmethodsimple.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -69,6 +69,9 @@ void EapMethodSimple::writeConfig()
         case Chap:
             d->setting->setPhase2auth(Knm::Security8021xSetting::EnumPhase2auth::chap);
             break;
+        case GTC:
+            d->setting->setPhase2auth(Knm::Security8021xSetting::EnumPhase2auth::gtc);
+            break;
     }
     d->setting->setIdentity(leUserName->text());
     d->setting->setPassword(lePassword->text());
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/security/eapmethodsimple.h 0.9~svngit20110408-0ubuntu2/libs/ui/security/eapmethodsimple.h
--- 0.1+git20110318.941cde9-2/libs/ui/security/eapmethodsimple.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/security/eapmethodsimple.h	2011-04-08 18:47:06.000000000 +0100
@@ -29,7 +29,7 @@ class EapMethodSimple : public EapMethod
 Q_OBJECT
 Q_DECLARE_PRIVATE(EapMethod)
 public:
-    enum Type { Pap = 0, MsChap, MsChapV2, MD5, Chap };
+    enum Type { Pap = 0, MsChap, MsChapV2, MD5, Chap, GTC };
     EapMethodSimple(Type type, Knm::Connection * connection, QWidget * parent = 0);
     virtual ~EapMethodSimple();
     bool validate() const;
diff -pruN 0.1+git20110318.941cde9-2/libs/ui/security/peapwidget.cpp 0.9~svngit20110408-0ubuntu2/libs/ui/security/peapwidget.cpp
--- 0.1+git20110318.941cde9-2/libs/ui/security/peapwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/libs/ui/security/peapwidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -7,7 +7,7 @@ modify it under the terms of the GNU Gen
 published by the Free Software Foundation; either version 2 of
 the License or (at your option) version 3 or any later version
 accepted by the membership of KDE e.V. (or its successor approved
-by the membership of KDE e.V.), which shall act as a proxy 
+by the membership of KDE e.V.), which shall act as a proxy
 defined in Section 14 of version 3 of the license.
 
 This program is distributed in the hope that it will be useful,
@@ -39,6 +39,8 @@ PeapWidget::PeapWidget(Knm::Connection* 
             i18nc("MSCHAPv2 inner auth method", "MSCHAPv2"));
     d->innerAuth->registerEapMethod(Knm::Security8021xSetting::EnumPhase2auth::md5, new EapMethodSimple(EapMethodSimple::MD5, connection, d->innerAuth),
             i18nc("MD5 inner auth method", "MD5"));
+    d->innerAuth->registerEapMethod(Knm::Security8021xSetting::EnumPhase2auth::gtc, new EapMethodSimple(EapMethodSimple::GTC, connection, d->innerAuth),
+            i18nc("GTC inner auth method", "GTC"));
     gridLayout->addWidget(d->innerAuth, 4, 0, 2, 2);
 
     kurCaCert->setMode(KFile::LocalOnly);
diff -pruN 0.1+git20110318.941cde9-2/monolithic/connectioninfodialog.cpp 0.9~svngit20110408-0ubuntu2/monolithic/connectioninfodialog.cpp
--- 0.1+git20110318.941cde9-2/monolithic/connectioninfodialog.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/connectioninfodialog.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -93,6 +93,7 @@ void ConnectionInfoDialog::buildGUI()
             m_ui.connectionIcon->setPixmap(KIconLoader::global()->loadIcon("network-wireless", KIconLoader::Panel));
             break;
         }
+    default: break;
     }
 
     connect(m_iface, SIGNAL(connectionStateChanged(int,int,int)), this, SLOT(updateConnectionState(int,int,int)));
diff -pruN 0.1+git20110318.941cde9-2/monolithic/interfaceconnectionitem.cpp 0.9~svngit20110408-0ubuntu2/monolithic/interfaceconnectionitem.cpp
--- 0.1+git20110318.941cde9-2/monolithic/interfaceconnectionitem.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/interfaceconnectionitem.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -133,8 +133,7 @@ void InterfaceConnectionItem::setActivat
                     d->connectionDetailsLabel = new QLabel(this);
                     d->connectionLayout->addWidget(d->connectionDetailsLabel);
                 }
-                if ((iface && !(iface->type() == Solid::Control::NetworkInterface::Ieee8023 || iface->type() == Solid::Control::NetworkInterface::Ieee80211))
-                        || activatable()->deviceUni() == QLatin1String("any")) {
+                if (iface) {
                     if (!d->disconnectButton) {
                         d->disconnectButton = new QPushButton(this);
                         d->disconnectButton->setIcon(KIcon("process-stop"));
diff -pruN 0.1+git20110318.941cde9-2/monolithic/interfaceconnectionitem.h 0.9~svngit20110408-0ubuntu2/monolithic/interfaceconnectionitem.h
--- 0.1+git20110318.941cde9-2/monolithic/interfaceconnectionitem.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/interfaceconnectionitem.h	2011-04-08 18:47:06.000000000 +0100
@@ -32,7 +32,10 @@ class InterfaceConnectionItemPrivate;
 class InterfaceConnectionItem : public ActivatableItem
 {
 Q_OBJECT
+
 Q_DECLARE_PRIVATE(InterfaceConnectionItem)
+signals:
+    void hasDefaultRouteChanged(bool);
 public:
     InterfaceConnectionItem(Knm::InterfaceConnection *, QWidget * parent = 0);
     virtual ~InterfaceConnectionItem();
diff -pruN 0.1+git20110318.941cde9-2/monolithic/knetworkmanagertrayicon.cpp 0.9~svngit20110408-0ubuntu2/monolithic/knetworkmanagertrayicon.cpp
--- 0.1+git20110318.941cde9-2/monolithic/knetworkmanagertrayicon.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/knetworkmanagertrayicon.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -254,6 +254,14 @@ void KNetworkManagerTrayIcon::fillPopup(
                 Knm::WirelessInterfaceConnection * wic = static_cast<Knm::WirelessInterfaceConnection*>(activatable);
                 kDebug() << "WIC" << wic->connectionName();
                 widget = new WirelessInterfaceConnectionItem(wic, 0);
+                if (wic->operationMode() == Solid::Control::WirelessNetworkInterface::Adhoc)
+                {
+                    widget->setVisible(false);
+                    connect(wic,SIGNAL(activated()),this,SLOT(adHocActivated()));
+                    connect(wic,SIGNAL(deactivated()),this,SLOT(adHocDeactivated()));
+                    connect (this, SIGNAL(adhocActivated(bool)), action, SLOT(setVisible(bool)));
+                    connect (this, SIGNAL(adhocDeactivated(bool)), action, SLOT(setVisible(bool)));
+                }
             } else if ( activatable->activatableType() == Knm::Activatable::UnconfiguredInterface) {
                 Knm::UnconfiguredInterface * unco = static_cast<Knm::UnconfiguredInterface*>(activatable);
                 kDebug() << "UCI" << unco->deviceUni();
@@ -300,7 +308,7 @@ void KNetworkManagerTrayIcon::fillPopup(
                     }
                     d->deviceUnis.append(activatable->deviceUni());
                 }
-                if (activatable->activatableType() == Knm::Activatable::WirelessInterfaceConnection) {
+                if (activatable->activatableType() == Knm::Activatable::WirelessInterfaceConnection && static_cast<Knm::WirelessInterfaceConnection*>(activatable)->operationMode() != Solid::Control::WirelessNetworkInterface::Adhoc) {
                     wirelessInterfaceConnectionCount++;
                 }
 
@@ -309,8 +317,10 @@ void KNetworkManagerTrayIcon::fillPopup(
         }
     }
 
-    if (!wirelessInterfaceConnectionCount) {
+    if (!wirelessInterfaceConnectionCount && Solid::Control::NetworkManager::isWirelessEnabled()
+            && Solid::Control::NetworkManager::isWirelessHardwareEnabled()) {
         foreach (QWidgetAction * action, wirelessUnconfiguredInterfaceItems) {
+            contextMenu()->insertSeparator(insertionPointForConnectToOtherWireless);
             contextMenu()->insertAction(insertionPointForConnectToOtherWireless, action);
         }
     }
@@ -344,6 +354,16 @@ void KNetworkManagerTrayIcon::handleRemo
     delete removedAction;
 }
 
+void KNetworkManagerTrayIcon::adHocActivated()
+{
+    emit adhocActivated(true);
+}
+
+void KNetworkManagerTrayIcon::adHocDeactivated()
+{
+    emit adhocDeactivated(false);
+}
+
 void KNetworkManagerTrayIcon::slotPreferences()
 {
     QStringList args;
@@ -566,9 +586,7 @@ void KNetworkManagerTrayIcon::wirelessEn
     d->flightModeAction->setEnabled(Solid::Control::NetworkManager::isWirelessHardwareEnabled());
 
     d->flightModeAction->setChecked(Solid::Control::NetworkManager::isWirelessEnabled());
-    if (!(Solid::Control::NetworkManager::isWirelessHardwareEnabled() && Solid::Control::NetworkManager::isWirelessEnabled())) {
-        contextMenu()->removeAction(d->otherWirelessNetworksAction);
-    }
+    fillPopup();
 }
 
 void KNetworkManagerTrayIcon::networkingEnabledChanged()
@@ -581,7 +599,6 @@ void KNetworkManagerTrayIcon::setActive(
 {
     Q_D(KNetworkManagerTrayIcon);
     d->active = active;
-    setStatus( active ? PARENT_ICON_CLASS::Active : PARENT_ICON_CLASS::Passive);
     fillPopup();
 }
 
diff -pruN 0.1+git20110318.941cde9-2/monolithic/knetworkmanagertrayicon.h 0.9~svngit20110408-0ubuntu2/monolithic/knetworkmanagertrayicon.h
--- 0.1+git20110318.941cde9-2/monolithic/knetworkmanagertrayicon.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/knetworkmanagertrayicon.h	2011-04-08 18:47:06.000000000 +0100
@@ -144,6 +144,13 @@ protected Q_SLOTS:
     void showConnectionProperties();
 
     void showOtherWirelessDialog();
+    
+    void adHocActivated();
+    void adHocDeactivated();
+    
+  signals:
+    void adhocActivated(bool);
+    void adhocDeactivated(bool);
 
 private:
     void fillPopup();
diff -pruN 0.1+git20110318.941cde9-2/monolithic/main.cpp 0.9~svngit20110408-0ubuntu2/monolithic/main.cpp
--- 0.1+git20110318.941cde9-2/monolithic/main.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/main.cpp	2011-04-15 15:26:54.000000000 +0100
@@ -17,6 +17,7 @@ GNU General Public License for more deta
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
+#include <stdlib.h>
 
 #include <KAboutData>
 #include <KCmdLineArgs>
@@ -30,6 +31,10 @@ static const char version[] = "v0.9";
 
 int main( int argc, char** argv )
 {
+    // Super ugly hack: DBusMenu can't represent the custom menu items
+    // KNetworkManager creates, so let's disable it for now
+    setenv("KSNI_NO_DBUSMENU", "1", 1 /* overwrite */);
+
     KAboutData about("knetworkmanager", 0, ki18n("KNetworkManager"), version, ki18n(description), KAboutData::License_GPL, ki18n("(C) 2009 Will Stephenson"), KLocalizedString(), "http://techbase.kde.org/Projects/Network_Management");
     about.addAuthor( ki18n("Will Stephenson"), ki18n("Original Author, Maintainer"), "wstephenson@kde.org" );
     about.addAuthor( ki18n("Paul Marchouk"), ki18n("User Interface Polish"), "pmarchouk@gmail.com" );
diff -pruN 0.1+git20110318.941cde9-2/monolithic/monolithic.cpp 0.9~svngit20110408-0ubuntu2/monolithic/monolithic.cpp
--- 0.1+git20110318.941cde9-2/monolithic/monolithic.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/monolithic.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -137,7 +137,6 @@ void Monolithic::init()
 
     connectionList->registerConnectionHandler(listPersistence);
     connectionList->registerConnectionHandler(d->nmSettingsService);
-    connectionList->registerConnectionHandler(d->nmSettingsService);
 
 
     d->activatableList = new ActivatableList(connectionList);
diff -pruN 0.1+git20110318.941cde9-2/monolithic/otherwirelessnetworkdialog.cpp 0.9~svngit20110408-0ubuntu2/monolithic/otherwirelessnetworkdialog.cpp
--- 0.1+git20110318.941cde9-2/monolithic/otherwirelessnetworkdialog.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/otherwirelessnetworkdialog.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -99,6 +99,23 @@ void OtherWirelessNetworkDialog::handleA
             item->setData(0, ItemActivatableRole, QVariant::fromValue(activatable));
             m_ui.twNetworks->insertTopLevelItem(m_networkItemCount++, item);
             break;
+        case Knm::Activatable::WirelessInterfaceConnection:
+            wic = static_cast<Knm::WirelessInterfaceConnection*>(activatable);
+            best = Knm::WirelessSecurity::best(wic->interfaceCapabilities(), true, (wic->operationMode() == Solid::Control::WirelessNetworkInterface::Adhoc), wic->apCapabilities(), wic->wpaFlags(), wic->rsnFlags());
+            if (wic->operationMode() == Solid::Control::WirelessNetworkInterface::Adhoc) {
+                strengthString = i18nc("@item:inlist Signal strength replaced by description on ad-hoc", "create Ad-Hoc");
+            }
+            else
+            {
+                strengthString = (QString::fromLatin1("%1%").arg(wic->strength()));
+            }
+            connect(wic, SIGNAL(activationStateChanged(Knm::InterfaceConnection::ActivationState)), this, SLOT(setActivationState(Knm::InterfaceConnection::ActivationState)));
+            itemStrings << wic->connectionName() << strengthString << Knm::WirelessSecurity::label(best);
+            item = new QTreeWidgetItem(itemStrings);
+            item->setIcon(0, SmallIcon("network-wireless"));
+            item->setData(0, ItemActivatableRole, QVariant::fromValue(activatable));
+            m_ui.twNetworks->insertTopLevelItem(m_networkItemCount++, item);
+            break;
         default:
             break;
     }
@@ -160,6 +177,31 @@ void OtherWirelessNetworkDialog::activat
     }
 }
 
+void OtherWirelessNetworkDialog::setActivationState(Knm::InterfaceConnection::ActivationState state)
+{
+    Knm::WirelessInterfaceConnection * wic = qobject_cast<Knm::WirelessInterfaceConnection*>(sender());
+    for (int i = 0; i < m_ui.twNetworks->topLevelItemCount(); ++i) {
+        QTreeWidgetItem * item = m_ui.twNetworks->topLevelItem(i);
+        if (item->data(0, ItemActivatableRole).value<Knm::Activatable*>() == static_cast<Knm::Activatable*>(wic)) {
+            QString strengthString;
+            if (wic->operationMode() == Solid::Control::WirelessNetworkInterface::Adhoc)
+            {
+                strengthString = i18nc("@item:inlist Signal strength replaced by description on ad-hoc", "create Ad-Hoc");
+            }
+            else
+            {
+                strengthString = (QString::fromLatin1("%1%").arg(wic->strength()));
+            }
+            if (state == Knm::InterfaceConnection::Activated)
+            {
+                strengthString.append(i18nc("@item:inlist connection status added to signal strength if we are connected", " (connected)"));
+            }
+            item->setData(1,0,strengthString);
+            break;
+        }
+    }
+}
+
 void OtherWirelessNetworkDialog::itemSelectionChanged()
 {
     enableButtonOk(!m_ui.twNetworks->selectedItems().isEmpty());
diff -pruN 0.1+git20110318.941cde9-2/monolithic/otherwirelessnetworkdialog.h 0.9~svngit20110408-0ubuntu2/monolithic/otherwirelessnetworkdialog.h
--- 0.1+git20110318.941cde9-2/monolithic/otherwirelessnetworkdialog.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/otherwirelessnetworkdialog.h	2011-04-08 18:47:06.000000000 +0100
@@ -26,6 +26,7 @@ along with this program.  If not, see <h
 #include <activatableobserver.h>
 
 #include "ui_otherwirelessnetworkwidget.h"
+#include "interfaceconnection.h"
 
 namespace Knm
 {
@@ -50,6 +51,7 @@ protected Q_SLOTS:
     void itemDoubleClicked(QTreeWidgetItem *);
     void itemSelectionChanged();
     void slotButtonClicked(int button);
+    void setActivationState(Knm::InterfaceConnection::ActivationState);
 private:
     ActivatableList * m_activatables;
     QTreeWidgetItem * m_newAdhocItem;
diff -pruN 0.1+git20110318.941cde9-2/monolithic/wirelessstatus.cpp 0.9~svngit20110408-0ubuntu2/monolithic/wirelessstatus.cpp
--- 0.1+git20110318.941cde9-2/monolithic/wirelessstatus.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/monolithic/wirelessstatus.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -109,7 +109,7 @@ WirelessStatus::WirelessStatus(WirelessI
 
     Knm::WirelessObject * wobj  = static_cast<Knm::WirelessObject*>(item->wirelessInterfaceConnection());
     d->init(wobj);
-
+    
     connect(item->wirelessInterfaceConnection(), SIGNAL(strengthChanged(int)), this, SLOT(setStrength(int)));
 }
 
diff -pruN 0.1+git20110318.941cde9-2/.pc/applied-patches 0.9~svngit20110408-0ubuntu2/.pc/applied-patches
--- 0.1+git20110318.941cde9-2/.pc/applied-patches	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/applied-patches	2011-04-15 15:26:54.000000000 +0100
@@ -0,0 +1,3 @@
+kubuntu_02_install_qdbusfornm.diff
+kubuntu_03_no_dbusmenu.diff
+kubuntu_05_save_autoconnect_settings.diff
diff -pruN 0.1+git20110318.941cde9-2/.pc/kubuntu_02_install_qdbusfornm.diff/tests/CMakeLists.txt 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_02_install_qdbusfornm.diff/tests/CMakeLists.txt
--- 0.1+git20110318.941cde9-2/.pc/kubuntu_02_install_qdbusfornm.diff/tests/CMakeLists.txt	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_02_install_qdbusfornm.diff/tests/CMakeLists.txt	2011-04-08 18:47:07.000000000 +0100
@@ -0,0 +1,29 @@
+include_directories(
+   ${CMAKE_CURRENT_SOURCE_DIR}/../libs/internals
+   ${CMAKE_CURRENT_SOURCE_DIR}/../libs
+   )
+
+## next target: test for ConfigXml to make sure it can handle our connections
+
+set(testconfigxml_SRCS
+   testconfigxml.cpp
+)
+
+#kde4_add_executable(testconfigxml ${testconfigxml_SRCS})
+#target_link_libraries(testconfigxml knmstorage ${KDE4_KDEUI_LIBS})
+
+## next target: test for new storage layer to make sure it can handle our connections
+
+set(testnewstorage_SRCS
+   testnewstorage.cpp
+)
+
+kde4_add_executable(testnewstorage ${testnewstorage_SRCS})
+target_link_libraries(testnewstorage knminternals ${KDE4_KDEUI_LIBS} knm_nm)
+
+## next target: hacked up qdbus that can display NM data types
+
+kde4_add_executable(qdbusfornm qdbusfornm.cpp )
+target_link_libraries(qdbusfornm knminternals ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} 
+                      ${KDE4_KDECORE_LIBS})
+
diff -pruN 0.1+git20110318.941cde9-2/.pc/kubuntu_03_no_dbusmenu.diff/monolithic/main.cpp 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_03_no_dbusmenu.diff/monolithic/main.cpp
--- 0.1+git20110318.941cde9-2/.pc/kubuntu_03_no_dbusmenu.diff/monolithic/main.cpp	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_03_no_dbusmenu.diff/monolithic/main.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -0,0 +1,48 @@
+/*
+Copyright 2009 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <KAboutData>
+#include <KCmdLineArgs>
+
+#include "monolithic.h"
+
+static const char description[] =
+    I18N_NOOP("KNetworkManager, the KDE 4 NetworkManager client");
+
+static const char version[] = "v0.9";
+
+int main( int argc, char** argv )
+{
+    KAboutData about("knetworkmanager", 0, ki18n("KNetworkManager"), version, ki18n(description), KAboutData::License_GPL, ki18n("(C) 2009 Will Stephenson"), KLocalizedString(), "http://techbase.kde.org/Projects/Network_Management");
+    about.addAuthor( ki18n("Will Stephenson"), ki18n("Original Author, Maintainer"), "wstephenson@kde.org" );
+    about.addAuthor( ki18n("Paul Marchouk"), ki18n("User Interface Polish"), "pmarchouk@gmail.com" );
+    about.addAuthor( ki18n("Christopher Blauvelt"), ki18n("Original Author, Wireless Scan UI"), "cblauvelt@gmail.com" );
+    KCmdLineArgs::init(argc, argv, &about);
+
+    KCmdLineOptions options;
+    KCmdLineArgs::addCmdLineOptions(options);
+    Monolithic app;
+    app.setQuitOnLastWindowClosed(false);
+    app.init();
+
+    int i = app.exec();
+    // workaround KNotificationItem crashing when deleted from QCoreApp dtor
+    return i;
+}
diff -pruN 0.1+git20110318.941cde9-2/.pc/kubuntu_05_save_autoconnect_settings.diff/backends/NetworkManager/nmdbussettingsservice.cpp 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_05_save_autoconnect_settings.diff/backends/NetworkManager/nmdbussettingsservice.cpp
--- 0.1+git20110318.941cde9-2/.pc/kubuntu_05_save_autoconnect_settings.diff/backends/NetworkManager/nmdbussettingsservice.cpp	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_05_save_autoconnect_settings.diff/backends/NetworkManager/nmdbussettingsservice.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -0,0 +1,305 @@
+/*
+Copyright 2008,2009 Will Stephenson <wstephenson@kde.org>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) version 3, or any
+later version accepted by the membership of KDE e.V. (or its
+successor approved by the membership of KDE e.V.), which shall
+act as a proxy defined in Section 6 of version 3 of the license.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NMDBUSSETTINGSSERVICE_CPP
+#define NMDBUSSETTINGSSERVICE_CPP
+
+#include "nmdbussettingsservice.h"
+
+#include <NetworkManager.h>
+
+#include <QHash>
+#include <QUuid>
+
+#include <QDBusArgument>
+#include <QDBusConnection>
+#include <QDBusConnectionInterface>
+
+#include <KDebug>
+#include <KLocale>
+
+#include <solid/control/networkmanager.h>
+
+#include <connection.h>
+#include <interfaceconnection.h>
+#include <vpninterfaceconnection.h>
+
+#include "busconnection.h"
+#include "exportedconnection.h"
+#include "exportedconnectionsecrets.h"
+
+#include "nm-active-connectioninterface.h"
+
+class NMDBusSettingsServicePrivate
+{
+public:
+    NMDBusSettingsService::ServiceStatus status;
+    uint nextConnectionId;
+    QHash<QDBusObjectPath, BusConnection *> pathToConnections;
+    QHash<QUuid, BusConnection *> uuidToConnections;
+    QHash<QUuid, QDBusObjectPath> uuidToPath;
+};
+
+const QString NMDBusSettingsService::SERVICE_USER_SETTINGS = QLatin1String(NM_DBUS_SERVICE_USER_SETTINGS);
+const QString NMDBusSettingsService::SERVICE_SYSTEM_SETTINGS = QLatin1String(NM_DBUS_SERVICE_SYSTEM_SETTINGS);
+
+NMDBusSettingsService::NMDBusSettingsService(QObject * parent)
+: QObject(parent), d_ptr(new NMDBusSettingsServicePrivate)
+{
+    Q_D(NMDBusSettingsService);
+    d->status = Available;
+    d->nextConnectionId = 0;
+
+    QDBusReply<QDBusConnectionInterface::RegisterServiceReply> reply = QDBusConnection::systemBus().interface()->registerService(SERVICE_USER_SETTINGS);
+
+    if (reply.value() != QDBusConnectionInterface::ServiceRegistered) {
+        // trouble;
+        // TODO use QDBusConnectionInterface to get the error and handle AccessDenied as well as the
+        // owner error
+        kDebug() << "Unable to register service" << QDBusConnection::systemBus().lastError();
+        if (reply.error().type() == QDBusError::AccessDenied) {
+            d->status = AccessDenied;
+        } else if (reply.value() == QDBusConnectionInterface::ServiceNotRegistered) {
+            d->status = AlreadyRunning;
+        } else {
+            d->status = UnknownError;
+        }
+    }
+
+
+    //declare types
+    qDBusRegisterMetaType<QList<QDBusObjectPath> >();
+
+    QDBusConnection dbus = QDBusConnection::systemBus();
+    if (!dbus.registerObject(QLatin1String(NM_DBUS_PATH_SETTINGS), this, QDBusConnection::ExportScriptableContents)) {
+        kDebug() << "Unable to register settings object " << NM_DBUS_PATH_SETTINGS;
+        d->status = UnknownError;
+    }
+}
+
+NMDBusSettingsService::~NMDBusSettingsService()
+{
+    Q_D(const NMDBusSettingsService);
+    if ((d->status == Available) && !QDBusConnection::systemBus().unregisterService(SERVICE_USER_SETTINGS) ) {
+        // trouble;
+        kDebug() << "Unable to unregister service";
+    }
+}
+
+QUuid NMDBusSettingsService::uuidForPath(const QDBusObjectPath& path) const
+{
+    Q_D(const NMDBusSettingsService);
+    BusConnection * busConn = 0;
+    if (d->pathToConnections.contains(path)) {
+        busConn = d->pathToConnections[path];
+        return busConn->connection()->uuid();
+    }
+    return QUuid();
+}
+
+void NMDBusSettingsService::handleAdd(Knm::Connection * added)
+{
+    Q_D(NMDBusSettingsService);
+
+    // only handle connections that come from local storage, not those from the system settings
+    // service
+    if ((d->status == Available) && added->origin() == QLatin1String("ConnectionListPersistence")) {
+        // put it on our bus 
+        QDBusObjectPath objectPath;
+        BusConnection * busConn = new BusConnection(added, this);
+        new ConnectionAdaptor(busConn);
+        new SecretsAdaptor(busConn);
+
+        objectPath = QDBusObjectPath(nextObjectPath());
+        // important - make sure all 3 hashes are up to date!
+        d->pathToConnections.insert(objectPath, busConn);
+        d->uuidToConnections.insert(added->uuid(), busConn);
+        d->uuidToPath.insert(added->uuid(), objectPath);
+
+        QDBusConnection::systemBus().registerObject(objectPath.path(), busConn, QDBusConnection::ExportAdaptors);
+        emit NewConnection(objectPath);
+    }
+}
+
+void NMDBusSettingsService::handleUpdate(Knm::Connection * updated)
+{
+    Q_D(NMDBusSettingsService);
+
+    if ((d->status == Available) && d->uuidToConnections.contains(updated->uuid())) {
+        BusConnection * busConn = d->uuidToConnections[updated->uuid()];
+        if (busConn) {
+            busConn->updateInternal(updated);
+        }
+    }
+}
+
+void NMDBusSettingsService::handleRemove(Knm::Connection * removed)
+{
+    Q_D(NMDBusSettingsService);
+    if (d->status == Available) {
+        BusConnection * busConn = d->uuidToConnections.take(removed->uuid());
+        if (busConn) {
+            QDBusObjectPath key = d->pathToConnections.key(busConn);
+            d->uuidToPath.remove(removed->uuid());
+            d->pathToConnections.remove(key);
+            busConn->Delete();
+        }
+    }
+}
+
+void NMDBusSettingsService::handleAdd(Knm::Activatable * added)
+{
+    Q_D(NMDBusSettingsService);
+    if (d->status == Available) {
+        Knm::InterfaceConnection * ic = qobject_cast<Knm::InterfaceConnection*>(added);
+        if (ic && ic->activatableType() != Knm::Activatable::HiddenWirelessInterfaceConnection) {
+            // listen to the IC
+            kDebug() << ic->connectionUuid();
+            //if (ic->activatableType() != Knm::Activatable::VpnInterfaceConnection) {
+            connect(ic, SIGNAL(activated()), this, SLOT(interfaceConnectionActivated()));
+            connect(ic, SIGNAL(deactivated()), this, SLOT(interfaceConnectionDeactivated()));
+            //}
+
+            // if derived from one of our connections, tag it with the service and object path of the
+            // connection.  The system settings monitor NMDBusSettingsConnectionProvider does this for
+            // its connections.
+            if (d->uuidToPath.contains(ic->connectionUuid())) {
+                kDebug() << "tagging local InterfaceConnection " << ic->connectionName() << SERVICE_USER_SETTINGS << d->uuidToPath[ic->connectionUuid()].path();
+                kDebug() << "is default: " << ic->hasDefaultRoute();
+                Knm::Connection * conn = d->uuidToConnections[ic->connectionUuid()]->connection();
+                if (conn->autoConnect() != conn->originalAutoConnect())
+                {
+                    conn->setAutoConnect(conn->originalAutoConnect());
+                    handleUpdate(conn);
+                }
+                
+                ic->setProperty("NMDBusService", SERVICE_USER_SETTINGS);
+                ic->setProperty("NMDBusObjectPath", d->uuidToPath[ic->connectionUuid()].path());
+            }
+        }
+    }
+}
+
+void NMDBusSettingsService::interfaceConnectionActivated()
+{
+    Knm::InterfaceConnection * ic = qobject_cast<Knm::InterfaceConnection*>(sender());
+
+    if (ic) {
+        QString deviceToActivateOn;
+        QVariantMap extraArguments;
+
+        Knm::VpnInterfaceConnection * vpn = qobject_cast<Knm::VpnInterfaceConnection*>(ic);
+        if (vpn) {
+            // look up the active connection (a real connection, not this vpn that is being activated)
+            // because NM needs its details to bring up the VPN
+            QString activeConnPath;
+            foreach (const QString &activeConnectionPath, Solid::Control::NetworkManager::activeConnections()) {
+                OrgFreedesktopNetworkManagerConnectionActiveInterface activeConnection("org.freedesktop.NetworkManager", activeConnectionPath, QDBusConnection::systemBus());
+
+                if ( activeConnection.getDefault() && activeConnection.state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
+                    activeConnPath = activeConnection.path();
+                    QList<QDBusObjectPath> devs = activeConnection.devices();
+                    if (!devs.isEmpty()) {
+                        deviceToActivateOn = devs.first().path();
+                    }
+                }
+            }
+
+            kDebug() << "active" << activeConnPath << "device" << deviceToActivateOn;
+
+            if ( activeConnPath.isEmpty() || deviceToActivateOn.isEmpty() )
+                return;
+
+            extraArguments.insert( "extra_connection_parameter", activeConnPath );
+        } else {
+            deviceToActivateOn = ic->deviceUni();
+        }
+
+        Solid::Control::NetworkManager::activateConnection(deviceToActivateOn,
+                QString::fromLatin1("%1 %2")
+                .arg(ic->property("NMDBusService").toString(), ic->property("NMDBusObjectPath").toString()),
+                extraArguments);
+    }
+}
+
+void NMDBusSettingsService::interfaceConnectionDeactivated()
+{
+    Q_D(NMDBusSettingsService);
+    Knm::InterfaceConnection * ic = qobject_cast<Knm::InterfaceConnection*>(sender());
+#ifdef NM_0_8
+    Solid::Control::NetworkInterface *iface = Solid::Control::NetworkManager::findNetworkInterface(ic->deviceUni());
+    if (iface) {
+        iface->disconnectInterface();
+    } else {
+        Solid::Control::NetworkManager::deactivateConnection(ic->property("NMDBusActiveConnectionObject").toString());
+    }
+#else
+    Solid::Control::NetworkManager::deactivateConnection(ic->property("NMDBusActiveConnectionObject").toString());
+#endif
+
+    if (ic->hasDefaultRoute())
+    {
+       Knm::Connection * connection = d->uuidToConnections[ic->connectionUuid()]->connection();
+       connection->setAutoConnect(false);
+       handleUpdate(connection);
+    }
+}
+
+void NMDBusSettingsService::handleUpdate(Knm::Activatable *)
+{
+
+}
+void NMDBusSettingsService::handleRemove(Knm::Activatable *)
+{
+
+}
+
+QString NMDBusSettingsService::nextObjectPath()
+{
+    Q_D(NMDBusSettingsService);
+    return QString::fromLatin1("%1/%2").arg(QLatin1String(NM_DBUS_PATH_SETTINGS)).arg(d->nextConnectionId++);
+}
+
+QList<QDBusObjectPath> NMDBusSettingsService::ListConnections() const
+{
+    Q_D(const NMDBusSettingsService);
+    QList<QDBusObjectPath> pathList = d->pathToConnections.keys();
+    kDebug() << "There are " << pathList.count() << " known connections";
+    return pathList;
+}
+
+NMDBusSettingsService::ServiceStatus NMDBusSettingsService::serviceStatus() const
+{
+    Q_D(const NMDBusSettingsService);
+    return d->status;
+}
+
+#if QT_VERSION < 0x040500
+inline bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
+{ return lhs.path() == rhs.path(); }
+
+inline bool operator!=(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
+{ return lhs.path() != rhs.path(); }
+
+inline bool operator<(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs)
+{ return lhs.path() < rhs.path(); }
+#endif
+
+#endif // NMDBUSSETTINGSSERVICE_CPP
diff -pruN 0.1+git20110318.941cde9-2/.pc/kubuntu_05_save_autoconnect_settings.diff/libs/ui/connectionwidget.cpp 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_05_save_autoconnect_settings.diff/libs/ui/connectionwidget.cpp
--- 0.1+git20110318.941cde9-2/.pc/kubuntu_05_save_autoconnect_settings.diff/libs/ui/connectionwidget.cpp	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/kubuntu_05_save_autoconnect_settings.diff/libs/ui/connectionwidget.cpp	2011-04-08 18:47:06.000000000 +0100
@@ -0,0 +1,129 @@
+/*
+Copyright 2008 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "connectionwidget.h"
+#include "settingwidget_p.h"
+
+#include <KDebug>
+
+#include <kicondialog.h>
+#include <kstandarddirs.h>
+
+#include "ui_connection.h"
+#include "connection.h"
+
+class ConnectionWidgetPrivate : public SettingWidgetPrivate
+{
+public:
+    Ui_ConnectionSettings ui;
+    QString defaultName;
+};
+
+ConnectionWidget::ConnectionWidget(QWidget * parent)
+    : SettingWidget(*new ConnectionWidgetPrivate, parent)
+{
+    Q_D(ConnectionWidget);
+    d->ui.setupUi(this);
+    // Avoid double margins in dialog
+    layout()->setMargin(0);
+    d->valid = false; // valid on creation because connection name (id) is empty
+
+    d->ui.pushButtonChooseIcon->setToolTip(i18nc("@info:tooltip user action", "Choose a connection icon"));
+    // it doesn't make a sense to set up an icon here, lets do it in readConfig
+    connect(d->ui.pushButtonChooseIcon, SIGNAL(clicked()), this, SLOT(buttonChooseIconClicked()));
+    connect(d->ui.id, SIGNAL(textChanged(const QString&)), this, SLOT(validate()));
+}
+
+ConnectionWidget::~ConnectionWidget()
+{
+}
+
+void ConnectionWidget::setConnection(Knm::Connection * connection)
+{
+    kDebug() << "Connection id is " << connection->uuid();
+    d_ptr->connection = connection;
+}
+
+void ConnectionWidget::setDefaultName(const QString & defaultName)
+{
+    Q_D(ConnectionWidget);
+
+    if (connection()->name() == i18n("New Wireless Connection"))
+        d->ui.id->setText(defaultName);
+
+    d->defaultName = defaultName;
+}
+
+QTabWidget * ConnectionWidget::connectionSettingsWidget()
+{
+    Q_D(ConnectionWidget);
+    return d->ui.tabwidget;
+}
+
+void ConnectionWidget::readConfig()
+{
+    Q_D(ConnectionWidget);
+    if (connection()->name().isEmpty()) {
+        connection()->setName(d->defaultName);
+    }
+
+    d->ui.id->setText(connection()->name());
+    d->ui.autoconnect->setChecked(connection()->autoConnect());
+    d->ui.pushButtonChooseIcon->setIcon(KIcon(connection()->iconName()));
+}
+
+void ConnectionWidget::writeConfig()
+{
+    Q_D(ConnectionWidget);
+    connection()->setName(d->ui.id->text());
+    connection()->setAutoConnect(d->ui.autoconnect->isChecked());
+    // connection()->setIconName(..) is already called from buttonChooseIconClicked()
+}
+
+void ConnectionWidget::validate()
+{
+    Q_D(ConnectionWidget);
+    d->valid = !d->ui.id->text().isEmpty();
+    emit valid(d->valid);
+}
+
+void ConnectionWidget::buttonChooseIconClicked()
+{
+    Q_D(ConnectionWidget);
+    KIconDialog dlg(this);
+
+    // set customLocation to kdedir/share/apps/networkmanagement/icons
+    QString customLocation(KStandardDirs::locate("data", QLatin1String("networkmanagement/icons/")));
+    //qDebug() << "Custom location: " << customLocation;
+    
+    dlg.setCustomLocation(customLocation);
+
+    dlg.setup(KIconLoader::NoGroup, KIconLoader::Any, false, 0, true, false, false);
+
+    QString iconName = dlg.openDialog();
+    if (!iconName.isEmpty())
+    {
+        //qDebug() << "Icon name: " << iconName;
+        d->ui.pushButtonChooseIcon->setIcon(KIcon(iconName));
+        connection()->setIconName(iconName);
+    }
+}
+
+// vim: sw=4 sts=4 et tw=100
diff -pruN 0.1+git20110318.941cde9-2/.pc/.version 0.9~svngit20110408-0ubuntu2/.pc/.version
--- 0.1+git20110318.941cde9-2/.pc/.version	1970-01-01 01:00:00.000000000 +0100
+++ 0.9~svngit20110408-0ubuntu2/.pc/.version	2011-04-15 15:26:54.000000000 +0100
@@ -0,0 +1 @@
+2
diff -pruN 0.1+git20110318.941cde9-2/qml/package/contents/code/main.qml 0.9~svngit20110408-0ubuntu2/qml/package/contents/code/main.qml
--- 0.1+git20110318.941cde9-2/qml/package/contents/code/main.qml	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/qml/package/contents/code/main.qml	2011-04-08 18:47:07.000000000 +0100
@@ -35,7 +35,7 @@ Item {
           interval: 0
           connectedSources: ["connections"]
           onDataChanged: {
-              //console.log("data changed...")
+              console.log("data changed...");
           }
           onSourceAdded: {
              if (source != "networkStatus") {
@@ -59,16 +59,17 @@ Item {
         id: theme
     }
 
+    PlasmaWidgets.Label {
+        id: header
+        text: i18n("Available Connections")
+        font.pixelSize: 20
+        anchors { top: parent.top; left: parent.left; right: parent.right; }
+    }
+
     ListView {
         id: list
         //height: 200
-        /*
-        anchors.top: parent.top
-        anchors.left: parent.left
-        anchors.right: parent.right
-        anchors.bottom: statusText
-        */
-        anchors.fill: parent
+        anchors { top: header.bottom; left: parent.left; right: parent.right; bottom: parent.bottom; margins: 8}
         clip: true
         spacing: 10
 
@@ -89,10 +90,11 @@ Item {
 
             PlasmaWidgets.Frame {
                 id: itemFrame
-                anchors.top: citem.top
-                anchors.bottom: citem.bottom
+                anchors.fill: parent
+                //anchors.top: citem.top
+                //anchors.bottom: citem.bottom
                 height: citem.height
-                width: citem.width
+                //width: citem.width
             }
 
             PlasmaWidgets.IconWidget {
@@ -101,6 +103,7 @@ Item {
                 width: collapsedHeight
                 anchors.top: parent.top
                 anchors.left: parent.left
+                anchors.margins: 4
 
                 Component.onCompleted: {
                     //if (typeof networkEngineSource.data[DataEngineSource]["securityIcon"] != "undefined") {
@@ -130,71 +133,88 @@ Item {
                 Component.onCompleted: {
                     try {
                         //if (typeof networkEngineSource.data[DataEngineSource]["securityIcon"] != "undefined") {
-                            setIcon(networkEngineSource.data[DataEngineSource]["securityIcon"]);
+                            //setIcon(networkEngineSource.data[DataEngineSource]["securityIcon"]);
+                            setIcon(securityIcon);
                         //}
                     } catch (TypeError) {
                         //print("oops");
                         print(" TypeError" + mainText.text);
                     } finally {
-                        //print(" Exception ignored in " + mainText.text);
+                        print(" Exception ignored in " + mainText.text);
                     }
                 }
                 onClicked: citem.state = (citem.state == "expanded") ? "collapsed" : "expanded"
 
             }
 
-            Text {
+            PlasmaWidgets.Label {
                 id: mainText
                 text: {
-                    if (isInterfaceConnection(activatableType)) {
-                        var t = networkEngineSource.data[DataEngineSource]["connectionName"];
-                        if (networkEngineSource.data[DataEngineSource]["activationState"] == "Activated") {
-                            t = t + " (Connected)";
+                    print(" Hmm ... " + activatableType);
+                    if (activatableType != "" && isInterfaceConnection(activatableType)) {
+                        print("ifaceconnnection :)");
+                        if (connectionName) {
+                            var t = connectionName;
+                            //if (networkEngineSource.data[DataEngineSource]["activationState"] == "Activated") {
+                            //    t = t + " (Connected)";
+                            //}
+                            return t;
+                        } else {
+                            return "empty";
                         }
-                        return t;
                     } else if ("WirelessNetwork" == activatableType) {
-                        return networkEngineSource.data[DataEngineSource]["ssid"];
+                        //return citem.ssid;
+                        return "ssid";
                     } else {
-                        return activatableType;
+                        return citem.activatableType;
                     }
+                    return "empty";
                 }
+
                 anchors.top: parent.top
                 anchors.left: strengthIconWidget.right
+                anchors.right: parent.right
                 //anchors.right: securityIconWidget.left
             }
-            Text {
-                id: infoText;
+            PlasmaWidgets.Label {
+                id: infoText
                 text: {
                     if (isInterfaceConnection(activatableType)) {
-                        var conType = networkEngineSource.data[DataEngineSource]["connectionType"];
-                        // Wired, Wireless, Gsm, Cdma, Vpn or Pppoe
-                        if (conType == "Wireless") {
-                            return i18n("Remembered Wifi Connection");
-                        } else if (conType == "Wired") {
-                            return i18n("Wired Connection");
-                        } else if (conType == "Gsm") {
-                            return i18n("Mobile Broadband");
-                        } else if (conType == "Cdma") {
-                            return i18n("Mobile Internet");
-                        } else if (conType == "Pppoe") {
-                            return i18n("Modem Connection");
-                        } else if (conType == "Vpn") {
-                            return i18n("Virtual Private Network");
+                        //var conType = networkEngineSource.data[DataEngineSource]["connectionType"];
+                        try {
+                            var conType = connectionType;
+                            // Wired, Wireless, Gsm, Cdma, Vpn or Pppoe
+                            if (conType == "Wireless") {
+                                return i18n("Remembered Wifi Connection");
+                            } else if (conType == "Wired") {
+                                return i18n("Wired Connection");
+                            } else if (conType == "Gsm") {
+                                return i18n("Mobile Broadband");
+                            } else if (conType == "Cdma") {
+                                return i18n("Mobile Internet");
+                            } else if (conType == "Pppoe") {
+                                return i18n("Modem Connection");
+                            } else if (conType == "Vpn") {
+                                return i18n("Virtual Private Network");
+                            }
+                        } catch (ReferenceError) {
+                            print("Exception caught in infoText.Label connectionType");
                         }
                     }
-                    return "";
+                    return "unknown type";
                 }
                 //text: connectionType
-                font.pixelSize: mainText.font.pixelSize - 2
+                font.pixelSize: 12
                 opacity: 0.4
                 anchors.top: mainText.bottom
                 anchors.left: mainText.left
-                //anchors.bottom: parent.top
+                anchors.right: parent.right
             }
 
             PlasmaWidgets.PushButton {
                 id: connectButton
                 text: "Connect"
+                z: 100
                 height: 0
                 //setIcon("kmail")
                 anchors.top: infoText.bottom
@@ -287,18 +307,18 @@ Item {
                 return "network-wireless-connnected-00";
             }
 
-            function isInterfaceConnection(activatableType) {
+            function isInterfaceConnection(myType) {
                 var cons = ["InterfaceConnection", "WirelessInterfaceConnection", "VpnInterfaceConnection", "GsmInterfaceConnection"];
-                //print(activatableType);
-                return cons.indexOf(activatableType) >= 0;
+                //print("T:" + myType + " " + cons.indexOf(myType));
+                return cons.indexOf(myType) >= 0;
             }
 
         }
     }
 
-    Text {
+    PlasmaWidgets.Label {
         id: statusText
-        text: "statuslabel ....."
+        text: "Connected to some.network."
         anchors.top: list.bottom
         anchors.bottom: parent.bottom
         anchors.left: parent.left
diff -pruN 0.1+git20110318.941cde9-2/qml/package/metadata.desktop 0.9~svngit20110408-0ubuntu2/qml/package/metadata.desktop
--- 0.1+git20110318.941cde9-2/qml/package/metadata.desktop	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/qml/package/metadata.desktop	2011-04-08 18:47:07.000000000 +0100
@@ -10,6 +10,7 @@ Comment[uk]=Встановити з’є
 Comment[x-test]=xxConnect to the Internetxx
 Comment[zh_TW]=連線到網際網路
 Encoding=UTF-8
+Icon=network-wireless
 Keywords=
 Name=Network Connections
 Name[ca]=Connexions de xarxa
@@ -42,8 +43,8 @@ Name[x-test]=xxNetwork Connectionsxx
 Name[zh_TW]=網路連線
 Type=Service
 X-KDE-ParentApp=
-X-KDE-PluginInfo-Author=Sebastian Kügler
-X-KDE-PluginInfo-Category=
+X-KDE-PluginInfo-Author=Sebastian KÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂ¼gler
+X-KDE-PluginInfo-Category=System Information
 X-KDE-PluginInfo-Email=sebas@kde.org
 X-KDE-PluginInfo-License=GPL
 X-KDE-PluginInfo-Name=networkconnections
diff -pruN 0.1+git20110318.941cde9-2/settings/config/CMakeLists.txt 0.9~svngit20110408-0ubuntu2/settings/config/CMakeLists.txt
--- 0.1+git20110318.941cde9-2/settings/config/CMakeLists.txt	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/config/CMakeLists.txt	2011-04-08 18:47:07.000000000 +0100
@@ -20,11 +20,13 @@ set(kcm_networkmanagement_SRCS
 kde4_add_ui_files(kcm_networkmanagement_SRCS manageconnectionwidget.ui)
 kde4_add_plugin(kcm_networkmanagement ${kcm_networkmanagement_SRCS})
 
+target_link_libraries(kcm_networkmanagement knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY})
+
 macro_ensure_version("4.4.76" ${KDE_VERSION} IS45)
 if (IS45)
-   target_link_libraries(kcm_networkmanagement knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${KDE4_KCMUTILS_LIBS} ${QT_QTXML_LIBRARY})
+   target_link_libraries(kcm_networkmanagement ${KDE4_KCMUTILS_LIBS})
 else (IS45)
-   target_link_libraries(kcm_networkmanagement knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTXML_LIBRARY})
+   target_link_libraries(kcm_networkmanagement ${KDE4_KUTILS_LIBS})
 endif (IS45)
 
 ## next target: tray config KCM
diff -pruN 0.1+git20110318.941cde9-2/settings/config/manageconnectionwidget.cpp 0.9~svngit20110408-0ubuntu2/settings/config/manageconnectionwidget.cpp
--- 0.1+git20110318.941cde9-2/settings/config/manageconnectionwidget.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/config/manageconnectionwidget.cpp	2011-04-08 18:47:07.000000000 +0100
@@ -66,6 +66,11 @@ ManageConnectionWidget::ManageConnection
     connect(mEditor, SIGNAL(connectionsChanged()), this, SLOT(restoreConnections()));
 
     mConnEditUi.setupUi(this);
+    mConnEditUi.listWired->setSortingEnabled(true);
+    mConnEditUi.listWireless->setSortingEnabled(true);
+    mConnEditUi.listCellular->setSortingEnabled(true);
+    mConnEditUi.listVpn->setSortingEnabled(true);
+    mConnEditUi.listPppoe->setSortingEnabled(true);
 
     KNetworkManagerServicePrefs::instance(Knm::ConnectionPersistence::NETWORKMANAGEMENT_RCFILE);
     connectButtonSet(mConnEditUi.buttonSetWired, mConnEditUi.listWired);
diff -pruN 0.1+git20110318.941cde9-2/settings/config/mobileconnectionwizard.cpp 0.9~svngit20110408-0ubuntu2/settings/config/mobileconnectionwizard.cpp
--- 0.1+git20110318.941cde9-2/settings/config/mobileconnectionwizard.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/config/mobileconnectionwizard.cpp	2011-04-08 18:47:07.000000000 +0100
@@ -174,7 +174,7 @@ void MobileConnectionWizard::initializeP
     }
 }
 
-int MobileConnectionWizard::nextId()
+int MobileConnectionWizard::nextId() const
 {
     // Providers page
     if (currentId() == 2 && type() != Knm::Connection::Gsm) {
@@ -204,7 +204,7 @@ QVariantList MobileConnectionWizard::arg
     return temp;
 }
 
-Knm::Connection::Type MobileConnectionWizard::type()
+Knm::Connection::Type MobileConnectionWizard::type() const
 {
     if (mIface && mIface->type() == Solid::Control::NetworkInterface::Cdma) {
         return Knm::Connection::Cdma;
diff -pruN 0.1+git20110318.941cde9-2/settings/config/mobileconnectionwizard.h 0.9~svngit20110408-0ubuntu2/settings/config/mobileconnectionwizard.h
--- 0.1+git20110318.941cde9-2/settings/config/mobileconnectionwizard.h	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/config/mobileconnectionwizard.h	2011-04-08 18:47:07.000000000 +0100
@@ -50,7 +50,7 @@ public:
      */
     QVariantList args();
 
-    Knm::Connection::Type type();
+    Knm::Connection::Type type() const;
     MobileProviders::ErrorCodes getError();
 
 private Q_SLOTS:
@@ -69,7 +69,7 @@ private:
     QWizardPage * createPlansPage();
     QWizardPage * createConfirmPage();
     void initializePage(int id);
-    int nextId();
+    int nextId() const;
 
     MobileProviders * mProviders;
     Solid::Control::NetworkInterface * mIface;
diff -pruN 0.1+git20110318.941cde9-2/settings/configshell/CMakeLists.txt 0.9~svngit20110408-0ubuntu2/settings/configshell/CMakeLists.txt
--- 0.1+git20110318.941cde9-2/settings/configshell/CMakeLists.txt	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/configshell/CMakeLists.txt	2011-04-08 18:47:07.000000000 +0100
@@ -10,15 +10,19 @@ include_directories(${CMAKE_CURRENT_BINA
 
 set(networkmanagement_configshell_SRCS
    main.cpp
+   ../config/mobileconnectionwizard.cpp
+   ../config/mobileproviders.cpp
 )
 
 kde4_add_executable(networkmanagement_configshell ${networkmanagement_configshell_SRCS})
 
+target_link_libraries(networkmanagement_configshell knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY})
+
 macro_ensure_version("4.4.76" ${KDE_VERSION} IS45)
 if (IS45)
-   target_link_libraries(networkmanagement_configshell knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${KDE4_KCMUTILS_LIBS})
+   target_link_libraries(networkmanagement_configshell ${KDE4_KCMUTILS_LIBS})
 else (IS45)
-   target_link_libraries(networkmanagement_configshell knmui knminternals solidcontrol ${KDE4_KDEUI_LIBS} ${KDE4_KUTILS_LIBS})
+   target_link_libraries(networkmanagement_configshell ${KDE4_KUTILS_LIBS})
 endif (IS45)
 
 install(TARGETS networkmanagement_configshell DESTINATION ${LIBEXEC_INSTALL_DIR})
diff -pruN 0.1+git20110318.941cde9-2/settings/configshell/main.cpp 0.9~svngit20110408-0ubuntu2/settings/configshell/main.cpp
--- 0.1+git20110318.941cde9-2/settings/configshell/main.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/settings/configshell/main.cpp	2011-04-08 18:47:07.000000000 +0100
@@ -32,6 +32,7 @@ along with this program.  If not, see <h
 #include "connectioneditor.h"
 #include "connectionpersistence.h"
 #include "knmserviceprefs.h"
+#include "../config/mobileconnectionwizard.h"
 
 int main(int argc, char **argv)
 {
@@ -80,7 +81,27 @@ int main(int argc, char **argv)
     if (args->arg(0) == QLatin1String("create")) {
         if (args->isSet("type")) {
             const QString type = args->getOption("type");
-            QString cid = editor.addConnection(true, Knm::Connection::typeFromString(args->getOption("type")), specificArgs);
+            QString cid;
+            if (type == QLatin1String("cellular")) {
+                MobileConnectionWizard *mobileConnectionWizard = new MobileConnectionWizard();
+
+                if (mobileConnectionWizard->exec() == QDialog::Accepted) {
+                    if (mobileConnectionWizard->getError() == MobileProviders::Success) {
+                        cid = editor.addConnection(true, mobileConnectionWizard->type(), mobileConnectionWizard->args(), false);
+                    } else {
+                        cid = editor.addConnection(true, Knm::Connection::typeFromString(type), specificArgs);
+                    }
+                }
+                delete mobileConnectionWizard;
+            } else {
+                cid = editor.addConnection(true, Knm::Connection::typeFromString(type), specificArgs);
+            }
+
+            if (cid.isEmpty()) {
+                kDebug() << Knm::Connection::typeFromString(type) << "type connection cannot be created.";
+                return -1;
+            }
+
             QDBusInterface ref( "org.kde.kded", "/modules/knetworkmanager",
                                 "org.kde.knetworkmanagerd", QDBusConnection::sessionBus() );
 
diff -pruN 0.1+git20110318.941cde9-2/tests/CMakeLists.txt 0.9~svngit20110408-0ubuntu2/tests/CMakeLists.txt
--- 0.1+git20110318.941cde9-2/tests/CMakeLists.txt	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/tests/CMakeLists.txt	2011-04-15 15:26:54.000000000 +0100
@@ -26,4 +26,4 @@ target_link_libraries(testnewstorage knm
 kde4_add_executable(qdbusfornm qdbusfornm.cpp )
 target_link_libraries(qdbusfornm knminternals ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} 
                       ${KDE4_KDECORE_LIBS})
-
+install(TARGETS qdbusfornm ${INSTALL_TARGETS_DEFAULT_ARGS})
diff -pruN 0.1+git20110318.941cde9-2/vpnplugins/vpnc/vpncauth.cpp 0.9~svngit20110408-0ubuntu2/vpnplugins/vpnc/vpncauth.cpp
--- 0.1+git20110318.941cde9-2/vpnplugins/vpnc/vpncauth.cpp	2011-03-19 11:52:19.000000000 +0000
+++ 0.9~svngit20110408-0ubuntu2/vpnplugins/vpnc/vpncauth.cpp	2011-04-08 18:47:07.000000000 +0100
@@ -72,7 +72,6 @@ void VpncAuthWidget::readSecrets()
     }
     if (userType == QLatin1String(NM_VPN_PW_TYPE_SAVE)) {
         d->ui.leUserPassword->setText(secrets.value(QLatin1String(NM_VPNC_KEY_XAUTH_PASSWORD)).toString());
-        d->ui.leUserPassword->setEnabled(false);
     }
 
     groupType = secretsType.value(NM_VPNC_KEY_SECRET);
@@ -81,8 +80,12 @@ void VpncAuthWidget::readSecrets()
     }
     if (groupType == QLatin1String(NM_VPN_PW_TYPE_SAVE)) {
         d->ui.leGroupPassword->setText(secrets.value(QLatin1String(NM_VPNC_KEY_SECRET)).toString());
-        d->ui.leGroupPassword->setEnabled(false);
     }
+
+    if (d->ui.leUserPassword->text().isEmpty())
+        d->ui.leUserPassword->setFocus(Qt::OtherFocusReason);
+    else if (d->ui.leGroupPassword->text().isEmpty())
+        d->ui.leGroupPassword->setFocus(Qt::OtherFocusReason);
 }
 
 void VpncAuthWidget::writeConfig()
