diff --git a/.cvsignore b/.cvsignore
index b729cd9..6f22730 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1,2 @@
kdebase-workspace-4.4.3.tar.bz2
+kdebase-workspace-4.4.4.tar.bz2
diff --git a/kdebase-workspace-4.4.85-kdebug238325.patch b/kdebase-workspace-4.4.85-kdebug238325.patch
new file mode 100644
index 0000000..a6cb38d
--- /dev/null
+++ b/kdebase-workspace-4.4.85-kdebug238325.patch
@@ -0,0 +1,236 @@
+diff -up kdebase-workspace-4.4.85/libs/solid/control/ifaces/networkmanager.h.kde238325 kdebase-workspace-4.4.85/libs/solid/control/ifaces/networkmanager.h
+--- kdebase-workspace-4.4.85/libs/solid/control/ifaces/networkmanager.h.kde238325 2009-04-28 08:46:11.000000000 -0500
++++ kdebase-workspace-4.4.85/libs/solid/control/ifaces/networkmanager.h 2010-06-08 14:40:43.554897330 -0500
+@@ -164,6 +164,11 @@ namespace Ifaces
+ void wirelessHardwareEnabledChanged(bool enabled);
+
+ /**
++ * This signal is emitted when the status of overall networking changed
++ */
++ void networkingEnabledChanged(bool enabled);
++
++ /**
+ * This signal is emitted when the set of active connections changes
+ */
+ void activeConnectionsChanged();
+diff -up kdebase-workspace-4.4.85/libs/solid/control/networkmanager.cpp.kde238325 kdebase-workspace-4.4.85/libs/solid/control/networkmanager.cpp
+--- kdebase-workspace-4.4.85/libs/solid/control/networkmanager.cpp.kde238325 2009-07-17 16:44:59.000000000 -0500
++++ kdebase-workspace-4.4.85/libs/solid/control/networkmanager.cpp 2010-06-08 14:40:43.555907737 -0500
+@@ -56,6 +56,8 @@ Solid::Control::NetworkManagerPrivate::N
+ this, SIGNAL(wirelessEnabledChanged(bool)));
+ connect(managerBackend(), SIGNAL(wirelessHardwareEnabledChanged(bool)),
+ this, SIGNAL(wirelessHardwareEnabledChanged(bool)));
++ connect(managerBackend(), SIGNAL(networkingEnabledChanged(bool)),
++ this, SIGNAL(networkingEnabledChanged(bool)));
+ connect(managerBackend(), SIGNAL(activeConnectionsChanged()),
+ this, SIGNAL(activeConnectionsChanged()));
+ }
+diff -up kdebase-workspace-4.4.85/libs/solid/control/networkmanager.h.kde238325 kdebase-workspace-4.4.85/libs/solid/control/networkmanager.h
+--- kdebase-workspace-4.4.85/libs/solid/control/networkmanager.h.kde238325 2009-04-28 08:46:11.000000000 -0500
++++ kdebase-workspace-4.4.85/libs/solid/control/networkmanager.h 2010-06-08 14:40:43.555907737 -0500
+@@ -170,6 +170,10 @@ namespace Control
+ */
+ void wirelessHardwareEnabledChanged(bool enabled);
+ /**
++ * This signal is emitted when the status of overall networking changed
++ */
++ void networkingEnabledChanged(bool enabled);
++ /**
+ * This signal is emitted when the set of active connections changes
+ */
+ void activeConnectionsChanged();
+diff -up kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager-client.xml.kde238325 kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager-client.xml
+--- kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager-client.xml.kde238325 2008-05-15 13:37:15.000000000 -0500
++++ kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager-client.xml 2010-06-08 14:40:43.549905432 -0500
+@@ -39,6 +39,12 @@ object. dbus-glib generates the same bo
+
+
+
++
++
++
++
++
++
+
+
+
+diff -up kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager.xml.kde238325 kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager.xml
+--- kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager.xml.kde238325 2008-05-15 13:37:15.000000000 -0500
++++ kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/introspection/nm-manager.xml 2010-06-08 14:40:43.549905432 -0500
+@@ -80,7 +80,10 @@
+
+
+
+- Control the NetworkManager daemon's sleep state. When asleep, all interfaces that it manages are deactivated. When awake, devices are available to be activated.
++ Control the NetworkManager daemon's sleep state. When asleep, all
++ interfaces that it manages are deactivated. When awake, devices are
++ available to be activated. This command should not be called directly
++ by users or clients; it is intended for system suspend/resume tracking.
+
+
+
+@@ -89,6 +92,30 @@
+
+
+
++
++
++
++ Control whether overall networking is enabled or disabled. When
++ disabled, all interfaces that NM manages are deactivated. When enabled,
++ all managed interfaces are re-enabled and available to be activated.
++ This command should be used by clients that provide to users the ability
++ to enable/disable all networking.
++
++
++
++ If FALSE, indicates that all networking should be disabled. If TRUE,
++ indicates that NetworkManager should begin managing network devices.
++
++
++
++
++
++
++ Indicates if overall networking is currently enabled or not. See the
++ Enable() method.
++
++
++
+
+
+ Indicates if wireless is currently enabled or not.
+diff -up kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/nm-manager-clientinterface.h.kde238325 kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/nm-manager-clientinterface.h
+--- kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/nm-manager-clientinterface.h.kde238325 2009-06-17 15:06:03.000000000 -0500
++++ kdebase-workspace-4.4.85/solid/networkmanager-0.7/dbus/nm-manager-clientinterface.h 2010-06-08 14:40:43.551895445 -0500
+@@ -2,7 +2,7 @@
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -N -m -p nm-manager-clientinterface /space/kde/sources/trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/dbus/introspection/nm-manager-client.xml
+ *
+- * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
++ * qdbusxml2cpp is Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+@@ -39,6 +39,10 @@ public:
+ inline QList activeConnections() const
+ { return qvariant_cast< QList >(internalPropGet("ActiveConnections")); }
+
++ Q_PROPERTY(bool NetworkingEnabled READ networkingEnabled)
++ inline bool networkingEnabled() const
++ { return qvariant_cast< bool >(internalPropGet("NetworkingEnabled")); }
++
+ Q_PROPERTY(uint State READ state)
+ inline uint state() const
+ { return qvariant_cast< uint >(internalPropGet("State")); }
+@@ -68,6 +72,13 @@ public Q_SLOTS: // METHODS
+ return asyncCallWithArgumentList(QLatin1String("DeactivateConnection"), argumentList);
+ }
+
++ inline QDBusPendingReply<> Enable(bool enable)
++ {
++ QList argumentList;
++ argumentList << qVariantFromValue(enable);
++ return asyncCallWithArgumentList(QLatin1String("Enable"), argumentList);
++ }
++
+ inline QDBusPendingReply > GetDevices()
+ {
+ QList argumentList;
+diff -up kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager.cpp.kde238325 kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager.cpp
+--- kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager.cpp.kde238325 2010-02-09 08:30:15.000000000 -0600
++++ kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager.cpp 2010-06-08 14:40:43.552905013 -0500
+@@ -49,6 +49,14 @@ NMNetworkManager::NMNetworkManager(QObje
+ d->nmState = d->iface.state();
+ d->isWirelessHardwareEnabled = d->iface.wirelessHardwareEnabled();
+ d->isWirelessEnabled = d->iface.wirelessEnabled();
++ QVariant netEnabled = d->iface.property("NetworkingEnabled");
++ if (!netEnabled.isNull()) {
++ d->isNetworkingEnabled = netEnabled.toBool();
++ d->NetworkingEnabledPropertyAvailable = true;
++ } else {
++ d->isNetworkingEnabled = !(NM_STATE_UNKNOWN == d->nmState || NM_STATE_ASLEEP == d->nmState);
++ d->NetworkingEnabledPropertyAvailable = false;
++ }
+ connect( &d->iface, SIGNAL(DeviceAdded(const QDBusObjectPath &)),
+ this, SLOT(deviceAdded(const QDBusObjectPath &)));
+ connect( &d->iface, SIGNAL(DeviceRemoved(const QDBusObjectPath &)),
+@@ -138,7 +146,7 @@ QObject *NMNetworkManager::createNetwork
+ bool NMNetworkManager::isNetworkingEnabled() const
+ {
+ Q_D(const NMNetworkManager);
+- return !(NM_STATE_UNKNOWN == d->nmState || NM_STATE_ASLEEP == d->nmState);
++ return d->isNetworkingEnabled;
+ }
+
+ bool NMNetworkManager::isWirelessEnabled() const
+@@ -182,7 +190,14 @@ void NMNetworkManager::deactivateConnect
+ void NMNetworkManager::setNetworkingEnabled(bool enabled)
+ {
+ Q_D(NMNetworkManager);
+- d->iface.Sleep(!enabled);
++
++ QDBusPendingReply<> reply = d->iface.Enable(enabled);
++ reply.waitForFinished();
++ if (reply.isError()) {
++ kDebug(1441) << "Enable() D-Bus method not available:" << reply.error();
++ kDebug(1441) << "Calling Sleep() instead";
++ d->iface.Sleep(!enabled);
++ }
+ }
+
+ void NMNetworkManager::setWirelessEnabled(bool enabled)
+@@ -211,9 +226,19 @@ void NMNetworkManager::stateChanged(uint
+ {
+ Q_D(NMNetworkManager);
+ if ( d->nmState != state ) {
++
++ // When "NetworkingEnabled" property is not available, set isNetworkingEnabled flag and emit signal here.
++ // It has to be done before emitting statusChanged(), else it would cause infinite status switching.
++ if (!d->NetworkingEnabledPropertyAvailable) {
++ d->isNetworkingEnabled = !(NM_STATE_UNKNOWN == state || NM_STATE_ASLEEP == state);
++ emit networkingEnabledChanged(d->isNetworkingEnabled);
++ }
++
++ // set new state
+ d->nmState = state;
+ emit statusChanged( convertNMState( state ) );
+ }
++
+ }
+
+ void NMNetworkManager::propertiesChanged(const QVariantMap &properties)
+@@ -221,6 +246,7 @@ void NMNetworkManager::propertiesChanged
+ Q_D(NMNetworkManager);
+ kDebug(1441) << properties.keys();
+ QLatin1String activeConnKey("ActiveConnections");
++ QLatin1String netEnabledKey("NetworkingEnabled");
+ QLatin1String wifiHwKey("WirelessHardwareEnabled");
+ QLatin1String wifiEnabledKey("WirelessEnabled");
+ QVariantMap::const_iterator it = properties.find(activeConnKey);
+@@ -248,6 +274,12 @@ void NMNetworkManager::propertiesChanged
+ kDebug(1441) << wifiEnabledKey << d->isWirelessEnabled;
+ emit wirelessEnabledChanged(d->isWirelessEnabled);
+ }
++ it = properties.find(netEnabledKey);
++ if ( it != properties.end()) {
++ d->isNetworkingEnabled = it->toBool();
++ kDebug(1441) << netEnabledKey << d->isNetworkingEnabled;
++ emit networkingEnabledChanged(d->isNetworkingEnabled);
++ }
+ }
+
+ Solid::Networking::Status NMNetworkManager::convertNMState(uint state)
+diff -up kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager_p.h.kde238325 kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager_p.h
+--- kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager_p.h.kde238325 2008-06-10 06:41:03.000000000 -0500
++++ kdebase-workspace-4.4.85/solid/networkmanager-0.7/manager_p.h 2010-06-08 14:40:43.552905013 -0500
+@@ -35,6 +35,8 @@ public:
+ uint nmState;
+ bool isWirelessEnabled;
+ bool isWirelessHardwareEnabled;
++ bool isNetworkingEnabled;
++ bool NetworkingEnabledPropertyAvailable;
+ QStringList networkInterfaces;
+ QStringList activeConnections;
+ };
diff --git a/kdebase-workspace.spec b/kdebase-workspace.spec
index 829efdd..6f09800 100644
--- a/kdebase-workspace.spec
+++ b/kdebase-workspace.spec
@@ -16,7 +16,7 @@
Summary: KDE Workspace
Name: kdebase-workspace
Version: 4.4.4
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2
Group: User Interface/Desktops
@@ -65,6 +65,9 @@ Patch50: kdebase-workspace-4.3.3-kde#171685.patch
# FIXME: Not upstreamed yet --Ben (4.3.80)
#Patch51: http://bazaar.launchpad.net/~kubuntu-members/kdebase-workspace/ubuntu/annotate/head%3A/debian/patches/kubuntu_101_brightness_fn_keys_and_osd.diff
Patch51: kdebase-workspace-4.3.95-brightness_keys.patch
+# "Adding "Enable networking" button to knetworkmanager"
+# https://bugzilla.redhat.com/598765 https://bugs.kde.org/238325
+Patch52: kdebase-workspace-4.4.85-kdebug238325.patch
# 4.4 patches
@@ -326,8 +329,9 @@ Requires: akonadi
# upstream patches
%patch50 -p1 -b .kde#171685
-# kubuntu patches
%patch51 -p1 -b .brightness_keys
+%patch52 -p1 -b .kdebug238325
+
# 4.4 patches
@@ -681,6 +685,9 @@ fi
%changelog
+* Tue Jun 08 2010 Rex Dieter - 4.4.4-2
+- - Adding "Enable networking" button to knetworkmanager (rh#598765, kde#238325)
+
* Sun May 30 2010 Than Ngo - 4.4.4-1
- 4.4.4