From f532d8fcd236be9933e4186a95561e1c264de277 Mon Sep 17 00:00:00 2001
From: Aaron McCarthy <aaron.mccarthy@nokia.com>
Date: Mon, 27 Sep 2010 17:12:02 +1000
Subject: Removing libconninet 3rdparty component.

The use of libconninet caused Qt to have a cyclic build dependency.
Which was solved by embedding a copy as a 3rd party library. Maemo has
since donated the libconninet code to Qt because (1) it was a private
Maemo API and (2) the Qt ICD plugin is the only user of the library.

This commit moves the relevent code from src/3rdparty/libconninet to
src/plugins/bearer/icd and deletes the rest.

Task-number: QT-3893
---
 src/3rdparty/libconninet.pri                       |   18 -
 src/3rdparty/libconninet/AUTHORS                   |    0
 src/3rdparty/libconninet/COPYING                   |  510 --------
 src/3rdparty/libconninet/ChangeLog                 |    0
 src/3rdparty/libconninet/INSTALL                   |  229 ----
 src/3rdparty/libconninet/NEWS                      |    0
 src/3rdparty/libconninet/README                    |    0
 src/3rdparty/libconninet/autogen.sh                |    3 -
 src/3rdparty/libconninet/configure.ac              |   86 --
 src/3rdparty/libconninet/conninet.pc.in            |   11 -
 src/3rdparty/libconninet/debian/changelog          |  305 -----
 src/3rdparty/libconninet/debian/compat             |    1 -
 src/3rdparty/libconninet/debian/control            |   39 -
 src/3rdparty/libconninet/debian/copyright          |   19 -
 .../libconninet/debian/libconninet0-dev.dirs       |    2 -
 .../libconninet/debian/libconninet0-dev.files      |    4 -
 src/3rdparty/libconninet/debian/libconninet0.dirs  |    1 -
 src/3rdparty/libconninet/debian/libconninet0.files |    1 -
 src/3rdparty/libconninet/debian/rules              |  123 --
 src/3rdparty/libconninet/doxygen.cfg.in            | 1147 -----------------
 src/3rdparty/libconninet/src/dbusdispatcher.cpp    |  611 ---------
 src/3rdparty/libconninet/src/dbusdispatcher.h      |   91 --
 src/3rdparty/libconninet/src/iapconf.cpp           |  299 -----
 src/3rdparty/libconninet/src/iapconf.h             |   84 --
 src/3rdparty/libconninet/src/iapmonitor.cpp        |  110 --
 src/3rdparty/libconninet/src/iapmonitor.h          |   48 -
 src/3rdparty/libconninet/src/maemo_icd.cpp         | 1316 --------------------
 src/3rdparty/libconninet/src/maemo_icd.h           |  182 ---
 src/3rdparty/libconninet/src/proxyconf.cpp         |  392 ------
 src/3rdparty/libconninet/src/proxyconf.h           |   53 -
 .../libconninet/tests/ut_dbusdispatcher.cpp        |  191 ---
 src/3rdparty/libconninet/tests/ut_iapconf.cpp      |  186 ---
 src/3rdparty/libconninet/tests/ut_iapmonitor.cpp   |  118 --
 src/3rdparty/libconninet/tests/ut_maemo_icd.cpp    |  274 ----
 src/3rdparty/libconninet/tests/ut_proxyconf.cpp    |  400 ------
 src/plugins/bearer/icd/dbusdispatcher.cpp          |  631 ++++++++++
 src/plugins/bearer/icd/dbusdispatcher.h            |  111 ++
 src/plugins/bearer/icd/iapconf.cpp                 |  245 ++++
 src/plugins/bearer/icd/iapconf.h                   |   74 ++
 src/plugins/bearer/icd/iapmonitor.cpp              |  130 ++
 src/plugins/bearer/icd/iapmonitor.h                |   68 +
 src/plugins/bearer/icd/icd.pro                     |   16 +-
 src/plugins/bearer/icd/maemo_icd.cpp               |  849 +++++++++++++
 src/plugins/bearer/icd/maemo_icd.h                 |  174 +++
 src/plugins/bearer/icd/proxyconf.cpp               |  412 ++++++
 src/plugins/bearer/icd/proxyconf.h                 |   73 ++
 src/plugins/bearer/icd/qicdengine.cpp              |   14 +-
 src/plugins/bearer/icd/qicdengine.h                |    2 +-
 src/plugins/bearer/icd/qnetworksession_impl.cpp    |   12 +-
 src/plugins/bearer/icd/wlan-utils.h                |  110 ++
 50 files changed, 2915 insertions(+), 6860 deletions(-)
 delete mode 100644 src/3rdparty/libconninet.pri
 delete mode 100644 src/3rdparty/libconninet/AUTHORS
 delete mode 100644 src/3rdparty/libconninet/COPYING
 delete mode 100644 src/3rdparty/libconninet/ChangeLog
 delete mode 100644 src/3rdparty/libconninet/INSTALL
 delete mode 100644 src/3rdparty/libconninet/NEWS
 delete mode 100644 src/3rdparty/libconninet/README
 delete mode 100755 src/3rdparty/libconninet/autogen.sh
 delete mode 100644 src/3rdparty/libconninet/configure.ac
 delete mode 100644 src/3rdparty/libconninet/conninet.pc.in
 delete mode 100644 src/3rdparty/libconninet/debian/changelog
 delete mode 100644 src/3rdparty/libconninet/debian/compat
 delete mode 100644 src/3rdparty/libconninet/debian/control
 delete mode 100644 src/3rdparty/libconninet/debian/copyright
 delete mode 100644 src/3rdparty/libconninet/debian/libconninet0-dev.dirs
 delete mode 100644 src/3rdparty/libconninet/debian/libconninet0-dev.files
 delete mode 100644 src/3rdparty/libconninet/debian/libconninet0.dirs
 delete mode 100644 src/3rdparty/libconninet/debian/libconninet0.files
 delete mode 100755 src/3rdparty/libconninet/debian/rules
 delete mode 100644 src/3rdparty/libconninet/doxygen.cfg.in
 delete mode 100644 src/3rdparty/libconninet/src/dbusdispatcher.cpp
 delete mode 100644 src/3rdparty/libconninet/src/dbusdispatcher.h
 delete mode 100644 src/3rdparty/libconninet/src/iapconf.cpp
 delete mode 100644 src/3rdparty/libconninet/src/iapconf.h
 delete mode 100644 src/3rdparty/libconninet/src/iapmonitor.cpp
 delete mode 100644 src/3rdparty/libconninet/src/iapmonitor.h
 delete mode 100644 src/3rdparty/libconninet/src/maemo_icd.cpp
 delete mode 100644 src/3rdparty/libconninet/src/maemo_icd.h
 delete mode 100644 src/3rdparty/libconninet/src/proxyconf.cpp
 delete mode 100644 src/3rdparty/libconninet/src/proxyconf.h
 delete mode 100644 src/3rdparty/libconninet/tests/ut_dbusdispatcher.cpp
 delete mode 100644 src/3rdparty/libconninet/tests/ut_iapconf.cpp
 delete mode 100644 src/3rdparty/libconninet/tests/ut_iapmonitor.cpp
 delete mode 100644 src/3rdparty/libconninet/tests/ut_maemo_icd.cpp
 delete mode 100644 src/3rdparty/libconninet/tests/ut_proxyconf.cpp
 create mode 100644 src/plugins/bearer/icd/dbusdispatcher.cpp
 create mode 100644 src/plugins/bearer/icd/dbusdispatcher.h
 create mode 100644 src/plugins/bearer/icd/iapconf.cpp
 create mode 100644 src/plugins/bearer/icd/iapconf.h
 create mode 100644 src/plugins/bearer/icd/iapmonitor.cpp
 create mode 100644 src/plugins/bearer/icd/iapmonitor.h
 create mode 100644 src/plugins/bearer/icd/maemo_icd.cpp
 create mode 100644 src/plugins/bearer/icd/maemo_icd.h
 create mode 100644 src/plugins/bearer/icd/proxyconf.cpp
 create mode 100644 src/plugins/bearer/icd/proxyconf.h
 create mode 100644 src/plugins/bearer/icd/wlan-utils.h

diff --git a/src/3rdparty/libconninet.pri b/src/3rdparty/libconninet.pri
deleted file mode 100644
index e041e2b..0000000
--- a/src/3rdparty/libconninet.pri
+++ /dev/null
@@ -1,18 +0,0 @@
-INCLUDEPATH += $$PWD/libconninet/src
-
-QMAKE_CXXFLAGS += $$QT_CFLAGS_GLIB
-
-HEADERS += \
-    $$PWD/libconninet/src/dbusdispatcher.h \
-    $$PWD/libconninet/src/iapconf.h \
-    $$PWD/libconninet/src/iapmonitor.h \
-    $$PWD/libconninet/src/maemo_icd.h \
-    $$PWD/libconninet/src/proxyconf.h
-
-SOURCES += \
-    $$PWD/libconninet/src/dbusdispatcher.cpp \
-    $$PWD/libconninet/src/iapconf.cpp \
-    $$PWD/libconninet/src/iapmonitor.cpp \
-    $$PWD/libconninet/src/maemo_icd.cpp \
-    $$PWD/libconninet/src/proxyconf.cpp
-
diff --git a/src/3rdparty/libconninet/AUTHORS b/src/3rdparty/libconninet/AUTHORS
deleted file mode 100644
index e69de29..0000000
diff --git a/src/3rdparty/libconninet/COPYING b/src/3rdparty/libconninet/COPYING
deleted file mode 100644
index b124cf5..0000000
--- a/src/3rdparty/libconninet/COPYING
+++ /dev/null
@@ -1,510 +0,0 @@
-
-                  GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations
-below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it
-becomes a de-facto standard.  To achieve this, non-free programs must
-be allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-                  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control
-compilation and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at least
-    three years, to give the same user the materials specified in
-    Subsection 6a, above, for a charge no more than the cost of
-    performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply, and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License
-may add an explicit geographical distribution limitation excluding those
-countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms
-of the ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.
-It is safest to attach them to the start of each source file to most
-effectively convey the exclusion of warranty; and each file should
-have at least the "copyright" line and a pointer to where the full
-notice is found.
-
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) 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 library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or
-your school, if any, to sign a "copyright disclaimer" for the library,
-if necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James
-  Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/src/3rdparty/libconninet/ChangeLog b/src/3rdparty/libconninet/ChangeLog
deleted file mode 100644
index e69de29..0000000
diff --git a/src/3rdparty/libconninet/INSTALL b/src/3rdparty/libconninet/INSTALL
deleted file mode 100644
index 54caf7c..0000000
--- a/src/3rdparty/libconninet/INSTALL
+++ /dev/null
@@ -1,229 +0,0 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
-   This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.
-
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
-
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
-
-     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory.  After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS KERNEL-OS
-
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-   Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
-
-     ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
-     Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`--cache-file=FILE'
-     Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
-     disable caching.
-
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
-
diff --git a/src/3rdparty/libconninet/NEWS b/src/3rdparty/libconninet/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/src/3rdparty/libconninet/README b/src/3rdparty/libconninet/README
deleted file mode 100644
index e69de29..0000000
diff --git a/src/3rdparty/libconninet/autogen.sh b/src/3rdparty/libconninet/autogen.sh
deleted file mode 100755
index a8fd885..0000000
--- a/src/3rdparty/libconninet/autogen.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-autoreconf --verbose --install --force
diff --git a/src/3rdparty/libconninet/configure.ac b/src/3rdparty/libconninet/configure.ac
deleted file mode 100644
index 72fa98b..0000000
--- a/src/3rdparty/libconninet/configure.ac
+++ /dev/null
@@ -1,86 +0,0 @@
-AC_INIT([libconninet], patsubst(esyscmd([dpkg-parsechangelog | sed -n '/^Version: \(.*\)$/ {s//\1/;p}']), [
-]), [jukka.rissanen@nokia.com])
-AM_INIT_AUTOMAKE([foreign])
-
-AC_PROG_CXX
-AC_PROG_LIBTOOL
-
-AC_ARG_ENABLE(docs,     [ --enable-docs      Build DOXYGEN documentation (requires Doxygen)],enable_docs=$enableval,enable_docs=auto)
-
-AC_PATH_PROG(DOXYGEN, doxygen, no)
-AC_MSG_CHECKING([whether to build Doxygen documentation])
-
-if test x$DOXYGEN = xno ; then
-    have_doxygen=no
-else
-    have_doxygen=yes
-fi
-if test x$enable_docs = xauto ; then
-    if test x$have_doxygen = xno ; then
-        enable_docs=no
-    else
-        enable_docs=yes
-    fi
-fi
-if test x$enable_docs = xyes; then
-    if test x$have_doxygen = xno; then
-        AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
-    else 
-	AC_MSG_RESULT(yes)
-    fi
-else
-    AC_MSG_RESULT(no)
-fi
- 
-AM_CONDITIONAL(DOXYGEN_DOCS_ENABLED, test x$enable_docs = xyes)
-AC_SUBST(DOXYGEN)
-
-PKG_CHECK_MODULES(GLIB, glib-2.0)
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
-
-PKG_CHECK_MODULES(QTCORE, QtCore)
-AC_SUBST(QTCORE_CFLAGS)
-AC_SUBST(QTCORE_LIBS)
-
-PKG_CHECK_MODULES(QTNETWORK, QtNetwork)
-AC_SUBST(QTNETWORK_CFLAGS)
-AC_SUBST(QTNETWORK_LIBS)
-
-PKG_CHECK_MODULES(QTDBUS, QtDBus)
-AC_SUBST(QTDBUS_CFLAGS)
-AC_SUBST(QTDBUS_LIBS)
-
-PKG_CHECK_MODULES(QTTEST, QtTest)
-AC_SUBST(QTTEST_CFLAGS)
-AC_SUBST(QTTEST_LIBS)
-
-PKG_CHECK_MODULES(DBUS, dbus-glib-1)
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
-
-PKG_CHECK_MODULES(CONNSETTINGS, connsettings)
-AC_SUBST(CONNSETTINGS_CFLAGS)
-AC_SUBST(CONNSETTINGS_LIBS)
-
-PKG_CHECK_MODULES(OSSO_IC, osso-ic)
-AC_SUBST(OSSO_IC_CFLAGS)
-AC_SUBST(OSSO_IC_LIBS)
-
-PKG_CHECK_MODULES(ICD_DEV, icd2)
-AC_SUBST(ICD_DEV_CFLAGS)
-AC_SUBST(ICD_DEV_LIBS)
-
-PKG_CHECK_MODULES(GCONF, gconf-2.0)
-AC_SUBST(GCONF_CFLAGS)
-AC_SUBST(GCONF_LIBS)
-
-CONCFLAGS="-Wall -Werror -Wmissing-prototypes"
-AC_SUBST(CONCFLAGS)
-
-AC_CONFIG_FILES([Makefile \
-	src/Makefile \
-	tests/Makefile \
-	conninet.pc \
-	doxygen.cfg])
-AC_OUTPUT
diff --git a/src/3rdparty/libconninet/conninet.pc.in b/src/3rdparty/libconninet/conninet.pc.in
deleted file mode 100644
index 68cdee0..0000000
--- a/src/3rdparty/libconninet/conninet.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libconninet
-Description: Internet Connectivity support library
-Version: @VERSION@
-Requires: dbus-1 >= 0.60 glib-2.0 QtCore QtDBus QtGui
-Libs: -lconninet
-Cflags: -I${includedir}/conninet
diff --git a/src/3rdparty/libconninet/debian/changelog b/src/3rdparty/libconninet/debian/changelog
deleted file mode 100644
index 10e9dec..0000000
--- a/src/3rdparty/libconninet/debian/changelog
+++ /dev/null
@@ -1,305 +0,0 @@
-libconninet (0.45) unstable; urgency=low
-
-  * Fixes: NB#187470 - libconninet: add automake to build-deps
-
- -- Markus Silvan <ext-markus.p.silvan@nokia.com>  Wed, 25 Aug 2010 09:02:55 +0300
-
-libconninet (0.44) unstable; urgency=low
-
-  * Added autoconf to build dependencies
-
- -- Markus Silvan <ext-markus.p.silvan@nokia.com>  Wed, 25 Aug 2010 09:02:55 +0300
-
-libconninet (0.43) unstable; urgency=low
-
-  * Fixes: NB#184824 - Getting all proxy variables from gconf in one go
-    which will speedup the HTTP requests done by Qt4.7 webkit
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 12 Aug 2010 10:15:20 +0300
-
-libconninet (0.42) unstable; urgency=low
-
-  * Fixes: NB#180536 - Uploads to online services are not working.
-    This is a regression caused by fix to bug 175098, the timeout was never
-    expiring when waiting reply from icd.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 19 Jul 2010 12:23:30 +0300
-
-libconninet (0.41) unstable; urgency=low
-
-  * Fixes: NB#175098 - Qt4.7 Webkit crashes when bearer API QNetworkSession
-    constructor calls QNetworkSession::syncStateWithInterface() which in turn
-    calls Maemo::state() and Maemo::addrinfo() and webkit expects that event
-    loop is not run but those function process main loop events.
-    Now Maemo::state() and Maemo::addrinfo() are changed to be synchronous
-    and fully blocking functions. The old non-blocking versions are called 
-    Maemo::state_non_blocking() and Maemo::addrinfo_non_blocking().
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed, 14 Jul 2010 10:12:47 +0300
-
-libconninet (0.40) unstable; urgency=low
-
-  * Fixes: NB#167465 - Unable to open network connection using libbearer
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 11 May 2010 10:47:10 +0300
-
-libconninet (0.39) unstable; urgency=low
-
-  * Fixes: NB#167982 - initialize DBus vtable in DBusDispatcher.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Mon, 10 May 2010 14:42:39 +0300
-
-libconninet (0.38) unstable; urgency=low
-
-  * Changing icd2 connect_req to be synchronous as the check for
-    returned connect signal did not work correctly, this caused a
-    long timeout when connect() was called.
-  * Scan sometimes missed results and did not return them to caller.
-  * HTTP proxy settings were not set correctly.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 15 Apr 2010 11:25:06 +0300
-
-libconninet (0.37) unstable; urgency=low
-
-  * Make proxy config reference counting atomic.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed,  3 Mar 2010 13:23:08 +0200
-
-libconninet (0.36) unstable; urgency=low
-
-  * Fixes: NB#157586 - Cleanup dbus listener when WLAN scanning object is
-    deleted.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Fri, 26 Feb 2010 13:30:41 +0200
-
-libconninet (0.35) unstable; urgency=low
-
-  * Fixes: NB#156883 - libconninet fails to build under the Platform SDK (SB2)
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 18 Feb 2010 12:14:40 +0200
-
-libconninet (0.34) unstable; urgency=low
-
-  * Coverity fix
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 16 Feb 2010 16:38:00 +0200
-
-libconninet (0.33) unstable; urgency=low
-
-  * Added API to update Qt proxy config.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 26 Jan 2010 15:48:36 +0200
-
-libconninet (0.32) unstable; urgency=low
-
-  * Fixed IAPConf to unset value when set value is invalid.
-  * Updated IAPMonitor to use libconnsettings.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Wed, 03 Feb 2010 07:32:45 +0200
-
-libconninet (0.31) unstable; urgency=low
-
-  * Fixes: NB#154892 - Check nulls in IAPConf.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Mon, 01 Feb 2010 09:32:06 +0200
-
-libconninet (0.30) unstable; urgency=low
-
-  * Updated IAPConf to use libconnsettings.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Fri, 29 Jan 2010 12:58:03 +0200
-
-libconninet (0.29) unstable; urgency=low
-
-  * Fixed dependencies
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Fri, 15 Jan 2010 10:16:07 +0200
-
-libconninet (0.28) unstable; urgency=low
-
-  * Get rid of libdui dependency
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed, 13 Jan 2010 09:56:26 +0200
-
-libconninet (0.27) unstable; urgency=low
-
-  * Insert new pending calls to the list in DBusDispatcher.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Tue, 22 Dec 2009 14:27:32 +0200
-
-libconninet (0.26) unstable; urgency=low
-
-  * Added possibility to specify different signal path for DBusDispatcher.
-
- -- Aapo Makela <aapo.makela@nokia.com>  Wed, 25 Nov 2009 14:27:34 +0200
-
-libconninet (0.25) unstable; urgency=low
-
-  * Fixes: NB#146450 - All scan results were not returned to the caller.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 16 Nov 2009 17:23:15 +0200
-
-libconninet (0.24) unstable; urgency=low
-
-  * Wait all scan results for all network types in Maemo::Icd::scan()
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Fri,  6 Nov 2009 14:45:23 +0200
-
-libconninet (0.23) unstable; urgency=low
-
-  * Fixes: NB#143361 - Assert failure in session class for GPRS IAP.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 19 Oct 2009 16:00:14 +0300
-
-libconninet (0.22) unstable; urgency=low
-
-  * Fixed the error checking if scan returns 0 results.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed,  7 Oct 2009 13:50:27 +0300
-
-libconninet (0.21) unstable; urgency=low
-
-  * Support multiple DBusDispatcher classes at the same time. This is
-    required by Maemo::Icd class so that multiple instances of it can
-    be used the same time.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon,  5 Oct 2009 16:33:43 +0300
-
-libconninet (0.20) unstable; urgency=low
-
-  * Fixed memory leak in IAPConf::setValue()
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Fri,  2 Oct 2009 13:02:21 +0300
-
-libconninet (0.19) unstable; urgency=low
-
-  * Fixed connect_req to one specific IAP in Icd class.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 29 Sep 2009 17:02:46 +0300
-
-libconninet (0.18) unstable; urgency=low
-
-  * Make sure the library will not abort in Icd class if scan does
-    not return any results.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 22 Sep 2009 17:00:12 +0300
-
-libconninet (0.17) unstable; urgency=low
-
-  * Added IAP monitoring support.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 21 Sep 2009 16:29:31 +0300
-
-libconninet (0.16) unstable; urgency=low
-
-  * Disabled the old osso-ic dbus interface as it is currently not used.
-  * Fixed the addrinfo request, now addresses are returned correctly to
-    the caller.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 17 Sep 2009 15:56:13 +0300
-
-libconninet (0.15) unstable; urgency=low
-
-  * Enabling state_req, statistics_req and addrinfo_req support
-    functions in Maemo::Icd as the corresponding DBUS API functions are
-    fixed in icd2 v0.89
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Fri, 24 Jul 2009 15:23:02 +0300
-
-libconninet (0.14) unstable; urgency=low
-
-  * Icd statistics support added.
-  * Icd address information support added.
-  * Icd scan method does not return the final (and empty) result any more.
-  * Added initial unit test implementation for Icd class.
-  * Some of the status functions in Icd class disabled because of issues
-    in icd2 and the dbus api.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 23 Jul 2009 11:03:05 +0300
-
-libconninet (0.13) unstable; urgency=low
-
-  * Added API to get all the configured IAPs.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 21 Jul 2009 09:47:18 +0300
-
-libconninet (0.12) unstable; urgency=low
-
-  * Replaced duivaluespace by Dui in pkg-config file because the
-    duivaluespace is deprecated.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 20 Jul 2009 16:00:10 +0300
-
-libconninet (0.11) unstable; urgency=low
-
-  * Using libdui instead of libduivaluespace because it is deprecated.
-  * The IAPConf::clear() uses native gconf API instead of launching gconftool
-  * Check that state_req call returned list and the list contains entries
-    before trying to access it.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 20 Jul 2009 14:55:15 +0300
-
-libconninet (0.10) unstable; urgency=low
-
-  * connect() did not return ok when connection succeeded.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 25 Jun 2009 09:31:21 +0300
-
-libconninet (0.9) unstable; urgency=low
-
-  * Connection timeout set to 2.5min, same as in fremantle.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed, 17 Jun 2009 13:36:40 +0300
-
-libconninet (0.8) unstable; urgency=low
-
-  * Fix state_req signal received from Icd
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 11 Jun 2009 17:19:33 +0300
-
-libconninet (0.7) unstable; urgency=low
-
-  * Icd disconnect and select reqs are made synchronous as we do not
-    wait the return status. The previous async version was causing core
-    dumps if Icd class was destroyed too early.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 11 Jun 2009 11:52:36 +0300
-
-libconninet (0.6) unstable; urgency=low
-
-  * Fixed the libconninet0-dev dependencies.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon,  8 Jun 2009 10:47:56 +0300
-
-libconninet (0.5) unstable; urgency=low
-
-  * Fixed missing QObject connect functions.
-  * Fixed IAPConf to return invalid QVariant if the value does not exist.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Mon, 01 Jun 2009 13:58:53 +0300
-
-libconninet (0.4) unstable; urgency=low
-
-  * Fixed QObject signal setting for Maemo::Icd
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed, 20 May 2009 13:51:11 +0300
-
-libconninet (0.3) unstable; urgency=low
-
-  * Refactoring classes
-  * Added IAPConf class.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Thu, 14 May 2009 13:24:11 +0300
-
-libconninet (0.2) unstable; urgency=low
-
-  * Fixed pkgconfig file which had wrong dependency
-  * Added DBus array and struct support to DBusDispatcher.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Wed, 13 May 2009 12:11:00 +0300
-
-libconninet (0.1) unstable; urgency=low
-
-  * Initial Release.
-
- -- Jukka Rissanen <jukka.rissanen@nokia.com>  Tue, 12 May 2009 16:10:27 +0200
diff --git a/src/3rdparty/libconninet/debian/compat b/src/3rdparty/libconninet/debian/compat
deleted file mode 100644
index b8626c4..0000000
--- a/src/3rdparty/libconninet/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/src/3rdparty/libconninet/debian/control b/src/3rdparty/libconninet/debian/control
deleted file mode 100644
index a2343a0..0000000
--- a/src/3rdparty/libconninet/debian/control
+++ /dev/null
@@ -1,39 +0,0 @@
-Source: libconninet
-Priority: optional
-Maintainer: Jukka Rissanen <jukka.rissanen@nokia.com>
-Build-Depends: debhelper (>= 4.0.0), autotools-dev, libglib2.0-dev (>= 2.8),
- libdbus-1-dev (>= 0.60), libconnsettings0-dev (>= 0.4), icd2-osso-ic-dev,
- icd2-dev, libqt4-dev, libgconf2-dev (>> 2.6.4), autoconf, automake
-Standards-Version: 3.6.2
-Section: libs
-
-Package: libconninet0-dev
-Section: libdevel
-Architecture: any
-Depends: libconninet0 (= ${Source-Version}), libdbus-1-dev (>= 0.60),
- libglib2.0-dev (>= 2.8), libconnsettings0-dev (>= 0.4), libqt4-dev,
- icd2-osso-ic-dev, icd2-dev, libgconf2-dev (>> 2.6.4)
-Description: Internet Connectivity support library development files
- Internet Connectivity support library (libconninet) provides common
- support functions for connecting to icd2 and accessing configuration
- data.
- .
- This package contains the header files.
-
-Package: libconninet0
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Internet Connectivity support library
- Internet Connectivity support library (libconninet) provides common
- support functions for connecting to icd2 and accessing configuration
- data.
- .
- This package contains the shared libraries.
-
-Package: libconninet0-dbg
-Section: libs
-Architecture: any
-Depends: libconninet0 (= ${Source-Version}), ${shlibs:Depends}, ${misc:Depends}
-Description: Debug symbols for the Internet Connectivity support library
- Internet Connectivity support library (libconninet) debug symbols.
diff --git a/src/3rdparty/libconninet/debian/copyright b/src/3rdparty/libconninet/debian/copyright
deleted file mode 100644
index 97e8e68..0000000
--- a/src/3rdparty/libconninet/debian/copyright
+++ /dev/null
@@ -1,19 +0,0 @@
-libconninet - Internet Connectivity support library
-
-Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-This library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License version 2.1 
-as published by the Free Software Foundation.
-
-This library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-02110-1301 USA
diff --git a/src/3rdparty/libconninet/debian/libconninet0-dev.dirs b/src/3rdparty/libconninet/debian/libconninet0-dev.dirs
deleted file mode 100644
index 4418816..0000000
--- a/src/3rdparty/libconninet/debian/libconninet0-dev.dirs
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib
-usr/include
diff --git a/src/3rdparty/libconninet/debian/libconninet0-dev.files b/src/3rdparty/libconninet/debian/libconninet0-dev.files
deleted file mode 100644
index 78bbac8..0000000
--- a/src/3rdparty/libconninet/debian/libconninet0-dev.files
+++ /dev/null
@@ -1,4 +0,0 @@
-usr/include/*
-usr/lib/lib*.so
-usr/lib/pkgconfig/*
-usr/share/pkgconfig/*
diff --git a/src/3rdparty/libconninet/debian/libconninet0.dirs b/src/3rdparty/libconninet/debian/libconninet0.dirs
deleted file mode 100644
index 6845771..0000000
--- a/src/3rdparty/libconninet/debian/libconninet0.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib
diff --git a/src/3rdparty/libconninet/debian/libconninet0.files b/src/3rdparty/libconninet/debian/libconninet0.files
deleted file mode 100644
index d0dbfd1..0000000
--- a/src/3rdparty/libconninet/debian/libconninet0.files
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/lib*.so.*
diff --git a/src/3rdparty/libconninet/debian/rules b/src/3rdparty/libconninet/debian/rules
deleted file mode 100755
index 2a3d395..0000000
--- a/src/3rdparty/libconninet/debian/rules
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/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
-
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-
-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.ac debian/changelog
-	-./autogen.sh
-
-config.status: configure
-	dh_testdir
-	# Add here commands to configure the package.
-	CFLAGS="$(CFLAGS)" ./configure \
-		--host=$(DEB_HOST_GNU_TYPE) \
-		--build=$(DEB_BUILD_GNU_TYPE) \
-		--prefix=/usr \
-		--mandir=\$${prefix}/share/man \
-		--infodir=\$${prefix}/share/info
-
-
-build: build-stamp
-build-stamp:  config.status
-	dh_testdir
-
-	# Add here commands to compile the package.
-	$(MAKE)
-
-	touch build-stamp
-
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp 
-
-	# Add here commands to clean up after the build process.
-	-$(MAKE) distclean
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
-	cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
-	cp -f /usr/share/misc/config.guess config.guess
-endif
-
-
-	dh_clean 
-
-install: build
-	dh_testdir
-	dh_testroot
-	dh_clean -k 
-	dh_installdirs
-
-	# Add here commands to install the package into debian/tmp
-	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
-
-
-# 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_movefiles
-	dh_installchangelogs ChangeLog
-	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 --dbg-package=libconninet0
-	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 
diff --git a/src/3rdparty/libconninet/doxygen.cfg.in b/src/3rdparty/libconninet/doxygen.cfg.in
deleted file mode 100644
index 80a4c8d..0000000
--- a/src/3rdparty/libconninet/doxygen.cfg.in
+++ /dev/null
@@ -1,1147 +0,0 @@
-# Doxyfile 1.3.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = "Internet Connectivity Support Library"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = @VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 2 levels of 10 sub-directories under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of source 
-# files, where putting all generated files in the same directory would otherwise 
-# cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
-# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, 
-# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is used 
-# as the annotated text. Otherwise, the brief description is used as-is. If left 
-# blank, the following values are used ("$name" is automatically replaced with the 
-# name of the entity): "The $name class" "The $name widget" "The $name file" 
-# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
-# members of a class in the documentation of that class as if those members were 
-# ordinary class members. Constructors, destructors and assignment operators of 
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
-# only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-# only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = conic/conic.h \
-	conic/conicconnection.h \
-	conic/conicconnectionevent.h \
-	conic/conicevent.h \
-	conic/coniciap.h \
-	conic/conicstatisticsevent.h
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
-# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-
-FILE_PATTERNS          = 
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories.
-
-EXCLUDE_PATTERNS       = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.
-
-INPUT_FILTER           = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse the 
-# parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
-# super classes. Setting the tag to NO turns the diagrams off. Note that this 
-# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
-# recommended to install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes that 
-# lay further from the root node will be omitted. Note that setting this option to 
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
-# note that a graph may be further truncated if the graph's image dimensions are 
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/src/3rdparty/libconninet/src/dbusdispatcher.cpp b/src/3rdparty/libconninet/src/dbusdispatcher.cpp
deleted file mode 100644
index 7581982..0000000
--- a/src/3rdparty/libconninet/src/dbusdispatcher.cpp
+++ /dev/null
@@ -1,611 +0,0 @@
-/* * This file is part of conninet *
- *
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- *
- * Contact: Aapo Makela <aapo.makela@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-
-#include <QDebug>
-#include <QtCore>
-#include <poll.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <glib.h>
-#include "dbusdispatcher.h"
-
-namespace Maemo {
-
-/*!
-    \class DBusDispatcher
-
-    \brief DBusDispatcher is a class, which is able to send DBUS method call
-    messages and receive unicast signals from DBUS object.
-*/
-
-class DBusDispatcherPrivate
-{
-public:
-    DBusDispatcherPrivate(const QString& service,
-                          const QString& path,
-                          const QString& interface,
-                          const QString& signalPath)
-        : service(service), path(path), interface(interface),
-          signalPath(signalPath), connection(0)
-    {
-        memset(&signal_vtable, 0, sizeof(signal_vtable));
-    }
-
-    ~DBusDispatcherPrivate()
-    {
-        foreach(DBusPendingCall *call, pending_calls) {
-            dbus_pending_call_cancel(call);
-            dbus_pending_call_unref(call);
-        }
-    }
-
-    QString service;
-    QString path;
-    QString interface;
-    QString signalPath;
-    struct DBusConnection *connection;
-    QList<DBusPendingCall *> pending_calls;
-    struct DBusObjectPathVTable signal_vtable;
-};
-
-static bool constantVariantList(const QVariantList& variantList) {
-    // Special case, empty list == empty struct
-    if (variantList.isEmpty()) {
-        return false;
-    } else {        
-        QVariant::Type type = variantList[0].type();
-        // Iterate items in the list and check if they are same type
-        foreach(QVariant variant, variantList) {
-            if (variant.type() != type) {
-                return false;
-            }
-        }
-    }
-    return true;
-}
-
-static QString variantToSignature(const QVariant& argument,
-                                  bool constantList = true) {
-    switch (argument.type()) {
-        case QVariant::Bool:
-            return "b";
-        case QVariant::ByteArray:
-            return "ay";
-        case QVariant::Char:
-            return "y";
-        case QVariant::Int:
-            return "i";
-        case QVariant::UInt:
-            return "u";
-        case QVariant::StringList:
-            return "as";
-        case QVariant::String:
-            return "s";
-        case QVariant::LongLong:
-            return "x";
-        case QVariant::ULongLong:
-            return "t";
-        case QVariant::List:
-            {
-            QString signature;
-            QVariantList variantList = argument.toList();
-            if (!constantList) {
-                signature += DBUS_STRUCT_BEGIN_CHAR_AS_STRING;
-                foreach(QVariant listItem, variantList) {
-                    signature += variantToSignature(listItem);
-                }
-                signature += DBUS_STRUCT_END_CHAR_AS_STRING;
-            } else {
-                if (variantList.isEmpty())
-                    return "";
-                signature = "a" + variantToSignature(variantList[0]);
-            }
-
-            return signature;
-            }
-        default:
-            qDebug() << "Unsupported variant type: " << argument.type();
-            break;
-    }
-
-    return "";
-}
-
-static bool appendVariantToDBusMessage(const QVariant& argument,
-                                       DBusMessageIter *dbus_iter) {
-    int idx = 0;
-    DBusMessageIter array_iter;
-    QStringList str_list;
-    dbus_bool_t bool_data;
-    dbus_int32_t int32_data;
-    dbus_uint32_t uint32_data;
-    dbus_int64_t int64_data;
-    dbus_uint64_t uint64_data;
-    char *str_data;
-    char char_data;
-
-    switch (argument.type()) {
-
-        case QVariant::Bool:
-            bool_data = argument.toBool();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_BOOLEAN, 
-                                           &bool_data);
-            break;
-
-        case QVariant::ByteArray:
-            str_data = argument.toByteArray().data();
-            dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
-                                             DBUS_TYPE_BYTE_AS_STRING, &array_iter);
-            dbus_message_iter_append_fixed_array(&array_iter,
-                                                 DBUS_TYPE_BYTE,
-                                                 &str_data,
-                                                 argument.toByteArray().size());
-            dbus_message_iter_close_container(dbus_iter, &array_iter);
-            break;
-
-        case QVariant::Char:
-            char_data = argument.toChar().toAscii();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_BYTE, 
-                                           &char_data);
-            break;
-
-        case QVariant::Int:
-            int32_data = argument.toInt();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_INT32, 
-                                           &int32_data);
-            break;
-
-        case QVariant::String:
-            str_data = argument.toString().toLatin1().data();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_STRING,
-                                           &str_data);
-            break;
-
-        case QVariant::StringList:
-            str_list = argument.toStringList();
-            dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
-                                             "s", &array_iter);
-            for (idx = 0; idx < str_list.size(); idx++) {
-                str_data = str_list.at(idx).toLatin1().data();
-                dbus_message_iter_append_basic(&array_iter,
-                                               DBUS_TYPE_STRING,
-                                               &str_data);
-            }
-            dbus_message_iter_close_container(dbus_iter, &array_iter);
-            break;
-
-        case QVariant::UInt:
-            uint32_data = argument.toUInt();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_UINT32, 
-                                           &uint32_data);
-            break;
-
-        case QVariant::ULongLong:
-            uint64_data = argument.toULongLong();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_UINT64, 
-                                           &uint64_data);
-            break;
-
-        case QVariant::LongLong:
-            int64_data = argument.toLongLong();
-            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_INT64, 
-                                           &int64_data);
-            break;
-
-        case QVariant::List:
-            {
-            QVariantList variantList = argument.toList();
-            bool constantList = constantVariantList(variantList);
-            DBusMessageIter array_iter;
-
-            // List is mapped either as an DBUS array (all items same type)
-            // DBUS struct (variable types) depending on constantList
-            if (constantList) {
-                // Resolve the signature for the first item
-                QString signature = "";
-                if (!variantList.isEmpty()) {
-                    signature = variantToSignature(
-                                variantList[0],
-                                constantVariantList(variantList[0].toList()));
-                }
-
-                // Mapped as DBUS array
-                dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
-                                                 signature.toAscii(),
-                                                 &array_iter);
-
-                foreach(QVariant listItem, variantList) {
-                    appendVariantToDBusMessage(listItem, &array_iter);
-                }
-
-                dbus_message_iter_close_container(dbus_iter, &array_iter);
-            } else {
-                // Mapped as DBUS struct
-                dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_STRUCT,
-                                                 NULL,
-                                                 &array_iter);
-
-                foreach(QVariant listItem, variantList) {
-                    appendVariantToDBusMessage(listItem, &array_iter);
-                }
-
-                dbus_message_iter_close_container(dbus_iter, &array_iter);
-            }
-
-            break;
-            }
-        default:
-            qDebug() << "Unsupported variant type: " << argument.type();
-            break;
-    }
-
-    return true;
-}
-
-static QVariant getVariantFromDBusMessage(DBusMessageIter *iter) {
-    dbus_bool_t bool_data;
-    dbus_int32_t int32_data;
-    dbus_uint32_t uint32_data;
-    dbus_int64_t int64_data;
-    dbus_uint64_t uint64_data;
-    char *str_data;
-    char char_data;
-    int argtype = dbus_message_iter_get_arg_type(iter);
-
-    switch (argtype) {
-
-        case DBUS_TYPE_BOOLEAN:
-        {
-            dbus_message_iter_get_basic(iter, &bool_data);
-            QVariant variant((bool)bool_data);
-            return variant;
-        }
-
-        case DBUS_TYPE_ARRAY:
-        {
-            // Handle all arrays here
-            int elem_type = dbus_message_iter_get_element_type(iter);
-            DBusMessageIter array_iter;
-
-            dbus_message_iter_recurse(iter, &array_iter);
-
-            if (elem_type == DBUS_TYPE_BYTE) {
-                QByteArray byte_array;
-                do {
-                    dbus_message_iter_get_basic(&array_iter, &char_data);
-                    byte_array.append(char_data);
-                } while (dbus_message_iter_next(&array_iter));
-                QVariant variant(byte_array);
-                return variant;
-            } else if (elem_type == DBUS_TYPE_STRING) {
-                QStringList str_list;
-                do {
-                    dbus_message_iter_get_basic(&array_iter, &str_data);
-                    str_list.append(str_data);
-                } while (dbus_message_iter_next(&array_iter));
-                QVariant variant(str_list);
-                return variant;
-            } else {
-                QVariantList variantList;
-                do {
-                    variantList << getVariantFromDBusMessage(&array_iter);
-                } while (dbus_message_iter_next(&array_iter));
-                QVariant variant(variantList);
-                return variant;
-            }
-            break;
-        }
-
-        case DBUS_TYPE_BYTE:
-        {
-            dbus_message_iter_get_basic(iter, &char_data);
-            QChar ch(char_data);
-            QVariant variant(ch);
-            return variant;
-        }
-
-        case DBUS_TYPE_INT32:
-        {
-            dbus_message_iter_get_basic(iter, &int32_data);
-            QVariant variant((int)int32_data);
-            return variant;
-        }
-
-        case DBUS_TYPE_UINT32:
-        {
-            dbus_message_iter_get_basic(iter, &uint32_data);
-            QVariant variant((uint)uint32_data);
-            return variant;
-        }
-
-        case DBUS_TYPE_STRING:
-        {
-            dbus_message_iter_get_basic(iter, &str_data);
-            QString str(str_data);
-            QVariant variant(str);
-            return variant;
-        }
-
-        case DBUS_TYPE_INT64:
-        {
-            dbus_message_iter_get_basic(iter, &int64_data);
-            QVariant variant((qlonglong)int64_data);
-            return variant;
-        }
-
-        case DBUS_TYPE_UINT64:
-        {
-            dbus_message_iter_get_basic(iter, &uint64_data);
-            QVariant variant((qulonglong)uint64_data);
-            return variant;
-        }
-
-        case DBUS_TYPE_STRUCT:
-        {
-            // Handle all structs here
-            DBusMessageIter struct_iter;
-            dbus_message_iter_recurse(iter, &struct_iter);
-
-	    QVariantList variantList;
-	    do {
-	      variantList << getVariantFromDBusMessage(&struct_iter);
-	    } while (dbus_message_iter_next(&struct_iter));
-	    QVariant variant(variantList);
-	    return variant;
-        }
-
-        default:
-            qDebug() << "Unsupported DBUS type: " << argtype;
-    }
-
-    return QVariant();
-}
-
-static DBusHandlerResult signalHandler (DBusConnection *connection,
-                                        DBusMessage *message,
-                                        void *object_ref) {
-    (void)connection;
-    QString interface;
-    QString signal;
-    DBusDispatcher *dispatcher = (DBusDispatcher *)object_ref;
-
-    if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) {
-        interface = dbus_message_get_interface(message);
-        signal = dbus_message_get_member(message);
-        
-        QList<QVariant> arglist;
-        DBusMessageIter dbus_iter;
-
-        if (dbus_message_iter_init(message, &dbus_iter)) {
-            // Read return arguments
-            while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
-                arglist << getVariantFromDBusMessage(&dbus_iter);
-                dbus_message_iter_next(&dbus_iter);
-            }
-        }
-
-        dispatcher->emitSignalReceived(interface, signal, arglist);
-        return DBUS_HANDLER_RESULT_HANDLED;
-    }
-    (void)message;
-    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-DBusDispatcher::DBusDispatcher(const QString& service,
-                               const QString& path,
-                               const QString& interface,
-                               QObject *parent)
- : QObject(parent),
-   d_ptr(new DBusDispatcherPrivate(service, path, interface, path)) {
-    setupDBus();
-}
-
-DBusDispatcher::DBusDispatcher(const QString& service,
-                               const QString& path,
-                               const QString& interface,
-                               const QString& signalPath,
-                               QObject *parent)
- : QObject(parent),
-   d_ptr(new DBusDispatcherPrivate(service, path, interface, signalPath)) {
-    setupDBus();
-}
-
-DBusDispatcher::~DBusDispatcher()
-{
-    if (d_ptr->connection) {
-        dbus_connection_close(d_ptr->connection);
-        dbus_connection_unref(d_ptr->connection);
-    }
-    delete d_ptr;
-}
-
-void DBusDispatcher::setupDBus()
-{
-    d_ptr->connection = dbus_bus_get_private(DBUS_BUS_SYSTEM, NULL);
-
-    if (d_ptr->connection == NULL)
-        qDebug() << "Unable to get DBUS connection!";
-    else {
-        d_ptr->signal_vtable.message_function = signalHandler;
-
-	dbus_connection_set_exit_on_disconnect(d_ptr->connection, FALSE);
-        dbus_connection_setup_with_g_main(d_ptr->connection, NULL);
-        dbus_connection_register_object_path(d_ptr->connection, 
-                                             d_ptr->signalPath.toLatin1(),
-                                             &d_ptr->signal_vtable,
-                                             this);
-    }
-}
-
-static DBusMessage *prepareDBusCall(const QString& service,
-                                    const QString& path,
-                                    const QString& interface,
-                                    const QString& method, 
-                                    const QVariant& arg1 = QVariant(),
-                                    const QVariant& arg2 = QVariant(),
-                                    const QVariant& arg3 = QVariant(),
-                                    const QVariant& arg4 = QVariant(),
-                                    const QVariant& arg5 = QVariant(),
-                                    const QVariant& arg6 = QVariant(),
-                                    const QVariant& arg7 = QVariant(),
-                                    const QVariant& arg8 = QVariant()) 
-{
-    DBusMessage *message = dbus_message_new_method_call(service.toLatin1(),
-                                                        path.toLatin1(),
-                                                        interface.toLatin1(),
-                                                        method.toLatin1());
-    DBusMessageIter dbus_iter;
-
-    // Append variants to DBUS message
-    QList<QVariant> arglist;
-    if (arg1.isValid()) arglist << arg1;
-    if (arg2.isValid()) arglist << arg2;
-    if (arg3.isValid()) arglist << arg3;
-    if (arg4.isValid()) arglist << arg4;
-    if (arg5.isValid()) arglist << arg5;
-    if (arg6.isValid()) arglist << arg6;
-    if (arg7.isValid()) arglist << arg7;
-    if (arg8.isValid()) arglist << arg8;
-
-    dbus_message_iter_init_append (message, &dbus_iter);
-    
-    while (!arglist.isEmpty()) {
-        QVariant argument = arglist.takeFirst();
-        appendVariantToDBusMessage(argument, &dbus_iter);
-    }
-
-    return message;
-}
-
-QList<QVariant> DBusDispatcher::call(const QString& method, 
-                                     const QVariant& arg1,
-                                     const QVariant& arg2,
-                                     const QVariant& arg3,
-                                     const QVariant& arg4,
-                                     const QVariant& arg5,
-                                     const QVariant& arg6,
-                                     const QVariant& arg7,
-                                     const QVariant& arg8) {
-    DBusMessageIter dbus_iter;
-    DBusMessage *message = prepareDBusCall(d_ptr->service, d_ptr->path,
-                                           d_ptr->interface, method,
-                                           arg1, arg2, arg3, arg4, arg5,
-                                           arg6, arg7, arg8);
-    DBusMessage *reply = dbus_connection_send_with_reply_and_block(
-                                                    d_ptr->connection,
-                                                    message, -1, NULL);
-    dbus_message_unref(message);
-
-    QList<QVariant> replylist;
-    if (reply != NULL &&  dbus_message_iter_init(reply, &dbus_iter)) {
-        // Read return arguments
-        while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
-            replylist << getVariantFromDBusMessage(&dbus_iter);
-            dbus_message_iter_next(&dbus_iter);
-        }
-    }
-    if (reply != NULL) dbus_message_unref(reply);
-    return replylist;
-}
-
-class PendingCallInfo {
-public:
-    QString method;
-    DBusDispatcher *dispatcher;
-    DBusDispatcherPrivate *priv;
-};
-
-static void freePendingCallInfo(void *memory) {
-    PendingCallInfo *info = (PendingCallInfo *)memory;
-    delete info;
-}
-
-static void pendingCallFunction (DBusPendingCall *pending,
-                                 void *memory) {
-    PendingCallInfo *info = (PendingCallInfo *)memory;
-    QString errorStr;
-    QList<QVariant> replyList;
-    DBusMessage *reply = dbus_pending_call_steal_reply (pending);
-
-    Q_ASSERT(reply != NULL);
-
-    if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
-        errorStr = dbus_message_get_error_name (reply);
-    } else {
-        DBusMessageIter dbus_iter;
-        dbus_message_iter_init(reply, &dbus_iter);
-        // Read return arguments
-        while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
-            replyList << getVariantFromDBusMessage(&dbus_iter);
-            dbus_message_iter_next(&dbus_iter);
-        }
-    }
-
-    info->priv->pending_calls.removeOne(pending);
-    info->dispatcher->emitCallReply(info->method, replyList, errorStr);
-    dbus_message_unref(reply);
-    dbus_pending_call_unref(pending);
-}
-
-bool DBusDispatcher::callAsynchronous(const QString& method, 
-                                      const QVariant& arg1,
-                                      const QVariant& arg2,
-                                      const QVariant& arg3,
-                                      const QVariant& arg4,
-                                      const QVariant& arg5,
-                                      const QVariant& arg6,
-                                      const QVariant& arg7,
-                                      const QVariant& arg8) {
-    DBusMessage *message = prepareDBusCall(d_ptr->service, d_ptr->path,
-                                           d_ptr->interface, method,
-                                           arg1, arg2, arg3, arg4, arg5,
-                                           arg6, arg7, arg8);
-    DBusPendingCall *call = NULL;
-    dbus_bool_t ret = dbus_connection_send_with_reply(d_ptr->connection,
-                                                      message, &call, -1);
-    PendingCallInfo *info = new PendingCallInfo;
-    info->method = method;
-    info->dispatcher = this;
-    info->priv = d_ptr;
-
-    dbus_pending_call_set_notify(call, pendingCallFunction, info, freePendingCallInfo);
-    d_ptr->pending_calls.append(call);
-    return (bool)ret;
-}
-
-void DBusDispatcher::emitSignalReceived(const QString& interface, 
-                                        const QString& signal,
-                                        const QList<QVariant>& args) {
-    emit signalReceived(interface, signal, args); }
-
-void DBusDispatcher::emitCallReply(const QString& method,
-                                   const QList<QVariant>& args,
-                                   const QString& error) {
-    emit callReply(method, args, error); }
-
-void DBusDispatcher::synchronousDispatch(int timeout_ms)
-{
-    dbus_connection_read_write_dispatch(d_ptr->connection, timeout_ms);
-}
-
-} // Maemo namespace
-
diff --git a/src/3rdparty/libconninet/src/dbusdispatcher.h b/src/3rdparty/libconninet/src/dbusdispatcher.h
deleted file mode 100644
index 2f71b6f..0000000
--- a/src/3rdparty/libconninet/src/dbusdispatcher.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* * This file is part of conn-dui-settings-inet *
- *
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- *
- * Contact: Aapo Makela <aapo.makela@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-
-#ifndef DBUSDISPATCHER_H
-#define DBUSDISPATCHER_H
-
-#include <QObject>
-#include <QVariant>
-
-namespace Maemo {
-
-class DBusDispatcherPrivate;
-class DBusDispatcher : public QObject
-{
-    Q_OBJECT
-
-public:
-    DBusDispatcher(const QString& service,
-                   const QString& path,
-                   const QString& interface,
-                   QObject *parent = 0);
-    DBusDispatcher(const QString& service,
-                   const QString& path,
-                   const QString& interface,
-                   const QString& signalPath,
-                   QObject *parent = 0);
-    ~DBusDispatcher();
-
-    QList<QVariant> call(const QString& method, 
-                         const QVariant& arg1 = QVariant(),
-                         const QVariant& arg2 = QVariant(),
-                         const QVariant& arg3 = QVariant(),
-                         const QVariant& arg4 = QVariant(),
-                         const QVariant& arg5 = QVariant(),
-                         const QVariant& arg6 = QVariant(),
-                         const QVariant& arg7 = QVariant(),
-                         const QVariant& arg8 = QVariant());
-    bool callAsynchronous(const QString& method, 
-                          const QVariant& arg1 = QVariant(),
-                          const QVariant& arg2 = QVariant(),
-                          const QVariant& arg3 = QVariant(),
-                          const QVariant& arg4 = QVariant(),
-                          const QVariant& arg5 = QVariant(),
-                          const QVariant& arg6 = QVariant(),
-                          const QVariant& arg7 = QVariant(),
-                          const QVariant& arg8 = QVariant());
-    void emitSignalReceived(const QString& interface, 
-                            const QString& signal,
-                            const QList<QVariant>& args);
-    void emitCallReply(const QString& method,
-                       const QList<QVariant>& args,
-                       const QString& error = "");
-    void synchronousDispatch(int timeout_ms);
-
-Q_SIGNALS:
-    void signalReceived(const QString& interface, 
-                        const QString& signal,
-                        const QList<QVariant>& args);
-    void callReply(const QString& method,
-                   const QList<QVariant>& args,
-                   const QString& error);
-
-protected:
-    void setupDBus();
-
-private:
-    DBusDispatcherPrivate *d_ptr;
-};
-
-}  // Maemo namespace
-
-#endif
diff --git a/src/3rdparty/libconninet/src/iapconf.cpp b/src/3rdparty/libconninet/src/iapconf.cpp
deleted file mode 100644
index 2e77fa5..0000000
--- a/src/3rdparty/libconninet/src/iapconf.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009-2010 Nokia Corporation. All rights reserved.
-
-  Contact: Aapo Makela <aapo.makela@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include <conn_settings.h>
-
-#include "iapconf.h"
-
-#define QSTRING_TO_CONST_CSTR(str) \
-    str.toUtf8().constData()
-
-namespace Maemo {
-
-class IAPConfPrivate {
-public:
-    ConnSettings *settings;
-
-    ConnSettingsValue *variantToValue(const QVariant &variant);
-    QVariant valueToVariant(ConnSettingsValue *value);
-};
-
-ConnSettingsValue *IAPConfPrivate::variantToValue(const QVariant &variant)
-{
-    // Convert variant to ConnSettingsValue
-    ConnSettingsValue *value = conn_settings_value_new();
-    if (value == 0) {
-        qWarning("IAPConf: Unable to create new ConnSettingsValue");
-        return 0;
-    }
-
-    switch(variant.type()) {
-        
-    case QVariant::Invalid:
-        value->type = CONN_SETTINGS_VALUE_INVALID;
-        break;
-    
-    case QVariant::String: {
-        char *valueStr = strdup(QSTRING_TO_CONST_CSTR(variant.toString()));
-        value->type = CONN_SETTINGS_VALUE_STRING;
-        value->value.string_val = valueStr;
-        break;
-    }
-    
-    case QVariant::Int:
-        value->type = CONN_SETTINGS_VALUE_INT;
-        value->value.int_val = variant.toInt();
-        break;
-    
-    case QMetaType::Float:
-    case QVariant::Double:
-        value->type = CONN_SETTINGS_VALUE_DOUBLE;
-        value->value.double_val = variant.toDouble();
-        break;
-    
-    case QVariant::Bool:
-        value->type = CONN_SETTINGS_VALUE_BOOL;
-        value->value.bool_val = variant.toBool() ? 1 : 0;
-        break;
-    
-    case QVariant::ByteArray: {
-        QByteArray array = variant.toByteArray();
-        value->type = CONN_SETTINGS_VALUE_BYTE_ARRAY;
-        value->value.byte_array.len = array.size();
-        value->value.byte_array.val = (unsigned char *)malloc(array.size());
-        memcpy(value->value.byte_array.val, array.constData(), array.size());
-        break;
-    }
-    
-    case QVariant::List: {
-        QVariantList list = variant.toList();
-        ConnSettingsValue **list_val = (ConnSettingsValue **)malloc(
-            (list.size() + 1) * sizeof(ConnSettingsValue *));
-
-        for (int idx = 0; idx < list.size(); idx++) {
-            list_val[idx] = variantToValue(list.at(idx));
-        }
-        list_val[list.size()] = 0;
-
-        value->type = CONN_SETTINGS_VALUE_LIST;
-        value->value.list_val = list_val;
-        break;
-    }
-    
-    default:
-        qWarning("IAPConf: Can not handle QVariant of type %d",
-                 variant.type());
-        conn_settings_value_destroy(value);
-        return 0;
-    }
-
-    return value;
-}
-
-QVariant IAPConfPrivate::valueToVariant(ConnSettingsValue *value)
-{
-    if (value == 0 || value->type == CONN_SETTINGS_VALUE_INVALID) {
-        return QVariant();
-    }
-
-    switch(value->type) {
-    
-    case CONN_SETTINGS_VALUE_BOOL:
-        return QVariant(value->value.bool_val ? true : false);
-    
-    case CONN_SETTINGS_VALUE_STRING:
-        return QVariant(QString(value->value.string_val));
-    
-    case CONN_SETTINGS_VALUE_DOUBLE:
-        return QVariant(value->value.double_val);
-    
-    case CONN_SETTINGS_VALUE_INT:
-        return QVariant(value->value.int_val);
-    
-    case CONN_SETTINGS_VALUE_LIST: {
-        // At least with GConf backend connsettings returns byte array as list
-        // of ints, first check for that case
-        if (value->value.list_val && value->value.list_val[0]) {
-            bool canBeConvertedToByteArray = true;
-            for (int idx = 0; value->value.list_val[idx]; idx++) {
-                ConnSettingsValue *val = value->value.list_val[idx];
-                if (val->type != CONN_SETTINGS_VALUE_INT
-                     || val->value.int_val > 255
-                     || val->value.int_val < 0) {
-                    canBeConvertedToByteArray = false;
-                    break;
-                }
-            }
-
-            if (canBeConvertedToByteArray) {
-                QByteArray array;
-                for (int idx = 0; value->value.list_val[idx]; idx++) {
-                    array.append(value->value.list_val[idx]->value.int_val);
-                }
-                return array;
-            }
-
-	    // Create normal list
-	    QVariantList list;
-	    for (int idx = 0; value->value.list_val[idx]; idx++) {
-	      list.append(valueToVariant(value->value.list_val[idx]));
-	    }
-	    return list;
-        }
-    }
-    
-    case CONN_SETTINGS_VALUE_BYTE_ARRAY:
-        return QByteArray::fromRawData((char *)value->value.byte_array.val, 
-                                       value->value.byte_array.len);
-    
-    default:
-        return QVariant();
-    }
-}
-
-// Public class implementation
-
-IAPConf::IAPConf(const QString &iap_id)
-    : d_ptr(new IAPConfPrivate)
-{
-    d_ptr->settings = conn_settings_open(CONN_SETTINGS_CONNECTION,
-                                         QSTRING_TO_CONST_CSTR(iap_id));
-    if (d_ptr->settings == 0) {
-        qWarning("IAPConf: Unable to open ConnSettings for %s", 
-                 QSTRING_TO_CONST_CSTR(iap_id));
-    }
-}
-
-IAPConf::~IAPConf()
-{
-    conn_settings_close(d_ptr->settings);
-    delete d_ptr;
-}
-
-void IAPConf::setValue(const QString& key, const QVariant& value)
-{
-    // Invalid value means unsetting the given key
-    if (!value.isValid()) {
-        int err = conn_settings_unset(d_ptr->settings, 
-                                      QSTRING_TO_CONST_CSTR(key));
-        if (err != CONN_SETTINGS_E_NO_ERROR) {
-            qWarning("IAPConf: unable to unset key %s: %s",
-                     QSTRING_TO_CONST_CSTR(key),
-                     conn_settings_error_text((ConnSettingsError)err));
-        }
-        return;
-    }
-
-    // Convert value to ConnSettingsValue
-    ConnSettingsValue *val = d_ptr->variantToValue(value);
-    if (val == 0) return;
-
-    // Set value and handle errors
-    int error = conn_settings_set(d_ptr->settings,
-                                  QSTRING_TO_CONST_CSTR(key),
-                                  val);
-    if (error != CONN_SETTINGS_E_NO_ERROR) {
-        qWarning("IAPConf: error in setting key %s: %s", 
-                 QSTRING_TO_CONST_CSTR(key), 
-                 conn_settings_error_text((ConnSettingsError)error));
-    }
-
-    // Destroy value
-    conn_settings_value_destroy(val);
-    return;
-}
-
-void IAPConf::set(const QString& key1, const QVariant& value1, 
-                  const QString& key2, const QVariant& value2, 
-                  const QString& key3, const QVariant& value3, 
-                  const QString& key4, const QVariant& value4, 
-                  const QString& key5, const QVariant& value5, 
-                  const QString& key6, const QVariant& value6, 
-                  const QString& key7, const QVariant& value7, 
-                  const QString& key8, const QVariant& value8, 
-                  const QString& key9, const QVariant& value9,
-                  const QString& key10, const QVariant& value10)
-{
-    if (!key1.isEmpty()) setValue(key1, value1);
-    if (!key2.isEmpty()) setValue(key2, value2);
-    if (!key3.isEmpty()) setValue(key3, value3);
-    if (!key4.isEmpty()) setValue(key4, value4);
-    if (!key5.isEmpty()) setValue(key5, value5);
-    if (!key6.isEmpty()) setValue(key6, value6);
-    if (!key7.isEmpty()) setValue(key7, value7);
-    if (!key8.isEmpty()) setValue(key8, value8);
-    if (!key9.isEmpty()) setValue(key9, value9);
-    if (!key10.isEmpty()) setValue(key10, value10);
-}
-
-QVariant IAPConf::value(const QString& key) const
-{
-    ConnSettingsValue *val = conn_settings_get(d_ptr->settings,
-                                               QSTRING_TO_CONST_CSTR(key));
-
-    QVariant variant = d_ptr->valueToVariant(val);
-    conn_settings_value_destroy(val);
-    return variant;
-}
-
-void IAPConf::clear(const char *default_path)
-{
-    Q_UNUSED(default_path); // default path is unused
-
-    int error = conn_settings_remove(d_ptr->settings);
-    if (error != CONN_SETTINGS_E_NO_ERROR) {
-        qWarning("IAPConf: Error when removing IAP: %s",
-                 conn_settings_error_text((ConnSettingsError)error));
-    }
-}
-
-void IAPConf::clearAll()
-{
-    ConnSettings *settings = conn_settings_open(CONN_SETTINGS_CONNECTION,
-                                                NULL);
-    conn_settings_remove(settings);
-    conn_settings_close(settings);
-}
-
-
-void IAPConf::getAll(QList<QString> &all_iaps, bool return_path)
-{
-    Q_UNUSED(return_path); // We don't use return path currently
-
-    // Go through all available connections and add them to the list
-    char **ids = conn_settings_list_ids(CONN_SETTINGS_CONNECTION);
-    if (ids == 0) {
-        // No ids found - nothing to do
-        return;
-    }
-
-    for (int idx = 0; ids[idx]; idx++) {
-        all_iaps.append(QString(ids[idx]));
-        free(ids[idx]);
-    }
-    free(ids);
-}
-
-
-} // namespace Maemo
diff --git a/src/3rdparty/libconninet/src/iapconf.h b/src/3rdparty/libconninet/src/iapconf.h
deleted file mode 100644
index 57c0856..0000000
--- a/src/3rdparty/libconninet/src/iapconf.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-  Contact: Aapo Makela <aapo.makela@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#ifndef IAPCONF_H
-#define IAPCONF_H
-
-#include <QString>
-#include <QVariant>
-
-namespace Maemo {
-
-class IAPConfPrivate;
-class IAPConf {
-public:
-    IAPConf(const QString &iap_id);
-    virtual ~IAPConf();
-
-    /**
-        Convenience method for setting multiple IAP values with one call.
-    */
-    void set(const QString& key1, const QVariant& value1, 
-             const QString& key2 = "", const QVariant& value2 = QVariant(), 
-             const QString& key3 = "", const QVariant& value3 = QVariant(), 
-             const QString& key4 = "", const QVariant& value4 = QVariant(), 
-             const QString& key5 = "", const QVariant& value5 = QVariant(), 
-             const QString& key6 = "", const QVariant& value6 = QVariant(), 
-             const QString& key7 = "", const QVariant& value7 = QVariant(), 
-             const QString& key8 = "", const QVariant& value8 = QVariant(), 
-             const QString& key9 = "", const QVariant& value9 = QVariant(),
-             const QString& key10 = "", const QVariant& value10 = QVariant());
-
-    /**
-        Set one IAP value.
-    */
-    void setValue(const QString& key, const QVariant& value);
-
-    /**
-        Get one IAP value.
-    */
-    QVariant value(const QString& key) const;
-
-    /**
-        Clear this IAP from GConf
-    */
-    void clear(const char *default_path=0);
-
-    /**
-        Clear all IAP specific information from GConf (including all IAPs).
-        DO NOT USE THIS FUNCTION IN ANYWHERE ELSE EXCEPT IN TEST CODE!
-    */
-    void clearAll();
-
-    /**
-        Return all the IAPs found in the system. If return_path is true,
-	then do not strip the IAP path away.
-    */
-    static void getAll(QList<QString> &all_iaps, bool return_path=false);
-
-private:
-    IAPConfPrivate *d_ptr;
-};
-
-} // namespace Maemo
-
-#endif
diff --git a/src/3rdparty/libconninet/src/iapmonitor.cpp b/src/3rdparty/libconninet/src/iapmonitor.cpp
deleted file mode 100644
index c44cbc8..0000000
--- a/src/3rdparty/libconninet/src/iapmonitor.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009-2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#include <QStringList>
-
-#include <conn_settings.h>
-#include "iapmonitor.h"
-
-namespace Maemo {
-
-
-void conn_settings_notify_func (ConnSettingsType type,
-                                const char *id,
-                                const char *key,
-                                ConnSettingsValue *value,
-                                void *user_data);
-
-class IAPMonitorPrivate {
-private:
-    IAPMonitor *monitor;
-    ConnSettings *settings;
-
-public:
-
-    IAPMonitorPrivate(IAPMonitor *monitor)
-        : monitor(monitor)
-    {
-        settings = conn_settings_open(CONN_SETTINGS_CONNECTION, NULL);
-        conn_settings_add_notify(
-                        settings,
-                        (ConnSettingsNotifyFunc *)conn_settings_notify_func,
-                        this);
-    }
-
-    ~IAPMonitorPrivate()
-    {
-        conn_settings_del_notify(settings);
-        conn_settings_close(settings);
-    }
-
-    void iapAdded(const QString &iap)
-    {
-        monitor->iapAdded(iap);
-    }
-
-    void iapRemoved(const QString &iap)
-    {
-        monitor->iapRemoved(iap);
-    }
-};
-
-void conn_settings_notify_func (ConnSettingsType type,
-                                const char *id,
-                                const char *key,
-                                ConnSettingsValue *value,
-                                void *user_data)
-{    
-    if (type != CONN_SETTINGS_CONNECTION) return;
-    IAPMonitorPrivate *priv = (IAPMonitorPrivate *)user_data;
-
-    QString iapId(key);
-    iapId = iapId.split("/")[0];
-    if (value != 0) {
-        priv->iapAdded(iapId);
-    } else if (iapId == QString(key)) {
-        // IAP is removed only when the directory gets removed
-        priv->iapRemoved(iapId);
-    }
-}
-
-IAPMonitor::IAPMonitor()
-    : d_ptr(new IAPMonitorPrivate(this))
-{
-}
-
-IAPMonitor::~IAPMonitor()
-{
-    delete d_ptr;
-}
-
-void IAPMonitor::iapAdded(const QString &id)
-{
-    // By default do nothing
-}
-
-void IAPMonitor::iapRemoved(const QString &id)
-{
-    // By default do nothing
-}
-
-} // namespace Maemo
diff --git a/src/3rdparty/libconninet/src/iapmonitor.h b/src/3rdparty/libconninet/src/iapmonitor.h
deleted file mode 100644
index 558f23e..0000000
--- a/src/3rdparty/libconninet/src/iapmonitor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009-2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#ifndef IAPMONITOR_H
-#define IAPMONITOR_H
-
-#include <QString>
-
-namespace Maemo {
-
-class IAPMonitorPrivate;
-class IAPMonitor {
-public:
-    IAPMonitor();
-    ~IAPMonitor();
-
-protected:
-    virtual void iapAdded(const QString &id);
-    virtual void iapRemoved(const QString &id);
-
-private:
-    IAPMonitorPrivate *d_ptr;
-    Q_DECLARE_PRIVATE(IAPMonitor);
-};
-
-} // namespace Maemo
-
-#endif // IAPMONITOR_H
-
diff --git a/src/3rdparty/libconninet/src/maemo_icd.cpp b/src/3rdparty/libconninet/src/maemo_icd.cpp
deleted file mode 100644
index 026241c..0000000
--- a/src/3rdparty/libconninet/src/maemo_icd.cpp
+++ /dev/null
@@ -1,1316 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-  
-  Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#include <stdio.h>
-#include "maemo_icd.h"
-#include <QObject>
-#include <QTimer>
-#include <QCoreApplication>
-#include <QEventLoop>
-#include <QDebug>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-namespace Maemo {
-
-#undef PRINT_DEBUGINFO
-#ifdef PRINT_DEBUGINFO
-  static FILE *fdebug = NULL;
-#define PDEBUG(fmt, args...)						\
-  do {									\
-    struct timeval tv;							\
-    gettimeofday(&tv, 0);						\
-    fprintf(fdebug, "DEBUG[%d]:%ld.%ld:%s:%s():%d: " fmt,		\
-	    getpid(),							\
-	    tv.tv_sec, tv.tv_usec,					\
-	    __FILE__, __FUNCTION__, __LINE__, args);			\
-    fflush(fdebug);							\
-  } while(0)
-#else
-#define PDEBUG(fmt...)
-#endif
-
-
-/* Reference counting singleton class that creates a single connection
- * to icd so that icd reference counting works as expected. This is
- * needed because DBusDispatcher uses private dbus connections
- * which come and go and icd cannot use that information to
- * determine whether application quit or not. So we create one
- * persistent connection that is only teared down when application
- * quits or calls disconnect()
- */
-class IcdRefCounting
-{
-public:
-    IcdRefCounting() : first_call(true) { }
-    void setup(enum icd_connection_flags flag);
-    void cleanup();
-
-private:
-    bool first_call;
-    struct DBusConnection *connection;
-};
-
-Q_GLOBAL_STATIC(IcdRefCounting, icdRefCounting);
-
-
-void IcdRefCounting::setup(enum icd_connection_flags flag)
-{
-    if (first_call) {
-	DBusMessage *msg = NULL;
-
-	connection = dbus_bus_get_private(DBUS_BUS_SYSTEM, NULL);
-	dbus_connection_set_exit_on_disconnect(connection, FALSE);
-	dbus_connection_setup_with_g_main(connection, NULL);
-
-	msg = dbus_message_new_method_call(ICD_DBUS_API_INTERFACE,
-					   ICD_DBUS_API_PATH,
-					   ICD_DBUS_API_INTERFACE,
-					   ICD_DBUS_API_CONNECT_REQ);
-	if (msg == NULL)
-	    goto out;
-
-	if (!dbus_message_append_args(msg,
-				      DBUS_TYPE_UINT32, &flag,
-				      DBUS_TYPE_INVALID))
-	    goto out;
-
-	if (!dbus_connection_send_with_reply(connection, msg,
-					     NULL, 60*1000))
-	    goto out;
-
-	first_call = false;
-	return;
-
-    out:
-	dbus_connection_close(connection);
-	dbus_connection_unref(connection);
-    }
-}
-
-void IcdRefCounting::cleanup()
-{
-    if (!first_call) {
-	dbus_connection_close(connection);
-	dbus_connection_unref(connection);
-	first_call = true;
-    }
-}
-
-
-class IcdPrivate
-{
-public:
-    IcdPrivate(Icd *myfriend)
-    {
-        init(10000, IcdNewDbusInterface, myfriend);
-    }
-
-    IcdPrivate(unsigned int timeout, Icd *myfriend)
-    {
-        init(timeout, IcdNewDbusInterface, myfriend);
-    }
-
-    IcdPrivate(unsigned int timeout, IcdDbusInterfaceVer ver, Icd *myfriend)
-    {
-        /* Note that the old Icd interface is currently disabled and
-	 * the new one is always used.
-	 */
-        init(timeout, IcdNewDbusInterface, myfriend);
-    }
-
-    ~IcdPrivate()
-    {
-      QObject::disconnect(mDBus, 
-			  SIGNAL(signalReceived(const QString&, 
-						const QString&,
-						const QList<QVariant>&)),
-			  icd,
-			  SLOT(icdSignalReceived(const QString&, 
-						 const QString&,
-						 const QList<QVariant>&)));
-
-      QObject::disconnect(mDBus,
-			  SIGNAL(callReply(const QString&,
-					   const QList<QVariant>&,
-					   const QString&)),
-			  icd,
-			  SLOT(icdCallReply(const QString&,
-					    const QList<QVariant>&,
-					    const QString&)));
-
-        delete mDBus;
-        mDBus = 0;
-    }
-
-    /* Icd2 dbus API functions */
-    QStringList scan(icd_scan_request_flags flags,
-		     QStringList &network_types,
-		     QList<IcdScanResult>& scan_results,
-		     QString& error);
-    void scanCancel();
-    bool connect(icd_connection_flags flags, IcdConnectResult& result);
-    bool connect(icd_connection_flags flags, QList<ConnectParams>& params,
-		 IcdConnectResult& result);
-    bool connect(icd_connection_flags flags, QString& iap, QString& result);
-    void select(uint flags);
-    void disconnect(uint connect_flags, QString& service_type,
-		    uint service_attrs, QString& service_id,
-		    QString& network_type, uint network_attrs,
-		    QByteArray& network_id);
-    void disconnect(uint connect_flags);
-
-    uint state(QString& service_type, uint service_attrs,
-	       QString& service_id, QString& network_type,
-	       uint network_attrs, QByteArray& network_id,
-	       IcdStateResult &state_result);
-    uint statistics(QString& service_type, uint service_attrs,
-		    QString& service_id, QString& network_type,
-		    uint network_attrs, QByteArray& network_id,
-		    IcdStatisticsResult& stats_result);
-    uint addrinfo(QString& service_type, uint service_attrs,
-		  QString& service_id, QString& network_type,
-		  uint network_attrs, QByteArray& network_id,
-		  IcdAddressInfoResult& addr_result);
-
-    uint state(QList<IcdStateResult>& state_results);
-    uint state_non_blocking(QList<IcdStateResult>& state_results);
-    uint statistics(QList<IcdStatisticsResult>& stats_results);
-    uint addrinfo(QList<IcdAddressInfoResult>& addr_results);
-    uint addrinfo_non_blocking(QList<IcdAddressInfoResult>& addr_results);
-
-    void signalReceived(const QString& interface, 
-                        const QString& signal,
-                        const QList<QVariant>& args);
-    void callReply(const QString& method, 
-                   const QList<QVariant>& args,
-                   const QString& error);
-
-    QString error() { return mError; }
-
-public:
-    DBusDispatcher *mDBus;
-    QString mMethod;
-    QString mInterface;
-    QString mSignal;
-    QString mError;
-    QList<QVariant> mArgs;
-    QList<QVariant> receivedSignals;
-    unsigned int timeout;
-    IcdDbusInterfaceVer icd_dbus_version;
-    Icd *icd;
-
-    void init(unsigned int dbus_timeout, IcdDbusInterfaceVer ver,
-	      Icd *myfriend)
-    {
-      if (ver == IcdNewDbusInterface) {
-	mDBus = new DBusDispatcher(ICD_DBUS_API_INTERFACE,
-				   ICD_DBUS_API_PATH,
-				   ICD_DBUS_API_INTERFACE);
-      } else {
-	mDBus = new DBusDispatcher(ICD_DBUS_SERVICE,
-				   ICD_DBUS_PATH,
-				   ICD_DBUS_INTERFACE);
-      }
-      icd_dbus_version = ver;
-
-      /* This connect has a side effect as it means that only one
-       * Icd object can exists in one time. This should be fixed!
-       */
-      QObject::connect(mDBus, 
-		       SIGNAL(signalReceived(const QString&, 
-					     const QString&,
-					     const QList<QVariant>&)),
-		       myfriend,
-		       SLOT(icdSignalReceived(const QString&, 
-					      const QString&,
-					      const QList<QVariant>&)));
-
-      QObject::connect(mDBus,
-		       SIGNAL(callReply(const QString&,
-					const QList<QVariant>&,
-					const QString&)),
-		       myfriend,
-		       SLOT(icdCallReply(const QString&,
-					 const QList<QVariant>&,
-					 const QString&)));
-
-      icd = myfriend;
-      timeout = dbus_timeout;
-
-#ifdef PRINT_DEBUGINFO
-      if (!fdebug) {
-	fdebug = fopen("/tmp/maemoicd.log", "a+");
-      }
-      PDEBUG("created %s\n", "IcdPrivate");
-#endif
-    }
-
-    void clearState()
-    {
-      mMethod.clear();
-      mInterface.clear();
-      mSignal.clear();
-      mError.clear();
-      mArgs.clear();
-      receivedSignals.clear();
-    }
-
-    bool doConnect(IcdConnectResult& result);
-    bool doConnect(QString& result);
-    bool doState();
-};
-
-
-void IcdPrivate::signalReceived(const QString& interface, 
-				const QString& signal,
-				const QList<QVariant>& args)
-{
-    // Signal handler, which simply records what has been signalled
-    mInterface = interface;
-    mSignal = signal;
-    mArgs = args;
-
-    //qDebug() << "signal" << signal << "received:" << args;
-    receivedSignals << QVariant(interface) << QVariant(signal) << QVariant(args);
-}
-
-
-void IcdPrivate::callReply(const QString& method, 
-			   const QList<QVariant>& /*args*/,
-			   const QString& error)
-{
-    mMethod = method;
-    mError = error;
-}
-
-
-static void get_scan_result(QList<QVariant>& args,
-			    IcdScanResult& ret)
-{
-    int i=0;
-
-    if (args.isEmpty())
-      return;
-
-    ret.status = args[i++].toUInt();
-    ret.timestamp = args[i++].toUInt();
-    ret.scan.service_type = args[i++].toString();
-    ret.service_name = args[i++].toString();
-    ret.scan.service_attrs = args[i++].toUInt();
-    ret.scan.service_id = args[i++].toString();
-    ret.service_priority = args[i++].toInt();
-    ret.scan.network_type = args[i++].toString();
-    ret.network_name = args[i++].toString();
-    ret.scan.network_attrs = args[i++].toUInt();
-    ret.scan.network_id = args[i++].toByteArray();
-    ret.network_priority = args[i++].toInt();
-    ret.signal_strength = args[i++].toInt();
-    ret.station_id = args[i++].toString();
-    ret.signal_dB = args[i++].toInt();
-}
-
-
-static void get_connect_result(QList<QVariant>& args,
-			       IcdConnectResult& ret)
-{
-    int i=0;
-
-    if (args.isEmpty())
-      return;
-
-    ret.connect.service_type = args[i++].toString();
-    ret.connect.service_attrs = args[i++].toInt();
-    ret.connect.service_id = args[i++].toString();
-    ret.connect.network_type = args[i++].toString();
-    ret.connect.network_attrs = args[i++].toInt();
-    ret.connect.network_id = args[i++].toByteArray();
-    ret.status = args[i++].toInt();
-}
-
-
-QStringList IcdPrivate::scan(icd_scan_request_flags flags,
-			     QStringList &network_types,
-			     QList<IcdScanResult>& scan_results,
-			     QString& error)
-{
-    QStringList scanned_types;
-    QTimer timer;
-    QVariant reply;
-    QVariantList vl;
-    bool last_result = false;
-    IcdScanResult result;
-    int all_waited;
-    
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_SCAN_REQ, (uint)flags);
-    if (reply.type() != QVariant::List)
-        return scanned_types;
-    vl = reply.toList();
-    if (vl.isEmpty()) {
-        error = "Scan did not return anything.";
-	return scanned_types;
-    }
-    reply = vl.first();
-    scanned_types = reply.toStringList();
-    //qDebug() << "Scanning:" << scanned_types;
-    all_waited = scanned_types.size();
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    scan_results.clear();
-    while (!last_result) {
-	while (timer.isActive() && mInterface.isEmpty() && mError.isEmpty()) {
-	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-	}
-
-	if (!timer.isActive()) {
-	    //qDebug() << "Timeout happened";
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_SCAN_SIG) {
-	    //qDebug() << "Received" << mSignal << "while waiting" << ICD_DBUS_API_SCAN_SIG << ", ignoring";
-	    mInterface.clear();
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-  	    QString msgInterface = receivedSignals.takeFirst().toString();
-	    QString msgSignal = receivedSignals.takeFirst().toString();
-	    QList<QVariant> msgArgs = receivedSignals.takeFirst().toList();
-	    //qDebug() << "Signal" << msgSignal << "received.";
-	    //qDebug() << "Params:" << msgArgs;
-
-	    while (!msgSignal.isEmpty()) {
-		get_scan_result(msgArgs, result);
-
-#if 0
-		qDebug() << "Received: " <<
-		    "status =" << result.status <<
-		    ", timestamp =" << result.timestamp <<
-		    ", service_type =" << result.scan.service_type <<
-		    ", service_name =" << result.service_name <<
-		    ", service_attrs =" << result.scan.service_attrs <<
-		    ", service_id =" << result.scan.service_id <<
-		    ", service_priority =" << result.service_priority <<
-		    ", network_type =" << result.scan.network_type <<
-		    ", network_name =" << result.network_name <<
-		    ", network_attrs =" << result.scan.network_attrs <<
-		    ", network_id =" << "-" <<
-		    ", network_priority =" << result.network_priority <<
-		    ", signal_strength =" << result.signal_strength <<
-		    ", station_id =" << result.station_id <<
-		    ", signal_dB =" << result.signal_dB;
-#endif
-
-		if (result.status == ICD_SCAN_COMPLETE) {
-		    //qDebug() << "waited =" << all_waited;
-		    if (--all_waited == 0) {
-		        last_result = true;
-			break;
-		    }
-		} else
-		    scan_results << result;
-
-		if (receivedSignals.isEmpty())
-		    break;
-
-		msgInterface = receivedSignals.takeFirst().toString();
-		msgSignal = receivedSignals.takeFirst().toString();
-		msgArgs = receivedSignals.takeFirst().toList();
-	    }
-	    mInterface.clear();
-
-	} else {
-	    qWarning() << "Error while scanning:" << mError;
-	    break;
-	}
-    }
-    timer.stop();
-
-    error = mError;
-    return scanned_types;
-}
-
-
-void IcdPrivate::scanCancel()
-{
-    mDBus->call(ICD_DBUS_API_SCAN_CANCEL);
-}
-
-
-bool IcdPrivate::doConnect(IcdConnectResult& result)
-{
-    QTimer timer;
-    bool status = false;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    //qDebug() << "Waiting" << ICD_DBUS_API_CONNECT_SIG << "signal";
-
-    while (timer.isActive() && mInterface.isEmpty() &&
-	mSignal != ICD_DBUS_API_CONNECT_SIG &&
-	mError.isEmpty()) {
-	QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-    }
-
-    timer.stop();
-
-    if (mError.isEmpty()) {
-        if (!mArgs.isEmpty()) {
-	    get_connect_result(mArgs, result);
-	    status = true;
-	} else
-	    status = false;
-    } else
-	status = false;
-
-    return status;
-}
-
-
-bool IcdPrivate::connect(icd_connection_flags flags, IcdConnectResult& result)
-{
-    clearState();
-    //mDBus->callAsynchronous(ICD_DBUS_API_CONNECT_REQ, (uint)flags);
-    mDBus->call(ICD_DBUS_API_CONNECT_REQ, (uint)flags);
-    icdRefCounting()->setup(flags);
-    return doConnect(result);
-}
-
-
-bool IcdPrivate::connect(icd_connection_flags flags, QList<ConnectParams>& params,
-		IcdConnectResult& result)
-{
-    QVariantList varlist;
-    QVariantList varlist2;
-
-    foreach (ConnectParams param, params) {
-        QVariantList items;
-
-	items.append(QVariant(param.connect.service_type));
-	items.append(QVariant(param.connect.service_attrs));
-	items.append(QVariant(param.connect.service_id));
-	items.append(QVariant(param.connect.network_type));
-	items.append(QVariant(param.connect.network_attrs));
-	items.append(QVariant(param.connect.network_id));
-
-	varlist.append(items);
-    }
-
-    varlist2.append(QVariant(varlist));
-
-    clearState();
-    //mDBus->callAsynchronous(ICD_DBUS_API_CONNECT_REQ, (uint)flags, varlist2);
-    mDBus->call(ICD_DBUS_API_CONNECT_REQ, (uint)flags, varlist2);
-    icdRefCounting()->setup(flags);
-    return doConnect(result);
-}
-
-
-bool IcdPrivate::doConnect(QString& ret)
-{
-    QTimer timer;
-    bool status = false;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    while (timer.isActive() && mInterface.isEmpty() &&
-	mError.isEmpty()) {
-	QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-    }
-
-    timer.stop();
-
-    if (mError.isEmpty()) {
-	if (!mArgs.isEmpty()) {
-	    status = true;
-	    //ret = mArgs[0];  // TODO correctly
-	} else
-	    status = false;
-    } else
-	status = false;
-
-    return status;
-}
-
-
-bool IcdPrivate::connect(icd_connection_flags flags, QString& iap, QString& result)
-{
-    clearState();
-    //mDBus->callAsynchronous(ICD_CONNECT_REQ, iap, (uint)flags);
-    mDBus->call(ICD_CONNECT_REQ, iap, (uint)flags);
-    icdRefCounting()->setup(flags);
-    return doConnect(result);
-}
-
-
-void IcdPrivate::select(uint flags)
-{
-    mDBus->call(ICD_DBUS_API_SELECT_REQ, flags);
-}
-
-
-void IcdPrivate::disconnect(uint flags, QString& service_type,
-		    uint service_attrs, QString& service_id,
-		    QString& network_type, uint network_attrs,
-		    QByteArray& network_id)
-{
-    clearState();
-    mDBus->call(ICD_DBUS_API_DISCONNECT_REQ, flags,
-		service_type, service_attrs, service_id,
-		network_type, network_attrs, network_id);
-    icdRefCounting()->cleanup();
-}
-
-
-void IcdPrivate::disconnect(uint flags)
-{
-    clearState();
-    mDBus->call(ICD_DBUS_API_DISCONNECT_REQ, flags);
-    icdRefCounting()->cleanup();
-}
-
-
-static void get_state_all_result(QList<QVariant>& args,
-				 IcdStateResult& ret)
-{
-    int i=0;
-
-    ret.params.service_type = args[i++].toString();
-    ret.params.service_attrs = args[i++].toUInt();
-    ret.params.service_id = args[i++].toString();
-    ret.params.network_type = args[i++].toString();
-    ret.params.network_attrs = args[i++].toUInt();
-    ret.params.network_id = args[i++].toByteArray();
-    ret.error = args[i++].toString();
-    ret.state = args[i++].toInt();
-}
-
-
-static void get_state_all_result2(QList<QVariant>& args,
-				 IcdStateResult& ret)
-{
-    int i=0;
-
-    ret.params.network_type = args[i++].toString();
-    ret.state = args[i++].toInt();
-
-    // Initialize the other values so that the caller can
-    // notice we only returned partial status
-    ret.params.service_type = QString();
-    ret.params.service_attrs = 0;
-    ret.params.service_id = QString();
-    ret.params.network_attrs = 0;
-    ret.params.network_id = QByteArray();
-    ret.error = QString();
-}
-
-
-uint IcdPrivate::state(QString& service_type, uint service_attrs,
-		       QString& service_id, QString& network_type,
-		       uint network_attrs, QByteArray& network_id,
-		       IcdStateResult& state_result)
-{
-    QTimer timer;
-    QVariant reply;
-    uint total_signals;
-    QVariantList vl;
-
-    clearState();
-
-    reply = mDBus->call(ICD_DBUS_API_STATE_REQ,
-			service_type, service_attrs, service_id,
-			network_type, network_attrs, network_id);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    total_signals = reply.toUInt();
-    if (!total_signals)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    mInterface.clear();
-    while (timer.isActive() && mInterface.isEmpty()) {
-        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-
-	if (mSignal != ICD_DBUS_API_STATE_SIG) {
-            mInterface.clear();
-	    continue;
-	}
-    }
-
-    timer.stop();
-
-    if (mError.isEmpty()) {
-        if (!mArgs.isEmpty()) {
-	    if (mArgs.size()>2)
-	        get_state_all_result(mArgs, state_result);
-	    else {
-	        // We are not connected as we did not get the status we asked
-	        return 0;
-	    }
-	}
-    } else {
-        qWarning() << "Error:" << mError;
-    }
-
-    // The returned value should be one because we asked for one state
-    return total_signals;
-}
-
-
-uint IcdPrivate::state_non_blocking(QList<IcdStateResult>& state_results)
-{
-    QTimer timer;
-    QVariant reply;
-    QVariantList vl;
-    uint signals_left, total_signals;
-    IcdStateResult result;
-
-    PDEBUG("%s\n", "non blocking state");
-
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_STATE_REQ);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    signals_left = total_signals = reply.toUInt();
-    if (!signals_left)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-    state_results.clear();
-    mError.clear();
-    while (signals_left) {
-        mInterface.clear();
-	while (timer.isActive() && mInterface.isEmpty()) {
-	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-	}
-
-	if (!timer.isActive()) {
-	    total_signals = 0;
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_STATE_SIG) {
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-	    if (!mArgs.isEmpty()) {
-	        if (mArgs.size()==2)
-	            get_state_all_result2(mArgs, result);
-		else
-	            get_state_all_result(mArgs, result);
-		state_results << result;
-	    }
-	    signals_left--;
-	} else {
-	    qWarning() << "Error:" << mError;
-	    break;
-	}
-    }
-    timer.stop();
-
-    PDEBUG("total_signals=%d\n", total_signals);
-    return total_signals;
-}
-
-
-/* Special version of the state() call which does not call event loop.
- * Needed in order to fix NB#175098 where Qt4.7 webkit crashes because event
- * loop is run when webkit does not expect it. This function is called from
- * bearer management API syncStateWithInterface() in QNetworkSession
- * constructor.
- */
-uint IcdPrivate::state(QList<IcdStateResult>& state_results)
-{
-    QVariant reply;
-    QVariantList vl;
-    uint signals_left, total_signals;
-    IcdStateResult result;
-    time_t started;
-    int timeout_secs = timeout / 1000;
-
-    PDEBUG("%s\n", "state_results");
-
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_STATE_REQ);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    signals_left = total_signals = reply.toUInt();
-    if (!signals_left)
-        return 0;
-
-    started = time(0);
-    state_results.clear();
-    mError.clear();
-    while (signals_left) {
-        mInterface.clear();
-	while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
-	    mDBus->synchronousDispatch(1000);
-	}
-
-        if (time(0)>(started+timeout_secs)) {
-	    total_signals = 0;
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_STATE_SIG) {
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-	    if (!mArgs.isEmpty()) {
-	        if (mArgs.size()==2)
-	            get_state_all_result2(mArgs, result);
-		else
-	            get_state_all_result(mArgs, result);
-		state_results << result;
-	    }
-	    signals_left--;
-	} else {
-	    qWarning() << "Error:" << mError;
-	    break;
-	}
-    }
-
-    PDEBUG("total_signals=%d\n", total_signals);
-    return total_signals;
-}
-
-
-static void get_statistics_all_result(QList<QVariant>& args,
-				      IcdStatisticsResult& ret)
-{
-    int i=0;
-
-    if (args.isEmpty())
-      return;
-
-    ret.params.service_type = args[i++].toString();
-    ret.params.service_attrs = args[i++].toUInt();
-    ret.params.service_id = args[i++].toString();
-    ret.params.network_type = args[i++].toString();
-    ret.params.network_attrs = args[i++].toUInt();
-    ret.params.network_id = args[i++].toByteArray();
-    ret.time_active = args[i++].toUInt();
-    ret.signal_strength = (enum icd_nw_levels)args[i++].toUInt();
-    ret.bytes_sent = args[i++].toUInt();
-    ret.bytes_received = args[i++].toUInt();
-}
-
-
-uint IcdPrivate::statistics(QList<IcdStatisticsResult>& stats_results)
-{
-    QTimer timer;
-    QVariant reply;
-    QVariantList vl;
-    uint signals_left, total_signals;
-    IcdStatisticsResult result;
-
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_STATISTICS_REQ);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    if (reply.type() != QVariant::UInt)
-        return 0;
-    signals_left = total_signals = reply.toUInt();
-
-    if (!signals_left)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-    stats_results.clear();
-    while (signals_left) {
-	mInterface.clear();
-	while (timer.isActive() && mInterface.isEmpty()) {
-	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-	}
-
-	if (!timer.isActive()) {
-	    total_signals = 0;
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_STATISTICS_SIG) {
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-  	    get_statistics_all_result(mArgs, result);
-	    stats_results << result;
-	    signals_left--;
-	} else {
-	    qWarning() << "Error:" << mError;
-	    break;
-	}
-    }
-    timer.stop();
-
-    return total_signals;
-}
-
-
-uint IcdPrivate::statistics(QString& service_type, uint service_attrs,
-			    QString& service_id, QString& network_type,
-			    uint network_attrs, QByteArray& network_id,
-			    IcdStatisticsResult& stats_result)
-{
-    QTimer timer;
-    QVariant reply;
-    uint total_signals;
-    QVariantList vl;
-
-    clearState();
-
-    reply = mDBus->call(ICD_DBUS_API_STATISTICS_REQ,
-			service_type, service_attrs, service_id,
-			network_type, network_attrs, network_id);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    total_signals = reply.toUInt();
-    if (!total_signals)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    mInterface.clear();
-    while (timer.isActive() && mInterface.isEmpty()) {
-        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-
-	if (mSignal != ICD_DBUS_API_STATISTICS_SIG) {
-            mInterface.clear();
-	    continue;
-	}
-    }
-
-    timer.stop();
-
-    if (mError.isEmpty()) {
-        get_statistics_all_result(mArgs, stats_result);
-    } else {
-        qWarning() << "Error:" << mError;
-    }
-
-    // The returned value should be one because we asked for one statistics
-    return total_signals;
-}
-
-
-static void get_addrinfo_all_result(QList<QVariant>& args,
-				    IcdAddressInfoResult& ret)
-{
-    int i=0;
-
-    if (args.isEmpty())
-      return;
-
-    ret.params.service_type = args[i++].toString();
-    ret.params.service_attrs = args[i++].toUInt();
-    ret.params.service_id = args[i++].toString();
-    ret.params.network_type = args[i++].toString();
-    ret.params.network_attrs = args[i++].toUInt();
-    ret.params.network_id = args[i++].toByteArray();
-
-    QVariantList vl = args[i].toList();
-    QVariant reply = vl.first();
-    QList<QVariant> lst = reply.toList();
-    for (int k=0; k<lst.size()/6; k=k+6) {
-        IcdIPInformation ip_info;
-	ip_info.address = lst[k].toString();
-	ip_info.netmask = lst[k++].toString();
-	ip_info.default_gateway = lst[k++].toString();
-	ip_info.dns1 = lst[k++].toString();
-	ip_info.dns2 = lst[k++].toString();
-	ip_info.dns3 = lst[k++].toString();
-
-	ret.ip_info << ip_info;
-    }
-}
-
-
-/* Special version of the addrinfo() call which does not call event loop.
- * Needed in order to fix NB#175098 where Qt4.7 webkit crashes because event
- * loop is run when webkit does not expect it. This function is called from
- * bearer management API syncStateWithInterface() in QNetworkSession
- * constructor.
- */
-uint IcdPrivate::addrinfo(QList<IcdAddressInfoResult>& addr_results)
-{
-    QVariant reply;
-    QVariantList vl;
-    uint signals_left, total_signals;
-    IcdAddressInfoResult result;
-    time_t started;
-    int timeout_secs = timeout / 1000;
-
-    PDEBUG("%s\n", "addr_results");
-
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_ADDRINFO_REQ);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    if (reply.type() != QVariant::UInt)
-        return 0;
-    signals_left = total_signals = reply.toUInt();
-    if (!signals_left)
-        return 0;
-
-    started = time(0);
-    addr_results.clear();
-    while (signals_left) {
-        mInterface.clear();
-	while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
-	    mDBus->synchronousDispatch(1000);
-	}
-
-        if (time(0)>(started+timeout_secs)) {
-	    total_signals = 0;
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_ADDRINFO_SIG) {
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-  	    get_addrinfo_all_result(mArgs, result);
-	    addr_results << result;
-	    signals_left--;
-	} else {
-	    qWarning() << "Error:" << mError;
-	    break;
-	}
-    }
-
-    PDEBUG("total_signals=%d\n", total_signals);
-    return total_signals;
-}
-
-uint IcdPrivate::addrinfo_non_blocking(QList<IcdAddressInfoResult>& addr_results)
-{
-    QTimer timer;
-    QVariant reply;
-    QVariantList vl;
-    uint signals_left, total_signals;
-    IcdAddressInfoResult result;
-
-    PDEBUG("%s\n", "non blocking addrinfo");
-
-    clearState();
-    reply = mDBus->call(ICD_DBUS_API_ADDRINFO_REQ);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    if (reply.type() != QVariant::UInt)
-        return 0;
-    signals_left = total_signals = reply.toUInt();
-    if (!signals_left)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-    addr_results.clear();
-    while (signals_left) {
-        mInterface.clear();
-	while (timer.isActive() && mInterface.isEmpty()) {
-	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-	}
-
-	if (!timer.isActive()) {
-	    total_signals = 0;
-	    break;
-	}
-
-	if (mSignal != ICD_DBUS_API_ADDRINFO_SIG) {
-	    continue;
-	}
-
-	if (mError.isEmpty()) {
-  	    get_addrinfo_all_result(mArgs, result);
-	    addr_results << result;
-	    signals_left--;
-	} else {
-	    qWarning() << "Error:" << mError;
-	    break;
-	}
-    }
-    timer.stop();
-    PDEBUG("total_signals=%d\n", total_signals);
-    return total_signals;
-}
-
-
-uint IcdPrivate::addrinfo(QString& service_type, uint service_attrs,
-			  QString& service_id, QString& network_type,
-			  uint network_attrs, QByteArray& network_id,
-			  IcdAddressInfoResult& addr_result)
-{
-    QTimer timer;
-    QVariant reply;
-    uint total_signals;
-    QVariantList vl;
-
-    clearState();
-
-    reply = mDBus->call(ICD_DBUS_API_ADDRINFO_REQ,
-			service_type, service_attrs, service_id,
-			network_type, network_attrs, network_id);
-    if (reply.type() != QVariant::List)
-        return 0;
-    vl = reply.toList();
-    if (vl.isEmpty())
-        return 0;
-    reply = vl.first();
-    total_signals = reply.toUInt();
-
-    if (!total_signals)
-        return 0;
-
-    timer.setSingleShot(true);
-    timer.start(timeout);
-
-    mInterface.clear();
-    while (timer.isActive() && mInterface.isEmpty()) {
-        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-
-	if (mSignal != ICD_DBUS_API_ADDRINFO_SIG) {
-            mInterface.clear();
-	    continue;
-	}
-    }
-
-    timer.stop();
-
-    if (mError.isEmpty()) {
-        get_addrinfo_all_result(mArgs, addr_result);
-    } else {
-        qWarning() << "Error:" << mError;
-    }
-
-    // The returned value should be one because we asked for one addrinfo
-    return total_signals;
-}
-
-
-Icd::Icd(QObject *parent)
-  : QObject(parent), d(new IcdPrivate(this))
-{
-}
-
-Icd::Icd(unsigned int timeout, QObject *parent)
-  : QObject(parent), d(new IcdPrivate(timeout, this))
-{
-}
-
-Icd::Icd(unsigned int timeout, IcdDbusInterfaceVer ver, QObject *parent)
-  : QObject(parent), d(new IcdPrivate(timeout, ver, this))
-{
-}
-
-Icd::~Icd()
-{
-    delete d;
-}
-
-
-QStringList Icd::scan(icd_scan_request_flags flags,
-		      QStringList &network_types,
-		      QList<IcdScanResult>& scan_results,
-		      QString& error)
-{
-    return d->scan(flags, network_types, scan_results, error);
-}
-
-
-void Icd::scanCancel()
-{
-    d->scanCancel();
-}
-
-
-bool Icd::connect(icd_connection_flags flags, IcdConnectResult& result)
-{
-    return d->connect(flags, result);
-}
-
-
-bool Icd::connect(icd_connection_flags flags, QList<ConnectParams>& params,
-		  IcdConnectResult& result)
-{
-    return d->connect(flags, params, result);
-}
-
-
-bool Icd::connect(icd_connection_flags flags, QString& iap, QString& result)
-{
-    return d->connect(flags, iap, result);
-}
-
-
-void Icd::select(uint flags)
-{
-    d->select(flags);
-}
-
-
-void Icd::disconnect(uint connect_flags, QString& service_type,
-		     uint service_attrs, QString& service_id,
-		     QString& network_type, uint network_attrs,
-		     QByteArray& network_id)
-{
-    d->disconnect(connect_flags, service_type,
-		  service_attrs, service_id,
-		  network_type, network_attrs,
-		  network_id);
-}
-
-
-void Icd::disconnect(uint connect_flags)
-{
-    d->disconnect(connect_flags);
-}
-
-
-uint Icd::state(QString& service_type, uint service_attrs,
-		QString& service_id, QString& network_type,
-		uint network_attrs, QByteArray& network_id,
-		IcdStateResult &state_result)
-{
-    return d->state(service_type, service_attrs, service_id,
-		    network_type, network_attrs, network_id,
-		    state_result);
-}
-
-
-uint Icd::statistics(QString& service_type, uint service_attrs,
-		     QString& service_id, QString& network_type,
-		     uint network_attrs, QByteArray& network_id,
-		     IcdStatisticsResult& stats_result)
-{
-    return d->statistics(service_type, service_attrs, service_id,
-			 network_type, network_attrs, network_id,
-			 stats_result);
-}
-
-
-uint Icd::addrinfo(QString& service_type, uint service_attrs,
-		   QString& service_id, QString& network_type,
-		   uint network_attrs, QByteArray& network_id,
-		   IcdAddressInfoResult& addr_result)
-{
-    return d->addrinfo(service_type, service_attrs, service_id,
-		       network_type, network_attrs, network_id,
-		       addr_result);
-}
-
-
-uint Icd::state(QList<IcdStateResult>& state_results)
-{
-    return d->state(state_results);
-}
-
-uint Icd::state_non_blocking(QList<IcdStateResult>& state_results)
-{
-    return d->state_non_blocking(state_results);
-}
-
-uint Icd::statistics(QList<IcdStatisticsResult>& stats_results)
-{
-    return d->statistics(stats_results);
-}
-
-
-uint Icd::addrinfo(QList<IcdAddressInfoResult>& addr_results)
-{
-    return d->addrinfo(addr_results);
-}
-
-uint Icd::addrinfo_non_blocking(QList<IcdAddressInfoResult>& addr_results)
-{
-    return d->addrinfo_non_blocking(addr_results);
-}
-
-void Icd::icdSignalReceived(const QString& interface, 
-			 const QString& signal,
-			 const QList<QVariant>& args)
-{
-    d->signalReceived(interface, signal, args);
-}
-
-
-void Icd::icdCallReply(const QString& method, 
-		    const QList<QVariant>& args,
-		    const QString& error)
-{
-    d->callReply(method, args, error);
-}
-
-
-QString Icd::error()
-{
-    return d->error();
-}
-
-}  // Maemo namespace
-
-
diff --git a/src/3rdparty/libconninet/src/maemo_icd.h b/src/3rdparty/libconninet/src/maemo_icd.h
deleted file mode 100644
index d7a8d5b..0000000
--- a/src/3rdparty/libconninet/src/maemo_icd.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-  
-  Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#ifndef MAEMO_ICD_H
-#define MAEMO_ICD_H
-
-#include <QObject>
-#include <QStringList>
-#include <QByteArray>
-#include <QMetaType>
-#include <QtDBus>
-#include <QDBusArgument>
-
-#include <glib.h>
-#include <icd/dbus_api.h>
-#include <icd/osso-ic.h>
-#include <icd/osso-ic-dbus.h>
-
-#include "dbusdispatcher.h"
-#include <icd/network_api_defines.h>
-
-#define ICD_LONG_SCAN_TIMEOUT (30*1000)  /* 30sec */
-#define ICD_SHORT_SCAN_TIMEOUT (10*1000)  /* 10sec */
-#define ICD_SHORT_CONNECT_TIMEOUT (10*1000) /* 10sec */
-#define ICD_LONG_CONNECT_TIMEOUT (150*1000) /* 2.5min */
-
-namespace Maemo {
-
-struct CommonParams {
-	QString service_type;
-	uint service_attrs;
-	QString service_id;
-	QString network_type;
-	uint network_attrs;
-	QByteArray network_id;
-};
-
-struct ConnectParams {
-	struct CommonParams connect;
-};
-
-struct IcdScanResult {
-	uint status; // see #icd_scan_status
-	uint timestamp; // when last seen
-	QString service_name;
-	uint service_priority; // within a service type
-	QString network_name;
-	uint network_priority;
-	struct CommonParams scan;
-	uint signal_strength; // quality, 0 (none) - 10 (good)
-	QString station_id; // e.g. MAC address or similar id
-	uint signal_dB; // use signal strength above unless you know what you are doing
-
-	IcdScanResult() {
-		status = timestamp = scan.service_attrs = service_priority =
-			scan.network_attrs = network_priority = signal_strength =
-			signal_dB = 0;
-	}
-};
-
-struct IcdConnectResult {
-	struct CommonParams connect;
-	uint status;
-};
-
-struct IcdStateResult {
-	struct CommonParams params;
-	QString error;
-	uint state;
-};
-
-struct IcdStatisticsResult {
-	struct CommonParams params;
-	uint time_active;  // in seconds
-	enum icd_nw_levels signal_strength; // see network_api_defines.h in icd2-dev package
-	uint bytes_sent;
-	uint bytes_received;
-};
-
-struct IcdIPInformation {
-	QString address;
-	QString netmask;
-	QString default_gateway;
-	QString dns1;
-	QString dns2;
-	QString dns3;
-};
-
-struct IcdAddressInfoResult {
-	struct CommonParams params;
-	QList<IcdIPInformation> ip_info;
-};
-
-enum IcdDbusInterfaceVer {
-	IcdOldDbusInterface = 0,  // use the old OSSO-IC interface
-	IcdNewDbusInterface       // use the new Icd2 interface (default)
-};
-
-
-class IcdPrivate;
-class Icd : public QObject
-{
-    Q_OBJECT
-
-public:
-    Icd(QObject *parent = 0);
-    Icd(unsigned int timeout, QObject *parent = 0);
-    Icd(unsigned int timeout, IcdDbusInterfaceVer ver, QObject *parent = 0);
-    ~Icd();
-    QString error();  // returns last error string
-
-    /* Icd2 dbus API functions */
-    QStringList scan(icd_scan_request_flags flags,
-		     QStringList &network_types,
-		     QList<IcdScanResult>& scan_results,
-		     QString& error);
-    void scanCancel();
-    bool connect(icd_connection_flags flags, IcdConnectResult& result);
-    bool connect(icd_connection_flags flags, QList<ConnectParams>& params,
-		 IcdConnectResult& result);
-    bool connect(icd_connection_flags flags, QString& iap, QString& result);
-    void select(uint flags);
-    void disconnect(uint connect_flags, QString& service_type,
-		    uint service_attrs, QString& service_id,
-		    QString& network_type, uint network_attrs,
-		    QByteArray& network_id);
-    void disconnect(uint connect_flags);
-
-    uint state(QString& service_type, uint service_attrs,
-	       QString& service_id, QString& network_type,
-	       uint network_attrs, QByteArray& network_id,
-	       IcdStateResult &state_result);
-    uint statistics(QString& service_type, uint service_attrs,
-		    QString& service_id, QString& network_type,
-		    uint network_attrs, QByteArray& network_id,
-		    IcdStatisticsResult& stats_result);
-    uint addrinfo(QString& service_type, uint service_attrs,
-		  QString& service_id, QString& network_type,
-		  uint network_attrs, QByteArray& network_id,
-		  IcdAddressInfoResult& addr_result);
-
-    uint state(QList<IcdStateResult>& state_results);
-    uint state_non_blocking(QList<IcdStateResult>& state_results);
-    uint statistics(QList<IcdStatisticsResult>& stats_results);
-    uint addrinfo(QList<IcdAddressInfoResult>& addr_results);
-    uint addrinfo_non_blocking(QList<IcdAddressInfoResult>& addr_results);
-
-private Q_SLOTS:
-    void icdSignalReceived(const QString& interface, 
-                        const QString& signal,
-                        const QList<QVariant>& args);
-    void icdCallReply(const QString& method, 
-                   const QList<QVariant>& args,
-                   const QString& error);
-
-private:
-    IcdPrivate *d;
-    friend class IcdPrivate;
-};
-
-}  // Maemo namespace
-
-#endif
diff --git a/src/3rdparty/libconninet/src/proxyconf.cpp b/src/3rdparty/libconninet/src/proxyconf.cpp
deleted file mode 100644
index d377a31..0000000
--- a/src/3rdparty/libconninet/src/proxyconf.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#include <QVariant>
-#include <QStringList>
-#include <QDebug>
-#include <QWriteLocker>
-#include <QNetworkProxyFactory>
-#include <QNetworkProxy>
-#include <gconf/gconf-value.h>
-#include <gconf/gconf-client.h>
-#include "proxyconf.h"
-
-#define CONF_PROXY "/system/proxy"
-#define HTTP_PROXY "/system/http_proxy"
-
-
-namespace Maemo {
-
-static QString convertKey(const char *key)
-{
-    return QString::fromUtf8(key);
-}
-
-static QVariant convertValue(GConfValue *src)
-{
-    if (!src) {
-        return QVariant();
-    } else {
-        switch (src->type) {
-        case GCONF_VALUE_INVALID:
-            return QVariant(QVariant::Invalid);
-        case GCONF_VALUE_BOOL:
-            return QVariant((bool)gconf_value_get_bool(src));
-        case GCONF_VALUE_INT:
-            return QVariant(gconf_value_get_int(src));
-        case GCONF_VALUE_FLOAT:
-            return QVariant(gconf_value_get_float(src));
-        case GCONF_VALUE_STRING:
-            return QVariant(QString::fromUtf8(gconf_value_get_string(src)));
-        case GCONF_VALUE_LIST:
-            switch (gconf_value_get_list_type(src)) {
-            case GCONF_VALUE_STRING:
-                {
-                    QStringList result;
-                    for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
-                        result.append(QString::fromUtf8(gconf_value_get_string((GConfValue *)elts->data)));
-                    return QVariant(result);
-                }
-            default:
-                {
-                    QList<QVariant> result;
-                    for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
-                        result.append(convertValue((GConfValue *)elts->data));
-                    return QVariant(result);
-                }
-            }
-        case GCONF_VALUE_SCHEMA:
-        default:
-            return QVariant();
-        }
-    }
-}
-
-
-/* Fast version of GConfItem, allows reading subtree at a time */
-class GConfItemFast {
-public:
-  GConfItemFast(const QString &k) : key(k) {}
-  QHash<QString,QVariant> getEntries() const;
-
-private:
-  QString key;
-};
-
-#define withClient(c) for (GConfClient *c = gconf_client_get_default(); c; c=0)
-
-
-QHash<QString,QVariant> GConfItemFast::getEntries() const
-{
-    QHash<QString,QVariant> children;
-
-    withClient(client) {
-        QByteArray k = key.toUtf8();
-        GSList *entries = gconf_client_all_entries(client, k.data(), NULL);
-        for (GSList *e = entries; e; e = e->next) {
-	    char *key_name = strrchr(((GConfEntry *)e->data)->key, '/');
-	    if (!key_name)
-	        key_name = ((GConfEntry *)e->data)->key;
-	    else
-	        key_name++;
-	    QString key(convertKey(key_name));
-	    QVariant value = convertValue(((GConfEntry *)e->data)->value);
-	    gconf_entry_unref((GConfEntry *)e->data);
-	    //qDebug()<<"key="<<key<<"value="<<value;
-	    children.insert(key, value);
-        }
-        g_slist_free (entries);
-    }
-
-    return children;
-}
-
-
-
-class NetworkProxyFactory : QNetworkProxyFactory {
-public:
-    NetworkProxyFactory() { }
-    QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery());
-};
-
-
-QList<QNetworkProxy> NetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query)
-{
-    ProxyConf proxy_conf;
-
-    QList<QNetworkProxy> result = proxy_conf.flush(query);
-    if (result.isEmpty())
-        result << QNetworkProxy::NoProxy;
-
-    return result;
-}
-
-
-class ProxyConfPrivate {
-private:
-    // proxy values from gconf
-    QString mode;
-    bool use_http_host;
-    QString autoconfig_url;
-    QString http_proxy;
-    quint16 http_port;
-    QList<QVariant> ignore_hosts;
-    QString secure_host;
-    quint16 secure_port;
-    QString ftp_host;
-    quint16 ftp_port;
-    QString socks_host;
-    quint16 socks_port;
-    QString rtsp_host;
-    quint16 rtsp_port;
-
-    bool isHostExcluded(const QString &host);
-
-public:
-    QString prefix;
-    QString http_prefix;
-
-    void readProxyData();
-    QList<QNetworkProxy> flush(const QNetworkProxyQuery &query);
-};
-
-
-static QHash<QString,QVariant> getValues(const QString& prefix)
-{
-    GConfItemFast item(prefix);
-    return item.getEntries();
-}
-
-static QHash<QString,QVariant> getHttpValues(const QString& prefix)
-{
-    GConfItemFast item(prefix);
-    return item.getEntries();
-}
-
-#define GET(var, type)				\
-  do {						\
-    QVariant v = values.value(#var);		\
-    if (v.isValid())				\
-      var = v.to##type ();			\
-  } while(0)
-
-#define GET_HTTP(var, name, type)		\
-  do {						\
-    QVariant v = httpValues.value(#name);	\
-    if (v.isValid())				\
-      var = v.to##type ();			\
-  } while(0)
-
-
-void ProxyConfPrivate::readProxyData()
-{
-    QHash<QString,QVariant> values = getValues(prefix);
-    QHash<QString,QVariant> httpValues = getHttpValues(http_prefix);
-
-    //qDebug()<<"values="<<values;
-
-    /* Read the proxy settings from /system/proxy* */
-    GET_HTTP(http_proxy, host, String);
-    GET_HTTP(http_port, port, Int);
-    GET_HTTP(ignore_hosts, ignore_hosts, List);
-
-    GET(mode, String);
-    GET(autoconfig_url, String);
-    GET(secure_host, String);
-    GET(secure_port, Int);
-    GET(ftp_host, String);
-    GET(ftp_port, Int);
-    GET(socks_host, String);
-    GET(socks_port, Int);
-    GET(rtsp_host, String);
-    GET(rtsp_port, Int);
-
-    if (http_proxy.isEmpty())
-        use_http_host = false;
-    else
-        use_http_host = true;
-}
-
-
-bool ProxyConfPrivate::isHostExcluded(const QString &host)
-{
-    if (host.isEmpty())
-        return true;
-
-    if (ignore_hosts.isEmpty())
-        return false;
-
-    QHostAddress ipAddress;
-    bool isIpAddress = ipAddress.setAddress(host);
-
-    foreach (QVariant h, ignore_hosts) {
-        QString entry = h.toString();
-        if (isIpAddress && ipAddress.isInSubnet(QHostAddress::parseSubnet(entry))) {
-            return true;  // excluded
-        } else {
-            // do wildcard matching
-            QRegExp rx(entry, Qt::CaseInsensitive, QRegExp::Wildcard);
-            if (rx.exactMatch(host))
-                return true;
-        }
-    }
-
-    // host was not excluded
-    return false;
-}
-
-
-QList<QNetworkProxy> ProxyConfPrivate::flush(const QNetworkProxyQuery &query)
-{
-    QList<QNetworkProxy> result;
-
-#if 0
-    qDebug()<<"http_proxy" << http_proxy;
-    qDebug()<<"http_port" << http_port;
-    qDebug()<<"ignore_hosts" << ignore_hosts;
-    qDebug()<<"use_http_host" << use_http_host;
-    qDebug()<<"mode" << mode;
-    qDebug()<<"autoconfig_url" << autoconfig_url;
-    qDebug()<<"secure_host" << secure_host;
-    qDebug()<<"secure_port" << secure_port;
-    qDebug()<<"ftp_host" << ftp_host;
-    qDebug()<<"ftp_port" << ftp_port;
-    qDebug()<<"socks_host" << socks_host;
-    qDebug()<<"socks_port" << socks_port;
-    qDebug()<<"rtsp_host" << rtsp_host;
-    qDebug()<<"rtsp_port" << rtsp_port;
-#endif
-
-    if (isHostExcluded(query.peerHostName()))
-        return result;          // no proxy for this host
-
-    if (mode == "auto") {
-        // TODO: pac currently not supported, fix me
-        return result;
-    }
-
-    if (mode == "manual") {
-        bool isHttps = false;
-	QString protocol = query.protocolTag().toLower();
-
-	// try the protocol-specific proxy
-	QNetworkProxy protocolSpecificProxy;
-
-	if (protocol == QLatin1String("ftp")) {
-	    if (!ftp_host.isEmpty()) {
-	        protocolSpecificProxy.setType(QNetworkProxy::FtpCachingProxy);
-		protocolSpecificProxy.setHostName(ftp_host);
-		protocolSpecificProxy.setPort(ftp_port);
-	    }
-	} else if (protocol == QLatin1String("http")) {
-	    if (!http_proxy.isEmpty()) {
-	        protocolSpecificProxy.setType(QNetworkProxy::HttpProxy);
-		protocolSpecificProxy.setHostName(http_proxy);
-		protocolSpecificProxy.setPort(http_port);
-	    }
-	} else if (protocol == QLatin1String("https")) {
-	    isHttps = true;
-	    if (!secure_host.isEmpty()) {
-	        protocolSpecificProxy.setType(QNetworkProxy::HttpProxy);
-		protocolSpecificProxy.setHostName(secure_host);
-		protocolSpecificProxy.setPort(secure_port);
-	    }
-	}
-
-	if (protocolSpecificProxy.type() != QNetworkProxy::DefaultProxy)
-	    result << protocolSpecificProxy;
-
-
-        if (!socks_host.isEmpty()) {
-	    QNetworkProxy proxy;
-	    proxy.setType(QNetworkProxy::Socks5Proxy);
-	    proxy.setHostName(socks_host);
-	    proxy.setPort(socks_port);
-	    result << proxy;
-	}
-
-
-	// Add the HTTPS proxy if present (and if we haven't added yet)
-	if (!isHttps) {
-	    QNetworkProxy https;
-	    if (!secure_host.isEmpty()) {
-	        https.setType(QNetworkProxy::HttpProxy);
-		https.setHostName(secure_host);
-		https.setPort(secure_port);
-	    }
-
-	    if (https.type() != QNetworkProxy::DefaultProxy &&
-		https != protocolSpecificProxy)
-	        result << https;
-	}
-    }
-
-    return result;
-}
-
-
-ProxyConf::ProxyConf()
-    : d_ptr(new ProxyConfPrivate)
-{
-    g_type_init();
-    d_ptr->prefix = CONF_PROXY;
-    d_ptr->http_prefix = HTTP_PROXY;
-}
-
-ProxyConf::~ProxyConf()
-{
-    delete d_ptr;
-}
-
-
-QList<QNetworkProxy> ProxyConf::flush(const QNetworkProxyQuery &query)
-{
-    d_ptr->readProxyData();
-    return d_ptr->flush(query);
-}
-
-
-static int refcount = 0;
-static QReadWriteLock lock;
-
-void ProxyConf::update()
-{
-    QWriteLocker locker(&lock);
-    NetworkProxyFactory *factory = new NetworkProxyFactory();
-    QNetworkProxyFactory::setApplicationProxyFactory((QNetworkProxyFactory*)factory);
-    refcount++;
-}
-
-
-void ProxyConf::clear(void)
-{
-    QWriteLocker locker(&lock);
-    refcount--;
-    if (refcount == 0)
-        QNetworkProxyFactory::setApplicationProxyFactory(NULL);
-
-    if (refcount<0)
-        refcount = 0;
-}
-
-
-} // namespace Maemo
diff --git a/src/3rdparty/libconninet/src/proxyconf.h b/src/3rdparty/libconninet/src/proxyconf.h
deleted file mode 100644
index 7711c49..0000000
--- a/src/3rdparty/libconninet/src/proxyconf.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-#ifndef PROXYCONF_H
-#define PROXYCONF_H
-
-#include <QString>
-#include <QNetworkProxy>
-
-namespace Maemo {
-
-class ProxyConfPrivate;
-class ProxyConf {
-private:
-    ProxyConfPrivate *d_ptr;
-
-public:
-    ProxyConf();
-    virtual ~ProxyConf();
-
-    QList<QNetworkProxy> flush(const QNetworkProxyQuery &query = QNetworkProxyQuery());  // read the proxies from db
-
-    /* Note that for each update() call there should be corresponding
-     * clear() call because the ProxyConf class implements a reference
-     * counting mechanism. The factory is removed only when there is
-     * no one using the factory any more.
-     */
-    static void update(void);          // this builds QNetworkProxy factory
-    static void clear(void);           // this removes QNetworkProxy factory
-};
-
-} // namespace Maemo
-
-#endif
diff --git a/src/3rdparty/libconninet/tests/ut_dbusdispatcher.cpp b/src/3rdparty/libconninet/tests/ut_dbusdispatcher.cpp
deleted file mode 100644
index 70deb3f..0000000
--- a/src/3rdparty/libconninet/tests/ut_dbusdispatcher.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/* * This file is part of conn-dui-settings-inet *
- *
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- *
- * Contact: Aapo Makela <aapo.makela@nokia.com>
- *
- * This software, including documentation, is protected by copyright
- * controlled by Nokia Corporation. All rights are reserved. Copying,
- * including reproducing, storing, adapting or translating, any or all of
- * this material requires the prior written consent of Nokia Corporation.
- * This material also contains confidential information which may not be
- * disclosed to others without the prior written consent of Nokia.
- */
-
-#include <QtTest/QtTest>
-#include <QCoreApplication>
-#include <QEventLoop>
-#include <QDebug>
-#include <icd/dbus_api.h>
-
-#include <dbusdispatcher.h>
-
-class Ut_DBusDispatcher : public QObject
-{
-    Q_OBJECT
-
-private Q_SLOTS:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-
-    void simpleSignalReceived(const QString& interface, 
-                              const QString& signal,
-                              const QList<QVariant>& args);
-    void simpleCallReply(const QString& method, 
-                         const QList<QVariant>& args,
-                         const QString& error);
-    void simpleCall();
-
-    void complexCallReply(const QString& method, 
-                          const QList<QVariant>& args,
-                          const QString& error);
-    void complexCall();
-
-private:
-    Maemo::DBusDispatcher *mSubject;
-    QProcess *icd_stub;
-
-    QString mMethod;
-    QString mInterface;
-    QString mSignal;
-    QList<QVariant> mArgs;
-};
-
-void Ut_DBusDispatcher::init()
-{
-    mSubject = new Maemo::DBusDispatcher("com.nokia.icd2", "/com/nokia/icd2",
-					 "com.nokia.icd2");
-
-    // Start icd2 stub
-    icd_stub = new QProcess(this);
-    icd_stub->start("/usr/bin/icd2_stub.py");
-    QTest::qWait(1000);
-}
-
-void Ut_DBusDispatcher::cleanup()
-{
-    // Terminate icd2 stub
-    icd_stub->terminate();
-    icd_stub->waitForFinished();
-
-    delete mSubject;
-    mSubject = 0;
-}
-
-void Ut_DBusDispatcher::initTestCase()
-{
-} 
-
-void Ut_DBusDispatcher::cleanupTestCase()
-{
-}
-
-void Ut_DBusDispatcher::simpleSignalReceived(const QString& interface, 
-                                             const QString& signal,
-                                             const QList<QVariant>& args)
-{
-    // Signal handler, which simply records what has been signalled
-    mInterface = interface;
-    mSignal = signal;
-    mArgs = args;
-}
-
-void Ut_DBusDispatcher::simpleCallReply(const QString& method, 
-                                        const QList<QVariant>& args,
-                                        const QString& error)
-{
-    mMethod = method;
-
-    // Check that method matches and at least WLAN_INFRA is returned
-    QVERIFY(error.isEmpty());
-    QVERIFY(args[0].toStringList().contains("WLAN_INFRA"));
-}
-
-void Ut_DBusDispatcher::simpleCall()
-{
-    uint flags = 0;
-    QList<QVariant> reply;
-    int idx = 0;
-    QTimer timer;
-
-    // Connect signals
-    connect(mSubject, SIGNAL(signalReceived(const QString&, 
-                                            const QString&,
-                                            const QList<QVariant>&)),
-            this, SLOT(simpleSignalReceived(const QString&, 
-                                      const QString&,
-                                      const QList<QVariant>&)));
-    connect(mSubject, SIGNAL(callReply(const QString&,
-                                       const QList<QVariant>&,
-                                       const QString&)),
-            this, SLOT(simpleCallReply(const QString&,
-                                 const QList<QVariant>&,
-                                 const QString&)));
-
-    // Request scan and verify the call starts succesfully
-    QVERIFY(mSubject->callAsynchronous("scan_req", flags));
-
-    // Wait 1st scan signal for 10 secs
-    timer.setSingleShot(true);
-    timer.start(10000);
-    while (timer.isActive() && mInterface.isEmpty()) {
-        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-        idx++;
-    }
-    timer.stop();
-
-    // Sanity checks for the scan result
-    QVERIFY(mInterface == "com.nokia.icd2");    // interface is icd2
-    QVERIFY(mMethod == "scan_req");             // method is scan_req
-    QVERIFY(mSignal == "scan_result_sig");      // signal is scan result
-    QVERIFY(mArgs[0] == QVariant(0) ||
-	    mArgs[0] == QVariant(4));           // First argument is status
-                                                // (0 == NEW, 4 == COMPLETED)
-    //QVERIFY(mArgs.contains(QVariant("WLAN_INFRA"))); // WLAN scan result
-}
-
-void Ut_DBusDispatcher::complexCallReply(const QString& method, 
-                                         const QList<QVariant>& args,
-                                         const QString& error)
-{
-    mMethod = method;
-
-    // Check that method has not return arguments and error is not set
-    QVERIFY(error.isEmpty());
-    QVERIFY(args.isEmpty());
-}
-
-void Ut_DBusDispatcher::complexCall()
-{    
-    uint flags = ICD_CONNECTION_FLAG_UI_EVENT;
-    QList<QVariant> reply;
-    QVariantList networks;
-    QVariantList network1;
-
-    network1 << "" << (uint)0 << "" << "WLAN_INFRA" << (uint)0x05000011 << QByteArray("osso@46@net");
-    networks << QVariant(network1);
-
-    // Connect signal
-    connect(mSubject, SIGNAL(callReply(const QString&,
-                                       const QList<QVariant>&,
-                                       const QString&)),
-            this, SLOT(complexCallReply(const QString&,
-                                        const QList<QVariant>&,
-                                        const QString&)));
-
-    // Request connect and verify the call starts succesfully
-    QVERIFY(mSubject->callAsynchronous("connect_req", flags, networks));
-
-    QTest::qWait(1000);
-
-    // Sanity checks for the scan result
-    QVERIFY(mInterface == "com.nokia.icd2");    // interface is icd2
-    QVERIFY(mMethod == "connect_req");          // method connect_req
-}
-
-QTEST_MAIN(Ut_DBusDispatcher)
-
-#include "ut_dbusdispatcher.moc"
diff --git a/src/3rdparty/libconninet/tests/ut_iapconf.cpp b/src/3rdparty/libconninet/tests/ut_iapconf.cpp
deleted file mode 100644
index 6a91d61..0000000
--- a/src/3rdparty/libconninet/tests/ut_iapconf.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009 Nokia Corporation. All rights reserved.
-
-  Contact: Aapo Makela <aapo.makela@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-
-#include <QtTest/QtTest>
-#include <QDebug>
-
-#include <iapconf.h>
-
-class Ut_IAPConf : public QObject
-{
-    Q_OBJECT
-
-private Q_SLOTS:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-
-    void setupIAP();
-    void setupIAPContainingDot();
-    void unsetIAPValueIsNotValid();
-    void verifyAllIAPs();
-    void allForEmptyConfReturnsEmptyList();
-    void settingInvalidValueUnsetsKey();
-
-private:
-    Maemo::IAPConf *mSubject;
-};
-
-void Ut_IAPConf::init()
-{
-    mSubject = new Maemo::IAPConf("test_iap");
-}
-
-void Ut_IAPConf::cleanup()
-{
-    // Clear made settings
-    mSubject->clear();
-
-    delete mSubject;
-    mSubject = 0;
-}
-
-void Ut_IAPConf::initTestCase()
-{
-} 
-
-void Ut_IAPConf::cleanupTestCase()
-{
-}
-
-void Ut_IAPConf::setupIAP()
-{
-    // Set bunch of values
-    mSubject->set("ipv4_type", "AUTO",
-                  "wlan_wepkey1", "connt",
-                  "wlan_wepdefkey", 1,
-                  "wlan_ssid", QByteArray("CONNTEST-1"));
-
-    // Set one value
-    mSubject->setValue("type", "WLAN_INFRA");
-
-    // Check all values that they were set correctly
-    QVERIFY(mSubject->value("ipv4_type").toString() == "AUTO");
-    QVERIFY(mSubject->value("wlan_wepkey1").toString() == "connt");
-    QVERIFY(mSubject->value("wlan_wepdefkey").toInt() == 1);
-    QVERIFY(mSubject->value("wlan_ssid").toByteArray() == QByteArray("CONNTEST-1"));
-    QVERIFY(mSubject->value("type").toString() == "WLAN_INFRA");
-}
-
-void Ut_IAPConf::setupIAPContainingDot()
-{
-    delete mSubject;
-    mSubject = new Maemo::IAPConf("test.iap");
-
-    // Set and check one value
-    mSubject->setValue("type", "DUMMY");
-    QVERIFY(mSubject->value("type").toString() == "DUMMY");
-}
-
-void Ut_IAPConf::unsetIAPValueIsNotValid()
-{
-    QVariant invalidValue = mSubject->value("this_value_does_not_exist");
-    QVERIFY(invalidValue.isValid() == false);
-}
-
-void Ut_IAPConf::verifyAllIAPs()
-{
-    int count = 0, extras = 0;
-    QRegExp regexp("iap[1-3]");
-    Maemo::IAPConf iap1("iap1");
-    Maemo::IAPConf iap2("iap2");
-    Maemo::IAPConf iap3("iap3");
-
-    iap1.clear();
-    iap2.clear();
-    iap3.clear();
-
-    iap1.setValue("name", "iap1");
-    iap2.setValue("name", "iap2");
-    iap3.setValue("name", "iap3");
-
-    count = extras = 0;
-    QList<QString> iaps;
-    Maemo::IAPConf::getAll(iaps, true);
-    foreach (QString iap_path, iaps) {
-        QString iap_id = iap_path.section('/', 5);  /* This is the IAP id */
-	if (!iap_id.contains(regexp)) {
-	    extras++;
-	    continue;
-	}
-	Maemo::IAPConf iap(iap_id);
-	QString name = iap.value("name").toString();
-	QVERIFY(name == iap_id);
-	count++;
-    }
-    QCOMPARE(count, iaps.size()-extras);
-
-    iap1.clear();
-    iap2.clear();
-    iap3.clear();
-
-    iap1.setValue("name", "iap1");
-    iap2.setValue("name", "iap2");
-    iap3.setValue("name", "iap3");
-
-    count = extras = 0;
-    Maemo::IAPConf::getAll(iaps);
-    foreach (QString iap_id, iaps) {
-        if (!iap_id.contains(regexp)) {
-	    extras++;
-	    continue;
-	}
-	Maemo::IAPConf iap(iap_id);
-	QString name = iap.value("name").toString();
-	QVERIFY(name == iap_id);
-	count++;
-    }
-    QCOMPARE(count, iaps.size()-extras);
-}
-
-void Ut_IAPConf::allForEmptyConfReturnsEmptyList()
-{
-    // Clear everything in configuration
-    mSubject->clearAll();
-
-    // Get all for a list and check that it is empty
-    QStringList iaps;
-    mSubject->getAll(iaps);
-    QVERIFY(iaps.isEmpty());
-}
-
-void Ut_IAPConf::settingInvalidValueUnsetsKey()
-{
-    // Setup some IAP
-    setupIAP();
-
-    // Set invalid value to unset "wlan_wepdefkey" key and verify that the
-    // value is unset
-    mSubject->setValue("wlan_wepdefkey", QVariant());
-    QVERIFY(!mSubject->value("wlan_wepdefkey").isValid());
-}
-
-QTEST_MAIN(Ut_IAPConf)
-
-#include "ut_iapconf.moc"
diff --git a/src/3rdparty/libconninet/tests/ut_iapmonitor.cpp b/src/3rdparty/libconninet/tests/ut_iapmonitor.cpp
deleted file mode 100644
index f14f623..0000000
--- a/src/3rdparty/libconninet/tests/ut_iapmonitor.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2009-2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-
-#include <QtTest/QtTest>
-#include <QDebug>
-
-#include <iapmonitor.h>
-#include <iapconf.h>
-
-static const char *iap_id = "test_monitor_1";
-
-class TestIAPMonitor : public Maemo::IAPMonitor
-{
-public:
-    QString addedIap;
-    QString removedIap;
-    
-protected:
-    virtual void iapAdded(const QString &id)
-    {
-        addedIap = id;
-    }
-
-    virtual void iapRemoved(const QString &id)
-    {
-        removedIap = id;
-    }
-};
-
-class Ut_IAPMonitor : public QObject
-{
-    Q_OBJECT
-
-private Q_SLOTS:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-
-    void check();
-
-private:
-    TestIAPMonitor *mon;
-    Maemo::IAPConf *iap;
-};
-
-void Ut_IAPMonitor::init()
-{
-    mon = new TestIAPMonitor;
-}
-
-void Ut_IAPMonitor::cleanup()
-{
-    delete mon;
-    mon = 0;
-}
-
-void Ut_IAPMonitor::initTestCase()
-{
-} 
-
-void Ut_IAPMonitor::cleanupTestCase()
-{
-}
-
-void Ut_IAPMonitor::check()
-{
-    QVERIFY(mon->addedIap.isEmpty());
-
-    iap = new Maemo::IAPConf(iap_id);
-    iap->set("ipv4_type", "AUTO",
-	    "wlan_wepkey1", "connt",
-	    "wlan_wepdefkey", 1,
-	    "wlan_ssid", QByteArray(iap_id));
-    
-    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-    QVERIFY(mon->addedIap == iap_id);
-    mon->addedIap.clear();
-
-    QVERIFY(mon->removedIap.isEmpty());
-
-    // Unset only one value and verify that IAP is not removed
-    iap->set("ipv4_type", QVariant());
-    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-    QVERIFY(mon->removedIap.isEmpty());
-
-    // Clear the whole IAP and check that it is removed
-    iap->clear();
-    delete iap;
-
-    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
-
-    QVERIFY(mon->removedIap == iap_id);
-}
-
-QTEST_MAIN(Ut_IAPMonitor)
-
-#include "ut_iapmonitor.moc"
diff --git a/src/3rdparty/libconninet/tests/ut_maemo_icd.cpp b/src/3rdparty/libconninet/tests/ut_maemo_icd.cpp
deleted file mode 100644
index 494829d..0000000
--- a/src/3rdparty/libconninet/tests/ut_maemo_icd.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- *
- * Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-
-
-// !!!!
-// !!!! NOTE: THESE TEST DO NOT REALLY WORK YET BECAUSE OF MISSING
-// !!!!       FUNCTIONALITY IN ICD2 STUB. YOU HAVE BEEN WARNED.
-// !!!!
-
-
-#include <QtTest/QtTest>
-#include <QCoreApplication>
-#include <QEventLoop>
-#include <QDebug>
-#include <icd/dbus_api.h>
-
-#include "maemo_icd.h"
-
-class Ut_MaemoIcd : public QObject
-{
-    Q_OBJECT
-
-private Q_SLOTS:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-
-    void scan_req();
-    void scan_cancel_req();
-    void connect_req_default();
-    void state_req_all();
-    void state_req();
-    void statistics_req_all();
-    void statistics_req();
-    void addrinfo_req_all();
-    void addrinfo_req();
-
-private:
-    void disconnect_req_default(); // this is currently not run
-    void connect_req_specific();   // this is currently not run
-    QProcess *icd_stub;
-    bool connect_iap(Maemo::IcdConnectResult &connect_result,
-		     QString &result,
-		     QString &error,
-		     QString iap=QString());
-};
-
-
-QString create_error_str(Maemo::Icd &icd)
-{
-    return icd.error();
-}
-
-
-void Ut_MaemoIcd::init()
-{
-    icd_stub = new QProcess(this);
-    icd_stub->setStandardOutputFile("/tmp/ut_maemo_icd.log");
-    icd_stub->start("/usr/bin/icd2_stub.py");
-    QTest::qWait(1000);
-
-    // Set the statistics
-    QProcess dbus_send;
-    dbus_send.start("dbus-send --type=method_call --system "
-		    "--dest=com.nokia.icd2 /com/nokia/icd2 "
-		    "com.nokia.icd2.testing.set_statistics "
-		    "uint32:1024 uint32:256");
-    dbus_send.waitForFinished();
-
-}
-
-void Ut_MaemoIcd::cleanup()
-{
-    icd_stub->terminate();
-    icd_stub->waitForFinished();
-}
-
-void Ut_MaemoIcd::initTestCase()
-{
-} 
-
-void Ut_MaemoIcd::cleanupTestCase()
-{
-}
-
-void Ut_MaemoIcd::scan_req()
-{    
-    QList<Maemo::IcdScanResult> scanned;
-    QStringList scannedNetworkTypes;
-    QStringList networkTypesToScan;
-    QString error;
-    Maemo::Icd icd(ICD_SHORT_SCAN_TIMEOUT);
-
-    scannedNetworkTypes = icd.scan(ICD_SCAN_REQUEST_ACTIVE,
-				   networkTypesToScan,
-				   scanned,
-				   error);
-    QVERIFY(error.isEmpty());
-    QCOMPARE(scanned.size(), 3);
-    QVERIFY(scannedNetworkTypes[0] == "WLAN_INFRA");
-    QVERIFY(scannedNetworkTypes[1] == "DUN_GSM_PS");
-}
-
-void Ut_MaemoIcd::scan_cancel_req()
-{
-    Maemo::Icd icd;
-    icd.scanCancel();
-    // Not much to verify here
-}
-
-bool Ut_MaemoIcd::connect_iap(Maemo::IcdConnectResult &connect_result,
-			      QString &result,
-			      QString &error,
-			      QString iap)
-{
-    icd_connection_flags flags = ICD_CONNECTION_FLAG_USER_EVENT;
-    bool st;
-    Maemo::Icd icd(ICD_SHORT_CONNECT_TIMEOUT);
-
-    if (iap.isEmpty()) {
-      qDebug() << "connecting to default IAP";
-      st = icd.connect(flags, connect_result);
-    } else {
-      qDebug() << "connecting to" << iap;
-      st = icd.connect(flags, iap, result);
-    }
-
-    error = create_error_str(icd);
-    return st;
-}
-
-void Ut_MaemoIcd::connect_req_default()
-{
-    Maemo::IcdConnectResult connect_result;
-    QString result, error;
-    bool st;
-    st = connect_iap(connect_result, result, error);
-    QVERIFY2(st, error.toAscii().data());
-    result = connect_result.connect.network_id.data();
-    qDebug() << result;
-}
-
-
-void Ut_MaemoIcd::disconnect_req_default()
-{
-    icd_connection_flags flags = ICD_CONNECTION_FLAG_USER_EVENT;
-    bool st;
-    Maemo::Icd icd(ICD_SHORT_CONNECT_TIMEOUT);
-    icd.disconnect(flags);
-}
-
-
-void Ut_MaemoIcd::connect_req_specific()
-{
-    Maemo::IcdConnectResult connect_result;
-    QString result;
-    QString error;
-    bool st;
-    st = connect_iap(connect_result, result, error, "wpa2gx2.osso.net");
-    QVERIFY2(st, error.toAscii().data());
-    qDebug() << result;
-}
-
-
-void Ut_MaemoIcd::state_req_all()
-{
-    QList<Maemo::IcdStateResult> state_results;
-    Maemo::Icd icd;
-    int sig;
-    sig = icd.state(state_results);
-    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
-}
-
-
-void Ut_MaemoIcd::state_req()
-{
-    Maemo::IcdStateResult state_result;
-    Maemo::Icd icd;
-    int sig;
-    QString service_type, service_id;
-    QString network_type("WLAN_INFRA");
-    QByteArray network_id("wpa2gx2.osso.net");
-    sig = icd.state(service_type, 0, service_id,
-		    network_type, (uint)0x17a1, network_id,
-		    state_result);
-    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
-}
-
-
-void Ut_MaemoIcd::statistics_req_all()
-{
-    QList<Maemo::IcdStatisticsResult> stats_results;
-    Maemo::Icd icd;
-    int sig;
-    QString err;
-    sig = icd.statistics(stats_results);
-    err = create_error_str(icd);
-    if (!err.isEmpty())
-      QVERIFY2(sig==1, err.toAscii().data());
-    else
-      QCOMPARE(sig, 1);
-
-    for(int i=0; i<sig; i++) {
-        QVERIFY(stats_results[i].bytes_received == 1024);
-        QVERIFY(stats_results[i].bytes_sent == 256);
-    }
-}
-
-
-// Can be uncommented when needed function is enabled in Icd class
-void Ut_MaemoIcd::statistics_req()
-{
-    Maemo::IcdStatisticsResult stats_result;
-    Maemo::Icd icd;
-    int sig;
-    QString service_type, service_id;
-    QString network_type("WLAN_INFRA");
-    QByteArray network_id("wpa2gx2.osso.net");
-    sig = icd.statistics(service_type, 0, service_id,
-			 network_type, (uint)0x17a1, network_id,
-			 stats_result);
-    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
-    QVERIFY(stats_result.bytes_received == 1024);
-    QVERIFY(stats_result.bytes_sent == 256);
-}
-
-
-void Ut_MaemoIcd::addrinfo_req_all()
-{
-    QList<Maemo::IcdAddressInfoResult> addr_results;
-    Maemo::Icd icd;
-    int sig;
-    sig = icd.addrinfo(addr_results);
-    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
-}
-
-
-void Ut_MaemoIcd::addrinfo_req()
-{
-    Maemo::IcdAddressInfoResult addr_result;
-    Maemo::Icd icd;
-    int sig;
-    QString service_type, service_id;
-    QString network_type("WLAN_INFRA");
-    QByteArray network_id("wpa2gx2.osso.net");
-    sig = icd.addrinfo(service_type, 0, service_id,
-			 network_type, (uint)0x17a1, network_id,
-			 addr_result);
-    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
-}
-
-
-QTEST_MAIN(Ut_MaemoIcd)
-
-#include "ut_maemo_icd.moc"
diff --git a/src/3rdparty/libconninet/tests/ut_proxyconf.cpp b/src/3rdparty/libconninet/tests/ut_proxyconf.cpp
deleted file mode 100644
index 1f407f0..0000000
--- a/src/3rdparty/libconninet/tests/ut_proxyconf.cpp
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
-  libconninet - Internet Connectivity support library
-
-  Copyright (C) 2010 Nokia Corporation. All rights reserved.
-
-  Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  02110-1301 USA
-*/
-
-
-#include <QtTest/QtTest>
-#include <QDebug>
-#include <QNetworkProxy>
-#include <conn_settings.h>
-
-#include "../src/proxyconf.h"
-
-class Ut_ProxyConf : public QObject
-{
-    Q_OBJECT
-
-private Q_SLOTS:
-    void init();
-    void cleanup();
-    void initTestCase();
-    void cleanupTestCase();
-
-    // tests without the factory
-    void proxy_ftp_no_factory_ok_auto();
-    void proxy_ftp_no_factory_ok_manual();
-    void proxy_http_no_factory_ok_manual();
-    void proxy_https_no_factory_ok_manual();
-    void proxy_socks_no_factory_ok_manual();
-    void proxy_default_no_factory_ok_manual();
-
-    // tests using the factory
-    void proxy_ftp_factory_ok_auto();
-    void proxy_ftp_factory_ok_manual();
-    void proxy_http_factory_ok_manual();
-    void proxy_https_factory_ok_manual();
-    void proxy_socks_factory_ok_manual();
-    void proxy_http_factory_ok_manual_clear();
-    void proxy_default_factory_ok_manual();
-    void proxy_http_factory_ok_manual_ignore_list();
-    void proxy_default_factory_ok_manual_system();
-
-private:
-    Maemo::ProxyConf *pc;
-};
-
-
-void put(QString var, QString type, QString value)
-{
-    QProcess gconf;
-    if (value.isEmpty())
-        gconf.start(QString("gconftool-2 -u /system/proxy/"+var));
-    else
-        gconf.start(QString("gconftool-2 -s /system/proxy/"+var+" -t "+type+" "+value));
-    gconf.waitForFinished();
-}
-
-void put_http(QString var, QString type, QString value)
-{
-    QProcess gconf;
-    if (value.isEmpty())
-        gconf.start(QString("gconftool-2 -u /system/http_proxy/"+var));
-    else
-        gconf.start(QString("gconftool-2 -s /system/http_proxy/"+var+" -t "+type+" "+value));
-    gconf.waitForFinished();
-}
-
-void put_list(QString var, QString type, QList<QString> value)
-{
-    QProcess gconf;
-    QString values = "[";
-    foreach (QString str, value)
-        values = values + str + ",";
-    values.chop(1);
-    values = values + "]";
-
-    gconf.start(QString("gconftool-2 -s /system/http_proxy/"+var+" -t list --list-type="+type+" "+values));
-    gconf.waitForFinished();
-}
-
-
-void Ut_ProxyConf::init()
-{
-    put_http("host", "string", "my.proxy.com");
-    put_http("port", "int", "8080");
-
-    QList<QString> list;
-    list.append("foo.bar.com");
-    list.append("192.168.19.69");
-    list.append("192.168.20.0/24");
-    list.append("bar.foo.com");
-    put_list("ignore_hosts", "string", list);
-    put_http("use_http_host", "boolean", "true");
-
-    put("mode", "string", "auto");
-    put("autoconfig_url", "string", "http://foo.bar.com/autoconf");
-    put("secure_host", "string", "secure_host.com");
-    put("secure_port", "int", "112");
-
-    put("ftp_host", "string", "ftp.nuukia.com");
-    put("ftp_port", "int", "2000");
-    put("socks_host", "string", "socks.host.com");
-    put("socks_port", "int", "10080");
-    put("rtsp_host", "string", "rtsp.voice.com");
-    put("rtsp_port", "int", "1554");
-
-    pc = new Maemo::ProxyConf();
-}
-
-void Ut_ProxyConf::cleanup()
-{
-    delete pc;
-    pc = 0;
-}
-
-void Ut_ProxyConf::initTestCase()
-{
-} 
-
-void Ut_ProxyConf::cleanupTestCase()
-{
-}
-
-
-void Ut_ProxyConf::proxy_ftp_no_factory_ok_auto()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("ftp://maps.google.com/"));
-
-    nplist = pc->flush(query);
-    QVERIFY(nplist.length()==0);
-}
-
-
-void Ut_ProxyConf::proxy_ftp_no_factory_ok_manual()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("ftp://maps.google.com/"));
-
-    put("mode", "string", "manual");
-
-    nplist = pc->flush(query);
-    foreach (QNetworkProxy proxy, nplist) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(nplist.length()==3);
-    QVERIFY(nplist.first().type() == QNetworkProxy::FtpCachingProxy);
-}
-
-
-void Ut_ProxyConf::proxy_http_no_factory_ok_manual()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-
-    put("mode", "string", "manual");
-
-    nplist = pc->flush(query);
-    foreach (QNetworkProxy proxy, nplist) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(nplist.length()==3);
-    QVERIFY(nplist.first().type() == QNetworkProxy::HttpProxy);
-}
-
-
-void Ut_ProxyConf::proxy_https_no_factory_ok_manual()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("https://maps.google.com/"));
-
-    put("mode", "string", "manual");
-
-    nplist = pc->flush(query);
-    foreach (QNetworkProxy proxy, nplist) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(nplist.length()==2);
-    QVERIFY(nplist.first().type() == QNetworkProxy::HttpProxy);
-}
-
-
-void Ut_ProxyConf::proxy_socks_no_factory_ok_manual()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-
-    put("mode", "string", "manual");
-    put_http("host", "string", "");
-
-    nplist = pc->flush(query);
-    foreach (QNetworkProxy proxy, nplist) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(nplist.length()==2);
-    QVERIFY(nplist.first().type() == QNetworkProxy::Socks5Proxy);
-}
-
-
-void Ut_ProxyConf::proxy_default_no_factory_ok_manual()
-{
-    QList<QNetworkProxy> nplist;
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("foobar://maps.google.com/"));
-
-    put("mode", "string", "manual");
-    put("socks_host", "string", "");
-    put("secure_host", "string", "");
-
-    nplist = pc->flush(query);
-    foreach (QNetworkProxy proxy, nplist) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(nplist.length()==0);
-}
-
-
-void Ut_ProxyConf::proxy_ftp_factory_ok_auto()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("ftp://maps.google.com/"));
-    Maemo::ProxyConf::update();
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-    QVERIFY(listOfProxies.length()==1);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::NoProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_ftp_factory_ok_manual()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("ftp://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==3);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::FtpCachingProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_http_factory_ok_manual()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==3);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::HttpProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_https_factory_ok_manual()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("https://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==2);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::HttpProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_socks_factory_ok_manual()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-    put_http("host", "string", "");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==2);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::Socks5Proxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_http_factory_ok_manual_clear()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-    put_http("host", "string", "192.168.1.1");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==3);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::HttpProxy);
-
-    Maemo::ProxyConf::clear();
-    listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-    QVERIFY(listOfProxies.length()==1);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::NoProxy);
-}
-
-
-void Ut_ProxyConf::proxy_default_factory_ok_manual()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("foobar://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-    put("socks_host", "string", "");
-    put("secure_host", "string", "");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    QVERIFY(listOfProxies.length()==1);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::NoProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_http_factory_ok_manual_ignore_list()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://192.168.19.70/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-
-    foreach (QNetworkProxy proxy, listOfProxies) {
-      qDebug() << "proxy: " << proxy.hostName() << "port" << proxy.port();
-    }
-    QVERIFY(listOfProxies.length()==3);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::HttpProxy);
-
-    query = QNetworkProxyQuery(QUrl("http://192.168.20.10/"));
-    listOfProxies = QNetworkProxyFactory::proxyForQuery(query);
-    QVERIFY(listOfProxies.length()==1);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::NoProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-void Ut_ProxyConf::proxy_default_factory_ok_manual_system()
-{
-    QNetworkProxyQuery query = QNetworkProxyQuery(QUrl("http://maps.google.com/"));
-    Maemo::ProxyConf::update();
-
-    put("mode", "string", "manual");
-
-    QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::systemProxyForQuery(query);
-
-    QVERIFY(listOfProxies.length()==1);
-    QVERIFY(listOfProxies.first().type() == QNetworkProxy::NoProxy);
-    Maemo::ProxyConf::clear();
-}
-
-
-
-
-QTEST_MAIN(Ut_ProxyConf)
-
-#include "ut_proxyconf.moc"
diff --git a/src/plugins/bearer/icd/dbusdispatcher.cpp b/src/plugins/bearer/icd/dbusdispatcher.cpp
new file mode 100644
index 0000000..3d588dc
--- /dev/null
+++ b/src/plugins/bearer/icd/dbusdispatcher.cpp
@@ -0,0 +1,631 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QDebug>
+#include <QtCore>
+#include <poll.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include <glib.h>
+#include "dbusdispatcher.h"
+
+namespace Maemo {
+
+/*!
+    \class DBusDispatcher
+
+    \brief DBusDispatcher is a class, which is able to send DBUS method call
+    messages and receive unicast signals from DBUS object.
+*/
+
+class DBusDispatcherPrivate
+{
+public:
+    DBusDispatcherPrivate(const QString& service,
+                          const QString& path,
+                          const QString& interface,
+                          const QString& signalPath)
+        : service(service), path(path), interface(interface),
+          signalPath(signalPath), connection(0)
+    {
+        memset(&signal_vtable, 0, sizeof(signal_vtable));
+    }
+
+    ~DBusDispatcherPrivate()
+    {
+        foreach(DBusPendingCall *call, pending_calls) {
+            dbus_pending_call_cancel(call);
+            dbus_pending_call_unref(call);
+        }
+    }
+
+    QString service;
+    QString path;
+    QString interface;
+    QString signalPath;
+    struct DBusConnection *connection;
+    QList<DBusPendingCall *> pending_calls;
+    struct DBusObjectPathVTable signal_vtable;
+};
+
+static bool constantVariantList(const QVariantList& variantList) {
+    // Special case, empty list == empty struct
+    if (variantList.isEmpty()) {
+        return false;
+    } else {        
+        QVariant::Type type = variantList[0].type();
+        // Iterate items in the list and check if they are same type
+        foreach(QVariant variant, variantList) {
+            if (variant.type() != type) {
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+static QString variantToSignature(const QVariant& argument,
+                                  bool constantList = true) {
+    switch (argument.type()) {
+        case QVariant::Bool:
+            return "b";
+        case QVariant::ByteArray:
+            return "ay";
+        case QVariant::Char:
+            return "y";
+        case QVariant::Int:
+            return "i";
+        case QVariant::UInt:
+            return "u";
+        case QVariant::StringList:
+            return "as";
+        case QVariant::String:
+            return "s";
+        case QVariant::LongLong:
+            return "x";
+        case QVariant::ULongLong:
+            return "t";
+        case QVariant::List:
+            {
+            QString signature;
+            QVariantList variantList = argument.toList();
+            if (!constantList) {
+                signature += DBUS_STRUCT_BEGIN_CHAR_AS_STRING;
+                foreach(QVariant listItem, variantList) {
+                    signature += variantToSignature(listItem);
+                }
+                signature += DBUS_STRUCT_END_CHAR_AS_STRING;
+            } else {
+                if (variantList.isEmpty())
+                    return "";
+                signature = "a" + variantToSignature(variantList[0]);
+            }
+
+            return signature;
+            }
+        default:
+            qDebug() << "Unsupported variant type: " << argument.type();
+            break;
+    }
+
+    return "";
+}
+
+static bool appendVariantToDBusMessage(const QVariant& argument,
+                                       DBusMessageIter *dbus_iter) {
+    int idx = 0;
+    DBusMessageIter array_iter;
+    QStringList str_list;
+    dbus_bool_t bool_data;
+    dbus_int32_t int32_data;
+    dbus_uint32_t uint32_data;
+    dbus_int64_t int64_data;
+    dbus_uint64_t uint64_data;
+    char *str_data;
+    char char_data;
+
+    switch (argument.type()) {
+
+        case QVariant::Bool:
+            bool_data = argument.toBool();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_BOOLEAN, 
+                                           &bool_data);
+            break;
+
+        case QVariant::ByteArray:
+            str_data = argument.toByteArray().data();
+            dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
+                                             DBUS_TYPE_BYTE_AS_STRING, &array_iter);
+            dbus_message_iter_append_fixed_array(&array_iter,
+                                                 DBUS_TYPE_BYTE,
+                                                 &str_data,
+                                                 argument.toByteArray().size());
+            dbus_message_iter_close_container(dbus_iter, &array_iter);
+            break;
+
+        case QVariant::Char:
+            char_data = argument.toChar().toAscii();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_BYTE, 
+                                           &char_data);
+            break;
+
+        case QVariant::Int:
+            int32_data = argument.toInt();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_INT32, 
+                                           &int32_data);
+            break;
+
+        case QVariant::String:
+            str_data = argument.toString().toLatin1().data();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_STRING,
+                                           &str_data);
+            break;
+
+        case QVariant::StringList:
+            str_list = argument.toStringList();
+            dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
+                                             "s", &array_iter);
+            for (idx = 0; idx < str_list.size(); idx++) {
+                str_data = str_list.at(idx).toLatin1().data();
+                dbus_message_iter_append_basic(&array_iter,
+                                               DBUS_TYPE_STRING,
+                                               &str_data);
+            }
+            dbus_message_iter_close_container(dbus_iter, &array_iter);
+            break;
+
+        case QVariant::UInt:
+            uint32_data = argument.toUInt();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_UINT32, 
+                                           &uint32_data);
+            break;
+
+        case QVariant::ULongLong:
+            uint64_data = argument.toULongLong();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_UINT64, 
+                                           &uint64_data);
+            break;
+
+        case QVariant::LongLong:
+            int64_data = argument.toLongLong();
+            dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_INT64, 
+                                           &int64_data);
+            break;
+
+        case QVariant::List:
+            {
+            QVariantList variantList = argument.toList();
+            bool constantList = constantVariantList(variantList);
+            DBusMessageIter array_iter;
+
+            // List is mapped either as an DBUS array (all items same type)
+            // DBUS struct (variable types) depending on constantList
+            if (constantList) {
+                // Resolve the signature for the first item
+                QString signature = "";
+                if (!variantList.isEmpty()) {
+                    signature = variantToSignature(
+                                variantList[0],
+                                constantVariantList(variantList[0].toList()));
+                }
+
+                // Mapped as DBUS array
+                dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_ARRAY,
+                                                 signature.toAscii(),
+                                                 &array_iter);
+
+                foreach(QVariant listItem, variantList) {
+                    appendVariantToDBusMessage(listItem, &array_iter);
+                }
+
+                dbus_message_iter_close_container(dbus_iter, &array_iter);
+            } else {
+                // Mapped as DBUS struct
+                dbus_message_iter_open_container(dbus_iter, DBUS_TYPE_STRUCT,
+                                                 NULL,
+                                                 &array_iter);
+
+                foreach(QVariant listItem, variantList) {
+                    appendVariantToDBusMessage(listItem, &array_iter);
+                }
+
+                dbus_message_iter_close_container(dbus_iter, &array_iter);
+            }
+
+            break;
+            }
+        default:
+            qDebug() << "Unsupported variant type: " << argument.type();
+            break;
+    }
+
+    return true;
+}
+
+static QVariant getVariantFromDBusMessage(DBusMessageIter *iter) {
+    dbus_bool_t bool_data;
+    dbus_int32_t int32_data;
+    dbus_uint32_t uint32_data;
+    dbus_int64_t int64_data;
+    dbus_uint64_t uint64_data;
+    char *str_data;
+    char char_data;
+    int argtype = dbus_message_iter_get_arg_type(iter);
+
+    switch (argtype) {
+
+        case DBUS_TYPE_BOOLEAN:
+        {
+            dbus_message_iter_get_basic(iter, &bool_data);
+            QVariant variant((bool)bool_data);
+            return variant;
+        }
+
+        case DBUS_TYPE_ARRAY:
+        {
+            // Handle all arrays here
+            int elem_type = dbus_message_iter_get_element_type(iter);
+            DBusMessageIter array_iter;
+
+            dbus_message_iter_recurse(iter, &array_iter);
+
+            if (elem_type == DBUS_TYPE_BYTE) {
+                QByteArray byte_array;
+                do {
+                    dbus_message_iter_get_basic(&array_iter, &char_data);
+                    byte_array.append(char_data);
+                } while (dbus_message_iter_next(&array_iter));
+                QVariant variant(byte_array);
+                return variant;
+            } else if (elem_type == DBUS_TYPE_STRING) {
+                QStringList str_list;
+                do {
+                    dbus_message_iter_get_basic(&array_iter, &str_data);
+                    str_list.append(str_data);
+                } while (dbus_message_iter_next(&array_iter));
+                QVariant variant(str_list);
+                return variant;
+            } else {
+                QVariantList variantList;
+                do {
+                    variantList << getVariantFromDBusMessage(&array_iter);
+                } while (dbus_message_iter_next(&array_iter));
+                QVariant variant(variantList);
+                return variant;
+            }
+            break;
+        }
+
+        case DBUS_TYPE_BYTE:
+        {
+            dbus_message_iter_get_basic(iter, &char_data);
+            QChar ch(char_data);
+            QVariant variant(ch);
+            return variant;
+        }
+
+        case DBUS_TYPE_INT32:
+        {
+            dbus_message_iter_get_basic(iter, &int32_data);
+            QVariant variant((int)int32_data);
+            return variant;
+        }
+
+        case DBUS_TYPE_UINT32:
+        {
+            dbus_message_iter_get_basic(iter, &uint32_data);
+            QVariant variant((uint)uint32_data);
+            return variant;
+        }
+
+        case DBUS_TYPE_STRING:
+        {
+            dbus_message_iter_get_basic(iter, &str_data);
+            QString str(str_data);
+            QVariant variant(str);
+            return variant;
+        }
+
+        case DBUS_TYPE_INT64:
+        {
+            dbus_message_iter_get_basic(iter, &int64_data);
+            QVariant variant((qlonglong)int64_data);
+            return variant;
+        }
+
+        case DBUS_TYPE_UINT64:
+        {
+            dbus_message_iter_get_basic(iter, &uint64_data);
+            QVariant variant((qulonglong)uint64_data);
+            return variant;
+        }
+
+        case DBUS_TYPE_STRUCT:
+        {
+            // Handle all structs here
+            DBusMessageIter struct_iter;
+            dbus_message_iter_recurse(iter, &struct_iter);
+
+	    QVariantList variantList;
+	    do {
+	      variantList << getVariantFromDBusMessage(&struct_iter);
+	    } while (dbus_message_iter_next(&struct_iter));
+	    QVariant variant(variantList);
+	    return variant;
+        }
+
+        default:
+            qDebug() << "Unsupported DBUS type: " << argtype;
+    }
+
+    return QVariant();
+}
+
+static DBusHandlerResult signalHandler (DBusConnection *connection,
+                                        DBusMessage *message,
+                                        void *object_ref) {
+    (void)connection;
+    QString interface;
+    QString signal;
+    DBusDispatcher *dispatcher = (DBusDispatcher *)object_ref;
+
+    if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) {
+        interface = dbus_message_get_interface(message);
+        signal = dbus_message_get_member(message);
+        
+        QList<QVariant> arglist;
+        DBusMessageIter dbus_iter;
+
+        if (dbus_message_iter_init(message, &dbus_iter)) {
+            // Read return arguments
+            while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
+                arglist << getVariantFromDBusMessage(&dbus_iter);
+                dbus_message_iter_next(&dbus_iter);
+            }
+        }
+
+        dispatcher->emitSignalReceived(interface, signal, arglist);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    (void)message;
+    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+DBusDispatcher::DBusDispatcher(const QString& service,
+                               const QString& path,
+                               const QString& interface,
+                               QObject *parent)
+ : QObject(parent),
+   d_ptr(new DBusDispatcherPrivate(service, path, interface, path)) {
+    setupDBus();
+}
+
+DBusDispatcher::DBusDispatcher(const QString& service,
+                               const QString& path,
+                               const QString& interface,
+                               const QString& signalPath,
+                               QObject *parent)
+ : QObject(parent),
+   d_ptr(new DBusDispatcherPrivate(service, path, interface, signalPath)) {
+    setupDBus();
+}
+
+DBusDispatcher::~DBusDispatcher()
+{
+    if (d_ptr->connection) {
+        dbus_connection_close(d_ptr->connection);
+        dbus_connection_unref(d_ptr->connection);
+    }
+    delete d_ptr;
+}
+
+void DBusDispatcher::setupDBus()
+{
+    d_ptr->connection = dbus_bus_get_private(DBUS_BUS_SYSTEM, NULL);
+
+    if (d_ptr->connection == NULL)
+        qDebug() << "Unable to get DBUS connection!";
+    else {
+        d_ptr->signal_vtable.message_function = signalHandler;
+
+	dbus_connection_set_exit_on_disconnect(d_ptr->connection, FALSE);
+        dbus_connection_setup_with_g_main(d_ptr->connection, NULL);
+        dbus_connection_register_object_path(d_ptr->connection, 
+                                             d_ptr->signalPath.toLatin1(),
+                                             &d_ptr->signal_vtable,
+                                             this);
+    }
+}
+
+static DBusMessage *prepareDBusCall(const QString& service,
+                                    const QString& path,
+                                    const QString& interface,
+                                    const QString& method, 
+                                    const QVariant& arg1 = QVariant(),
+                                    const QVariant& arg2 = QVariant(),
+                                    const QVariant& arg3 = QVariant(),
+                                    const QVariant& arg4 = QVariant(),
+                                    const QVariant& arg5 = QVariant(),
+                                    const QVariant& arg6 = QVariant(),
+                                    const QVariant& arg7 = QVariant(),
+                                    const QVariant& arg8 = QVariant()) 
+{
+    DBusMessage *message = dbus_message_new_method_call(service.toLatin1(),
+                                                        path.toLatin1(),
+                                                        interface.toLatin1(),
+                                                        method.toLatin1());
+    DBusMessageIter dbus_iter;
+
+    // Append variants to DBUS message
+    QList<QVariant> arglist;
+    if (arg1.isValid()) arglist << arg1;
+    if (arg2.isValid()) arglist << arg2;
+    if (arg3.isValid()) arglist << arg3;
+    if (arg4.isValid()) arglist << arg4;
+    if (arg5.isValid()) arglist << arg5;
+    if (arg6.isValid()) arglist << arg6;
+    if (arg7.isValid()) arglist << arg7;
+    if (arg8.isValid()) arglist << arg8;
+
+    dbus_message_iter_init_append (message, &dbus_iter);
+    
+    while (!arglist.isEmpty()) {
+        QVariant argument = arglist.takeFirst();
+        appendVariantToDBusMessage(argument, &dbus_iter);
+    }
+
+    return message;
+}
+
+QList<QVariant> DBusDispatcher::call(const QString& method, 
+                                     const QVariant& arg1,
+                                     const QVariant& arg2,
+                                     const QVariant& arg3,
+                                     const QVariant& arg4,
+                                     const QVariant& arg5,
+                                     const QVariant& arg6,
+                                     const QVariant& arg7,
+                                     const QVariant& arg8) {
+    DBusMessageIter dbus_iter;
+    DBusMessage *message = prepareDBusCall(d_ptr->service, d_ptr->path,
+                                           d_ptr->interface, method,
+                                           arg1, arg2, arg3, arg4, arg5,
+                                           arg6, arg7, arg8);
+    DBusMessage *reply = dbus_connection_send_with_reply_and_block(
+                                                    d_ptr->connection,
+                                                    message, -1, NULL);
+    dbus_message_unref(message);
+
+    QList<QVariant> replylist;
+    if (reply != NULL &&  dbus_message_iter_init(reply, &dbus_iter)) {
+        // Read return arguments
+        while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
+            replylist << getVariantFromDBusMessage(&dbus_iter);
+            dbus_message_iter_next(&dbus_iter);
+        }
+    }
+    if (reply != NULL) dbus_message_unref(reply);
+    return replylist;
+}
+
+class PendingCallInfo {
+public:
+    QString method;
+    DBusDispatcher *dispatcher;
+    DBusDispatcherPrivate *priv;
+};
+
+static void freePendingCallInfo(void *memory) {
+    PendingCallInfo *info = (PendingCallInfo *)memory;
+    delete info;
+}
+
+static void pendingCallFunction (DBusPendingCall *pending,
+                                 void *memory) {
+    PendingCallInfo *info = (PendingCallInfo *)memory;
+    QString errorStr;
+    QList<QVariant> replyList;
+    DBusMessage *reply = dbus_pending_call_steal_reply (pending);
+
+    Q_ASSERT(reply != NULL);
+
+    if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) {
+        errorStr = dbus_message_get_error_name (reply);
+    } else {
+        DBusMessageIter dbus_iter;
+        dbus_message_iter_init(reply, &dbus_iter);
+        // Read return arguments
+        while (dbus_message_iter_get_arg_type (&dbus_iter) != DBUS_TYPE_INVALID) {
+            replyList << getVariantFromDBusMessage(&dbus_iter);
+            dbus_message_iter_next(&dbus_iter);
+        }
+    }
+
+    info->priv->pending_calls.removeOne(pending);
+    info->dispatcher->emitCallReply(info->method, replyList, errorStr);
+    dbus_message_unref(reply);
+    dbus_pending_call_unref(pending);
+}
+
+bool DBusDispatcher::callAsynchronous(const QString& method, 
+                                      const QVariant& arg1,
+                                      const QVariant& arg2,
+                                      const QVariant& arg3,
+                                      const QVariant& arg4,
+                                      const QVariant& arg5,
+                                      const QVariant& arg6,
+                                      const QVariant& arg7,
+                                      const QVariant& arg8) {
+    DBusMessage *message = prepareDBusCall(d_ptr->service, d_ptr->path,
+                                           d_ptr->interface, method,
+                                           arg1, arg2, arg3, arg4, arg5,
+                                           arg6, arg7, arg8);
+    DBusPendingCall *call = NULL;
+    dbus_bool_t ret = dbus_connection_send_with_reply(d_ptr->connection,
+                                                      message, &call, -1);
+    PendingCallInfo *info = new PendingCallInfo;
+    info->method = method;
+    info->dispatcher = this;
+    info->priv = d_ptr;
+
+    dbus_pending_call_set_notify(call, pendingCallFunction, info, freePendingCallInfo);
+    d_ptr->pending_calls.append(call);
+    return (bool)ret;
+}
+
+void DBusDispatcher::emitSignalReceived(const QString& interface, 
+                                        const QString& signal,
+                                        const QList<QVariant>& args) {
+    emit signalReceived(interface, signal, args); }
+
+void DBusDispatcher::emitCallReply(const QString& method,
+                                   const QList<QVariant>& args,
+                                   const QString& error) {
+    emit callReply(method, args, error); }
+
+void DBusDispatcher::synchronousDispatch(int timeout_ms)
+{
+    dbus_connection_read_write_dispatch(d_ptr->connection, timeout_ms);
+}
+
+} // Maemo namespace
+
diff --git a/src/plugins/bearer/icd/dbusdispatcher.h b/src/plugins/bearer/icd/dbusdispatcher.h
new file mode 100644
index 0000000..6f2f347
--- /dev/null
+++ b/src/plugins/bearer/icd/dbusdispatcher.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef DBUSDISPATCHER_H
+#define DBUSDISPATCHER_H
+
+#include <QObject>
+#include <QVariant>
+
+namespace Maemo {
+
+class DBusDispatcherPrivate;
+class DBusDispatcher : public QObject
+{
+    Q_OBJECT
+
+public:
+    DBusDispatcher(const QString& service,
+                   const QString& path,
+                   const QString& interface,
+                   QObject *parent = 0);
+    DBusDispatcher(const QString& service,
+                   const QString& path,
+                   const QString& interface,
+                   const QString& signalPath,
+                   QObject *parent = 0);
+    ~DBusDispatcher();
+
+    QList<QVariant> call(const QString& method, 
+                         const QVariant& arg1 = QVariant(),
+                         const QVariant& arg2 = QVariant(),
+                         const QVariant& arg3 = QVariant(),
+                         const QVariant& arg4 = QVariant(),
+                         const QVariant& arg5 = QVariant(),
+                         const QVariant& arg6 = QVariant(),
+                         const QVariant& arg7 = QVariant(),
+                         const QVariant& arg8 = QVariant());
+    bool callAsynchronous(const QString& method, 
+                          const QVariant& arg1 = QVariant(),
+                          const QVariant& arg2 = QVariant(),
+                          const QVariant& arg3 = QVariant(),
+                          const QVariant& arg4 = QVariant(),
+                          const QVariant& arg5 = QVariant(),
+                          const QVariant& arg6 = QVariant(),
+                          const QVariant& arg7 = QVariant(),
+                          const QVariant& arg8 = QVariant());
+    void emitSignalReceived(const QString& interface, 
+                            const QString& signal,
+                            const QList<QVariant>& args);
+    void emitCallReply(const QString& method,
+                       const QList<QVariant>& args,
+                       const QString& error = "");
+    void synchronousDispatch(int timeout_ms);
+
+Q_SIGNALS:
+    void signalReceived(const QString& interface, 
+                        const QString& signal,
+                        const QList<QVariant>& args);
+    void callReply(const QString& method,
+                   const QList<QVariant>& args,
+                   const QString& error);
+
+protected:
+    void setupDBus();
+
+private:
+    DBusDispatcherPrivate *d_ptr;
+};
+
+}  // Maemo namespace
+
+#endif
diff --git a/src/plugins/bearer/icd/iapconf.cpp b/src/plugins/bearer/icd/iapconf.cpp
new file mode 100644
index 0000000..ddd9fc2
--- /dev/null
+++ b/src/plugins/bearer/icd/iapconf.cpp
@@ -0,0 +1,245 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdlib.h>
+#include <string.h>
+#include <conn_settings.h>
+
+#include "iapconf.h"
+
+#define QSTRING_TO_CONST_CSTR(str) \
+    str.toUtf8().constData()
+
+namespace Maemo {
+
+class IAPConfPrivate {
+public:
+    ConnSettings *settings;
+
+    ConnSettingsValue *variantToValue(const QVariant &variant);
+    QVariant valueToVariant(ConnSettingsValue *value);
+};
+
+ConnSettingsValue *IAPConfPrivate::variantToValue(const QVariant &variant)
+{
+    // Convert variant to ConnSettingsValue
+    ConnSettingsValue *value = conn_settings_value_new();
+    if (value == 0) {
+        qWarning("IAPConf: Unable to create new ConnSettingsValue");
+        return 0;
+    }
+
+    switch(variant.type()) {
+        
+    case QVariant::Invalid:
+        value->type = CONN_SETTINGS_VALUE_INVALID;
+        break;
+    
+    case QVariant::String: {
+        char *valueStr = strdup(QSTRING_TO_CONST_CSTR(variant.toString()));
+        value->type = CONN_SETTINGS_VALUE_STRING;
+        value->value.string_val = valueStr;
+        break;
+    }
+    
+    case QVariant::Int:
+        value->type = CONN_SETTINGS_VALUE_INT;
+        value->value.int_val = variant.toInt();
+        break;
+    
+    case QMetaType::Float:
+    case QVariant::Double:
+        value->type = CONN_SETTINGS_VALUE_DOUBLE;
+        value->value.double_val = variant.toDouble();
+        break;
+    
+    case QVariant::Bool:
+        value->type = CONN_SETTINGS_VALUE_BOOL;
+        value->value.bool_val = variant.toBool() ? 1 : 0;
+        break;
+    
+    case QVariant::ByteArray: {
+        QByteArray array = variant.toByteArray();
+        value->type = CONN_SETTINGS_VALUE_BYTE_ARRAY;
+        value->value.byte_array.len = array.size();
+        value->value.byte_array.val = (unsigned char *)malloc(array.size());
+        memcpy(value->value.byte_array.val, array.constData(), array.size());
+        break;
+    }
+    
+    case QVariant::List: {
+        QVariantList list = variant.toList();
+        ConnSettingsValue **list_val = (ConnSettingsValue **)malloc(
+            (list.size() + 1) * sizeof(ConnSettingsValue *));
+
+        for (int idx = 0; idx < list.size(); idx++) {
+            list_val[idx] = variantToValue(list.at(idx));
+        }
+        list_val[list.size()] = 0;
+
+        value->type = CONN_SETTINGS_VALUE_LIST;
+        value->value.list_val = list_val;
+        break;
+    }
+    
+    default:
+        qWarning("IAPConf: Can not handle QVariant of type %d",
+                 variant.type());
+        conn_settings_value_destroy(value);
+        return 0;
+    }
+
+    return value;
+}
+
+QVariant IAPConfPrivate::valueToVariant(ConnSettingsValue *value)
+{
+    if (value == 0 || value->type == CONN_SETTINGS_VALUE_INVALID) {
+        return QVariant();
+    }
+
+    switch(value->type) {
+    
+    case CONN_SETTINGS_VALUE_BOOL:
+        return QVariant(value->value.bool_val ? true : false);
+    
+    case CONN_SETTINGS_VALUE_STRING:
+        return QVariant(QString(value->value.string_val));
+    
+    case CONN_SETTINGS_VALUE_DOUBLE:
+        return QVariant(value->value.double_val);
+    
+    case CONN_SETTINGS_VALUE_INT:
+        return QVariant(value->value.int_val);
+    
+    case CONN_SETTINGS_VALUE_LIST: {
+        // At least with GConf backend connsettings returns byte array as list
+        // of ints, first check for that case
+        if (value->value.list_val && value->value.list_val[0]) {
+            bool canBeConvertedToByteArray = true;
+            for (int idx = 0; value->value.list_val[idx]; idx++) {
+                ConnSettingsValue *val = value->value.list_val[idx];
+                if (val->type != CONN_SETTINGS_VALUE_INT
+                     || val->value.int_val > 255
+                     || val->value.int_val < 0) {
+                    canBeConvertedToByteArray = false;
+                    break;
+                }
+            }
+
+            if (canBeConvertedToByteArray) {
+                QByteArray array;
+                for (int idx = 0; value->value.list_val[idx]; idx++) {
+                    array.append(value->value.list_val[idx]->value.int_val);
+                }
+                return array;
+            }
+
+	    // Create normal list
+	    QVariantList list;
+	    for (int idx = 0; value->value.list_val[idx]; idx++) {
+	      list.append(valueToVariant(value->value.list_val[idx]));
+	    }
+	    return list;
+        }
+    }
+    
+    case CONN_SETTINGS_VALUE_BYTE_ARRAY:
+        return QByteArray::fromRawData((char *)value->value.byte_array.val, 
+                                       value->value.byte_array.len);
+    
+    default:
+        return QVariant();
+    }
+}
+
+// Public class implementation
+
+IAPConf::IAPConf(const QString &iap_id)
+    : d_ptr(new IAPConfPrivate)
+{
+    d_ptr->settings = conn_settings_open(CONN_SETTINGS_CONNECTION,
+                                         QSTRING_TO_CONST_CSTR(iap_id));
+    if (d_ptr->settings == 0) {
+        qWarning("IAPConf: Unable to open ConnSettings for %s", 
+                 QSTRING_TO_CONST_CSTR(iap_id));
+    }
+}
+
+IAPConf::~IAPConf()
+{
+    conn_settings_close(d_ptr->settings);
+    delete d_ptr;
+}
+
+
+QVariant IAPConf::value(const QString& key) const
+{
+    ConnSettingsValue *val = conn_settings_get(d_ptr->settings,
+                                               QSTRING_TO_CONST_CSTR(key));
+
+    QVariant variant = d_ptr->valueToVariant(val);
+    conn_settings_value_destroy(val);
+    return variant;
+}
+
+
+void IAPConf::getAll(QList<QString> &all_iaps, bool return_path)
+{
+    Q_UNUSED(return_path); // We don't use return path currently
+
+    // Go through all available connections and add them to the list
+    char **ids = conn_settings_list_ids(CONN_SETTINGS_CONNECTION);
+    if (ids == 0) {
+        // No ids found - nothing to do
+        return;
+    }
+
+    for (int idx = 0; ids[idx]; idx++) {
+        all_iaps.append(QString(ids[idx]));
+        free(ids[idx]);
+    }
+    free(ids);
+}
+
+
+} // namespace Maemo
diff --git a/src/plugins/bearer/icd/iapconf.h b/src/plugins/bearer/icd/iapconf.h
new file mode 100644
index 0000000..9c4ddcb
--- /dev/null
+++ b/src/plugins/bearer/icd/iapconf.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef IAPCONF_H
+#define IAPCONF_H
+
+#include <QString>
+#include <QVariant>
+
+namespace Maemo {
+
+class IAPConfPrivate;
+class IAPConf {
+public:
+    IAPConf(const QString &iap_id);
+    virtual ~IAPConf();
+
+    /**
+        Get one IAP value.
+    */
+    QVariant value(const QString& key) const;
+
+    /**
+        Return all the IAPs found in the system. If return_path is true,
+	then do not strip the IAP path away.
+    */
+    static void getAll(QList<QString> &all_iaps, bool return_path=false);
+
+private:
+    IAPConfPrivate *d_ptr;
+};
+
+} // namespace Maemo
+
+#endif
diff --git a/src/plugins/bearer/icd/iapmonitor.cpp b/src/plugins/bearer/icd/iapmonitor.cpp
new file mode 100644
index 0000000..6138e7b
--- /dev/null
+++ b/src/plugins/bearer/icd/iapmonitor.cpp
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QStringList>
+
+#include <conn_settings.h>
+#include "iapmonitor.h"
+
+namespace Maemo {
+
+
+void conn_settings_notify_func (ConnSettingsType type,
+                                const char *id,
+                                const char *key,
+                                ConnSettingsValue *value,
+                                void *user_data);
+
+class IAPMonitorPrivate {
+private:
+    IAPMonitor *monitor;
+    ConnSettings *settings;
+
+public:
+
+    IAPMonitorPrivate(IAPMonitor *monitor)
+        : monitor(monitor)
+    {
+        settings = conn_settings_open(CONN_SETTINGS_CONNECTION, NULL);
+        conn_settings_add_notify(
+                        settings,
+                        (ConnSettingsNotifyFunc *)conn_settings_notify_func,
+                        this);
+    }
+
+    ~IAPMonitorPrivate()
+    {
+        conn_settings_del_notify(settings);
+        conn_settings_close(settings);
+    }
+
+    void iapAdded(const QString &iap)
+    {
+        monitor->iapAdded(iap);
+    }
+
+    void iapRemoved(const QString &iap)
+    {
+        monitor->iapRemoved(iap);
+    }
+};
+
+void conn_settings_notify_func (ConnSettingsType type,
+                                const char *id,
+                                const char *key,
+                                ConnSettingsValue *value,
+                                void *user_data)
+{    
+    if (type != CONN_SETTINGS_CONNECTION) return;
+    IAPMonitorPrivate *priv = (IAPMonitorPrivate *)user_data;
+
+    QString iapId(key);
+    iapId = iapId.split("/")[0];
+    if (value != 0) {
+        priv->iapAdded(iapId);
+    } else if (iapId == QString(key)) {
+        // IAP is removed only when the directory gets removed
+        priv->iapRemoved(iapId);
+    }
+}
+
+IAPMonitor::IAPMonitor()
+    : d_ptr(new IAPMonitorPrivate(this))
+{
+}
+
+IAPMonitor::~IAPMonitor()
+{
+    delete d_ptr;
+}
+
+void IAPMonitor::iapAdded(const QString &id)
+{
+    // By default do nothing
+}
+
+void IAPMonitor::iapRemoved(const QString &id)
+{
+    // By default do nothing
+}
+
+} // namespace Maemo
diff --git a/src/plugins/bearer/icd/iapmonitor.h b/src/plugins/bearer/icd/iapmonitor.h
new file mode 100644
index 0000000..21ad3bc
--- /dev/null
+++ b/src/plugins/bearer/icd/iapmonitor.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef IAPMONITOR_H
+#define IAPMONITOR_H
+
+#include <QString>
+
+namespace Maemo {
+
+class IAPMonitorPrivate;
+class IAPMonitor {
+public:
+    IAPMonitor();
+    ~IAPMonitor();
+
+protected:
+    virtual void iapAdded(const QString &id);
+    virtual void iapRemoved(const QString &id);
+
+private:
+    IAPMonitorPrivate *d_ptr;
+    Q_DECLARE_PRIVATE(IAPMonitor);
+};
+
+} // namespace Maemo
+
+#endif // IAPMONITOR_H
+
diff --git a/src/plugins/bearer/icd/icd.pro b/src/plugins/bearer/icd/icd.pro
index b2c58e9..464cc1c 100644
--- a/src/plugins/bearer/icd/icd.pro
+++ b/src/plugins/bearer/icd/icd.pro
@@ -7,15 +7,25 @@ QMAKE_CXXFLAGS *= $$QT_CFLAGS_DBUS $$QT_CFLAGS_CONNSETTINGS
 LIBS += $$QT_LIBS_CONNSETTINGS
 
 HEADERS += qicdengine.h \
-           qnetworksession_impl.h
+           qnetworksession_impl.h \
+           dbusdispatcher.h \
+           iapconf.h \
+           iapmonitor.h \
+           maemo_icd.h \
+           proxyconf.h \
+           wlan-utils.h
 
 SOURCES += main.cpp \
            qicdengine.cpp \
-           qnetworksession_impl.cpp
+           qnetworksession_impl.cpp \
+           dbusdispatcher.cpp \
+           iapmonitor.cpp \
+           iapconf.cpp \
+           maemo_icd.cpp \
+           proxyconf.cpp
 
 #DEFINES += BEARER_MANAGEMENT_DEBUG
 
-include(../../../3rdparty/libconninet.pri)
 include(../../../3rdparty/libgq.pri)
 
 QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/bearer
diff --git a/src/plugins/bearer/icd/maemo_icd.cpp b/src/plugins/bearer/icd/maemo_icd.cpp
new file mode 100644
index 0000000..eb093fe
--- /dev/null
+++ b/src/plugins/bearer/icd/maemo_icd.cpp
@@ -0,0 +1,849 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "maemo_icd.h"
+#include "dbusdispatcher.h"
+
+#include <QObject>
+#include <QTimer>
+#include <QCoreApplication>
+#include <QEventLoop>
+#include <QDebug>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include <stdio.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+namespace Maemo {
+
+#undef PRINT_DEBUGINFO
+#ifdef PRINT_DEBUGINFO
+  static FILE *fdebug = NULL;
+#define PDEBUG(fmt, args...)						\
+  do {									\
+    struct timeval tv;							\
+    gettimeofday(&tv, 0);						\
+    fprintf(fdebug, "DEBUG[%d]:%ld.%ld:%s:%s():%d: " fmt,		\
+	    getpid(),							\
+	    tv.tv_sec, tv.tv_usec,					\
+	    __FILE__, __FUNCTION__, __LINE__, args);			\
+    fflush(fdebug);							\
+  } while(0)
+#else
+#define PDEBUG(fmt...)
+#endif
+
+
+class IcdPrivate
+{
+public:
+    IcdPrivate(Icd *myfriend)
+    {
+        init(10000, IcdNewDbusInterface, myfriend);
+    }
+
+    IcdPrivate(unsigned int timeout, Icd *myfriend)
+    {
+        init(timeout, IcdNewDbusInterface, myfriend);
+    }
+
+    IcdPrivate(unsigned int timeout, IcdDbusInterfaceVer ver, Icd *myfriend)
+    {
+        /* Note that the old Icd interface is currently disabled and
+	 * the new one is always used.
+	 */
+        init(timeout, IcdNewDbusInterface, myfriend);
+    }
+
+    ~IcdPrivate()
+    {
+      QObject::disconnect(mDBus, 
+			  SIGNAL(signalReceived(const QString&, 
+						const QString&,
+						const QList<QVariant>&)),
+			  icd,
+			  SLOT(icdSignalReceived(const QString&, 
+						 const QString&,
+						 const QList<QVariant>&)));
+
+      QObject::disconnect(mDBus,
+			  SIGNAL(callReply(const QString&,
+					   const QList<QVariant>&,
+					   const QString&)),
+			  icd,
+			  SLOT(icdCallReply(const QString&,
+					    const QList<QVariant>&,
+					    const QString&)));
+
+        delete mDBus;
+        mDBus = 0;
+    }
+
+    /* Icd2 dbus API functions */
+    QStringList scan(icd_scan_request_flags flags,
+		     QStringList &network_types,
+		     QList<IcdScanResult>& scan_results,
+		     QString& error);
+
+    uint state(QString& service_type, uint service_attrs,
+	       QString& service_id, QString& network_type,
+	       uint network_attrs, QByteArray& network_id,
+	       IcdStateResult &state_result);
+
+    uint addrinfo(QString& service_type, uint service_attrs,
+		  QString& service_id, QString& network_type,
+		  uint network_attrs, QByteArray& network_id,
+		  IcdAddressInfoResult& addr_result);
+
+    uint state(QList<IcdStateResult>& state_results);
+    uint statistics(QList<IcdStatisticsResult>& stats_results);
+    uint addrinfo(QList<IcdAddressInfoResult>& addr_results);
+
+    void signalReceived(const QString& interface, 
+                        const QString& signal,
+                        const QList<QVariant>& args);
+    void callReply(const QString& method, 
+                   const QList<QVariant>& args,
+                   const QString& error);
+
+public:
+    DBusDispatcher *mDBus;
+    QString mMethod;
+    QString mInterface;
+    QString mSignal;
+    QString mError;
+    QList<QVariant> mArgs;
+    QList<QVariant> receivedSignals;
+    unsigned int timeout;
+    IcdDbusInterfaceVer icd_dbus_version;
+    Icd *icd;
+
+    void init(unsigned int dbus_timeout, IcdDbusInterfaceVer ver,
+	      Icd *myfriend)
+    {
+      if (ver == IcdNewDbusInterface) {
+	mDBus = new DBusDispatcher(ICD_DBUS_API_INTERFACE,
+				   ICD_DBUS_API_PATH,
+				   ICD_DBUS_API_INTERFACE);
+      } else {
+	mDBus = new DBusDispatcher(ICD_DBUS_SERVICE,
+				   ICD_DBUS_PATH,
+				   ICD_DBUS_INTERFACE);
+      }
+      icd_dbus_version = ver;
+
+      /* This connect has a side effect as it means that only one
+       * Icd object can exists in one time. This should be fixed!
+       */
+      QObject::connect(mDBus, 
+		       SIGNAL(signalReceived(const QString&, 
+					     const QString&,
+					     const QList<QVariant>&)),
+		       myfriend,
+		       SLOT(icdSignalReceived(const QString&, 
+					      const QString&,
+					      const QList<QVariant>&)));
+
+      QObject::connect(mDBus,
+		       SIGNAL(callReply(const QString&,
+					const QList<QVariant>&,
+					const QString&)),
+		       myfriend,
+		       SLOT(icdCallReply(const QString&,
+					 const QList<QVariant>&,
+					 const QString&)));
+
+      icd = myfriend;
+      timeout = dbus_timeout;
+
+#ifdef PRINT_DEBUGINFO
+      if (!fdebug) {
+	fdebug = fopen("/tmp/maemoicd.log", "a+");
+      }
+      PDEBUG("created %s\n", "IcdPrivate");
+#endif
+    }
+
+    void clearState()
+    {
+      mMethod.clear();
+      mInterface.clear();
+      mSignal.clear();
+      mError.clear();
+      mArgs.clear();
+      receivedSignals.clear();
+    }
+
+    bool doState();
+};
+
+
+void IcdPrivate::signalReceived(const QString& interface, 
+				const QString& signal,
+				const QList<QVariant>& args)
+{
+    // Signal handler, which simply records what has been signalled
+    mInterface = interface;
+    mSignal = signal;
+    mArgs = args;
+
+    //qDebug() << "signal" << signal << "received:" << args;
+    receivedSignals << QVariant(interface) << QVariant(signal) << QVariant(args);
+}
+
+
+void IcdPrivate::callReply(const QString& method, 
+			   const QList<QVariant>& /*args*/,
+			   const QString& error)
+{
+    mMethod = method;
+    mError = error;
+}
+
+
+static void get_scan_result(QList<QVariant>& args,
+			    IcdScanResult& ret)
+{
+    int i=0;
+
+    if (args.isEmpty())
+      return;
+
+    ret.status = args[i++].toUInt();
+    ret.timestamp = args[i++].toUInt();
+    ret.scan.service_type = args[i++].toString();
+    ret.service_name = args[i++].toString();
+    ret.scan.service_attrs = args[i++].toUInt();
+    ret.scan.service_id = args[i++].toString();
+    ret.service_priority = args[i++].toInt();
+    ret.scan.network_type = args[i++].toString();
+    ret.network_name = args[i++].toString();
+    ret.scan.network_attrs = args[i++].toUInt();
+    ret.scan.network_id = args[i++].toByteArray();
+    ret.network_priority = args[i++].toInt();
+    ret.signal_strength = args[i++].toInt();
+    ret.station_id = args[i++].toString();
+    ret.signal_dB = args[i++].toInt();
+}
+
+
+QStringList IcdPrivate::scan(icd_scan_request_flags flags,
+			     QStringList &network_types,
+			     QList<IcdScanResult>& scan_results,
+			     QString& error)
+{
+    QStringList scanned_types;
+    QTimer timer;
+    QVariant reply;
+    QVariantList vl;
+    bool last_result = false;
+    IcdScanResult result;
+    int all_waited;
+    
+    clearState();
+    reply = mDBus->call(ICD_DBUS_API_SCAN_REQ, (uint)flags);
+    if (reply.type() != QVariant::List)
+        return scanned_types;
+    vl = reply.toList();
+    if (vl.isEmpty()) {
+        error = "Scan did not return anything.";
+	return scanned_types;
+    }
+    reply = vl.first();
+    scanned_types = reply.toStringList();
+    //qDebug() << "Scanning:" << scanned_types;
+    all_waited = scanned_types.size();
+
+    timer.setSingleShot(true);
+    timer.start(timeout);
+
+    scan_results.clear();
+    while (!last_result) {
+	while (timer.isActive() && mInterface.isEmpty() && mError.isEmpty()) {
+	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+	}
+
+	if (!timer.isActive()) {
+	    //qDebug() << "Timeout happened";
+	    break;
+	}
+
+	if (mSignal != ICD_DBUS_API_SCAN_SIG) {
+	    //qDebug() << "Received" << mSignal << "while waiting" << ICD_DBUS_API_SCAN_SIG << ", ignoring";
+	    mInterface.clear();
+	    continue;
+	}
+
+	if (mError.isEmpty()) {
+  	    QString msgInterface = receivedSignals.takeFirst().toString();
+	    QString msgSignal = receivedSignals.takeFirst().toString();
+	    QList<QVariant> msgArgs = receivedSignals.takeFirst().toList();
+	    //qDebug() << "Signal" << msgSignal << "received.";
+	    //qDebug() << "Params:" << msgArgs;
+
+	    while (!msgSignal.isEmpty()) {
+		get_scan_result(msgArgs, result);
+
+#if 0
+		qDebug() << "Received: " <<
+		    "status =" << result.status <<
+		    ", timestamp =" << result.timestamp <<
+		    ", service_type =" << result.scan.service_type <<
+		    ", service_name =" << result.service_name <<
+		    ", service_attrs =" << result.scan.service_attrs <<
+		    ", service_id =" << result.scan.service_id <<
+		    ", service_priority =" << result.service_priority <<
+		    ", network_type =" << result.scan.network_type <<
+		    ", network_name =" << result.network_name <<
+		    ", network_attrs =" << result.scan.network_attrs <<
+		    ", network_id =" << "-" <<
+		    ", network_priority =" << result.network_priority <<
+		    ", signal_strength =" << result.signal_strength <<
+		    ", station_id =" << result.station_id <<
+		    ", signal_dB =" << result.signal_dB;
+#endif
+
+		if (result.status == ICD_SCAN_COMPLETE) {
+		    //qDebug() << "waited =" << all_waited;
+		    if (--all_waited == 0) {
+		        last_result = true;
+			break;
+		    }
+		} else
+		    scan_results << result;
+
+		if (receivedSignals.isEmpty())
+		    break;
+
+		msgInterface = receivedSignals.takeFirst().toString();
+		msgSignal = receivedSignals.takeFirst().toString();
+		msgArgs = receivedSignals.takeFirst().toList();
+	    }
+	    mInterface.clear();
+
+	} else {
+	    qWarning() << "Error while scanning:" << mError;
+	    break;
+	}
+    }
+    timer.stop();
+
+    error = mError;
+    return scanned_types;
+}
+
+
+static void get_state_all_result(QList<QVariant>& args,
+				 IcdStateResult& ret)
+{
+    int i=0;
+
+    ret.params.service_type = args[i++].toString();
+    ret.params.service_attrs = args[i++].toUInt();
+    ret.params.service_id = args[i++].toString();
+    ret.params.network_type = args[i++].toString();
+    ret.params.network_attrs = args[i++].toUInt();
+    ret.params.network_id = args[i++].toByteArray();
+    ret.error = args[i++].toString();
+    ret.state = args[i++].toInt();
+}
+
+
+static void get_state_all_result2(QList<QVariant>& args,
+				 IcdStateResult& ret)
+{
+    int i=0;
+
+    ret.params.network_type = args[i++].toString();
+    ret.state = args[i++].toInt();
+
+    // Initialize the other values so that the caller can
+    // notice we only returned partial status
+    ret.params.service_type = QString();
+    ret.params.service_attrs = 0;
+    ret.params.service_id = QString();
+    ret.params.network_attrs = 0;
+    ret.params.network_id = QByteArray();
+    ret.error = QString();
+}
+
+
+uint IcdPrivate::state(QString& service_type, uint service_attrs,
+		       QString& service_id, QString& network_type,
+		       uint network_attrs, QByteArray& network_id,
+		       IcdStateResult& state_result)
+{
+    QTimer timer;
+    QVariant reply;
+    uint total_signals;
+    QVariantList vl;
+
+    clearState();
+
+    reply = mDBus->call(ICD_DBUS_API_STATE_REQ,
+			service_type, service_attrs, service_id,
+			network_type, network_attrs, network_id);
+    if (reply.type() != QVariant::List)
+        return 0;
+    vl = reply.toList();
+    if (vl.isEmpty())
+        return 0;
+    reply = vl.first();
+    total_signals = reply.toUInt();
+    if (!total_signals)
+        return 0;
+
+    timer.setSingleShot(true);
+    timer.start(timeout);
+
+    mInterface.clear();
+    while (timer.isActive() && mInterface.isEmpty()) {
+        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+	if (mSignal != ICD_DBUS_API_STATE_SIG) {
+            mInterface.clear();
+	    continue;
+	}
+    }
+
+    timer.stop();
+
+    if (mError.isEmpty()) {
+        if (!mArgs.isEmpty()) {
+	    if (mArgs.size()>2)
+	        get_state_all_result(mArgs, state_result);
+	    else {
+	        // We are not connected as we did not get the status we asked
+	        return 0;
+	    }
+	}
+    } else {
+        qWarning() << "Error:" << mError;
+    }
+
+    // The returned value should be one because we asked for one state
+    return total_signals;
+}
+
+
+/* Special version of the state() call which does not call event loop.
+ * Needed in order to fix NB#175098 where Qt4.7 webkit crashes because event
+ * loop is run when webkit does not expect it. This function is called from
+ * bearer management API syncStateWithInterface() in QNetworkSession
+ * constructor.
+ */
+uint IcdPrivate::state(QList<IcdStateResult>& state_results)
+{
+    QVariant reply;
+    QVariantList vl;
+    uint signals_left, total_signals;
+    IcdStateResult result;
+    time_t started;
+    int timeout_secs = timeout / 1000;
+
+    PDEBUG("%s\n", "state_results");
+
+    clearState();
+    reply = mDBus->call(ICD_DBUS_API_STATE_REQ);
+    if (reply.type() != QVariant::List)
+        return 0;
+    vl = reply.toList();
+    if (vl.isEmpty())
+        return 0;
+    reply = vl.first();
+    signals_left = total_signals = reply.toUInt();
+    if (!signals_left)
+        return 0;
+
+    started = time(0);
+    state_results.clear();
+    mError.clear();
+    while (signals_left) {
+        mInterface.clear();
+	while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
+	    mDBus->synchronousDispatch(1000);
+	}
+
+        if (time(0)>(started+timeout_secs)) {
+	    total_signals = 0;
+	    break;
+	}
+
+	if (mSignal != ICD_DBUS_API_STATE_SIG) {
+	    continue;
+	}
+
+	if (mError.isEmpty()) {
+	    if (!mArgs.isEmpty()) {
+	        if (mArgs.size()==2)
+	            get_state_all_result2(mArgs, result);
+		else
+	            get_state_all_result(mArgs, result);
+		state_results << result;
+	    }
+	    signals_left--;
+	} else {
+	    qWarning() << "Error:" << mError;
+	    break;
+	}
+    }
+
+    PDEBUG("total_signals=%d\n", total_signals);
+    return total_signals;
+}
+
+
+static void get_statistics_all_result(QList<QVariant>& args,
+				      IcdStatisticsResult& ret)
+{
+    int i=0;
+
+    if (args.isEmpty())
+      return;
+
+    ret.params.service_type = args[i++].toString();
+    ret.params.service_attrs = args[i++].toUInt();
+    ret.params.service_id = args[i++].toString();
+    ret.params.network_type = args[i++].toString();
+    ret.params.network_attrs = args[i++].toUInt();
+    ret.params.network_id = args[i++].toByteArray();
+    ret.time_active = args[i++].toUInt();
+    ret.signal_strength = (enum icd_nw_levels)args[i++].toUInt();
+    ret.bytes_sent = args[i++].toUInt();
+    ret.bytes_received = args[i++].toUInt();
+}
+
+
+uint IcdPrivate::statistics(QList<IcdStatisticsResult>& stats_results)
+{
+    QTimer timer;
+    QVariant reply;
+    QVariantList vl;
+    uint signals_left, total_signals;
+    IcdStatisticsResult result;
+
+    clearState();
+    reply = mDBus->call(ICD_DBUS_API_STATISTICS_REQ);
+    if (reply.type() != QVariant::List)
+        return 0;
+    vl = reply.toList();
+    if (vl.isEmpty())
+        return 0;
+    reply = vl.first();
+    if (reply.type() != QVariant::UInt)
+        return 0;
+    signals_left = total_signals = reply.toUInt();
+
+    if (!signals_left)
+        return 0;
+
+    timer.setSingleShot(true);
+    timer.start(timeout);
+    stats_results.clear();
+    while (signals_left) {
+	mInterface.clear();
+	while (timer.isActive() && mInterface.isEmpty()) {
+	    QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+	}
+
+	if (!timer.isActive()) {
+	    total_signals = 0;
+	    break;
+	}
+
+	if (mSignal != ICD_DBUS_API_STATISTICS_SIG) {
+	    continue;
+	}
+
+	if (mError.isEmpty()) {
+  	    get_statistics_all_result(mArgs, result);
+	    stats_results << result;
+	    signals_left--;
+	} else {
+	    qWarning() << "Error:" << mError;
+	    break;
+	}
+    }
+    timer.stop();
+
+    return total_signals;
+}
+
+
+static void get_addrinfo_all_result(QList<QVariant>& args,
+				    IcdAddressInfoResult& ret)
+{
+    int i=0;
+
+    if (args.isEmpty())
+      return;
+
+    ret.params.service_type = args[i++].toString();
+    ret.params.service_attrs = args[i++].toUInt();
+    ret.params.service_id = args[i++].toString();
+    ret.params.network_type = args[i++].toString();
+    ret.params.network_attrs = args[i++].toUInt();
+    ret.params.network_id = args[i++].toByteArray();
+
+    QVariantList vl = args[i].toList();
+    QVariant reply = vl.first();
+    QList<QVariant> lst = reply.toList();
+    for (int k=0; k<lst.size()/6; k=k+6) {
+        IcdIPInformation ip_info;
+	ip_info.address = lst[k].toString();
+	ip_info.netmask = lst[k++].toString();
+	ip_info.default_gateway = lst[k++].toString();
+	ip_info.dns1 = lst[k++].toString();
+	ip_info.dns2 = lst[k++].toString();
+	ip_info.dns3 = lst[k++].toString();
+
+	ret.ip_info << ip_info;
+    }
+}
+
+
+/* Special version of the addrinfo() call which does not call event loop.
+ * Needed in order to fix NB#175098 where Qt4.7 webkit crashes because event
+ * loop is run when webkit does not expect it. This function is called from
+ * bearer management API syncStateWithInterface() in QNetworkSession
+ * constructor.
+ */
+uint IcdPrivate::addrinfo(QList<IcdAddressInfoResult>& addr_results)
+{
+    QVariant reply;
+    QVariantList vl;
+    uint signals_left, total_signals;
+    IcdAddressInfoResult result;
+    time_t started;
+    int timeout_secs = timeout / 1000;
+
+    PDEBUG("%s\n", "addr_results");
+
+    clearState();
+    reply = mDBus->call(ICD_DBUS_API_ADDRINFO_REQ);
+    if (reply.type() != QVariant::List)
+        return 0;
+    vl = reply.toList();
+    if (vl.isEmpty())
+        return 0;
+    reply = vl.first();
+    if (reply.type() != QVariant::UInt)
+        return 0;
+    signals_left = total_signals = reply.toUInt();
+    if (!signals_left)
+        return 0;
+
+    started = time(0);
+    addr_results.clear();
+    while (signals_left) {
+        mInterface.clear();
+	while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
+	    mDBus->synchronousDispatch(1000);
+	}
+
+        if (time(0)>(started+timeout_secs)) {
+	    total_signals = 0;
+	    break;
+	}
+
+	if (mSignal != ICD_DBUS_API_ADDRINFO_SIG) {
+	    continue;
+	}
+
+	if (mError.isEmpty()) {
+  	    get_addrinfo_all_result(mArgs, result);
+	    addr_results << result;
+	    signals_left--;
+	} else {
+	    qWarning() << "Error:" << mError;
+	    break;
+	}
+    }
+
+    PDEBUG("total_signals=%d\n", total_signals);
+    return total_signals;
+}
+
+
+uint IcdPrivate::addrinfo(QString& service_type, uint service_attrs,
+			  QString& service_id, QString& network_type,
+			  uint network_attrs, QByteArray& network_id,
+			  IcdAddressInfoResult& addr_result)
+{
+    QTimer timer;
+    QVariant reply;
+    uint total_signals;
+    QVariantList vl;
+
+    clearState();
+
+    reply = mDBus->call(ICD_DBUS_API_ADDRINFO_REQ,
+			service_type, service_attrs, service_id,
+			network_type, network_attrs, network_id);
+    if (reply.type() != QVariant::List)
+        return 0;
+    vl = reply.toList();
+    if (vl.isEmpty())
+        return 0;
+    reply = vl.first();
+    total_signals = reply.toUInt();
+
+    if (!total_signals)
+        return 0;
+
+    timer.setSingleShot(true);
+    timer.start(timeout);
+
+    mInterface.clear();
+    while (timer.isActive() && mInterface.isEmpty()) {
+        QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+	if (mSignal != ICD_DBUS_API_ADDRINFO_SIG) {
+            mInterface.clear();
+	    continue;
+	}
+    }
+
+    timer.stop();
+
+    if (mError.isEmpty()) {
+        get_addrinfo_all_result(mArgs, addr_result);
+    } else {
+        qWarning() << "Error:" << mError;
+    }
+
+    // The returned value should be one because we asked for one addrinfo
+    return total_signals;
+}
+
+
+Icd::Icd(QObject *parent)
+  : QObject(parent), d(new IcdPrivate(this))
+{
+}
+
+Icd::Icd(unsigned int timeout, QObject *parent)
+  : QObject(parent), d(new IcdPrivate(timeout, this))
+{
+}
+
+Icd::Icd(unsigned int timeout, IcdDbusInterfaceVer ver, QObject *parent)
+  : QObject(parent), d(new IcdPrivate(timeout, ver, this))
+{
+}
+
+Icd::~Icd()
+{
+    delete d;
+}
+
+
+QStringList Icd::scan(icd_scan_request_flags flags,
+		      QStringList &network_types,
+		      QList<IcdScanResult>& scan_results,
+		      QString& error)
+{
+    return d->scan(flags, network_types, scan_results, error);
+}
+
+
+uint Icd::state(QString& service_type, uint service_attrs,
+		QString& service_id, QString& network_type,
+		uint network_attrs, QByteArray& network_id,
+		IcdStateResult &state_result)
+{
+    return d->state(service_type, service_attrs, service_id,
+		    network_type, network_attrs, network_id,
+		    state_result);
+}
+
+
+uint Icd::addrinfo(QString& service_type, uint service_attrs,
+		   QString& service_id, QString& network_type,
+		   uint network_attrs, QByteArray& network_id,
+		   IcdAddressInfoResult& addr_result)
+{
+    return d->addrinfo(service_type, service_attrs, service_id,
+		       network_type, network_attrs, network_id,
+		       addr_result);
+}
+
+
+uint Icd::state(QList<IcdStateResult>& state_results)
+{
+    return d->state(state_results);
+}
+
+
+uint Icd::statistics(QList<IcdStatisticsResult>& stats_results)
+{
+    return d->statistics(stats_results);
+}
+
+
+uint Icd::addrinfo(QList<IcdAddressInfoResult>& addr_results)
+{
+    return d->addrinfo(addr_results);
+}
+
+
+void Icd::icdSignalReceived(const QString& interface, 
+			 const QString& signal,
+			 const QList<QVariant>& args)
+{
+    d->signalReceived(interface, signal, args);
+}
+
+
+void Icd::icdCallReply(const QString& method, 
+		    const QList<QVariant>& args,
+		    const QString& error)
+{
+    d->callReply(method, args, error);
+}
+
+}  // Maemo namespace
+
+
diff --git a/src/plugins/bearer/icd/maemo_icd.h b/src/plugins/bearer/icd/maemo_icd.h
new file mode 100644
index 0000000..156316a
--- /dev/null
+++ b/src/plugins/bearer/icd/maemo_icd.h
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef MAEMO_ICD_H
+#define MAEMO_ICD_H
+
+#include <QObject>
+#include <QStringList>
+#include <QByteArray>
+#include <QMetaType>
+#include <QtDBus>
+#include <QDBusArgument>
+
+#include <glib.h>
+#include <icd/dbus_api.h>
+#include <icd/osso-ic.h>
+#include <icd/osso-ic-dbus.h>
+#include <icd/network_api_defines.h>
+
+#define ICD_LONG_SCAN_TIMEOUT (30*1000)  /* 30sec */
+#define ICD_SHORT_SCAN_TIMEOUT (10*1000)  /* 10sec */
+#define ICD_SHORT_CONNECT_TIMEOUT (10*1000) /* 10sec */
+#define ICD_LONG_CONNECT_TIMEOUT (150*1000) /* 2.5min */
+
+namespace Maemo {
+
+struct CommonParams {
+	QString service_type;
+	uint service_attrs;
+	QString service_id;
+	QString network_type;
+	uint network_attrs;
+	QByteArray network_id;
+};
+
+struct IcdScanResult {
+	uint status; // see #icd_scan_status
+	uint timestamp; // when last seen
+	QString service_name;
+	uint service_priority; // within a service type
+	QString network_name;
+	uint network_priority;
+	struct CommonParams scan;
+	uint signal_strength; // quality, 0 (none) - 10 (good)
+	QString station_id; // e.g. MAC address or similar id
+	uint signal_dB; // use signal strength above unless you know what you are doing
+
+	IcdScanResult() {
+		status = timestamp = scan.service_attrs = service_priority =
+			scan.network_attrs = network_priority = signal_strength =
+			signal_dB = 0;
+	}
+};
+
+struct IcdStateResult {
+	struct CommonParams params;
+	QString error;
+	uint state;
+};
+
+struct IcdStatisticsResult {
+	struct CommonParams params;
+	uint time_active;  // in seconds
+	enum icd_nw_levels signal_strength; // see network_api_defines.h in icd2-dev package
+	uint bytes_sent;
+	uint bytes_received;
+};
+
+struct IcdIPInformation {
+	QString address;
+	QString netmask;
+	QString default_gateway;
+	QString dns1;
+	QString dns2;
+	QString dns3;
+};
+
+struct IcdAddressInfoResult {
+	struct CommonParams params;
+	QList<IcdIPInformation> ip_info;
+};
+
+enum IcdDbusInterfaceVer {
+	IcdOldDbusInterface = 0,  // use the old OSSO-IC interface
+	IcdNewDbusInterface       // use the new Icd2 interface (default)
+};
+
+
+class IcdPrivate;
+class Icd : public QObject
+{
+    Q_OBJECT
+
+public:
+    Icd(QObject *parent = 0);
+    Icd(unsigned int timeout, QObject *parent = 0);
+    Icd(unsigned int timeout, IcdDbusInterfaceVer ver, QObject *parent = 0);
+    ~Icd();
+
+    /* Icd2 dbus API functions */
+    QStringList scan(icd_scan_request_flags flags,
+		     QStringList &network_types,
+		     QList<IcdScanResult>& scan_results,
+		     QString& error);
+
+    uint state(QString& service_type, uint service_attrs,
+	       QString& service_id, QString& network_type,
+	       uint network_attrs, QByteArray& network_id,
+	       IcdStateResult &state_result);
+
+    uint addrinfo(QString& service_type, uint service_attrs,
+		  QString& service_id, QString& network_type,
+		  uint network_attrs, QByteArray& network_id,
+		  IcdAddressInfoResult& addr_result);
+
+    uint state(QList<IcdStateResult>& state_results);
+    uint statistics(QList<IcdStatisticsResult>& stats_results);
+    uint addrinfo(QList<IcdAddressInfoResult>& addr_results);
+
+private Q_SLOTS:
+    void icdSignalReceived(const QString& interface, 
+                        const QString& signal,
+                        const QList<QVariant>& args);
+    void icdCallReply(const QString& method, 
+                   const QList<QVariant>& args,
+                   const QString& error);
+
+private:
+    IcdPrivate *d;
+    friend class IcdPrivate;
+};
+
+}  // Maemo namespace
+
+#endif
diff --git a/src/plugins/bearer/icd/proxyconf.cpp b/src/plugins/bearer/icd/proxyconf.cpp
new file mode 100644
index 0000000..e5c8f4e
--- /dev/null
+++ b/src/plugins/bearer/icd/proxyconf.cpp
@@ -0,0 +1,412 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QVariant>
+#include <QStringList>
+#include <QDebug>
+#include <QWriteLocker>
+#include <QNetworkProxyFactory>
+#include <QNetworkProxy>
+#include <gconf/gconf-value.h>
+#include <gconf/gconf-client.h>
+#include "proxyconf.h"
+
+#define CONF_PROXY "/system/proxy"
+#define HTTP_PROXY "/system/http_proxy"
+
+
+namespace Maemo {
+
+static QString convertKey(const char *key)
+{
+    return QString::fromUtf8(key);
+}
+
+static QVariant convertValue(GConfValue *src)
+{
+    if (!src) {
+        return QVariant();
+    } else {
+        switch (src->type) {
+        case GCONF_VALUE_INVALID:
+            return QVariant(QVariant::Invalid);
+        case GCONF_VALUE_BOOL:
+            return QVariant((bool)gconf_value_get_bool(src));
+        case GCONF_VALUE_INT:
+            return QVariant(gconf_value_get_int(src));
+        case GCONF_VALUE_FLOAT:
+            return QVariant(gconf_value_get_float(src));
+        case GCONF_VALUE_STRING:
+            return QVariant(QString::fromUtf8(gconf_value_get_string(src)));
+        case GCONF_VALUE_LIST:
+            switch (gconf_value_get_list_type(src)) {
+            case GCONF_VALUE_STRING:
+                {
+                    QStringList result;
+                    for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
+                        result.append(QString::fromUtf8(gconf_value_get_string((GConfValue *)elts->data)));
+                    return QVariant(result);
+                }
+            default:
+                {
+                    QList<QVariant> result;
+                    for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
+                        result.append(convertValue((GConfValue *)elts->data));
+                    return QVariant(result);
+                }
+            }
+        case GCONF_VALUE_SCHEMA:
+        default:
+            return QVariant();
+        }
+    }
+}
+
+
+/* Fast version of GConfItem, allows reading subtree at a time */
+class GConfItemFast {
+public:
+  GConfItemFast(const QString &k) : key(k) {}
+  QHash<QString,QVariant> getEntries() const;
+
+private:
+  QString key;
+};
+
+#define withClient(c) for (GConfClient *c = gconf_client_get_default(); c; c=0)
+
+
+QHash<QString,QVariant> GConfItemFast::getEntries() const
+{
+    QHash<QString,QVariant> children;
+
+    withClient(client) {
+        QByteArray k = key.toUtf8();
+        GSList *entries = gconf_client_all_entries(client, k.data(), NULL);
+        for (GSList *e = entries; e; e = e->next) {
+	    char *key_name = strrchr(((GConfEntry *)e->data)->key, '/');
+	    if (!key_name)
+	        key_name = ((GConfEntry *)e->data)->key;
+	    else
+	        key_name++;
+	    QString key(convertKey(key_name));
+	    QVariant value = convertValue(((GConfEntry *)e->data)->value);
+	    gconf_entry_unref((GConfEntry *)e->data);
+	    //qDebug()<<"key="<<key<<"value="<<value;
+	    children.insert(key, value);
+        }
+        g_slist_free (entries);
+    }
+
+    return children;
+}
+
+
+
+class NetworkProxyFactory : QNetworkProxyFactory {
+public:
+    NetworkProxyFactory() { }
+    QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery());
+};
+
+
+QList<QNetworkProxy> NetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query)
+{
+    ProxyConf proxy_conf;
+
+    QList<QNetworkProxy> result = proxy_conf.flush(query);
+    if (result.isEmpty())
+        result << QNetworkProxy::NoProxy;
+
+    return result;
+}
+
+
+class ProxyConfPrivate {
+private:
+    // proxy values from gconf
+    QString mode;
+    bool use_http_host;
+    QString autoconfig_url;
+    QString http_proxy;
+    quint16 http_port;
+    QList<QVariant> ignore_hosts;
+    QString secure_host;
+    quint16 secure_port;
+    QString ftp_host;
+    quint16 ftp_port;
+    QString socks_host;
+    quint16 socks_port;
+    QString rtsp_host;
+    quint16 rtsp_port;
+
+    bool isHostExcluded(const QString &host);
+
+public:
+    QString prefix;
+    QString http_prefix;
+
+    void readProxyData();
+    QList<QNetworkProxy> flush(const QNetworkProxyQuery &query);
+};
+
+
+static QHash<QString,QVariant> getValues(const QString& prefix)
+{
+    GConfItemFast item(prefix);
+    return item.getEntries();
+}
+
+static QHash<QString,QVariant> getHttpValues(const QString& prefix)
+{
+    GConfItemFast item(prefix);
+    return item.getEntries();
+}
+
+#define GET(var, type)				\
+  do {						\
+    QVariant v = values.value(#var);		\
+    if (v.isValid())				\
+      var = v.to##type ();			\
+  } while(0)
+
+#define GET_HTTP(var, name, type)		\
+  do {						\
+    QVariant v = httpValues.value(#name);	\
+    if (v.isValid())				\
+      var = v.to##type ();			\
+  } while(0)
+
+
+void ProxyConfPrivate::readProxyData()
+{
+    QHash<QString,QVariant> values = getValues(prefix);
+    QHash<QString,QVariant> httpValues = getHttpValues(http_prefix);
+
+    //qDebug()<<"values="<<values;
+
+    /* Read the proxy settings from /system/proxy* */
+    GET_HTTP(http_proxy, host, String);
+    GET_HTTP(http_port, port, Int);
+    GET_HTTP(ignore_hosts, ignore_hosts, List);
+
+    GET(mode, String);
+    GET(autoconfig_url, String);
+    GET(secure_host, String);
+    GET(secure_port, Int);
+    GET(ftp_host, String);
+    GET(ftp_port, Int);
+    GET(socks_host, String);
+    GET(socks_port, Int);
+    GET(rtsp_host, String);
+    GET(rtsp_port, Int);
+
+    if (http_proxy.isEmpty())
+        use_http_host = false;
+    else
+        use_http_host = true;
+}
+
+
+bool ProxyConfPrivate::isHostExcluded(const QString &host)
+{
+    if (host.isEmpty())
+        return true;
+
+    if (ignore_hosts.isEmpty())
+        return false;
+
+    QHostAddress ipAddress;
+    bool isIpAddress = ipAddress.setAddress(host);
+
+    foreach (QVariant h, ignore_hosts) {
+        QString entry = h.toString();
+        if (isIpAddress && ipAddress.isInSubnet(QHostAddress::parseSubnet(entry))) {
+            return true;  // excluded
+        } else {
+            // do wildcard matching
+            QRegExp rx(entry, Qt::CaseInsensitive, QRegExp::Wildcard);
+            if (rx.exactMatch(host))
+                return true;
+        }
+    }
+
+    // host was not excluded
+    return false;
+}
+
+
+QList<QNetworkProxy> ProxyConfPrivate::flush(const QNetworkProxyQuery &query)
+{
+    QList<QNetworkProxy> result;
+
+#if 0
+    qDebug()<<"http_proxy" << http_proxy;
+    qDebug()<<"http_port" << http_port;
+    qDebug()<<"ignore_hosts" << ignore_hosts;
+    qDebug()<<"use_http_host" << use_http_host;
+    qDebug()<<"mode" << mode;
+    qDebug()<<"autoconfig_url" << autoconfig_url;
+    qDebug()<<"secure_host" << secure_host;
+    qDebug()<<"secure_port" << secure_port;
+    qDebug()<<"ftp_host" << ftp_host;
+    qDebug()<<"ftp_port" << ftp_port;
+    qDebug()<<"socks_host" << socks_host;
+    qDebug()<<"socks_port" << socks_port;
+    qDebug()<<"rtsp_host" << rtsp_host;
+    qDebug()<<"rtsp_port" << rtsp_port;
+#endif
+
+    if (isHostExcluded(query.peerHostName()))
+        return result;          // no proxy for this host
+
+    if (mode == "auto") {
+        // TODO: pac currently not supported, fix me
+        return result;
+    }
+
+    if (mode == "manual") {
+        bool isHttps = false;
+	QString protocol = query.protocolTag().toLower();
+
+	// try the protocol-specific proxy
+	QNetworkProxy protocolSpecificProxy;
+
+	if (protocol == QLatin1String("ftp")) {
+	    if (!ftp_host.isEmpty()) {
+	        protocolSpecificProxy.setType(QNetworkProxy::FtpCachingProxy);
+		protocolSpecificProxy.setHostName(ftp_host);
+		protocolSpecificProxy.setPort(ftp_port);
+	    }
+	} else if (protocol == QLatin1String("http")) {
+	    if (!http_proxy.isEmpty()) {
+	        protocolSpecificProxy.setType(QNetworkProxy::HttpProxy);
+		protocolSpecificProxy.setHostName(http_proxy);
+		protocolSpecificProxy.setPort(http_port);
+	    }
+	} else if (protocol == QLatin1String("https")) {
+	    isHttps = true;
+	    if (!secure_host.isEmpty()) {
+	        protocolSpecificProxy.setType(QNetworkProxy::HttpProxy);
+		protocolSpecificProxy.setHostName(secure_host);
+		protocolSpecificProxy.setPort(secure_port);
+	    }
+	}
+
+	if (protocolSpecificProxy.type() != QNetworkProxy::DefaultProxy)
+	    result << protocolSpecificProxy;
+
+
+        if (!socks_host.isEmpty()) {
+	    QNetworkProxy proxy;
+	    proxy.setType(QNetworkProxy::Socks5Proxy);
+	    proxy.setHostName(socks_host);
+	    proxy.setPort(socks_port);
+	    result << proxy;
+	}
+
+
+	// Add the HTTPS proxy if present (and if we haven't added yet)
+	if (!isHttps) {
+	    QNetworkProxy https;
+	    if (!secure_host.isEmpty()) {
+	        https.setType(QNetworkProxy::HttpProxy);
+		https.setHostName(secure_host);
+		https.setPort(secure_port);
+	    }
+
+	    if (https.type() != QNetworkProxy::DefaultProxy &&
+		https != protocolSpecificProxy)
+	        result << https;
+	}
+    }
+
+    return result;
+}
+
+
+ProxyConf::ProxyConf()
+    : d_ptr(new ProxyConfPrivate)
+{
+    g_type_init();
+    d_ptr->prefix = CONF_PROXY;
+    d_ptr->http_prefix = HTTP_PROXY;
+}
+
+ProxyConf::~ProxyConf()
+{
+    delete d_ptr;
+}
+
+
+QList<QNetworkProxy> ProxyConf::flush(const QNetworkProxyQuery &query)
+{
+    d_ptr->readProxyData();
+    return d_ptr->flush(query);
+}
+
+
+static int refcount = 0;
+static QReadWriteLock lock;
+
+void ProxyConf::update()
+{
+    QWriteLocker locker(&lock);
+    NetworkProxyFactory *factory = new NetworkProxyFactory();
+    QNetworkProxyFactory::setApplicationProxyFactory((QNetworkProxyFactory*)factory);
+    refcount++;
+}
+
+
+void ProxyConf::clear(void)
+{
+    QWriteLocker locker(&lock);
+    refcount--;
+    if (refcount == 0)
+        QNetworkProxyFactory::setApplicationProxyFactory(NULL);
+
+    if (refcount<0)
+        refcount = 0;
+}
+
+
+} // namespace Maemo
diff --git a/src/plugins/bearer/icd/proxyconf.h b/src/plugins/bearer/icd/proxyconf.h
new file mode 100644
index 0000000..884cc5c
--- /dev/null
+++ b/src/plugins/bearer/icd/proxyconf.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef PROXYCONF_H
+#define PROXYCONF_H
+
+#include <QString>
+#include <QNetworkProxy>
+
+namespace Maemo {
+
+class ProxyConfPrivate;
+class ProxyConf {
+private:
+    ProxyConfPrivate *d_ptr;
+
+public:
+    ProxyConf();
+    virtual ~ProxyConf();
+
+    QList<QNetworkProxy> flush(const QNetworkProxyQuery &query = QNetworkProxyQuery());  // read the proxies from db
+
+    /* Note that for each update() call there should be corresponding
+     * clear() call because the ProxyConf class implements a reference
+     * counting mechanism. The factory is removed only when there is
+     * no one using the factory any more.
+     */
+    static void update(void);          // this builds QNetworkProxy factory
+    static void clear(void);           // this removes QNetworkProxy factory
+};
+
+} // namespace Maemo
+
+#endif
diff --git a/src/plugins/bearer/icd/qicdengine.cpp b/src/plugins/bearer/icd/qicdengine.cpp
index 3264f15..bdf4e2e 100644
--- a/src/plugins/bearer/icd/qicdengine.cpp
+++ b/src/plugins/bearer/icd/qicdengine.cpp
@@ -43,7 +43,7 @@
 #include "qnetworksession_impl.h"
 
 #include <wlancond.h>
-#include <libicd-network-wlan-dev.h>
+#include <wlan-utils.h>
 #include <iapconf.h>
 #include <iapmonitor.h>
 
@@ -67,6 +67,10 @@ QString IcdNetworkConfigurationPrivate::bearerTypeName() const
     return iap_type;
 }
 
+/******************************************************************************/
+/** IapAddTimer specific                                                      */
+/******************************************************************************/
+
 /* The IapAddTimer is a helper class that makes sure we update
  * the configuration only after all db additions to certain
  * iap are finished (after a certain timeout)
@@ -162,6 +166,9 @@ void IapAddTimer::del(QString& iap_id)
     }
 }
 
+/******************************************************************************/
+/** IAPMonitor specific                                                       */
+/******************************************************************************/
 
 class IapMonitor : public Maemo::IAPMonitor
 {
@@ -216,6 +223,11 @@ void IapMonitor::iapRemoved(const QString &iap_id)
     d->deleteConfiguration(id);
 }
 
+
+/******************************************************************************/
+/** QIcdEngine implementation                                                 */
+/******************************************************************************/
+
 QIcdEngine::QIcdEngine(QObject *parent)
 :   QBearerEngine(parent), iapMonitor(0), m_dbusInterface(0),
     firstUpdate(true), m_scanGoingOn(false)
diff --git a/src/plugins/bearer/icd/qicdengine.h b/src/plugins/bearer/icd/qicdengine.h
index 0d5ba27..d528f15 100644
--- a/src/plugins/bearer/icd/qicdengine.h
+++ b/src/plugins/bearer/icd/qicdengine.h
@@ -46,7 +46,7 @@
 
 #include <QtCore/qtimer.h>
 
-#include <maemo_icd.h>
+#include "maemo_icd.h"
 
 QT_BEGIN_NAMESPACE
 
diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp
index 787cc55..2ed0b88 100644
--- a/src/plugins/bearer/icd/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp
@@ -60,13 +60,16 @@ QDBusArgument &operator<<(QDBusArgument &argument,
                           const ICd2DetailsDBusStruct &icd2)
 {
     argument.beginStructure();
+
     argument << icd2.serviceType;
     argument << icd2.serviceAttributes;
     argument << icd2.setviceId;
     argument << icd2.networkType;
     argument << icd2.networkAttributes;
     argument << icd2.networkId;
+
     argument.endStructure();
+
     return argument;
 }
 
@@ -74,13 +77,16 @@ const QDBusArgument &operator>>(const QDBusArgument &argument,
                                 ICd2DetailsDBusStruct &icd2)
 {
     argument.beginStructure();
+
     argument >> icd2.serviceType;
     argument >> icd2.serviceAttributes;
     argument >> icd2.setviceId;
     argument >> icd2.networkType;
     argument >> icd2.networkAttributes;
     argument >> icd2.networkId;
+
     argument.endStructure();
+
     return argument;
 }
 
@@ -104,9 +110,12 @@ QDBusArgument &operator<<(QDBusArgument &argument,
                           const ICd2DetailsList &detailsList)
 {
      argument.beginArray(qMetaTypeId<ICd2DetailsDBusStruct>());
+
      for (int i = 0; i < detailsList.count(); ++i)
          argument << detailsList[i];
+
      argument.endArray();
+
      return argument;
 }
 
@@ -144,7 +153,8 @@ void QNetworkSessionPrivateImpl::iapStateChanged(const QString& iapid, uint icd_
 
 void QNetworkSessionPrivateImpl::cleanupSession(void)
 {
-    QObject::disconnect(q, SIGNAL(stateChanged(QNetworkSession::State)), this, SLOT(updateProxies(QNetworkSession::State)));
+    QObject::disconnect(q, SIGNAL(stateChanged(QNetworkSession::State)),
+                        this, SLOT(updateProxies(QNetworkSession::State)));
 }
 
 
diff --git a/src/plugins/bearer/icd/wlan-utils.h b/src/plugins/bearer/icd/wlan-utils.h
new file mode 100644
index 0000000..1d9e89d
--- /dev/null
+++ b/src/plugins/bearer/icd/wlan-utils.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef WLAN_UTILS_H
+#define WLAN_UTILS_H
+
+/** Originally taken from: libicd-network-wlan-dev.h*/
+
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <wlancond.h>
+#include <icd/network_api_defines.h>
+
+/* capability bits inside network attributes var */
+#define NWATTR_WPS_MASK       0x0000F000
+#define NWATTR_ALGORITHM_MASK 0x00000F00
+#define NWATTR_WPA2_MASK      0x00000080
+#define NWATTR_METHOD_MASK    0x00000078
+#define NWATTR_MODE_MASK      0x00000007
+
+#define CAP_LOCALMASK         0x0FFFE008
+
+/* how much to shift between capability and network attributes var */
+#define CAP_SHIFT_WPS        3
+#define CAP_SHIFT_ALGORITHM 20
+#define CAP_SHIFT_WPA2       1
+#define CAP_SHIFT_METHOD     1
+#define CAP_SHIFT_MODE       0
+#define CAP_SHIFT_ALWAYS_ONLINE 26
+
+/* ------------------------------------------------------------------------- */
+/* From combined to capability */
+static inline dbus_uint32_t nwattr2cap(guint nwattrs, dbus_uint32_t *cap)
+{
+	guint oldval = *cap;
+
+	*cap &= CAP_LOCALMASK; /* clear old capabilities */
+	*cap |=
+		((nwattrs & ICD_NW_ATTR_ALWAYS_ONLINE) >> CAP_SHIFT_ALWAYS_ONLINE) |
+		((nwattrs & NWATTR_WPS_MASK) >> CAP_SHIFT_WPS) |
+		((nwattrs & NWATTR_ALGORITHM_MASK) << CAP_SHIFT_ALGORITHM) |
+		((nwattrs & NWATTR_WPA2_MASK) << CAP_SHIFT_WPA2) |
+		((nwattrs & NWATTR_METHOD_MASK) << CAP_SHIFT_METHOD) |
+		(nwattrs & NWATTR_MODE_MASK);
+
+	return oldval;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* From capability to combined */
+static inline guint cap2nwattr(dbus_uint32_t cap, guint *nwattrs)
+{
+	guint oldval = *nwattrs;
+
+	*nwattrs &= ~ICD_NW_ATTR_LOCALMASK; /* clear old capabilities */
+        *nwattrs |=
+#ifdef WLANCOND_WPS_MASK
+		((cap & WLANCOND_WPS_MASK) << CAP_SHIFT_WPS) |
+#endif
+		((cap & (WLANCOND_ENCRYPT_ALG_MASK |
+			 WLANCOND_ENCRYPT_GROUP_ALG_MASK)) >> CAP_SHIFT_ALGORITHM)|
+		((cap & WLANCOND_ENCRYPT_WPA2_MASK) >> CAP_SHIFT_WPA2) |
+		((cap & WLANCOND_ENCRYPT_METHOD_MASK) >> CAP_SHIFT_METHOD) |
+		(cap & WLANCOND_MODE_MASK);
+
+	return oldval;
+}
+
+
+#endif
-- 
cgit v0.12