--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/aclocal.m4
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/aclocal.m4
@@ -0,0 +1 @@
+# empty file
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/nm-applet.sgml
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/nm-applet.sgml
@@ -0,0 +1,100 @@
+ manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+
+ 8 February, 2006">
+
+
+ GNU">
+ GPL">
+]>
+
+
+
+
+ giskard@autistici.org;
+
+
+ Riccardo
+ Setti
+
+
+ 2006
+ Riccardo Setti
+
+ &date;
+
+
+ nm-applet
+ 1
+
+
+ &package;
+
+ Network management framework
+
+
+
+ &package;
+
+
+
+ DESCRIPTION
+
+ &package; is the GNOME front-end for NetworkManager
+ It is a systray applet which will display an icon in GNOME's notification area but it
+ also works for other desktop environments which provide a systray like KDE or XFCE.
+ &package; shows a list of available networks and allows you to easily switch between them. For encrypted networks it
+ will prompt you for the key/passphrase and you can optionally store them in the gnome-keyring so you don't have to
+ type them again.
+
+
+ SEE ALSO
+
+ NetworkManager (1). nm-vpn-properties (1)
+
+ More Information about NetworkManager can be found at
+ http://www.gnome.org/projects/NetworkManager/ .
+
+
+ AUTHOR
+
+ This manual page was written by Riccardo Setti giskard@autistici.org for
+ the Debian system.
+
+
+
+
+
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/compat
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/compat
@@ -0,0 +1 @@
+5
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/copyright
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/copyright
@@ -0,0 +1,59 @@
+This package was debianized by Anthony Mercatante on
+Fri, 15 Jun 2007 11:54:56 +0200.
+
+It was downloaded from http://ftp.acc.umu.se/pub/GNOME/sources/network-manager-applet/
+
+Upstream author:
+ Dan Williams
+
+Copyright holders:
+ Copyright 2004-2005 Red Hat, Inc.
+ Copyright 2006 Thiago Jung Bauermann
+ Copyright 1999, 2000 Eazel, Inc.
+ Copyright 2002 Anders Carlsson
+ Copyright 2006 Novell, Inc.
+ Copyright 2006 Thiago Jung Bauermann
+ Copyright 2001, 2002 Free Software Foundation
+
+License:
+All the software:
+
+ This package 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) any later version.
+
+ This package 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 package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+
+eggtrayicon.c, eggtrayicon.h:
+
+ 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 of the License, or (at your option) any later version.
+
+ 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 package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU Lesser General
+Public License can be found in `/usr/share/common-licenses/LGPL'.
+
+menu-items.c:
+ This also uses code from eel-vfs-extentions available under the LGPL
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/rules
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/rules
@@ -0,0 +1,100 @@
+#!/usr/bin/make -f
+
+DEB_SOURCE := $(shell dpkg-parsechangelog | grep Source: | sed -e 's/Source: //')
+DEB_VERSION := $(shell dpkg-parsechangelog | grep Version: | sed -e 's/Version: //')
+DEB_UPSTREAM_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/-[^-]*$$//')
+DEB_MAJOR_VERSION := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -e 's/git.*//')
+
+DEB_AUTO_UPDATE_LIBTOOL = pre
+DEB_AUTO_UPDATE_AUTOHEADER = 2.50
+DEB_AUTO_UPDATE_ACLOCAL = 1.9
+DEB_AUTO_UPDATE_AUTOMAKE = 1.9 -a -c -f
+DEB_AUTO_UPDATE_AUTOCONF = 2.50
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+include /usr/share/cdbs/1/class/gnome.mk
+
+DEB_CONFIGURE_EXTRA_FLAGS = \
+ --without-gnutls \
+ --with-nss \
+ --with-mbca \
+ $(NULL)
+
+GIT_URL := git://git.gnome.org/network-manager-applet
+GIT_BRANCH := "master"
+GIT_BRANCH_NAME := network-manager-applet
+
+ifneq (,$(LOCAL_BRANCH))
+LOCAL_REAL_BRANCH = $(realpath $(LOCAL_BRANCH))
+endif
+
+build/network-manager-gnome::
+ /usr/bin/docbook-to-man debian/nm-applet.sgml > debian/nm-applet.1
+
+common-binary-arch::
+ rm -rf debian/network-manager-gnome/usr/include/
+ cp -f debian/network-manager-gnome/usr/share/icons/hicolor/22x22/apps/nm-vpn-active-lock.png \
+ debian/network-manager-gnome/usr/share/icons/hicolor/22x22/apps/nm-vpn-lock.png
+ cp -f debian/network-manager-gnome/usr/share/icons/hicolor/22x22/apps/nm-device-wired.png \
+ debian/network-manager-gnome/usr/share/icons/hicolor/22x22/apps/nm-device-wired-autoip.png
+
+common-binary-post-install-arch::
+ find debian/network-manager-gnome/ -name \*.la -o -name \*.a | xargs rm > /dev/null || true
+
+clean::
+ rm -f po/*.gmo
+ rm -f debian/*.1
+ rm -f gtk-doc.make
+ echo "# empty file" > aclocal.m4
+ rm -f debian/icons/22/*.png
+
+pre-build::
+ intltoolize -f -c
+ set -e; cd debian/icons/22/; uudecode nm-secure-lock.png.uue
+ cp -rf $(CURDIR)/debian/icons/22 icons/
+
+GET_SOURCE = \
+ set -e; \
+ tmpdir=`mktemp -d -t`; \
+ cd $$tmpdir; \
+ echo "cloning upstream repository ..."; \
+ git clone $(if $(LOCAL_BRANCH),$(call LOCAL_REAL_BRANCH)/$(GIT_BRANCH_NAME),$(GIT_URL)) $(GIT_BRANCH_NAME); \
+ echo "getting specific upstream revision/tag: $(1)"; \
+ cd `ls | head -n 1`; git checkout -b orig $(1); \
+ commit_id=`git log -n1 --abbrev-commit | grep '^commit ' | sed -e 's/commit //' | sed -e 's/\.\.\.$$//'`; \
+ raw=`date --utc --date="$$(git log --pretty=fuller -n1 --date=rfc | grep CommitDate: | sed -e 's/CommitDate:[^0-9]*//')" "+%Y%m%dt%H%M%S"`; \
+ if echo $(1) | grep -q -c "orig" || echo $(DEB_VERSION) | grep -q -c "git"; \
+ then \
+ upstream_version=$(DEB_MAJOR_VERSION)git.$$raw.$$commit_id; \
+ else \
+ upstream_version=$(DEB_UPSTREAM_VERSION); \
+ fi; \
+ cd ..; tar --exclude=.git -czf $(CURDIR)/$(DEB_SOURCE)_$$upstream_version.orig.tar.gz `ls | head -n 1`; \
+ cd $(CURDIR); rm -rf $$tmpdir;
+
+get-current-source:: $(if $(LOCAL_BRANCH),update-local-branch)
+ set -e; if echo $(DEB_VERSION) | grep -q -c "git"; \
+ then \
+ git_version=`echo $(DEB_VERSION) | sed -e 's/^.*git\.*\([0-9t]*\)\.\(.*\)-.*$$/\2/g'`; \
+ else \
+ git_version=$(DEB_UPSTREAM_VERSION); \
+ fi; \
+ $(call GET_SOURCE, $$git_version, "current")
+
+get-orig-source:: $(if $(LOCAL_BRANCH),update-local-branch)
+ $(call GET_SOURCE, $(GIT_BRANCH), "orig")
+
+update-local-branch::
+ @echo "updating local branch ($(LOCAL_BRANCH))"
+ @set -e; if ! test -d $(LOCAL_BRANCH); then mkdir -p $(LOCAL_BRANCH); fi
+ @set -e; if ! test -d $(LOCAL_BRANCH)/$(GIT_BRANCH_NAME); then git clone $(GIT_URL) $(LOCAL_BRANCH)/$(GIT_BRANCH_NAME); fi
+ @set -e; cd $(LOCAL_BRANCH)/$(GIT_BRANCH_NAME); git pull -f
+ @echo "updated local branch ($(LOCAL_BRANCH))"
+
+get-snapshot-info:: $(if $(LOCAL_BRANCH),update-local-branch)
+ @set -e; \
+ git_version=`echo $(DEB_VERSION) | sed -e 's/^.*git\.*\([0-9t]*\)\.\(.*\)-.*$$/\2/g'`; \
+ cd $(LOCAL_BRANCH)/$(GIT_BRANCH_NAME); \
+ raw=`date --utc --date="$$(git log --pretty=fuller -n1 --date=rfc $$git_version | grep CommitDate: | sed -e 's/CommitDate:[^0-9]*//')" "+%Y-%m-%d %H:%M:%S (GMT)"`; \
+ git log -n1 $$git_version --format="%n%s%n%n * upstream snapshot $$raw%n + %H%n";
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/network-manager-applet.manpages
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/network-manager-applet.manpages
@@ -0,0 +1 @@
+debian/nm-applet.1
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/control
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/control
@@ -0,0 +1,55 @@
+Source: network-manager-applet
+Section: gnome
+Priority: optional
+Maintainer: Ubuntu Core Developers
+Original-Maintainer: Anthony Mercatante
+Build-Depends: debhelper (>= 5.0.37),
+ automake1.9,
+ libtool,
+ cdbs,
+ libgnome-keyring-dev,
+ libgnomeui-dev,
+ libpanel-applet2-dev,
+ libglade2-dev,
+ libgconf2-dev,
+ network-manager-dev (>= 0.8~a~git.20090923t064445),
+ libnm-util-dev (>= 0.8~a~git.20090923t064445),
+ libnm-glib-dev (>= 0.8~a~git.20090923t064445),
+ libiw-dev,
+ libxml-parser-perl,
+ docbook-to-man,
+ quilt,
+ libnotify-dev,
+ gnome-common,
+ libnss3-dev,
+ libpolkit-gobject-1-dev,
+ intltool,
+ libgnome-bluetooth-dev,
+ sharutils
+Standards-Version: 3.7.2
+Vcs-Bzr: https://code.launchpad.net/~network-manager/network-manager-applet/ubuntu.0.7.1
+
+Package: network-manager-gnome
+Architecture: any
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ network-manager (>= 0.8~a~git.20090831t055002),
+ gksu,
+ mobile-broadband-provider-info (>= 20090622)
+Recommends: notification-daemon
+Description: network management framework (GNOME frontend)
+ NetworkManager attempts to keep an active network connection available at all
+ times. It is intended only for the desktop use-case, and is not intended for
+ usage on servers. The point of NetworkManager is to make networking
+ configuration and setup as painless and automatic as possible. If using DHCP,
+ NetworkManager is _intended_ to replace default routes, obtain IP addresses
+ from a DHCP server, and change nameservers whenever it sees fit.
+ .
+ This package contains a systray applet for GNOME's notification area but it
+ also works for other desktop environments which provide a systray like KDE
+ or XFCE.
+ It displays the available networks and allows to easily switch between them.
+ For encrypted networks it will prompt the user for the key/passphrase and it
+ can optionally store them in the gnome-keyring.
+ .
+ Homepage: http://www.gnome.org/projects/NetworkManager/
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/changelog
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/changelog
@@ -0,0 +1,633 @@
+network-manager-applet (0.8~a~git.20090923t220421.1ac8ffd-0ubuntu3) karmic; urgency=low
+
+ * fix build failure because of compiler warnings due to uninitialized variable
+ - update debian/patches/nm08-applet-preview.patch
+
+ -- Alexander Sack Thu, 24 Sep 2009 17:40:06 +0200
+
+network-manager-applet (0.8~a~git.20090923t220421.1ac8ffd-0ubuntu2) karmic; urgency=low
+
+ * fix build failure caused by missing build-depend for uudecode
+ - update debian/control
+
+ -- Alexander Sack Thu, 24 Sep 2009 17:16:54 +0200
+
+network-manager-applet (0.8~a~git.20090923t220421.1ac8ffd-0ubuntu1) karmic; urgency=low
+
+ * upstream snapshot 2009-09-23 22:04:21 (GMT)
+ + 1ac8ffd41a2d162d23713415cec6c3e96fbc3c82
+ + new upstream UI for beta (prepatched) - LP: #435333
+ + mini-abi transition respin for libnm-glib-vpn rename fixes LP: #435888
+
+ [ Alexander Sack ]
+ * increase build-depend version requirements for network-manager bits to
+ latest upstream (>= 0.8~a~git.20090923t064445)
+ - update debian/control
+ * add new nm08 applet prepatch and add icons not shippable in diff manually
+ using uudecode
+ - add debian/patches/nm08-applet-preview.patch
+ - update debian/patches/series
+ - add debian/icons/22/nm-secure-lock.png.uue
+ - update debian/rules
+
+ [ Mathieu Trudel ]
+ * fix noisy output: use grep -q -c rather than just -c in GET_SOURCE etc.
+ - update debian/rules
+ * add get-snapshot-info rule
+ - update debian/rules
+ * make GET_SOURCE not go mad for git versions that use a different abbrev-id syntax
+ - update debian/rules
+ * drop ellipsize patch, addressed libhal issues, superseded by the use of udev
+ - delete debian/patches/lp341940_use_ellipsized_menu_entries.patch
+ - update debian/patches/series
+
+ -- Alexander Sack Thu, 24 Sep 2009 15:30:33 +0200
+
+network-manager-applet (0.8~a~git.20090913t161448.cc2f6be-0ubuntu1) karmic; urgency=low
+
+ * upstream snapshot 2009-09-13 16:14:48 (GMT)
+ + cc2f6bea12daec5f0caf535a3534f07ade5b5cf2
+
+ [ Alexander Sack ]
+ * build depend on libpolkit-gobject-1-dev instead of libpolkit-dbus-dev
+ - update debian/control
+
+ [ Tony Espy ]
+ * adjust patches for upstream code base
+ - update debian/patches/20_use_full_vpn_dialog_service_name_path.patch
+ - update debian/patches/lp328572_dxteam_connect_text.patch
+ - update debian/patches/lp337960_dxteam_notification_icon_names.diff
+ - update debian/patches/lp341684_device_sensitive_disconnect_notify.patch
+ * adjust build and runtime depends due to ABI changes in latest NM
+ - update debian/control
+
+ -- Alexander Sack Mon, 14 Sep 2009 11:32:57 +0200
+
+network-manager-applet (0.8~a~git.20090818t151413.a8b7eed-0ubuntu2) karmic; urgency=low
+
+ * fix lpia build problems; make find and remove of .a .la files more robust
+ in common-binary-post-install-arch:: target
+ - update debian/rules
+
+ -- Alexander Sack Fri, 21 Aug 2009 10:32:12 +0200
+
+network-manager-applet (0.8~a~git.20090818t151413.a8b7eed-0ubuntu1) karmic; urgency=low
+
+ [ Tony Espy ]
+ * upstream snapshot 2009-08-18 15:14:13 (GMT)
+ + a8b7eed3676e1154b4df1b3292eb414a3e9f2378
+ - includes WEP Auth dialog simplification and
+ minor IPv6 changes
+
+ [ Alexander Sack ]
+ * add LOCAL_BRANCH feature to play nicely with fta's build bot
+ - update rules
+ * add gnome-bluetooth support; build-depend on libgnome-bluetooth-dev and install
+ the gnome-bluetooth plugin to the gnome-bluetooth plugindir directory.
+ - update debian/control
+ * remove bluetooth plugin .la and .la files during post-install
+ - update debian/rules
+
+ -- Tony Espy Thu, 20 Aug 2009 11:48:20 -0400
+
+network-manager-applet (0.8~a~git.20090805t131328.d1edfce-0ubuntu1) karmic; urgency=low
+
+ [ Tony Espy ]
+ * upstream snapshot 2009-08-05 13:13:28 (GMT)
+ + d1edfced3ac4373019c097a4de5c7b97d0b2562a
+ * bump required version for networkmanager bits to >= 0.8~a~git.20090804t185522
+ - update control
+ * adjust patch for upstream code base
+ - update patches/lp341684_device_sensitive_disconnect_notify.patch
+ * re-work tarball generation code; added get-curr-source to
+ grab a specific version; get-orig-source now grabs the tip
+ of new variable GIT_BRANCH; adjusted changelog version to
+ new scheme.
+ - update rules
+
+ [ Alexander Sack ]
+ * prepare get-orig-source for daily ppa-scripts
+ - update rules
+ * adjust patches to changed upstream codebase
+ - update patches/lp341940_use_ellipsized_menu_entries.patch
+ * raise build requirements on network-manager parts to >= 0.8~
+ - update control
+
+ -- Tony Espy Thu, 06 Aug 2009 10:35:38 +0100
+
+network-manager-applet (0.7.1.git.2.8ed7940cd3-0ubuntu1~nm1) UNRELEASED; urgency=low
+
+ * upstream snapshot 2009-07-01 18:21:51 (GMT)
+ + commit 8ed7940cd3eb2158f95786e4a0cfbeea2035a870
+ * bump required version for networkmanager bits to >= 0.7.1.git.1
+ * drop mbca patch because upstream ships its own wizard now
+ - delete patches/add_libmbca_support.patch
+ - update patches/series
+ * drop libmbca-dev from build-depends as nm applet builds its own wizard
+ now; in turn depend binary package on mobile-broadband-provider-info >= 20090622
+ - update control
+ * adjust patches to changed upstream code base
+ - update patches/lp341940_use_ellipsized_menu_entries.patch
+ - update patches/lp337960_dxteam_notification_icon_names.diff
+ - update patches/lp341684_device_sensitive_disconnect_notify.patch
+ * drop libmbca0 from Recommends
+ - update control
+
+ -- Alexander Sack Tue, 02 Jun 2009 14:14:43 +0200
+
+network-manager-applet (0.7.1-0ubuntu1) karmic; urgency=low
+
+ * Upstream release 0.7.1
+ * drop patches applied upstream
+ - delete patches/fix_upstream_buildfailure.patch
+ - update patches/series
+ * adjust patches to new upstream code base
+ - update patches/lp341940_use_ellipsized_menu_entries.patch
+ * fix LP: #341940 - menu entries like device names can be overly long;
+ we fix this by using ellipsized labels with proper tooltip to allow
+ interested users to read the full text label
+ - add patches/lp341940_use_ellipsized_menu_entries.patch
+ - update patches/series
+
+ -- Alexander Sack Tue, 02 Jun 2009 13:20:07 +0200
+
+network-manager-applet (0.7.1~rc4.1-0ubuntu2) jaunty; urgency=low
+
+ * point Vcs-Bzr header to proper branch
+ - update control
+ * fix LP: #358526 - Notification shows wrong WiFi disconnected icon when
+ resuming from suspend; we use the proper generic disconnected icon
+ if we don't know which device type caused the "offline" event.
+ - add patches/lp358526_generic_disconnected_notification_icon.patch
+ - update patches/series
+
+ -- Alexander Sack Tue, 14 Apr 2009 12:52:44 +0200
+
+network-manager-applet (0.7.1~rc4.1-0ubuntu1) jaunty; urgency=low
+
+ * New upstream release 0.7.1 rc4
+ + svn-v3-trunk0:9c6bbc85-7128-0410-879a-9bbc9e4270e9:branches%2FNETWORKMANAGER_APPLET_0_7:1254
+ + drop upstreamed patches
+ - delete patches/lp331799_sensible_notify_actions.patch
+ - update patches/series
+ + adjust diverged patches to new upstream codebase
+ - update patches/add_libmbca_support.patch
+ - update patches/lp341684_device_sensitive_disconnect_notify.patch
+ + fix build failure with our gcc introduced upstream (string format issue)
+ - add patches/fix_upstream_buildfailure.patch
+ - update patches/series
+ * rename patch for disconnect states to match the bug it fixed (LP: #341684)
+ - rename patches/lpXXX_device_sensitive_disconnect_notify.patch =>
+ lp341684_device_sensitive_disconnect_notify.patch
+ - update patche/series
+ * fix LP: #348612 - Wired disconnect icon is wrong; we fix a typo in icon name
+ - update patches/lp341684_device_sensitive_disconnect_notify.patch
+ * fix LP: #354420 - offline notification should have NOTIFY_URGENCY_CRITICAL;
+ normal disconnect notifications get NOTIFY_URGENCY_NORMAL
+ - update patches/lp341684_device_sensitive_disconnect_notify.patch
+ * eliminate string changes from a few notification patches
+ - update patches/lp330571_dxteam_wired_connect_text.patch
+ - update patches/lp330608_dxteam_gsm_connect_text.patch
+ and adjust follow up patches
+ - update patches/lp337960_dxteam_notification_icon_names.diff
+
+ -- Alexander Sack Mon, 06 Apr 2009 13:25:39 +0200
+
+network-manager-applet (0.7.1~rc3-0ubuntu4) jaunty; urgency=low
+
+ * use the notification-gsm-disconnected icon name used by human theme for jaunty beta
+ - update patches/lpXXX_device_sensitive_disconnect_notify.patch
+
+ -- Alexander Sack Thu, 19 Mar 2009 17:02:01 +0100
+
+network-manager-applet (0.7.1~rc3-0ubuntu3) jaunty; urgency=low
+
+ * fix bug in lpXXX_device_sensitive_disconnect_notify.patch that made
+ disconnect events to not display a notification if the overall state
+ still was online
+ - update patches/lpXXX_device_sensitive_disconnect_notify.patch
+
+ -- Alexander Sack Thu, 19 Mar 2009 15:44:43 +0100
+
+network-manager-applet (0.7.1~rc3-0ubuntu2) jaunty; urgency=low
+
+ * flip title in wifi "Connection Established" notification bubble (LP: #338389)
+ - update patches/lp328572-dxteam-connect-text.patch
+ - update patches/lp337960_dxteam_notification_icon_names.diff
+ * add patch to support device sensitive disconnect/offline notifications;
+ this patch queues event from NMClient and NMDevice and then decides what
+ kind of disconnect happened and which device was reponsible.
+ - add patches/lpXXX_device_sensitive_disconnect_notify.patch
+ - update patches/series
+
+ -- Alexander Sack Thu, 19 Mar 2009 14:54:03 +0100
+
+network-manager-applet (0.7.1~rc3-0ubuntu1) jaunty; urgency=low
+
+ * new upstream RC 0.7.1rc3
+ + rev: 982
+ + revision-id: svn-v3-trunk0:9c6bbc85-7128-0410-879a-9bbc9e4270e9:branches%2FNETWORKMANAGER_APPLET_0_7:1212
+ + branch: http://bzr-playground.gnome.org/network-manager-applet/branches/NETWORKMANAGER_APPLET_0_7/
+ - update .bzr-builddeb/default.conf
+ * bump lower builds for network-manager build depends to >= 0.7.1~rc3
+ - update control
+ * fix LP: #328572 - Connecting/disconnecting notification changes; we apply the
+ the "Connecting" part of this patch, as the disconnecting part would require
+ string changes that need to be done upstream
+ - add patches/lp328572-dxteam-connect-text.patch
+ - update patches/series
+ * fix LP: #330571 - Wired connected message in nm-applet too long
+ - add patches/lp330571_dxteam_wired_connect_text.patch
+ - update patches/series
+ * fix LP: #330608 - GSM connection message too long in nm-applet
+ - add patches/lp330608_dxteam_gsm_connect_text.patch
+ - update patches/series
+ * fix LP: #337960 - nm-applet jaunty icon changes - brought to you by d(u)xteam;
+ we apply two patches: first patch changes the icon names referred to in notifications;
+ second patch ships fallback icons for those names within network-manager-gnome
+ package
+
+ -- Alexander Sack Thu, 05 Mar 2009 01:30:46 +0100
+
+network-manager-applet (0.7.1~rc1+20090219+bzr974-0ubuntu2) jaunty; urgency=low
+
+ * "Network Connections" settings entry does not appear in gnome-control-center;
+ we fix a typo in the .desktop file introduced by the xfce patch
+ - update patches/lp295788_xfce_menu_entry.patch
+
+ -- Alexander Sack Mon, 23 Feb 2009 15:45:07 +0100
+
+network-manager-applet (0.7.1~rc1+20090219+bzr974-0ubuntu1) jaunty; urgency=low
+
+ * new upstream snapshot 0.7.1rc1+ Feb 19, 2009
+ + rev: 974
+ + revision-id: svn-v3-trunk0:9c6bbc85-7128-0410-879a-9bbc9e4270e9:branches%2FNETWORKMANAGER_APPLET_0_7:1186
+ + branch: http://bzr-playground.gnome.org/network-manager-applet/branches/NETWORKMANAGER_APPLET_0_7/
+ - update .bzr-builddeb/default.conf
+ * rebase diverged patches
+ - update patches/add_libmbca_support.patch
+ * fix LP: #331799 - nm-applet must not send actions when notification server
+ does not support actions
+ - add patches/331799_sensible_notify_actions.patch
+ - update patches/series
+
+ -- Alexander Sack Thu, 19 Feb 2009 23:32:28 +0100
+
+network-manager-applet (0.7.1~20090213+bzr960-0ubuntu1) jaunty; urgency=low
+
+ * new upstream snapshot 0.7.1pre Feb 13, 2009
+ + rev: 960
+ + revision-id: svn-v3-trunk0:9c6bbc85-7128-0410-879a-9bbc9e4270e9:branches%2FNETWORKMANAGER_APPLET_0_7:1161
+ + branch: http://bzr-playground.gnome.org/network-manager-applet/branches/NETWORKMANAGER_APPLET_0_7/
+ * add config for bzr-builddeb meta information; we declare "merge" as default
+ operation mode and set the current top most upstream revision id
+ - add .bzr-builddeb/default.conf
+ * adjust patches to new upstream code
+ - update patches/add_libmbca_support.patch
+ * new tree layout doesn't have upstream sources; in turn we apply
+ autotools/cdbs integration magic on the fly now; this means we run
+ intltoolize in pre-build and create a dummy aclocal.m4 in clean::;
+ doing that allows us to use a bzr export from the upstream tree
+ instead of a make dist tarball
+ - update rules
+ * fix "(applet.c:1044):applet_open_mbca: code should not be reached"
+ warnings that get dumped to console; typos produced those warnings
+ even if nothing was wrong
+ - update patches/add_libmbca_support.patch
+ * bump lower bound for network-manager build-depends to >= 0.7.1~
+ - update control
+ * fix LP: #327427 - network manager applet should pop up wizard when
+ 3g device is plugged in and no configuration exists; we adjust the
+ mobile broadband patch to not show notification.
+ - update patches/add_libmbca_support.patch
+
+ -- Alexander Sack Tue, 17 Feb 2009 16:06:09 +0100
+
+network-manager-applet (0.7-0ubuntu2) jaunty; urgency=low
+
+ * fix LP: #295788 - Network Configuration menu item should also be
+ displayed in Xfce; we add XFCE to the OnlyShowIn .desktop field;
+ patch by Martin Mai
+ - add debian/patches/lp295788_xfce_menu_entry.patch
+ * fix LP: #327411 - network-manager: configure button(s) to create gsm
+ connections only works on first attempt; the assitants lists contains
+ UdiAssitants and not MbcaAssistant's
+ - update debian/patches/add_libmbca_support.patch
+
+ -- Alexander Sack Sun, 15 Feb 2009 02:29:53 +0100
+
+network-manager-applet (0.7-0ubuntu1) jaunty; urgency=low
+
+ * merge new upstrema release (0.7) from trunk branch (rev970)
+ * drop patches superseeded/applied upstream
+ - delete debian/patches/lp293749_better_prefix_netmask_ui.patch
+ - delete debian/patches/lp286421_fix_i18n_bug_286421.patch
+ - update debian/patches/series
+ * adjust patches to new upstream codebase (mostly accessor and
+ anti-bit-rotting measures)
+ - update debian/patches/add_libmbca_support.patch
+ - update debian/patches/20_use_full_vpn_dialog_service_name_path.patch
+ - update debian/patches/lp268803_xdg_autostart_gnome_xfce_only.patch
+ - update debian/patches/lp289466_always_show_tray_icon.patch
+ * add support for "easy" bzr builddeb
+ add .bzr-builddeb/default.conf
+ * bump minimum required version for network-manager-dev, libnm-glib-dev
+ and libnm-util-dev
+ - update debian/control
+
+ -- Alexander Sack Mon, 12 Jan 2009 13:31:17 +0100
+
+network-manager-applet (0.7~~svn20081020t000444-0ubuntu2) jaunty; urgency=low
+
+ * fix LP: #289466 - Network Manager 0.7 applet not Appearing if there are
+ managed entries in /etc/network/interfaces; we always call
+ applet_schedule_update_icon in client_init; also we also show the try when
+ there are error conditions (no NM running, no managed device)
+ - add debian/patches/lp289464_always_show_tray_icon.patch
+ - update debian/patches/series
+ * fix LP: #286421 - nm-connection-editor menu item untranslatable;
+ add i18n support to nm-connection-editor.desktop; patch by Timo Jyrinki
+
+ - add debian/patches/lp286421_fix_i18n_bug_286421.patch
+ - update debian/patches/series
+ * fix LP: #268803 - Ubuntu Intrepid: Both Knetworkmanager and Network
+ Manager load on startup; fix xdg autostart .desktop file to
+ "OnlyShowIn=GNOME;XFCE;"
+ - add debian/patches/lp268803_xdg_autostart_gnome_xfce_only.patch
+ - update debian/patches/series
+ * fix LP: #293749 - prefix vs. netmask translation inconsistencies in
+ connection-editor causes confusion; we cherry pick rev1009 from upstream
+ svn and backport that.
+ - add debian/patches/lp293749_better_prefix_netmask_ui.patch
+ - update debian/patches/series
+
+ -- Alexander Sack Mon, 01 Dec 2008 14:05:51 +0100
+
+network-manager-applet (0.7~~svn20081020t000444-0ubuntu1) intrepid; urgency=low
+
+ New upstream snapshot Mon 2008-10-20 00:04:44 +0000 (rev 819)
+ * support .cer and .crt extensions for wpa-eap (LP: #272185)
+ - update src/wireless-security/eap-method.c
+ * Don't translate widget labels
+ - update src/connection-editor/ce-page-ip4.glade
+ * updated translations for sv, es, hu, sk, nb, be, he
+
+ -- Alexander Sack Mon, 20 Oct 2008 16:30:10 +0200
+
+network-manager-applet (0.7~~svn20081015t194645-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Wed 2008-10-15 19:46:45 +0000 (rev 809)
+ * fix LP: #277084 - nm-applet confused by icon name changes during
+ hardy-intrepid upgrade; we ship icons used by NM 0.6 in the NM 0.7
+ to prevent this behaviour
+ - update debian/rules
+
+ -- Alexander Sack Thu, 16 Oct 2008 00:42:34 +0200
+
+network-manager-applet (0.7~~svn20081012t133407-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Sun 2008-10-12 13:34:07 +0000 (rev 805)
+ - fixes LP: #279387
+ * adjust patch to new upstream code
+ - update debian/patches/add_libmbca_support.patch
+
+ -- Alexander Sack Mon, 13 Oct 2008 21:24:14 +0200
+
+network-manager-applet (0.7~~svn20081005t082522-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Sun 2008-10-05 08:25:22 +0000 (rev 793)
+ * adjust mbca patch for changed upstream code base
+ - update debian/patches/add_libmbca_support.patch
+
+ -- Alexander Sack Mon, 06 Oct 2008 13:41:27 +0200
+
+network-manager-applet (0.7~~svn20080927t101113-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Sat 2008-09-27 10:11:13 +0000 (rev 776)
+ [ Antti Kaijanmäki ]
+ * added support for Mobile Broadband Configuration Assistant:
+ - added debian/patches/add_libmbca_support.patch
+ - updated debian/patches/series
+ - added libmbca-dev build-dependency to debian/control
+ - added --with-libmbca to DEB_CONFIGURE_EXTRA_FLAGS in debian/control
+
+ [ Alexander Sack ]
+ * refresh libmbca patch using quilt to prevent diff pollution in future.
+ (quilt refresh --diffstat --no-timestamps -U8)
+ - update debian/patches/add_libmbca_support.patch
+ * generate a uuid for NMSettingConnection which was introduced by recent
+ network manager dbus API changes.
+ - update debian/patches/add_libmbca_support.patch
+ * fix libmbca setting the dialup string instead of the proper number (*99#)
+ for GSM modems
+ - update debian/patches/add_libmbca_support.patch
+ * add new parameter to add_connection call in mbca patch and strip trailing
+ whitespaces uses quilt refresh
+ - update debian/patches/add_libmbca_support.patch
+ * bump build-depends and depends bar on network-manager bits to
+ >= 0.7~~svn20080928
+ - update debian/control
+ * explicitly set connection scope for mbca created connections to
+ NM_CONNECTION_SCOPE_USER
+ - update debian/patches/add_libmbca_support.patch
+ * add libmbca0 to Recommends
+ - update debian/control
+
+ -- Alexander Sack Mon, 29 Sep 2008 22:15:13 +0200
+
+network-manager-applet (0.7~~svn20080907t033843-0ubuntu2) intrepid; urgency=low
+
+ * new upstream snapshot Sun 2008-09-07 03:38:43 +0000 (rev 743)
+ * adjust versioned (build-)depends on network-manager packages to
+ >= 0.7~~svn20080908
+ - update debian/control
+
+ -- Alexander Sack Tue, 09 Sep 2008 16:42:23 +0200
+
+network-manager-applet (0.7~~svn20080817t183748-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Sun 2008-08-17 18:37:48 +0000 (rev 723)
+ * drop patches applied upstream:
+ - delete debian/patches/01_gcc43.patch
+ - update debian/patches/series
+ * bump build dependency versions on network-manager-dev and friends to (>=
+ 0.7~~svn20080812)
+ - update debian/control
+ * use full path for vpn auth-dialog's as provided by the .name key file in
+ $sysconfdir/NetworkManager/VPN/
+ - add debian/patches/20_use_full_vpn_dialog_service_name_path.patch
+ - update debian/patches/series
+
+ -- Alexander Sack Mon, 18 Aug 2008 21:32:15 +0200
+
+network-manager-applet (0.7~~svn20080721t051503-0ubuntu1) intrepid; urgency=low
+
+ * new upstream snapshot Mon 2008-07-21 05:15:03 +0000 (bzr trunk rev673)
+ * drop manual network config patches - default connection editor is NM
+ - delete debian/patches/01_static_network-admin.patch
+ - delete debian/patches/03_manual_config_available_when_connected.patch
+ - delete debian/patches/13_custom-network-admin.diff
+ - update debian/patches/series
+ * fix gcc 4.3 build failures
+ - add debian/patches/01_gcc43.patch
+ - update debian/patches/series
+ * higher network-manager versions for build and binary depends (>=
+ 0.7~~svn20080720t224551)
+ - update debian/control
+
+ -- Alexander Sack Thu, 07 Aug 2008 01:54:01 +0200
+
+network-manager-applet (0.7~~svn20080121t194048-0ubuntu0~pre6) hardy; urgency=low
+
+ * package 0.7 svn snapshot
+ * add automake1.9 to Build-Depends
+ - update debian/control
+ * add quilt to Build-Depends
+ - update debian/control
+ * add libtool to Build-Depends
+ - update debian/control
+ * add gnome-common to Build-Depends
+ - update debian/control
+ * add libnotify-dev to Build-Depends
+ - update debian/control
+ * add libgnutls-dev to Build-Depends and pass --with-gnutls and
+ --without-nss to configure explicitly
+ - update debian/control
+ - update debian/rules
+ * make libnm-util-dev build dependency versioned to only build against
+ versions that come with libnm-util1
+ - update debian/control
+ * include empty aclocal.m4 file to make cdbs trigger aclocal auto run
+ - add aclocal.m4
+ * switch to use quilt as patchsystem
+ - add debian/patches/series
+ - update debian/rules
+ * unfold Build-Depends and Depends in debian/control to improve legability
+ of patches
+ - update debian/control
+ * bump {Build-}Depends: version for network-manager and friends to a
+ reasonable value (>= 0.7~~svn20080121t191418+eni1-0ubuntu0~pre6)
+ - update debian/control
+ * remove debian/network-manager-gnome/usr/include on install
+ - update debian/rules
+
+ -- Alexander Sack Tue, 22 Jan 2008 17:56:32 +0000
+
+network-manager-applet (0.6.5-0ubuntu11) hardy; urgency=low
+
+ * apply patch to drop gnome-runtime dependencies (LP: #136945) - patch by Jani
+ Monoses
+ - add debian/patches/06_drop_libgnome.patch
+ - add debian/patches/99_autoconf_update.patch
+ * don't use gksu in hardy anymore - policy kit hooray! (LP: #176222)
+ - update debian/patches/01_static_network-admin.patch
+ - update debian/patches/13_custom-network-admin.diff
+
+ [ TJ ]
+ * debian/patches/15_lp124336_missing_prototype_causes_connect_to_other_networks_sigsegv.patch:
+ Fix SIGSEGV caused by pointer>int>pointer conversion on x86_64. (LP: #124336)
+
+ -- Alexander Sack Wed, 09 Jan 2008 13:15:10 +0100
+
+network-manager-applet (0.6.5-0ubuntu10) gutsy; urgency=low
+
+ * debian/control: add missing depends on gksu to allow manual
+ network-configuration even for minimal ubuntu flavours, like the UME.
+ * debian/patches/13_custom-network-admin.diff: use BINDIR "/" MANUAL_CONF_FILE
+ when its available on the system. (LP: #145625)
+ * debian/rules: apply previously forgotten hunk to install network manager
+ applet autostart file to /etc/xdg/autostart/ from LP: #95064.
+ * debian/patches/14_lp123808_dont_start_applet_on_ltsp_client.patch: don't
+ start nm-applet on ltsp client. (LP: #123808)
+
+ -- Alexander Sack Tue, 02 Oct 2007 20:58:18 +0200
+
+network-manager-applet (0.6.5-0ubuntu9) gutsy; urgency=low
+
+ * debian/patches/11_lp95064-enable-xdg-autostart-for-xfce.patch: enable
+ autostart of nm-applet for XFCE nm-applet.desktop. (LP: #95064)
+ * debian/patches/12_lp101978-connection-info-hide-on-delete-event.patch:
+ hide connection info on delete-event; patch by Dima Korzhevin.
+ (LP: #101978).
+
+ -- Alexander Sack Wed, 19 Sep 2007 18:24:28 +0200
+
+network-manager-applet (0.6.5-0ubuntu8) gutsy; urgency=low
+
+ * set Maintainer to ubuntu-core-dev
+ * add XS-Vcs-Bzr tag to point apt-get to the correct branch
+
+ -- Reinhard Tartler Thu, 26 Jul 2007 15:55:06 +0200
+
+network-manager-applet (0.6.5-0ubuntu7) gutsy; urgency=low
+
+ * add 04_nm-vpn-properties_path again, nm-vpn-properties has been moved
+ back again. LP: #127844
+
+ -- Reinhard Tartler Thu, 26 Jul 2007 11:05:45 +0200
+
+network-manager-applet (0.6.5-0ubuntu6) gutsy; urgency=low
+
+ * remove 04_nm-vpn-properties_path.patch. nm-vpn-properties now
+ installed in /usr/bin again.
+
+ -- Reinhard Tartler Thu, 05 Jul 2007 10:25:15 +0200
+
+network-manager-applet (0.6.5-0ubuntu5) gutsy; urgency=low
+
+ * debian/control:
+ - Build-Depends on intltool so the translation template updated
+ (LP: #122547)
+
+ -- Sebastien Bacher Thu, 28 Jun 2007 21:32:29 +0200
+
+network-manager-applet (0.6.5-0ubuntu4) gutsy; urgency=low
+
+ * debian/patches/01_static_network-admin.patch: fix by Peter
+ Clifton; adding NULL check to stop nm-applet from crashing
+ and make encrypted wifi work. (LP: #121228)
+
+ -- Alexander Sack Wed, 27 Jun 2007 12:34:03 +0200
+
+network-manager-applet (0.6.5-0ubuntu3) gutsy; urgency=low
+
+ * Re-import applet patches from network-manager
+
+ * debian/control: tighten build-depends on network-manager to
+ >= 0.6.5-0ubuntu3
+
+ * Make patches apply against applet sources + drop patches that have
+ been applied upstream:
+ - debian/patches/01_static_network-admin.patch: fix diff path for
+ new source layout: gnome/applet -> src/ + update line numbers.
+ - debian/patches/02_manual_means_always_online.diff: fix diff path
+ for new source layout: gnome/applet -> src/ + update line numbers;
+ drop diffs for sources not in this tarball: src/NetworkManagerDbus.c,
+ src/NetworkManagerMain.h and src/nm-device.c.
+ - debian/patches/03_manual_config_available_when_connected.patch: fix
+ diff path for new source layout: gnome/applet -> src/ + update line
+ numbers.
+ - debian/patches/04_nm-vpn-properties_path.patch: nm-vpn-properties
+ are shipped in network-manager pkglibdir
+ - debian/patches/10-po_fr.patch: all but one translation fixes were applied
+ upstream.
+
+ -- Alexander Sack Tue, 26 Jun 2007 10:52:45 +0200
+
+network-manager-applet (0.6.5-0ubuntu2) gutsy; urgency=low
+
+ * Added missing dep network-manager
+
+ -- Anthony Mercatante Fri, 22 Jun 2007 18:24:22 +0200
+
+network-manager-applet (0.6.5-0ubuntu1) gutsy; urgency=low
+
+ * Initial release
+ * Added 21_manual_means_always_online.diff to "patches-not-applied"
+ The gnome applet has been splitted from n-m code, and patch needs
+ to be rewritten
+ * Added 04_nm-vpn-properties_path.patch
+ Fixes path to nm-vpn-properties according to the changes we've done
+ to network-manager package due to bad source splitting
+
+ -- Anthony Mercatante Fri, 15 Jun 2007 12:46:22 +0200
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/icons/22/nm-secure-lock.png.uue
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/icons/22/nm-secure-lock.png.uue
@@ -0,0 +1,11 @@
+begin 644 nm-secure-lock.png
+MB5!.1PT*&@H````-24A$4@```!8````6"`8```#$M&P[`````7-21T(`KLX<
+MZ0````9B2T=$`/\`_P#_H+VGDP````EP2%ES```-UP``#=`````=T
+M24U%!]D)$0P3'_FM`,\```#/241!5#C+[=`[BL)0&(;A]\38!-&`*,1&74`8
+MM1DFG3MR*>[&3A%$T<)+:R':3(@S\0+>=8S-*`I6GMCE*;\#+S]'\*_5'7C<
+M^2I\""0HUV@JKA,)*WB[-
++
++
+\ No newline at end of file
+
+=== added file 'icons/scalable/notification-network-ethernet-connected.svg'
+--- old/icons/scalable/notification-network-ethernet-connected.svg 1970-01-01 00:00:00 +0000
++++ new/icons/scalable/notification-network-ethernet-connected.svg 2009-03-04 22:01:48 +0000
+@@ -0,0 +1,1015 @@
++
++
++
++
+
+=== added file 'icons/scalable/notification-network-wireless-full.svg'
+--- old/icons/scalable/notification-network-wireless-full.svg 1970-01-01 00:00:00 +0000
++++ new/icons/scalable/notification-network-wireless-full.svg 2009-03-04 21:54:28 +0000
+@@ -0,0 +1,41 @@
++
++
++
+\ No newline at end of file
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/20_use_full_vpn_dialog_service_name_path.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/20_use_full_vpn_dialog_service_name_path.patch
@@ -0,0 +1,44 @@
+
+We dont want LIBEXECDIR shuffeling. The vpn daemon building system knows
+better where the auth-dialog will be installed to; thus we just use the
+full path stored in VPN/*.name files.
+
+--
+
+=== modified file 'src/vpn-password-dialog.c'
+---
+ src/vpn-password-dialog.c | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/vpn-password-dialog.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/vpn-password-dialog.c 2009-08-31 17:32:43.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/vpn-password-dialog.c 2009-08-31 17:33:41.000000000 -0400
+@@ -141,16 +141,6 @@
+ service);
+ gtk_window_present (GTK_WINDOW (dialog));
+ g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog);
+- } else {
+- char *basename;
+-
+- /* Remove any path component, then reconstruct path to the auth
+- * dialog in LIBEXECDIR.
+- */
+- basename = g_path_get_basename (prog);
+- g_free (prog);
+- prog = g_strdup_printf ("%s/%s", LIBEXECDIR, basename);
+- g_free (basename);
+ }
+
+ return prog;
+@@ -262,8 +252,8 @@
+ g_set_error (&error,
+ NM_SETTINGS_INTERFACE_ERROR,
+ NM_SETTINGS_INTERFACE_ERROR_INTERNAL_ERROR,
+- "%s.%d (%s): couldn't run VPN auth dialog.",
+- __FILE__, __LINE__, __func__);
++ "%s.%d (%s): couldn't run VPN auth dialog. (cmd=%s)",
++ __FILE__, __LINE__, __func__, argv[0]);
+ goto out;
+ }
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp358526_generic_disconnected_notification_icon.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp358526_generic_disconnected_notification_icon.patch
@@ -0,0 +1,27 @@
+---
+ src/applet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: network-manager-applet-0.7.1~rc4.1/src/applet.c
+===================================================================
+--- network-manager-applet-0.7.1~rc4.1.orig/src/applet.c
++++ network-manager-applet-0.7.1~rc4.1/src/applet.c
+@@ -1674,17 +1674,17 @@
+ break;
+ case NM_DEVICE_TYPE_WIFI:
+ info->icon = "notification-network-wireless-disconnected";
+ break;
+ case NM_DEVICE_TYPE_GSM:
+ info->icon = "notification-gsm-disconnected";
+ break;
+ default:
+- info->icon = "nm-no-connection";
++ info->icon = "notification-network-disconnected";
+ break;
+ }
+ g_debug("going for offline with icon: %s", info->icon);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp337960_dxteam_notification_icon_names.diff
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp337960_dxteam_notification_icon_names.diff
@@ -0,0 +1,55 @@
+=== modified file 'src/applet-device-gsm.c'
+---
+ src/applet-device-gsm.c | 2 +-
+ src/applet-device-wifi.c | 4 ++--
+ src/applet-device-wired.c | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-gsm.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet-device-gsm.c 2009-08-31 19:42:45.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-gsm.c 2009-08-31 19:43:34.000000000 -0400
+@@ -353,7 +353,7 @@
+ applet_do_notify_with_pref (applet,
+ str ? str : _("GSM network."),
+ _("Connection Established"),
+- "nm-device-wwan",
++ "notification-gsm-high",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+ }
+ }
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet-device-wifi.c 2009-08-31 19:42:49.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c 2009-08-31 19:44:48.000000000 -0400
+@@ -981,7 +981,7 @@
+ NOTIFY_URGENCY_LOW,
+ _("Wireless Networks Available"),
+ _("Click on this icon to connect to a wireless network"),
+- "nm-device-wireless",
++ "notification-network-wireless-full",
+ "dont-show",
+ _("Don't show this message again"),
+ wifi_available_dont_show_cb,
+@@ -1189,7 +1189,7 @@
+ applet_do_notify_with_pref (applet,
+ esc_ssid ? esc_ssid : _("(none)"),
+ _("Connection Established"),
+- "nm-device-wireless",
++ "notification-network-wireless-full",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+ g_free (esc_ssid);
+ }
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wired.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet-device-wired.c 2009-08-31 19:42:52.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wired.c 2009-08-31 19:45:50.000000000 -0400
+@@ -263,7 +263,7 @@
+ applet_do_notify_with_pref (applet,
+ str ? str : _("Wired network"),
+ _("Connection Established"),
+- "nm-device-wired",
++ "notification-network-ethernet-connected",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+ }
+ }
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp328572-dxteam-connect-text.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp328572-dxteam-connect-text.patch
@@ -0,0 +1,34 @@
+=== modified file 'src/applet-device-wifi.c'
+---
+ src/applet-device-wifi.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet-device-wifi.c 2009-08-31 19:30:00.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c 2009-08-31 19:32:23.000000000 -0400
+@@ -1164,7 +1164,6 @@
+ {
+ NMSettingsConnectionInterface *connection;
+ NMAccessPoint *new = NULL;
+- char *msg;
+ char *esc_ssid = NULL;
+
+ new = update_active_ap (device, new_state, applet);
+@@ -1187,12 +1186,11 @@
+ nm_settings_connection_interface_update (connection, bssid_update_cb, NULL);
+ }
+
+- msg = g_strdup_printf (_("You are now connected to the wireless network '%s'."),
+- esc_ssid ? esc_ssid : _("(none)"));
+- applet_do_notify_with_pref (applet, _("Connection Established"),
+- msg, "nm-device-wireless",
++ applet_do_notify_with_pref (applet,
++ esc_ssid ? esc_ssid : _("(none)"),
++ _("Connection Established"),
++ "nm-device-wireless",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+- g_free (msg);
+ g_free (esc_ssid);
+ }
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/series
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/series
@@ -0,0 +1,13 @@
+20_use_full_vpn_dialog_service_name_path.patch
+lp289466_always_show_tray_icon.patch
+lp268803_xdg_autostart_gnome_xfce_only.patch
+lp295788_xfce_menu_entry.patch
+lp328572-dxteam-connect-text.patch
+lp330571_dxteam_wired_connect_text.patch
+lp330608_dxteam_gsm_connect_text.patch
+lp337960_dxteam_notification_icon_names.diff
+lp337960_dxteam_notification_icon_names_part2-images.diff
+lp341684_device_sensitive_disconnect_notify.patch
+lp358526_generic_disconnected_notification_icon.patch
+
+nm08-applet-preview.patch
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp341684_device_sensitive_disconnect_notify.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp341684_device_sensitive_disconnect_notify.patch
@@ -0,0 +1,218 @@
+=== modified file 'src/applet-device-wifi.c'
+---
+ src/applet-device-wifi.c | 4 +
+ src/applet.c | 137 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ src/applet.h | 3 +
+ 3 files changed, 139 insertions(+), 5 deletions(-)
+
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet-device-wifi.c 2009-08-31 18:35:03.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet-device-wifi.c 2009-08-31 18:37:52.000000000 -0400
+@@ -1177,8 +1177,10 @@
+ if (new) {
+ const GByteArray *ssid = nm_access_point_get_ssid (new);
+
+- if (ssid)
++ if (ssid) {
+ esc_ssid = nm_utils_ssid_to_utf8 ((const char *) ssid->data, ssid->len);
++ g_object_set_data_full (G_OBJECT(device), "canonical-last-essid", g_strdup (esc_ssid), (GDestroyNotify) g_free);
++ }
+
+ /* Save this BSSID to seen-bssids list */
+ connection = applet_get_exported_connection_for_device (device, applet);
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet.c
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet.c 2009-08-31 18:35:15.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet.c 2009-08-31 18:49:48.000000000 -0400
+@@ -41,6 +41,7 @@
+ #include
+
+ #include
++#include
+ #include
+ #include
+ #include
+@@ -75,6 +76,19 @@
+
+ G_DEFINE_TYPE(NMApplet, nma, G_TYPE_OBJECT)
+
++struct _OfflineNotificationContextInfo {
++ NMState state;
++ NMDeviceState device_state;
++ NMDeviceStateReason device_state_reason;
++ NMDeviceType device_type;
++ gchar* title;
++ const gchar* text;
++ const gchar* icon;
++ NotifyUrgency urgency;
++};
++
++typedef struct _OfflineNotificationContextInfo OfflineNotificationContextInfo;
++
+ static NMActiveConnection *
+ applet_get_best_activating_connection (NMApplet *applet, NMDevice **device)
+ {
+@@ -1656,6 +1670,59 @@
+ return NULL;
+ }
+
++static gboolean
++select_merged_notification_text (OfflineNotificationContextInfo *info)
++{
++ info->urgency = NOTIFY_URGENCY_LOW;
++ /* only do something if this is about full offline state */
++ if(info->state != NM_STATE_UNKNOWN || info->device_state != NM_STATE_UNKNOWN) {
++ info->urgency = NOTIFY_URGENCY_NORMAL;
++ if (!info->title)
++ info->title = g_strdup (_("Network"));
++ if (info->state == NM_STATE_DISCONNECTED || info->state == NM_STATE_ASLEEP) {
++ info->urgency = NOTIFY_URGENCY_CRITICAL;
++ info->text = _("Disconnected - you are now offline");
++ } else
++ info->text = _("Disconnected");
++
++ switch (info->device_type) {
++ case NM_DEVICE_TYPE_ETHERNET:
++ info->icon = "notification-network-ethernet-disconnected";
++ break;
++ case NM_DEVICE_TYPE_WIFI:
++ info->icon = "notification-network-wireless-disconnected";
++ break;
++ case NM_DEVICE_TYPE_GSM:
++ info->icon = "notification-gsm-disconnected";
++ break;
++ default:
++ info->icon = "nm-no-connection";
++ break;
++ }
++ g_debug("going for offline with icon: %s", info->icon);
++ return TRUE;
++ }
++ return FALSE;
++}
++
++static gboolean
++foo_online_offline_deferred_notify (gpointer user_data)
++{
++ NMApplet *applet = NM_APPLET (user_data);
++ OfflineNotificationContextInfo *info = applet->notification_queue_data;
++ if(select_merged_notification_text (info))
++ applet_do_notify (applet, info->urgency, info->title, info->text, info->icon, NULL, NULL, NULL, applet);
++ else
++ g_debug("no notification because merged found that we have nothing to say (e.g. not offline)");
++ if (info->title)
++ g_free (info->title);
++ info->title = NULL;
++ g_free (applet->notification_queue_data);
++ applet->notification_queue_data = NULL;
++ applet->deferred_id = 0;
++ return FALSE;
++}
++
+ static void
+ applet_common_device_state_changed (NMDevice *device,
+ NMDeviceState new_state,
+@@ -1665,8 +1732,57 @@
+ {
+ NMConnection *connection;
+ NMActiveConnection *active = NULL;
++ g_debug("applet_common_device_state_changed");
+
+ switch (new_state) {
++ case NM_DEVICE_STATE_FAILED:
++ case NM_DEVICE_STATE_DISCONNECTED:
++ case NM_DEVICE_STATE_UNMANAGED:
++ case NM_DEVICE_STATE_UNAVAILABLE:
++ {
++ if (old_state != NM_DEVICE_STATE_FAILED &&
++ old_state != NM_DEVICE_STATE_UNKNOWN &&
++ old_state != NM_DEVICE_STATE_DISCONNECTED &&
++ old_state != NM_DEVICE_STATE_UNMANAGED &&
++ old_state != NM_DEVICE_STATE_UNAVAILABLE) {
++ OfflineNotificationContextInfo *info = applet->notification_queue_data;
++ if (!info) {
++ info = g_new0(OfflineNotificationContextInfo, 1);
++ applet->notification_queue_data = info;
++ }
++
++ info->device_state = new_state;
++ info->device_state_reason = reason;
++ if (info->title) {
++ g_free(info->title);
++ info->title = NULL;
++ }
++ if (NM_IS_DEVICE_WIFI (device)) {
++ info->device_type = NM_DEVICE_TYPE_WIFI;
++ info->title = g_strdup(g_object_get_data (G_OBJECT(device), "canonical-last-essid"));
++ if (!info->title)
++ info->title = g_strdup (_("Wireless network"));
++ } else if (NM_IS_DEVICE_ETHERNET (device)) {
++ info->device_type = NM_DEVICE_TYPE_ETHERNET;
++ info->title = g_strdup(_("Wired network"));
++ } else if (NM_IS_GSM_DEVICE (device)) {
++ info->device_type = NM_DEVICE_TYPE_GSM;
++ info->title = g_strdup (_("GSM network"));
++ } else {
++ info->device_type = NM_DEVICE_TYPE_UNKNOWN;
++ info->title = g_strdup (_("Network"));
++ }
++
++ if (applet->deferred_id)
++ g_source_remove (applet->deferred_id);
++ applet->deferred_id = g_timeout_add (1000, foo_online_offline_deferred_notify, applet);
++
++ clear_animation_timeout (applet);
++ } else {
++ g_debug ("old state indicates that this was not a disconnect %d", old_state);
++ }
++ break;
++ }
+ case NM_DEVICE_STATE_PREPARE:
+ case NM_DEVICE_STATE_CONFIG:
+ case NM_DEVICE_STATE_NEED_AUTH:
+@@ -1734,13 +1850,26 @@
+ {
+ NMApplet *applet = NM_APPLET (user_data);
+
++ g_debug("foo_client_state_changed_cb");
+ switch (nm_client_get_state (client)) {
+ case NM_STATE_DISCONNECTED:
+- applet_do_notify_with_pref (applet, _("Disconnected"),
+- _("The network connection has been disconnected."),
+- "nm-no-connection",
+- PREF_DISABLE_DISCONNECTED_NOTIFICATIONS);
++ case NM_STATE_ASLEEP:
++ {
++ OfflineNotificationContextInfo *info = applet->notification_queue_data;
++ if (!info) {
++ info = g_new0(OfflineNotificationContextInfo, 1);
++ applet->notification_queue_data = info;
++ }
++
++ info->state = nm_client_get_state (client);
++ select_merged_notification_text (info);
++
++ if (applet->deferred_id)
++ g_source_remove (applet->deferred_id);
++ applet->deferred_id = g_timeout_add (1000, foo_online_offline_deferred_notify, applet);
++
+ /* Fall through */
++ }
+ default:
+ break;
+ }
+Index: network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet.h
+===================================================================
+--- network-manager-applet-0.8~a~git.20090830t224938.0334788.orig/src/applet.h 2009-08-31 18:35:25.000000000 -0400
++++ network-manager-applet-0.8~a~git.20090830t224938.0334788/src/applet.h 2009-08-31 18:47:50.000000000 -0400
+@@ -145,6 +145,9 @@
+ GladeXML * info_dialog_xml;
+ NotifyNotification* notification;
+ gboolean notify_with_actions;
++
++ gpointer notification_queue_data;
++ guint deferred_id;
+ } NMApplet;
+
+ typedef void (*AppletNewAutoConnectionCallback) (NMConnection *connection,
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp330608_dxteam_gsm_connect_text.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp330608_dxteam_gsm_connect_text.patch
@@ -0,0 +1,33 @@
+=== modified file 'src/applet-device-gsm.c'
+--- a/src/applet-device-gsm.c 2009-02-17 16:32:22 +0000
++++ b/src/applet-device-gsm.c 2009-02-17 16:36:47 +0000
+@@ -287,24 +287,19 @@
+ if (new_state == NM_DEVICE_STATE_ACTIVATED) {
+ NMConnection *connection;
+ NMSettingConnection *s_con = NULL;
+- char *str = NULL;
++ const char *str = NULL;
+
+ connection = applet_find_active_connection_for_device (device, applet, NULL);
+ if (connection) {
+- const char *id;
+-
+ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+- if (id)
+- str = g_strdup_printf (_("You are now connected to '%s'."), id);
++ str = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+ }
+
+ applet_do_notify_with_pref (applet,
+- _("Connection Established"),
+- str ? str : _("You are now connected to the GSM network."),
++ str ? str : _("GSM network."),
++ _("Connection Established"),
+ "nm-device-wwan",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+- g_free (str);
+ }
+ }
+
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp330571_dxteam_wired_connect_text.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp330571_dxteam_wired_connect_text.patch
@@ -0,0 +1,32 @@
+=== modified file 'src/applet-device-wired.c'
+--- a/src/applet-device-wired.c 2009-01-12 17:39:22 +0000
++++ b/src/applet-device-wired.c 2009-02-17 15:29:30 +0000
+@@ -253,23 +253,19 @@
+ if (new_state == NM_DEVICE_STATE_ACTIVATED) {
+ NMConnection *connection;
+ NMSettingConnection *s_con = NULL;
+- char *str = NULL;
++ const char *str = NULL;
+
+ connection = applet_find_active_connection_for_device (device, applet, NULL);
+ if (connection) {
+- const char *id;
+ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- id = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+- if (id)
+- str = g_strdup_printf (_("You are now connected to '%s'."), id);
++ str = s_con ? nm_setting_connection_get_id (s_con) : NULL;
+ }
+
+ applet_do_notify_with_pref (applet,
+- _("Connection Established"),
+- str ? str : _("You are now connected to the wired network."),
++ str ? str : _("Wired network"),
++ _("Connection Established"),
+ "nm-device-wired",
+ PREF_DISABLE_CONNECTED_NOTIFICATIONS);
+- g_free (str);
+ }
+ }
+
+
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp289466_always_show_tray_icon.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp289466_always_show_tray_icon.patch
@@ -0,0 +1,65 @@
+=== modified file 'src/applet.c'
+---
+ src/applet.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+Index: ubuntu.0.7/src/applet.c
+===================================================================
+--- ubuntu.0.7.orig/src/applet.c
++++ ubuntu.0.7/src/applet.c
+@@ -1719,16 +1719,18 @@
+ G_CALLBACK (foo_device_added_cb),
+ applet);
+ g_signal_connect (applet->nm_client, "notify::manager-running",
+ G_CALLBACK (foo_manager_running_cb),
+ applet);
+
+ if (nm_client_get_manager_running (applet->nm_client))
+ g_idle_add (foo_set_initial_state, applet);
++
++ applet_schedule_update_icon (applet);
+ }
+
+ static GdkPixbuf *
+ applet_common_get_device_icon (NMDeviceState state, NMApplet *applet)
+ {
+ GdkPixbuf *pixbuf = NULL;
+ int stage = -1;
+
+@@ -1825,16 +1827,18 @@
+ pixbuf = dclass->get_icon (device, state, connection, tip, applet);
+ if (!*tip)
+ *tip = get_tip_for_device_state (device, state, connection);
+ }
+
+ out:
+ if (!pixbuf)
+ pixbuf = applet_common_get_device_icon (state, applet);
++ if (!pixbuf)
++ pixbuf = applet->no_connection_icon;
+ return pixbuf;
+ }
+
+ static char *
+ get_tip_for_vpn (NMActiveConnection *active, NMVPNConnectionState state, NMApplet *applet)
+ {
+ NMConnectionScope scope;
+ char *tip = NULL;
+@@ -1893,17 +1897,16 @@
+ GString *tip;
+ NMVPNConnectionState vpn_state = NM_VPN_SERVICE_STATE_UNKNOWN;
+ gboolean nm_running;
+ NMActiveConnection *active_vpn = NULL;
+
+ applet->update_icon_id = 0;
+
+ nm_running = nm_client_get_manager_running (applet->nm_client);
+- gtk_status_icon_set_visible (applet->status_icon, nm_running);
+
+ /* Handle device state first */
+
+ state = nm_client_get_state (applet->nm_client);
+ if (!nm_running)
+ state = NM_STATE_UNKNOWN;
+
+ switch (state) {
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp295788_xfce_menu_entry.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp295788_xfce_menu_entry.patch
@@ -0,0 +1,8 @@
+--- network-manager-applet-0.7.orig/nm-connection-editor.desktop.in 2009-01-13 14:42:59.000000000 -0500
++++ network-manager-applet-0.7/nm-connection-editor.desktop.in 2009-01-13 14:43:32.000000000 -0500
+@@ -9,4 +9,4 @@
+ X-GNOME-Bugzilla-Product=NetworkManager
+ X-GNOME-Bugzilla-Component=general
+ Categories=GNOME;GTK;Settings;X-SuSE-ControlCenter-System;X-GNOME-NetworkSettings;
+-OnlyShowIn=GNOME;
++OnlyShowIn=GNOME;Xfce;
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/nm08-applet-preview.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/nm08-applet-preview.patch
@@ -0,0 +1,1390 @@
+diff --git a/icons/22/Makefile.am b/icons/22/Makefile.am
+index 460d472..66417b7 100644
+--- a/icons/22/Makefile.am
++++ b/icons/22/Makefile.am
+@@ -56,7 +57,8 @@ icon_DATA = \
+ nm-vpn-connecting12.png \
+ nm-vpn-connecting13.png \
+ nm-vpn-connecting14.png \
+- nm-vpn-active-lock.png
++ nm-vpn-active-lock.png \
++ nm-secure-lock.png
+
+ EXTRA_DIST = $(icon_DATA)
+
+diff --git a/icons/22/nm-secure-lock.png b/icons/22/nm-secure-lock.png
+new file mode 100644
+index 0000000..da7ef5c
+Binary files /dev/null and b/icons/22/nm-secure-lock.png differ
+diff --git a/src/ap-menu-item.c b/src/ap-menu-item.c
+index 6131549..b074c0d 100644
+--- a/src/ap-menu-item.c
++++ b/src/ap-menu-item.c
+@@ -35,18 +35,11 @@
+ #include "utils.h"
+
+
+-G_DEFINE_TYPE (NMNetworkMenuItem, nm_network_menu_item, GTK_TYPE_CHECK_MENU_ITEM);
++G_DEFINE_TYPE (NMNetworkMenuItem, nm_network_menu_item, GTK_TYPE_IMAGE_MENU_ITEM);
+
+ static void
+ nm_network_menu_item_init (NMNetworkMenuItem * item)
+ {
+- PangoFontDescription * fontdesc;
+- PangoFontMetrics * metrics;
+- PangoContext * context;
+- PangoLanguage * lang;
+- int ascent;
+-
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
+ item->hbox = gtk_hbox_new (FALSE, 6);
+ item->ssid = gtk_label_new (NULL);
+ gtk_misc_set_alignment (GTK_MISC (item->ssid), 0.0, 0.5);
+@@ -57,20 +50,9 @@ nm_network_menu_item_init (NMNetworkMenuItem * item)
+ gtk_box_pack_start (GTK_BOX (item->hbox), item->ssid, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (item->hbox), item->detail, FALSE, FALSE, 0);
+
+- item->strength = gtk_progress_bar_new ();
+-
+- /* get the font ascent for the current font and language */
+- context = gtk_widget_get_pango_context (item->strength);
+- fontdesc = pango_context_get_font_description (context);
+- lang = pango_context_get_language (context);
+- metrics = pango_context_get_metrics (context, fontdesc, lang);
+- ascent = pango_font_metrics_get_ascent (metrics) * 1.5 / PANGO_SCALE;
+- pango_font_metrics_unref (metrics);
+-
+- /* size our progress bar to be five ascents long */
+- gtk_widget_set_size_request (item->strength, ascent * 5, -1);
+-
++ item->strength = gtk_image_new ();
+ gtk_box_pack_end (GTK_BOX (item->hbox), item->strength, FALSE, TRUE, 0);
++ item->sort_label = g_strdup ("");
+
+ gtk_widget_show (item->ssid);
+ gtk_widget_show (item->strength);
+@@ -117,6 +99,8 @@ nm_network_menu_item_class_dispose (GObject *object)
+ gtk_widget_destroy (item->detail);
+ gtk_widget_destroy (item->hbox);
+
++ g_free (item->sort_label);
++
+ item->destroyed = TRUE;
+ g_free (item->hash);
+
+@@ -151,6 +135,8 @@ nm_network_menu_item_set_ssid (NMNetworkMenuItem * item, GByteArray * ssid)
+ gtk_label_set_text (GTK_LABEL (item->ssid), display_ssid);
+ g_free (display_ssid);
+ }
++ g_free (item->sort_label);
++ item->sort_label = g_strdup (gtk_label_get_text (GTK_LABEL (item->ssid)));
+ }
+
+ guint32
+@@ -162,15 +148,54 @@ nm_network_menu_item_get_strength (NMNetworkMenuItem * item)
+ }
+
+ void
+-nm_network_menu_item_set_strength (NMNetworkMenuItem * item, guint32 strength)
++nm_network_menu_item_set_strength (NMNetworkMenuItem * item,
++ NMAccessPoint *ap,
++ NMApplet *applet)
+ {
+- double percent;
++ guint8 strength;
++ GdkPixbuf *pixbuf = NULL;
++ guint32 ap_flags, ap_wpa, ap_rsn;
+
+ g_return_if_fail (item != NULL);
+
+- item->int_strength = CLAMP (strength, 0, 100);
+- percent = (double) item->int_strength / 100.0;
+- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (item->strength), percent);
++ ap_flags = nm_access_point_get_flags (ap);
++ ap_wpa = nm_access_point_get_wpa_flags (ap);
++ ap_rsn = nm_access_point_get_rsn_flags (ap);
++ strength = nm_access_point_get_strength(ap);
++ strength = CLAMP (strength, 0, 100);
++
++ item->int_strength = strength;
++
++ if (strength > 80) {
++ pixbuf = gdk_pixbuf_copy (applet->wireless_100_icon);
++ item->sort_strength = 4;
++ } else if (strength > 55) {
++ pixbuf = gdk_pixbuf_copy (applet->wireless_75_icon);
++ item->sort_strength = 3;
++ } else if (strength > 30) {
++ pixbuf = gdk_pixbuf_copy (applet->wireless_50_icon);
++ item->sort_strength = 2;
++ } else if (strength > 5) {
++ pixbuf = gdk_pixbuf_copy (applet->wireless_25_icon);
++ item->sort_strength = 1;
++ } else {
++ pixbuf = gdk_pixbuf_copy (applet->wireless_00_icon);
++ item->sort_strength = 0;
++ }
++
++ if ((ap_flags & NM_802_11_AP_FLAGS_PRIVACY)
++ || (ap_wpa != NM_802_11_AP_SEC_NONE)
++ || (ap_rsn != NM_802_11_AP_SEC_NONE)) {
++ GdkPixbuf *top = applet->secure_lock_icon;
++
++ gdk_pixbuf_composite (top, pixbuf, 0, 0, gdk_pixbuf_get_width (top),
++ gdk_pixbuf_get_height (top),
++ 0, 0, 1.0, 1.0,
++ GDK_INTERP_NEAREST, 255);
++ }
++
++ gtk_image_set_from_pixbuf (GTK_IMAGE (item->strength), pixbuf);
++ g_object_unref (pixbuf);
+ }
+
+ const guchar *
+@@ -190,28 +215,18 @@ nm_network_menu_item_set_detail (NMNetworkMenuItem * item,
+ GdkPixbuf * adhoc_icon,
+ guint32 dev_caps)
+ {
+- gboolean encrypted = FALSE, is_adhoc = FALSE;
++ gboolean is_adhoc = FALSE;
+ guint32 ap_flags, ap_wpa, ap_rsn;
+
+ ap_flags = nm_access_point_get_flags (ap);
+ ap_wpa = nm_access_point_get_wpa_flags (ap);
+ ap_rsn = nm_access_point_get_rsn_flags (ap);
+
+- if ( (ap_flags & NM_802_11_AP_FLAGS_PRIVACY)
+- || (ap_wpa != NM_802_11_AP_SEC_NONE)
+- || (ap_rsn != NM_802_11_AP_SEC_NONE))
+- encrypted = TRUE;
+-
+ if (nm_access_point_get_mode (ap) == NM_802_11_MODE_ADHOC)
+ is_adhoc = TRUE;
+
+ if (is_adhoc) {
+ gtk_image_set_from_pixbuf (GTK_IMAGE (item->detail), adhoc_icon);
+- } else if (encrypted) {
+- if (gtk_icon_theme_has_icon (gtk_icon_theme_get_default (), "network-wireless-encrypted"))
+- gtk_image_set_from_icon_name (GTK_IMAGE (item->detail), "network-wireless-encrypted", GTK_ICON_SIZE_MENU);
+- else
+- gtk_image_set_from_icon_name (GTK_IMAGE (item->detail), "gnome-lockscreen", GTK_ICON_SIZE_MENU);
+ } else {
+ gtk_image_set_from_stock (GTK_IMAGE (item->detail), NULL, GTK_ICON_SIZE_MENU);
+ }
+@@ -247,6 +262,11 @@ nm_network_menu_item_find_dupe (NMNetworkMenuItem *item, NMAccessPoint *ap)
+ }
+
+ void
++nm_network_menu_item_set_active (NMNetworkMenuItem *item, gboolean active)
++{
++ gtk_widget_set_sensitive (item->strength, active);
++}
++void
+ nm_network_menu_item_add_dupe (NMNetworkMenuItem *item, NMAccessPoint *ap)
+ {
+ const char *path;
+diff --git a/src/ap-menu-item.h b/src/ap-menu-item.h
+index 1d7fdfe..b5f3e6b 100644
+--- a/src/ap-menu-item.h
++++ b/src/ap-menu-item.h
+@@ -41,7 +41,7 @@ typedef struct _NMNetworkMenuItemClass NMNetworkMenuItemClass;
+
+ struct _NMNetworkMenuItem
+ {
+- GtkCheckMenuItem check_item;
++ GtkImageMenuItem image_item;
+
+ /*< private >*/
+ GtkWidget * ssid;
+@@ -53,11 +53,13 @@ struct _NMNetworkMenuItem
+ guint32 hash_len;
+ gboolean destroyed;
+ GSList * dupes;
++ gchar *sort_label;
++ guint32 sort_strength;
+ };
+
+ struct _NMNetworkMenuItemClass
+ {
+- GtkCheckMenuItemClass parent_class;
++ GtkImageMenuItemClass parent_class;
+ };
+
+
+@@ -69,7 +71,8 @@ void nm_network_menu_item_set_ssid (NMNetworkMenuItem * item,
+ GByteArray * ssid);
+ guint32 nm_network_menu_item_get_strength (NMNetworkMenuItem * item);
+ void nm_network_menu_item_set_strength (NMNetworkMenuItem * item,
+- guint32 strength);
++ NMAccessPoint *ap,
++ NMApplet *applet);
+ const guchar * nm_network_menu_item_get_hash (NMNetworkMenuItem * item,
+ guint32 * length);
+ void nm_network_menu_item_set_detail (NMNetworkMenuItem * item,
+@@ -83,4 +86,6 @@ gboolean nm_network_menu_item_find_dupe (NMNetworkMenuItem *item,
+ void nm_network_menu_item_add_dupe (NMNetworkMenuItem *item,
+ NMAccessPoint *ap);
+
++void nm_network_menu_item_set_active (NMNetworkMenuItem * item,
++ gboolean active);
+ #endif /* __AP_MENU_ITEM_H__ */
+diff --git a/src/applet-device-bt.c b/src/applet-device-bt.c
+index 47287fd..0e8ab8e 100644
+--- a/src/applet-device-bt.c
++++ b/src/applet-device-bt.c
+@@ -81,11 +81,18 @@ bt_menu_item_activate (GtkMenuItem *item, gpointer user_data)
+ user_data);
+ }
+
++
++typedef enum {
++ ADD_ACTIVE = 1,
++ ADD_INACTIVE = 2,
++} AddActiveInactiveEnum;
++
+ static void
+ add_connection_items (NMDevice *device,
+ GSList *connections,
+ gboolean carrier,
+ NMConnection *active,
++ AddActiveInactiveEnum flag,
+ GtkWidget *menu,
+ NMApplet *applet)
+ {
+@@ -97,13 +104,18 @@ add_connection_items (NMDevice *device,
+ NMSettingConnection *s_con;
+ GtkWidget *item;
+
++ if (active == connection) {
++ if ((flag & ADD_ACTIVE) == 0)
++ continue;
++ } else {
++ if ((flag & ADD_INACTIVE) == 0)
++ continue;
++ }
++
+ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- item = gtk_check_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+ gtk_widget_set_sensitive (GTK_WIDGET (item), carrier);
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
+-
+- if (connection == active)
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
+
+ info = g_slice_new0 (BtMenuItemInfo);
+ info->applet = applet;
+@@ -115,6 +127,8 @@ add_connection_items (NMDevice *device,
+ info,
+ (GClosureNotify) bt_menu_item_info_destroy, 0);
+
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, TRUE);
++
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+@@ -130,7 +144,6 @@ bt_add_menu_item (NMDevice *device,
+ GtkWidget *item;
+ GSList *connections, *all;
+ gboolean carrier = TRUE;
+- char *bold_text;
+
+ all = applet_get_all_connections (applet);
+ connections = utils_filter_connections_for_device (device, all);
+@@ -144,15 +157,18 @@ bt_add_menu_item (NMDevice *device,
+ g_assert (text);
+ }
+
+- item = gtk_menu_item_new_with_label ("");
+- bold_text = g_markup_printf_escaped ("%s", text);
+- gtk_label_set_markup (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))), bold_text);
+- g_free (bold_text);
++ item = applet_menu_item_create_device_item_helper (device, applet, text);
+
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
++ if (active)
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Active"), NULL, -1);
++
++ if (g_slist_length (connections))
++ add_connection_items (device, connections, carrier, active, ADD_ACTIVE, menu, applet);
++
+ /* Notify user of unmanaged or unavailable device */
+ item = nma_menu_device_get_menu_item (device, applet, NULL);
+ if (item) {
+@@ -162,8 +178,10 @@ bt_add_menu_item (NMDevice *device,
+
+ if (!nma_menu_device_check_unusable (device)) {
+ /* Add menu items for existing bluetooth connections for this device */
+- if (g_slist_length (connections))
+- add_connection_items (device, connections, carrier, active, menu, applet);
++ if (g_slist_length (connections)) {
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), NULL, -1);
++ add_connection_items (device, connections, carrier, active, ADD_INACTIVE, menu, applet);
++ }
+ }
+
+ g_slist_free (connections);
+diff --git a/src/applet-device-cdma.c b/src/applet-device-cdma.c
+index cf73890..45610f7 100644
+--- a/src/applet-device-cdma.c
++++ b/src/applet-device-cdma.c
+@@ -166,10 +166,17 @@ cdma_menu_item_activate (GtkMenuItem *item, gpointer user_data)
+ user_data);
+ }
+
++
++typedef enum {
++ ADD_ACTIVE = 1,
++ ADD_INACTIVE = 2,
++} AddActiveInactiveEnum;
++
+ static void
+ add_connection_items (NMDevice *device,
+ GSList *connections,
+ NMConnection *active,
++ AddActiveInactiveEnum flag,
+ GtkWidget *menu,
+ NMApplet *applet)
+ {
+@@ -181,12 +188,17 @@ add_connection_items (NMDevice *device,
+ NMSettingConnection *s_con;
+ GtkWidget *item;
+
+- s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- item = gtk_check_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
++ if (active == connection) {
++ if ((flag & ADD_ACTIVE) == 0)
++ continue;
++ } else {
++ if ((flag & ADD_INACTIVE) == 0)
++ continue;
++ }
+
+- if (connection == active)
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
++ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
++ item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+
+ info = g_slice_new0 (CdmaMenuItemInfo);
+ info->applet = applet;
+@@ -198,6 +210,8 @@ add_connection_items (NMDevice *device,
+ info,
+ (GClosureNotify) cdma_menu_item_info_destroy, 0);
+
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, TRUE);
++
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+@@ -211,7 +225,6 @@ add_default_connection_item (NMDevice *device,
+ GtkWidget *item;
+
+ item = gtk_check_menu_item_new_with_label (_("New Mobile Broadband (CDMA) connection..."));
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
+
+ info = g_slice_new0 (CdmaMenuItemInfo);
+ info->applet = applet;
+@@ -255,7 +268,7 @@ cdma_add_menu_item (NMDevice *device,
+ text = g_strdup (_("Mobile Broadband"));
+ }
+
+- item = gtk_menu_item_new_with_label (text);
++ item = applet_menu_item_create_device_item_helper (device, applet, text);
+ g_free (text);
+
+ label = gtk_bin_get_child (GTK_BIN (item));
+@@ -268,6 +281,12 @@ cdma_add_menu_item (NMDevice *device,
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
++ if (active)
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Active"), NULL, -1);
++
++ if (g_slist_length (connections))
++ add_connection_items (device, connections, active, ADD_ACTIVE, menu, applet);
++
+ /* Notify user of unmanaged or unavailable device */
+ item = nma_menu_device_get_menu_item (device, applet, NULL);
+ if (item) {
+@@ -276,8 +295,11 @@ cdma_add_menu_item (NMDevice *device,
+ }
+
+ if (!nma_menu_device_check_unusable (device)) {
++ if ((!active && g_slist_length (connections)) || (active && g_slist_length (connections) > 1))
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), NULL, -1);
++
+ if (g_slist_length (connections))
+- add_connection_items (device, connections, active, menu, applet);
++ add_connection_items (device, connections, active, ADD_INACTIVE, menu, applet);
+ else
+ add_default_connection_item (device, menu, applet);
+ }
+diff --git a/src/applet-device-gsm.c b/src/applet-device-gsm.c
+index 90bf31f..231771f 100644
+--- a/src/applet-device-gsm.c
++++ b/src/applet-device-gsm.c
+@@ -168,10 +168,16 @@ gsm_menu_item_activate (GtkMenuItem *item, gpointer user_data)
+ user_data);
+ }
+
++typedef enum {
++ ADD_ACTIVE = 1,
++ ADD_INACTIVE = 2,
++} AddActiveInactiveEnum;
++
+ static void
+ add_connection_items (NMDevice *device,
+ GSList *connections,
+ NMConnection *active,
++ AddActiveInactiveEnum flag,
+ GtkWidget *menu,
+ NMApplet *applet)
+ {
+@@ -183,12 +189,17 @@ add_connection_items (NMDevice *device,
+ NMSettingConnection *s_con;
+ GtkWidget *item;
+
+- s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- item = gtk_check_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
++ if (active == connection) {
++ if ((flag & ADD_ACTIVE) == 0)
++ continue;
++ } else {
++ if ((flag & ADD_INACTIVE) == 0)
++ continue;
++ }
+
+- if (connection == active)
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
++ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
++ item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+
+ info = g_slice_new0 (GSMMenuItemInfo);
+ info->applet = applet;
+@@ -200,6 +211,8 @@ add_connection_items (NMDevice *device,
+ info,
+ (GClosureNotify) gsm_menu_item_info_destroy, 0);
+
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, TRUE);
++
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+@@ -213,7 +226,6 @@ add_default_connection_item (NMDevice *device,
+ GtkWidget *item;
+
+ item = gtk_check_menu_item_new_with_label (_("New Mobile Broadband (GSM) connection..."));
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
+
+ info = g_slice_new0 (GSMMenuItemInfo);
+ info->applet = applet;
+@@ -237,8 +249,6 @@ gsm_add_menu_item (NMDevice *device,
+ char *text;
+ GtkWidget *item;
+ GSList *connections, *all;
+- GtkWidget *label;
+- char *bold_text;
+
+ all = applet_get_all_connections (applet);
+ connections = utils_filter_connections_for_device (device, all);
+@@ -257,19 +267,19 @@ gsm_add_menu_item (NMDevice *device,
+ text = g_strdup (_("Mobile Broadband"));
+ }
+
+- item = gtk_menu_item_new_with_label (text);
++ item = applet_menu_item_create_device_item_helper (device, applet, text);
+ g_free (text);
+
+- label = gtk_bin_get_child (GTK_BIN (item));
+- bold_text = g_markup_printf_escaped ("%s",
+- gtk_label_get_text (GTK_LABEL (label)));
+- gtk_label_set_markup (GTK_LABEL (label), bold_text);
+- g_free (bold_text);
+-
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
++ if (active)
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Active"), NULL, -1);
++
++ if (g_slist_length (connections))
++ add_connection_items (device, connections, active, ADD_ACTIVE, menu, applet);
++
+ /* Notify user of unmanaged or unavailable device */
+ item = nma_menu_device_get_menu_item (device, applet, NULL);
+ if (item) {
+@@ -278,8 +288,11 @@ gsm_add_menu_item (NMDevice *device,
+ }
+
+ if (!nma_menu_device_check_unusable (device)) {
++ if ((!active && g_slist_length (connections)) || (active && g_slist_length (connections) > 1))
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), NULL, -1);
++
+ if (g_slist_length (connections))
+- add_connection_items (device, connections, active, menu, applet);
++ add_connection_items (device, connections, active, ADD_INACTIVE, menu, applet);
+ else
+ add_default_connection_item (device, menu, applet);
+ }
+diff --git a/src/applet-device-wifi.c b/src/applet-device-wifi.c
+index 525f74d..df8fb47 100644
+--- a/src/applet-device-wifi.c
++++ b/src/applet-device-wifi.c
+@@ -417,13 +417,15 @@ struct dup_data {
+ };
+
+ static void
+-find_duplicate (GtkWidget * widget, gpointer user_data)
++find_duplicate (gpointer d, gpointer user_data)
+ {
+ struct dup_data * data = (struct dup_data *) user_data;
+ NMDevice *device;
+ const guchar * hash;
+ guint32 hash_len = 0;
++ GtkWidget *widget = GTK_WIDGET (d);
+
++ g_assert (d && widget);
+ g_return_if_fail (data);
+ g_return_if_fail (data->hash);
+
+@@ -464,7 +466,6 @@ add_new_ap_item (NMDeviceWifi *device,
+ NMAccessPoint *active_ap,
+ NMConnection *active,
+ GSList *connections,
+- GtkWidget *menu,
+ NMApplet *applet)
+ {
+ WirelessMenuItemInfo *info;
+@@ -473,29 +474,26 @@ add_new_ap_item (NMDeviceWifi *device,
+ NMNetworkMenuItem *item = NULL;
+ GSList *ap_connections = NULL;
+ const GByteArray *ssid;
+- guint8 strength;
+ guint32 dev_caps;
++ gboolean is_favorite = FALSE;
+
+ ap_connections = filter_connections_for_access_point (connections, device, ap);
+
+ foo = nm_network_menu_item_new (applet->encryption_size_group,
+ dup_data->hash, AP_HASH_LEN);
+ item = NM_NETWORK_MENU_ITEM (foo);
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+
+ ssid = nm_access_point_get_ssid (ap);
+ nm_network_menu_item_set_ssid (item, (GByteArray *) ssid);
+
+- strength = nm_access_point_get_strength (ap);
+- nm_network_menu_item_set_strength (item, strength);
+-
+ dev_caps = nm_device_wifi_get_capabilities (device);
++ nm_network_menu_item_set_strength (item, ap, applet);
+ nm_network_menu_item_set_detail (item, ap, applet->adhoc_icon, dev_caps);
+ nm_network_menu_item_add_dupe (item, ap);
+
+ g_object_set_data (G_OBJECT (item), "device", NM_DEVICE (device));
+
+- gtk_menu_shell_append (GTK_MENU_SHELL (menu), GTK_WIDGET (item));
+-
+ /* If there's only one connection, don't show the submenu */
+ if (g_slist_length (ap_connections) > 1) {
+ GtkWidget *submenu;
+@@ -524,6 +522,7 @@ add_new_ap_item (NMDeviceWifi *device,
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), GTK_WIDGET (subitem));
+ }
+
++ is_favorite = TRUE;
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
+ } else {
+ NMConnection *connection;
+@@ -536,6 +535,7 @@ add_new_ap_item (NMDeviceWifi *device,
+ if (g_slist_length (ap_connections) == 1) {
+ connection = NM_CONNECTION (g_slist_nth_data (ap_connections, 0));
+ info->connection = g_object_ref (G_OBJECT (connection));
++ is_favorite = TRUE;
+ }
+
+ g_signal_connect_data (GTK_WIDGET (item),
+@@ -546,19 +546,20 @@ add_new_ap_item (NMDeviceWifi *device,
+ 0);
+ }
+
+- gtk_widget_show_all (GTK_WIDGET (item));
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, is_favorite);
+
+ g_slist_free (ap_connections);
+ return item;
+ }
+
+-static void
++
++static GList*
+ add_one_ap_menu_item (NMDeviceWifi *device,
+ NMAccessPoint *ap,
+ GSList *connections,
+ NMAccessPoint *active_ap,
+ NMConnection *active,
+- GtkWidget *menu,
++ GList *menu_list,
+ NMApplet *applet)
+ {
+ const GByteArray *ssid;
+@@ -568,16 +569,16 @@ add_one_ap_menu_item (NMDeviceWifi *device,
+ /* Don't add BSSs that hide their SSID */
+ ssid = nm_access_point_get_ssid (ap);
+ if (!ssid || nm_utils_is_empty_ssid (ssid->data, ssid->len))
+- return;
++ return menu_list;
+
+ dup_data.found = NULL;
+ dup_data.hash = g_object_get_data (G_OBJECT (ap), "hash");
+ if (!dup_data.hash)
+- return;
++ return menu_list;
+ dup_data.device = NM_DEVICE (device);
+- gtk_container_foreach (GTK_CONTAINER (menu),
+- find_duplicate,
+- &dup_data);
++ g_list_foreach (menu_list,
++ find_duplicate,
++ &dup_data);
+
+ if (dup_data.found) {
+ gint8 strength = nm_access_point_get_strength (ap);
+@@ -585,25 +586,22 @@ add_one_ap_menu_item (NMDeviceWifi *device,
+ item = NM_NETWORK_MENU_ITEM (dup_data.found);
+
+ /* Just update strength if greater than what's there */
+- if (nm_network_menu_item_get_strength (item) < strength)
+- nm_network_menu_item_set_strength (item, strength);
++ if (nm_network_menu_item_get_strength (item) < strength) {
++ nm_network_menu_item_set_strength (item, ap, applet);
++ }
+
+ nm_network_menu_item_add_dupe (item, ap);
+ } else {
+- item = add_new_ap_item (device, ap, &dup_data, active_ap, active, connections, menu, applet);
++ item = add_new_ap_item (device, ap, &dup_data, active_ap, active, connections, applet);
++ menu_list = g_list_append (menu_list, item);
+ }
+
+- if (!active_ap)
+- return;
+-
+- g_signal_handlers_block_matched (item, G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
+- G_CALLBACK (wireless_menu_item_activate), NULL);
+-
+- if (nm_network_menu_item_find_dupe (item, active_ap))
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
++ if (!active_ap || active_ap == ap)
++ nm_network_menu_item_set_active (item, TRUE);
++ else
++ nm_network_menu_item_set_active (item, FALSE);
+
+- g_signal_handlers_unblock_matched (item, G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
+- G_CALLBACK (wireless_menu_item_activate), NULL);
++ return menu_list;
+ }
+
+ static gint
+@@ -658,6 +656,54 @@ sort_wireless_networks (gconstpointer tmpa,
+ return 0;
+ }
+
++static gint
++sort_ap_menu_item_by_name0 (gconstpointer a, gconstpointer b)
++{
++ if (a == b)
++ return 0;
++ if (!a && b)
++ return -1;
++ if (a && !b)
++ return 1;
++
++ if (!NM_IS_NETWORK_MENU_ITEM (a) || !NM_IS_NETWORK_MENU_ITEM (b)) {
++ return GPOINTER_TO_UINT (a) < GPOINTER_TO_UINT (b) ? -1 : 1;
++ }
++
++ return g_ascii_strcasecmp (NM_NETWORK_MENU_ITEM (a)->sort_label, NM_NETWORK_MENU_ITEM (b)->sort_label);
++}
++
++static gint
++sort_ap_menu_item_by_fav_strength_name0 (gconstpointer a, gconstpointer b)
++{
++ gpointer favorite_a, favorite_b;
++
++ if (a == b)
++ return 0;
++ if (!a && b)
++ return -1;
++ if (a && !b)
++ return 1;
++
++ if (!NM_IS_NETWORK_MENU_ITEM (a) || !NM_IS_NETWORK_MENU_ITEM (b)) {
++ return GPOINTER_TO_UINT (a) < GPOINTER_TO_UINT (b) ? -1 : 1;
++ }
++ favorite_a = g_object_get_data (G_OBJECT (a), "favorite");
++ favorite_b = g_object_get_data (G_OBJECT (b), "favorite");
++
++ if (GPOINTER_TO_UINT (favorite_a) < GPOINTER_TO_UINT (favorite_b))
++ return 1;
++ if (GPOINTER_TO_UINT (favorite_a) > GPOINTER_TO_UINT (favorite_b))
++ return -1;
++
++ if (NM_NETWORK_MENU_ITEM (a)->sort_strength < NM_NETWORK_MENU_ITEM (b)->sort_strength)
++ return 1;
++ if (NM_NETWORK_MENU_ITEM (a)->sort_strength > NM_NETWORK_MENU_ITEM (b)->sort_strength)
++ return -1;
++
++ return g_ascii_strcasecmp (NM_NETWORK_MENU_ITEM (a)->sort_label, NM_NETWORK_MENU_ITEM (b)->sort_label);
++}
++
+ static void
+ wireless_add_menu_item (NMDevice *device,
+ guint32 n_devices,
+@@ -672,9 +718,10 @@ wireless_add_menu_item (NMDevice *device,
+ int i;
+ NMAccessPoint *active_ap = NULL;
+ GSList *connections = NULL, *all, *sorted_aps = NULL, *iter;
+- GtkWidget *label;
+- char *bold_text;
+ gboolean wireless_enabled = TRUE;
++ GList *menu_list = NULL;
++ GtkWidget *folded_menu_item;
++ GtkWidget *submenu;
+
+ wdev = NM_DEVICE_WIFI (device);
+ aps = nm_device_wifi_get_access_points (wdev);
+@@ -698,19 +745,22 @@ wireless_add_menu_item (NMDevice *device,
+ } else
+ text = g_strdup (ngettext ("Wireless Network", "Wireless Networks", aps ? aps->len : 0));
+
+- item = gtk_menu_item_new_with_mnemonic (text);
++ item = applet_menu_item_create_device_item_helper (device, applet, text);
+ g_free (text);
+
+- label = gtk_bin_get_child (GTK_BIN (item));
+- bold_text = g_markup_printf_escaped ("%s",
+- gtk_label_get_text (GTK_LABEL (label)));
+- gtk_label_set_markup (GTK_LABEL (label), bold_text);
+- g_free (bold_text);
+-
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
++ active_ap = nm_device_wifi_get_active_access_point (wdev);
++ if (active_ap) {
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Active"), NULL, -1);
++ menu_list = add_one_ap_menu_item (wdev, active_ap, connections, active_ap, active, menu_list, applet);
++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_list->data);
++ g_list_free (menu_list);
++ menu_list = NULL;
++ }
++
+ /* Notify user of unmanaged or unavailable device */
+ wireless_enabled = nm_client_wireless_get_enabled (applet->nm_client);
+ item = nma_menu_device_get_menu_item (device, applet, wireless_enabled ? NULL : _("wireless is disabled"));
+@@ -720,7 +770,7 @@ wireless_add_menu_item (NMDevice *device,
+ }
+
+ if (!nma_menu_device_check_unusable (device)) {
+- active_ap = nm_device_wifi_get_active_access_point (wdev);
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), NULL, -1);
+
+ /* Add all networks in our network list to the menu */
+ for (i = 0; aps && (i < aps->len); i++)
+@@ -728,15 +778,28 @@ wireless_add_menu_item (NMDevice *device,
+
+ sorted_aps = g_slist_sort (sorted_aps, sort_wireless_networks);
+ for (iter = sorted_aps; iter; iter = g_slist_next (iter)) {
+- add_one_ap_menu_item (wdev,
+- NM_ACCESS_POINT (iter->data),
+- connections,
+- active_ap,
+- active,
+- menu,
+- applet);
++ if (active_ap != NM_ACCESS_POINT (iter->data)) {
++ menu_list = add_one_ap_menu_item (wdev,
++ NM_ACCESS_POINT (iter->data),
++ connections,
++ active_ap,
++ active,
++ menu_list,
++ applet);
++ }
+ }
+
++ folded_menu_item = gtk_menu_item_new_with_mnemonic (_("More networks..."));
++ submenu = gtk_menu_new ();
++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (folded_menu_item), submenu);
++ applet_menu_item_favorize_helper (GTK_BIN (folded_menu_item), applet->favorites_icon, FALSE);
++ applet_menu_add_items_top_and_fold_sorted_helper (GTK_MENU (menu),
++ menu_list,
++ 5,
++ GTK_WIDGET (folded_menu_item),
++ sort_ap_menu_item_by_fav_strength_name0,
++ sort_ap_menu_item_by_name0);
++ g_list_free (menu_list);
+ g_slist_free (sorted_aps);
+ }
+
+diff --git a/src/applet-device-wired.c b/src/applet-device-wired.c
+index e12f99f..545e3ce 100644
+--- a/src/applet-device-wired.c
++++ b/src/applet-device-wired.c
+@@ -106,11 +106,18 @@ wired_menu_item_activate (GtkMenuItem *item, gpointer user_data)
+ user_data);
+ }
+
++
++typedef enum {
++ ADD_ACTIVE = 1,
++ ADD_INACTIVE = 2,
++} AddActiveInactiveEnum;
++
+ static void
+ add_connection_items (NMDevice *device,
+ GSList *connections,
+ gboolean carrier,
+ NMConnection *active,
++ AddActiveInactiveEnum flag,
+ GtkWidget *menu,
+ NMApplet *applet)
+ {
+@@ -122,13 +129,18 @@ add_connection_items (NMDevice *device,
+ NMSettingConnection *s_con;
+ GtkWidget *item;
+
++ if (active == connection) {
++ if ((flag & ADD_ACTIVE) == 0)
++ continue;
++ } else {
++ if ((flag & ADD_INACTIVE) == 0)
++ continue;
++ }
++
+ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+- item = gtk_check_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ item = gtk_image_menu_item_new_with_label (nm_setting_connection_get_id (s_con));
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+ gtk_widget_set_sensitive (GTK_WIDGET (item), carrier);
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
+-
+- if (connection == active)
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
+
+ info = g_slice_new0 (WiredMenuItemInfo);
+ info->applet = applet;
+@@ -140,6 +152,8 @@ add_connection_items (NMDevice *device,
+ info,
+ (GClosureNotify) wired_menu_item_info_destroy, 0);
+
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, TRUE);
++
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ }
+ }
+@@ -180,8 +194,6 @@ wired_add_menu_item (NMDevice *device,
+ GtkWidget *item;
+ GSList *connections, *all;
+ gboolean carrier = TRUE;
+- GtkWidget *label;
+- char *bold_text;
+
+ all = applet_get_all_connections (applet);
+ connections = utils_filter_connections_for_device (device, all);
+@@ -206,7 +218,7 @@ wired_add_menu_item (NMDevice *device,
+ text = g_strdup (_("Wired Network"));
+ }
+
+- item = gtk_menu_item_new_with_label (text);
++ item = applet_menu_item_create_device_item_helper (device, applet, text);
+ g_free (text);
+
+ /* Only dim the item if the device supports carrier detection AND
+@@ -215,16 +227,16 @@ wired_add_menu_item (NMDevice *device,
+ if (nm_device_get_capabilities (device) & NM_DEVICE_CAP_CARRIER_DETECT)
+ carrier = nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device));
+
+- label = gtk_bin_get_child (GTK_BIN (item));
+- bold_text = g_markup_printf_escaped ("%s",
+- gtk_label_get_text (GTK_LABEL (label)));
+- gtk_label_set_markup (GTK_LABEL (label), bold_text);
+- g_free (bold_text);
+-
+ gtk_widget_set_sensitive (item, FALSE);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
++ if (active)
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Active"), NULL, -1);
++
++ if (g_slist_length (connections))
++ add_connection_items (device, connections, carrier, active, ADD_ACTIVE, menu, applet);
++
+ /* Notify user of unmanaged or unavailable device */
+ item = nma_menu_device_get_menu_item (device, applet, carrier ? NULL : _("disconnected"));
+ if (item) {
+@@ -233,8 +245,11 @@ wired_add_menu_item (NMDevice *device,
+ }
+
+ if (!nma_menu_device_check_unusable (device)) {
++ if ((!active && g_slist_length (connections)) || (active && g_slist_length (connections) > 1))
++ applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), NULL, -1);
++
+ if (g_slist_length (connections))
+- add_connection_items (device, connections, carrier, active, menu, applet);
++ add_connection_items (device, connections, carrier, active, ADD_INACTIVE, menu, applet);
+ else
+ add_default_connection_item (device, carrier, menu, applet);
+ }
+diff --git a/src/applet.c b/src/applet.c
+index 13bee6a..d3646fa 100644
+--- a/src/applet.c
++++ b/src/applet.c
+@@ -417,6 +417,299 @@ applet_menu_item_activate_helper (NMDevice *device,
+ }
+ }
+
++void
++applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
++ NMApplet *applet,
++ const gchar* label,
++ GdkPixbuf *favicon,
++ int pos)
++{
++ GtkWidget *menu_item = gtk_image_menu_item_new ();
++ GtkWidget *box = gtk_hbox_new (FALSE, 0);
++ GtkWidget *xlabel = NULL;
++ GtkWidget *favimg = NULL;
++ if (favicon)
++ favimg = gtk_image_new_from_pixbuf (favicon);
++ if (label) {
++ xlabel = gtk_label_new ("Favorites");
++ gtk_label_set_markup (GTK_LABEL (xlabel), label);
++ }
++ if (favimg || xlabel)
++ gtk_box_pack_start (GTK_BOX (box), gtk_hseparator_new (), TRUE, TRUE, 5);
++ if (xlabel)
++ gtk_box_pack_start (GTK_BOX (box), xlabel, FALSE, FALSE, 2);
++ if (favimg)
++ gtk_box_pack_start (GTK_BOX (box), favimg, FALSE, FALSE, 2);
++
++ gtk_box_pack_start (GTK_BOX (box), gtk_hseparator_new (), TRUE, TRUE, 5);
++
++ g_object_set (G_OBJECT (menu_item),
++ "child", box,
++ "sensitive", FALSE,
++ NULL);
++ if (pos < 0)
++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
++ else
++ gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menu_item, pos);
++ return;
++}
++
++void
++applet_menu_item_favorize_helper (GtkBin *binitem,
++ GdkPixbuf *favoritePixbuf,
++ gboolean is_favorite)
++{
++ GtkWidget *child;
++ GtkWidget *box;
++ gpointer already_favorized_ptr;
++
++ g_assert (binitem);
++ g_assert (favoritePixbuf);
++
++ child = gtk_bin_get_child (binitem);
++ box = gtk_hbox_new (FALSE, 0);
++ already_favorized_ptr = g_object_get_data (G_OBJECT (binitem), "favorite");
++
++ if (already_favorized_ptr)
++ goto abort;
++
++ if (!is_favorite) {
++ int image_width, image_height;
++ GtkWidget *placeholder = gtk_alignment_new (0,0,0,0);
++ g_object_ref (child);
++ image_width = gdk_pixbuf_get_width (favoritePixbuf);
++ image_height = gdk_pixbuf_get_height (favoritePixbuf);
++ gtk_container_remove (GTK_CONTAINER (binitem), child);
++ gtk_container_add (GTK_CONTAINER (binitem), box);
++ gtk_widget_set_size_request (placeholder, image_width, image_height);
++ gtk_box_pack_start (GTK_BOX (box), placeholder, FALSE, FALSE, 0);
++ gtk_box_pack_start (GTK_BOX (box), child, TRUE, TRUE, 4);
++ g_object_unref (child);
++ g_object_set_data (G_OBJECT (binitem), "favorite", GINT_TO_POINTER (1));
++ } else {
++ GtkWidget *image = gtk_image_new_from_pixbuf (favoritePixbuf);
++ g_assert (image);
++ g_object_ref (child);
++ gtk_container_remove (GTK_CONTAINER (binitem), child);
++ gtk_container_add (GTK_CONTAINER (binitem), box);
++ gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
++ gtk_box_pack_start (GTK_BOX (box), child, TRUE, TRUE, 4);
++ g_object_unref (child);
++ g_object_set_data (G_OBJECT (binitem), "favorite", GINT_TO_POINTER (2));
++ }
++
++ return;
++abort:
++ g_object_ref_sink (box);
++ g_object_unref (box);
++}
++
++void
++applet_menu_add_items_top_and_fold_sorted_helper (GtkMenu *menu,
++ GList *items,
++ guint top_count,
++ GtkWidget *submenu_item,
++ GCompareFunc prio_cmp_func,
++ GCompareFunc generic_cmp_func)
++{
++ GList *iter = items;
++ GList *clone_top = NULL;
++ GList *clone_top_filtered = NULL;
++ GList *clone_folded = NULL;
++ GtkWidget *submenu;
++ int i;
++
++ g_assert (menu);
++ g_assert (items);
++ g_assert (top_count > 0);
++ g_assert (submenu_item);
++ g_assert (prio_cmp_func);
++ g_assert (generic_cmp_func);
++
++ submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (submenu_item));
++ g_assert (submenu_item);
++
++ while (iter) {
++ clone_top = g_list_append (clone_top, iter->data);
++ clone_folded = g_list_append (clone_folded, iter->data);
++ iter = iter->next;
++ }
++
++ clone_top = g_list_sort (clone_top, prio_cmp_func);
++ clone_folded = g_list_sort (clone_folded, generic_cmp_func);
++
++ iter = clone_top;
++ for (i = 0; !!iter && i < top_count; i++, iter = iter->next) {
++ clone_folded = g_list_remove (clone_folded, iter->data);
++ clone_top_filtered = g_list_append (clone_top_filtered, iter->data);
++ }
++
++
++ clone_top_filtered = g_list_sort (clone_top_filtered, generic_cmp_func);
++ iter = clone_top_filtered;
++ while (iter) {
++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), iter->data);
++ iter = iter->next;
++ }
++
++ iter = clone_folded;
++ if (iter)
++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), submenu_item);
++ while (iter) {
++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), iter->data);
++ iter = iter->next;
++ }
++
++ g_list_free(clone_top);
++ g_list_free(clone_top_filtered);
++ g_list_free(clone_folded);
++}
++
++static gboolean
++menu_title_item_expose (GtkWidget *widget,
++ GdkEventExpose *event)
++{
++ #define TITLE_TEXT_R ((double) 0x5e / 255.0 )
++ #define TITLE_TEXT_G ((double) 0x5e / 255.0 )
++ #define TITLE_TEXT_B ((double) 0x5e / 255.0 )
++/* #define TITLE_TEXT_R ((double) style->text[GTK_STATE_NORMAL].red / 65535.0)
++ #define TITLE_TEXT_G ((double) style->text[GTK_STATE_NORMAL].green / 65535.0)
++ #define TITLE_TEXT_B ((double) style->text[GTK_STATE_NORMAL].blue / 65535.0) */
++
++ GtkStyle *style = gtk_widget_get_style (widget);
++ GtkWidget *label = gtk_bin_get_child (GTK_BIN (widget));
++ PangoFontDescription *desc = pango_font_description_copy (style->font_desc);
++ cairo_t *cr = gdk_cairo_create (widget->window);
++ GtkImageMenuItem *image_menu_item = GTK_IS_IMAGE_MENU_ITEM (widget) ? GTK_IMAGE_MENU_ITEM (widget) : NULL;
++ GtkImage *icon = image_menu_item ? GTK_IMAGE (gtk_image_menu_item_get_image (image_menu_item)) : NULL;
++ GdkPixbuf *pixbuf = icon ? gtk_image_get_pixbuf (icon) : NULL;
++ PangoLayout *layout_first = pango_cairo_create_layout (cr);
++ PangoLayout *layout_second = pango_cairo_create_layout (cr);
++ int width = 0, height = 0;
++ int extrawidth = 0;
++ gdouble extraheight = 0;
++ int owidth, oheight;
++ char *first, *second;
++ char *secondtext = NULL;
++ gdouble xpadding = 5.0;
++ gdouble ypadding = 5.0;
++ gdouble postpadding = 0.0;
++
++ first = g_strdup (gtk_label_get_text (GTK_LABEL (label)));
++ second = strchr (first, ':');
++ if (second) {
++ *second = 0;
++ second++;
++ second++;
++ secondtext = g_strdup_printf ("%s", second);
++ }
++
++ /* lets put together both layout lines */
++ pango_font_description_set_variant (desc, PANGO_VARIANT_SMALL_CAPS);
++ pango_font_description_set_weight (desc, PANGO_WEIGHT_SEMIBOLD);
++ pango_layout_set_font_description (layout_first, desc);
++ pango_layout_set_text (layout_first, first, -1);
++ pango_cairo_update_layout (cr, layout_first);
++ pango_layout_get_size (layout_first, &owidth, &oheight);
++ width = owidth / PANGO_SCALE;
++ height += oheight / PANGO_SCALE;
++
++ if (second) {
++ pango_font_description_set_weight (desc, PANGO_WEIGHT_NORMAL);
++ pango_layout_set_font_description (layout_second, desc);
++ pango_layout_set_text (layout_second, secondtext, -1);
++ pango_cairo_update_layout (cr, layout_second);
++ pango_layout_get_size (layout_second, &owidth, &oheight);
++ width = width < owidth / PANGO_SCALE ? owidth / PANGO_SCALE : width;
++ height += oheight / PANGO_SCALE;
++ }
++
++ if (pixbuf) {
++ gdouble w = gdk_pixbuf_get_width (pixbuf);
++ gdouble h = gdk_pixbuf_get_height (pixbuf);
++ if (width < w)
++ width = w;
++ if (height < h) {
++ extraheight = (h - height) / 2.0;
++ height = h;
++ }
++ extrawidth = gdk_pixbuf_get_width (pixbuf) + 5.0 + 5.0;
++ }
++ width += extrawidth;
++
++ cairo_save (cr);
++ cairo_translate (cr, ((double) event->area.x) , ((double) event->area.y));
++
++ cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0);
++ cairo_rectangle (cr, 0, 0, ((double) event->area.width), ((double) event->area.height - postpadding));
++ cairo_fill (cr);
++
++/* no border atm
++ cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 0.6);
++ cairo_rectangle (cr, 0, 0, ((double) event->area.width), 0.5);
++ cairo_fill (cr);
++ cairo_set_source_rgba (cr, 0.6, 0.6, 0.6, 0.4);
++ cairo_rectangle (cr, 0, ((double) event->area.height - postpadding - 0.5), ((double) event->area.width), 0.5);
++ cairo_fill (cr);
++*/
++
++ /* now the in-padding content */
++ cairo_translate (cr, xpadding , ypadding);
++ if (pixbuf) {
++ gdouble x = 0.0;
++ gdouble y = height / 2.0 - gdk_pixbuf_get_height (pixbuf) / 2.0;
++ gdouble w = gdk_pixbuf_get_width (pixbuf);
++ gdouble h = gdk_pixbuf_get_height (pixbuf);
++ gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
++ cairo_rectangle (cr, x, y, w, h);
++ cairo_fill (cr);
++ }
++
++ cairo_set_source_rgb (cr, TITLE_TEXT_R, TITLE_TEXT_G, TITLE_TEXT_B);
++ cairo_move_to (cr, extrawidth, extraheight);
++ pango_cairo_show_layout (cr, layout_first);
++
++ if (second) {
++ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
++ cairo_move_to (cr, extrawidth, extraheight + oheight / PANGO_SCALE);
++ pango_cairo_show_layout (cr, layout_second);
++ }
++
++ cairo_restore(cr);
++ pango_font_description_free (desc);
++
++ g_free (first);
++ g_object_unref (layout_first);
++ g_object_unref (layout_second);
++ cairo_destroy (cr);
++
++ gtk_widget_set_size_request (widget, width + 2 * xpadding, height + ypadding + postpadding);
++
++ return TRUE;
++
++ #undef TITLE_TEXT_R
++ #undef TITLE_TEXT_G
++ #undef TITLE_TEXT_B
++}
++
++
++GtkWidget*
++applet_menu_item_create_device_item_helper (NMDevice *device,
++ NMApplet *applet,
++ const gchar *text)
++{
++ GtkWidget *item = gtk_image_menu_item_new_with_mnemonic (text);
++ NMADeviceClass *klass = get_device_class (device, applet);
++ GdkPixbuf *pixbuf = klass->get_device_icon ? klass->get_device_icon (device, applet) : NULL;
++ GtkWidget *image = pixbuf ? gtk_image_new_from_pixbuf (pixbuf) : NULL;
++ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
++
++ gtk_widget_set_sensitive (item, FALSE);
++
++ g_signal_connect (item, "expose-event", G_CALLBACK (menu_title_item_expose), NULL);
++ return item;
++}
++
+ static void
+ applet_clear_notify (NMApplet *applet)
+ {
+@@ -1156,12 +1449,13 @@ nma_menu_device_get_menu_item (NMDevice *device,
+ struct AppletDeviceMenuInfo *info = g_new0 (struct AppletDeviceMenuInfo, 1);
+ info->device = g_object_ref (device);
+ info->applet = applet;
+- item = gtk_menu_item_new_with_label (_(" Disconnect"));
++ item = gtk_menu_item_new_with_label (_("Disconnect"));
+ g_signal_connect_data (item, "activate",
+ G_CALLBACK (applet_device_disconnect_db),
+ info,
+ (GClosureNotify) applet_device_info_destroy, 0);
+ gtk_widget_set_sensitive (item, TRUE);
++ applet_menu_item_favorize_helper (GTK_BIN (item), applet->favorites_icon, FALSE);
+ break;
+ }
+ default:
+@@ -1317,11 +1611,12 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
+ NMConnection *connection = NM_CONNECTION (iter->data);
+ NMActiveConnection *active;
+ const char *name;
++ GtkWidget *image;
+
+ name = get_connection_id (connection);
+
+- item = GTK_MENU_ITEM (gtk_check_menu_item_new_with_label (name));
+- gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), TRUE);
++ item = GTK_MENU_ITEM (gtk_image_menu_item_new_with_label (name));
++ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE);
+
+ /* If no VPN connections are active, draw all menu items enabled. If
+ * >= 1 VPN connections are active, only the active VPN menu item is
+@@ -1336,8 +1631,10 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
+ else
+ gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
+
+- if (active)
+- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
++ if (active) {
++ image = gtk_image_new_from_stock (GTK_STOCK_CONNECT, GTK_ICON_SIZE_MENU);
++ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
++ }
+
+ g_object_set_data_full (G_OBJECT (item), "connection",
+ g_object_ref (connection),
+@@ -2368,6 +2665,8 @@ static void nma_icons_free (NMApplet *applet)
+ CLEAR_ICON(applet->wireless_50_icon);
+ CLEAR_ICON(applet->wireless_75_icon);
+ CLEAR_ICON(applet->wireless_100_icon);
++ CLEAR_ICON(applet->secure_lock_icon);
++ CLEAR_ICON(applet->favorites_icon);
+
+ for (i = 0; i < NUM_CONNECTING_STAGES; i++) {
+ for (j = 0; j < NUM_CONNECTING_FRAMES; j++)
+@@ -2416,6 +2715,7 @@ nma_icons_load (NMApplet *applet)
+ ICON_LOAD(applet->wireless_50_icon, "nm-signal-50");
+ ICON_LOAD(applet->wireless_75_icon, "nm-signal-75");
+ ICON_LOAD(applet->wireless_100_icon, "nm-signal-100");
++ ICON_LOAD(applet->secure_lock_icon, "nm-secure-lock");
+
+ for (i = 0; i < NUM_CONNECTING_STAGES; i++) {
+ for (j = 0; j < NUM_CONNECTING_FRAMES; j++) {
+@@ -2435,6 +2737,8 @@ nma_icons_load (NMApplet *applet)
+ g_free (name);
+ }
+
++ ICON_LOAD(applet->favorites_icon, "emblem-favorite");
++
+ applet->icons_loaded = TRUE;
+
+ out:
+diff --git a/src/applet.h b/src/applet.h
+index d38e59a..9a08133 100644
+--- a/src/applet.h
++++ b/src/applet.h
+@@ -103,6 +103,7 @@ typedef struct
+ gboolean icons_loaded;
+
+ GtkIconTheme * icon_theme;
++ GdkPixbuf * active_device_icon;
+ GdkPixbuf * no_connection_icon;
+ GdkPixbuf * wired_icon;
+ GdkPixbuf * adhoc_icon;
+@@ -112,6 +113,7 @@ typedef struct
+ GdkPixbuf * wireless_50_icon;
+ GdkPixbuf * wireless_75_icon;
+ GdkPixbuf * wireless_100_icon;
++ GdkPixbuf * secure_lock_icon;
+ #define NUM_CONNECTING_STAGES 3
+ #define NUM_CONNECTING_FRAMES 11
+ GdkPixbuf * network_connecting_icons[NUM_CONNECTING_STAGES][NUM_CONNECTING_FRAMES];
+@@ -119,6 +121,8 @@ typedef struct
+ GdkPixbuf * vpn_connecting_icons[NUM_VPN_CONNECTING_FRAMES];
+ GdkPixbuf * vpn_lock_icon;
+
++ GdkPixbuf * favorites_icon;
++
+ /* Active status icon pixbufs */
+ GdkPixbuf * icon_layers[ICON_LAYER_MAX + 1];
+
+@@ -178,6 +182,9 @@ struct NMADeviceClass {
+ char **tip,
+ NMApplet *applet);
+
++ GdkPixbuf * (*get_device_icon) (NMDevice *device,
++ NMApplet *applet);
++
+ void (*get_more_info) (NMDevice *device,
+ NMConnection *connection,
+ NMApplet *applet,
+@@ -219,6 +226,27 @@ void applet_menu_item_activate_helper (NMDevice *device,
+ void applet_menu_item_disconnect_helper (NMDevice *device,
+ NMApplet *applet);
+
++void applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
++ NMApplet *applet,
++ const gchar* label,
++ GdkPixbuf *favicon,
++ int pos);
++
++void applet_menu_item_favorize_helper (GtkBin *binitem,
++ GdkPixbuf *favoritePixbuf,
++ gboolean is_favorite);
++
++void applet_menu_add_items_top_and_fold_sorted_helper (GtkMenu *menu,
++ GList *items,
++ guint top_count,
++ GtkWidget *submenu_item,
++ GCompareFunc prio_cmp_func,
++ GCompareFunc generic_cmp_func);
++GtkWidget*
++applet_menu_item_create_device_item_helper (NMDevice *device,
++ NMApplet *applet,
++ const gchar *text);
++
+ NMSettingsConnectionInterface *applet_get_exported_connection_for_device (NMDevice *device, NMApplet *applet);
+
+ void applet_do_notify (NMApplet *applet,
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/14_lp123808_dont_start_applet_on_ltsp_client.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/14_lp123808_dont_start_applet_on_ltsp_client.patch
@@ -0,0 +1,11 @@
+--- network-manager-applet-0.6.5/src/applet.c.orig 2007-10-02 20:53:36.000000000 +0200
++++ network-manager-applet-0.6.5/src/applet.c 2007-10-02 20:54:46.000000000 +0200
+@@ -132,7 +132,7 @@ static void nma_init (NMApplet *applet)
+ applet->animation_step = 0;
+ glade_gnome_init ();
+
+- if (!nma_icons_init (applet))
++ if ((!nma_icons_init (applet)) || (g_getenv("LTSP_CLIENT")))
+ return;
+
+ /* gtk_window_set_default_icon_from_file (ICONDIR"/NMApplet/wireless-applet.png", NULL); */
--- network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd.orig/debian/patches/lp268803_xdg_autostart_gnome_xfce_only.patch
+++ network-manager-applet-0.8~a~git.20090923t220421.1ac8ffd/debian/patches/lp268803_xdg_autostart_gnome_xfce_only.patch
@@ -0,0 +1,22 @@
+=== modified file 'nm-applet.desktop'
+---
+ nm-applet.desktop.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: ubuntu.0.7/nm-applet.desktop.in
+===================================================================
+--- ubuntu.0.7.orig/nm-applet.desktop.in
++++ ubuntu.0.7/nm-applet.desktop.in
+@@ -1,11 +1,12 @@
+ [Desktop Entry]
+ _Name=Network Manager
+ _Comment=Control your network connections
+ Icon=nm-device-wireless
+ Exec=nm-applet --sm-disable
+ Terminal=false
+ Type=Application
++OnlyShowIn=GNOME;XFCE;
+ X-GNOME-Bugzilla-Bugzilla=GNOME
+ X-GNOME-Bugzilla-Product=NetworkManager
+ X-GNOME-Bugzilla-Component=general
+ X-GNOME-Autostart-enabled=true