Initial git release master
authorNicolai Hess <nicolaihess@web.de>
Sun, 16 May 2010 20:37:50 +0000 (22:37 +0200)
committerNicolai Hess <nicolaihess@web.de>
Sun, 16 May 2010 20:37:50 +0000 (22:37 +0200)
60 files changed:
Makefile [new file with mode: 0644]
data/connectnow-home-widget.desktop [new file with mode: 0644]
data/connectnow_bt_connected.png [new file with mode: 0644]
data/connectnow_bt_disconnected.png [new file with mode: 0644]
data/connectnow_general_connected.png [new file with mode: 0644]
data/connectnow_general_disconnected.png [new file with mode: 0644]
data/connectnow_general_preview.png [new file with mode: 0644]
data/connectnow_gprs_connected_mms.png [new file with mode: 0644]
data/connectnow_gprs_connected_net.png [new file with mode: 0644]
data/connectnow_gprs_disconnected_mms.png [new file with mode: 0644]
data/connectnow_gprs_disconnected_net.png [new file with mode: 0644]
data/connectnow_usb_connected.png [new file with mode: 0644]
data/connectnow_usb_disconnected.png [new file with mode: 0644]
data/connectnow_wifi_connected_home.png [new file with mode: 0644]
data/connectnow_wifi_connected_work.png [new file with mode: 0644]
data/connectnow_wifi_disconnected_home.png [new file with mode: 0644]
data/connectnow_wifi_disconnected_work.png [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/connectnow-home-widget-dev.dirs [new file with mode: 0644]
debian/connectnow-home-widget-dev.install [new file with mode: 0644]
debian/connectnow-home-widget1.dirs [new file with mode: 0644]
debian/connectnow-home-widget1.install [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
src/Makefile [new file with mode: 0644]
src/connectnow-home-widget.c [new file with mode: 0644]
src/connectnow-home-widget.h [new file with mode: 0644]
src/connectnow-load-and-store.c [new file with mode: 0644]
src/connectnow-load-and-store.h [new file with mode: 0644]
src/connectnow-settings-dialog.c [new file with mode: 0644]
src/connectnow-settings-dialog.h [new file with mode: 0644]
src/data/connectnow-home-widget.desktop [new file with mode: 0644]
src/data/connectnow_bt_connected.png [new file with mode: 0644]
src/data/connectnow_bt_disconnected.png [new file with mode: 0644]
src/data/connectnow_general_connected.png [new file with mode: 0644]
src/data/connectnow_general_disconnected.png [new file with mode: 0644]
src/data/connectnow_general_preview.png [new file with mode: 0644]
src/data/connectnow_gprs_connected_mms.png [new file with mode: 0644]
src/data/connectnow_gprs_connected_net.png [new file with mode: 0644]
src/data/connectnow_gprs_disconnected_mms.png [new file with mode: 0644]
src/data/connectnow_gprs_disconnected_net.png [new file with mode: 0644]
src/data/connectnow_usb_connected.png [new file with mode: 0644]
src/data/connectnow_usb_disconnected.png [new file with mode: 0644]
src/data/connectnow_wifi_connected_home.png [new file with mode: 0644]
src/data/connectnow_wifi_connected_work.png [new file with mode: 0644]
src/data/connectnow_wifi_disconnected_home.png [new file with mode: 0644]
src/data/connectnow_wifi_disconnected_work.png [new file with mode: 0644]
src/debian/changelog [new file with mode: 0644]
src/debian/compat [new file with mode: 0644]
src/debian/connectnow-home-widget-dev.dirs [new file with mode: 0644]
src/debian/connectnow-home-widget-dev.install [new file with mode: 0644]
src/debian/connectnow-home-widget1.dirs [new file with mode: 0644]
src/debian/connectnow-home-widget1.install [new file with mode: 0644]
src/debian/control [new file with mode: 0644]
src/debian/copyright [new file with mode: 0644]
src/debian/dirs [new file with mode: 0644]
src/debian/rules [new file with mode: 0755]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..8a5c6f9
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+SUBDIRS = src
+DATA_FILE=connectnow-home-widget.desktop
+BUILDDIR = build
+HILDON_WIDGET_LIB_DIR=$(shell pkg-config libhildondesktop-1 --variable=hildondesktoplibdir)
+HILDON_WIDGET_DATA_DIR=$(shell pkg-config libhildondesktop-1 --variable=hildonhomedesktopentrydir)
+IMAGE_PATH=/usr/share/icons/hicolor/96x96/hildon/
+
+
+all:   create_builddir subdirs
+
+
+
+subdirs: $(SUBDIRS)
+
+
+$(SUBDIRS):
+       $(MAKE) -C $@
+
+create_builddir:
+       mkdir -p $(BUILDDIR)
+
+install: all
+       install -d $(DESTDIR)/$(HILDON_WIDGET_LIB_DIR)
+       install $(BUILDDIR)/*.so $(DESTDIR)/$(HILDON_WIDGET_LIB_DIR)
+       install -d $(DESTDIR)/$(HILDON_WIDGET_DATA_DIR)
+       install data/$(DATA_FILE) $(DESTDIR)/$(HILDON_WIDGET_DATA_DIR)
+       install -d $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_preview.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_connected_net.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_disconnected_net.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_connected_mms.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_disconnected_mms.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_connected_home.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_disconnected_home.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_connected_work.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_disconnected_work.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_usb_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_usb_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_bt_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_bt_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+
+
+.PHONY: all clean install $(SUBDIRS)
+
+clean:
+       rm -rf build
+       for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean);done
\ No newline at end of file
diff --git a/data/connectnow-home-widget.desktop b/data/connectnow-home-widget.desktop
new file mode 100644 (file)
index 0000000..c47325b
--- /dev/null
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=ConnectNow
+Comment=Connect to switch between internet connections
+Type=default
+X-Multiple=true
+X-Path=connectnow-home-widget.so
diff --git a/data/connectnow_bt_connected.png b/data/connectnow_bt_connected.png
new file mode 100644 (file)
index 0000000..80afc3b
Binary files /dev/null and b/data/connectnow_bt_connected.png differ
diff --git a/data/connectnow_bt_disconnected.png b/data/connectnow_bt_disconnected.png
new file mode 100644 (file)
index 0000000..4b93f8a
Binary files /dev/null and b/data/connectnow_bt_disconnected.png differ
diff --git a/data/connectnow_general_connected.png b/data/connectnow_general_connected.png
new file mode 100644 (file)
index 0000000..60662eb
Binary files /dev/null and b/data/connectnow_general_connected.png differ
diff --git a/data/connectnow_general_disconnected.png b/data/connectnow_general_disconnected.png
new file mode 100644 (file)
index 0000000..87e5438
Binary files /dev/null and b/data/connectnow_general_disconnected.png differ
diff --git a/data/connectnow_general_preview.png b/data/connectnow_general_preview.png
new file mode 100644 (file)
index 0000000..6d8a82b
Binary files /dev/null and b/data/connectnow_general_preview.png differ
diff --git a/data/connectnow_gprs_connected_mms.png b/data/connectnow_gprs_connected_mms.png
new file mode 100644 (file)
index 0000000..3f9b0b1
Binary files /dev/null and b/data/connectnow_gprs_connected_mms.png differ
diff --git a/data/connectnow_gprs_connected_net.png b/data/connectnow_gprs_connected_net.png
new file mode 100644 (file)
index 0000000..d63c2ba
Binary files /dev/null and b/data/connectnow_gprs_connected_net.png differ
diff --git a/data/connectnow_gprs_disconnected_mms.png b/data/connectnow_gprs_disconnected_mms.png
new file mode 100644 (file)
index 0000000..e0ce6ec
Binary files /dev/null and b/data/connectnow_gprs_disconnected_mms.png differ
diff --git a/data/connectnow_gprs_disconnected_net.png b/data/connectnow_gprs_disconnected_net.png
new file mode 100644 (file)
index 0000000..81bc5fa
Binary files /dev/null and b/data/connectnow_gprs_disconnected_net.png differ
diff --git a/data/connectnow_usb_connected.png b/data/connectnow_usb_connected.png
new file mode 100644 (file)
index 0000000..980fe45
Binary files /dev/null and b/data/connectnow_usb_connected.png differ
diff --git a/data/connectnow_usb_disconnected.png b/data/connectnow_usb_disconnected.png
new file mode 100644 (file)
index 0000000..287011b
Binary files /dev/null and b/data/connectnow_usb_disconnected.png differ
diff --git a/data/connectnow_wifi_connected_home.png b/data/connectnow_wifi_connected_home.png
new file mode 100644 (file)
index 0000000..ae620da
Binary files /dev/null and b/data/connectnow_wifi_connected_home.png differ
diff --git a/data/connectnow_wifi_connected_work.png b/data/connectnow_wifi_connected_work.png
new file mode 100644 (file)
index 0000000..2583dc4
Binary files /dev/null and b/data/connectnow_wifi_connected_work.png differ
diff --git a/data/connectnow_wifi_disconnected_home.png b/data/connectnow_wifi_disconnected_home.png
new file mode 100644 (file)
index 0000000..ff0ac90
Binary files /dev/null and b/data/connectnow_wifi_disconnected_home.png differ
diff --git a/data/connectnow_wifi_disconnected_work.png b/data/connectnow_wifi_disconnected_work.png
new file mode 100644 (file)
index 0000000..a7dc70f
Binary files /dev/null and b/data/connectnow_wifi_disconnected_work.png differ
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..bdf8a67
--- /dev/null
@@ -0,0 +1,53 @@
+connectnow-home-widget (0.8) unstable; urgency=low
+
+  * Fixed bug: Empty settings file or older settings file without
+    icon names crashed this widget - and hildon-desktop as well.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Fri,  7 May 2010 00:24:56 +0200
+
+connectnow-home-widget (0.7) unstable; urgency=low
+
+  * Add icon selector to settingsmenu
+  * included predefined icons
+
+ -- Nicolai Hess <nicolaihess@web.de>  Tue,  4 May 2010 23:48:40 +0200
+
+connectnow-home-widget (0.6) unstable; urgency=low
+
+  * Fixed bug in settings dialog
+
+ -- Nicolai Hess <nicolaihess@web.de>  Mon, 19 Apr 2010 22:17:56 +0200
+
+connectnow-home-widget (0.5) unstable; urgency=low
+
+  * widget size is configurable.
+  * arbitrary display name.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Mon, 29 Mar 2010 22:52:48 +0200
+
+connectnow-home-widget (0.4) unstable; urgency=low
+
+  * add patch from qwerty12 to switch to normal-mode before
+    trying to connenct while in offline-mode.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Sun, 28 Mar 2010 13:15:52 +0200
+
+connectnow-home-widget (0.3) unstable; urgency=low
+
+  * change the widget size (bigger)
+
+  * load icon from configfile (no settings dialog support to select an icon)
+
+ -- Nicolai Hess <nicolaihess@web.de>  Fri, 26 Mar 2010 20:09:46 +0100
+
+connectnow-home-widget (0.2) unstable; urgency=low
+
+  * changed section entry in debian/control
+
+ -- Nicolai Hess <nicolaihess@web.de>  Wed, 17 Mar 2010 18:20:47 +0100
+
+connectnow-home-widget (0.1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Tue, 16 Mar 2010 20:32:42 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/connectnow-home-widget-dev.dirs b/debian/connectnow-home-widget-dev.dirs
new file mode 100644 (file)
index 0000000..4418816
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib
+usr/include
diff --git a/debian/connectnow-home-widget-dev.install b/debian/connectnow-home-widget-dev.install
new file mode 100644 (file)
index 0000000..3c996c8
--- /dev/null
@@ -0,0 +1,6 @@
+usr/include/*
+usr/lib/lib*.a
+usr/lib/lib*.so
+usr/lib/pkgconfig/*
+usr/lib/*.la
+usr/share/pkgconfig/*
diff --git a/debian/connectnow-home-widget1.dirs b/debian/connectnow-home-widget1.dirs
new file mode 100644 (file)
index 0000000..6845771
--- /dev/null
@@ -0,0 +1 @@
+usr/lib
diff --git a/debian/connectnow-home-widget1.install b/debian/connectnow-home-widget1.install
new file mode 100644 (file)
index 0000000..d0dbfd1
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/lib*.so.*
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..77f6ca1
--- /dev/null
@@ -0,0 +1,347 @@
+Source: connectnow-home-widget
+Priority: extra
+Maintainer: Nicolai Hess <nicolaihess@web.de>
+Build-Depends: debhelper (>= 5), libgtk2.0-dev, libhildon1-dev, libhildondesktop1-dev, libconic0-dev, icd2-osso-ic-dev, mce-dev, libhildonfm2-dev
+Standards-Version: 3.7.2
+Section: user/desktop
+
+Package: connectnow-home-widget
+Architecture: any
+Depends: ${shlibs:Depends},
+Description: A desktop widget to switch internet connections.
+ This desktop widget can be used to connect to a specific
+ internet connection.
+XB-Maemo-Display-Name:ConnectNow internet connection switch
+XSBC-Bugtracker: mailto:nicolaihess@web.de
+XB-Maemo-Icon-26:
+ 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
+ rrXMt7o8dgl12aBtrzxThiqvaLqnm2e+p7119cpj/Cf5p1uZf+0cWxpvLLTN
+ apBZkH3Y+JhSEAo3tMNqXkSJ8DKmqU/V4XhMTpQHIzVBReziJro3uW455tm3
+ HzUs3FP0uOhjVta/IUi5BD91DsDO3EHWBNQFMCohMMcTWKjt4W/cT4kiDlAM
+ sgZ0eGtR3eqR+TCxYGTA6I3DG1Z0q3al+l/B350U4Ff3sG6qbpfujjrwdv/b
+ LncWJ3sc+XDw4NGePxZkVEpvmvrQkEQPlOdKPTqCNmKmSEMnOUSdLUdiL7vj
+ A23FKvsL9pbWy5WbHi6e9zzztIl+/X13+zW16u1q5Zbves2Cra5av7GOU06i
+ EW5QIQqKGxenFJ9UW2dcT1+evlhXGO8WfzThZKku2ZAc+MNZ1yZ/XH6LgmS1
+ L+ajrgBCMFQYlRk4Y8pSW5hGcsaTJ49vPObcrTHzY+fFdChWR30cKYc7eB1v
+ r7a/0f64x2rtMO0w7Tjl7+qoNix4nBNG2I+MHjbJe9yK+ku8litfThSn6obp
+ ysk7OEMqrUctyoYqF6IypsOLzsBcLpUrRSuAr3JVEQEAWA4A/2kDstkNHQAs
+ l214FyDvi9qmR4DYh0Y0HOCr7MJtANWWp0sbFGjOigPmH+mHTa6VnfUTs9oY
+ BQBIL/5eHFXSzNT29JbTZ85+Sco9dv9oq6MrUvINWaWfDe9kX1qlfCETLTR2
+ 5F2yLt6JqTyUzGDmecnzvbuvRcfWUW0SWr92tgoxhdQL2V5uivcy750VN9g4
+ Wp63mm11QtPBLFPzSdNVlKMg8qROCAIAdAI4kZM5G0tNgcYKpgtyfIlNiSjp
+ bbL6tum717fpRb89T3px4MXirJb3P93rfn9jdkCq9kfX5Kf6u3ydVivtwWQn
+ uige5J1umT4qrYVx+fYqWzZuy0gql70k63nWIUNCv0/9W/eP9dFYX7S+bl1F
+ Y7KeZt3bqqMmhXYqXUUsFak/5VipQb6mRPQUbQHaB4OsBchQ9EI6oPrAGjmA
+ DKGecjyAlgCm/ZcAppWspR6Aas7veRIgrsAJaYCq5bnyKUB1uaHsCPAVFIiT
+ aJxfq2BAQTf1zQGbAy8OPkt63UomXWw5p9g9+tTnr5/1Bd/vpt75fnd9drKh
+ haGFMZ13i3m0GnFoZ/I21eLFmOIw0bnAKVkzrOetHmu7bXQN7ti1Q3aHZPeR
+ nqFe6z3zrMcptZXlCtNxhP5XDjkD//l2938UciEPcsZMs2xzmF0RsIc57GGO
+ GnC4VwNOCJ4S/FdwnOPsjqM65HXQV+hyK/Lm+FuNU79f7Xpl9pUpGd+zH+RE
+ 5jY3TRUTlEhlEjYVnSudW/pT3j086FDbozeTV/y4+KNGaoQusFqHagVBnWyv
+ PXj58PijxVkf82wL8goy1QviG11HFTRWQ9UdAgBvx1u4ALBATZMAUEWGYAyA
+ rqyyw3/V+59G2G2wa45bSFCgj7/PK59li7bRDBFu3sNhDhdyQ7mBsymfeshF
+ AMAJJAEOpOGYCpVPq+5yMJZzE2yFBhoahVR+jBhRKlppGmAlP8Qs3gQPriHf
+ qZ+xqKpataQqrDaOGzg+e1zPSuPrvqn7sc4l56eay5oczSNh829a3FO2k134
+ S0G5gu8Frsb6yaU/NyTnFw9LTUiNTP1calEYUBhR1N64Boxl3A5sm2ZLtrfN
+ DlYY6b7b/Y2lhUeBR7B7X+vVdrft7tk9MLshzotr4jL5/fvAaUzlTUIWvX78
+ etDr+dm1dnfctXdPjcTZ0U+iY2KGlWymSuIB+mM7tKiEZKSoVnI3l2KyuEhX
+ OBj+qAUnMoONsBTeYh4Wogh/ogMU1OHGIhjACJxQgwA+i9pUhZwxWf6tVstb
+ mxT3bVHS+GWT0//OCE5/8TnmXw/ABWqJaoC8xowbgBKjjjddAtgGbjgG4B0W
+ oAFAVakeFwIYyZ64D4WOYSFdwGJEi0k8G6WUwyViNCzkGC6RuwF84yFyHc7X
+ WVvHUMfZNnfGj5nq9Jf+mysPrjyvch27d7CDBtMA+UAelkdhkXQh0SppYiE9
+ 8HoQ/WBP+rTnJU9dn5fm9vgZn3wuebb+flFMMRc1UmsaN+n3Go/LNFgKL54O
+ mHXTfDLfKCJtTLanbZ4rnzyLPQ94frYYEdI65GDIHsfrrZu0qd5qv9shn3U+
+ e3yq2n7TmDRpGimyG6Y0/Nkw2SXKZbJLtstJrfeOZdt4x4S4ec/Es9XPmuXv
+ oqEKK5MxQVODhpIdLnBXGkm3oJcSFxAKLWz5Fi8FyXnIRDYAS7YwmQHiEbeg
+ GwCy2JYHATgr/0QEgOZ8Ef/VCf6fLGiNdT3rKy7l7OvY1Xfo2eIleeA+ndA2
+ pb6w5q8oFRHoJrcC2MnfoAHUbTyTfwCURd3QGURjeaz0gpmU3IcCIdTfZCCf
+ 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
+ AElFTkSuQmCC
+ ====
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..a52c8a7
--- /dev/null
@@ -0,0 +1,26 @@
+This is connectnow-home-widget, written and maintained by Nicolai Hess <nicolaihess@web.de>
+on Tue, 16 Mar 2010 20:32:42 +0100.
+
+The original source can always be found at:
+       ftp://ftp.debian.org/dists/unstable/main/source/
+
+Copyright Holder:  Nicolai Hess
+
+License:
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this 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'.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..f256356
--- /dev/null
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+# shared library versions, option 1
+version=2.0.5
+major=2
+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
+#version=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
+#major=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+
+       touch configure-stamp
+
+
+build: build-stamp
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/tmp
+       $(MAKE) DESTDIR=$(CURDIR)/debian/connectnow-home-widget install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_python
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/src/Makefile b/src/Makefile
new file mode 100644 (file)
index 0000000..8a5c6f9
--- /dev/null
@@ -0,0 +1,49 @@
+SUBDIRS = src
+DATA_FILE=connectnow-home-widget.desktop
+BUILDDIR = build
+HILDON_WIDGET_LIB_DIR=$(shell pkg-config libhildondesktop-1 --variable=hildondesktoplibdir)
+HILDON_WIDGET_DATA_DIR=$(shell pkg-config libhildondesktop-1 --variable=hildonhomedesktopentrydir)
+IMAGE_PATH=/usr/share/icons/hicolor/96x96/hildon/
+
+
+all:   create_builddir subdirs
+
+
+
+subdirs: $(SUBDIRS)
+
+
+$(SUBDIRS):
+       $(MAKE) -C $@
+
+create_builddir:
+       mkdir -p $(BUILDDIR)
+
+install: all
+       install -d $(DESTDIR)/$(HILDON_WIDGET_LIB_DIR)
+       install $(BUILDDIR)/*.so $(DESTDIR)/$(HILDON_WIDGET_LIB_DIR)
+       install -d $(DESTDIR)/$(HILDON_WIDGET_DATA_DIR)
+       install data/$(DATA_FILE) $(DESTDIR)/$(HILDON_WIDGET_DATA_DIR)
+       install -d $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_preview.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_general_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_connected_net.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_disconnected_net.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_connected_mms.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_gprs_disconnected_mms.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_connected_home.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_disconnected_home.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_connected_work.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_wifi_disconnected_work.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_usb_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_usb_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_bt_connected.png $(DESTDIR)/$(IMAGE_PATH)
+       install -m 644 data/connectnow_bt_disconnected.png $(DESTDIR)/$(IMAGE_PATH)
+
+
+.PHONY: all clean install $(SUBDIRS)
+
+clean:
+       rm -rf build
+       for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean);done
\ No newline at end of file
diff --git a/src/connectnow-home-widget.c b/src/connectnow-home-widget.c
new file mode 100644 (file)
index 0000000..b88682d
--- /dev/null
@@ -0,0 +1,599 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include <gtk/gtk.h>
+
+#include <hildon/hildon.h>
+#include <libhildondesktop/libhildondesktop.h>
+#include <mce/dbus-names.h>
+#include <mce/mode-names.h>
+#include <icd/osso-ic-ui-dbus.h>
+#include <icd/osso-ic-dbus.h>
+#include <math.h>
+#include <libintl.h>
+#include <locale.h>
+#include "connectnow-home-widget.h"
+#include "connectnow-settings-dialog.h"
+#include "connectnow-load-and-store.h"
+
+
+HD_DEFINE_PLUGIN_MODULE(ConnectNowHomePlugin, connect_now_home_plugin, HD_TYPE_HOME_PLUGIN_ITEM)
+
+
+static GtkWidget*
+build_ui()
+{
+  GtkWidget *contents = gtk_event_box_new();
+  gtk_event_box_set_visible_window(GTK_EVENT_BOX(contents), FALSE);
+  gtk_container_set_border_width(GTK_CONTAINER(contents), 0);
+  gtk_widget_show_all(GTK_WIDGET(contents));
+  return GTK_WIDGET(contents);
+}
+
+
+static void
+connect_now_settings_connection_changed(HildonPickerButton* button,
+                                       gpointer data)
+{
+  gtk_entry_set_text(GTK_ENTRY(data), hildon_button_get_value(HILDON_BUTTON(button)));
+}
+
+void
+init_connection_list(ConnectNowHomePlugin* desktop_plugin,
+                    GtkListStore* connection_list,
+                    GtkWidget* selector,
+                    GtkWidget* button)
+{
+  GSList* iap_list;
+  GSList* iap_entry;
+
+
+  iap_list = con_ic_connection_get_all_iaps(desktop_plugin->con);  
+  for (iap_entry = iap_list; iap_entry!=NULL ; iap_entry=g_slist_next(iap_entry)) 
+  {
+    ConIcIap* item = iap_entry->data;
+    const gchar* iap = con_ic_iap_get_id(item);
+    const gchar* name = con_ic_iap_get_name(item);
+    GtkTreeIter iter;
+    gtk_list_store_append (connection_list, &iter);
+    gtk_list_store_set(connection_list, &iter, 0, name, 1, iap, -1);
+    if(g_strcmp0(iap, desktop_plugin->connection_id)==0)
+    {
+      hildon_touch_selector_select_iter(HILDON_TOUCH_SELECTOR(selector),
+                                       0,
+                                       &iter,
+                                       FALSE);
+      hildon_button_set_value(HILDON_BUTTON(button), name);
+    }
+    g_object_unref(item);
+  }
+  g_slist_free(iap_list);
+}
+
+
+static void
+toggle_display_name_entry(GtkWidget* toggle_button, GtkWidget* entry)
+{
+  if(hildon_check_button_get_active(HILDON_CHECK_BUTTON(toggle_button)))
+  {
+    gtk_widget_set_sensitive(entry, TRUE);
+  }
+  else
+  {
+    gtk_widget_set_sensitive(entry, FALSE);
+  }
+}
+
+static icon_data_t*
+connect_now_create_icon_data(ConnectNowHomePlugin* desktop_plugin)
+{
+  icon_data_t* icon_data = g_new0(icon_data_t, 1);
+  icon_data->connect_name = g_strdup(desktop_plugin->connectedImageName);
+  icon_data->disconnect_name = g_strdup(desktop_plugin->disconnectedImageName);
+  icon_data->connect_icon = gtk_image_new_from_pixbuf(desktop_plugin->connectedImage);
+  icon_data->disconnect_icon = gtk_image_new_from_pixbuf(desktop_plugin->disconnectedImage);
+  return icon_data;
+}
+
+static void
+connect_now_show_settings_dialog(GtkWidget* widget, gpointer data)
+{
+  ConnectNowHomePlugin *desktop_plugin = CONNECT_NOW_HOME_PLUGIN(widget);
+
+  GtkWidget *dialog;
+  GtkCellRenderer *renderer;
+  GtkWidget* selector;
+  GtkListStore *connection_list;
+  GtkWidget* icon_size_scale;
+  HildonTouchSelectorColumn* column;
+  GtkWidget* connection_button;
+  GtkWidget* display_name_entry;
+  GtkWidget* display_name_check_button;
+  GtkWidget* icon_button;
+  GtkWidget* icon_box;
+  GtkWidget* display_name_box;
+  GtkWidget* connection_name_box;
+  GtkWidget* connection_name_label;
+
+  // Connection Setting
+  connection_button = hildon_picker_button_new(HILDON_SIZE_THUMB_HEIGHT, 
+                                              HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+
+  selector = hildon_touch_selector_new();
+  connection_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+
+  renderer = gtk_cell_renderer_text_new();
+  column = hildon_touch_selector_append_column(HILDON_TOUCH_SELECTOR(selector),
+                                              GTK_TREE_MODEL(connection_list),
+                                              renderer, "text", 0, NULL);
+
+  hildon_touch_selector_column_set_text_column(column, 0);
+  hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector),
+                                                  HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE);
+
+  hildon_picker_button_set_selector(HILDON_PICKER_BUTTON(connection_button),
+                                   HILDON_TOUCH_SELECTOR(selector));
+
+  init_connection_list(desktop_plugin, connection_list, selector, connection_button);
+
+  connection_name_box = gtk_hbox_new(TRUE, 3);
+  connection_name_label = gtk_label_new("Connection:");
+
+  gtk_box_pack_start(GTK_BOX(connection_name_box), connection_name_label, TRUE, TRUE, 3);
+  gtk_box_pack_end(GTK_BOX(connection_name_box), connection_button, TRUE, TRUE, 3);
+
+
+  // Display name
+  display_name_entry = hildon_entry_new(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
+  if(desktop_plugin->connection_name!=NULL)
+    gtk_entry_set_text(GTK_ENTRY(display_name_entry),
+                      desktop_plugin->connection_name);
+
+  display_name_check_button = hildon_check_button_new(HILDON_SIZE_AUTO);
+  hildon_check_button_set_active(HILDON_CHECK_BUTTON(display_name_check_button),
+                              !desktop_plugin->hide_connection_name);
+                                                
+  gtk_button_set_label(GTK_BUTTON(display_name_check_button),
+                      "Display name");
+  g_signal_connect(display_name_check_button, "toggled", G_CALLBACK(toggle_display_name_entry), 
+                  display_name_entry);
+
+
+  display_name_box = gtk_hbox_new(TRUE, 3);
+  gtk_box_pack_start(GTK_BOX(display_name_box), display_name_check_button, TRUE, TRUE, 3);
+  gtk_box_pack_end(GTK_BOX(display_name_box), display_name_entry, TRUE, TRUE, 3);
+
+  g_signal_connect(G_OBJECT(connection_button),"value-changed",
+                  G_CALLBACK(connect_now_settings_connection_changed),
+                  display_name_entry);
+
+  // icon settings
+  icon_button = hildon_button_new_with_text(HILDON_SIZE_THUMB_HEIGHT, 
+                                           HILDON_BUTTON_ARRANGEMENT_VERTICAL,
+                                           "Icon",
+                                           NULL);
+
+  icon_data_t* icon_data = connect_now_create_icon_data(desktop_plugin);
+
+  icon_box = gtk_hbox_new(FALSE, 3);
+  GtkWidget* icon_box2 = gtk_hbox_new(TRUE, 3);
+  gtk_box_pack_start(GTK_BOX(icon_box2), icon_data->connect_icon, TRUE, TRUE, 0);
+  gtk_box_pack_start(GTK_BOX(icon_box2), icon_data->disconnect_icon, TRUE, TRUE, 0);
+  gtk_box_pack_start(GTK_BOX(icon_box), icon_box2, TRUE, FALSE, 0);
+  gtk_box_pack_start(GTK_BOX(icon_box), icon_button, TRUE, TRUE, 0);
+
+  g_signal_connect(G_OBJECT(icon_button), "clicked",
+                  G_CALLBACK(connect_now_show_icon_selector), icon_data);
+
+
+  // icon size
+  icon_size_scale = gtk_hscale_new_with_range(50, 200, 10);
+  gtk_scale_set_digits(GTK_SCALE(icon_size_scale), 0);
+  gtk_range_set_value(GTK_RANGE(icon_size_scale), desktop_plugin->widget_size);
+
+  // dialog
+  dialog = gtk_dialog_new_with_buttons("Settings",
+                                      NULL,
+                                      0,
+                                      dgettext("hildon-libs", "wdgt_bd_done"),
+                                      GTK_RESPONSE_ACCEPT,
+                                      NULL);
+  
+  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), icon_box, FALSE, FALSE, 3);
+  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), display_name_box, FALSE, FALSE, 3);
+  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), connection_name_box, FALSE, FALSE, 3);
+  gtk_box_pack_end(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), icon_size_scale, FALSE, FALSE, 3);
+
+  gtk_widget_show_all(dialog);
+
+  if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+  {
+    const gchar* displayName = hildon_entry_get_text(HILDON_ENTRY(display_name_entry));
+    const gchar* connection_name = hildon_button_get_value(HILDON_BUTTON(connection_button));
+    g_free(desktop_plugin->connection_name);
+
+    if(g_strcmp0(desktop_plugin->connectedImageName, icon_data->connect_name)!=0)
+    {
+      g_free(desktop_plugin->connectedImageName);
+      desktop_plugin->connectedImageName = g_strdup(icon_data->connect_name);
+      g_object_unref(desktop_plugin->connectedImage);
+      desktop_plugin->connectedImage = load_image(icon_data->connect_name);
+    }
+
+    if(g_strcmp0(desktop_plugin->disconnectedImageName, icon_data->disconnect_name)!=0)
+    {
+      g_free(desktop_plugin->disconnectedImageName);
+      desktop_plugin->disconnectedImageName = g_strdup(icon_data->disconnect_name);
+      g_object_unref(desktop_plugin->disconnectedImage);
+      desktop_plugin->disconnectedImage = load_image(icon_data->disconnect_name);
+    }
+    
+    if(displayName!=NULL && displayName[0]!='\0')
+    {
+      desktop_plugin->connection_name = g_strdup(displayName);
+    }
+    else
+    {
+      desktop_plugin->connection_name = g_strdup(connection_name);
+    }
+    GtkTreeIter iter;
+    gboolean selected = hildon_touch_selector_get_selected(HILDON_TOUCH_SELECTOR(selector),
+                                                          0, &iter);
+    if(selected)
+    {
+      gchar* iap;
+      gtk_tree_model_get(GTK_TREE_MODEL(connection_list),
+                        &iter,
+                        1, &iap,
+                        -1);
+      g_free(desktop_plugin->connection_id);
+      desktop_plugin->connection_id = iap;
+    }
+    desktop_plugin->widget_size = gtk_range_get_value(GTK_RANGE(icon_size_scale));
+    gtk_window_resize(GTK_WINDOW(desktop_plugin),
+                     (int)(desktop_plugin->widget_size),
+                     (int)(desktop_plugin->widget_size));
+
+    if(g_strcmp0(desktop_plugin->current_connection_id,
+                desktop_plugin->connection_id)==0)
+    {
+      desktop_plugin->this_connection_state = CON_IC_STATUS_CONNECTED;
+    }
+    else
+    {
+      desktop_plugin->this_connection_state = CON_IC_STATUS_DISCONNECTED;
+    }
+    desktop_plugin->hide_connection_name = 
+      !hildon_check_button_get_active(HILDON_CHECK_BUTTON(display_name_check_button));
+                                   
+    connect_now_save_settings(desktop_plugin);
+    gtk_widget_queue_draw(GTK_WIDGET(desktop_plugin));
+  }
+  g_free(icon_data->connect_name);
+  g_free(icon_data->disconnect_name);
+  g_free(icon_data);
+  gtk_widget_destroy (dialog);
+  g_object_unref(connection_list);
+}
+
+gboolean connect_now_connection_changed(ConIcConnection *connection, ConIcConnectionEvent *event, ConnectNowHomePlugin *desktop_plugin)
+{
+  const gchar* iap_id = con_ic_event_get_iap_id((ConIcEvent*) event);
+
+  if(con_ic_connection_event_get_status(event) == CON_IC_STATUS_CONNECTED)
+  {
+    if(desktop_plugin->connection_id == NULL)
+    {
+      desktop_plugin->connection_id = g_strdup(iap_id);
+      ConIcIap* iap = con_ic_connection_get_iap(desktop_plugin->con, iap_id);
+      desktop_plugin->connection_name = g_strdup(con_ic_iap_get_name(iap));
+      g_object_unref(iap);
+    }
+    g_free(desktop_plugin->current_connection_id);
+    desktop_plugin->current_connection_id = NULL;
+    desktop_plugin->current_connection_id = g_strdup(iap_id);
+  }
+  else
+  {
+    g_free(desktop_plugin->current_connection_id);
+    desktop_plugin->current_connection_id = NULL;
+  }
+  if(g_strcmp0(desktop_plugin->connection_id, iap_id)==0)
+  {
+    desktop_plugin->this_connection_state = con_ic_connection_event_get_status(event);
+
+    if(con_ic_connection_event_get_status(event) == CON_IC_STATUS_CONNECTED &&
+       desktop_plugin->connect_now)
+    {    
+      desktop_plugin->connect_now = FALSE;
+    }
+    gtk_widget_queue_draw(GTK_WIDGET(desktop_plugin));
+  }
+
+  if(con_ic_connection_event_get_status(event) == CON_IC_STATUS_DISCONNECTED)
+  {
+    g_free(desktop_plugin->current_connection_id);
+    desktop_plugin->current_connection_id = NULL;
+    if(desktop_plugin->connect_now)
+    {
+      con_ic_connection_connect_by_id(desktop_plugin->con, 
+                                     desktop_plugin->connection_id,
+                                     CON_IC_CONNECT_FLAG_NONE);
+      
+      desktop_plugin->connect_now = FALSE;
+    }
+  }
+  return TRUE;
+}
+
+void
+connect_now_disconnect_current_connection(ConnectNowHomePlugin* desktop_plugin)
+{
+  DBusGConnection* dbus_conn = hd_home_plugin_item_get_dbus_g_connection(&desktop_plugin->hitem,
+                                                                        DBUS_BUS_SYSTEM,
+                                                                        NULL);
+  DBusGProxy *proxy = dbus_g_proxy_new_for_name(dbus_conn,
+                                               ICD_DBUS_SERVICE,
+                                               ICD_UI_DBUS_PATH,
+                                               ICD_UI_DBUS_INTERFACE);
+  gboolean disconnect = TRUE;
+  DBusMessage* message = dbus_message_new_signal(ICD_UI_DBUS_PATH,
+                                                ICD_UI_DBUS_INTERFACE,
+                                                ICD_UI_DISCONNECT_SIG);
+  dbus_message_append_args(message,
+                          DBUS_TYPE_BOOLEAN, &disconnect,
+
+                          DBUS_TYPE_INVALID);
+
+  dbus_g_proxy_send(proxy,
+                   message, 
+                   NULL);
+
+  g_object_unref(proxy);
+  dbus_g_connection_unref(dbus_conn);
+  dbus_message_unref(message);
+}
+
+static void
+connect_now_switch_normal_mode(ConnectNowHomePlugin* desktop_plugin)
+{
+  DBusGConnection* dbus_conn = hd_home_plugin_item_get_dbus_g_connection(HD_HOME_PLUGIN_ITEM(desktop_plugin),
+                                                                        DBUS_BUS_SYSTEM,
+                                                                        NULL);
+  DBusGProxy *proxy = dbus_g_proxy_new_for_name(dbus_conn,
+                                               MCE_SERVICE,
+                                               MCE_REQUEST_PATH,
+                                               MCE_REQUEST_IF);
+
+  gchar* dev_mode = NULL;
+  dbus_g_proxy_call(proxy,
+                                       MCE_DEVICE_MODE_GET,
+                                       NULL,
+                                       G_TYPE_INVALID,
+                                       G_TYPE_STRING,
+                                       &dev_mode,
+                                       G_TYPE_INVALID);
+
+  if(g_str_equal(dev_mode, MCE_FLIGHT_MODE))
+   dbus_g_proxy_call_no_reply(proxy,
+                             MCE_DEVICE_MODE_CHANGE_REQ,
+                             G_TYPE_STRING,
+                             MCE_NORMAL_MODE MCE_CONFIRM_SUFFIX,
+                             G_TYPE_INVALID);
+
+  g_free(dev_mode);
+  g_object_unref(proxy);
+  dbus_g_connection_unref(dbus_conn);
+}
+
+gint
+connect_now_button_press(GtkWidget* widget, GdkEventButton *event, ConnectNowHomePlugin* desktop_plugin)
+{
+  if(desktop_plugin->connection_name == NULL)
+  {
+    con_ic_connection_connect(desktop_plugin->con, 
+                             CON_IC_CONNECT_FLAG_NONE);
+    desktop_plugin->connect_now = FALSE;
+    return;
+  }
+
+  if(desktop_plugin->current_connection_id != NULL)
+  {
+    if(g_strcmp0(desktop_plugin->current_connection_id,
+                desktop_plugin->connection_id) != 0)
+      
+    {
+      if(desktop_plugin->this_connection_state == CON_IC_STATUS_DISCONNECTED)
+      {
+       desktop_plugin->connect_now = TRUE;
+      }
+      else
+      {
+       desktop_plugin->connect_now = FALSE;
+      }
+    }
+    connect_now_disconnect_current_connection(desktop_plugin);
+  }
+  else
+  {
+    connect_now_switch_normal_mode(desktop_plugin);
+    con_ic_connection_connect_by_id(desktop_plugin->con, 
+                                   desktop_plugin->connection_id,
+                                   CON_IC_CONNECT_FLAG_NONE);
+    desktop_plugin->connect_now = FALSE;
+  }
+  gtk_widget_queue_draw(GTK_WIDGET(desktop_plugin));
+  return FALSE;
+}
+
+void
+connect_now_home_plugin_init(ConnectNowHomePlugin *desktop_plugin)
+{
+  desktop_plugin->connection_name = NULL;
+  desktop_plugin->connection_id = NULL;
+  desktop_plugin->current_connection_id = NULL;
+  desktop_plugin->connectedImageName = NULL;
+  desktop_plugin->disconnectedImageName = NULL;
+
+  desktop_plugin->this_connection_state = CON_IC_STATUS_DISCONNECTED;
+  desktop_plugin->connect_now = FALSE;
+  desktop_plugin->con = con_ic_connection_new();
+  desktop_plugin->widget_size = CONNECTNOW_DEFAULT_WIDGET_WIDTH;
+  desktop_plugin->hide_connection_name = FALSE;
+  g_signal_connect(desktop_plugin->con, "connection-event", G_CALLBACK(connect_now_connection_changed), desktop_plugin);
+  g_object_set(desktop_plugin->con, "automatic-connection-events", TRUE);
+
+  GtkWidget *contents = build_ui();
+
+  gtk_widget_set_size_request(contents, desktop_plugin->widget_size, desktop_plugin->widget_size);
+  gtk_container_add(GTK_CONTAINER(desktop_plugin), contents);
+  hd_home_plugin_item_set_settings (HD_HOME_PLUGIN_ITEM (desktop_plugin), TRUE);
+  g_signal_connect(GTK_CONTAINER(contents), "button-press-event", G_CALLBACK(connect_now_button_press), desktop_plugin);
+  g_signal_connect(desktop_plugin, "show-settings", G_CALLBACK(connect_now_show_settings_dialog), NULL);
+}
+
+static void
+connect_now_realize(GtkWidget* widget)
+{
+  GdkScreen *screen = gtk_widget_get_screen(widget);
+  gtk_widget_set_colormap(widget, gdk_screen_get_rgba_colormap(screen));
+  gtk_widget_set_app_paintable(widget, TRUE);
+  ConnectNowHomePlugin *desktop_plugin = CONNECT_NOW_HOME_PLUGIN(widget);
+  desktop_plugin->iD = hd_home_plugin_item_get_applet_id (HD_HOME_PLUGIN_ITEM (widget));
+  read_settings(desktop_plugin);
+  if(desktop_plugin->connectedImage == NULL)
+  {
+    desktop_plugin->connectedImageName = g_strdup(GENERAL_CONNECTED);
+    desktop_plugin->connectedImage = load_image(desktop_plugin->connectedImageName);
+  }
+  if(desktop_plugin->disconnectedImage == NULL)
+  {
+    desktop_plugin->disconnectedImageName = g_strdup(GENERAL_DISCONNECTED);
+    desktop_plugin->disconnectedImage = load_image(desktop_plugin->disconnectedImageName);
+  }
+  gtk_window_resize(GTK_WINDOW(widget),
+                   desktop_plugin->widget_size,
+                   desktop_plugin->widget_size);
+
+  GTK_WIDGET_CLASS(connect_now_home_plugin_parent_class)->realize(widget);
+}
+
+static gboolean
+connect_now_expose(GtkWidget* widget, GdkEventExpose *event)
+{
+  cairo_t *cr;
+  PangoLayout *pangoLayout;
+  PangoFontDescription *fontDescription;
+  
+  cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));
+  gdk_cairo_region(cr, event->region);
+  cairo_clip(cr);
+  cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
+  int width = CONNECT_NOW_HOME_PLUGIN(widget)->widget_size;
+  cairo_scale(cr, width/100.0, width/100.0);
+
+
+  GdkPixbuf* image = NULL;
+  if(CONNECT_NOW_HOME_PLUGIN(widget)->this_connection_state == CON_IC_STATUS_CONNECTED)
+  {
+    image = CONNECT_NOW_HOME_PLUGIN(widget)->connectedImage;
+  }
+  else
+  {
+    image = CONNECT_NOW_HOME_PLUGIN(widget)->disconnectedImage;
+  }
+  gdk_cairo_set_source_pixbuf(cr, image, 0.0, 0.0);
+  cairo_paint(cr);
+
+  if(!CONNECT_NOW_HOME_PLUGIN(widget)->hide_connection_name)
+  {
+    
+    pangoLayout = pango_cairo_create_layout(cr);
+    if(CONNECT_NOW_HOME_PLUGIN(widget)->connection_name)
+      pango_layout_set_text(pangoLayout, CONNECT_NOW_HOME_PLUGIN(widget)->connection_name, -1);
+    const char* font = "Sans 12";
+    fontDescription = pango_font_description_from_string(font);
+    pango_layout_set_font_description(pangoLayout, fontDescription);
+    pango_font_description_free(fontDescription);
+    int width = 0;
+    int height = 0;
+    pango_layout_get_pixel_size(pangoLayout, &width, &height);
+  
+    cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
+    cairo_pattern_t* linear_pattern = cairo_pattern_create_linear(0.0, 0.0, CONNECTNOW_DEFAULT_WIDGET_WIDTH, 0);
+    cairo_pattern_add_color_stop_rgba(linear_pattern, 0.0, 0.0, 0.0, 0.0, 0.0);
+    cairo_pattern_add_color_stop_rgba(linear_pattern, 0.25, 0.0, 0.0, 0.0, 0.35);
+    cairo_pattern_add_color_stop_rgba(linear_pattern, 0.75, 0.0, 0.0, 0.0, 0.35);
+    cairo_pattern_add_color_stop_rgba(linear_pattern, 1.0, 0.0, 0.0, 0.0, 0.0);
+
+    cairo_set_source(cr, linear_pattern);
+    cairo_rectangle(cr, 0, CONNECTNOW_DEFAULT_WIDGET_WIDTH - (1.25 * height), CONNECTNOW_DEFAULT_WIDGET_WIDTH, 1.25*height);
+    cairo_fill(cr);
+    cairo_pattern_destroy(linear_pattern);
+    if(width>CONNECTNOW_DEFAULT_WIDGET_WIDTH)
+    {
+      double factor = (double)CONNECTNOW_DEFAULT_WIDGET_WIDTH/width;
+      cairo_scale(cr, factor, factor);
+      cairo_move_to(cr, 0, (CONNECTNOW_DEFAULT_WIDGET_WIDTH/factor)-(1.25*height));
+    }
+    else
+    {
+      cairo_move_to(cr, (CONNECTNOW_DEFAULT_WIDGET_WIDTH - width)/2.0, CONNECTNOW_DEFAULT_WIDGET_WIDTH-(1.25*height));
+    }
+    cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0);
+    pango_cairo_show_layout(cr, pangoLayout);
+  }  
+  cairo_destroy(cr);
+  return GTK_WIDGET_CLASS(connect_now_home_plugin_parent_class)->expose_event(widget, event);
+}
+
+
+static void
+connect_now_plugin_finalize(GObject *object)
+{
+  ConnectNowHomePlugin *desktop_plugin = CONNECT_NOW_HOME_PLUGIN(object);
+  g_object_unref (desktop_plugin->con);
+  g_free(desktop_plugin->connection_id);
+  g_free(desktop_plugin->current_connection_id);
+  g_free(desktop_plugin->connection_name);
+  g_free(desktop_plugin->connectedImageName);
+  g_free(desktop_plugin->disconnectedImageName);
+  g_free(desktop_plugin->iD);
+  if(desktop_plugin->connectedImage)
+    g_object_unref(desktop_plugin->connectedImage);
+  if(desktop_plugin->disconnectedImage)
+    g_object_unref(desktop_plugin->disconnectedImage);
+  G_OBJECT_CLASS (connect_now_home_plugin_parent_class)->finalize (object);
+}
+
+static void
+connect_now_home_plugin_class_init(ConnectNowHomePluginClass *klass) 
+{
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+  widget_class->realize = connect_now_realize;
+  widget_class->expose_event = connect_now_expose;
+
+  G_OBJECT_CLASS(klass)->finalize = connect_now_plugin_finalize;
+}
+
+static void
+connect_now_home_plugin_class_finalize(ConnectNowHomePluginClass *class) 
+{
+}
+
+
diff --git a/src/connectnow-home-widget.h b/src/connectnow-home-widget.h
new file mode 100644 (file)
index 0000000..8842268
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef CONNECTNOW_HOME_PLUGIN_H
+#define CONNECTNOW_HOME_PLUGIN_H
+
+#include <glib-object.h>
+#include <conic.h>
+#include <hildon/hildon.h>
+#include <libhildondesktop/libhildondesktop.h>
+
+static const gchar* GENERAL_CONNECTED = "connectnow_general_connected";
+static const gchar* GENERAL_DISCONNECTED = "connectnow_general_disconnected";
+
+
+G_BEGIN_DECLS
+
+typedef struct _ConnectNowHomePlugin ConnectNowHomePlugin;
+typedef struct _ConnectNowHomePluginClass ConnectNowHomePluginClass;
+
+#define CONNECT_NOW_HOME_PLUGIN_TYPE (connect_now_home_plugin_get_type())
+
+#define CONNECT_NOW_HOME_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+                                                                CONNECT_NOW_HOME_PLUGIN_TYPE, ConnectNowHomePlugin))
+
+#define CONNECT_NOW_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+                                                               CONNECT_NOW_HOME_PLUGIN_TYPE))
+
+#define CONNECT_NOW_HOME_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+                                                                          CONNECT_NOW_HOME_PLUGIN_TYPE, ConnectNowHomePluginClass))
+
+struct _ConnectNowHomePlugin
+{
+  HDHomePluginItem hitem;
+  gchar* connection_id;
+  gchar* connection_name;
+  gchar* current_connection_id;
+  ConIcConnection* con;
+  gint this_connection_state;
+  gboolean connect_now;
+
+  gchar* iD;
+  gchar* connectedImageName;
+  gchar* disconnectedImageName;
+  GdkPixbuf* connectedImage;
+  GdkPixbuf* disconnectedImage;
+  guint widget_size;
+  gboolean hide_connection_name;
+
+};
+
+struct _ConnectNowHomePluginClass
+{
+  HDHomePluginItemClass parent_class;
+
+};
+
+GType connect_now_home_plugin_get_type(void);
+
+#endif
diff --git a/src/connectnow-load-and-store.c b/src/connectnow-load-and-store.c
new file mode 100644 (file)
index 0000000..6bd1945
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "connectnow-load-and-store.h"
+#define CONNECTNOW_HOME_PLUGIN_SETTINGS_FILE "/.connectnow_home_widget"
+
+
+void 
+read_settings(ConnectNowHomePlugin *desktop_plugin)
+{
+  GKeyFile *keyFile;
+  gchar* fileName;
+  gboolean fileExists;
+
+  keyFile = g_key_file_new();
+  fileName = g_strconcat(g_get_home_dir(), CONNECTNOW_HOME_PLUGIN_SETTINGS_FILE, NULL);
+  fileExists = g_key_file_load_from_file (keyFile, fileName, G_KEY_FILE_KEEP_COMMENTS, NULL);
+  if(fileExists)
+  {
+    GError *error = NULL;
+    if(g_key_file_has_key(keyFile, desktop_plugin->iD, "widget_size", NULL))
+    {
+      desktop_plugin->widget_size = g_key_file_get_integer(keyFile, desktop_plugin->iD, "widget_size", NULL);
+    }
+    if(g_key_file_has_key(keyFile, desktop_plugin->iD, "hide_connection_name", NULL))
+    {
+      desktop_plugin->hide_connection_name = g_key_file_get_boolean(keyFile, desktop_plugin->iD, "hide_connection_name", NULL);
+    }
+    if(g_key_file_has_key(keyFile, desktop_plugin->iD, "connectedIcon", NULL))
+    {
+      desktop_plugin->connectedImageName = g_key_file_get_string(keyFile, desktop_plugin->iD, "connectedIcon", NULL);
+    }
+    else
+    {
+      desktop_plugin->connectedImageName = g_strdup(GENERAL_CONNECTED);
+    }
+    if(g_key_file_has_key(keyFile, desktop_plugin->iD, "disconnectedIcon", NULL))
+    {
+      desktop_plugin->disconnectedImageName = g_key_file_get_string(keyFile, desktop_plugin->iD, "disconnectedIcon", NULL);
+    }
+    else
+    {
+      desktop_plugin->disconnectedImageName = g_strdup(GENERAL_DISCONNECTED);
+    }
+    desktop_plugin->connectedImage = load_image(desktop_plugin->connectedImageName);
+    desktop_plugin->disconnectedImage = load_image(desktop_plugin->disconnectedImageName);
+    desktop_plugin->connection_name = g_key_file_get_string(keyFile, desktop_plugin->iD, "connection_name", &error);
+    if(!error)
+    {
+      desktop_plugin->connection_id = g_key_file_get_string(keyFile, desktop_plugin->iD, "connection_id", &error);
+
+      if(!error)
+      {
+       g_key_file_free(keyFile);
+       g_free(fileName);
+       return;
+      }
+    }
+    g_error_free(error);
+    error = NULL;
+  }
+  desktop_plugin->connection_name = NULL;
+  desktop_plugin->connection_id = NULL;
+  g_key_file_free(keyFile);
+  g_free(fileName);
+}
+
+void
+connect_now_save_settings(ConnectNowHomePlugin* desktop_plugin)
+{
+  GKeyFile *keyFile;
+  gchar *fileData;
+  FILE *iniFile;
+  gsize size;
+  gchar *filename;
+  
+  keyFile = g_key_file_new();
+  filename = g_strconcat (g_get_home_dir(), CONNECTNOW_HOME_PLUGIN_SETTINGS_FILE, NULL);
+  g_key_file_load_from_file (keyFile, filename, G_KEY_FILE_KEEP_COMMENTS, NULL);
+  if(desktop_plugin->connection_id)
+    g_key_file_set_string(keyFile, desktop_plugin->iD, "connection_id", desktop_plugin->connection_id);
+  if(desktop_plugin->connection_name)
+    g_key_file_set_string(keyFile, desktop_plugin->iD, "connection_name", desktop_plugin->connection_name);
+  
+  g_key_file_set_integer(keyFile, desktop_plugin->iD, "widget_size", desktop_plugin->widget_size);
+  g_key_file_set_boolean(keyFile, desktop_plugin->iD, "hide_connection_name", desktop_plugin->hide_connection_name);
+  if(desktop_plugin->connectedImageName)
+  {
+    g_key_file_set_string(keyFile, desktop_plugin->iD, "connectedIcon", desktop_plugin->connectedImageName);
+  }
+  else
+  {
+    g_key_file_remove_key(keyFile, desktop_plugin->iD, "connectedIcon", NULL);
+  }
+  if(desktop_plugin->disconnectedImageName)
+  {
+    g_key_file_set_string(keyFile, desktop_plugin->iD, "disconnectedIcon", desktop_plugin->disconnectedImageName);
+  }
+  else
+  {
+    g_key_file_remove_key(keyFile, desktop_plugin->iD, "disconnectedIcon", NULL);
+  }
+  fileData = g_key_file_to_data (keyFile, &size, NULL);
+  g_file_set_contents(filename, fileData, size, NULL);
+
+  g_key_file_free (keyFile); 
+  g_free (fileData); 
+  g_free (filename); 
+}
+
+GdkPixbuf* 
+load_image(const gchar* image_name)
+{
+  GdkPixbuf* image = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(),
+                                             image_name,
+                                             CONNECTNOW_DEFAULT_WIDGET_WIDTH,
+                                             0,
+                                             NULL);
+  if(!image)
+  {
+    image = gdk_pixbuf_new_from_file_at_size(image_name,
+                                            CONNECTNOW_DEFAULT_WIDGET_WIDTH,
+                                            CONNECTNOW_DEFAULT_WIDGET_WIDTH,
+                                            NULL);
+  }
+  return image;
+}
diff --git a/src/connectnow-load-and-store.h b/src/connectnow-load-and-store.h
new file mode 100644 (file)
index 0000000..fcda5d8
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef CONNECTNOW_LOAD_AND_STORE_H
+#define CONNECTNOW_LOAD_AND_STORE_H
+
+#include <gtk/gtk.h>
+#include "connectnow-home-widget.h"
+
+static const int CONNECTNOW_DEFAULT_WIDGET_WIDTH = 96;
+
+void 
+read_settings(ConnectNowHomePlugin *desktop_plugin);
+
+void
+connect_now_save_settings(ConnectNowHomePlugin *desktop_plugin);
+
+GdkPixbuf* 
+load_image(const gchar* image_name);
+#endif
diff --git a/src/connectnow-settings-dialog.c b/src/connectnow-settings-dialog.c
new file mode 100644 (file)
index 0000000..1ca381d
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <hildon/hildon.h>
+#include <hildon/hildon-file-chooser-dialog.h>
+#include <libintl.h>
+#include <locale.h>
+#include "connectnow-settings-dialog.h"
+#include "connectnow-load-and-store.h"
+
+void
+select_and_set_icon(GtkButton* button, custom_icon_data* data)
+{
+  GtkWidget* dialog;
+  GtkWidget* parent = gtk_widget_get_toplevel(GTK_WIDGET(button));
+  dialog = hildon_file_chooser_dialog_new(GTK_WINDOW(parent),
+                                         GTK_FILE_CHOOSER_ACTION_OPEN);
+  GtkFileFilter* fileFilter = gtk_file_filter_new();
+  gtk_file_filter_add_pixbuf_formats(fileFilter);
+  gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), fileFilter);
+  
+  gtk_widget_show_all(GTK_WIDGET(dialog));
+  int ret = gtk_dialog_run(GTK_DIALOG(dialog));
+  if(ret == GTK_RESPONSE_OK)
+  {
+
+    gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+    GdkPixbuf* pixbuf;
+    pixbuf = load_image(filename);
+    g_free(data->icon_name);
+    data->icon_name = filename;
+    gtk_button_set_image(GTK_BUTTON(data->icon_button), gtk_image_new_from_pixbuf(pixbuf));
+    g_object_unref(pixbuf);
+  }
+  gtk_widget_destroy(dialog);
+}
+
+void
+connect_now_show_icon_selector(GtkButton* button, icon_data_t* icon_data)
+{
+  GtkWidget* dialog;
+  GtkWidget* icon_box_1 = gtk_vbox_new(TRUE,0);
+  GtkWidget* icon_box_2 = gtk_vbox_new(TRUE,0);
+  GtkWidget* label_box = gtk_vbox_new(TRUE,0);
+  GtkWidget* pan = hildon_pannable_area_new();
+  GtkWidget* buttons[NUM_PREDEFINED_ICONS+1];
+  GtkWidget* last_button = NULL;
+  GtkWidget* hBox = gtk_hbox_new(FALSE, 3);
+  gboolean predefined_is_selected = FALSE;
+  int i;
+  for(i = 0;i<NUM_PREDEFINED_ICONS;++i)
+  {
+    GtkWidget* connect_image;
+    GtkWidget* disconnect_image;
+    buttons[i] = hildon_gtk_radio_button_new_from_widget(HILDON_SIZE_AUTO,
+                                                        GTK_RADIO_BUTTON(last_button));
+    gtk_button_set_label(GTK_BUTTON(buttons[i]),
+                        g_strdup(_predefined_icons[i][LABEL]));
+    gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(buttons[i]),
+                              FALSE);
+    if(g_strcmp0(icon_data->connect_name, _predefined_icons[i][CONNECT])==0)
+    {
+      gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttons[i]),
+                                 TRUE);
+      predefined_is_selected = TRUE;
+    }
+    GdkPixbuf* pixbuf;
+    pixbuf = load_image(_predefined_icons[i][CONNECT]);
+    connect_image = gtk_image_new_from_pixbuf(pixbuf);
+    g_object_unref(pixbuf);
+    pixbuf = load_image(_predefined_icons[i][DISCONNECT]);
+    disconnect_image = gtk_image_new_from_pixbuf(pixbuf);
+    g_object_unref(pixbuf);
+
+    gtk_box_pack_start(GTK_BOX(icon_box_1),
+                      connect_image, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(icon_box_2),
+                      disconnect_image, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(label_box),
+                      buttons[i], TRUE, TRUE, 0);
+    last_button = buttons[i];
+  }
+  buttons[NUM_PREDEFINED_ICONS] = hildon_gtk_radio_button_new_from_widget(HILDON_SIZE_AUTO,
+                                                        GTK_RADIO_BUTTON(last_button));
+  
+  gtk_button_set_label(GTK_BUTTON(buttons[NUM_PREDEFINED_ICONS]),
+                      "Custom");
+  gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(buttons[NUM_PREDEFINED_ICONS]),
+                            FALSE);
+
+  custom_icon_data* connect_icon_data = g_new0(custom_icon_data, 1);
+  custom_icon_data* disconnect_icon_data = g_new0(custom_icon_data, 1);
+  connect_icon_data->icon_name = NULL;
+  disconnect_icon_data->icon_name = NULL;
+  connect_icon_data->icon_button = hildon_button_new(HILDON_SIZE_AUTO,
+                                               HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+  disconnect_icon_data->icon_button = hildon_button_new(HILDON_SIZE_AUTO,
+                                               HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+
+  gtk_box_pack_start(GTK_BOX(icon_box_1),
+                    connect_icon_data->icon_button, TRUE, TRUE, 0);
+  gtk_box_pack_start(GTK_BOX(icon_box_2),
+                    disconnect_icon_data->icon_button, TRUE, TRUE, 0);
+  gtk_box_pack_start(GTK_BOX(label_box),
+                    buttons[NUM_PREDEFINED_ICONS], TRUE, TRUE, 0);
+  if(!predefined_is_selected &&
+     icon_data->connect_name!=NULL)
+  {
+    gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(buttons[NUM_PREDEFINED_ICONS]),
+                               TRUE);
+    
+    GdkPixbuf* pixbuf;
+    pixbuf = load_image(icon_data->connect_name);
+    gtk_button_set_image(GTK_BUTTON(connect_icon_data->icon_button), gtk_image_new_from_pixbuf(pixbuf));
+    g_object_unref(pixbuf);
+    pixbuf = load_image(icon_data->disconnect_name);
+    gtk_button_set_image(GTK_BUTTON(disconnect_icon_data->icon_button), gtk_image_new_from_pixbuf(pixbuf));
+    g_object_unref(pixbuf);
+  }
+  
+  g_signal_connect(connect_icon_data->icon_button, "clicked", G_CALLBACK(select_and_set_icon), connect_icon_data);
+  g_signal_connect(disconnect_icon_data->icon_button, "clicked", G_CALLBACK(select_and_set_icon), disconnect_icon_data);
+  gtk_box_pack_start(GTK_BOX(hBox), icon_box_1, FALSE, FALSE, 3);
+  gtk_box_pack_start(GTK_BOX(hBox), icon_box_2, FALSE, FALSE, 3);
+  gtk_box_pack_start(GTK_BOX(hBox), label_box, TRUE, TRUE, 3);
+  hildon_pannable_area_add_with_viewport(HILDON_PANNABLE_AREA(pan),
+                                        hBox);
+  
+  dialog = gtk_dialog_new_with_buttons("Icon",
+                                      NULL,
+                                      0,
+                                      dgettext("hildon-libs", "wdgt_bd_done"),
+                                      GTK_RESPONSE_ACCEPT,
+                                      NULL);
+  gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), pan);
+
+  gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 300);
+  gtk_widget_show_all(dialog);
+  if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+  {
+    if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(buttons[NUM_PREDEFINED_ICONS])))
+    {
+      if(connect_icon_data->icon_name &&
+        disconnect_icon_data->icon_name)
+      {
+       icon_data->connect_name = g_strdup(connect_icon_data->icon_name);
+       icon_data->disconnect_name = g_strdup(disconnect_icon_data->icon_name);
+      }
+    }
+    else
+    {
+      for(i = 0;i<NUM_PREDEFINED_ICONS;++i)
+      {
+       if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(buttons[i])))
+       {
+         icon_data->connect_name = g_strdup(_predefined_icons[i][CONNECT]);
+         icon_data->disconnect_name= g_strdup(_predefined_icons[i][DISCONNECT]);
+         break;
+       }
+      }
+    }
+    GdkPixbuf* pixbuf = load_image(icon_data->connect_name);
+    gtk_image_set_from_pixbuf(GTK_IMAGE(icon_data->connect_icon),
+                             pixbuf);
+    g_object_unref(pixbuf);
+    pixbuf = load_image(icon_data->disconnect_name);
+    gtk_image_set_from_pixbuf(GTK_IMAGE(icon_data->disconnect_icon),
+                             pixbuf);
+    g_object_unref(pixbuf);
+  }
+  g_free(connect_icon_data->icon_name);
+  g_free(disconnect_icon_data->icon_name);
+  g_free(connect_icon_data);
+  g_free(disconnect_icon_data);
+  gtk_widget_destroy (dialog);
+}
diff --git a/src/connectnow-settings-dialog.h b/src/connectnow-settings-dialog.h
new file mode 100644 (file)
index 0000000..3a3f4b5
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ *  connectnow home widget for the maemo desktop.
+ *  Copyright (C) 2010 Nicolai Hess
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef CONNECTNOW_SETTINGS_DIALOG_H
+#define CONNECTNOW_SETTINGS_DIALOG_H
+#include <gtk/gtk.h>
+
+static const int NUM_PREDEFINED_ICONS = 8;
+static const int CONNECT = 0;
+static const int DISCONNECT = 1;
+static const int LABEL = 2;
+
+static const gchar* _predefined_icons[][3] =
+{
+  {"connectnow_general_connected", "connectnow_general_disconnected", "General"},
+  {"connectnow_gprs_connected_net", "connectnow_gprs_disconnected_net", "Net"},
+  {"connectnow_gprs_connected_mms", "connectnow_gprs_disconnected_mms", "MMS"},
+  {"connectnow_wifi_connected_home", "connectnow_wifi_disconnected_home", "Home"},
+  {"connectnow_wifi_connected_work", "connectnow_wifi_disconnected_work", "Work"},
+  {"connectnow_usb_connected", "connectnow_usb_disconnected", "USB"},
+  {"connectnow_bt_connected", "connectnow_bt_disconnected", "Bluetooth"}
+};
+
+typedef struct _icon_data icon_data_t;
+
+struct _icon_data
+{
+  GtkWidget* connect_icon;
+  GtkWidget* disconnect_icon;
+  gchar* connect_name;
+  gchar* disconnect_name;
+};
+
+typedef struct _custom_icon custom_icon_data;
+
+struct _custom_icon
+{
+  GtkWidget* icon_button;
+  gchar* icon_name;
+};
+
+void
+select_and_set_icon(GtkButton* button, custom_icon_data* data);
+void
+connect_now_show_icon_selector(GtkButton* button, icon_data_t* icon_data);
+#endif
diff --git a/src/data/connectnow-home-widget.desktop b/src/data/connectnow-home-widget.desktop
new file mode 100644 (file)
index 0000000..c47325b
--- /dev/null
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=ConnectNow
+Comment=Connect to switch between internet connections
+Type=default
+X-Multiple=true
+X-Path=connectnow-home-widget.so
diff --git a/src/data/connectnow_bt_connected.png b/src/data/connectnow_bt_connected.png
new file mode 100644 (file)
index 0000000..80afc3b
Binary files /dev/null and b/src/data/connectnow_bt_connected.png differ
diff --git a/src/data/connectnow_bt_disconnected.png b/src/data/connectnow_bt_disconnected.png
new file mode 100644 (file)
index 0000000..4b93f8a
Binary files /dev/null and b/src/data/connectnow_bt_disconnected.png differ
diff --git a/src/data/connectnow_general_connected.png b/src/data/connectnow_general_connected.png
new file mode 100644 (file)
index 0000000..60662eb
Binary files /dev/null and b/src/data/connectnow_general_connected.png differ
diff --git a/src/data/connectnow_general_disconnected.png b/src/data/connectnow_general_disconnected.png
new file mode 100644 (file)
index 0000000..87e5438
Binary files /dev/null and b/src/data/connectnow_general_disconnected.png differ
diff --git a/src/data/connectnow_general_preview.png b/src/data/connectnow_general_preview.png
new file mode 100644 (file)
index 0000000..6d8a82b
Binary files /dev/null and b/src/data/connectnow_general_preview.png differ
diff --git a/src/data/connectnow_gprs_connected_mms.png b/src/data/connectnow_gprs_connected_mms.png
new file mode 100644 (file)
index 0000000..3f9b0b1
Binary files /dev/null and b/src/data/connectnow_gprs_connected_mms.png differ
diff --git a/src/data/connectnow_gprs_connected_net.png b/src/data/connectnow_gprs_connected_net.png
new file mode 100644 (file)
index 0000000..d63c2ba
Binary files /dev/null and b/src/data/connectnow_gprs_connected_net.png differ
diff --git a/src/data/connectnow_gprs_disconnected_mms.png b/src/data/connectnow_gprs_disconnected_mms.png
new file mode 100644 (file)
index 0000000..e0ce6ec
Binary files /dev/null and b/src/data/connectnow_gprs_disconnected_mms.png differ
diff --git a/src/data/connectnow_gprs_disconnected_net.png b/src/data/connectnow_gprs_disconnected_net.png
new file mode 100644 (file)
index 0000000..81bc5fa
Binary files /dev/null and b/src/data/connectnow_gprs_disconnected_net.png differ
diff --git a/src/data/connectnow_usb_connected.png b/src/data/connectnow_usb_connected.png
new file mode 100644 (file)
index 0000000..980fe45
Binary files /dev/null and b/src/data/connectnow_usb_connected.png differ
diff --git a/src/data/connectnow_usb_disconnected.png b/src/data/connectnow_usb_disconnected.png
new file mode 100644 (file)
index 0000000..287011b
Binary files /dev/null and b/src/data/connectnow_usb_disconnected.png differ
diff --git a/src/data/connectnow_wifi_connected_home.png b/src/data/connectnow_wifi_connected_home.png
new file mode 100644 (file)
index 0000000..ae620da
Binary files /dev/null and b/src/data/connectnow_wifi_connected_home.png differ
diff --git a/src/data/connectnow_wifi_connected_work.png b/src/data/connectnow_wifi_connected_work.png
new file mode 100644 (file)
index 0000000..2583dc4
Binary files /dev/null and b/src/data/connectnow_wifi_connected_work.png differ
diff --git a/src/data/connectnow_wifi_disconnected_home.png b/src/data/connectnow_wifi_disconnected_home.png
new file mode 100644 (file)
index 0000000..ff0ac90
Binary files /dev/null and b/src/data/connectnow_wifi_disconnected_home.png differ
diff --git a/src/data/connectnow_wifi_disconnected_work.png b/src/data/connectnow_wifi_disconnected_work.png
new file mode 100644 (file)
index 0000000..a7dc70f
Binary files /dev/null and b/src/data/connectnow_wifi_disconnected_work.png differ
diff --git a/src/debian/changelog b/src/debian/changelog
new file mode 100644 (file)
index 0000000..bdf8a67
--- /dev/null
@@ -0,0 +1,53 @@
+connectnow-home-widget (0.8) unstable; urgency=low
+
+  * Fixed bug: Empty settings file or older settings file without
+    icon names crashed this widget - and hildon-desktop as well.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Fri,  7 May 2010 00:24:56 +0200
+
+connectnow-home-widget (0.7) unstable; urgency=low
+
+  * Add icon selector to settingsmenu
+  * included predefined icons
+
+ -- Nicolai Hess <nicolaihess@web.de>  Tue,  4 May 2010 23:48:40 +0200
+
+connectnow-home-widget (0.6) unstable; urgency=low
+
+  * Fixed bug in settings dialog
+
+ -- Nicolai Hess <nicolaihess@web.de>  Mon, 19 Apr 2010 22:17:56 +0200
+
+connectnow-home-widget (0.5) unstable; urgency=low
+
+  * widget size is configurable.
+  * arbitrary display name.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Mon, 29 Mar 2010 22:52:48 +0200
+
+connectnow-home-widget (0.4) unstable; urgency=low
+
+  * add patch from qwerty12 to switch to normal-mode before
+    trying to connenct while in offline-mode.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Sun, 28 Mar 2010 13:15:52 +0200
+
+connectnow-home-widget (0.3) unstable; urgency=low
+
+  * change the widget size (bigger)
+
+  * load icon from configfile (no settings dialog support to select an icon)
+
+ -- Nicolai Hess <nicolaihess@web.de>  Fri, 26 Mar 2010 20:09:46 +0100
+
+connectnow-home-widget (0.2) unstable; urgency=low
+
+  * changed section entry in debian/control
+
+ -- Nicolai Hess <nicolaihess@web.de>  Wed, 17 Mar 2010 18:20:47 +0100
+
+connectnow-home-widget (0.1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Nicolai Hess <nicolaihess@web.de>  Tue, 16 Mar 2010 20:32:42 +0100
diff --git a/src/debian/compat b/src/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/src/debian/connectnow-home-widget-dev.dirs b/src/debian/connectnow-home-widget-dev.dirs
new file mode 100644 (file)
index 0000000..4418816
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib
+usr/include
diff --git a/src/debian/connectnow-home-widget-dev.install b/src/debian/connectnow-home-widget-dev.install
new file mode 100644 (file)
index 0000000..3c996c8
--- /dev/null
@@ -0,0 +1,6 @@
+usr/include/*
+usr/lib/lib*.a
+usr/lib/lib*.so
+usr/lib/pkgconfig/*
+usr/lib/*.la
+usr/share/pkgconfig/*
diff --git a/src/debian/connectnow-home-widget1.dirs b/src/debian/connectnow-home-widget1.dirs
new file mode 100644 (file)
index 0000000..6845771
--- /dev/null
@@ -0,0 +1 @@
+usr/lib
diff --git a/src/debian/connectnow-home-widget1.install b/src/debian/connectnow-home-widget1.install
new file mode 100644 (file)
index 0000000..d0dbfd1
--- /dev/null
@@ -0,0 +1 @@
+usr/lib/lib*.so.*
diff --git a/src/debian/control b/src/debian/control
new file mode 100644 (file)
index 0000000..77f6ca1
--- /dev/null
@@ -0,0 +1,347 @@
+Source: connectnow-home-widget
+Priority: extra
+Maintainer: Nicolai Hess <nicolaihess@web.de>
+Build-Depends: debhelper (>= 5), libgtk2.0-dev, libhildon1-dev, libhildondesktop1-dev, libconic0-dev, icd2-osso-ic-dev, mce-dev, libhildonfm2-dev
+Standards-Version: 3.7.2
+Section: user/desktop
+
+Package: connectnow-home-widget
+Architecture: any
+Depends: ${shlibs:Depends},
+Description: A desktop widget to switch internet connections.
+ This desktop widget can be used to connect to a specific
+ internet connection.
+XB-Maemo-Display-Name:ConnectNow internet connection switch
+XSBC-Bugtracker: mailto:nicolaihess@web.de
+XB-Maemo-Icon-26:
+ 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
+ rrXMt7o8dgl12aBtrzxThiqvaLqnm2e+p7119cpj/Cf5p1uZf+0cWxpvLLTN
+ apBZkH3Y+JhSEAo3tMNqXkSJ8DKmqU/V4XhMTpQHIzVBReziJro3uW455tm3
+ HzUs3FP0uOhjVta/IUi5BD91DsDO3EHWBNQFMCohMMcTWKjt4W/cT4kiDlAM
+ sgZ0eGtR3eqR+TCxYGTA6I3DG1Z0q3al+l/B350U4Ff3sG6qbpfujjrwdv/b
+ LncWJ3sc+XDw4NGePxZkVEpvmvrQkEQPlOdKPTqCNmKmSEMnOUSdLUdiL7vj
+ A23FKvsL9pbWy5WbHi6e9zzztIl+/X13+zW16u1q5Zbves2Cra5av7GOU06i
+ EW5QIQqKGxenFJ9UW2dcT1+evlhXGO8WfzThZKku2ZAc+MNZ1yZ/XH6LgmS1
+ L+ajrgBCMFQYlRk4Y8pSW5hGcsaTJ49vPObcrTHzY+fFdChWR30cKYc7eB1v
+ r7a/0f64x2rtMO0w7Tjl7+qoNix4nBNG2I+MHjbJe9yK+ku8litfThSn6obp
+ ysk7OEMqrUctyoYqF6IypsOLzsBcLpUrRSuAr3JVEQEAWA4A/2kDstkNHQAs
+ l214FyDvi9qmR4DYh0Y0HOCr7MJtANWWp0sbFGjOigPmH+mHTa6VnfUTs9oY
+ BQBIL/5eHFXSzNT29JbTZ85+Sco9dv9oq6MrUvINWaWfDe9kX1qlfCETLTR2
+ 5F2yLt6JqTyUzGDmecnzvbuvRcfWUW0SWr92tgoxhdQL2V5uivcy750VN9g4
+ Wp63mm11QtPBLFPzSdNVlKMg8qROCAIAdAI4kZM5G0tNgcYKpgtyfIlNiSjp
+ bbL6tum717fpRb89T3px4MXirJb3P93rfn9jdkCq9kfX5Kf6u3ydVivtwWQn
+ uige5J1umT4qrYVx+fYqWzZuy0gql70k63nWIUNCv0/9W/eP9dFYX7S+bl1F
+ Y7KeZt3bqqMmhXYqXUUsFak/5VipQb6mRPQUbQHaB4OsBchQ9EI6oPrAGjmA
+ DKGecjyAlgCm/ZcAppWspR6Aas7veRIgrsAJaYCq5bnyKUB1uaHsCPAVFIiT
+ aJxfq2BAQTf1zQGbAy8OPkt63UomXWw5p9g9+tTnr5/1Bd/vpt75fnd9drKh
+ haGFMZ13i3m0GnFoZ/I21eLFmOIw0bnAKVkzrOetHmu7bXQN7ti1Q3aHZPeR
+ nqFe6z3zrMcptZXlCtNxhP5XDjkD//l2938UciEPcsZMs2xzmF0RsIc57GGO
+ GnC4VwNOCJ4S/FdwnOPsjqM65HXQV+hyK/Lm+FuNU79f7Xpl9pUpGd+zH+RE
+ 5jY3TRUTlEhlEjYVnSudW/pT3j086FDbozeTV/y4+KNGaoQusFqHagVBnWyv
+ PXj58PijxVkf82wL8goy1QviG11HFTRWQ9UdAgBvx1u4ALBATZMAUEWGYAyA
+ rqyyw3/V+59G2G2wa45bSFCgj7/PK59li7bRDBFu3sNhDhdyQ7mBsymfeshF
+ AMAJJAEOpOGYCpVPq+5yMJZzE2yFBhoahVR+jBhRKlppGmAlP8Qs3gQPriHf
+ qZ+xqKpataQqrDaOGzg+e1zPSuPrvqn7sc4l56eay5oczSNh829a3FO2k134
+ S0G5gu8Frsb6yaU/NyTnFw9LTUiNTP1calEYUBhR1N64Boxl3A5sm2ZLtrfN
+ DlYY6b7b/Y2lhUeBR7B7X+vVdrft7tk9MLshzotr4jL5/fvAaUzlTUIWvX78
+ etDr+dm1dnfctXdPjcTZ0U+iY2KGlWymSuIB+mM7tKiEZKSoVnI3l2KyuEhX
+ OBj+qAUnMoONsBTeYh4Wogh/ogMU1OHGIhjACJxQgwA+i9pUhZwxWf6tVstb
+ mxT3bVHS+GWT0//OCE5/8TnmXw/ABWqJaoC8xowbgBKjjjddAtgGbjgG4B0W
+ oAFAVakeFwIYyZ64D4WOYSFdwGJEi0k8G6WUwyViNCzkGC6RuwF84yFyHc7X
+ WVvHUMfZNnfGj5nq9Jf+mysPrjyvch27d7CDBtMA+UAelkdhkXQh0SppYiE9
+ 8HoQ/WBP+rTnJU9dn5fm9vgZn3wuebb+flFMMRc1UmsaN+n3Go/LNFgKL54O
+ mHXTfDLfKCJtTLanbZ4rnzyLPQ94frYYEdI65GDIHsfrrZu0qd5qv9shn3U+
+ e3yq2n7TmDRpGimyG6Y0/Nkw2SXKZbJLtstJrfeOZdt4x4S4ec/Es9XPmuXv
+ oqEKK5MxQVODhpIdLnBXGkm3oJcSFxAKLWz5Fi8FyXnIRDYAS7YwmQHiEbeg
+ GwCy2JYHATgr/0QEgOZ8Ef/VCf6fLGiNdT3rKy7l7OvY1Xfo2eIleeA+ndA2
+ pb6w5q8oFRHoJrcC2MnfoAHUbTyTfwCURd3QGURjeaz0gpmU3IcCIdTfZCCf
+ w1vrnlb9rfoqq6fXnvF82lrfHjVH1bxec7fTUVhAAEBJt5IeJZtMh66FXm1z
+ veRn8saxGwduqBN/5N6xey3v/5G7MDMjIyDznjG9tES3XF9F9pWLZKxxNJoq
+ fpRJiVRCH+mB4kVZ6gd1tXoELrqXpdOLF0qb9OC0o2l7jUciwyLHvu5c8Di8
+ 0ctPkQk518zjLfaYf+csn6veH73jrQ1mfc06mHUQNRxbO/ZybGwx0/6k/Vr7
+ KZo2Dzs9snswMfuh4YT+hPEE35I38YjOwB0vuCObYCZrwxVRIDGDQ2AE6C/p
+ jdYAWmC/3AXwGq4rZwM8DNPwg6wwiJ3YRvcsf0nBk3yLRw2LDSUxxWFZWeLf
+ V/QM/oqJgOmzNKkrAWMWf1CXA5yDJfwIMM3GMPEWMN7i8egL4Dy35nGAnCXH
+ oiJgqi6f0jZA+nID/gLQQNzm/jAzzZA58gzfMLzSTzCMlgn/XC/XJedJ7gj9
+ 7V2Hd7X8+2nc/XUNNyzb5Jm4PWl+0qQf3/QzSIg0KsZhDqZ2tAN/qfdUOxmO
+ O8ZzhmXGLxyoO25I1vXgpNJNBl+9JycZS0zuxtEcZFwt/xBfcJeXUZDIxGJN
+ oXDge9j/PfJbr28++gHrr65/selb4sxdlXfxno1xH3Km5nTOWaefiF8fZVXd
+ R90m3Sy1hmwuz4pGeIXXqC2/QYPB/MOoA+RZ+V7NBshLbWCaDBhLebY6GlCP
+ oIN6EZAz+Si7Amo0unNbQK3Oq+RQwLQPK6QA1Bp4gwf/8YB/QxD/yeP5IoCd
+ fFx+AMhDbiZzwHiWhiEQwF9oxhcABOGo3A7QZCSqawBUhVZZC/AY9uGbAJzo
+ sTgM0Di6QUmoVlK16FjRKfkitP2uCaFtvumiPkf9+DS/4FRc7a8Z8c2K+z25
+ /NwxfF3BUHlYnWkI4+pKWzGFhmG1nGOaxxsxwyzD/LNipFWBLwLnV+5sea7G
+ shr7qsfY3nT1d53jesPiCj+hj3gFZBxP16X/rpfvy7+f9Olg4bn4p3Eb4teX
+ fjL+ZjToo3gudaE3VAcbDK66QyXt+NqpkSdsTjxOW/bNJcEsIb60XJUngY+D
+ 3K1tnix70vXRyVxNKYpHFf0pI5UMJFIRQkwzsJr1AJ5zMo8FeCGaQgNQLCpS
+ NAAdhnEQIJvhG/YDdAUfUQ/gTlgEcwAP5DreDiCIE1QHAM/w1/8IQNV4qIwA
+ +K5sj22AjBNNuBOAVbxCugMwR0dTDwA5tAv5AOt5Aj4BHIfy8g4gamOP3AGw
+ PaeoAwBeR06aDxCojnOsQ9PYrl+ufnlX+iHmQvSRz3tLbGiD+Kn0JSexWflN
+ JOAgnPGSHGBp3GS8rCbgRPD4qi7BeqstAzcOrt2/jXtGyIxGnxuNLGewv+lY
+ 3kFrEab5oXzRzKJTOIP1yAXU/mqwifj33PO51fP66duGf3xhFz43K+1E5xN/
+ nFZTukWPiH4bfaVkoTJLBIGw1JTGLaQbLj26+GTHszf5mgcVH4c+bp/XQtNH
+ IdJRktKK0kUYmqrHKBKjwIiWUSIWYHOqIfUApiFYbAPQSdrzKkCOhQV8AVpC
+ 7xkAJ7ErBgDwxGRyB/i8bMWtAdrDl/8J/P8jAJyQRWMAFPBjaQdwXzkJ0wBM
+ wl14AziDYfgIcBq15wcAdeVAOgDICHjJvwE1CgsRD4j95IKDAJxwTo0H0F5O
+ Q10wDaRdIhbjNXeV5qIZAVuoGJm4JAfJTLaESQ1DPtfE+RZXm7VpOsq+1Ywe
+ M0ZN1/lPqFS10nufGjav8R5OcIIVAAOAM3D/3zRUeaKUakBnyqEcykGLrnbd
+ +nSd6qmt8bPmiho1HH1Cq4T67B4a/+BW3nW6PjxnHbqIGGUtpogJiiuG4rQ4
+ xFOU1QQsRAIeY7xcJivxLTDuUQ/6DYADv5UlAO9DJKYBNAsLOAaQbvyIwwH8
+ RCIWAWop7cJFgCqiF+oC9AY1uB6gduT6fAHga/I+xpZVOvO/BJCh7CtPANJf
+ OqlRAFi8oyhABFAQ+wIIZx/yAfgI5nIqgDN8FkkASd4qXQBZQI1pB8BDeDWN
+ BXCNIkzNALxCDXQAsEy9JM4B3JIeYxGAnRhECiCdpQPH4ION0Wa3pb/YMFAM
+ 3DRgrkdRpU2Vhvk8tPm3W1e3Tzdad1A9HBvxpVrs/IL9CbYJ6+MfFm3izlCp
+ HeDbwPeAbxub6QGTAsKqhNiN1h7SbtSOVYZX7FaxS0VYm7qnd7/fdUuF4Edm
+ D6c/iM27U3SguGqJRp5WbDmdpqKOGogzdAxQTtABaQbgNi5iIoBxfEAcBqBi
+ LLYCPF2+RlNAPhSpPB6QB7gBFwBiAdenvQAOIZ7mAHhHgbwMUPPxGe8AeZvH
+ cT9AutCNf8d+XPnvEHSSU1kLwFJ+YidAFfCWxwA5l1tQR0BMJcG2AGsRwnUA
+ fgQX+QqgbxAYAiCH63AewLt4NOoBYqXoh8uAtMQkjgA4gy9xEcA3+C66A7iF
+ r+QByHLcxbQPTvo+ug26wZycNiXte1q+vr/RzKAajHJgVtVs+6xc/ZxDCw+a
+ H05JCr0eet39ppptl78kd2lerOkER2GodALsgx2PObhr7DtHdPnaOc/5y0gx
+ wnJ4kfficgXlLrpAa0o9kLohzUFXqis1JBoacYl8xzdkHpzoPLdXbgPwRlc+
+ AMh6GCUXA5yHjUo0IAUKZE9AeKKbag/ICTyPhgPQy73Kd4C88V79CMhgriya
+ AGxPjZQQQDnIl2Q6gBdsDm8A27DFFAOgPDpxrf+7EPSB91JTQB0mF/MVgOuj
+ QA4GqCszOQLSSZnFTgBVYC+qDaA9D5WrAa4tmopuAFeEL48GcJIfsjegfuEB
+ 1BvAXPTgLgCHykjTIoDq4JESCZATDPIZwAb0RSx8SpfpRhn285ntl7bN2/n2
+ +x8RR14ZIwLy+Nv2b0uSOumOfJr0PvL9mmLV1AzXoMJOVOAXogt+ym6oyAOB
+ vJk57/OumeyObTiecaJ/erkPP99N/fBH4bBK871DfG5Zrnq55FXYqzcFc/UW
+ OhvDBT6NcXQcC9FUHQhSkwFOQTd5DkAPvi3OAvgiXspZADpxBL8GeAjHYBaA
+ HciRoQB/ww7KAcQl9ER1gIukk3wAcAb5sx9gmkjdaRtA96i/qRogpRzI4wH0
+ 4v1cA8AaAC//Owvajh/cCsBoVJWLAYr+1ffDTfEQBHAddR5tB+CPQaIjQC3h
+ x5MAdJZepgiAddDjBoCdXKRsATBC3sEWgLKgk44Aj+QW1AWA5a9Xc66IQNEd
+ gDnucgpAFdGET6B5+qZ0Q+oo480LrS72u2ifNV2YsBOO1FnTT1kurmKMKBQj
+ ieleubEuHVxOaM5TDluiN5DpkPUyy83UB6+klbqbW76v+s7z3YqSHu+3v130
+ pl/xZeomligptJEiRGtlPzrBl4/ybUieh4rcBKAL9AMjALmDC+QbgObLaPwG
+ IIHjaQfA/TFaTgJ4MJrTQIBNeC03AupW/JB7AXSkMOwFUIE3IAcgB9bTNIB7
+ 0xpOBaSX9JN7AKnnmrIUAPATzf67LygQmVIDGJbJMNkQ0KSLTPEHQN/xN9kC
+ OMn+PATgnrRAfQJgHkahKcCHpRMvBTgH7aAANIKKTVcBBPMWrgTIWfiNCwDc
+ QV2lGOA2cJWxAEbxKbYFqD3s5HhADqYfYh0kXcMTNkcHZSTtEnMoCg2oGb/G
+ HPUznIQfHR58f0DrgWmuLwavGDx/0FGv2ShHQSgAji87XuFEqx8vTgaciDqR
+ kDFV/YP6QMfT+KrQKEPoE+rJwTiJDvyR/U2nIWkA+6A1IMsjFgsASsbv9Aag
+ TlgglwDcm57SdgAWyCQzgE9DQQnASzCGBwDYLZ+pCwBqSY2oK8Dj2EAjAI6F
+ N3IBVIcF3wVoGpoiEMBN3ohrAB7hHL4BAK7/bwj6ISfzYEAaZVf1EaDOxSd+
+ BdAIvo2/AbyhTXQFUI9zAQUA4hDv42kAF+OK7AbQXnSiywC1wHVhC9BLmJuW
+ A/IKLoi2gGxJQepSQASglpoP0DTupqkO4Cs8+S0gR9NyrgYgke+TDSDi4COv
+ A3K7XGCqhqvlH7nbuO0xezMkbqgYct7Ly+enj6v3bZvzALIBYMj4IWGDf/My
+ 3Am9HXE7PvfNz5spc5NrGZxojfAT9hip/IaXSibA5+UL+RdA/fmk/ATgL6yl
+ HgAE3PkhINvhEXIBZFElpRsgh8CVzgGiF5xoLcBm6MFtAPIEywwAhzlcbARM
+ Wr7LtwFMhkaMB1ABadABZIU/uT2AeHZmb4D7chL+BHD1f9sAA5rzKN6GfDlD
+ Bsm5KOEYtMFaFNE9HMBj5OGHul2chEn4iRpqPai8EVMxEKpqh1ikQRUm/E6/
+ wUQVcE0tgYnqIpzPw8RjsYazwdJL+vFrgMuhNh8F4I0P6gVAqQkjHAF5DYPV
+ 9QBncoJMBngaaSkZ4A/yo+qMz7xLrlbX8hNMxxCegOv4HV0B9Po3hPbDbNTA
+ dfULW1AgP2F7nkqjMUBckj14FaI5lE6rrwF+xAZ8AKguT+AwgM+iC+0G5B+4
+ oAwE5CmehEWAEkdrcB3ADXpn+griWmhM76DBbZwTi6GR5fkK6kEjv+KY9IaA
+ 5H10BAo5UXfTKWj4HMJpAzRshSvyCCy4nDzHNiihYfIaf0JeWbX1ZQLQJA7g
+ 3cilo2ySuVKDA7STb1E32i1H80qyRBXUg4VaiCb4XbaQlymIM9AETREk7+Gn
+ OIEQDsZbYzEaoR/WohYa8UAU0S5qQJmA9IYjt8Rlfg/GYcwiOwBPebH6EpBG
+ 3ORzAI+ha1gLwIZbcgVAbsECqgTgM3x5MrJTnVInJ4+Vz/c/3J+43zVl1NCB
+ Qx2GDvAcgnTkwwAc7X7U/VhJyrHU0uRHyQPlAa4gh6jnlURZFZ34IrbxA3iK
+ 2gB/BNMKgArhhEUAX8RNdQhAD+ma8TDA7ZFGVwA5jyeKDiBMx1S+jVzRjI7w
+ Tn4FLY2hlgjnMVyARERgJmaJ+UjAddTn4Yigo2glb3A4x2OssEQ4HSSmqvQQ
+ ubK72gZH5FbuIn3oEaagFc7TvDIBxGfpIn+ajpq7qa4mP9N9Mz+TSrfkV7PF
+ 8pZ0lhPoPE3jp/xaLOCZkjiEJnE3niqvUx/eDkvWiLdcnnfgdxEm63NTeUCs
+ xToOk23oPS9jPxCtp2XUnz7CgJaIpAoA5yKCYwGaiWQuAvAV1XAcQAgmi04A
+ JvF1JALsgvt8F4QbqMoxuLzny+783dcN986fPbvy3LofW/k07sIFyCqfvTX7
+ q/Eeu6la7ui4HZXIHU8xCD0RwGPAuIzHmAxgDOqSP4Dx+M4BALVDAAoADkAy
+ 6gKwwHE8A1hHN0QPmItEOKAXz6J59JFucGccxmiKk3WFr3iPMNmT4+kQdnKw
+ sCJbipP74UKqmM/1lfX4Sv6yASLFEQrjJjwEBTzGrLWpodSozy1cy14fq/3r
+ AZJ4PX+hvaqj1PILHKAzmMmt6LDUy8GqJRFechXVmxqzHdvybvqDx3EtLhaL
+ uQHc0ERYy4GcwsnCip7KavRGdIARm7FPLOGFfJrP0wE5FQq7s557YwC3A7gT
+ rOk8oOTQWdkEYGv2pcEAshAvpwLkiGx6AMjKiOZ4gHTIghWRnCG1Moz/Tj6a
+ 1jXVVe1NTrBHC0AZhGRRX1RnA/WiHnSOo/gs1jKL1xjJ1gBmYzx7ASgPL2oM
+ 8G4U8QCAlyJPhAFIQYw8BtAZcpcApMoFSjJZ8Ee0oH1cTDbkQH/KDrSMZhKj
+ FE+lDfvjIy/HCxHCz9iS9tIoPKfdgvmabMyr6SldIoPoKIfRHjxEIn/k/jjC
+ zfgGZ9E/c+v+8QDo5RTuip7IV5/Kp3IfSsQzLOC2KJLb1L6qGVQxCLW4Lkp4
+ FAZJG6RzV/mGpiFVnuAS1IEFN8YC2Q2CXWQ1ioeixmKlPIZMfsOOPJWjcY42
+ 0EhEUxV2EfMBvMJKrgoYw6iUBgFiNHJRGcBc3goBoBGMHAXgMjWEDpBvEcm/
+ cRT5YQbeIRVhnIxw1GZnms2LAXUNv1cjkcprkIgijsJJHIcDonkS7glLQNqi
+ IfwAKqB+8isgavE6qglwIaepOwGcRUdKAeR4PMVdgHtSE9MWjkYoKojrGE1m
+ 5IeLcMFX6iSGwsgpdIaWw0DnaTp6IpmrcJJcD1AOz+AkqGIZmSkvINXFZCQT
+ iI/QWV6OEpnOEbiBPDjBB6H/tgEADeTNVBeQXtJctgJkD45Eb4A/8H35HJBT
+ 8JoCQHyG96A+WJJ0V735goxRtWp3fsEP+CaX5ypiuHisBGEsO+MB/QnCfJYI
+ B/gdbnEUQNfZU80D8AQPYQUgnBOxGGB3rOBGAFpAwXaAE7ENNQE6wwORCPAI
+ hAsCuDts+SQAN4xkdwCBbMJxgH2xHEkAbrMf3kKgFVfgqfipbuWN8jIiqCVZ
+ kwtCTBr1gboeK5VETX+lJRbwVHmXp+MFDaFuiEB9uk8T6Dk88ScH4xEgv2Ae
+ hgMUQj5YAYiFFI4bAPegbI4D+A2p6lBAZJIvrQWkJ3rhCYDTKMdrAFRGf9kP
+ 4BC5HHEADvMpub3M6KH/nYb6oya/A7i8vC/XADydZuJ3gCtzbbQDKJZd1HtQ
+ 1W6yEdoiNXhwcJeq/bURIbUbrQuJsZ2Tcjj1U6qDKf1O8N1Ld7SlmpKDJddL
+ qvNaviqf8zz6SzmrPFAGoLdpN3+V7fFO/i6ZH+AzijGITsNFqam0IYHOqpW6
+ RnXGAWpKRmoLc3okxol0tKcoHimvwUX9InOkF84KX+pIreAs3ERHMRz95EQZ
+ LwtwyeQha8jbeOE63aW9S4zi6De88ku/emY9vs6PXR5731C+58se83rWt/U5
+ H3+h/wWHwsjgjcF3qqaYT4z3iNsX99C4JcMxY0lGc/UV90U+3YKdsFYaKUF4
+ T39jCZoiX+1EI+RImNN9TMdbLhCNqT8946+yvJItitCPHpGOnqISnAlIAKgv
+ FSAG4M1YQuMBXOaFCAUBv2Zt/qczbjcPYms44Hc522SFBriPMOqEAzKTf4c/
+ gDDZWU7FG8fJzo+chdK14+hOMZ0q2WteJD0LfX6o5E99oGGxfiw1NQvQ+Jgd
+ Iv+2L9sGtO1ntdz7vjf5jDC/f/Pu9fnXuxRJ/7gqb/37m5/xr+7v4r/CrDQz
+ MXNjVoh6/NWal0/CJ+gWty/f/n27L9YJZhHm5c2X4/nj3o8Dn7wqnZi3Ju9m
+ 3iF1R/sd7Zt2uGc9J8eQ7Zy1RE0Ju/dQPnxSUqWpdePpTY5ZNnav4znfo6NZ
+ qPGzIcUwnX27D+neoXuQbdHFM5eCLtUuSO7Rs0fHHsftEpLrpIan+JjUynq/
+ aN/jZsirlueR11Z6VR9RI6emh0VwpTaV7lZKMOt8J/Ku090uxePdG3rsdc8V
+ e4tOFR4u9DMlVHB2W1N+pNKg5FZJh+ITar1v8380/HFPb5U+KN0iLdcQKTLp
+ NbxRm7tRJvmAuRRf1E/UgHvhGU9C218TNP4VgHdyFfbjRLnd9EEdQfVMY/gt
+ +XE7BKA6cmQLRKvvZAVp5C9OgxwT7c8oxfrfSz/pesl9D4IfrHwQU5xheiYb
+ mRoLD9/elRb4miws6y+rF1vPXLsnfl9CUkIlk1ebT21et7lqNcX5qsueclpN
+ copPikfqRVODqpuDNgcFWcwr3Fdold9dLgjsG7Sj6imLWREnXk165V3at5l7
+ s6XNylsVwA1JkFy5hWcLpWWCTYWSP0q6FWtkhUz3zIsZP9Xm9Zs3OFTf1rLJ
+ GdOZOWe2FeQ4T3bq45yhPIkujj4Z/UG/MY6++sXVNO58c+Rt/Jv1pVOCLANa
+ Buy1+Nu+nv1RO0ex0GW56w6XVpojdT3rbambbVkl6XCSddJS45zWpS2PtTxj
+ NVUhJVy0Q4B3XKV1lcZoOnpu9Ij3qKN58N3vu8X33/U4dvfYuGNnDR95obxm
+ SuAGMl7043j05D/4ntILgSii9+o902P84BK5Wd0FALiFP8o+SfI103RTQ+O3
+ olCThTrQcC2lI+fJhapKcTxRvSBTQbyRT8nFFJDzMDsmJ1e1sYi12Gl+l/o3
+ d27xd3M/60dNljSe3OSR5VqrH1ZXrDaKk3KpXCddkYKxPI2PA9wbrtwRbrrZ
+ patL78idr7aGTws/X9o3+3DOm+xp6nfzS+ZnLTqTPqlC4ouktYb5r+u83f1m
+ oq6HZqfZLM1BHDcdNz0xvsa6D+M+1H6XozPe7HSTbhYURhTVL04s+Shnwwv1
+ 0QeO+IAKlE3uOZdz5+SclhOMUwxVDInspQQqb0UQ1mSEZHzLqGfqEp3yucHn
+ y/p6tTfV6Vz3tGWq9FBt5Sx+zI58ie8jBnvYnkdBZ5qlBqvrsDcjKvN65lbT
+ Mw8v903uZmbtoiZFNY9y0F1wbetq5VrVbGHWiazwrBPqJ5ku+9AYClAnSj2b
+ gWQVWU4dT1/U9WpbHpy83eShvpevio6WxZ2rZd9mlO54ja3YpQyg7+IPcdFi
+ k9CImbQ9aAxi5VCqYPEHWkFhR9IVJ5QsLXnANjnj8jJz68gHdYLrXq1zwnqH
+ OlW+k0Mx8930t1bvPPQdRI7STEkS692+uG52PaqJvf36Zuit78X64uMli0tP
+ yg7JrVLO/dysbjeO0880dObBKWYpT1JqqmvymuTNyV2pDkh5l2KZ7KGeMcTr
+ Txga8h8vW77sGJ6pa1Ahp/xW90qaLYXPC88VFsnZ76q9PfF2o6GG6Cj+EjsQ
+ WuNq9YnV5ll4fiz4eO9jF/1upxNOa52vKYuVMUpPJQDLv778+varo/H2mw9v
+ Wr69rrem+2IxfULaC7tnXZ5nlgaqe9U/ZAGPdhNuGrevyvpb82/Z3mpV7J1h
+ ygjIaGUKTm6T7JrS2Nj20dSHDR4NLz6VMyLnWM5FU0HM95iUmE26ZtyNv7I/
+ J8skmDOjI4jtEFh833DT2Mmw7laB2tI0Qq0bvemX3Ysty8YFmZVNobdfRdWx
+ H6O8isxXWdyyaNFlhvhKE5RGbR5QXZRwoe0ZuRRNeC4OmbrJUBlPJWySfUz3
+ xS0Mh0pvhKdYInoqDqIfn5V56jOxUx6Uw5GF2cp58bvSn/pwOttKE77SQrGF
+ dqAht+azfBmv6AYu01dUkEHshP5IpQixktejARfJyViNl2ImfYEVAtUdMoM7
+ 8yn6g96RJXlqHMV4MQW9VZMcYlqIC7IZ/0lVOFczQlmjDKL+ajV1vvoXH6N1
+ lIFYqsgaWCIIdkIropUfaGhKVyPVM7xKk64YxEeaJsNkVdkQYXySFfrBP0WI
+ UlU44JHwxWjUk+XU65wmH8nHiqsYLbzlML4nc9iWtymfNZ3M4vklNcCf8hTH
+ 0RXYi8uFf5rey2Pyftghw0NDZV3vawfhij5Y/OPnL3sXbP5nova4X7T6+xcd
+ nNAL4WhQYaDSQ0nRmNW/qTQTrZTw+ufoJmUCHov4GV2RQ8wrcmUexE2UCMxm
+ PSqKUyjFGFgoM+DDE7mR6MxTuLnYSp8RRl4ogqRidKfWAB/ARJQAXI5+43CA
+ 2nFfXgngECqhH0BXkQAC0AXfxCUAr9GOPQGOgydvB6DgNOoDvBIe5A1AixC+
+ DUBCR5MBEY5zcAU4Ata8CqDy6INgAFcRg2kAH0YqrgN8DBl4BJAHvDETwElU
+ RzKAKThOu2COITiJjVwXwygZlvIhMdXg1fIglUcFCld3cDh3RzvpKGxoL30w
+ zJN+0FLz5Hx+rH5Xk1+FmFaom01nI1NRBSsxNqVsgnZe2Zy6kuFlAii3f1G7
+ uEyIsvHrtrEAABsHwjysw7lyfchItaiVsxuawRU9bRpyc0zjG1bxVJ73oVA7
+ E+OhIts8HifwAdFmc3gDQD2V8qgKyXGoTy1gDSeYeDsCqSoAe2TBDoABcTwP
+ QEUQVIBuAqgMcAs40msACfDAYwC2eIebABSY8WYABBUaAITq0ABQ8AMVAaSg
+ kKbg1zou8QDyYeLrAKqhJg0AqAcKeCPA+2ELPUBjYQ8NwLcgYQYFUYhHJlJh
+ g5aoLlvCAwpNN8RTO8TzLeNC9IYNNPqJOEkBVE43CXUQgvqF9vw7d+D1mRsw
+ FtPROfPX6jJF+WULkxTqy0JP2Txp/cR/BChrFCy+lwlR+xctt5UJUqmMjmUs
+ W3bFqk4ZP5QdV7fsPGXLs1iUJbmamLIfIWU04v/b5Z9xC2m/YPq1cgsMo8oM
+ F/2LurKRq6V2ZYYt/4slZQYvDir7f34Zu5cdd7bsPNb/F5X8C7tCu1YvAAAA
+ AElFTkSuQmCC
+ ====
diff --git a/src/debian/copyright b/src/debian/copyright
new file mode 100644 (file)
index 0000000..a52c8a7
--- /dev/null
@@ -0,0 +1,26 @@
+This is connectnow-home-widget, written and maintained by Nicolai Hess <nicolaihess@web.de>
+on Tue, 16 Mar 2010 20:32:42 +0100.
+
+The original source can always be found at:
+       ftp://ftp.debian.org/dists/unstable/main/source/
+
+Copyright Holder:  Nicolai Hess
+
+License:
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this 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'.
diff --git a/src/debian/dirs b/src/debian/dirs
new file mode 100644 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/src/debian/rules b/src/debian/rules
new file mode 100755 (executable)
index 0000000..f256356
--- /dev/null
@@ -0,0 +1,105 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+# shared library versions, option 1
+version=2.0.5
+major=2
+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
+#version=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
+#major=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+
+       touch configure-stamp
+
+
+build: build-stamp
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/tmp
+       $(MAKE) DESTDIR=$(CURDIR)/debian/connectnow-home-widget install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_python
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure