summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2012-12-16 02:34:47 +0100
committerSlávek Banko <slavek.banko@axis.cz>2012-12-16 02:34:47 +0100
commitde3145b4cc657c6b99edd353d21a5ddc9b8a9316 (patch)
treebf988a78a7705ec47d72bd291c315015c746f550
parent75279997a1ebadf976c4684709e4312fdfa23c26 (diff)
downloadtde-de3145b4cc657c6b99edd353d21a5ddc9b8a9316.tar.gz
tde-de3145b4cc657c6b99edd353d21a5ddc9b8a9316.zip
Switch scripts into its own GIT repository
Switch main/thirdparty into its own GIT repository
-rw-r--r--.gitmodules6
m---------main/thirdparty0
-rw-r--r--main/thirdparty/libreoffice/3.3.2/patches/NOTES3
-rw-r--r--main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity-debian.diff368
-rw-r--r--main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity.diff15796
-rw-r--r--main/thirdparty/libreoffice/3.3.3/patches/NOTES3
-rw-r--r--main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity-debian.diff368
-rw-r--r--main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity.diff15796
-rw-r--r--main/thirdparty/libreoffice/git_10_28_2011/patches/libreoffice-trinity.diff16171
m---------scripts0
-rw-r--r--scripts/README2
-rwxr-xr-xscripts/commit_all_submodules48
-rwxr-xr-xscripts/switch_all_submodules_to_head_and_clean60
-rwxr-xr-xscripts/update_all_submodules70
-rw-r--r--submodules2
15 files changed, 8 insertions, 48685 deletions
diff --git a/.gitmodules b/.gitmodules
index 7868b4899..0c9aac5a4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
+[submodule "scripts"]
+ path = scripts
+ url = http://system@scm.trinitydesktop.org/scm/git/scripts
[submodule "main/dependencies/qt3"]
path = main/dependencies/qt3
url = http://system@scm.trinitydesktop.org/scm/git/qt3
@@ -361,3 +364,6 @@
[submodule "main/applications/yakuake"]
path = main/applications/yakuake
url = http://system@scm.trinitydesktop.org/scm/git/yakuake
+[submodule "main/thirdparty"]
+ path = main/thirdparty
+ url = http://system@scm.trinitydesktop.org/scm/git/thirdparty
diff --git a/main/thirdparty b/main/thirdparty
new file mode 160000
+Subproject a512a0bb01959fcd8fecbc79b4f54ec4ca86806
diff --git a/main/thirdparty/libreoffice/3.3.2/patches/NOTES b/main/thirdparty/libreoffice/3.3.2/patches/NOTES
deleted file mode 100644
index 15a4f25d6..000000000
--- a/main/thirdparty/libreoffice/3.3.2/patches/NOTES
+++ /dev/null
@@ -1,3 +0,0 @@
-This patchset is intended for Debian and has not been tested on other systems, however the patch libreoffice-trinity.diff should apply cleanly to a stock LibreOffice source tree and function properly if enabled.
-
-After patch application, you will need to rerun autoconf from within the libreoffice-build directory in order to apply the changes made to configure.in
diff --git a/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity-debian.diff b/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity-debian.diff
deleted file mode 100644
index a28748b3f..000000000
--- a/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity-debian.diff
+++ /dev/null
@@ -1,368 +0,0 @@
-diff -urN debian/changelog debian/changelog
---- debian/changelog 2011-04-19 17:25:22.000000000 -0500
-+++ debian/changelog 2011-08-20 21:10:45.000000000 -0500
-@@ -1,3 +1,9 @@
-+libreoffice (1:3.3.2-1ubuntu5~build1~natty) natty; urgency=low
-+
-+ * Enable TDE module
-+
-+ -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Sat, 20 Aug 2011 15:14:00 -0600
-+
- libreoffice (1:3.3.2-1ubuntu4) natty; urgency=low
-
- * fix corrupted startcenter desktop file (LP: #765010)
-diff -urN debian/control debian/control
---- debian/control 2011-04-19 17:25:51.000000000 -0500
-+++ debian/control 2011-08-20 21:14:56.000000000 -0500
-@@ -4,7 +4,7 @@
- Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
- XSBC-Original-Maintainer: Debian LibreOffice Maintainers <debian-openoffice@lists.debian.org>
- Uploaders: Rene Engelhard <rene@debian.org>
--Build-Depends: lsb-release, bzip2, bison, flex | flex-old, libxaw7-dev, unzip, zip, autoconf, automake, sharutils, pkg-config, libfontconfig1-dev, libc0.1 (>= 2.10.2-7) [kfreebsd-i386 kfreebsd-amd64], zlib1g-dev, libfreetype6-dev, libx11-dev, libsm-dev, libxt-dev, libxext-dev, libxtst-dev, libice-dev, libsane-dev, libxrender-dev, libcups2-dev, libarchive-zip-perl, libpng12-dev, libjpeg-dev, libxml2-dev, libexpat1-dev, fastjar, xsltproc, libxkbfile-dev, libxinerama-dev, x11proto-render-dev, unixodbc-dev (>= 2.2.11), libxml-parser-perl, gperf, libpq-dev, po-debconf, bc, wget | curl, g++ (>> 4.3.0) [s390], gcc (>> 4.3.0) [s390], dpkg-dev (>= 1.15.1), libgl1-mesa-dev [!armel !mips !mipsel], libglu1-mesa-dev [!armel !mips !mipsel], libpoppler-dev (>= 0.8.0), libgraphite-dev, libtextcat-dev (>= 2.2-8), libcurl4-gnutls-dev, libssl-dev, libdb-dev, python (>= 2.6.6-3+squeeze4), python-dev, debhelper (>= 7.2.3~), libcppunit-dev (>= 1.12), openjdk-6-jdk [alpha amd64 armel armhf i386 powerpc powerpcspe ppc64 s390 s390x sparc], gcj-native-helper [!powerpc !powerpcspe !ppc64], libgcj-common (>= 1:4.4.1) [!powerpc !powerpcspe !ppc64], ant (>= 1.7.0), ant-optional (>= 1.7.0), libcommons-codec-java, libcommons-httpclient-java, libcommons-lang-java, libcommons-logging-java, libservlet2.5-java, libbase-java-openoffice.org [!armel], libsac-java [!armel], libxml-java-openoffice.org [!armel], libflute-java-openoffice.org [!armel], libpentaho-reporting-flow-engine-java-openoffice.org [!armel], liblayout-java-openoffice.org [!armel], libloader-java-openoffice.org [!armel], libformula-java-openoffice.org [!armel], librepository-java-openoffice.org [!armel], libfonts-java-openoffice.org [!armel], libserializer-java-openoffice.org [!armel], libcommons-logging-java, libservlet2.5-java, xulrunner-dev | firefox-dev, libnss3-dev (>= 3.12.3), dmake (>= 1:4.11), mono-devel (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libmono-dev (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], mono-utils (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], cli-common-dev (>= 0.5.7) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libhunspell-dev (>= 1.1.5-2), libhyphen-dev (>= 2.4), libstlport4.6-dev (>= 4.6.2-3) [i386], libboost-dev (>= 1.38), libmdds-dev, libvigraimpex-dev, libwpd-dev (>= 0.9.0), libmythes-dev (>= 2:1.2), libwps-dev (>= 0.2.0), libwpg-dev (>= 0.2.0), libicu-dev (>= 4.0), libxslt1-dev, libcairo2-dev, kdelibs5-dev (>= 4:4.3.4), libqt4-dev (>= 4.5), libmysqlclient-dev, libmysqlcppconn-dev (>= 1.1.0~r791), libxrandr-dev, libhsqldb-java (>> 1.8.0.10), bsh (>= 2.0b4), liblpsolve55-dev (>= 5.5.0.13-5+b1), lp-solve (>= 5.5.0.13-5+b1), libsuitesparse-dev (>= 1:3.4.0), libdbus-glib-1-dev (>= 0.60), libgstreamer-plugins-base0.10-dev, libneon27-gnutls-dev, librdf0-dev (>= 1.0.8), libgtk2.0-dev (>= 2.10), libgnomevfs2-dev, libgconf2-dev, libldap2-dev
-+Build-Depends: lsb-release, bzip2, bison, flex | flex-old, libxaw7-dev, unzip, zip, autoconf, automake, sharutils, pkg-config, libfontconfig1-dev, libc0.1 (>= 2.10.2-7) [kfreebsd-i386 kfreebsd-amd64], zlib1g-dev, libfreetype6-dev, libx11-dev, libsm-dev, libxt-dev, libxext-dev, libxtst-dev, libice-dev, libsane-dev, libxrender-dev, libcups2-dev, libarchive-zip-perl, libpng12-dev, libjpeg-dev, libxml2-dev, libexpat1-dev, fastjar, xsltproc, libxkbfile-dev, libxinerama-dev, x11proto-render-dev, unixodbc-dev (>= 2.2.11), libxml-parser-perl, gperf, libpq-dev, po-debconf, bc, wget | curl, g++ (>> 4.3.0) [s390], gcc (>> 4.3.0) [s390], dpkg-dev (>= 1.15.1), libgl1-mesa-dev [!armel !mips !mipsel], libglu1-mesa-dev [!armel !mips !mipsel], libpoppler-dev (>= 0.8.0), libgraphite-dev, libtextcat-dev (>= 2.2-8), libcurl4-gnutls-dev, libssl-dev, libdb-dev, python (>= 2.6.6-3+squeeze4), python-dev, debhelper (>= 7.2.3~), libcppunit-dev (>= 1.12), openjdk-6-jdk [alpha amd64 armel armhf i386 powerpc powerpcspe ppc64 s390 s390x sparc], gcj-native-helper [!powerpc !powerpcspe !ppc64], libgcj-common (>= 1:4.4.1) [!powerpc !powerpcspe !ppc64], ant (>= 1.7.0), ant-optional (>= 1.7.0), libcommons-codec-java, libcommons-httpclient-java, libcommons-lang-java, libcommons-logging-java, libservlet2.5-java, libbase-java-openoffice.org [!armel], libsac-java [!armel], libxml-java-openoffice.org [!armel], libflute-java-openoffice.org [!armel], libpentaho-reporting-flow-engine-java-openoffice.org [!armel], liblayout-java-openoffice.org [!armel], libloader-java-openoffice.org [!armel], libformula-java-openoffice.org [!armel], librepository-java-openoffice.org [!armel], libfonts-java-openoffice.org [!armel], libserializer-java-openoffice.org [!armel], libcommons-logging-java, libservlet2.5-java, xulrunner-dev | firefox-dev, libnss3-dev (>= 3.12.3), dmake (>= 1:4.11), mono-devel (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libmono-dev (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], mono-utils (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], cli-common-dev (>= 0.5.7) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libhunspell-dev (>= 1.1.5-2), libhyphen-dev (>= 2.4), libstlport4.6-dev (>= 4.6.2-3) [i386], libboost-dev (>= 1.38), libmdds-dev, libvigraimpex-dev, libwpd-dev (>= 0.9.0), libmythes-dev (>= 2:1.2), libwps-dev (>= 0.2.0), libwpg-dev (>= 0.2.0), libicu-dev (>= 4.0), libxslt1-dev, libcairo2-dev, kdelibs4-trinity-dev, libqt4-dev (>= 4.5), libmysqlclient-dev, libmysqlcppconn-dev (>= 1.1.0~r791), libxrandr-dev, libhsqldb-java (>> 1.8.0.10), bsh (>= 2.0b4), liblpsolve55-dev (>= 5.5.0.13-5+b1), lp-solve (>= 5.5.0.13-5+b1), libsuitesparse-dev (>= 1:3.4.0), libdbus-glib-1-dev (>= 0.60), libgstreamer-plugins-base0.10-dev, libneon27-gnutls-dev, librdf0-dev (>= 1.0.8), libgtk2.0-dev (>= 2.10), libgnomevfs2-dev, libgconf2-dev, libldap2-dev
- Build-Depends-Indep: fdupes, xml-core, imagemagick, fontforge
- Build-Conflicts: libcairo2 (= 1.4.8-1), libxul-dev (= 1.8.0.13~pre070720-0etch1), gjdoc (= 0.7.8-2), libc6-dev (= 2.6.1-3) [i386 amd64], libc6-dev (= 2.6.1-4) [i386 amd64], nvidia-glx-dev, nvidia-glx-legacy-dev, libmono-dev (= 1.2.6+dfsg-1), libmono-dev (= 1.2.6+dfsg-2), libmono-dev (= 1.2.6+dfsg-3), libmono-dev (= 1.2.6+dfsg-4), libmono-dev (= 2.4+dfsg-2) [sparc], gcj-4.2 (= 4.2.2-6), flex (= 2.5.34-1) [amd64], libboost1.39-dev (<< 1.39.0-2), graphicsmagick-imagemagick-compat (<< 1.3.9~), ant (= 1.8.0-1) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-2) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-3) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], base-files (= 6.0), base-files (= 6.0squeeze1), libhsqldb-java (>= 1.8.1~)
- Standards-Version: 3.9.1
-@@ -18,7 +18,7 @@
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Depends: libreoffice-core (= ${binary:Version}), libreoffice-writer, libreoffice-calc, libreoffice-impress, libreoffice-draw, libreoffice-math, libreoffice-base [!armel], libreoffice-report-builder-bin [!armel], ttf-dejavu, ttf-sil-gentium-basic, libreoffice-filter-mobiledev, ${lucene-depends}, ${java-common-depends}, ${misc:Depends}
- Recommends: ttf-liberation | ttf-mscorefonts-installer
--Suggests: hunspell-dictionary, myspell-dictionary, libreoffice-help-${help-l10n-virtual-version}, menu, unixodbc, cups-bsd, libsane, hyphen-hyphenation-patterns, mythes-thesaurus, libxrender1, libgl1, libreoffice-gnome | libreoffice-kde, iceweasel | firefox | icedove | thunderbird | iceape-browser | mozilla-browser, ${java-runtime-depends}, openclipart-libreoffice, pstoedit, imagemagick | graphicsmagick-imagemagick-compat, libpaper-utils, ${gstreamer-plugins-suggests}, ${libldap-suggests}, ${ooo-binfilter-dep}, ${ooo-officebean-dep}
-+Suggests: hunspell-dictionary, myspell-dictionary, libreoffice-help-${help-l10n-virtual-version}, menu, unixodbc, cups-bsd, libsane, hyphen-hyphenation-patterns, mythes-thesaurus, libxrender1, libgl1, libreoffice-gnome | libreoffice-kde | libreoffice-trinity, iceweasel | firefox | icedove | thunderbird | iceape-browser | mozilla-browser, ${java-runtime-depends}, openclipart-libreoffice, pstoedit, imagemagick | graphicsmagick-imagemagick-compat, libpaper-utils, ${gstreamer-plugins-suggests}, ${libldap-suggests}, ${ooo-binfilter-dep}, ${ooo-officebean-dep}
- Description: office productivity suite
- LibreOffice is a full-featured office productivity suite that provides
- a near drop-in replacement for Microsoft(R) Office.
-@@ -45,6 +45,7 @@
- QuickStarter for GNOMEs notification are
- * libreoffice-gnome: GNOME VFS, GConf backend
- * libreoffice-kde: KDE UI Plugin and KDE File Picker support
-+ * libreoffice-trinity: TDE UI Plugin and TDE File Picker support
- * menu: Will add libreoffice menu entries for every Debian window manager.
- * unixodbc: ODBC database support
- * cups-bsd: Allows LibreOffice to detect your CUPS printer queues
-@@ -91,7 +92,7 @@
- Package: libreoffice-core
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Depends: libreoffice-common (>> ${base-version}), ttf-opensymbol (>= 1:3.0), ${shlibs:Depends}, ure (>= 1.5.1+OOo3.1.1-15), fontconfig, ${mozilla-nss-depends}, ${misc:Depends}
--Conflicts: libreoffice-calc (<< ${binary:Version}), libreoffice-writer (<< ${binary:Version}), libreoffice-impress (<< ${binary:Version}), libreoffice-draw (<< ${binary:Version}), libreoffice-base (<< ${binary:Version}), libreoffice-gtk (<< ${binary:Version}), libreoffice-gnome (<< ${binary:Version}), libreoffice-kde (<< ${binary:Version}), libreoffice-evolution (<< ${binary:Version}), libreoffice-filter-so52 (<< ${binary:Version}), libreoffice-officebean (<< ${binary:Version}), libreoffice-dev (<< ${binary:Version}), libcairo2 (= 1.4.8-1), libicu38 (= 3.8~d01-1), cli-uno-bridge (<< 1:3.0.0~dev300m22), cacao-oj6-jre, mozilla-plugin-vlc (<< 1.0)
-+Conflicts: libreoffice-calc (<< ${binary:Version}), libreoffice-writer (<< ${binary:Version}), libreoffice-impress (<< ${binary:Version}), libreoffice-draw (<< ${binary:Version}), libreoffice-base (<< ${binary:Version}), libreoffice-gtk (<< ${binary:Version}), libreoffice-gnome (<< ${binary:Version}), libreoffice-kde (<< ${binary:Version}), libreoffice-trinity (<< ${binary:Version}), libreoffice-evolution (<< ${binary:Version}), libreoffice-filter-so52 (<< ${binary:Version}), libreoffice-officebean (<< ${binary:Version}), libreoffice-dev (<< ${binary:Version}), libcairo2 (= 1.4.8-1), libicu38 (= 3.8~d01-1), cli-uno-bridge (<< 1:3.0.0~dev300m22), cacao-oj6-jre, mozilla-plugin-vlc (<< 1.0)
- Breaks: myspell-ru (<< 0.99g5-8.1), myspell-lv (<< 0.7.3-3.1), myspell-et (<< 1:20030606-12.1), myspell-fi (<< 0.7-17.2), myspell-cs-cz (<< 20040229-4.1), myspell-el-gr (<< 0.3-1.1), myspell-nn (<< 2.0.10-3.1), myspell-nb (<< 2.0.10-3.1), hunspell-ar (<< 0.0.0+20080110-1.1), myspell-hu (<< 0.99.4-1.2), hunspell-gl-es (<< 2.2a-6), myspell-gv (<< 0.50-8), myspell-en-au (<< 2.1-5), myspell-fa (<< 0.20070816-2), hunspell-uz (<< 0.6-3.1), hunspell-ko (<< 0.3.3-1), hunspell-se (<< 1.0~beta6.20081222-1.1), hunspell-de-med (<< 20090825-1), hunspell-en-us (<< 20070829-3), myspell-sv-se (<< 1.3.8-6-2.2), myspell-sk (<< 0.5.5a-2.1), myspell-fo (<< 0.2.36-3), myspell-nl (<< 1:1.10-3), myspell-pt-br (<< 2009.03.30-1.1), myspell-pl (<< 20090830-1), myspell-pt-pt (<< 20090309-1.1), myspell-ga (<< 2.0-19), myspell-gd (<< 0.50-7), myspell-ku (<< 0.20.0-1.1), myspell-hr (<< 20060617-2), myspell-fr-gut (<< 1:1.0-26.1), myspell-eo (<< 2.1.2000.02.25-41), myspell-de-de-oldspell (<< 1:2-25.1), myspell-da (<< 1.6.18-1.1), myspell-es (<< 1.10-7), myspell-de-at (<< 20071211-2), myspell-de-ch (<< 20071211-2), myspell-de-de (<< 20071211-2), hunspell-de-at (<< 20071211-2), hunspell-de-ch (<< 20071211-2), hunspell-de-de (<< 20071211-2), myspell-ca (<< 0.6-8), myspell-tl (<< 0.4-0-5), myspell-ne (<< 1.0-4.1), myspell-fr (<< 1.4-25), myspell-hy (<< 0.10.1-1.1), myspell-en-us (<< 1:3.1.0-3), myspell-en-gb (<< 1:3.1.0-3), myspell-en-za (<< 1:3.1.0-3), myspell-af (<< 1:3.1.0-3), myspell-it (<< 1:3.1.0-3), myspell-sw (<< 1:3.1.0-3), myspell-th (<< 1:3.1.0-3), hunspell-en-ca (<< 1:3.1.0-3), hunspell-ne (<< 1:3.1.0-3), hunspell-da (<< 1:3.1.0-3), hunspell-fr (<< 1:3.1.0-3), hunspell-vi (<< 1:3.1.0-3), hunspell-hu (<< 1:3.1.0-3), hunspell-sr (<< 1:3.1.0-3), hunspell-sh (<< 1:3.1.0-3), myspell-lv (<< 0.7.3-3.1), myspell-et (<< 1:20030606-12.1), myspell-nn (<< 2.0.10-3.1), myspell-nb (<< 2.0.10-3.1)
- Provides: libreoffice-bundled
- Description: office productivity suite -- arch-dependent files
-@@ -772,7 +773,7 @@
- Section: debug
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Priority: extra
--Depends: libreoffice-core (= ${binary:Version}) | libreoffice-gcj (= ${binary:Version}) | libreoffice-dev (= ${binary:Version}) | libreoffice-gnome (= ${binary:Version}) | libreoffice-kde (= ${binary:Version}) | libreoffice-calc (= ${binary:Version}) | libreoffice-base-core (= ${binary:Version}) | libreoffice-base (= ${binary:Version}) | libreoffice-impress (= ${binary:Version}) | libreoffice-filter-binfilter (= ${binary:Version}) | libreoffice-draw (= ${binary:Version}) | libreoffice-writer (= ${binary:Version}) | python-uno (= ${binary:Version}) | cli-uno-bridge (= ${binary:Version}) | mozilla-libreoffice (= ${binary:Version}) | libreoffice-ogltrans (= ${binary:Version}), ${misc:Depends}
-+Depends: libreoffice-core (= ${binary:Version}) | libreoffice-gcj (= ${binary:Version}) | libreoffice-dev (= ${binary:Version}) | libreoffice-gnome (= ${binary:Version}) | libreoffice-kde (= ${binary:Version}) | libreoffice-trinity (= ${binary:Version}) | libreoffice-calc (= ${binary:Version}) | libreoffice-base-core (= ${binary:Version}) | libreoffice-base (= ${binary:Version}) | libreoffice-impress (= ${binary:Version}) | libreoffice-filter-binfilter (= ${binary:Version}) | libreoffice-draw (= ${binary:Version}) | libreoffice-writer (= ${binary:Version}) | python-uno (= ${binary:Version}) | cli-uno-bridge (= ${binary:Version}) | mozilla-libreoffice (= ${binary:Version}) | libreoffice-ogltrans (= ${binary:Version}), ${misc:Depends}
- Recommends: ure-dbg
- Suggests: ${dbg-dbg-suggests}
- Description: office productivity suite -- debug symbols
-@@ -834,6 +835,25 @@
- * konqueror / kmail
- * libreoffice-kab: KDE Addressbook support
-
-+Package: libreoffice-trinity
-+Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
-+Depends: libreoffice-core (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
-+Recommends: ${tde-iconset-dep}
-+Suggests: konqueror-trinity, kmail-trinity, libreoffice-kab-trinity
-+Section: kde
-+Enhances: libreoffice
-+Replaces: openoffice.org-trinity (<< 1:3.3.0~)
-+Description: office productivity suite -- TDE integration
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package contains the TDE plugin for drawing OOo's widgets with
-+ TDE/Qt and a TDEish File Picker when running under TDE.
-+ You can extend the functionality of this by installing these packages:
-+ .
-+ * konqueror-trinity / kmail-trinity
-+ * libreoffice-kab-trinity: TDE Addressbook support
-+
- Package: libreoffice-sdbc-postgresql
- Section: misc
- Architecture: alpha amd64 armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
-diff -urN debian/control.in debian/control.in
---- debian/control.in 2011-04-19 17:25:22.000000000 -0500
-+++ debian/control.in 2011-08-20 21:12:34.000000000 -0500
-@@ -180,6 +180,7 @@
- libreofficeVER-gtk (<< ${binary:Version}),
- libreofficeVER-gnome (<< ${binary:Version}),
- libreofficeVER-kde (<< ${binary:Version}),
-+ libreofficeVER-trinity (<< ${binary:Version}),
- libreofficeVER-evolution (<< ${binary:Version}),
- libreofficeVER-filter-so52 (<< ${binary:Version}),
- libreofficeVER-officebean (<< ${binary:Version}),
-diff -urN debian/control.tdeab.in debian/control.tdeab.in
---- debian/control.tdeab.in 1969-12-31 18:00:00.000000000 -0600
-+++ debian/control.tdeab.in 2011-08-20 14:31:00.000000000 -0500
-@@ -0,0 +1,14 @@
-+Package: libreofficeVER-kab-trinity
-+Architecture: %OOO_BASE_ARCHS%
-+Depends: libreofficeVER-core (= ${binary:Version}),
-+ ${shlibs:Depends},
-+ ${misc:Depends}
-+Recommends: kaddressbook-trinity
-+Conflicts: ure (<< 1.5.1+OOo3.1.1-15)
-+Description: office productivity suite -- TDE adressbook support
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package allows LibreOffice to access the TDE Addressbook.
-+ You need to install kaddressbook-trinity separately.
-+
-diff -urN debian/control.tde.in debian/control.tde.in
---- debian/control.tde.in 1969-12-31 18:00:00.000000000 -0600
-+++ debian/control.tde.in 2011-08-20 14:31:00.000000000 -0500
-@@ -0,0 +1,23 @@
-+Package: libreofficeVER-trinity
-+Architecture: %OOO_ARCHS%
-+Depends: libreofficeVER-core (= ${binary:Version}),
-+ ${shlibs:Depends},
-+ ${misc:Depends}
-+Recommends: ${tde-iconset-dep}
-+Suggests: konqueror-trinity,
-+ kmail-trinity,
-+ libreofficeVER-kab-trinity
-+Section: kde
-+Enhances: libreofficeVER
-+Replaces: openoffice.org-trinity (<< 1:3.3.0~)
-+Description: office productivity suite -- TDE integration
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package contains the TDE plugin for drawing OOo's widgets with
-+ TDE/TQt and a TDEish File Picker when running under TDE.
-+ You can extend the functionality of this by installing these packages:
-+ .
-+ * konqueror-trinity / kmail-trinity
-+ * libreoffice-kab-trinity: TDE Addressbook support
-+
-diff -urN debian/rules debian/rules
---- debian/rules 2011-04-19 17:25:22.000000000 -0500
-+++ debian/rules 2011-08-20 14:31:00.000000000 -0500
-@@ -175,7 +175,8 @@
- BUILD_CAIROCANVAS=y
- SYSTEM_STUFF += cairo
- CAIRO_FONTS_PATCH=y
--BUILD_KDE=y
-+BUILD_KDE=n
-+BUILD_TDE=y
- KDE_VER=4
- ifeq "$(BUILD_KDE)" "y"
- ifeq "$(KDE_VER)" "3"
-@@ -191,6 +192,12 @@
- QT_MINVER= (>= 4.5)
- KDELIBS_MINVER= (>= 4:4.3.4)
- endif
-+ifeq "$(BUILD_TDE)" "y"
-+ ENABLE_TDEAB=y
-+endif
-+ifeq "$(BUILD_TDE)" "y"
-+ TDELIBS_MINVER= (>= 4:3.5.12)
-+endif
- BUILD_DBG_PACKAGE=y
- SYSTEM_STUFF += beanshell
- SYSTEM_STUFF += hsqldb
-@@ -383,6 +390,7 @@
- ENABLE_MYSQLNATIVE=n
- ENABLE_EVO2=n
- ENABLE_KDEAB=n
-+ ENABLE_TDEAB=n
- ENABLE_REPORTDESIGN=n
- DEBHELPER_OPTIONS += -Nlibreoffice$(VER)-base libreoffice$(VER)-base-core
- DEBHELPER_OPTIONS += -Nlibreoffice$(VER)-evolution -Nlibreoffice$(VER)-kab
-@@ -996,6 +1004,25 @@
- endif
- endif
-
-+ifeq "$(BUILD_TDE)" "n"
-+ CONFIGURE_FLAGS+= --disable-tde
-+ CONFIGURE_FLAGS+= --with-images="$(IMAGES)"
-+else
-+ CONFIGURE_FLAGS+= --disable-kde
-+ CONFIGURE_FLAGS+= --disable-kde4
-+ CONFIGURE_FLAGS+= --enable-tde
-+ TDE_ICONSET_DEP=libreoffice$(VER)-style-crystal
-+ BUILD_DEPS += , kdelibs4-trinity-dev
-+
-+ DBG_DBG_SUGGESTS+= , kdelibs-trinity-dbg, libtqtinterface-dbg
-+
-+ ifeq "$(ENABLE_TDEAB)" "y"
-+ BUILD_DEPS += , kdepim-trinity-dev
-+ else
-+ CONFIGURE_FLAGS+= --disable-tdeab
-+ endif
-+endif
-+
- ifeq "$(ENABLE_MYSQLNATIVE)" "y"
- CONFIGURE_FLAGS += --enable-mysql-connector
- ifneq (,$(filter mysql, $(SYSTEM_STUFF)))
-@@ -1523,6 +1550,11 @@
- >> debian/control < debian/control.kde.in
- perl -pi -e 's/ libreoffice$(VER)-gnome,/ libreoffice-gnome | libreoffice$(VER)-kde,/' debian/control
- endif
-+ifeq "$(BUILD_TDE)" "y"
-+ sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
-+ >> debian/control < debian/control.tde.in
-+ perl -pi -e 's/ libreoffice$(VER)-gnome,/ libreoffice-gnome | libreoffice$(VER)-trinity,/' debian/control
-+endif
- ifeq "$(ENABLE_SDBC_POSTGRESQL)" "y"
- sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
- >> debian/control < debian/control.postgresql.in
-@@ -1539,6 +1571,10 @@
- sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
- >> debian/control < debian/control.kab.in
- endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
-+ >> debian/control < debian/control.tdeab.in
-+endif
- endif # ifeq "$(PKGSOURCE)" "libreoffice$(VER)"
-
- perl -pi -e "s,%OOO_ARCHS%,$(OOO_ARCHS),g" debian/control
-@@ -1610,6 +1646,10 @@
- perl -pi -e 's/GConf backend$$/GConf backend\n * libreoffice$(VER)-kde: KDE UI Plugin and KDE File Picker support/' debian/control
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ perl -pi -e 's/GConf backend$$/GConf backend\n * libreoffice$(VER)-trinity: TDE UI Plugin and TDE File Picker support/' debian/control
-+endif
-+
- ifeq "$(ENABLE_LDAP)" "y"
- perl -pi -e 's/paperconf$$/paperconf\n * $(LDAP_LIB): LDAP client library; needed for LibreOffice getting its\n profiles from LDAP/' debian/control
- endif
-@@ -1694,6 +1734,12 @@
- ln -sf /usr/bin/moc-qt$(KDE_VER) $(CURDIR)/debian/usr/bin/moc
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ # be sure we use the right moc, FIXME: Trinity uses its own moc
-+ mkdir -p $(CURDIR)/debian/usr/bin
-+ ln -sf /usr/bin/moc-qt$(KDE_VER) $(CURDIR)/debian/usr/bin/moc
-+endif
-+
- ifeq "$(USE_STLPORT)" "y"
- ifeq "$(USE_SYSTEM_STLPORT)" "y"
- # stlport home
-@@ -1770,6 +1816,7 @@
- dh_testdir
-
- ifeq "$(BUILD_KDE)" "n"
-+ ifeq "$(BUILD_TDE)" "n"
- # hack to tell we want crystal icons nevertheless and they should be
- # extracted...
- if ! grep -q crystal $(OOO_BUILD_TREE)/bin/setup; then \
-@@ -1778,6 +1825,7 @@
- | sed -e s/\'industrial/\'industrial\ crystal/ \
- > $(OOO_BUILD_TREE)/bin/setup && rm $(OOO_BUILD_TREE)/bin/setup.bak; \
- fi
-+ endif
- endif
-
- cd $(OOO_BUILD_TREE) ; \
-@@ -2276,6 +2324,12 @@
- -br $(PKGDIR)-core/$(OODIR)/program/services.rdb \
- -c 'vnd.sun.star.expand:$$OOO_BASE_DIR/program/libkab1.so'
- endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ debian/ure/$(OOBRANDDIR)/ure/bin/regcomp -revoke \
-+ -r $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-+ -br $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-+ -c 'vnd.sun.star.expand:$$OOO_BASE_DIR/program/libtdeab1.so'
-+endif
- ifeq "$(BUILD_BINFILTERS)" "y"
- debian/ure/$(OOBRANDDIR)/ure/bin/regcomp -revoke \
- -r $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-@@ -2362,6 +2416,49 @@
- done
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ mkdir -p -m755 $(PKGDIR)-trinity/$(OODIR)/program
-+ mkdir -p -m755 $(PKGDIR)-trinity/$(OOBRANDDIR)/program
-+ for f in fps_tde*.uno.so libvclplug_tde*.so; do \
-+ mv $(PKGDIR)-core/$(OODIR)/program/$$f $(PKGDIR)-trinity/$(OODIR)/program || exit 1 ;\
-+ done
-+ mv $(PKGDIR)-common/$(OOBRANDDIR)/program/tdefilepicker \
-+ $(PKGDIR)-trinity/$(OOBRANDDIR)/program
-+
-+ # install files for TDEs "create new" ...
-+ mkdir -p $(PKGDIR)-trinity/usr/share/templates/.source
-+ for i in $(SOURCE_TREE)/extras/source/shellnew/*; do \
-+ cp $$i $(PKGDIR)-trinity/usr/share/templates/.source/`basename $$i`; \
-+ done
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Writer/" \
-+ | sed -e "s/@EXT@/odt/" \
-+ | sed -e "s/@TYPE@/text/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odt.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Calc/" \
-+ | sed -e "s/@EXT@/ods/" \
-+ | sed -e "s/@TYPE@/spreadsheet/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.ods.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Impress/" \
-+ | sed -e "s/@EXT@/odp/" \
-+ | sed -e "s/@TYPE@/presentation/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odp.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Draw/" \
-+ | sed -e "s/@EXT@/odg/" \
-+ | sed -e "s/@TYPE@/drawing/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odg.desktop
-+endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ rm -rf $(PKGDIR)-kab-trinity
-+ mkdir -p -m755 $(PKGDIR)-kab-trinity/$(OODIR)/program
-+ for f in libtdeab*so; do \
-+ mv $(PKGDIR)-core/$(OODIR)/program/$$f $(PKGDIR)-kab-trinity/$(OODIR)/program || exit 1 ;\
-+ done
-+endif
-+
- # move the GNOME stuff which are *not* in gid_Module_Optional_Gnome
- # (which is moved into -gnome in package-ooo) into -gnome
- mkdir -p -m755 $(PKGDIR)-gnome/$(OODIR)/program
-@@ -3455,6 +3552,7 @@
- -V'ooo-binfilter-dep=$(OOO_BINFILTER_DEP)' \
- -V'ooo-officebean-dep=$(OOO_OFFICEBEAN_DEP)' \
- -V'kde-iconset-dep=$(KDE_ICONSET_DEP)' \
-+ -V'tde-iconset-dep=$(TDE_ICONSET_DEP)' \
- -V'lpsolve-dep=$(LPSOLVE_DEP)' \
- -V'gstreamer-plugins-suggests=$(GSTREAMER_PLUGINS_SUGGESTS)' \
- -V'libebook-dep=$(shell debian/scripts/get_libebook_dep.sh)' \
-diff -urN libreoffice-build/configure.in libreoffice-build/configure.in
---- libreoffice-build/configure.in 2011-03-15 11:51:33.000000000 -0500
-+++ libreoffice-build/configure.in 2011-08-21 16:24:42.000000000 -0500
-@@ -81,6 +81,11 @@
- --disable-kde4 Disables KDE4 native widgets.],
- ,)
-
-+AC_ARG_ENABLE(tde,
-+[
-+ --disable-tde Disables TDE native widgets.],
-+,)
-+
- AC_ARG_ENABLE(mono,
- [
- --enable-mono Enables the compilation of the Mono bindings.],
-@@ -928,6 +933,16 @@
- OOO_WIDGET_FLAGS="$OOO_WIDGET_FLAGS --disable-kde4"
- fi
-
-+OOO_WIDGET_FLAGS=
-+if test "$enable_tde" != "no"; then
-+ if test "z$with_win32" = "z" -a "z`uname -s`" != "zDarwin" -a "z$with_distro" != "zCrossWin32"; then
-+ OOO_WIDGET_FLAGS="--enable-tde"
-+ widget_sets="tde"
-+ fi
-+else
-+ OOO_WIDGET_FLAGS="--disable-tde"
-+fi
-+
- if test "$enable_gtk" != "no"; then
- if test "z$with_win32" = "z" -a "z`uname -s`" != "zDarwin" -a "z$with_distro" != "zCrossWin32"; then
- OOO_WIDGET_FLAGS="--enable-gtk $OOO_WIDGET_FLAGS"
diff --git a/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity.diff b/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity.diff
deleted file mode 100644
index 33a55305c..000000000
--- a/main/thirdparty/libreoffice/3.3.2/patches/libreoffice-trinity.diff
+++ /dev/null
@@ -1,15796 +0,0 @@
-diff -urN libreoffice-build/patches/dev300/apply libreoffice-build/patches/dev300/apply
---- libreoffice-build/patches/dev300/apply 2011-08-21 16:22:42.000000000 -0500
-+++ libreoffice-build/patches/dev300/apply 2011-08-21 16:24:42.000000000 -0500
-@@ -22,7 +22,7 @@
-
- LinuxCommon : Common, Defaults, FontConfigTemporaryHacks, \
- FedoraLinuxOnlyFixes, LinuxOnly, msaccess, OpenGLTransitions, \
-- CliMonoCommon, Mono, MonoComp, AddressBooks, QuickStarter, KDE4, Netbook, \
-+ CliMonoCommon, Mono, MonoComp, AddressBooks, QuickStarter, KDE4, TDE, Netbook, \
- GlobalNSPluginSupport
- MacOSXCommon : Common, Defaults
- Win32Common : Common, Defaults, Win32Only, CliMonoCommon, CliComponent, NotDebian
-@@ -184,8 +184,6 @@
- # pass $ORIGIN correctly to RPATH
- icu-4.2.1-rpath.diff. pmladek
-
--[ TemporaryHacks ]
--
- # add idl target to toplevel makefile
- makefile-idl-build.diff, noelpwer
-
-@@ -1493,6 +1491,10 @@
- # we need a good plan before, though ;-)
- split-icons-search-usr-share.diff, n#296502, pmladek
-
-+[ TDE ]
-+# add trinity integration
-+trinity-modules.diff
-+
- [ ArkOnly ]
- SectionOwner => brosenk
-
-diff -urN libreoffice-build/patches/dev300/trinity-modules.diff libreoffice-build/patches/dev300/trinity-modules.diff
---- libreoffice-build/patches/dev300/trinity-modules.diff 1969-12-31 18:00:00.000000000 -0600
-+++ libreoffice-build/patches/dev300/trinity-modules.diff 2011-08-21 16:24:42.000000000 -0500
-@@ -0,0 +1,15748 @@
-+diff -urN configure.in configure.in
-+--- configure.in 2011-03-08 12:51:39.000000000 -0600
-++++ configure.in 2011-08-17 16:40:04.716144357 -0500
-+@@ -233,6 +233,15 @@
-+ [ --disable-kdeab Disable the KDE3 address book support
-+ ],,if test "$enable_kde" = "yes"; then enable_kdeab=yes; fi)
-+
-++AC_ARG_ENABLE(tde,
-++[ --enable-tde Determines whether to use TQt3/TDE vclplug on platforms
-++ where TQt and TDE are available.
-++],,)
-++
-++AC_ARG_ENABLE(tdeab,
-++[ --disable-tdeab Disable the TDE address book support
-++],,if test "$enable_tde" = "yes"; then enable_tdeab=yes; fi)
-++
-+ AC_ARG_ENABLE(kde4,
-+ [ --enable-kde4 Determines whether to use Qt4/KDE4 vclplug on platforms
-+ where Qt4 and KDE4 are available. May be used with --enable-kde
-+@@ -1350,6 +1359,7 @@
-+ test_cairo=yes
-+ build_gstreamer=yes
-+ test_kde=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1385,6 +1395,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1428,6 +1439,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1463,6 +1475,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1482,6 +1495,7 @@
-+ test_gtk=yes
-+ build_cairo=yes
-+ test_kde=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_freetype=yes
-+ test_randr=yes
-+@@ -6141,6 +6155,13 @@
-+ fi
-+ AC_SUBST(ENABLE_KDE4)
-+
-++ENABLE_TDE=""
-++if test "x$enable_tde" = "xyes"; then
-++ ENABLE_TDE="TRUE"
-++ R="$R tde"
-++fi
-++AC_SUBST(ENABLE_TDE)
-++
-+ if test -z "$R"; then
-+ AC_MSG_RESULT([none])
-+ else
-+@@ -7044,6 +7065,129 @@
-+ AC_SUBST(KDE_HAVE_GLIB)
-+
-+ dnl ===================================================================
-++dnl Check whether the Qt3 and TDE libraries are available.
-++dnl ===================================================================
-++
-++TDE_CFLAGS=""
-++TDE_LIBS=""
-++if test "$_os" != "OpenBSD"; then
-++ MOC="moc"
-++fi
-++if test "$test_tde" = "yes" -a "$ENABLE_TDE" = "TRUE" ; then
-++ dnl Search paths for Qt3 and TDE
-++ if test "$build_cpu" != "x86_64" ; then
-++ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib/qt3/include /usr/lib/qt/include /usr/share/qt3/include /usr/local/include/X11/qt3 $x_includes"
-++ qt_libdirs="$QTLIB /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-++ else
-++ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib64/qt3/include /usr/lib64/qt/include /usr/share/qt3/include /usr/lib/qt3/include /usr/lib/qt/include /usr/local/include/X11/qt3 $x_includes"
-++ qt_libdirs="$QTLIB /usr/local/qt/lib64 /usr/lib64/qt /usr/lib64 /usr/X11R6/lib64/X11/qt /usr/X11R6/lib64/qt /usr/lib64/qt3/lib64 /usr/lib64/qt/lib64 /usr/share/qt3/lib64 /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-++ fi
-++ if test -n "$QTDIR" ; then
-++ qt_incdirs="$QTDIR/include $qt_incdirs"
-++ if test "$build_cpu" != "x86_64" ; then
-++ qt_libdirs="$QTDIR/lib $qt_libdirs"
-++ else
-++ qt_libdirs="$QTDIR/lib64 $QTDIR/lib $qt_libdirs"
-++ fi
-++ fi
-++ if test "$build_cpu" != "x86_64" ; then
-++ tde_incdirs="/opt/trinity/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-++ tde_libdirs="/opt/trinity/lib /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib/kde4/lib /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-++ else
-++ tde_incdirs="/opt/trinity/include /usr/lib64/kde/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-++ tde_libdirs="/opt/trinity/lib /usr/lib64/kde/lib64 /usr/local/kde/lib64 /usr/kde/lib64 /usr/lib64/kde /usr/lib64/kde3 /usr/lib64 /usr/X11R6/lib64 /usr/local/lib64 /opt/trinity/lib64 /opt/kde/lib64 /usr/X11R6/kde/lib64 /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-++ fi
-++ if test -n "$TDEDIR" ; then
-++ tde_incdirs="$TDEDIR/include $tde_incdirs"
-++ if test "$build_cpu" != "x86_64" ; then
-++ tde_libdirs="$TDEDIR/lib $tde_libdirs"
-++ else
-++ tde_libdirs="$TDEDIR/lib64 $TDEDIR/lib $tde_libdirs"
-++ fi
-++ fi
-++
-++ dnl What to test
-++ qt_test_include="qstyle.h"
-++ qt_test_library="libqt-mt.so*"
-++ tde_test_include="kapp.h"
-++ tde_test_library="libDCOP.so*"
-++
-++ dnl Check for Qt3 headers
-++ AC_MSG_CHECKING([for Qt3 headers])
-++ qt_incdir="no"
-++ for tde_check in $qt_incdirs ; do
-++ if test -r "$tde_check/$qt_test_include" ; then
-++ qt_incdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$qt_incdir])
-++ if test "x$qt_incdir" = "xno" ; then
-++ AC_MSG_ERROR([Qt3 headers not found. Please specify the root of
-++your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for Qt3 libraries
-++ AC_MSG_CHECKING([for Qt3 libraries])
-++ qt_libdir="no"
-++ for qt_check in $qt_libdirs ; do
-++ if test -r "`ls $qt_check/$qt_test_library 2>/dev/null | head -1`" ; then
-++ qt_libdir="$qt_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$qt_libdir])
-++ if test "x$qt_libdir" = "xno" ; then
-++ AC_MSG_ERROR([Qt3 libraries not found. Please specify the root of
-++your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for Meta Object Compiler
-++ AC_PATH_PROG( MOC, moc, no, [`dirname $qt_libdir`/bin:$QTDIR/bin:$PATH] )
-++ if test "$MOC" = "no" ; then
-++ AC_MSG_ERROR([Qt3 Meta Object Compiler not found. Please specify
-++the root of your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for TDE headers
-++ AC_MSG_CHECKING([for TDE headers])
-++ tde_incdir="no"
-++ for tde_check in $tde_incdirs ; do
-++ if test -r "$tde_check/$tde_test_include" ; then
-++ tde_incdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$tde_incdir])
-++ if test "x$tde_incdir" = "xno" ; then
-++ AC_MSG_ERROR([TDE headers not found. Please specify the root of
-++your TDE installation by exporting TDEDIR before running "configure".])
-++ fi
-++
-++ dnl Check for TDE libraries
-++ AC_MSG_CHECKING([for TDE libraries])
-++ tde_libdir="no"
-++ for tde_check in $tde_libdirs ; do
-++ if test -r "`ls $tde_check/$tde_test_library 2>/dev/null | head -1`" ; then
-++ tde_libdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$tde_libdir])
-++ if test "x$tde_libdir" = "xno" ; then
-++ AC_MSG_ERROR([TDE libraries not found. Please specify the root of
-++your TDE installation by exporting TDEDIR before running "configure".])
-++ fi
-++
-++ dnl Set the variables
-++ TDE_CFLAGS="-I$qt_incdir -I$tde_incdir -I/usr/include/tqt -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT"
-++ TDE_LIBS="-L$tde_libdir -L$qt_libdir -lkdeui -lkdecore -ltqt -lqt-mt"
-++fi
-++AC_SUBST(TDE_CFLAGS)
-++AC_SUBST(TDE_LIBS)
-++AC_SUBST(MOC)
-++
-++dnl ===================================================================
-+ dnl Test for the enabling the lockdown pieces
-+ dnl ===================================================================
-+ AC_MSG_CHECKING([whether to enable the lockdown pieces])
-+@@ -7100,6 +7244,33 @@
-+ AC_SUBST(ENABLE_KAB)
-+
-+ dnl ===================================================================
-++dnl Test whether to include TDE AB support
-++dnl ===================================================================
-++AC_MSG_CHECKING([whether to enable TDE address book support])
-++if test "$enable_tdeab" = "yes" && test "$enable_tde" = "yes"; then
-++ AC_MSG_RESULT([yes])
-++ AC_LANG_PUSH([C++])
-++ save_CXXFLAGS=$CXXFLAGS
-++ CXXFLAGS="$CXXFLAGS $TDE_CFLAGS"
-++ AC_MSG_CHECKING([whether TDE is between 3.2 and 3.6])
-++ AC_TRY_RUN([
-++#include <kdeversion.h>
-++
-++int main(int argc, char **argv) {
-++ if (KDE_VERSION_MAJOR == 3 && 2 <= KDE_VERSION_MINOR && KDE_VERSION_MINOR <= 6) return 0;
-++ else return 1;
-++}
-++ ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([TDE version too old or too recent, please use another version of TDE or disable TDE address book support])])
-++ CXXFLAGS=$save_CXXFLAGS
-++ AC_LANG_POP([C++])
-++ ENABLE_TDEAB=TRUE
-++else
-++ AC_MSG_RESULT([no])
-++ ENABLE_TDEAB=
-++fi
-++AC_SUBST(ENABLE_TDEAB)
-++
-++dnl ===================================================================
-+ dnl Test whether to include MathMLDTD
-+ dnl ===================================================================
-+ AC_MSG_CHECKING([whether to include MathMLDTD])
-+diff -urN connectivity/source/drivers/tdeab/exports.dxp connectivity/source/drivers/tdeab/exports.dxp
-+--- connectivity/source/drivers/tdeab/exports.dxp 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/exports.dxp 2011-08-17 14:23:01.735590880 -0500
-+@@ -0,0 +1,3 @@
-++component_getImplementationEnvironment
-++component_writeInfo
-++component_getFactory
-+diff -urN connectivity/source/drivers/tdeab/KCatalog.cxx connectivity/source/drivers/tdeab/KCatalog.cxx
-+--- connectivity/source/drivers/tdeab/KCatalog.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KCatalog.cxx 2011-08-17 14:29:39.766199199 -0500
-+@@ -0,0 +1,128 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KCatalog.hxx"
-++#include "KConnection.hxx"
-++#include "KTables.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++using namespace ::cppu;
-++
-++// -------------------------------------------------------------------------
-++KabCatalog::KabCatalog(KabConnection* _pCon)
-++ : connectivity::sdbcx::OCatalog(_pCon),
-++ m_pConnection(_pCon),
-++ m_xMetaData(m_pConnection->getMetaData())
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshTables()
-++{
-++ TStringVector aVector;
-++ Sequence< ::rtl::OUString > aTypes(1);
-++ aTypes[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"));
-++ Reference< XResultSet > xResult = m_xMetaData->getTables(
-++ Any(),
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-++ aTypes);
-++
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult,UNO_QUERY);
-++ ::rtl::OUString aName;
-++ // const ::rtl::OUString& sDot = KabCatalog::getDot();
-++
-++ while (xResult->next())
-++ {
-++ // aName = xRow->getString(2);
-++ // aName += sDot;
-++ aName = xRow->getString(3);
-++ aVector.push_back(aName);
-++ }
-++ }
-++ if (m_pTables)
-++ m_pTables->reFill(aVector);
-++ else
-++ m_pTables = new KabTables(m_xMetaData,*this,m_aMutex,aVector);
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshViews()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshGroups()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshUsers()
-++{
-++}
-++// -------------------------------------------------------------------------
-++const ::rtl::OUString& KabCatalog::getDot()
-++{
-++ static const ::rtl::OUString sDot = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("."));
-++ return sDot;
-++}
-++// -----------------------------------------------------------------------------
-++
-++// XTablesSupplier
-++Reference< XNameAccess > SAL_CALL KabCatalog::getTables( ) throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++ checkDisposed(rBHelper.bDisposed);
-++
-++ try
-++ {
-++ if (!m_pTables)
-++ refreshTables();
-++ }
-++ catch( const RuntimeException& )
-++ {
-++ // allowed to leave this method
-++ throw;
-++ }
-++ catch( const Exception& )
-++ {
-++ // allowed
-++ }
-++
-++ return m_pTables;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KCatalog.hxx connectivity/source/drivers/tdeab/KCatalog.hxx
-+--- connectivity/source/drivers/tdeab/KCatalog.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KCatalog.hxx 2011-08-17 14:29:32.345628247 -0500
-+@@ -0,0 +1,68 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CATALOG_HXX_
-++#define _CONNECTIVITY_KAB_CATALOG_HXX_
-++
-++#include "connectivity/sdbcx/VCatalog.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabConnection;
-++
-++ class KabCatalog : public connectivity::sdbcx::OCatalog
-++ {
-++ KabConnection* m_pConnection; // used to get the metadata
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; // just to make things easier
-++
-++ public:
-++ KabCatalog(KabConnection* _pCon);
-++
-++ inline KabConnection* getConnection() const { return m_pConnection; }
-++
-++ static const ::rtl::OUString& getDot();
-++
-++ // implementation of the pure virtual methods
-++ virtual void refreshTables();
-++ virtual void refreshViews();
-++ virtual void refreshGroups();
-++ virtual void refreshUsers();
-++
-++ // XTablesSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CATALOG_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KColumns.cxx connectivity/source/drivers/tdeab/KColumns.cxx
-+--- connectivity/source/drivers/tdeab/KColumns.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KColumns.cxx 2011-08-17 14:29:23.634958020 -0500
-+@@ -0,0 +1,102 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KColumns.hxx"
-++#include "KTable.hxx"
-++#include "KTables.hxx"
-++#include "KCatalog.hxx"
-++#include "connectivity/sdbcx/VColumn.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace connectivity::sdbcx;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++// -------------------------------------------------------------------------
-++sdbcx::ObjectType KabColumns::createObject(const ::rtl::OUString& _rName)
-++{
-++ Reference< XResultSet > xResult = m_pTable->getConnection()->getMetaData()->getColumns(
-++ Any(),
-++ m_pTable->getSchema(),
-++ m_pTable->getTableName(),
-++ _rName);
-++
-++ sdbcx::ObjectType xRet = NULL;
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult,UNO_QUERY);
-++
-++ while (xResult->next())
-++ {
-++ if (xRow->getString(4) == _rName)
-++ {
-++ OColumn* pRet = new OColumn(
-++ _rName,
-++ xRow->getString(6),
-++ xRow->getString(13),
-++ xRow->getString(12),
-++ xRow->getInt(11),
-++ xRow->getInt(7),
-++ xRow->getInt(9),
-++ xRow->getInt(5),
-++ sal_False,
-++ sal_False,
-++ sal_False,
-++ sal_True);
-++ xRet = pRet;
-++ break;
-++ }
-++ }
-++ }
-++
-++ return xRet;
-++}
-++// -------------------------------------------------------------------------
-++void KabColumns::impl_refresh() throw(RuntimeException)
-++{
-++ m_pTable->refreshColumns();
-++}
-++// -------------------------------------------------------------------------
-++KabColumns::KabColumns( KabTable* _pTable,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector)
-++ : sdbcx::OCollection(*_pTable, sal_True, _rMutex, _rVector),
-++ m_pTable(_pTable)
-++{
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KColumns.hxx connectivity/source/drivers/tdeab/KColumns.hxx
-+--- connectivity/source/drivers/tdeab/KColumns.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KColumns.hxx 2011-08-17 14:29:13.974214692 -0500
-+@@ -0,0 +1,58 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_COLUMNS_HXX_
-++#define _CONNECTIVITY_KAB_COLUMNS_HXX_
-++
-++#include "KTable.hxx"
-++#include "connectivity/sdbcx/VCollection.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabColumns : public sdbcx::OCollection
-++ {
-++ protected:
-++ KabTable* m_pTable;
-++
-++ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-++ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-++
-++ public:
-++ KabColumns( KabTable* _pTable,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_COLUMNS_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kcondition.cxx connectivity/source/drivers/tdeab/kcondition.cxx
-+--- connectivity/source/drivers/tdeab/kcondition.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kcondition.cxx 2011-08-17 14:29:06.863667577 -0500
-+@@ -0,0 +1,233 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "kcondition.hxx"
-++#include "kfields.hxx"
-++#include "connectivity/CommonTools.hxx"
-++
-++using namespace ::connectivity::kab;
-++using namespace ::com::sun::star::sdbc;
-++// -----------------------------------------------------------------------------
-++KabCondition::~KabCondition()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionConstant::KabConditionConstant(const sal_Bool bValue)
-++ : KabCondition(),
-++ m_bValue(bValue)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::isAlwaysTrue() const
-++{
-++ return m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::isAlwaysFalse() const
-++{
-++ return !m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::eval(const ::KABC::Addressee &) const
-++{
-++ return m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionColumn::KabConditionColumn(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabCondition(),
-++ m_nFieldNumber(findKabField(sColumnName))
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionColumn::isAlwaysTrue() const
-++{
-++ // Sometimes true, sometimes false
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionColumn::isAlwaysFalse() const
-++{
-++ // Sometimes true, sometimes false
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionNull::KabConditionNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabConditionColumn(sColumnName)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionNull::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ return aQtName.isNull();
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionNotNull::KabConditionNotNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabConditionColumn(sColumnName)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionNotNull::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ return !aQtName.isNull();
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionCompare::KabConditionCompare(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionColumn(sColumnName),
-++ m_sMatchString(sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionEqual::KabConditionEqual(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionEqual::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++// Timestamps should not be compared according to their string value
-++// The syntax for such queries should be like
-++// {ts '2004-03-29 12:55:00.000000'}
-++// They should also support operators like '<' or '>='
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return sValue == m_sMatchString;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionDifferent::KabConditionDifferent(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionDifferent::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return sValue != m_sMatchString;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionSimilar::KabConditionSimilar(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionSimilar::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return match(m_sMatchString, sValue, '\0');
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionBoolean::KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight)
-++ : KabCondition(),
-++ m_pLeft(pLeft),
-++ m_pRight(pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionBoolean::~KabConditionBoolean()
-++{
-++ delete m_pLeft;
-++ delete m_pRight;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionOr::KabConditionOr(KabCondition *pLeft, KabCondition *pRight)
-++ : KabConditionBoolean(pLeft, pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::isAlwaysTrue() const
-++{
-++ return m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::isAlwaysFalse() const
-++{
-++ return m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ // We avoid evaluating terms as much as we can
-++ if (m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue()) return sal_True;
-++ if (m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse()) return sal_False;
-++
-++ if (m_pLeft->eval(aAddressee)) return sal_True;
-++ if (m_pRight->eval(aAddressee)) return sal_True;
-++
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionAnd::KabConditionAnd(KabCondition *pLeft, KabCondition *pRight)
-++ : KabConditionBoolean(pLeft, pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::isAlwaysTrue() const
-++{
-++ return m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::isAlwaysFalse() const
-++{
-++ return m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ // We avoid evaluating terms as much as we can
-++ if (m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse()) return sal_False;
-++ if (m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue()) return sal_True;
-++
-++ if (!m_pLeft->eval(aAddressee)) return sal_False;
-++ if (!m_pRight->eval(aAddressee)) return sal_False;
-++
-++ return sal_True;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kcondition.hxx connectivity/source/drivers/tdeab/kcondition.hxx
-+--- connectivity/source/drivers/tdeab/kcondition.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kcondition.hxx 2011-08-17 14:28:59.403093526 -0500
-+@@ -0,0 +1,164 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CONDITION_HXX_
-++#define _CONNECTIVITY_KAB_CONDITION_HXX_
-++
-++#include <comphelper/types.hxx>
-++#include <shell/tde_headers.h>
-++#include <connectivity/dbexception.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++// -----------------------------------------------------------------------------
-++class KabCondition
-++{
-++ public:
-++ virtual ~KabCondition();
-++ virtual sal_Bool isAlwaysTrue() const = 0;
-++ virtual sal_Bool isAlwaysFalse() const = 0;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const = 0;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionConstant : public KabCondition
-++{
-++ protected:
-++ sal_Bool m_bValue;
-++
-++ public:
-++ KabConditionConstant(const sal_Bool bValue);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionColumn : public KabCondition
-++{
-++ protected:
-++ sal_Int32 m_nFieldNumber;
-++
-++ TQString value(const ::KABC::Addressee &aAddressee) const;
-++
-++ public:
-++ KabConditionColumn(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionNull : public KabConditionColumn
-++{
-++ public:
-++ KabConditionNull(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionNotNull : public KabConditionColumn
-++{
-++ public:
-++ KabConditionNotNull(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionCompare : public KabConditionColumn
-++{
-++ protected:
-++ const ::rtl::OUString m_sMatchString;
-++
-++ public:
-++ KabConditionCompare(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionEqual : public KabConditionCompare
-++{
-++ public:
-++ KabConditionEqual(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionDifferent : public KabConditionCompare
-++{
-++ public:
-++ KabConditionDifferent(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionSimilar : public KabConditionCompare
-++{
-++ public:
-++ KabConditionSimilar(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionBoolean : public KabCondition
-++{
-++ protected:
-++ KabCondition *m_pLeft, *m_pRight;
-++
-++ public:
-++ KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight);
-++ virtual ~KabConditionBoolean();
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionOr : public KabConditionBoolean
-++{
-++ public:
-++ KabConditionOr(KabCondition *pLeft, KabCondition *pRight);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionAnd : public KabConditionBoolean
-++{
-++ public:
-++ KabConditionAnd(KabCondition *pLeft, KabCondition *pRight);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &addressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CONDITION_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KConnection.cxx connectivity/source/drivers/tdeab/KConnection.cxx
-+--- connectivity/source/drivers/tdeab/KConnection.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KConnection.cxx 2011-08-17 14:28:53.822664134 -0500
-+@@ -0,0 +1,332 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KConnection.hxx"
-++#include "KDatabaseMetaData.hxx"
-++#include "KStatement.hxx"
-++#include "KPreparedStatement.hxx"
-++#include "KDriver.hxx"
-++#include "KCatalog.hxx"
-++#include <com/sun/star/sdbc/ColumnValue.hpp>
-++#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-++#include <shell/tde_headers.h>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++
-++IMPLEMENT_SERVICE_INFO(KabConnection, "com.sun.star.sdbc.drivers.KabConnection", "com.sun.star.sdbc.Connection")
-++//-----------------------------------------------------------------------------
-++KabConnection::KabConnection(KabDriver* _pDriver)
-++ : OMetaConnection_BASE(m_aMutex),
-++ OSubComponent<KabConnection, KabConnection_BASE>((::cppu::OWeakObject*)_pDriver, this),
-++ m_xMetaData(NULL),
-++ m_pAddressBook(NULL),
-++ m_pDriver(_pDriver)
-++{
-++ m_pDriver->acquire();
-++}
-++//-----------------------------------------------------------------------------
-++KabConnection::~KabConnection()
-++{
-++ if (!isClosed())
-++ close();
-++
-++ m_pDriver->release();
-++ m_pDriver = NULL;
-++}
-++//-----------------------------------------------------------------------------
-++void SAL_CALL KabConnection::release() throw()
-++{
-++ relase_ChildImpl();
-++}
-++// -----------------------------------------------------------------------------
-++void KabConnection::construct(const ::rtl::OUString&, const Sequence< PropertyValue >&) throw(SQLException)
-++{
-++ osl_incrementInterlockedCount( &m_refCount );
-++
-++ // create a TDE address book object
-++ m_pAddressBook = KABC::StdAddressBook::self();
-++ m_pAddressBook->setAutomaticSave(false);
-++// perharps we should analyze the URL to know whether the addressbook is local, over LDAP, etc...
-++// perharps we should get some user and password information from "info" properties
-++
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// XServiceInfo
-++// --------------------------------------------------------------------------------
-++Reference< XStatement > SAL_CALL KabConnection::createStatement( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // create a statement
-++ // the statement can only be executed once
-++ Reference< XStatement > xReturn = new KabStatement(this);
-++ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-++ return xReturn;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XPreparedStatement > SAL_CALL KabConnection::prepareStatement( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // create a statement
-++ // the statement can only be executed more than once
-++ Reference< XPreparedStatement > xReturn = new KabPreparedStatement(this, _sSql);
-++ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-++ return xReturn;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XPreparedStatement > SAL_CALL KabConnection::prepareCall( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // not implemented yet :-) a task to do
-++ return NULL;
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabConnection::nativeSQL( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ // when you need to transform SQL92 to you driver specific you can do it here
-++
-++ return _sSql;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setAutoCommit( sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ // here you have to set your commit mode please have a look at the jdbc documentation to get a clear explanation
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::getAutoCommit( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ // you have to distinguish which if you are in autocommit mode or not
-++ // at normal case true should be fine here
-++
-++ return sal_True;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::commit( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // when you database does support transactions you should commit here
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::rollback( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // same as commit but for the other case
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::isClosed( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // just simple -> we are closed when we are disposed, that means someone called dispose(); (XComponent)
-++ return KabConnection_BASE::rBHelper.bDisposed;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XDatabaseMetaData > SAL_CALL KabConnection::getMetaData( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // here we have to create the class with biggest interface
-++ // The answer is 42 :-)
-++ Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
-++ if (!xMetaData.is())
-++ {
-++ xMetaData = new KabDatabaseMetaData(this); // need the connection because it can return it
-++ m_xMetaData = xMetaData;
-++ }
-++
-++ return xMetaData;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setReadOnly( sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // set you connection to readonly
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::isReadOnly( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // return if your connection to readonly
-++ return sal_False;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setCatalog( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // if your database doesn't work with catalogs you go to next method otherwise you kjnow what to do
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabConnection::getCatalog( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++
-++ // return your current catalog
-++ return ::rtl::OUString();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setTransactionIsolation( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // set your isolation level
-++ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabConnection::getTransactionIsolation( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++
-++ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-++ return TransactionIsolation::NONE;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< ::com::sun::star::container::XNameAccess > SAL_CALL KabConnection::getTypeMap( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // if your driver has special database types you can return it here
-++
-++ return NULL;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setTypeMap( const Reference< ::com::sun::star::container::XNameAccess >& ) throw(SQLException, RuntimeException)
-++{
-++ // the other way around
-++}
-++// --------------------------------------------------------------------------------
-++// XCloseable
-++void SAL_CALL KabConnection::close( ) throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ }
-++ dispose();
-++}
-++// --------------------------------------------------------------------------------
-++// XWarningsSupplier
-++Any SAL_CALL KabConnection::getWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ // when you collected some warnings -> return it
-++ return Any();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::clearWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ // you should clear your collected warnings here
-++}
-++//------------------------------------------------------------------------------
-++void KabConnection::disposing()
-++{
-++ // we noticed that we should be destroied in near future so we have to dispose our statements
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ for (OWeakRefArray::iterator i = m_aStatements.begin(); m_aStatements.end() != i; ++i)
-++ {
-++ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-++ if (xComp.is())
-++ xComp->dispose();
-++ }
-++ m_aStatements.clear();
-++
-++ if (m_pAddressBook != NULL)
-++ {
-++ m_pAddressBook->close();
-++ m_pAddressBook = NULL;
-++ }
-++
-++ m_xMetaData = ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData>();
-++
-++ dispose_ChildImpl();
-++ KabConnection_BASE::disposing();
-++}
-++// -----------------------------------------------------------------------------
-++Reference< XTablesSupplier > SAL_CALL KabConnection::createCatalog()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ Reference< XTablesSupplier > xTab = m_xCatalog;
-++ if (!m_xCatalog.is())
-++ {
-++ KabCatalog *pCat = new KabCatalog(this);
-++ xTab = pCat;
-++ m_xCatalog = xTab;
-++ }
-++ return xTab;
-++}
-++// -----------------------------------------------------------------------------
-++::KABC::AddressBook* KabConnection::getAddressBook() const
-++{
-++ return m_pAddressBook;
-++}
-++// -----------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL createKabConnection( void* _pDriver )
-++{
-++ KabConnection* pConnection = new KabConnection( static_cast< KabDriver* >( _pDriver ) );
-++ // by definition, the pointer crossing library boundaries as void ptr is acquired once
-++ pConnection->acquire();
-++ return pConnection;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KConnection.hxx connectivity/source/drivers/tdeab/KConnection.hxx
-+--- connectivity/source/drivers/tdeab/KConnection.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KConnection.hxx 2011-08-17 14:28:47.592184720 -0500
-+@@ -0,0 +1,142 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CONNECTION_HXX_
-++#define _CONNECTIVITY_KAB_CONNECTION_HXX_
-++
-++#include <map>
-++#include "OSubComponent.hxx"
-++#include "connectivity/CommonTools.hxx"
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/sdbc/SQLWarning.hpp>
-++#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-++#include <com/sun/star/sdbc/XConnection.hpp>
-++#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-++#include <comphelper/broadcasthelper.hxx>
-++#include <cppuhelper/compbase3.hxx>
-++
-++namespace KABC
-++{
-++ class StdAddressBook;
-++ class AddressBook;
-++}
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++
-++ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XConnection,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::lang::XServiceInfo
-++ > OMetaConnection_BASE;
-++
-++ class KabStatement_Base;
-++ class KabDriver;
-++ class KabDatabaseMetaData;
-++
-++ typedef OMetaConnection_BASE KabConnection_BASE; // implements basics and text encoding
-++ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-++
-++ class KabConnection : public comphelper::OBaseMutex,
-++ public KabConnection_BASE,
-++ public OSubComponent<KabConnection, KabConnection_BASE>
-++ {
-++ friend class OSubComponent<KabConnection, KabConnection_BASE>;
-++
-++ protected:
-++ //====================================================================
-++ // Data attributes
-++ //====================================================================
-++ ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++
-++ OWeakRefArray m_aStatements; // vector containing a list of all the Statement objects
-++ // for this Connection
-++
-++ ::KABC::StdAddressBook* m_pAddressBook; // the address book
-++ KabDriver* m_pDriver; // pointer to the owning driver object
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier>
-++ m_xCatalog; // needed for the SQL interpreter
-++
-++ public:
-++ virtual void construct( const ::rtl::OUString& url,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info) throw(::com::sun::star::sdbc::SQLException);
-++
-++ KabConnection(KabDriver* _pDriver);
-++ virtual ~KabConnection();
-++
-++ void closeAllStatements () throw( ::com::sun::star::sdbc::SQLException);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XInterface
-++ virtual void SAL_CALL release() throw();
-++
-++ // XServiceInfo
-++ DECLARE_SERVICE_INFO();
-++
-++ // XConnection
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setAutoCommit( sal_Bool autoCommit ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setReadOnly( sal_Bool readOnly ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setCatalog( const ::rtl::OUString& catalog ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTransactionIsolation( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // needed for the SQL interpreter
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > SAL_CALL createCatalog();
-++
-++ // accessors
-++ inline KabDriver* getDriver() const { return m_pDriver;}
-++ ::KABC::AddressBook* getAddressBook() const;
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CONNECTION_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx
-+--- connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx 2011-08-17 14:28:44.171921542 -0500
-+@@ -0,0 +1,1084 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDatabaseMetaData.hxx"
-++#include "kfields.hxx"
-++#include "TDEInit.h"
-++#include <shell/tde_headers.h>
-++#include "FDatabaseMetaDataResultSet.hxx"
-++#include "OTypeInfo.hxx"
-++#include <com/sun/star/sdbc/ColumnValue.hpp>
-++#include <com/sun/star/sdbc/ResultSetType.hpp>
-++#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++
-++KabDatabaseMetaData::KabDatabaseMetaData(KabConnection* _pCon)
-++ : m_xConnection(_pCon),
-++ m_bUseCatalog(sal_True)
-++{
-++ OSL_ENSURE(_pCon,"KabDatabaseMetaData::KabDatabaseMetaData: No connection set!");
-++
-++ osl_incrementInterlockedCount( &m_refCount );
-++ m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// -------------------------------------------------------------------------
-++KabDatabaseMetaData::~KabDatabaseMetaData()
-++{
-++}
-++// -------------------------------------------------------------------------
-++const ::rtl::OUString & KabDatabaseMetaData::getAddressBookTableName()
-++{
-++ static const ::rtl::OUString aAddressBookTableName
-++ (::rtl::OUString::createFromAscii( i18n("Address Book") ));
-++
-++ return aAddressBookTableName;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogSeparator( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ if (m_bUseCatalog)
-++ { // do some special here for you database
-++ }
-++
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxBinaryLiteralLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxRowSize( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCatalogNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCharLiteralLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInIndex( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCursorNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxConnections( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInTable( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatementLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTableNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTablesInSelect( ) throw(SQLException, RuntimeException)
-++{
-++ // MaxTablesInSelect describes how many tables can participate in the FROM part of a given SELECT statement,
-++ // currently, the resultset/statement implementations can cope with one table only
-++ sal_Int32 nValue = 1;
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::doesMaxRowSizeIncludeBlobs( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithAddColumn( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithDropColumn( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxIndexLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsNonNullableColumns( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ if (m_bUseCatalog)
-++ {
-++ }
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getIdentifierQuoteString( ) throw(SQLException, RuntimeException)
-++{
-++ // normally this is "
-++ ::rtl::OUString aVal = ::rtl::OUString::createFromAscii("\"");
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getExtraNameCharacters( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDifferentTableCorrelationNames( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::isCatalogAtStart( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Bool bValue = sal_False;
-++ if (m_bUseCatalog)
-++ {
-++ }
-++ return bValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionIgnoredInTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionCausesTransactionCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataManipulationTransactionsOnly( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedDelete( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedUpdate( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossRollback( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossRollback( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactionIsolationLevel( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInDataManipulation( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92FullSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92EntryLevelSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True; // should be supported at least
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsIntegrityEnhancementFacility( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInIndexDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInTableDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInTableDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInIndexDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInDataManipulation( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatements( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxProcedureNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxSchemaNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::allProceduresAreCallable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsStoredProcedures( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSelectForUpdate( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::allTablesAreSelectable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::isReadOnly( ) throw(SQLException, RuntimeException)
-++{
-++ // for the moment, we have read-only addresses, but this might change in the future
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFiles( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFilePerTable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTypeConversion( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullPlusNonNullIsNull( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsColumnAliasing( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTableCorrelationNames( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsConvert( sal_Int32, sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsExpressionsInOrderBy( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupBy( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByBeyondSelect( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByUnrelated( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleResultSets( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsLikeEscapeClause( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOrderByUnrelated( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnion( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnionAll( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtEnd( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtStart( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedHigh( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedLow( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInProcedureCalls( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInProcedureCalls( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCorrelatedSubqueries( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInComparisons( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInExists( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInIns( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInQuantifieds( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92IntermediateSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getURL( ) throw(SQLException, RuntimeException)
-++{
-++ // if someday we support more than the default address book,
-++ // this method should return the URL which was used to create it
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("sdbc:address:kab:");
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getUserName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("kab");
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverVersion() throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii(KAB_DRIVER_VERSION);
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductVersion( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getProcedureTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSchemaTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMajorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MAJOR;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDefaultTransactionIsolation( ) throw(SQLException, RuntimeException)
-++{
-++ return TransactionIsolation::NONE;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMinorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MINOR;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSQLKeywords( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSearchStringEscape( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getStringFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getTimeDateFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSystemFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getNumericFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsExtendedSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCoreSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMinimumSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsFullOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsLimitedOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInGroupBy( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInOrderBy( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInSelect( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxUserNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetType( sal_Int32 setType ) throw(SQLException, RuntimeException)
-++{
-++ switch (setType)
-++ {
-++ case ResultSetType::FORWARD_ONLY:
-++ case ResultSetType::SCROLL_INSENSITIVE:
-++ return sal_True;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ switch (setType)
-++ {
-++ case ResultSetType::FORWARD_ONLY:
-++ case ResultSetType::SCROLL_INSENSITIVE:
-++ return sal_True;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::updatesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::deletesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::insertsAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsBatchUpdates( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabDatabaseMetaData::getConnection( ) throw(SQLException, RuntimeException)
-++{
-++ return (Reference< XConnection >) m_xConnection.get();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTableTypes( ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-++
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(2);
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = new ORowSetValueDecorator(aTable);
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTypeInfo( ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(19);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-++ aRow[2] = new ORowSetValueDecorator(DataType::CHAR);
-++ aRow[3] = new ORowSetValueDecorator((sal_Int32) 254);
-++ aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-++ aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-++ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[7] = new ORowSetValueDecorator((sal_Int32) ColumnValue::NULLABLE);
-++ aRow[8] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[9] = new ORowSetValueDecorator((sal_Int32) ColumnSearch::CHAR);
-++ aRow[10] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[11] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[12] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[14] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[16] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[17] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[18] = new ORowSetValueDecorator((sal_Int32) 10);
-++ aRows.push_back(aRow);
-++// Much more types might appear in TDE address books
-++// To be completed
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCatalogs( ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCatalogs );
-++}
-++// -----------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getSchemas( ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eSchemas );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumnPrivileges(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-++ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eColumnPrivileges );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumns(
-++ const Any&,
-++ const ::rtl::OUString&,
-++ const ::rtl::OUString& tableNamePattern,
-++ const ::rtl::OUString& columnNamePattern) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumns);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (match(tableNamePattern, getAddressBookTableName(), '\0'))
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(19);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-++ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[9] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[10] = new ORowSetValueDecorator((sal_Int32) 10);
-++ aRow[11] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[12] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[14] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[15] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[16] = new ORowSetValueDecorator((sal_Int32) 254);
-++ aRow[18] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("YES"));
-++
-++ sal_Int32 nPosition = 1;
-++ TQString aQtName;
-++ ::rtl::OUString sName;
-++
-++ aQtName = ::KABC::Addressee::revisionLabel();
-++ sName = (const sal_Unicode *) aQtName.ucs2();
-++ if (match(columnNamePattern, sName, '\0'))
-++ {
-++ aRow[4] = new ORowSetValueDecorator(sName);
-++ aRow[5] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-++ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-++ aRow[17] = new ORowSetValueDecorator(nPosition++);
-++ aRows.push_back(aRow);
-++ }
-++
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ ::KABC::Field::List::iterator aField;
-++
-++ for ( aField = aFields.begin();
-++ aField != aFields.end();
-++ ++aField, ++nPosition)
-++ {
-++ aQtName = (*aField)->label();
-++ sName = (const sal_Unicode *) aQtName.ucs2();
-++ if (match(columnNamePattern, sName, '\0'))
-++ {
-++ aRow[4] = new ORowSetValueDecorator(sName);
-++ aRow[5] = new ORowSetValueDecorator(DataType::CHAR);
-++ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-++ aRow[7] = new ORowSetValueDecorator((sal_Int32) 256);
-++// Might be VARCHAR and not CHAR[256]...
-++ aRow[17] = new ORowSetValueDecorator(nPosition);
-++ aRows.push_back(aRow);
-++ }
-++ }
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTables(
-++ const Any&,
-++ const ::rtl::OUString&,
-++ const ::rtl::OUString&,
-++ const Sequence< ::rtl::OUString >& types) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTables);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ // check whether we have tables in the requested types
-++ // for the moment, we answer only the "TABLE" table type
-++ // when no types are given at all, we return all the tables
-++ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-++ sal_Bool bTableFound = sal_False;
-++ const ::rtl::OUString* p = types.getConstArray(),
-++ * pEnd = p + types.getLength();
-++
-++ if (p == pEnd)
-++ {
-++ bTableFound = sal_True;
-++ }
-++ else while (p < pEnd)
-++ {
-++ if (match(*p, aTable, '\0'))
-++ {
-++ bTableFound = sal_True;
-++ break;
-++ }
-++ p++;
-++ }
-++ if (!bTableFound)
-++ return xRef;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(6);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-++ aRow[4] = new ORowSetValueDecorator(aTable);
-++ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedureColumns(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedureColumns );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedures(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedures );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getVersionColumns(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eVersionColumns);
-++
-++ Reference< XResultSet > xRef = pResult;
-++
-++ ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (table == getAddressBookTableName())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow( 9 );
-++ TQString aQtName = ::KABC::Addressee::revisionLabel();
-++ ::rtl::OUString sName = (const sal_Unicode *) aQtName.ucs2();
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++
-++ aRow[2] = new ORowSetValueDecorator(sName);
-++ aRow[3] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-++ aRow[4] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-++
-++ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[7] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-++
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getExportedKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eExportedKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getImportedKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eImportedKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getPrimaryKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::ePrimaryKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getIndexInfo(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-++ sal_Bool, sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eIndexInfo );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getBestRowIdentifier(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&, sal_Int32,
-++ sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eBestRowIdentifier );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTablePrivileges(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eTablePrivileges );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCrossReference(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString&, const Any&,
-++ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCrossReference );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getUDTs( const Any&, const ::rtl::OUString&, const ::rtl::OUString&, const Sequence< sal_Int32 >& ) throw(SQLException, RuntimeException)
-++{
-++ OSL_ENSURE(0,"Not implemented yet!");
-++ throw SQLException();
-++}
-++// -----------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx
-+--- connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx 2011-08-17 14:28:31.880975797 -0500
-+@@ -0,0 +1,217 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++#define _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++
-++#include "KConnection.hxx"
-++#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-++#include <cppuhelper/implbase1.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ //**************************************************************
-++ //************ Class: KabDatabaseMetaData
-++ //**************************************************************
-++
-++ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XDatabaseMetaData> KabDatabaseMetaData_BASE;
-++
-++ class KabDatabaseMetaData : public KabDatabaseMetaData_BASE
-++ {
-++ ::com::sun::star::uno::Reference< KabConnection > m_xConnection;
-++ sal_Bool m_bUseCatalog;
-++
-++ public:
-++
-++ inline KabConnection* getOwnConnection() const { return m_xConnection.get(); }
-++
-++ KabDatabaseMetaData(KabConnection* _pCon);
-++ static const ::rtl::OUString & getAddressBookTableName();
-++ virtual ~KabDatabaseMetaData();
-++
-++ // this interface is really BIG
-++ // XDatabaseMetaData
-++ virtual sal_Bool SAL_CALL allProceduresAreCallable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL allTablesAreSelectable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getURL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getUserName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedHigh( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedLow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedAtEnd( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDatabaseProductName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDatabaseProductVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDriverName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDriverVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDriverMajorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDriverMinorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL usesLocalFiles( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL usesLocalFilePerTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesUpperCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesLowerCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getIdentifierQuoteString( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSQLKeywords( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getNumericFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getStringFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSystemFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getTimeDateFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSearchStringEscape( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getExtraNameCharacters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsAlterTableWithAddColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsAlterTableWithDropColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsColumnAliasing( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullPlusNonNullIsNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTypeConversion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsConvert( sal_Int32 fromType, sal_Int32 toType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDifferentTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsExpressionsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOrderByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupByBeyondSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsLikeEscapeClause( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMultipleResultSets( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMultipleTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsNonNullableColumns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMinimumSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCoreSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsExtendedSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92EntryLevelSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92IntermediateSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92FullSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsIntegrityEnhancementFacility( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsFullOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsLimitedOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSchemaTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getProcedureTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCatalogAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogSeparator( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsPositionedDelete( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsPositionedUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSelectForUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsStoredProcedures( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInComparisons( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInExists( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInIns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInQuantifieds( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCorrelatedSubqueries( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsUnion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsUnionAll( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxBinaryLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCharLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInIndex( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxConnections( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCursorNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxIndexLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxSchemaNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxProcedureNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCatalogNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxRowSize( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxStatementLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxStatements( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxTableNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxTablesInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxUserNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDefaultTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTransactionIsolationLevel( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedures( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedureColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTables( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getSchemas( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCatalogs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTableTypes( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumnPrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTablePrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getBestRowIdentifier( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Int32 scope, sal_Bool nullable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getVersionColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog, const ::rtl::OUString& primarySchema, const ::rtl::OUString& primaryTable, const ::com::sun::star::uno::Any& foreignCatalog, const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTypeInfo( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getIndexInfo( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsResultSetType( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 concurrency ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL updatesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL deletesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL insertsAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsBatchUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getUDTs( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& typeNamePattern, const ::com::sun::star::uno::Sequence< sal_Int32 >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDriver.cxx connectivity/source/drivers/tdeab/KDriver.cxx
-+--- connectivity/source/drivers/tdeab/KDriver.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDriver.cxx 2011-08-17 14:28:05.938979574 -0500
-+@@ -0,0 +1,476 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDriver.hxx"
-++#include "TDEInit.h"
-++#include "KConnection.hxx"
-++
-++/** === begin UNO includes === **/
-++#include <com/sun/star/sdb/SQLContext.hpp>
-++#include <com/sun/star/lang/NullPointerException.hpp>
-++#include <com/sun/star/frame/XDesktop.hpp>
-++/** === end UNO includes === **/
-++#include <rtl/ustrbuf.hxx>
-++#include <tools/diagnose_ex.h>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdb;
-++using namespace com::sun::star::frame;
-++using namespace connectivity::kab;
-++
-++// =======================================================================
-++// = KabImplModule
-++// =======================================================================
-++// --------------------------------------------------------------------------------
-++KabImplModule::KabImplModule( const Reference< XMultiServiceFactory >& _rxFactory )
-++ :m_xORB(_rxFactory)
-++ ,m_bAttemptedLoadModule(false)
-++ ,m_bAttemptedInitialize(false)
-++ ,m_hConnectorModule(NULL)
-++ ,m_pConnectionFactoryFunc(NULL)
-++ ,m_pApplicationInitFunc(NULL)
-++ ,m_pApplicationShutdownFunc(NULL)
-++ ,m_pTDEVersionCheckFunc(NULL)
-++{
-++ if ( !m_xORB.is() )
-++ throw NullPointerException();
-++}
-++
-++// --------------------------------------------------------------------------------
-++bool KabImplModule::isTDEPresent()
-++{
-++ if ( !impl_loadModule() )
-++ return false;
-++
-++ return true;
-++}
-++
-++// --------------------------------------------------------------------------------
-++KabImplModule::TDEVersionType KabImplModule::matchTDEVersion()
-++{
-++ OSL_PRECOND( m_pTDEVersionCheckFunc, "KabImplModule::matchTDEVersion: module not loaded!" );
-++
-++ int nVersionInfo = (*m_pTDEVersionCheckFunc)();
-++ if ( nVersionInfo < 0 )
-++ return eTooOld;
-++ if ( nVersionInfo > 0 )
-++ return eToNew;
-++ return eSupported;
-++}
-++
-++// --------------------------------------------------------------------------------
-++namespace
-++{
-++ template< typename FUNCTION >
-++ void lcl_getFunctionFromModuleOrUnload( oslModule& _rModule, const sal_Char* _pAsciiSymbolName, FUNCTION& _rFunction )
-++ {
-++ _rFunction = NULL;
-++ if ( _rModule )
-++ {
-++ //
-++ const ::rtl::OUString sSymbolName = ::rtl::OUString::createFromAscii( _pAsciiSymbolName );
-++ _rFunction = (FUNCTION)( osl_getSymbol( _rModule, sSymbolName.pData ) );
-++
-++ if ( !_rFunction )
-++ { // did not find the symbol
-++ OSL_ENSURE( false, ::rtl::OString( "lcl_getFunctionFromModuleOrUnload: could not find the symbol " ) + ::rtl::OString( _pAsciiSymbolName ) );
-++ osl_unloadModule( _rModule );
-++ _rModule = NULL;
-++ }
-++ }
-++ }
-++}
-++
-++// --------------------------------------------------------------------------------
-++extern "C" { void SAL_CALL thisModule() {} }
-++
-++bool KabImplModule::impl_loadModule()
-++{
-++ if ( m_bAttemptedLoadModule )
-++ return ( m_hConnectorModule != NULL );
-++ m_bAttemptedLoadModule = true;
-++
-++ OSL_ENSURE( !m_hConnectorModule && !m_pConnectionFactoryFunc && !m_pApplicationInitFunc && !m_pApplicationShutdownFunc && !m_pTDEVersionCheckFunc,
-++ "KabImplModule::impl_loadModule: inconsistence: inconsistency (never attempted load before, but some values already set)!");
-++
-++ const ::rtl::OUString sModuleName = ::rtl::OUString::createFromAscii( SAL_MODULENAME( "kabdrv1" ) );
-++ m_hConnectorModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, SAL_LOADMODULE_NOW ); // LAZY! #i61335#
-++ OSL_ENSURE( m_hConnectorModule, "KabImplModule::impl_loadModule: could not load the implementation library!" );
-++ if ( !m_hConnectorModule )
-++ return false;
-++
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "createKabConnection", m_pConnectionFactoryFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "initKApplication", m_pApplicationInitFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "shutdownKApplication", m_pApplicationShutdownFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "matchTDEVersion", m_pTDEVersionCheckFunc );
-++
-++ if ( !m_hConnectorModule )
-++ // one of the symbols did not exist
-++ throw RuntimeException();
-++
-++ return true;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_unloadModule()
-++{
-++ OSL_PRECOND( m_hConnectorModule != NULL, "KabImplModule::impl_unloadModule: no module!" );
-++
-++ osl_unloadModule( m_hConnectorModule );
-++ m_hConnectorModule = NULL;
-++
-++ m_pConnectionFactoryFunc = NULL;
-++ m_pApplicationInitFunc = NULL;
-++ m_pApplicationShutdownFunc = NULL;
-++ m_pTDEVersionCheckFunc = NULL;
-++
-++ m_bAttemptedLoadModule = false;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::init()
-++{
-++ if ( !impl_loadModule() )
-++ impl_throwNoKdeException();
-++
-++ // if we're not running on a supported version, throw
-++ KabImplModule::TDEVersionType eTDEVersion = matchTDEVersion();
-++
-++ if ( eTDEVersion == eTooOld )
-++ impl_throwKdeTooOldException();
-++
-++ if ( ( eTDEVersion == eToNew ) && !impl_doAllowNewTDEVersion() )
-++ impl_throwKdeTooNewException();
-++
-++ if ( !m_bAttemptedInitialize )
-++ {
-++ m_bAttemptedInitialize = true;
-++ (*m_pApplicationInitFunc)();
-++ }
-++}
-++
-++// --------------------------------------------------------------------------------
-++bool KabImplModule::impl_doAllowNewTDEVersion()
-++{
-++ try
-++ {
-++ Reference< XMultiServiceFactory > xConfigProvider(
-++ m_xORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-++ UNO_QUERY_THROW );
-++ Sequence< Any > aCreationArgs(1);
-++ aCreationArgs[0] <<= PropertyValue(
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ),
-++ 0,
-++ makeAny( KabDriver::impl_getConfigurationSettingsPath() ),
-++ PropertyState_DIRECT_VALUE );
-++ Reference< XPropertySet > xSettings( xConfigProvider->createInstanceWithArguments(
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ) ),
-++ aCreationArgs ),
-++ UNO_QUERY_THROW );
-++
-++ sal_Bool bDisableCheck = sal_False;
-++ xSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DisableTDEMaximumVersionCheck" ) ) ) >>= bDisableCheck;
-++
-++ return bDisableCheck != sal_False;
-++ }
-++ catch( const Exception& )
-++ {
-++ DBG_UNHANDLED_EXCEPTION();
-++ }
-++ return false;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwNoKdeException()
-++{
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_NO_TDE_INST
-++ ) );
-++ impl_throwGenericSQLException( sError );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwKdeTooOldException()
-++{
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_TDE_VERSION_TOO_OLD,
-++ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-++ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-++ ) );
-++ impl_throwGenericSQLException( sError );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwGenericSQLException( const ::rtl::OUString& _rMessage )
-++{
-++ SQLException aError;
-++ aError.Message = _rMessage;
-++ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-++ aError.ErrorCode = 0;
-++ throw aError;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwKdeTooNewException()
-++{
-++ ::connectivity::SharedResources aResources;
-++
-++ SQLException aError;
-++ aError.Message = aResources.getResourceStringWithSubstitution(
-++ STR_TDE_VERSION_TOO_NEW,
-++ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-++ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-++ );
-++ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-++ aError.ErrorCode = 0;
-++
-++ SQLContext aDetails;
-++ ::rtl::OUStringBuffer aMessage;
-++ aMessage.append( aResources.getResourceString(STR_TDE_VERSION_TOO_NEW_WORK_AROUND) );
-++
-++ aMessage.appendAscii( "Sub disableTDEMaxVersionCheck\n" );
-++ aMessage.appendAscii( " BasicLibraries.LoadLibrary( \"Tools\" )\n" );
-++
-++ aMessage.appendAscii( " Dim configNode as Object\n" );
-++ aMessage.appendAscii( " configNode = GetRegistryKeyContent( \"" );
-++ aMessage.append( KabDriver::impl_getConfigurationSettingsPath() );
-++ aMessage.appendAscii( "\", true )\n" );
-++
-++ aMessage.appendAscii( " configNode.DisableTDEMaximumVersionCheck = TRUE\n" );
-++ aMessage.appendAscii( " configNode.commitChanges\n" );
-++ aMessage.appendAscii( "End Sub\n" );
-++
-++ aDetails.Message = aMessage.makeStringAndClear();
-++
-++ aError.NextException <<= aDetails;
-++
-++ throw aError;
-++}
-++
-++// --------------------------------------------------------------------------------
-++KabConnection* KabImplModule::createConnection( KabDriver* _pDriver ) const
-++{
-++ OSL_PRECOND( m_hConnectorModule, "KabImplModule::createConnection: not initialized!" );
-++
-++ void* pUntypedConnection = (*m_pConnectionFactoryFunc)( _pDriver );
-++ if ( !pUntypedConnection )
-++ throw RuntimeException();
-++
-++ return static_cast< KabConnection* >( pUntypedConnection );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::shutdown()
-++{
-++ if ( !m_hConnectorModule )
-++ return;
-++
-++ (*m_pApplicationShutdownFunc)();
-++ m_bAttemptedInitialize = false;
-++
-++ impl_unloadModule();
-++}
-++
-++// =======================================================================
-++// = KabDriver
-++// =======================================================================
-++KabDriver::KabDriver(
-++ const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory)
-++ : KDriver_BASE(m_aMutex),
-++ m_xMSFactory(_rxFactory),
-++ m_aImplModule(_rxFactory)
-++{
-++ if ( !m_xMSFactory.is() )
-++ throw NullPointerException();
-++
-++ osl_incrementInterlockedCount( &m_refCount );
-++ try
-++ {
-++ Reference< XDesktop > xDesktop(
-++ m_xMSFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ),
-++ UNO_QUERY_THROW );
-++ xDesktop->addTerminateListener( this );
-++ }
-++ catch( const Exception& )
-++ {
-++ DBG_UNHANDLED_EXCEPTION();
-++ }
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// --------------------------------------------------------------------------------
-++void KabDriver::disposing()
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ // when driver will be destroied so all our connections have to be destroied as well
-++ for (OWeakRefArray::iterator i = m_xConnections.begin(); m_xConnections.end() != i; ++i)
-++ {
-++ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-++ if (xComp.is())
-++ xComp->dispose();
-++ }
-++ m_xConnections.clear();
-++
-++ WeakComponentImplHelperBase::disposing();
-++}
-++// static ServiceInfo
-++//------------------------------------------------------------------------------
-++rtl::OUString KabDriver::getImplementationName_Static( ) throw(RuntimeException)
-++{
-++ return rtl::OUString::createFromAscii( impl_getAsciiImplementationName() );
-++}
-++//------------------------------------------------------------------------------
-++Sequence< ::rtl::OUString > KabDriver::getSupportedServiceNames_Static( ) throw (RuntimeException)
-++{
-++ // which service is supported
-++ // for more information @see com.sun.star.sdbc.Driver
-++ Sequence< ::rtl::OUString > aSNS( 1 );
-++ aSNS[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdbc.Driver");
-++
-++ return aSNS;
-++}
-++//------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDriver::getImplementationName( ) throw(RuntimeException)
-++{
-++ return getImplementationName_Static();
-++}
-++//------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDriver::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
-++{
-++ Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames());
-++ const ::rtl::OUString* pSupported = aSupported.getConstArray();
-++ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
-++
-++ while (pSupported != pEnd && !pSupported->equals(_rServiceName))
-++ ++pSupported;
-++ return pSupported != pEnd;
-++}
-++//------------------------------------------------------------------
-++Sequence< ::rtl::OUString > SAL_CALL KabDriver::getSupportedServiceNames( ) throw(RuntimeException)
-++{
-++ return getSupportedServiceNames_Static();
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabDriver::connect( const ::rtl::OUString& url, const Sequence< PropertyValue >& info ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ m_aImplModule.init();
-++
-++ // create a new connection with the given properties and append it to our vector
-++ KabConnection* pConnection = m_aImplModule.createConnection( this );
-++ OSL_POSTCOND( pConnection, "KabDriver::connect: no connection has been created by the factory!" );
-++
-++ // by definition, the factory function returned an object which was acquired once
-++ Reference< XConnection > xConnection = pConnection;
-++ pConnection->release();
-++
-++ // late constructor call which can throw exception and allows a correct dtor call when so
-++ pConnection->construct( url, info );
-++
-++ // remember it
-++ m_xConnections.push_back( WeakReferenceHelper( *pConnection ) );
-++
-++ return xConnection;
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDriver::acceptsURL( const ::rtl::OUString& url )
-++ throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ if ( !m_aImplModule.isTDEPresent() )
-++ return sal_False;
-++
-++ // here we have to look whether we support this URL format
-++ return (!url.compareTo(::rtl::OUString::createFromAscii("sdbc:address:kab:"), 16));
-++}
-++// --------------------------------------------------------------------------------
-++Sequence< DriverPropertyInfo > SAL_CALL KabDriver::getPropertyInfo( const ::rtl::OUString&, const Sequence< PropertyValue >& ) throw(SQLException, RuntimeException)
-++{
-++ // if you have something special to say, return it here :-)
-++ return Sequence< DriverPropertyInfo >();
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDriver::getMajorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MAJOR;
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDriver::getMinorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MINOR;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::queryTermination( const EventObject& ) throw (TerminationVetoException, RuntimeException)
-++{
-++ // nothing to do, nothing to veto
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::notifyTermination( const EventObject& ) throw (RuntimeException)
-++{
-++ m_aImplModule.shutdown();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::disposing( const EventObject& ) throw (RuntimeException)
-++{
-++ // not interested in (this is the disposing of the desktop, if any)
-++}
-++// --------------------------------------------------------------------------------
-++const sal_Char* KabDriver::impl_getAsciiImplementationName()
-++{
-++ return "com.sun.star.comp.sdbc.kab.Driver";
-++ // this name is referenced in the configuration and in the kab.xml
-++ // Please be careful when changing it.
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString KabDriver::impl_getConfigurationSettingsPath()
-++{
-++ ::rtl::OUStringBuffer aPath;
-++ aPath.appendAscii( "/org.openoffice.Office.DataAccess/DriverSettings/" );
-++ aPath.appendAscii( "com.sun.star.comp.sdbc.kab.Driver" );
-++ return aPath.makeStringAndClear();
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XInterface > SAL_CALL KabDriver::Create( const Reference< XMultiServiceFactory >& _rxFactory ) throw( Exception )
-++{
-++ return *(new KabDriver(_rxFactory));
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDriver.hxx connectivity/source/drivers/tdeab/KDriver.hxx
-+--- connectivity/source/drivers/tdeab/KDriver.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDriver.hxx 2011-08-17 14:27:57.178305442 -0500
-+@@ -0,0 +1,227 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_DRIVER_HXX_
-++#define _CONNECTIVITY_KAB_DRIVER_HXX_
-++
-++/** === begin UNO includes === **/
-++#include <com/sun/star/sdbc/XDriver.hpp>
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/frame/XTerminateListener.hpp>
-++/** === end UNO includes === **/
-++#include <cppuhelper/compbase3.hxx>
-++#include <osl/module.h>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabConnection;
-++ class KabDriver;
-++
-++ typedef void* (SAL_CALL * ConnectionFactoryFunction)( void* _pDriver );
-++ typedef void (SAL_CALL * ApplicationInitFunction)( void );
-++ typedef void (SAL_CALL * ApplicationShutdownFunction)( void );
-++ typedef int (SAL_CALL * TDEVersionCheckFunction)( void );
-++
-++ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-++
-++ // ===============================================================
-++ // = KabImplModule
-++ // ===============================================================
-++ class KabImplModule
-++ {
-++ private:
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-++ m_xORB;
-++
-++ /// Did we already attempt to load the module and to retrieve the symbols?
-++ bool m_bAttemptedLoadModule;
-++ /// Did we already check the TDE version and initialize the impl module (or at least attempted to)?
-++ bool m_bAttemptedInitialize;
-++
-++ oslModule m_hConnectorModule;
-++ ConnectionFactoryFunction m_pConnectionFactoryFunc;
-++ ApplicationInitFunction m_pApplicationInitFunc;
-++ ApplicationShutdownFunction m_pApplicationShutdownFunc;
-++ TDEVersionCheckFunction m_pTDEVersionCheckFunc;
-++
-++ public:
-++ KabImplModule( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory );
-++
-++ /** determines whether there is a TDE present in the environment
-++ */
-++ bool isTDEPresent();
-++
-++ enum TDEVersionType
-++ {
-++ eTooOld,
-++ eSupported,
-++ eToNew
-++ };
-++ /** checks whether the TDE version we're running against is supported
-++ @precond
-++ the module is loaded, i.e impl_loadModule has successfully been called
-++ */
-++ TDEVersionType matchTDEVersion();
-++
-++ /** initializes the implementation module.
-++
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if the module could be loaded, but required symbols are missing
-++ @raises ::com::sun::star::sdbc::SQLException
-++ if the TDE version we're running against is not supported, or no TDE was found at all
-++ */
-++ void init();
-++
-++ /** shuts down the impl module (and the TDE application, if we own it)
-++ */
-++ void shutdown();
-++
-++ /** creates a new connection
-++ @precond
-++ <member>init</member> has been called before
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if no connection object could be created (which is a severe error, normally impossible)
-++ */
-++ KabConnection* createConnection( KabDriver* _pDriver ) const;
-++
-++ private:
-++ /** loads the implementation module and retrieves the needed symbols
-++
-++ Save against being called multiple times.
-++
-++ @return <TRUE/> if the module could be loaded successfully.
-++
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if the module could be loaded, but required symbols are missing
-++ */
-++ bool impl_loadModule();
-++
-++ /** unloads the implementation module, and resets all function pointers to <NULL/>
-++ @precond m_hConnectorModule is not <NULL/>
-++ */
-++ void impl_unloadModule();
-++
-++ /** throws an SQLException saying than no TDE installation was found
-++ */
-++ void impl_throwNoKdeException();
-++
-++ /** throws an SQLException saying that the found TDE version is too old
-++ */
-++ void impl_throwKdeTooOldException();
-++
-++ /** throws an SQLException saying that the found TDE version is too new
-++ */
-++ void impl_throwKdeTooNewException();
-++
-++ /** throws a generic SQL exception with SQLState S1000 and error code 0
-++ */
-++ void impl_throwGenericSQLException( const ::rtl::OUString& _rMessage );
-++
-++ /** determines whether it's allowed to run on a too-new (not confirmed to work) version
-++ */
-++ bool impl_doAllowNewTDEVersion();
-++ };
-++
-++ // ===============================================================
-++ // = KabDriver
-++ // ===============================================================
-++ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XDriver,
-++ ::com::sun::star::lang::XServiceInfo,
-++ ::com::sun::star::frame::XTerminateListener > KDriver_BASE;
-++ class KabDriver : public KDriver_BASE
-++ {
-++ protected:
-++ ::osl::Mutex m_aMutex; // mutex is need to control member access
-++ OWeakRefArray m_xConnections; // vector containing a list of all the
-++ // KabConnection objects for this Driver
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-++ m_xMSFactory; // the multi-service factory
-++ KabImplModule m_aImplModule;
-++
-++ public:
-++ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) throw( ::com::sun::star::uno::Exception );
-++
-++ // XServiceInfo - static versions
-++ static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException);
-++ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static( ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
-++ getMSFactory() const { return m_xMSFactory; }
-++
-++ /** returns the driver's implementation name (being pure ASCII) for reference in various places
-++ */
-++ static const sal_Char* impl_getAsciiImplementationName();
-++
-++ /** returns the path of our configuration settings
-++ */
-++ static ::rtl::OUString impl_getConfigurationSettingsPath();
-++
-++ protected:
-++ KabDriver(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XServiceInfo
-++ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XDriver
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connect( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL acceptsURL( const ::rtl::OUString& url ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sdbc::DriverPropertyInfo > SAL_CALL getPropertyInfo( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMajorVersion() throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMinorVersion() throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XTerminateListener
-++ virtual void SAL_CALL queryTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL notifyTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ // XEventListener
-++ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ private:
-++ /** shuts down the library which contains the real implementations
-++
-++ This method is safe against being called multiple times
-++
-++ @precond our mutex is locked
-++ */
-++ void impl_shutdownImplementationModule();
-++ };
-++ }
-++
-++}
-++
-++#endif // _CONNECTIVITY_KAB_DRIVER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kfields.cxx connectivity/source/drivers/tdeab/kfields.cxx
-+--- connectivity/source/drivers/tdeab/kfields.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kfields.cxx 2011-08-17 14:27:40.557026383 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "kfields.hxx"
-++#include "resource/common_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace ::connectivity::kab;
-++using namespace ::com::sun::star::sdbc;
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++// -----------------------------------------------------------------------------
-++// return the value of a TDE address book field, given an addressee and a field number
-++TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber)
-++{
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++ return aAddressee.revision().toString("yyyy-MM-dd hh:mm:ss");
-++ default:
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ return aFields[nFieldNumber - KAB_DATA_FIELDS]->value(aAddressee);
-++ }
-++}
-++// ------------------------------------------------------------------------------
-++// search the TDE address book field number of a given column name
-++sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(SQLException)
-++{
-++ TQString aQtName;
-++ ::rtl::OUString aName;
-++
-++ aQtName = KABC::Addressee::revisionLabel();
-++ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ if (columnName == aName)
-++ return KAB_FIELD_REVISION;
-++
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ ::KABC::Field::List::iterator aField;
-++ sal_uInt32 nResult;
-++
-++ for ( aField = aFields.begin(), nResult = KAB_DATA_FIELDS;
-++ aField != aFields.end();
-++ ++aField, ++nResult)
-++ {
-++ aQtName = (*aField)->label();
-++ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++
-++ if (columnName == aName)
-++ return nResult;
-++ }
-++
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_INVALID_COLUMNNAME,
-++ "$columnname$",columnName
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// ------------------------------------------------------------------------------
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kfields.hxx connectivity/source/drivers/tdeab/kfields.hxx
-+--- connectivity/source/drivers/tdeab/kfields.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kfields.hxx 2011-08-17 14:27:31.926362235 -0500
-+@@ -0,0 +1,51 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_FIELDS_HXX_
-++#define _CONNECTIVITY_KAB_FIELDS_HXX_
-++
-++#include <shell/tde_headers.h>
-++#include <connectivity/dbexception.hxx>
-++#include <rtl/ustring.hxx>
-++
-++#define KAB_FIELD_REVISION 0
-++#define KAB_DATA_FIELDS 1
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber);
-++ sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(::com::sun::star::sdbc::SQLException);
-++ }
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/korder.cxx connectivity/source/drivers/tdeab/korder.cxx
-+--- connectivity/source/drivers/tdeab/korder.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/korder.cxx 2011-08-17 14:27:22.785658823 -0500
-+@@ -0,0 +1,92 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "korder.hxx"
-++#include "kfields.hxx"
-++
-++using namespace ::connectivity::kab;
-++
-++KabOrder::~KabOrder()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabSimpleOrder::KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending)
-++ : KabOrder(),
-++ m_nFieldNumber(findKabField(sColumnName)),
-++ m_bAscending(bAscending)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 KabSimpleOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-++{
-++ sal_Int32 result;
-++
-++ result = TQString::compare(
-++ valueOfKabField(aAddressee1, m_nFieldNumber),
-++ valueOfKabField(aAddressee2, m_nFieldNumber));
-++// Timestamps should be compared differently than with their string value
-++
-++ if (!m_bAscending) result = -result;
-++
-++ return result;
-++}
-++// -----------------------------------------------------------------------------
-++KabComplexOrder::KabComplexOrder()
-++ : KabOrder(),
-++ m_aOrders()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabComplexOrder::~KabComplexOrder()
-++{
-++ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-++ delete m_aOrders[i];
-++}
-++// -----------------------------------------------------------------------------
-++void KabComplexOrder::addOrder(KabOrder *pOrder)
-++{
-++ m_aOrders.push_back(pOrder);
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 KabComplexOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-++{
-++ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-++ {
-++ const KabOrder *pOrder = m_aOrders[i];
-++ sal_Int32 result = pOrder->compare(aAddressee1, aAddressee2);
-++
-++ if (result) return result;
-++ }
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/korder.hxx connectivity/source/drivers/tdeab/korder.hxx
-+--- connectivity/source/drivers/tdeab/korder.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/korder.hxx 2011-08-17 14:27:15.825123174 -0500
-+@@ -0,0 +1,78 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_ORDER_HXX_
-++#define _CONNECTIVITY_KAB_ORDER_HXX_
-++
-++#include "rtl/ustring.hxx"
-++#include <shell/tde_headers.h>
-++
-++#include <vector>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabOrder
-++ {
-++ public:
-++ virtual ~KabOrder();
-++
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const = 0;
-++ };
-++
-++ class KabSimpleOrder : public KabOrder
-++ {
-++ sal_Int32 m_nFieldNumber;
-++ sal_Bool m_bAscending;
-++
-++ TQString value(const ::KABC::Addressee &aAddressee) const;
-++ public:
-++ KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending);
-++
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-++ };
-++
-++ class KabComplexOrder : public KabOrder
-++ {
-++ ::std::vector<KabOrder *> m_aOrders;
-++
-++ public:
-++ KabComplexOrder();
-++ virtual ~KabComplexOrder();
-++
-++ void addOrder(KabOrder *pOrder);
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-++ };
-++ }
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KPreparedStatement.cxx connectivity/source/drivers/tdeab/KPreparedStatement.cxx
-+--- connectivity/source/drivers/tdeab/KPreparedStatement.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KPreparedStatement.cxx 2011-08-17 14:27:09.434631390 -0500
-+@@ -0,0 +1,394 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KPreparedStatement.hxx"
-++#include "propertyids.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include <connectivity/dbtools.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::util;
-++
-++IMPLEMENT_SERVICE_INFO(KabPreparedStatement, "com.sun.star.sdbc.drivers.KabPreparedStatement", "com.sun.star.sdbc.PreparedStatement");
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::checkAndResizeParameters(sal_Int32 nParams) throw(SQLException)
-++{
-++ if ( !m_aParameterRow.is() )
-++ m_aParameterRow = new OValueVector();
-++
-++ if (nParams < 1)
-++ ::dbtools::throwInvalidIndexException(*(KabPreparedStatement *) this,Any());
-++
-++ if (nParams >= (sal_Int32) (m_aParameterRow->get()).size())
-++ (m_aParameterRow->get()).resize(nParams);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::setKabFields() const throw(SQLException)
-++{
-++ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-++
-++ xColumns = m_aSQLIterator.getSelectColumns();
-++ if (!xColumns.is())
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_INVALID_COLUMN_SELECTION
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ }
-++ m_xMetaData->setKabFields(xColumns);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::resetParameters() const throw(SQLException)
-++{
-++ m_nParameterIndex = 0;
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::getNextParameter(::rtl::OUString &rParameter) const throw(SQLException)
-++{
-++ if (m_nParameterIndex >= (sal_Int32) (m_aParameterRow->get()).size())
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_INVALID_PARA_COUNT
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,*(KabPreparedStatement *) this);
-++ } // if (m_nParameterIndex >= (sal_Int32) (*m_aParameterRow).size())
-++
-++ rParameter = (m_aParameterRow->get())[m_nParameterIndex];
-++
-++ m_nParameterIndex++;
-++}
-++// -------------------------------------------------------------------------
-++KabPreparedStatement::KabPreparedStatement(
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& sql)
-++ : KabPreparedStatement_BASE(_pConnection),
-++ m_sSqlStatement(sql),
-++ m_bPrepared(sal_False),
-++ m_nParameterIndex(0),
-++ m_aParameterRow()
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabPreparedStatement::~KabPreparedStatement()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::disposing()
-++{
-++ KabPreparedStatement_BASE::disposing();
-++
-++ if (m_aParameterRow.is())
-++ {
-++ m_aParameterRow->get().clear();
-++ m_aParameterRow = NULL;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSetMetaData > SAL_CALL KabPreparedStatement::getMetaData() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ if (!m_xMetaData.is())
-++ {
-++ m_xMetaData = new KabResultSetMetaData(getOwnConnection());
-++ setKabFields();
-++ }
-++ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-++ return xMetaData;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::close() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // Reset last warning message
-++ try {
-++ clearWarnings ();
-++ KabCommonStatement::close();
-++ }
-++ catch (SQLException &) {
-++ // If we get an error, ignore
-++ }
-++
-++ // Remove this Statement object from the Connection object's
-++ // list
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabPreparedStatement::execute() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet> xRS = KabCommonStatement::executeQuery(m_sSqlStatement);
-++
-++ return xRS.is();
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabPreparedStatement::executeUpdate() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // same as in statement with the difference that this statement also can contain parameter
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabPreparedStatement::getConnection() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ return (Reference< XConnection >) m_pConnection;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabPreparedStatement::executeQuery() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet > rs = KabCommonStatement::executeQuery(m_sSqlStatement);
-++
-++ return rs;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setNull(sal_Int32 parameterIndex, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ checkAndResizeParameters(parameterIndex);
-++
-++ (m_aParameterRow->get())[parameterIndex - 1].setNull();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObjectNull(sal_Int32, sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setObjectNull", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBoolean", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setByte", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setShort", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setInt", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setFloat", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setDouble", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setString(sal_Int32 parameterIndex, const ::rtl::OUString &x) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ checkAndResizeParameters(parameterIndex);
-++
-++ (m_aParameterRow->get())[parameterIndex - 1] = x;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBytes", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setDate", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setTime", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setTimestamp", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBinaryStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBinaryStream", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setCharacterStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setCharacterStream", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObject(sal_Int32 parameterIndex, const Any& x) throw(SQLException, RuntimeException)
-++{
-++ if(!::dbtools::implSetObject(this,parameterIndex,x))
-++ {
-++ throw SQLException();
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObjectWithInfo(sal_Int32, const Any&, sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setObjectWithInfo", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setRef(sal_Int32, const Reference< XRef >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setRef", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBlob(sal_Int32, const Reference< XBlob >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBlob", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setClob(sal_Int32, const Reference< XClob >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setClob", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setArray(sal_Int32, const Reference< XArray >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setArray", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::clearParameters() throw(SQLException, RuntimeException)
-++{
-++::dbtools::throwFunctionNotSupportedException("clearParameters", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ break;
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ break;
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ break;
-++ default:
-++ KabCommonStatement::setFastPropertyValue_NoBroadcast(nHandle,rValue);
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KPreparedStatement.hxx connectivity/source/drivers/tdeab/KPreparedStatement.hxx
-+--- connectivity/source/drivers/tdeab/KPreparedStatement.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KPreparedStatement.hxx 2011-08-17 14:27:04.434246577 -0500
-+@@ -0,0 +1,123 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++#define _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++
-++#include "KStatement.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include <connectivity/FValue.hxx>
-++#include <com/sun/star/sdbc/XParameters.hpp>
-++#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-++#include <cppuhelper/implbase4.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++
-++ class OBoundParam;
-++ typedef ::cppu::ImplInheritanceHelper4< KabCommonStatement,
-++ ::com::sun::star::sdbc::XPreparedStatement,
-++ ::com::sun::star::sdbc::XParameters,
-++ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-++ ::com::sun::star::lang::XServiceInfo> KabPreparedStatement_BASE;
-++
-++ class KabPreparedStatement : public KabPreparedStatement_BASE
-++ {
-++ protected:
-++ ::rtl::OUString m_sSqlStatement;
-++ ::rtl::Reference< KabResultSetMetaData >
-++ m_xMetaData;
-++ sal_Bool m_bPrepared;
-++ mutable sal_Int32 m_nParameterIndex;
-++ OValueRow m_aParameterRow;
-++
-++ void checkAndResizeParameters(sal_Int32 nParams) throw(::com::sun::star::sdbc::SQLException);
-++ void setKabFields() const throw(::com::sun::star::sdbc::SQLException);
-++
-++ protected:
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-++
-++ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-++ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-++ virtual ~KabPreparedStatement();
-++
-++ public:
-++ DECLARE_SERVICE_INFO();
-++ KabPreparedStatement(KabConnection* _pConnection, const ::rtl::OUString& sql);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing();
-++
-++ // XPreparedStatement
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL executeUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XParameters
-++ virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetMetaDataSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSet.cxx connectivity/source/drivers/tdeab/KResultSet.cxx
-+--- connectivity/source/drivers/tdeab/KResultSet.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSet.cxx 2011-08-17 14:26:57.383703991 -0500
-+@@ -0,0 +1,991 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KResultSet.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include "KConnection.hxx"
-++#include "kcondition.hxx"
-++#include "korder.hxx"
-++#include "kfields.hxx"
-++#include <com/sun/star/beans/PropertyAttribute.hpp>
-++#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-++#include "TConnection.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace cppu;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++using namespace com::sun::star::io;
-++using namespace com::sun::star::util;
-++
-++IMPLEMENT_SERVICE_INFO(KabResultSet, "com.sun.star.sdbc.drivers.KabResultSet", "com.sun.star.sdbc.ResultSet");
-++// -------------------------------------------------------------------------
-++KabResultSet::KabResultSet(KabCommonStatement* pStmt)
-++ : KabResultSet_BASE(m_aMutex),
-++ OPropertySetHelper(KabResultSet_BASE::rBHelper),
-++ m_xStatement(pStmt),
-++ m_xMetaData(NULL),
-++ m_aKabAddressees(),
-++ m_nRowPos(-1),
-++ m_bWasNull(sal_True)
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabResultSet::~KabResultSet()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::allKabAddressees()
-++{
-++ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-++ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-++
-++ m_aKabAddressees = pAddressBook->allAddressees();
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::someKabAddressees(const KabCondition *pCondition)
-++{
-++ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-++ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-++
-++ KABC::AddressBook::Iterator iterator;
-++
-++ for (iterator = pAddressBook->begin();
-++ iterator != pAddressBook->end();
-++ ++iterator)
-++ {
-++ if (pCondition->eval(*iterator))
-++ m_aKabAddressees.push_back(*iterator);
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::sortKabAddressees(const KabOrder *pOrder)
-++{
-++ // We do not use class KAddresseeList, which has a sorting algorithm in it, because
-++ // it uses templates. It would expand to more or less the same code as the one
-++ // which follows, but it would need not be called in a much less convenient way.
-++
-++ KABC::Addressee::List::Iterator
-++ begin = m_aKabAddressees.begin(),
-++ end = m_aKabAddressees.end(),
-++ iterator;
-++
-++ // Bubble sort. Feel free to implement a better algorithm.
-++ while (begin != end)
-++ {
-++ end--;
-++ for (iterator = begin; iterator != end; ++iterator)
-++ {
-++ if (pOrder->compare(*iterator, *end) > 0)
-++ qSwap(*iterator, *end);
-++ }
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::disposing()
-++{
-++ OPropertySetHelper::disposing();
-++
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++m_xStatement.clear();
-++m_xMetaData.clear();
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::queryInterface(const Type & rType) throw(RuntimeException)
-++{
-++ Any aRet = OPropertySetHelper::queryInterface(rType);
-++ if (!aRet.hasValue())
-++ aRet = KabResultSet_BASE::queryInterface(rType);
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::acquire() throw()
-++{
-++ KabResultSet_BASE::acquire();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::release() throw()
-++{
-++ KabResultSet_BASE::release();
-++}
-++// -------------------------------------------------------------------------
-++Sequence< Type > SAL_CALL KabResultSet::getTypes() throw(RuntimeException)
-++{
-++ OTypeCollection aTypes(
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XMultiPropertySet >*) 0),
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XFastPropertySet >*) 0),
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XPropertySet >*) 0));
-++
-++ return comphelper::concatSequences(aTypes.getTypes(), KabResultSet_BASE::getTypes());
-++}
-++// -------------------------------------------------------------------------
-++::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabResultSet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
-++{
-++ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::findColumn(const ::rtl::OUString& columnName) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // find the first column with the name columnName
-++ Reference< XResultSetMetaData > xMeta = getMetaData();
-++ sal_Int32 nLen = xMeta->getColumnCount();
-++
-++ for (sal_Int32 i = 1; i <= nLen; ++i)
-++ if (xMeta->isCaseSensitive(i) ?
-++ columnName == xMeta->getColumnName(i) :
-++ columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)))
-++ return i;
-++
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_INVALID_COLUMNNAME,
-++ "$columnname$",columnName
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSet::getString(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString aRet;
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-++ {
-++ sal_Int32 nFieldNumber = m_xMetaData->fieldAtColumn(columnIndex);
-++ TQString aQtName;
-++
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++// trigger an exception here
-++m_bWasNull = true;
-++return aRet;
-++ default:
-++ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->value(m_aKabAddressees[m_nRowPos]);
-++ }
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++ if (!aQtName.isNull())
-++ {
-++ m_bWasNull = false;
-++ aRet = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ return aRet;
-++ }
-++ }
-++// Trigger an exception ?
-++ m_bWasNull = true;
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::getBoolean(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBoolean", NULL);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int8 SAL_CALL KabResultSet::getByte(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getByte", NULL);
-++
-++ sal_Int8 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int16 SAL_CALL KabResultSet::getShort(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getShort", NULL);
-++
-++ sal_Int16 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::getInt(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getInt", NULL);
-++
-++ sal_Int32 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int64 SAL_CALL KabResultSet::getLong(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getLong", NULL);
-++
-++ return sal_Int64();
-++}
-++// -------------------------------------------------------------------------
-++float SAL_CALL KabResultSet::getFloat(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getFloat", NULL);
-++
-++ float nVal(0);
-++ return nVal;
-++}
-++// -------------------------------------------------------------------------
-++double SAL_CALL KabResultSet::getDouble(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getDouble", NULL);
-++
-++ double nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++Sequence< sal_Int8 > SAL_CALL KabResultSet::getBytes(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("", NULL);
-++
-++ return Sequence< sal_Int8 >();
-++}
-++// -------------------------------------------------------------------------
-++Date SAL_CALL KabResultSet::getDate(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getDate", NULL);
-++
-++ Date aRet;
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++Time SAL_CALL KabResultSet::getTime(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getTime", NULL);
-++
-++ Time nRet;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++DateTime SAL_CALL KabResultSet::getTimestamp(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ DateTime nRet;
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-++ {
-++ KabResultSetMetaData *pMeta = static_cast<KabResultSetMetaData *>(m_xMetaData.get());
-++ sal_Int32 nFieldNumber = pMeta->fieldAtColumn(columnIndex);
-++
-++ if (nFieldNumber == KAB_FIELD_REVISION)
-++ {
-++ TQDateTime nRevision(m_aKabAddressees[m_nRowPos].revision());
-++
-++ if (!nRevision.isNull())
-++ {
-++ m_bWasNull = false;
-++ nRet.Year = nRevision.date().year();
-++ nRet.Month = nRevision.date().month();
-++ nRet.Day = nRevision.date().day();
-++ nRet.Hours = nRevision.time().hour();
-++ nRet.Minutes = nRevision.time().minute();
-++ nRet.Seconds = nRevision.time().second();
-++ nRet.HundredthSeconds = nRevision.time().msec() / 10;
-++ return nRet;
-++ }
-++ }
-++ else {
-++ ;
-++ }
-++// trigger an exception here
-++ }
-++// Trigger an exception ?
-++ m_bWasNull = true;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInputStream > SAL_CALL KabResultSet::getBinaryStream(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBinaryStream", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInputStream > SAL_CALL KabResultSet::getCharacterStream(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getCharacterStream", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::getObject(sal_Int32, const Reference< ::com::sun::star::container::XNameAccess >&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getObject", NULL);
-++
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XRef > SAL_CALL KabResultSet::getRef(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getRef", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XBlob > SAL_CALL KabResultSet::getBlob(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBlob", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XClob > SAL_CALL KabResultSet::getClob(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getClob", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XArray > SAL_CALL KabResultSet::getArray(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getArray", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSetMetaData > SAL_CALL KabResultSet::getMetaData() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (!m_xMetaData.is())
-++ m_xMetaData = new KabResultSetMetaData(m_xStatement->getOwnConnection());
-++
-++ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-++ return xMetaData;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isBeforeFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (m_nRowPos == -1)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isAfterLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (m_nRowPos == nAddressees)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (m_nRowPos == 0)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (m_nRowPos == nAddressees - 1)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::beforeFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // move before the first row
-++ m_nRowPos = -1;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::afterLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // move after the last row
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ m_nRowPos = nAddressees;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::close() throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ }
-++ dispose();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::first() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (nAddressees == 0)
-++ return sal_False;
-++
-++ m_nRowPos = 0;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::last() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (nAddressees == 0)
-++ return sal_False;
-++
-++ m_nRowPos = nAddressees - 1;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::getRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return m_nRowPos;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::absolute(sal_Int32 row) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (row <= -1 ||
-++ row >= nAddressees)
-++ return sal_False;
-++
-++ m_nRowPos = row;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::relative(sal_Int32 row) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos + row);
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::next() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos + 1);
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::previous() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos - 1);
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInterface > SAL_CALL KabResultSet::getStatement() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ Reference< XStatement > xStatement = m_xStatement.get();
-++ return xStatement;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowDeleted() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowInserted() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowUpdated() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::wasNull() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return m_bWasNull;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::cancel() throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::clearWarnings() throw(SQLException, RuntimeException)
-++{
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::getWarnings() throw(SQLException, RuntimeException)
-++{
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::insertRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // you only have to implement this if you want to insert new rows
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // only when you allow updates
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::deleteRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::cancelRowUpdates() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::moveToInsertRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // only when you allow inserts
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::moveToCurrentRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateNull(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-++{
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -----------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateString(sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBinaryStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateCharacterStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::refreshRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateObject(sal_Int32, const Any&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateNumericObject(sal_Int32, const Any&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++// XRowLocate
-++Any SAL_CALL KabResultSet::getBookmark() throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees)
-++ {
-++ TQString aQtName = m_aKabAddressees[m_nRowPos].uid();
-++ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ return makeAny(sUniqueIdentifier);
-++ }
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::moveToBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ for (sal_Int32 nRow = 0; nRow < nAddressees; nRow++)
-++ {
-++ TQString aQtName = m_aKabAddressees[nRow].uid();
-++ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++
-++ if (sUniqueIdentifier == sBookmark)
-++ {
-++ m_nRowPos = nRow;
-++ return sal_True;
-++ }
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nRowSave = m_nRowPos;
-++
-++ if (moveToBookmark(bookmark))
-++ {
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ m_nRowPos += rows;
-++
-++ if (-1 < m_nRowPos && m_nRowPos < nAddressees)
-++ return sal_True;
-++ }
-++
-++ m_nRowPos = nRowSave;
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::compareBookmarks(const Any& firstItem, const Any& secondItem) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sFirst = comphelper::getString(firstItem);
-++ ::rtl::OUString sSecond = comphelper::getString(secondItem);
-++
-++ if (sFirst < sSecond)
-++ return CompareBookmark::LESS;
-++ if (sFirst > sSecond)
-++ return CompareBookmark::GREATER;
-++ return CompareBookmark::EQUAL;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::hasOrderedBookmarks() throw( SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::hashBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-++
-++ return sBookmark.hashCode();
-++}
-++// -------------------------------------------------------------------------
-++// XDeleteRows
-++Sequence< sal_Int32 > SAL_CALL KabResultSet::deleteRows(const Sequence< Any >&) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return Sequence< sal_Int32 >();
-++}
-++// -------------------------------------------------------------------------
-++IPropertyArrayHelper* KabResultSet::createArrayHelper() const
-++{
-++ Sequence< Property > aProps(6);
-++ Property* pProperties = aProps.getArray();
-++ sal_Int32 nPos = 0;
-++ DECL_PROP1IMPL(CURSORNAME, ::rtl::OUString) PropertyAttribute::READONLY);
-++ DECL_PROP0(FETCHDIRECTION, sal_Int32);
-++ DECL_PROP0(FETCHSIZE, sal_Int32);
-++ DECL_BOOL_PROP1IMPL(ISBOOKMARKABLE) PropertyAttribute::READONLY);
-++ DECL_PROP1IMPL(RESULTSETCONCURRENCY,sal_Int32) PropertyAttribute::READONLY);
-++ DECL_PROP1IMPL(RESULTSETTYPE, sal_Int32) PropertyAttribute::READONLY);
-++
-++ return new OPropertyArrayHelper(aProps);
-++}
-++// -------------------------------------------------------------------------
-++IPropertyArrayHelper & KabResultSet::getInfoHelper()
-++{
-++ return *static_cast<KabResultSet*>(this)->getArrayHelper();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool KabResultSet::convertFastPropertyValue(
-++ Any &,
-++ Any &,
-++ sal_Int32 nHandle,
-++ const Any& )
-++ throw (::com::sun::star::lang::IllegalArgumentException)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ throw ::com::sun::star::lang::IllegalArgumentException();
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ default:
-++ ;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const Any& )
-++ throw (Exception)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ throw Exception();
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ break;
-++ case PROPERTY_ID_FETCHSIZE:
-++ break;
-++ default:
-++ ;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::getFastPropertyValue(
-++ Any& _rValue,
-++ sal_Int32 nHandle) const
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ _rValue <<= (sal_Bool)sal_False;
-++ break;
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ ;
-++ }
-++}
-++// -----------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSet.hxx connectivity/source/drivers/tdeab/KResultSet.hxx
-+--- connectivity/source/drivers/tdeab/KResultSet.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSet.hxx 2011-08-17 14:26:47.312928966 -0500
-+@@ -0,0 +1,228 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_RESULTSET_HXX_
-++#define _CONNECTIVITY_KAB_RESULTSET_HXX_
-++
-++#include "KStatement.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include <shell/tde_headers.h>
-++#include <com/sun/star/sdbc/XRow.hpp>
-++#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-++#include <com/sun/star/sdbc/XColumnLocate.hpp>
-++#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-++#include <com/sun/star/sdbc/XRowUpdate.hpp>
-++#include <com/sun/star/sdbcx/XRowLocate.hpp>
-++#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-++#include <cppuhelper/compbase12.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ /*
-++ ** KabResultSet
-++ */
-++ typedef ::cppu::WeakComponentImplHelper12< ::com::sun::star::sdbc::XResultSet,
-++ ::com::sun::star::sdbc::XRow,
-++ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::sdbc::XResultSetUpdate,
-++ ::com::sun::star::sdbc::XRowUpdate,
-++ ::com::sun::star::sdbcx::XRowLocate,
-++ ::com::sun::star::sdbcx::XDeleteRows,
-++ ::com::sun::star::sdbc::XCloseable,
-++ ::com::sun::star::sdbc::XColumnLocate,
-++ ::com::sun::star::lang::XServiceInfo> KabResultSet_BASE;
-++
-++ class KabResultSet : public comphelper::OBaseMutex,
-++ public KabResultSet_BASE,
-++ public ::cppu::OPropertySetHelper,
-++ public comphelper::OPropertyArrayUsageHelper<KabResultSet>
-++ {
-++ protected:
-++ ::rtl::Reference< KabCommonStatement > m_xStatement; // the statement that has created this result set
-++ ::rtl::Reference< KabResultSetMetaData > m_xMetaData; // the description of the columns in this result set
-++ ::KABC::Addressee::List m_aKabAddressees; // address book entries matching the query
-++ sal_Int32 m_nRowPos; // the current row within the result set
-++ sal_Bool m_bWasNull; // last entry retrieved from this result set was NULL
-++
-++ // OPropertyArrayUsageHelper
-++ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-++
-++ // OPropertySetHelper
-++ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-++
-++ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-++ ::com::sun::star::uno::Any & rConvertedValue,
-++ ::com::sun::star::uno::Any & rOldValue,
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue)
-++ throw (::com::sun::star::lang::IllegalArgumentException);
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue)
-++ throw (::com::sun::star::uno::Exception);
-++ virtual void SAL_CALL getFastPropertyValue(
-++ ::com::sun::star::uno::Any& rValue,
-++ sal_Int32 nHandle) const;
-++
-++ // you can't delete objects of this type
-++ virtual ~KabResultSet();
-++
-++ public:
-++ DECLARE_SERVICE_INFO();
-++
-++ KabResultSet(KabCommonStatement *pStmt);
-++
-++ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > operator *()
-++ {
-++ return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(*(KabResultSet_BASE*) this);
-++ }
-++
-++ void allKabAddressees();
-++ void someKabAddressees(const class KabCondition *pCondition);
-++ void sortKabAddressees(const class KabOrder *pOrder);
-++
-++ // ::cppu::OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XInterface
-++ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL acquire() throw();
-++ virtual void SAL_CALL release() throw();
-++
-++ // XTypeProvider
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XPropertySet
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSet
-++ virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XRow
-++ virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetMetaDataSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCancellable
-++ virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetUpdate
-++ virtual void SAL_CALL insertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL deleteRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ // XRowUpdate
-++ virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBytes( sal_Int32 columnIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBinaryStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XColumnLocate
-++ virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XRowLocate
-++ virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& firstItem, const ::com::sun::star::uno::Any& secondItem ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XDeleteRows
-++ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_RESULTSET_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSetMetaData.cxx connectivity/source/drivers/tdeab/KResultSetMetaData.cxx
-+--- connectivity/source/drivers/tdeab/KResultSetMetaData.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSetMetaData.cxx 2011-08-17 14:26:20.900896322 -0500
-+@@ -0,0 +1,191 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KResultSetMetaData.hxx"
-++#include "kfields.hxx"
-++#include "KDatabaseMetaData.hxx"
-++#include <com/sun/star/sdbc/DataType.hpp>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::sdbc;
-++
-++KabResultSetMetaData::KabResultSetMetaData(KabConnection* _pConnection)
-++ : m_pConnection(_pConnection),
-++ m_aKabFields()
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabResultSetMetaData::~KabResultSetMetaData()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSetMetaData::setKabFields(const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(SQLException)
-++{
-++ OSQLColumns::Vector::const_iterator aIter;
-++ static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name"));
-++
-++ for (aIter = xColumns->get().begin(); aIter != xColumns->get().end(); ++aIter)
-++ {
-++ ::rtl::OUString aFieldName;
-++ sal_uInt32 nFieldNumber;
-++
-++ (*aIter)->getPropertyValue(aName) >>= aFieldName;
-++ nFieldNumber = findKabField(aFieldName);
-++ m_aKabFields.push_back(nFieldNumber);
-++ }
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnDisplaySize(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields[column - 1] < KAB_DATA_FIELDS? 20: 50;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnType(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields[column - 1] == KAB_FIELD_REVISION? DataType::TIMESTAMP: DataType::CHAR;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnCount() throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields.size();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isCaseSensitive(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getSchemaName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnName(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ sal_uInt32 nFieldNumber = m_aKabFields[column - 1];
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ TQString aQtName;
-++
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++ aQtName = KABC::Addressee::revisionLabel();
-++ break;
-++ default:
-++ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->label();
-++ }
-++ ::rtl::OUString aName((const sal_Unicode *) aQtName.ucs2());
-++
-++ return aName;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getTableName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return KabDatabaseMetaData::getAddressBookTableName();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getCatalogName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnTypeName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnLabel(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnServiceName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isCurrency(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isAutoIncrement(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isSigned(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getPrecision(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return 0;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getScale(sal_Int32) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
-++{
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::isNullable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return (sal_Int32) sal_True;
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isSearchable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isReadOnly(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isDefinitelyWritable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isWritable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSetMetaData.hxx connectivity/source/drivers/tdeab/KResultSetMetaData.hxx
-+--- connectivity/source/drivers/tdeab/KResultSetMetaData.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSetMetaData.hxx 2011-08-17 14:26:13.350315217 -0500
-+@@ -0,0 +1,95 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++#define _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++
-++#include "KConnection.hxx"
-++#include <connectivity/CommonTools.hxx>
-++#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-++#include <cppuhelper/implbase1.hxx>
-++#include <rtl/ref.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ /*
-++ ** KabResultSetMetaData
-++ */
-++ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XResultSetMetaData> KabResultSetMetaData_BASE;
-++
-++ class KabResultSetMetaData : public KabResultSetMetaData_BASE
-++ {
-++ KabConnection* m_pConnection;
-++ ::std::vector<sal_Int32> m_aKabFields; // for each selected column, contains the number
-++ // of the corresponding KAddressBook field
-++
-++ protected:
-++ virtual ~KabResultSetMetaData();
-++
-++ public:
-++ KabResultSetMetaData(KabConnection* _pConnection);
-++
-++ // avoid ambigous cast error from the compiler
-++ inline operator ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > () throw()
-++ { return this; }
-++
-++ void setKabFields(
-++ const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(::com::sun::star::sdbc::SQLException);
-++ inline sal_uInt32 fieldAtColumn(sal_Int32 columnIndex) const
-++ { return m_aKabFields[columnIndex - 1]; }
-++
-++ virtual sal_Int32 SAL_CALL getColumnCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isAutoIncrement( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCaseSensitive( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isSearchable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCurrency( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL isNullable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isSigned( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getColumnDisplaySize( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnLabel( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSchemaName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getPrecision( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getScale( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getTableName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getColumnType( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnTypeName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isDefinitelyWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnServiceName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KServices.cxx connectivity/source/drivers/tdeab/KServices.cxx
-+--- connectivity/source/drivers/tdeab/KServices.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KServices.cxx 2011-08-17 14:26:08.609950397 -0500
-+@@ -0,0 +1,180 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDriver.hxx"
-++#include <cppuhelper/factory.hxx>
-++#include <osl/diagnose.h>
-++
-++using namespace connectivity::kab;
-++using ::rtl::OUString;
-++using ::com::sun::star::uno::Reference;
-++using ::com::sun::star::uno::Sequence;
-++using ::com::sun::star::registry::XRegistryKey;
-++using ::com::sun::star::lang::XSingleServiceFactory;
-++using ::com::sun::star::lang::XMultiServiceFactory;
-++
-++typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
-++ (
-++ const Reference< XMultiServiceFactory > & rServiceManager,
-++ const OUString & rComponentName,
-++ ::cppu::ComponentInstantiation pCreateFunction,
-++ const Sequence< OUString > & rServiceNames,
-++ rtl_ModuleCount* _pTemp
-++ );
-++
-++//***************************************************************************************
-++//
-++// The following C Api must be provided!
-++// It consists in three functions that must be exported by the module
-++//
-++
-++//---------------------------------------------------------------------------------------
-++void REGISTER_PROVIDER(
-++ const OUString& aServiceImplName,
-++ const Sequence< OUString>& Services,
-++ const Reference< ::com::sun::star::registry::XRegistryKey > & xKey)
-++{
-++ OUString aMainKeyName;
-++ aMainKeyName = OUString::createFromAscii("/");
-++ aMainKeyName += aServiceImplName;
-++ aMainKeyName += OUString::createFromAscii("/UNO/SERVICES");
-++
-++ Reference< ::com::sun::star::registry::XRegistryKey > xNewKey( xKey->createKey(aMainKeyName) );
-++ OSL_ENSURE(xNewKey.is(), "KAB::component_writeInfo : could not create a registry key !");
-++
-++ for (sal_Int32 i=0; i<Services.getLength(); ++i)
-++ xNewKey->createKey(Services[i]);
-++}
-++
-++
-++//---------------------------------------------------------------------------------------
-++struct ProviderRequest
-++{
-++ Reference< XSingleServiceFactory > xRet;
-++ Reference< XMultiServiceFactory > const xServiceManager;
-++ OUString const sImplementationName;
-++
-++ ProviderRequest(
-++ void* pServiceManager,
-++ sal_Char const* pImplementationName
-++ )
-++ : xServiceManager(reinterpret_cast<XMultiServiceFactory*>(pServiceManager))
-++ , sImplementationName(OUString::createFromAscii(pImplementationName))
-++ {
-++ }
-++
-++ inline
-++ sal_Bool CREATE_PROVIDER(
-++ const OUString& Implname,
-++ const Sequence< OUString > & Services,
-++ ::cppu::ComponentInstantiation Factory,
-++ createFactoryFunc creator
-++ )
-++ {
-++ if (!xRet.is() && (Implname == sImplementationName))
-++ try
-++ {
-++ xRet = creator( xServiceManager, sImplementationName,Factory, Services,0);
-++ }
-++ catch(...)
-++ {
-++ }
-++ return xRet.is();
-++ }
-++
-++ void* getProvider() const { return xRet.get(); }
-++};
-++
-++//---------------------------------------------------------------------------------------
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
-++ const sal_Char **ppEnvTypeName,
-++ uno_Environment **
-++ )
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++//---------------------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-++ void*,
-++ void* pRegistryKey
-++ )
-++{
-++ if (pRegistryKey)
-++ try
-++ {
-++ Reference< ::com::sun::star::registry::XRegistryKey > xKey(reinterpret_cast< ::com::sun::star::registry::XRegistryKey*>(pRegistryKey));
-++
-++ REGISTER_PROVIDER(
-++ KabDriver::getImplementationName_Static(),
-++ KabDriver::getSupportedServiceNames_Static(), xKey);
-++
-++ return sal_True;
-++ }
-++ catch (::com::sun::star::registry::InvalidRegistryException& )
-++ {
-++ OSL_ENSURE(sal_False, "KAB::component_writeInfo : could not create a registry key ! ## InvalidRegistryException !");
-++ }
-++
-++ return sal_False;
-++}
-++
-++//---------------------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(
-++ const sal_Char* pImplementationName,
-++ void* pServiceManager,
-++ void*)
-++{
-++ void* pRet = 0;
-++ if (pServiceManager)
-++ {
-++ ProviderRequest aReq(pServiceManager,pImplementationName);
-++
-++ aReq.CREATE_PROVIDER(
-++ KabDriver::getImplementationName_Static(),
-++ KabDriver::getSupportedServiceNames_Static(),
-++ &KabDriver::Create,
-++ ::cppu::createSingleFactory)
-++ ;
-++
-++ if (aReq.xRet.is())
-++ aReq.xRet->acquire();
-++
-++ pRet = aReq.getProvider();
-++ }
-++
-++ return pRet;
-++};
-++
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KStatement.cxx connectivity/source/drivers/tdeab/KStatement.cxx
-+--- connectivity/source/drivers/tdeab/KStatement.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KStatement.cxx 2011-08-17 14:26:01.429397755 -0500
-+@@ -0,0 +1,588 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KStatement.hxx"
-++#include "KConnection.hxx"
-++#include "KDriver.hxx"
-++#include "KResultSet.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include "kcondition.hxx"
-++#include "korder.hxx"
-++#include "TConnection.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++
-++#if OSL_DEBUG_LEVEL > 0
-++# define OUtoCStr( x ) ( ::rtl::OUStringToOString ( (x), RTL_TEXTENCODING_ASCII_US).getStr())
-++#else /* OSL_DEBUG_LEVEL */
-++# define OUtoCStr( x ) ("dummy")
-++#endif /* OSL_DEBUG_LEVEL */
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++using namespace com::sun::star::container;
-++using namespace com::sun::star::io;
-++using namespace com::sun::star::util;
-++
-++namespace
-++{
-++ void lcl_throwError(sal_uInt16 _nErrorId)
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(_nErrorId) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ }
-++}
-++
-++IMPLEMENT_SERVICE_INFO(KabStatement, "com.sun.star.sdbc.drivers.KabStatement", "com.sun.star.sdbc.Statement");
-++//------------------------------------------------------------------------------
-++KabCommonStatement::KabCommonStatement(KabConnection* _pConnection )
-++ : KabCommonStatement_BASE(m_aMutex),
-++ OPropertySetHelper(KabCommonStatement_BASE::rBHelper),
-++ m_aParser(_pConnection->getDriver()->getMSFactory()),
-++ m_aSQLIterator(_pConnection, _pConnection->createCatalog()->getTables(), m_aParser, NULL ),
-++ m_pParseTree(NULL),
-++ m_pConnection(_pConnection),
-++ rBHelper(KabCommonStatement_BASE::rBHelper)
-++{
-++ m_pConnection->acquire();
-++}
-++// -----------------------------------------------------------------------------
-++KabCommonStatement::~KabCommonStatement()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::disposing()
-++{
-++ KabCommonStatement_BASE::disposing();
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::resetParameters() const throw(::com::sun::star::sdbc::SQLException)
-++{
-++ lcl_throwError(STR_PARA_ONLY_PREPARED);
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::getNextParameter(::rtl::OUString &) const throw(::com::sun::star::sdbc::SQLException)
-++{
-++ lcl_throwError(STR_PARA_ONLY_PREPARED);
-++}
-++// -----------------------------------------------------------------------------
-++KabCondition *KabCommonStatement::analyseWhereClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-++{
-++ if (pParseNode->count() == 3)
-++ {
-++ const OSQLParseNode *pLeft = pParseNode->getChild(0),
-++ *pMiddle = pParseNode->getChild(1),
-++ *pRight = pParseNode->getChild(2);
-++
-++ // WHERE ( ... ) ?
-++ if (SQL_ISPUNCTUATION(pLeft, "(") && SQL_ISPUNCTUATION(pRight, ")"))
-++ {
-++ return analyseWhereClause(pMiddle);
-++ }
-++ else if (SQL_ISRULE(pParseNode, comparison_predicate))
-++ {
-++ if (pLeft->isToken() && pRight->isToken())
-++ {
-++ switch (pMiddle->getNodeType())
-++ {
-++ case SQL_NODE_EQUAL:
-++ // WHERE 0 = 1
-++ return new KabConditionConstant(pLeft->getTokenValue() == pRight->getTokenValue());
-++
-++ case SQL_NODE_NOTEQUAL:
-++ // WHERE 0 <> 1
-++ // (might not be correct SQL... don't care, handling anyway)
-++ return new KabConditionConstant(pLeft->getTokenValue() != pRight->getTokenValue());
-++
-++ default:
-++ break;
-++ }
-++ }
-++ else if (SQL_ISRULE(pLeft, column_ref))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (pRight->isToken() || SQL_ISRULE(pRight, parameter))
-++ {
-++ ::rtl::OUString sMatchString;
-++
-++ if (pRight->isToken()) // WHERE Name = 'Doe'
-++ sMatchString = pRight->getTokenValue();
-++ else if (SQL_ISRULE(pRight, parameter)) // WHERE Name = ?
-++ getNextParameter(sMatchString);
-++
-++ switch (pMiddle->getNodeType())
-++ {
-++ case SQL_NODE_EQUAL:
-++ // WHERE Name = 'Smith'
-++ return new KabConditionEqual(sColumnName, sMatchString);
-++
-++ case SQL_NODE_NOTEQUAL:
-++ // WHERE Name <> 'Jones'
-++ return new KabConditionDifferent(sColumnName, sMatchString);
-++
-++ default:
-++ break;
-++ }
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, search_condition))
-++ {
-++ if (SQL_ISTOKEN(pMiddle, OR))
-++ {
-++ // WHERE Name = 'Smith' OR Name = 'Jones'
-++ return new KabConditionOr(
-++ analyseWhereClause(pLeft),
-++ analyseWhereClause(pRight));
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, boolean_term))
-++ {
-++ if (SQL_ISTOKEN(pMiddle, AND))
-++ {
-++ // WHERE Name = 'Smith' AND "Given Name" = 'Peter'
-++ return new KabConditionAnd(
-++ analyseWhereClause(pLeft),
-++ analyseWhereClause(pRight));
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, test_for_null) || SQL_ISRULE(pParseNode, like_predicate))
-++ {
-++ const OSQLParseNode *pLeft = pParseNode->getChild(0);
-++ const OSQLParseNode* pPart2 = pParseNode->getChild(1);
-++ const OSQLParseNode *pMiddleLeft = pPart2->getChild(0),
-++ *pMiddleRight = pPart2->getChild(1),
-++ *pRight = pPart2->getChild(2);
-++
-++ if (SQL_ISRULE(pParseNode, test_for_null))
-++ {
-++ if (SQL_ISRULE(pLeft, column_ref) &&
-++ SQL_ISTOKEN(pMiddleLeft, IS) &&
-++ SQL_ISTOKEN(pRight, NULL))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (SQL_ISTOKEN(pMiddleRight, NOT))
-++ {
-++ // WHERE "Mobile Phone" IS NOT NULL
-++ return new KabConditionNotNull(sColumnName);
-++ }
-++ else
-++ {
-++ // WHERE "Mobile Phone" IS NULL
-++ return new KabConditionNull(sColumnName);
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, like_predicate))
-++ {
-++ if (SQL_ISRULE(pLeft, column_ref))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (pMiddleRight->isToken() || SQL_ISRULE(pMiddleRight, parameter))
-++ {
-++ ::rtl::OUString sMatchString;
-++
-++ if (pMiddleRight->isToken()) // WHERE Name LIKE 'Sm%'
-++ sMatchString = pMiddleRight->getTokenValue();
-++ else if (SQL_ISRULE(pMiddleRight, parameter)) // WHERE Name LIKE ?
-++ getNextParameter(sMatchString);
-++
-++ return new KabConditionSimilar(sColumnName, sMatchString);
-++ }
-++ }
-++ }
-++ }
-++
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// -----------------------------------------------------------------------------
-++KabOrder *KabCommonStatement::analyseOrderByClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-++{
-++ if (SQL_ISRULE(pParseNode, ordering_spec_commalist))
-++ {
-++ KabComplexOrder *list = new KabComplexOrder();
-++ sal_uInt32 n = pParseNode->count();
-++
-++ // Iterate through the ordering columns
-++ for (sal_uInt32 i = 0; i < n; i++)
-++ {
-++ list->addOrder
-++ (analyseOrderByClause(pParseNode->getChild(i)));
-++ }
-++
-++ return list;
-++ }
-++ else if (SQL_ISRULE(pParseNode, ordering_spec))
-++ {
-++ if (pParseNode->count() == 2)
-++ {
-++ OSQLParseNode* pColumnRef = pParseNode->getChild(0);
-++ OSQLParseNode* pAscendingDescending = pParseNode->getChild(1);
-++
-++ if (SQL_ISRULE(pColumnRef, column_ref))
-++ {
-++ if (pColumnRef->count() == 3)
-++ pColumnRef = pColumnRef->getChild(2);
-++
-++ if (pColumnRef->count() == 1)
-++ {
-++ ::rtl::OUString sColumnName =
-++ pColumnRef->getChild(0)->getTokenValue();
-++ sal_Bool bAscending =
-++ SQL_ISTOKEN(pAscendingDescending, DESC)?
-++ sal_False:
-++ sal_True;
-++
-++ return new KabSimpleOrder(sColumnName, bAscending);
-++ }
-++ }
-++ }
-++ }
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++//------------------------------------------------------------------------------
-++sal_Bool KabCommonStatement::isTableKnown(KabResultSet *pResult) const
-++{
-++ // can handle requests like SELECT * FROM addresses addresses
-++ // but cannot handle requests like SELECT * FROM addresses persons
-++ if (m_aSQLIterator.getTables().size() != 1)
-++ return sal_False;
-++
-++ if (m_aSQLIterator.getTables().begin()->first != pResult->getMetaData()->getTableName(0))
-++ return sal_False;
-++
-++ return sal_True;
-++}
-++//------------------------------------------------------------------------------
-++void KabCommonStatement::setKabFields(KabResultSet *pResult) const throw(SQLException)
-++{
-++ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-++ KabResultSetMetaData *pMeta; // meta information - holds the list of KAddressBook fields
-++
-++ xColumns = m_aSQLIterator.getSelectColumns();
-++ if (!xColumns.is())
-++ {
-++ lcl_throwError(STR_INVALID_COLUMN_SELECTION);
-++ }
-++ pMeta = static_cast<KabResultSetMetaData *>(pResult->getMetaData().get());
-++ pMeta->setKabFields(xColumns);
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::selectAddressees(KabResultSet *pResult) const throw(SQLException)
-++{
-++ const OSQLParseNode *pParseNode;
-++ KabCondition *pCondition;
-++
-++ pParseNode = m_aSQLIterator.getWhereTree();
-++ if (pParseNode != NULL)
-++ {
-++ if (SQL_ISRULE(pParseNode, where_clause))
-++ {
-++ resetParameters();
-++ pParseNode = pParseNode->getChild(1);
-++ pCondition = analyseWhereClause(pParseNode);
-++ if (pCondition->isAlwaysTrue())
-++ pResult->allKabAddressees();
-++ else if (!pCondition->isAlwaysFalse())
-++ pResult->someKabAddressees(pCondition);
-++ delete pCondition;
-++ return;
-++ }
-++ }
-++
-++ // no WHERE clause: get all rows
-++ pResult->allKabAddressees();
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::sortAddressees(KabResultSet *pResult) const throw(SQLException)
-++{
-++ const OSQLParseNode *pParseNode;
-++ KabOrder *pOrder;
-++
-++ pParseNode = m_aSQLIterator.getOrderTree();
-++ if (pParseNode != NULL)
-++ {
-++ if (SQL_ISRULE(pParseNode, opt_order_by_clause))
-++ {
-++ pParseNode = pParseNode->getChild(2);
-++ pOrder = analyseOrderByClause(pParseNode);
-++ pResult->sortKabAddressees(pOrder);
-++ delete pOrder;
-++ }
-++ }
-++}
-++//-----------------------------------------------------------------------------
-++Any SAL_CALL KabCommonStatement::queryInterface( const Type & rType ) throw(RuntimeException)
-++{
-++ Any aRet = KabCommonStatement_BASE::queryInterface(rType);
-++ if (!aRet.hasValue())
-++ aRet = OPropertySetHelper::queryInterface(rType);
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++Sequence< Type > SAL_CALL KabCommonStatement::getTypes( ) throw(RuntimeException)
-++{
-++ ::cppu::OTypeCollection aTypes( ::getCppuType( (const Reference< XMultiPropertySet > *)0 ),
-++ ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
-++ ::getCppuType( (const Reference< XPropertySet > *)0 ));
-++
-++ return comphelper::concatSequences(aTypes.getTypes(),KabCommonStatement_BASE::getTypes());
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::cancel( ) throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++ // cancel the current sql statement
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::close( ) throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ }
-++ dispose();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabCommonStatement::execute(
-++ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet > xRS = executeQuery(sql);
-++
-++ return xRS.is();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabCommonStatement::executeQuery(
-++ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++OSL_TRACE("TDE Address book - SQL Request: %s", OUtoCStr(sql));
-++
-++ KabResultSet* pResult = new KabResultSet(this);
-++ Reference< XResultSet > xRS = pResult;
-++ ::rtl::OUString aErr;
-++
-++ m_pParseTree = m_aParser.parseTree(aErr, sql);
-++ if (m_pParseTree == NULL)
-++ throw SQLException(aErr, *this, aErr, 0, Any());
-++
-++ m_aSQLIterator.setParseTree(m_pParseTree);
-++ m_aSQLIterator.traverseAll();
-++ switch (m_aSQLIterator.getStatementType())
-++ {
-++ case SQL_STATEMENT_SELECT:
-++ if (isTableKnown(pResult)) // FROM which table ?
-++ {
-++ setKabFields(pResult); // SELECT which columns ?
-++ selectAddressees(pResult); // WHERE which condition ?
-++ sortAddressees(pResult); // ORDER BY which columns ?
-++// To be continued: DISTINCT
-++// etc...
-++ }
-++ break;
-++
-++ default:
-++// To be continued: UPDATE
-++// DELETE
-++// etc...
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++ }
-++
-++ return xRS;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabCommonStatement::getConnection( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // just return our connection here
-++ return (Reference< XConnection >) m_pConnection;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabCommonStatement::executeUpdate( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // the return values gives information about how many rows are affected by executing the sql statement
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabCommonStatement::getWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ return makeAny(m_aLastWarning);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::clearWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ m_aLastWarning = SQLWarning();
-++}
-++// -------------------------------------------------------------------------
-++::cppu::IPropertyArrayHelper* KabCommonStatement::createArrayHelper( ) const
-++{
-++ // this properties are defined by the service statement
-++ // they must be in alphabetic order
-++ Sequence< Property > aProps(10);
-++ Property* pProperties = aProps.getArray();
-++ sal_Int32 nPos = 0;
-++ DECL_PROP0(CURSORNAME, ::rtl::OUString);
-++ DECL_BOOL_PROP0(ESCAPEPROCESSING);
-++ DECL_PROP0(FETCHDIRECTION,sal_Int32);
-++ DECL_PROP0(FETCHSIZE, sal_Int32);
-++ DECL_PROP0(MAXFIELDSIZE,sal_Int32);
-++ DECL_PROP0(MAXROWS, sal_Int32);
-++ DECL_PROP0(QUERYTIMEOUT,sal_Int32);
-++ DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
-++ DECL_PROP0(RESULTSETTYPE,sal_Int32);
-++ DECL_BOOL_PROP0(USEBOOKMARKS);
-++
-++ return new ::cppu::OPropertyArrayHelper(aProps);
-++}
-++// -------------------------------------------------------------------------
-++::cppu::IPropertyArrayHelper & KabCommonStatement::getInfoHelper()
-++{
-++ return *const_cast<KabCommonStatement*>(this)->getArrayHelper();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool KabCommonStatement::convertFastPropertyValue(
-++ Any &,
-++ Any &,
-++ sal_Int32,
-++ const Any&) throw (::com::sun::star::lang::IllegalArgumentException)
-++{
-++ sal_Bool bConverted = sal_False;
-++ // here we have to try to convert
-++ return bConverted;
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any&) throw (Exception)
-++{
-++ // set the value to whatever is nescessary
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_QUERYTIMEOUT:
-++ case PROPERTY_ID_MAXFIELDSIZE:
-++ case PROPERTY_ID_MAXROWS:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ case PROPERTY_ID_ESCAPEPROCESSING:
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ default:
-++ ;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::getFastPropertyValue(Any&,sal_Int32 nHandle) const
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_QUERYTIMEOUT:
-++ case PROPERTY_ID_MAXFIELDSIZE:
-++ case PROPERTY_ID_MAXROWS:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ case PROPERTY_ID_ESCAPEPROCESSING:
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ default:
-++ ;
-++ }
-++}
-++// -----------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::acquire() throw()
-++{
-++ KabCommonStatement_BASE::acquire();
-++}
-++// -----------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::release() throw()
-++{
-++ KabCommonStatement_BASE::release();
-++}
-++// -----------------------------------------------------------------------------
-++Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabCommonStatement::getPropertySetInfo( ) throw(RuntimeException)
-++{
-++ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-++}
-++// -----------------------------------------------------------------------------
-++KabStatement::KabStatement(KabConnection* _pConnection)
-++ : KabStatement_BASE(_pConnection)
-++{
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KStatement.hxx connectivity/source/drivers/tdeab/KStatement.hxx
-+--- connectivity/source/drivers/tdeab/KStatement.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KStatement.hxx 2011-08-17 14:25:52.088678867 -0500
-+@@ -0,0 +1,174 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_STATEMENT_HXX_
-++#define _CONNECTIVITY_KAB_STATEMENT_HXX_
-++
-++#include "KConnection.hxx"
-++#include <list>
-++#include "connectivity/sqliterator.hxx"
-++#include "connectivity/sqlparse.hxx"
-++#include <com/sun/star/sdbc/XStatement.hpp>
-++#include <com/sun/star/util/XCancellable.hpp>
-++#include <cppuhelper/compbase4.hxx>
-++#include <cppuhelper/implbase1.hxx>
-++#include <comphelper/proparrhlp.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ typedef ::cppu::WeakComponentImplHelper4< ::com::sun::star::sdbc::XStatement,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::sdbc::XCloseable> KabCommonStatement_BASE;
-++
-++ //**************************************************************
-++ // Class KabCommonStatement
-++ // is a base class for the normal statement and for the prepared statement
-++ //**************************************************************
-++ class KabCommonStatement : public comphelper::OBaseMutex,
-++ public KabCommonStatement_BASE,
-++ public ::cppu::OPropertySetHelper,
-++ public comphelper::OPropertyArrayUsageHelper<KabCommonStatement>
-++
-++ {
-++ ::com::sun::star::sdbc::SQLWarning m_aLastWarning;
-++
-++ protected:
-++ ::std::list< ::rtl::OUString> m_aBatchList;
-++ connectivity::OSQLParser m_aParser;
-++ connectivity::OSQLParseTreeIterator m_aSQLIterator;
-++ connectivity::OSQLParseNode* m_pParseTree;
-++ KabConnection* m_pConnection; // The owning Connection object
-++
-++ protected:
-++ class KabCondition *analyseWhereClause(
-++ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-++ class KabOrder *analyseOrderByClause(
-++ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-++ sal_Bool isTableKnown(class KabResultSet *pResult) const;
-++ void setKabFields(class KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++ void selectAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++ void sortAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++
-++ // OPropertyArrayUsageHelper
-++ virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
-++
-++ // OPropertySetHelper
-++ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-++ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-++ ::com::sun::star::uno::Any & rConvertedValue,
-++ ::com::sun::star::uno::Any & rOldValue,
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::lang::IllegalArgumentException);
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-++ virtual void SAL_CALL getFastPropertyValue(
-++ ::com::sun::star::uno::Any& rValue,
-++ sal_Int32 nHandle) const;
-++
-++ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-++ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-++ virtual ~KabCommonStatement();
-++
-++ public:
-++ ::cppu::OBroadcastHelper& rBHelper;
-++
-++ KabCommonStatement(KabConnection *_pConnection);
-++ using KabCommonStatement_BASE::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing();
-++
-++ // XInterface
-++ virtual void SAL_CALL release() throw();
-++ virtual void SAL_CALL acquire() throw();
-++ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
-++ const ::com::sun::star::uno::Type & rType
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XTypeProvider
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XPropertySet
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XStatement
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL executeUpdate(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL execute(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCancellable
-++ virtual void SAL_CALL cancel(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // other methods
-++ inline KabConnection* getOwnConnection() const { return m_pConnection; }
-++ };
-++
-++ //**************************************************************
-++ // Class KabStatement
-++ //**************************************************************
-++ typedef ::cppu::ImplInheritanceHelper1<
-++ KabCommonStatement, ::com::sun::star::lang::XServiceInfo > KabStatement_BASE;
-++
-++ class KabStatement : public KabStatement_BASE
-++ {
-++ protected:
-++ virtual ~KabStatement() { }
-++
-++ public:
-++ KabStatement(KabConnection* _pConnection);
-++ DECLARE_SERVICE_INFO();
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_STATEMENT_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTable.cxx connectivity/source/drivers/tdeab/KTable.cxx
-+--- connectivity/source/drivers/tdeab/KTable.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTable.cxx 2011-08-17 14:25:28.396855433 -0500
-+@@ -0,0 +1,100 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KTable.hxx"
-++#include "KTables.hxx"
-++#include "KColumns.hxx"
-++#include "KCatalog.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++// -------------------------------------------------------------------------
-++KabTable::KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection)
-++ : KabTable_TYPEDEF(_pTables, sal_True),
-++ m_pConnection(_pConnection)
-++{
-++ construct();
-++}
-++// -------------------------------------------------------------------------
-++KabTable::KabTable( sdbcx::OCollection* _pTables,
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& _Name,
-++ const ::rtl::OUString& _Type,
-++ const ::rtl::OUString& _Description ,
-++ const ::rtl::OUString& _SchemaName,
-++ const ::rtl::OUString& _CatalogName
-++ ) : KabTable_TYPEDEF(_pTables,sal_True,
-++ _Name,
-++ _Type,
-++ _Description,
-++ _SchemaName,
-++ _CatalogName),
-++ m_pConnection(_pConnection)
-++{
-++ construct();
-++}
-++// -------------------------------------------------------------------------
-++void KabTable::refreshColumns()
-++{
-++ TStringVector aVector;
-++
-++ if (!isNew())
-++ {
-++ Reference< XResultSet > xResult = m_pConnection->getMetaData()->getColumns(
-++ Any(),
-++ m_SchemaName,
-++ m_Name,
-++ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%")));
-++
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult, UNO_QUERY);
-++ while (xResult->next())
-++ aVector.push_back(xRow->getString(4));
-++ }
-++ }
-++
-++ if (m_pColumns)
-++ m_pColumns->reFill(aVector);
-++ else
-++ m_pColumns = new KabColumns(this,m_aMutex,aVector);
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTable.hxx connectivity/source/drivers/tdeab/KTable.hxx
-+--- connectivity/source/drivers/tdeab/KTable.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTable.hxx 2011-08-17 14:25:22.436396680 -0500
-+@@ -0,0 +1,72 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_TABLE_HXX_
-++#define _CONNECTIVITY_KAB_TABLE_HXX_
-++
-++#include "KConnection.hxx"
-++#include "connectivity/sdbcx/VTable.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ typedef connectivity::sdbcx::OTable KabTable_TYPEDEF;
-++
-++ ::rtl::OUString getTypeString(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xColProp);
-++
-++ class KabTable : public KabTable_TYPEDEF
-++ {
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++ KabConnection* m_pConnection;
-++
-++ public:
-++ KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection);
-++ KabTable( sdbcx::OCollection* _pTables,
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& _Name,
-++ const ::rtl::OUString& _Type,
-++ const ::rtl::OUString& _Description = ::rtl::OUString(),
-++ const ::rtl::OUString& _SchemaName = ::rtl::OUString(),
-++ const ::rtl::OUString& _CatalogName = ::rtl::OUString()
-++ );
-++
-++ KabConnection* getConnection() { return m_pConnection;}
-++
-++ virtual void refreshColumns();
-++
-++ ::rtl::OUString getTableName() const { return m_Name; }
-++ ::rtl::OUString getSchema() const { return m_SchemaName; }
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_TABLE_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTables.cxx connectivity/source/drivers/tdeab/KTables.cxx
-+--- connectivity/source/drivers/tdeab/KTables.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTables.cxx 2011-08-17 14:25:16.415933304 -0500
-+@@ -0,0 +1,94 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KTables.hxx"
-++#include "KTable.hxx"
-++#include "KCatalog.hxx"
-++#include "KConnection.hxx"
-++#include <comphelper/types.hxx>
-++
-++using namespace connectivity::kab;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::cppu;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++sdbcx::ObjectType KabTables::createObject(const ::rtl::OUString& _rName)
-++{
-++ ::rtl::OUString aName,aSchema;
-++ aSchema = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-++ aName = _rName;
-++
-++ Sequence< ::rtl::OUString > aTypes(1);
-++ aTypes[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-++ ::rtl::OUString sEmpty;
-++
-++ Reference< XResultSet > xResult = m_xMetaData->getTables(Any(), aSchema, aName, aTypes);
-++
-++ sdbcx::ObjectType xRet = NULL;
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult, UNO_QUERY);
-++ if (xResult->next()) // there can be only one table with this name
-++ {
-++ KabTable* pRet = new KabTable(
-++ this,
-++ static_cast<KabCatalog&>(m_rParent).getConnection(),
-++ aName,
-++ xRow->getString(4),
-++ xRow->getString(5),
-++ sEmpty);
-++ xRet = pRet;
-++ }
-++ }
-++ ::comphelper::disposeComponent(xResult);
-++
-++ return xRet;
-++}
-++// -------------------------------------------------------------------------
-++void KabTables::impl_refresh( ) throw(RuntimeException)
-++{
-++ static_cast<KabCatalog&>(m_rParent).refreshTables();
-++}
-++// -------------------------------------------------------------------------
-++void KabTables::disposing(void)
-++{
-++m_xMetaData.clear();
-++ OCollection::disposing();
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTables.hxx connectivity/source/drivers/tdeab/KTables.hxx
-+--- connectivity/source/drivers/tdeab/KTables.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTables.hxx 2011-08-17 14:24:50.933971998 -0500
-+@@ -0,0 +1,65 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_TABLES_HXX_
-++#define _CONNECTIVITY_KAB_TABLES_HXX_
-++
-++#include "connectivity/sdbcx/VCollection.hxx"
-++#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabTables : public sdbcx::OCollection
-++ {
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++
-++ protected:
-++ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-++ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-++
-++ public:
-++ KabTables(
-++ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rMetaData,
-++ ::cppu::OWeakObject& _rParent,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector)
-++ : sdbcx::OCollection(_rParent,sal_True,_rMutex,_rVector),
-++ m_xMetaData(_rMetaData)
-++ { }
-++
-++ virtual void SAL_CALL disposing(void);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_TABLES_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/makefile.mk connectivity/source/drivers/tdeab/makefile.mk
-+--- connectivity/source/drivers/tdeab/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/makefile.mk 2011-08-17 14:24:11.740955243 -0500
-+@@ -0,0 +1,139 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++PRJINC=..$/..
-++PRJNAME=connectivity
-++TARGET=tdeab
-++TARGET2=$(TARGET)drv
-++
-++ENABLE_EXCEPTIONS=TRUE
-++VISIBILITY_HIDDEN=TRUE
-++
-++# --- Settings ----------------------------------
-++
-++.INCLUDE : $(PRJ)$/makefile.pmk
-++.INCLUDE : $(PRJ)$/version.mk
-++
-++.IF "$(GUI)" == "UNX"
-++.IF "$(ENABLE_TDEAB)" == "TRUE"
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++.IF "$(TDE_ROOT)"!=""
-++EXTRALIBPATHS+=-L$(TDE_ROOT)$/lib
-++.ENDIF
-++
-++# === TDEAB base library ==========================
-++
-++# --- Files -------------------------------------
-++
-++SLOFILES= \
-++ $(SLO)$/KDriver.obj \
-++ $(SLO)$/KServices.obj
-++
-++DEPOBJFILES= \
-++ $(SLO2FILES)
-++
-++# --- Library -----------------------------------
-++
-++SHL1VERSIONMAP=$(SOLARENV)/src/component.map
-++
-++SHL1TARGET= $(TARGET)$(TDEAB_MAJOR)
-++SHL1OBJS=$(SLOFILES)
-++SHL1STDLIBS=\
-++ $(CPPULIB) \
-++ $(CPPUHELPERLIB) \
-++ $(DBTOOLSLIB) \
-++ $(SALLIB) \
-++ $(SALHELPERLIB)
-++
-++SHL1DEPN=
-++SHL1IMPLIB= i$(TARGET)
-++
-++SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-++
-++DEF1NAME= $(SHL1TARGET)
-++
-++# === TDEAB impl library ==========================
-++
-++# --- Files -------------------------------------
-++
-++SLO2FILES=\
-++ $(SLO)$/KColumns.obj \
-++ $(SLO)$/KTable.obj \
-++ $(SLO)$/KTables.obj \
-++ $(SLO)$/KCatalog.obj \
-++ $(SLO)$/KResultSet.obj \
-++ $(SLO)$/KStatement.obj \
-++ $(SLO)$/KPreparedStatement.obj \
-++ $(SLO)$/KDatabaseMetaData.obj \
-++ $(SLO)$/KConnection.obj \
-++ $(SLO)$/KResultSetMetaData.obj \
-++ $(SLO)$/kcondition.obj \
-++ $(SLO)$/korder.obj \
-++ $(SLO)$/kfields.obj \
-++ $(SLO)$/TDEInit.obj
-++
-++TDEAB_LIB=$(TDE_LIBS) -lkabc
-++
-++# --- Library -----------------------------------
-++
-++SHL2VERSIONMAP=$(TARGET2).map
-++
-++SHL2TARGET= $(TARGET2)$(TDEAB_MAJOR)
-++SHL2OBJS=$(SLO2FILES)
-++SHL2LINKFLAGS+=$(TDEAB_LIB)
-++SHL2STDLIBS=\
-++ $(CPPULIB) \
-++ $(CPPUHELPERLIB) \
-++ $(SALLIB) \
-++ $(SALHELPERLIB) \
-++ $(DBTOOLSLIB) \
-++ $(COMPHELPERLIB)
-++
-++SHL2DEPN=
-++SHL2IMPLIB= i$(TARGET2)
-++
-++SHL2DEF= $(MISC)$/$(SHL2TARGET).def
-++
-++DEF2NAME= $(SHL2TARGET)
-++
-++# --- Targets -----------------------------------
-++.ELSE # "$(ENABLE_TDEAB)" == "TRUE"
-++dummy:
-++ @echo TDE Addressbook disabled - nothing to build
-++.ENDIF
-++
-++.ELSE # "$(GUI)" == "UNX"
-++dummy:
-++ @echo "Nothing to build for GUI $(GUI)"
-++.ENDIF
-++
-++.INCLUDE : $(PRJ)$/target.pmk
-++
-+diff -urN connectivity/source/drivers/tdeab/tdeabdrv.map connectivity/source/drivers/tdeab/tdeabdrv.map
-+--- connectivity/source/drivers/tdeab/tdeabdrv.map 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeabdrv.map 2011-08-17 14:25:00.664720964 -0500
-+@@ -0,0 +1,9 @@
-++UDK_3_0_0 {
-++ global:
-++ createKabConnection;
-++ initKApplication;
-++ shutdownKApplication;
-++ matchTDEVersion;
-++ local:
-++ *;
-++};
-+diff -urN connectivity/source/drivers/tdeab/tdeab.xcu connectivity/source/drivers/tdeab/tdeab.xcu
-+--- connectivity/source/drivers/tdeab/tdeab.xcu 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeab.xcu 2011-08-17 14:29:58.077608095 -0500
-+@@ -0,0 +1,47 @@
-++<?xml version="1.0" encoding="UTF-8"?>
-++<!--***********************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************ -->
-++<oor:component-data oor:name="Drivers" oor:package="org.openoffice.Office.DataAccess" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-++ <node oor:name="Installed">
-++ <node oor:name="sdbc:address:kab" oor:op="replace">
-++ <prop oor:name="Driver">
-++ <value>com.sun.star.comp.sdbc.kab.Driver</value>
-++ </prop>
-++ <prop oor:name="DriverTypeDisplayName" oor:type="xs:string">
-++ <value xml:lang="en-US">TDE Address Book</value>
-++ </prop>
-++ <node oor:name="Features">
-++ <node oor:name="EscapeDateTime" oor:op="replace">
-++ <prop oor:name="Value" oor:type="xs:boolean">
-++ <value>true</value>
-++ </prop>
-++ </node>
-++ </node>
-++ </node>
-++ </node>
-++</oor:component-data>
-+diff -urN connectivity/source/drivers/tdeab/tdeab.xml connectivity/source/drivers/tdeab/tdeab.xml
-+--- connectivity/source/drivers/tdeab/tdeab.xml 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeab.xml 2011-08-17 14:29:44.246543923 -0500
-+@@ -0,0 +1,77 @@
-++<?xml version='1.0' encoding="UTF-8"?>
-++<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//W3C//DTD HTML 3.2//EN" "module-description.dtd">
-++<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-++ <module-name> kab1 </module-name>
-++ <component-description>
-++ <Author>Eric Bischoff</Author>
-++ <Name>com.sun.star.comp.sdbc.kab.Driver</Name>
-++ <description>This library implements the database driver for TDE address book formats.</description>
-++ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-++ <language>c++</language>
-++ <status value="final"/>
-++ <supported-service>com.sun.star.sdbc.Driver</supported-service>
-++ <service-dependency> ... </service-dependency>
-++ </component-description>
-++ <project-build-dependency> cppuhelper </project-build-dependency>
-++ <project-build-dependency> cppu </project-build-dependency>
-++ <project-build-dependency> sal </project-build-dependency>
-++
-++ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-++ <runtime-module-dependency> cppu1 </runtime-module-dependency>
-++ <runtime-module-dependency> sal1 </runtime-module-dependency>
-++
-++ <type> com.sun.star.registry.XRegistryKey </type>
-++ <type> com.sun.star.util.XCancellable </type>
-++ <type> com.sun.star.util.XNumberFormatter </type>
-++ <type> com.sun.star.uno.TypeClass </type>
-++ <type> com.sun.star.uno.XWeak </type>
-++ <type> com.sun.star.uno.XAggregation </type>
-++ <type> com.sun.star.uno.XComponentContext </type>
-++ <type> com.sun.star.beans.PropertyAttribute </type>
-++ <type> com.sun.star.beans.XPropertyState </type>
-++ <type> com.sun.star.beans.XPropertySet </type>
-++ <type> com.sun.star.beans.PropertyValue </type>
-++ <type> com.sun.star.beans.XMultiPropertySet </type>
-++ <type> com.sun.star.beans.XFastPropertySet </type>
-++ <type> com.sun.star.lang.XSingleServiceFactory </type>
-++ <type> com.sun.star.lang.XTypeProvider </type>
-++ <type> com.sun.star.lang.XSingleComponentFactory </type>
-++ <type> com.sun.star.lang.EventObject </type>
-++ <type> com.sun.star.lang.XComponent </type>
-++ <type> com.sun.star.lang.IllegalArgumentException </type>
-++ <type> com.sun.star.lang.DisposedException </type>
-++ <type> com.sun.star.lang.XMultiServiceFactory </type>
-++ <type> com.sun.star.lang.XServiceInfo </type>
-++ <type> com.sun.star.lang.XUnoTunnel </type>
-++ <type> com.sun.star.java.XJavaThreadRegister_11 </type>
-++ <type> com.sun.star.java.XJavaVM </type>
-++ <type> com.sun.star.sdbc.FetchDirection </type>
-++ <type> com.sun.star.sdbc.XConnection </type>
-++ <type> com.sun.star.sdbc.XStatement </type>
-++ <type> com.sun.star.sdbc.XResultSet </type>
-++ <type> com.sun.star.sdbc.XResultSetMetaDataSupplier</type>
-++ <type> com.sun.star.sdbc.XColumnLocate </type>
-++ <type> com.sun.star.sdbc.XResultSetUpdate </type>
-++ <type> com.sun.star.sdbc.XWarningsSupplier </type>
-++ <type> com.sun.star.sdbc.XRowUpdate </type>
-++ <type> com.sun.star.sdbc.XMultipleResults </type>
-++ <type> com.sun.star.sdbc.XBatchExecution </type>
-++ <type> com.sun.star.sdbc.XPreparedBatchExecution </type>
-++ <type> com.sun.star.sdbc.XParameters </type>
-++ <type> com.sun.star.sdbc.XOutParameters </type>
-++ <type> com.sun.star.sdbc.DriverPropertyInfo </type>
-++ <type> com.sun.star.sdbc.SQLWarning </type>
-++ <type> com.sun.star.sdbc.XRow </type>
-++ <type> com.sun.star.sdbc.ColumnSearch </type>
-++ <type> com.sun.star.sdbc.ColumnValue </type>
-++ <type> com.sun.star.sdbc.DataType </type>
-++ <type> com.sun.star.sdbc.XDriver </type>
-++ <type> com.sun.star.sdbc.TransactionIsolation </type>
-++ <type> com.sun.star.sdbc.ResultSetType </type>
-++ <type> com.sun.star.sdbc.ResultSetConcurrency </type>
-++ <type> com.sun.star.sdbcx.XRowLocate </type>
-++ <type> com.sun.star.sdbcx.XDeleteRows </type>
-++ <type> com.sun.star.sdbcx.CompareBookmark </type>
-++ <type> com.sun.star.sdb.XColumnUpdate </type>
-++ <type> com.sun.star.sdb.XColumn </type>
-++</module-description>
-+diff -urN connectivity/source/drivers/tdeab/TDEInit.cxx connectivity/source/drivers/tdeab/TDEInit.cxx
-+--- connectivity/source/drivers/tdeab/TDEInit.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/TDEInit.cxx 2011-08-17 14:28:21.700192397 -0500
-+@@ -0,0 +1,158 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++#include "TDEInit.h"
-++#include <osl/diagnose.h>
-++#include <osl/process.h>
-++#include <shell/tde_headers.h>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ // ===============================================================
-++ // = TDEInit
-++ // ===============================================================
-++ class TDEInit
-++ {
-++ private:
-++ /// TDE application if we own it
-++ static KApplication* s_pKApplication;
-++ static bool s_bDidInsertCatalogue;
-++
-++ public:
-++ static void Init();
-++ static void Shutdown();
-++ };
-++
-++ // ---------------------------------------------------------------
-++ KApplication* TDEInit::s_pKApplication = NULL;
-++ bool TDEInit::s_bDidInsertCatalogue = false;
-++
-++ // ---------------------------------------------------------------
-++ void TDEInit::Init()
-++ {
-++ // TODO: All this is not thread-safe
-++
-++ // we create a TDE application only if it is not already done
-++ if (KApplication::kApplication() == NULL)
-++ {
-++ OSL_ENSURE(s_pKApplication == NULL, "TDEInit::Init: inconsistency in the application pointers!");
-++
-++ char *kabargs[1] = {(char*)"libkab1"};
-++ KCmdLineArgs::init(1, kabargs, "KAddressBook", *kabargs, "Address Book driver", KAB_DRIVER_VERSION);
-++
-++ s_pKApplication = new KApplication(false, false);
-++ }
-++
-++ // set language
-++ rtl_Locale *pProcessLocale;
-++ osl_getProcessLocale(&pProcessLocale);
-++ // sal_Unicode and TQChar are (currently) both 16 bits characters
-++ TQString aLanguage(
-++ (const TQChar *) pProcessLocale->Language->buffer,
-++ (int) pProcessLocale->Language->length);
-++ KGlobal::locale()->setLanguage(aLanguage);
-++
-++ // load TDE address book's localized messages
-++ KGlobal::locale()->insertCatalogue("kaddressbook");
-++ s_bDidInsertCatalogue = true;
-++ }
-++
-++ // ---------------------------------------------------------------
-++ void TDEInit::Shutdown()
-++ {
-++ if ( s_bDidInsertCatalogue )
-++ // this guard is necessary, since TDE 3.3 seems to crash if we remove a catalogue
-++ // which we did not previously insert
-++ KGlobal::locale()->removeCatalogue("kaddressbook");
-++
-++ if ( s_pKApplication != NULL )
-++ {
-++ delete s_pKApplication;
-++ s_pKApplication = NULL;
-++ }
-++ }
-++ }
-++}
-++
-++// =======================================================================
-++namespace
-++{
-++ double normalizeVersion( unsigned int major, unsigned int minor )
-++ {
-++ return major + 1.0 * minor / 1000;
-++ }
-++}
-++
-++// -----------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL initKApplication()
-++{
-++ ::connectivity::kab::TDEInit::Init();
-++}
-++
-++// -----------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL shutdownKApplication()
-++{
-++ ::connectivity::kab::TDEInit::Shutdown();
-++}
-++// -----------------------------------------------------------------------
-++/** checks whether the TDE version on the system we're running at is supported
-++ by the driver
-++
-++ Has to be called before any other code from this library, in particular,
-++ it has to be called before initKApplication()
-++
-++ If this function returns <code>0</code>, then no other code from this library
-++ has to be called, else the results are unpredictable.
-++
-++ @return
-++ <ul><li><code>0</code> if the TDE version is supportednon</li>
-++ <li>a negative value if the version is too old</li>
-++ <li>a positive value if the version is too new to know whether it works with this driver</li>
-++ </ul>
-++
-++ #i60062# / 2006-01-06 / frank.schoenheit@sun.com
-++*/
-++extern "C" SAL_DLLPUBLIC_EXPORT int SAL_CALL matchTDEVersion()
-++{
-++ double nMinVersion = normalizeVersion( MIN_TDE_VERSION_MAJOR, MIN_TDE_VERSION_MINOR );
-++ double nCurVersion = normalizeVersion( ::KDE::versionMajor(), ::KDE::versionMinor() );
-++ double nMaxVersion = normalizeVersion( MAX_TDE_VERSION_MAJOR, MAX_TDE_VERSION_MINOR );
-++
-++ if ( nCurVersion < nMinVersion )
-++ return -1;
-++ if ( nCurVersion > nMaxVersion )
-++ return 1;
-++
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/TDEInit.h connectivity/source/drivers/tdeab/TDEInit.h
-+--- connectivity/source/drivers/tdeab/TDEInit.h 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/TDEInit.h 2011-08-17 14:28:13.719578294 -0500
-+@@ -0,0 +1,47 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef CONNECTIVITY_KAB_TDEINIT_H
-++#define CONNECTIVITY_KAB_TDEINIT_H
-++
-++// the address book driver's version
-++#define KAB_DRIVER_VERSION "0.2"
-++#define KAB_DRIVER_VERSION_MAJOR 0
-++#define KAB_DRIVER_VERSION_MINOR 2
-++
-++// the minimum TDE version which is required at runtime
-++#define MIN_TDE_VERSION_MAJOR 3
-++#define MIN_TDE_VERSION_MINOR 2
-++
-++#define MAX_TDE_VERSION_MAJOR 3
-++#define MAX_TDE_VERSION_MINOR 6
-++
-++
-++#endif // CONNECTIVITY_KAB_TDEINIT_H
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/makefile.mk fpicker/source/unx/tde/makefile.mk
-+--- fpicker/source/unx/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/makefile.mk 2011-08-17 14:08:00.486552458 -0500
-+@@ -0,0 +1,75 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2010 Novell, Inc.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++
-++PRJNAME=fpicker
-++TARGET=tdefilepicker
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++#COMP1TYPELIST=$(TARGET)
-++#COMPRDB=$(SOLARBINDIR)$/types.rdb
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++
-++# ------------------------------------------------------------------
-++
-++.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++dummy:
-++ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-++
-++.ELSE # we build for TDE
-++
-++CFLAGS+= $(TDE_CFLAGS)
-++
-++# --- Files --------------------------------------------------------
-++
-++SLOFILES =\
-++ $(SLO)$/tdecommandthread.obj \
-++ $(SLO)$/tdefilepicker.obj \
-++ $(SLO)$/tdefilepicker.moc.obj \
-++ $(SLO)$/tdefpmain.obj \
-++ $(SLO)$/tdemodalityfilter.obj
-++
-++APP1TARGET=$(TARGET)
-++APP1OBJS=$(SLOFILES)
-++APP1RPATH=BRAND
-++APP1LINKFLAGS=$(TDE_LIBS) -lkio -lX11
-++APP1STDLIBS=$(SALLIB)
-++
-++.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-++
-++$(MISC)$/tdefilepicker.moc.cxx : tdefilepicker.hxx
-++ $(MOC) $< -o $@
-+diff -urN fpicker/source/unx/tde/tdecommandthread.cxx fpicker/source/unx/tde/tdecommandthread.cxx
-+--- fpicker/source/unx/tde/tdecommandthread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdecommandthread.cxx 2011-08-17 14:05:05.983187311 -0500
-+@@ -0,0 +1,178 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdecommandthread.hxx>
-++
-++#include <tqstringlist.h>
-++
-++#include <kapplication.h>
-++
-++#include <iostream>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// CommandEvent
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDECommandEvent::TDECommandEvent( const TQString &qCommand, TQStringList *pStringList )
-++ : TQCustomEvent( TypeId, pStringList ),
-++ m_eCommand( Unknown )
-++{
-++ struct {
-++ const char *pName;
-++ CommandEventType eType;
-++ } *pIdx, pMapping[] =
-++ {
-++ { "appendControl", AppendControl },
-++ { "enableControl", EnableControl },
-++ { "getValue", GetValue },
-++ { "setValue", SetValue },
-++ { "appendFilter", AppendFilter },
-++ { "appendFilterGroup", AppendFilterGroup },
-++ { "getCurrentFilter", GetCurrentFilter },
-++ { "setCurrentFilter", SetCurrentFilter },
-++ { "getDirectory", GetDirectory },
-++ { "setDirectory", SetDirectory },
-++ { "getFiles", GetFiles },
-++ { "setTitle", SetTitle },
-++ { "setType", SetType },
-++ { "setDefaultName", SetDefaultName },
-++ { "setMultiSelection", SetMultiSelection },
-++ { "exec", Exec },
-++ { 0, Unknown }
-++ };
-++
-++ for ( pIdx = pMapping; pIdx->pName && qCommand != pIdx->pName; ++pIdx )
-++ ;
-++
-++ m_eCommand = pIdx->eType;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// CommandThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDECommandThread::TDECommandThread( TQWidget *pObject )
-++ : m_pObject( pObject )
-++{
-++}
-++
-++TDECommandThread::~TDECommandThread()
-++{
-++}
-++
-++void TDECommandThread::run()
-++{
-++ TQTextIStream qStream( stdin );
-++ qStream.setEncoding( TQTextStream::UnicodeUTF8 );
-++
-++ TQString qLine;
-++ bool bQuit = false;
-++ while ( !bQuit && !qStream.atEnd() )
-++ {
-++ qLine = qStream.readLine();
-++ handleCommand( qLine, bQuit );
-++ }
-++}
-++
-++void TDECommandThread::handleCommand( const TQString &rString, bool &bQuit )
-++{
-++ TQMutexLocker qMutexLocker( &m_aMutex );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "tdefilepicker received: " << rString.latin1() << ::std::endl;
-++#endif
-++
-++ bQuit = false;
-++ TQStringList *pTokens = tokenize( rString );
-++
-++ if ( !pTokens )
-++ return;
-++ if ( pTokens->empty() )
-++ {
-++ delete pTokens, pTokens = NULL;
-++ return;
-++ }
-++
-++ TQString qCommand = pTokens->front();
-++ pTokens->pop_front();
-++
-++ if ( qCommand == "exit" )
-++ {
-++ bQuit = true;
-++ kapp->exit();
-++ kapp->wakeUpGuiThread();
-++ }
-++ else
-++ kapp->postEvent( m_pObject, new TDECommandEvent( qCommand, pTokens ) );
-++}
-++
-++TQStringList* TDECommandThread::tokenize( const TQString &rString )
-++{
-++ // Commands look like:
-++ // command arg1 arg2 arg3 ...
-++ // Args may be enclosed in '"', if they contain spaces.
-++
-++ TQStringList *pList = new TQStringList();
-++
-++ TQString qBuffer;
-++ qBuffer.reserve( 1024 );
-++
-++ const TQChar *pUnicode = rString.unicode();
-++ const TQChar *pEnd = pUnicode + rString.length();
-++ bool bQuoted = false;
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ {
-++ ++pUnicode;
-++ if ( pUnicode != pEnd )
-++ {
-++ if ( *pUnicode == 'n' )
-++ qBuffer.append( '\n' );
-++ else
-++ qBuffer.append( *pUnicode );
-++ }
-++ }
-++ else if ( *pUnicode == '"' )
-++ bQuoted = !bQuoted;
-++ else if ( *pUnicode == ' ' && !bQuoted )
-++ {
-++ pList->push_back( qBuffer );
-++ qBuffer.setLength( 0 );
-++ }
-++ else
-++ qBuffer.append( *pUnicode );
-++ }
-++ pList->push_back( qBuffer );
-++
-++ return pList;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdecommandthread.hxx fpicker/source/unx/tde/tdecommandthread.hxx
-+--- fpicker/source/unx/tde/tdecommandthread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdecommandthread.hxx 2011-08-17 14:04:34.560780976 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDECOMMANDTHREAD_HXX_
-++#define _TDECOMMANDTHREAD_HXX_
-++
-++#include <tqevent.h>
-++#include <tqmutex.h>
-++#include <tqthread.h>
-++
-++class TDECommandEvent : public TQCustomEvent
-++{
-++public:
-++ enum CommandEventType {
-++ Unknown = 0,
-++
-++ AppendControl,
-++ EnableControl,
-++ GetValue,
-++ SetValue,
-++
-++ AppendFilter,
-++ AppendFilterGroup,
-++ UpdateFilters,
-++ GetCurrentFilter,
-++ SetCurrentFilter,
-++
-++ GetDirectory,
-++ SetDirectory,
-++
-++ GetFiles,
-++
-++ SetTitle,
-++ SetType,
-++ SetDefaultName,
-++ SetMultiSelection,
-++
-++ Exec
-++ };
-++ static const TQEvent::Type TypeId = (TQEvent::Type) ( (int) TQEvent::User + 42 /*random magic value*/ );
-++
-++protected:
-++ CommandEventType m_eCommand;
-++
-++public:
-++ TDECommandEvent( const TQString &qCommand, TQStringList *pStringList );
-++
-++ CommandEventType command() const { return m_eCommand; }
-++ TQStringList* stringList() { return static_cast< TQStringList* >( data() ); }
-++};
-++
-++class TDECommandThread : public TQThread
-++{
-++protected:
-++ TQObject *m_pObject;
-++
-++ TQMutex m_aMutex;
-++
-++public:
-++ TDECommandThread( TQWidget *pObject );
-++ virtual ~TDECommandThread();
-++
-++ virtual void run();
-++
-++protected:
-++ void handleCommand( const TQString &rString, bool &bQuit );
-++ TQStringList* tokenize( const TQString &rString );
-++};
-++
-++#endif // _TDECOMMANDTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefilepicker.cxx fpicker/source/unx/tde/tdefilepicker.cxx
-+--- fpicker/source/unx/tde/tdefilepicker.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefilepicker.cxx 2011-08-17 14:05:04.073041030 -0500
-+@@ -0,0 +1,733 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdecommandthread.hxx>
-++#include <tdefilepicker.hxx>
-++
-++#include <tqcheckbox.h>
-++#include <tqcombobox.h>
-++#include <tqgrid.h>
-++#include <tqhbox.h>
-++#include <tqlabel.h>
-++#include <tqlayout.h>
-++#include <tqobjectlist.h>
-++#include <tqpushbutton.h>
-++#include <tqregexp.h>
-++#include <tqvbox.h>
-++
-++#ifdef TQT_NO_EMIT
-++#define emit
-++#endif
-++
-++#include <kdeversion.h>
-++#include <kdiroperator.h>
-++#include <kfiledialog.h>
-++#include <kfilefiltercombo.h>
-++#include <kio/netaccess.h>
-++#include <klocale.h>
-++#include <kmessagebox.h>
-++#include <ktempfile.h>
-++
-++#include <algorithm>
-++#include <iostream>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// TDEFileDialog
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDEFileDialog::TDEFileDialog( const TQString &startDir, const TQString &filter,
-++ TQWidget *parent, const char *name )
-++ : KFileDialog( startDir, filter, parent, name, true, m_pCustomWidget = new TQVBox() ),
-++ m_pCombosAndButtons( new TQHBox( m_pCustomWidget ) ),
-++ m_pLabels( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pComboBoxes( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pPushButtons( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pCheckBoxes( new TQGrid( 2, m_pCustomWidget ) ),
-++ m_bIsSave( false ),
-++ m_bIsExecuting( false ),
-++ m_bCanNotifySelection( true )
-++{
-++ connect( this, SIGNAL( fileHighlighted( const TQString & ) ),
-++ this, SLOT( fileHighlightedCommand( const TQString & ) ) );
-++
-++ connect( this, SIGNAL( selectionChanged() ),
-++ this, SLOT( selectionChangedCommand() ) );
-++
-++ m_pCustomWidget->setSpacing( KDialog::spacingHint() );
-++ m_pCombosAndButtons->setSpacing( KDialog::spacingHint() );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++TDEFileDialog::~TDEFileDialog()
-++{
-++}
-++
-++void TDEFileDialog::resizeEvent( TQResizeEvent *pEvent )
-++{
-++ KFileDialog::resizeEvent( pEvent );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++void TDEFileDialog::showEvent( TQShowEvent *pEvent )
-++{
-++ KFileDialog::showEvent( pEvent );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++void TDEFileDialog::updateCustomWidgetLayout()
-++{
-++ TQPoint qReferencePoint = filterWidget->mapTo( this, TQPoint( 0, 0 ) );
-++ TQPoint qCustomPoint = m_pCustomWidget->mapTo( this, TQPoint( 0, 0 ) );
-++
-++ int nLeft = qReferencePoint.x() - qCustomPoint.x();
-++ int nRight = m_pCustomWidget->width() - filterWidget->width() - nLeft;
-++
-++ nLeft -= KDialog::spacingHint();
-++ nRight -= KDialog::spacingHint();
-++ m_pLabels->setFixedWidth( ( nLeft > 0 )? nLeft: 80 );
-++ // FIXME The following call sets the width of m_pPushButtons all right,
-++ // but it also increases the width of m_pComboBoxes rapidly. Can we do
-++ // anything about it?
-++ m_pPushButtons->setFixedWidth( ( nRight > 0 )? nRight: 100 );
-++}
-++
-++void TDEFileDialog::customEvent( TQCustomEvent *pEvent )
-++{
-++ if ( pEvent && pEvent->type() == TDECommandEvent::TypeId )
-++ {
-++ TDECommandEvent *pCommandEvent = static_cast< TDECommandEvent* >( pEvent );
-++ TQStringList *pStringList = pCommandEvent->stringList();
-++
-++ int nListSize = -1;
-++ if ( pStringList )
-++ nListSize = pStringList->size();
-++
-++ switch ( pCommandEvent->command() )
-++ {
-++ case TDECommandEvent::AppendControl:
-++ if ( nListSize >= 3 )
-++ {
-++ appendControl( (*pStringList)[0], (*pStringList)[1], (*pStringList)[2] );
-++ }
-++ break;
-++ case TDECommandEvent::EnableControl:
-++ if ( nListSize >= 2 )
-++ {
-++ enableControl( (*pStringList)[0], (*pStringList)[1] );
-++ }
-++ break;
-++ case TDECommandEvent::GetValue:
-++ if ( nListSize >= 2 )
-++ {
-++ getValue( (*pStringList)[0], (*pStringList)[1] );
-++ }
-++ break;
-++ case TDECommandEvent::SetValue:
-++ if ( nListSize >= 2 )
-++ {
-++ TQStringList qStringList = (*pStringList);
-++ qStringList.pop_front();
-++ qStringList.pop_front();
-++
-++ setValue( (*pStringList)[0], (*pStringList)[1], qStringList );
-++ }
-++ break;
-++ case TDECommandEvent::AppendFilter:
-++ if ( nListSize >= 2 )
-++ {
-++ appendFilter( (*pStringList)[0], (*pStringList)[1] );
-++
-++ // update the filters widget
-++ setFilter( filters() );
-++ }
-++ break;
-++ case TDECommandEvent::AppendFilterGroup:
-++ if ( nListSize >= 1 )
-++ {
-++ TQStringList::const_iterator it = pStringList->begin();
-++ ++it; // We ignore the filter group name
-++
-++ while ( it != pStringList->end() )
-++ {
-++ TQString qTitle = *it;
-++ ++it;
-++ if ( it != pStringList->end() )
-++ {
-++ appendFilter( qTitle, (*it) );
-++ ++it;
-++ }
-++ }
-++
-++ // update the filters widget
-++ setFilter( filters() );
-++ }
-++ break;
-++ case TDECommandEvent::GetCurrentFilter:
-++ {
-++ TQString qCurrentFilter = filterWidget->currentText();
-++ sendCommand( "currentFilter " + escapeString( qCurrentFilter ) );
-++ }
-++ break;
-++ case TDECommandEvent::SetCurrentFilter:
-++ if ( nListSize >= 1 )
-++ {
-++ static_cast< TDEFileFilterComboHack* >( filterWidget )->setCurrentFilter( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::GetDirectory:
-++ {
-++ TQString qDirectory = baseURL().url();
-++ if ( qDirectory.startsWith( "file:/" ) && qDirectory.mid( 6, 1 ) != "/" )
-++ qDirectory.replace( "file:/", "file:///" );
-++ sendCommand( "currentDirectory " + escapeString( qDirectory ) );
-++ }
-++ break;
-++ case TDECommandEvent::SetDirectory:
-++ if ( nListSize >= 1 )
-++ {
-++ setURL( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::GetFiles:
-++ {
-++ TQString qString;
-++ qString.reserve( 1024 );
-++
-++ qString.append( "files" );
-++
-++ if ( result() == TQDialog::Accepted )
-++ {
-++ KURL::List qList( selectedURLs() );
-++ for ( KURL::List::const_iterator it = qList.begin(); it != qList.end(); ++it )
-++ appendURL( qString, (*it) );
-++ }
-++ else
-++ {
-++ // we have to return the selected files anyway
-++ const KFileItemList *pItems = ops->selectedItems();
-++ for ( KFileItemListIterator it( *pItems ); it.current(); ++it )
-++ appendURL( qString, (*it)->url() );
-++ }
-++
-++ sendCommand( qString );
-++ setCanNotifySelection( true );
-++ }
-++ break;
-++ case TDECommandEvent::SetTitle:
-++ if ( nListSize >= 1 )
-++ {
-++ setCaption( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::SetType:
-++ if ( nListSize >= 1 )
-++ {
-++ TQString qType( pStringList->front() );
-++ if ( qType == "open" )
-++ {
-++ setIsSave( false );
-++ setCaption( i18n( "Open" ) );
-++ }
-++ else if ( qType == "save" )
-++ {
-++ setIsSave( true );
-++ setCaption( i18n( "Save As" ) );
-++ }
-++ }
-++ break;
-++ case TDECommandEvent::SetDefaultName:
-++ if ( nListSize >= 1 )
-++ {
-++ setKeepLocation( true );
-++ setSelection( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::SetMultiSelection:
-++ if ( nListSize >= 1 )
-++ {
-++ if ( pStringList->front() == "true" )
-++ setMode( KFile::Files );
-++ else
-++ setMode( KFile::File );
-++ }
-++ break;
-++ case TDECommandEvent::Exec:
-++ {
-++ filterWidget->setEditable( false );
-++ setIsExecuting( true );
-++ bool bCanExit = false;
-++ do {
-++ setCanNotifySelection( true );
-++ exec();
-++
-++ KURL qLocalSelectedURL = mostLocalURL( selectedURL() );
-++ TQString qProtocol( qLocalSelectedURL.protocol() );
-++
-++ if ( isSave() && result() == TQDialog::Accepted )
-++ {
-++ if ( qProtocol == "file" )
-++ {
-++ TQString qFileName( addExtension( qLocalSelectedURL.path() ) );
-++ bCanExit =
-++ !QFile::exists( qFileName ) ||
-++ ( KMessageBox::warningYesNo( 0,
-++ i18n( "A file named \"%1\" already exists. "
-++ "Are you sure you want to overwrite it?" ).arg( qFileName ),
-++ i18n( "Overwrite File?" ),
-++ i18n( "Overwrite" ), KStdGuiItem::cancel() ) == KMessageBox::Yes );
-++ }
-++ else if ( !isSupportedProtocol( qProtocol ) )
-++ {
-++ KMessageBox::sorry( 0,
-++ i18n( "Saving using protocol \"%1\" is not supported." ).arg( qProtocol ) );
-++ bCanExit = false;
-++ }
-++ else
-++ bCanExit = true;
-++ }
-++ else if ( !isSave() && result() == TQDialog::Accepted && !isSupportedProtocol( qProtocol ) )
-++ {
-++ KMessageBox::information( 0,
-++ i18n( "Protocol \"%1\" is supported only partially. "
-++ "Local copy of the file will be created." ).arg( qProtocol ) );
-++ bCanExit = true;
-++ }
-++ else
-++ bCanExit = true;
-++ } while ( !bCanExit );
-++ setIsExecuting( false );
-++
-++ if ( result() == TQDialog::Accepted )
-++ sendCommand( "accept" );
-++ else
-++ sendCommand( "reject" );
-++ }
-++ break;
-++ default:
-++ break;
-++ }
-++
-++ // FIXME Some cleanup of pEvent? delete something, etc.?
-++ }
-++}
-++
-++void TDEFileDialog::appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle )
-++{
-++ TQString qLabel( rTitle );
-++ qLabel.replace( '~', '&' );
-++
-++ if ( rType == "checkbox" )
-++ {
-++ TQCheckBox *pCheckBox = new TQCheckBox( qLabel, m_pCheckBoxes, rId.utf8() );
-++
-++ pCheckBox->setEnabled( true );
-++ pCheckBox->setChecked( false );
-++ }
-++ else if ( rType == "listbox" )
-++ {
-++ TQLabel *pComboLabel = new TQLabel( qLabel, m_pLabels );
-++ TQComboBox *pComboBox = new TQComboBox( m_pComboBoxes, rId.utf8() );
-++
-++ pComboLabel->setBuddy( pComboBox );
-++ pComboBox->setEnabled( true );
-++ }
-++ else if ( rType == "pushbutton" )
-++ {
-++ TQPushButton *pPushButton = new TQPushButton( qLabel, m_pPushButtons, rId.utf8() );
-++ pPushButton->setEnabled( true );
-++ }
-++}
-++
-++TQWidget* TDEFileDialog::findControl( const TQString &rId ) const
-++{
-++ TQObjectList *pList = m_pCustomWidget->queryList();
-++ TQCString qName( rId.utf8() );
-++ TQObjectList::const_iterator it = pList->begin();
-++
-++ for ( ; it != pList->end() && qName != (*it)->name(); ++it )
-++ ;
-++
-++ TQWidget *pWidget = NULL;
-++ if ( it != pList->end() )
-++ pWidget = static_cast< TQWidget* >( *it );
-++
-++ delete pList;
-++
-++ return pWidget;
-++}
-++
-++void TDEFileDialog::enableControl( const TQString &rId, const TQString &rValue )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++
-++ if ( pWidget )
-++ pWidget->setEnabled( rValue.lower() == "true" );
-++}
-++
-++void TDEFileDialog::getValue( const TQString &rId, const TQString &rAction )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++ TQString qString;
-++ qString.reserve( 1024 );
-++ qString.append( "value" );
-++
-++ if ( pWidget )
-++ {
-++ TQCString qClassName = pWidget->className();
-++ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-++ {
-++ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-++
-++ if ( pCheckBox->isChecked() )
-++ qString.append( " bool true" );
-++ else
-++ qString.append( " bool false" );
-++ }
-++ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-++ {
-++ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-++ if ( rAction == "getItems" )
-++ {
-++ qString.append( " stringList" );
-++ for ( int nIdx = 0; nIdx < pComboBox->count(); ++nIdx )
-++ {
-++ qString.append( ' ' );
-++ appendEscaped( qString, pComboBox->text( nIdx ) );
-++ }
-++ }
-++ else if ( rAction == "getSelectedItem" )
-++ {
-++ qString.append( " string " );
-++ appendEscaped( qString, pComboBox->currentText() );
-++ }
-++ else if ( rAction == "getSelectedItemIndex" )
-++ {
-++ qString.append( " int " );
-++ qString.append( TQString().setNum( pComboBox->currentItem() ) );
-++ }
-++ // TODO getHelpURL
-++ }
-++ // TODO push button
-++ }
-++
-++ sendCommand( qString );
-++}
-++
-++void TDEFileDialog::setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++
-++ if ( pWidget )
-++ {
-++ TQCString qClassName = pWidget->className();
-++ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-++ {
-++ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-++
-++ bool bValue = ( !rValue.isEmpty() ) && ( rValue.front().lower() == "true" );
-++ pCheckBox->setChecked( bValue );
-++ }
-++ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-++ {
-++ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-++ if ( rAction == "addItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->insertItem( rValue.front() );
-++ }
-++ else if ( rAction == "addItems" )
-++ {
-++ pComboBox->insertStringList( rValue );
-++ }
-++ else if ( rAction == "deleteItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->removeItem( rValue.front().toInt() );
-++ }
-++ else if ( rAction == "deleteItems" )
-++ {
-++ pComboBox->clear();
-++ }
-++ else if ( rAction == "setSelectedItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->setCurrentItem( rValue.front().toInt() );
-++ }
-++ // FIXME setHelpURL is ignored
-++ }
-++ // TODO push button
-++ }
-++}
-++
-++void TDEFileDialog::appendFilter( const TQString &rTitle, const TQString &rFilter )
-++{
-++ // Filters are separated by ';'
-++ TQString qFilter( rFilter );
-++ qFilter.replace( TQChar( ';' ), TQChar( ' ' ) ).replace( "*.*", "*" );
-++
-++ // Workaround for too wide <All formats> (*.bmp;...) entry
-++ TQString qTitle( rTitle );
-++ qTitle.replace( TQRegExp( "^<([^>]*)> \\(.*" ), "<\\1>" );
-++
-++ m_aFilters.push_back( qMakePair( qTitle, qFilter ) );
-++}
-++
-++TQString TDEFileDialog::filters() const
-++{
-++ TQString qString, qTmp;
-++ bool bFirstFilter = true;
-++
-++ for ( FilterList::const_iterator it = m_aFilters.begin(); it != m_aFilters.end(); ++it )
-++ {
-++ if ( bFirstFilter )
-++ bFirstFilter = false;
-++ else
-++ qString.append( '\n' );
-++
-++ qString.append( (*it).second );
-++ qString.append( '|' );
-++
-++ qTmp = (*it).first;
-++ qString.append( qTmp.replace( '/', "\\/" ) );
-++ }
-++
-++ return qString;
-++}
-++
-++TQString TDEFileDialog::addExtension( const TQString &rFileName ) const
-++{
-++ if ( !isSave() )
-++ return rFileName;
-++
-++ TQString qExtension;
-++
-++ TQWidget *pExtensionWidget = findControl( "100" ); // CHECKBOX_AUTOEXTENSION
-++ TQCheckBox *pExtensionCB = pExtensionWidget? static_cast< TQCheckBox* >( pExtensionWidget->qt_cast( TQCHECKBOX_OBJECT_NAME_STRING ) ): NULL;
-++ if ( pExtensionCB && pExtensionCB->isChecked() )
-++ {
-++ // FIXME: qFilter can be a MIME; we ignore it now...
-++ TQStringList qFilterList = TQStringList::split( " ", currentFilter() );
-++ for ( TQStringList::const_iterator it = qFilterList.begin();
-++ qExtension.isEmpty() && it != qFilterList.end();
-++ ++it )
-++ {
-++ int nUnwanted = (*it).findRev( '*' );
-++ if ( nUnwanted < 0 )
-++ nUnwanted = (*it).findRev( '?' );
-++ else
-++ nUnwanted = ::std::max( nUnwanted, (*it).find( '?', nUnwanted ) );
-++
-++ int nIdx = (*it).find( '.', ::std::max( nUnwanted, 0 ) );
-++ if ( nIdx >= 0 )
-++ qExtension = (*it).mid( nIdx ).lower();
-++ }
-++ }
-++
-++ if ( qExtension.isEmpty() || qExtension == "." || rFileName.endsWith( qExtension ) )
-++ return rFileName;
-++ else
-++ return rFileName + qExtension;
-++}
-++
-++bool TDEFileDialog::isSupportedProtocol( const TQString &rProtocol ) const
-++{
-++ // TODO Get this information directly from OOo
-++ const char * pOOoProtocols[] = { "", "smb", "ftp", "http", "file", "mailto",
-++ "vnd.sun.star.webdav", "news", "private", "vnd.sun.star.help",
-++ "https", "slot", "macro", "javascript", "imap", "pop3", "data",
-++ "cid", "out", "vnd.sun.star.wfs", "vnd.sun.star.hier", "vim",
-++ ".uno", ".component", "vnd.sun.star.pkg", "ldap", "db",
-++ "vnd.sun.star.cmd", "vnd.sun.star.script", "vnd.sun.star.odma",
-++ "telnet",
-++ NULL };
-++
-++ for ( const char **pIndex = pOOoProtocols; *pIndex != NULL; ++pIndex )
-++ {
-++ if ( rProtocol == *pIndex )
-++ return true;
-++ }
-++
-++ // TODO gnome-vfs bits here
-++
-++ return false;
-++}
-++
-++KURL TDEFileDialog::mostLocalURL( const KURL &rURL ) const
-++{
-++#if KDE_IS_VERSION(3,5,0)
-++ KURL qMostLocalURL( KIO::NetAccess::mostLocalURL( rURL, const_cast<TDEFileDialog*>( this ) ) );
-++ if ( qMostLocalURL.isLocalFile() )
-++ return qMostLocalURL;
-++ else
-++ {
-++ // Terrible hack to get even non-existing media:// files right
-++ qMostLocalURL.cd( ".." );
-++ KURL qMostLocalPath( KIO::NetAccess::mostLocalURL( qMostLocalURL, const_cast<TDEFileDialog*>( this ) ) );
-++ if ( qMostLocalPath.isLocalFile() )
-++ {
-++ qMostLocalPath.addPath( rURL.fileName() );
-++ return qMostLocalPath;
-++ }
-++ }
-++#endif
-++
-++ return rURL;
-++}
-++
-++TQString TDEFileDialog::localCopy( const TQString &rFileName ) const
-++{
-++ // 106 == MIB enum for UTF-8
-++ KURL qLocalURL = mostLocalURL( KURL( rFileName, 106 ) );
-++ if ( qLocalURL.isLocalFile() )
-++ return qLocalURL.url();
-++
-++ int nExtensionPos = rFileName.findRev( '/' );
-++ if ( nExtensionPos >= 0 )
-++ nExtensionPos = rFileName.find( '.', nExtensionPos );
-++ else
-++ nExtensionPos = rFileName.find( '.' );
-++
-++ KTempFile qTempFile( TQString::null, ( nExtensionPos < 0 )? TQString(): rFileName.mid( nExtensionPos ) );
-++ KURL qDestURL;
-++ qDestURL.setPath( qTempFile.name() );
-++
-++ if ( !KIO::NetAccess::file_copy( rFileName, qDestURL, 0600, true, false, NULL ) )
-++ {
-++ KMessageBox::error( 0, KIO::NetAccess::lastErrorString() );
-++ return TQString::null;
-++ }
-++
-++ return qDestURL.url();
-++}
-++
-++void TDEFileDialog::fileHighlightedCommand( const TQString & )
-++{
-++ if ( canNotifySelection() )
-++ {
-++ sendCommand( "fileSelectionChanged" );
-++ setCanNotifySelection( false );
-++ }
-++}
-++
-++void TDEFileDialog::selectionChangedCommand()
-++{
-++ if ( canNotifySelection() )
-++ {
-++ sendCommand( "fileSelectionChanged" );
-++ setCanNotifySelection( false );
-++ }
-++}
-++
-++void TDEFileDialog::sendCommand( const TQString &rCommand )
-++{
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "tdefilepicker sent: " << rCommand.latin1() << ::std::endl;
-++#endif
-++
-++ //m_aOutputStream << rCommand << endl;
-++ ::std::cout << rCommand.utf8() << ::std::endl;
-++}
-++
-++void TDEFileDialog::appendURL( TQString &rBuffer, const KURL &rURL )
-++{
-++ // From Martin Kretzschmar:
-++ // file:///path/to/test%E0.odt is not a valid URL from OOo's point of
-++ // view. (?Most modern parts of?) OOo assume(s) that the URL contains only
-++ // ASCII characters (which test%E0.odt does) and is UTF-8 after unescaping
-++ // (which file:///path/test%E0.odt is not).
-++ // Cf. the comment in sal/inc/osl/file.h.
-++ // 106 == MIB enum for UTF-8
-++ TQString qUrlStr = addExtension( rURL.url( 0, 106 ) );
-++
-++ if ( !isExecuting() && !isSupportedProtocol( rURL.protocol() ) )
-++ qUrlStr = localCopy( qUrlStr );
-++
-++ if ( qUrlStr.startsWith( "file:/" ) && qUrlStr.mid( 6, 1 ) != "/" )
-++ qUrlStr.replace( "file:/", "file:///" );
-++
-++ rBuffer.append( " " );
-++ if ( !qUrlStr.isEmpty() )
-++ appendEscaped( rBuffer, qUrlStr );
-++}
-++
-++void TDEFileDialog::appendEscaped( TQString &rBuffer, const TQString &rString )
-++{
-++ const TQChar *pUnicode = rString.unicode();
-++ const TQChar *pEnd = pUnicode + rString.length();
-++
-++ rBuffer.append( '"' );
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ rBuffer.append( "\\\\" );
-++ else if ( *pUnicode == '"' )
-++ rBuffer.append( "\\\"" );
-++ else if ( *pUnicode == '\n' )
-++ rBuffer.append( "\\\n" );
-++ else
-++ rBuffer.append( *pUnicode );
-++ }
-++ rBuffer.append( '"' );
-++}
-++
-++TQString TDEFileDialog::escapeString( const TQString &rString )
-++{
-++ TQString qString;
-++ qString.reserve( 2*rString.length() + 2 ); // every char escaped + quotes
-++
-++ appendEscaped( qString, rString );
-++
-++ return qString;
-++}
-++
-++
-++void TDEFileFilterComboHack::setCurrentFilter( const TQString& filter )
-++{
-++ setCurrentText( filter );
-++ filterChanged();
-++
-++ // Workaround for 'Filter name (*.blah)' vs. 'Filter name'
-++ if ( currentText() != text( currentItem() ) )
-++ {
-++ int nItem = 0;
-++ for ( ; nItem < count() && !text( nItem ).startsWith( filter ); ++nItem );
-++
-++ if ( nItem < count() )
-++ setCurrentItem( nItem );
-++ else
-++ setCurrentItem( 0 );
-++
-++ filterChanged();
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefilepicker.hxx fpicker/source/unx/tde/tdefilepicker.hxx
-+--- fpicker/source/unx/tde/tdefilepicker.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefilepicker.hxx 2011-08-17 14:05:02.262902414 -0500
-+@@ -0,0 +1,126 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDEFILEPICKER_HXX_
-++#define _TDEFILEPICKER_HXX_
-++
-++#include <kfiledialog.h>
-++#include <kfilefiltercombo.h>
-++
-++class TQGrid;
-++class TQHBox;
-++class TQVBox;
-++
-++class TDEFileDialog : public KFileDialog
-++{
-++ Q_OBJECT
-++
-++protected:
-++ typedef TQPair< TQString, TQString > FilterEntry;
-++ typedef TQValueList< FilterEntry > FilterList;
-++
-++ TQVBox *m_pCustomWidget;
-++ TQHBox *m_pCombosAndButtons;
-++
-++ TQVBox *m_pLabels;
-++ TQVBox *m_pComboBoxes;
-++ TQVBox *m_pPushButtons;
-++
-++ TQGrid *m_pCheckBoxes;
-++
-++ FilterList m_aFilters;
-++
-++ /** Are we a "Save As" dialog?
-++ *
-++ * We cannot use KFileDialog::setOperationMode() here, because then
-++ * it automatically adds an "Automatically select filename extension"
-++ * check box, and completely destroys the dialog's layout
-++ * (custom list boxes are under this check box, which looks ugly).
-++ */
-++ bool m_bIsSave;
-++ bool m_bIsExecuting;
-++
-++ bool m_bCanNotifySelection;
-++
-++public:
-++ TDEFileDialog( const TQString &startDir, const TQString &filter,
-++ TQWidget *parent, const char *name );
-++ virtual ~TDEFileDialog();
-++
-++protected:
-++ virtual void resizeEvent( TQResizeEvent *pEvent );
-++ virtual void showEvent( TQShowEvent *pEvent );
-++ void updateCustomWidgetLayout();
-++
-++ virtual void customEvent( TQCustomEvent *pEvent );
-++
-++protected:
-++ void appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle );
-++ TQWidget* findControl( const TQString &rId ) const;
-++ void enableControl( const TQString &rId, const TQString &rValue );
-++ void getValue( const TQString &rId, const TQString &rAction );
-++ void setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue );
-++
-++ void appendFilter( const TQString &rTitle, const TQString &rFilter );
-++ TQString filters() const;
-++ TQString addExtension( const TQString &rFileName ) const;
-++
-++ void setIsSave( bool bIsSave ) { m_bIsSave = bIsSave; }
-++ bool isSave( void ) const { return m_bIsSave; }
-++
-++ void setIsExecuting( bool bIsExecuting ) { m_bIsExecuting = bIsExecuting; }
-++ bool isExecuting( void ) const { return m_bIsExecuting; }
-++
-++ bool isSupportedProtocol( const TQString &rProtocol ) const;
-++ KURL mostLocalURL( const KURL &rURL ) const;
-++ TQString localCopy( const TQString &rFileName ) const;
-++
-++ void setCanNotifySelection( bool bCanNotifySelection ) { m_bCanNotifySelection = bCanNotifySelection; }
-++ bool canNotifySelection( void ) const { return m_bCanNotifySelection; }
-++
-++protected slots:
-++ void fileHighlightedCommand( const TQString & );
-++ void selectionChangedCommand();
-++
-++protected:
-++ void sendCommand( const TQString &rCommand );
-++ void appendURL( TQString &rBuffer, const KURL &rURL );
-++ void appendEscaped( TQString &rBuffer, const TQString &rString );
-++ TQString escapeString( const TQString &rString );
-++};
-++
-++class TDEFileFilterComboHack : public KFileFilterCombo
-++{
-++public:
-++ void setCurrentFilter( const TQString& filter );
-++};
-++
-++#endif // _TDEFILEPICKER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefpmain.cxx fpicker/source/unx/tde/tdefpmain.cxx
-+--- fpicker/source/unx/tde/tdefpmain.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefpmain.cxx 2011-08-17 14:04:58.622623640 -0500
-+@@ -0,0 +1,93 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdemodalityfilter.hxx>
-++#include <tdefilepicker.hxx>
-++#include <tdecommandthread.hxx>
-++
-++#include <kaboutdata.h>
-++#include <kapplication.h>
-++#include <kcmdlineargs.h>
-++
-++#include <iostream>
-++#include <stdlib.h>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// Main
-++//////////////////////////////////////////////////////////////////////////
-++
-++static KCmdLineOptions sOptions[] =
-++{
-++ { "winid <argument>", I18N_NOOP("Window ID to which is the fpicker modal"), "0" },
-++ KCmdLineLastOption
-++};
-++
-++int main( int argc, char* argv[] )
-++{
-++ // we fake the name of the application to have "OpenOffice.org" in the
-++ // title
-++ KAboutData qAboutData( "tdefilepicker", I18N_NOOP( "OpenOffice.org" ),
-++ "0.1", I18N_NOOP( "tdefilepicker is an implementation of the TDE file dialog for OpenOffice.org." ),
-++ KAboutData::License_LGPL,
-++ "(c) 2004, Jan Holesovsky" );
-++ qAboutData.addAuthor( "Jan Holesovsky", I18N_NOOP("Original author and current maintainer"), "kendy@openoffice.org" );
-++
-++ // Let the user see that this does something...
-++ ::std::cerr << "tdefilepicker, an implementation of TDE file dialog for OOo." << ::std::endl
-++ << "Type 'exit' and press Enter to finish." << ::std::endl;
-++
-++ KCmdLineArgs::addCmdLineOptions( sOptions );
-++ KCmdLineArgs::init( argc, argv, &qAboutData );
-++
-++ KLocale::setMainCatalogue( "kdialog" );
-++
-++ KApplication kApplication;
-++
-++ // Setup the modality
-++ KCmdLineArgs *pArgs = KCmdLineArgs::parsedArgs();
-++ long nWinId = atol( pArgs->getOption( "winid" ) );
-++ pArgs->clear();
-++
-++ TDEModalityFilter qModalityFilter( nWinId );
-++
-++ TDEFileDialog aFileDialog( NULL, TQString(), NULL, "tdefiledialog" );
-++
-++ TDECommandThread qCommandThread( &aFileDialog );
-++ qCommandThread.start();
-++
-++ kApplication.exec();
-++
-++ qCommandThread.wait();
-++
-++ ::std::cout << "exited" << ::std::endl;
-++
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdemodalityfilter.cxx fpicker/source/unx/tde/tdemodalityfilter.cxx
-+--- fpicker/source/unx/tde/tdemodalityfilter.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdemodalityfilter.cxx 2011-08-17 14:04:44.121513143 -0500
-+@@ -0,0 +1,68 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdemodalityfilter.hxx>
-++
-++#include <kapplication.h>
-++#include <kdialogbase.h>
-++
-++#include <netwm.h>
-++#include <X11/Xlib.h>
-++#include <X11/Xutil.h>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// Modality filter
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDEModalityFilter::TDEModalityFilter( WId nWinId )
-++ : m_nWinId( nWinId )
-++{
-++ kapp->installEventFilter( this );
-++}
-++
-++TDEModalityFilter::~TDEModalityFilter()
-++{
-++ kapp->removeEventFilter( this );
-++}
-++
-++bool TDEModalityFilter::eventFilter( TQObject *pObject, TQEvent *pEvent )
-++{
-++ if ( pObject->isWidgetType() && pEvent->type() == TQEvent::Show )
-++ {
-++ KDialogBase* pDlg = ::qt_cast< KDialogBase* >( pObject );
-++ if ( pDlg != NULL && m_nWinId != 0 )
-++ {
-++ XSetTransientForHint( qt_xdisplay(), pDlg->winId(), m_nWinId );
-++ m_nWinId = 0;
-++ }
-++ }
-++ return false;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdemodalityfilter.hxx fpicker/source/unx/tde/tdemodalityfilter.hxx
-+--- fpicker/source/unx/tde/tdemodalityfilter.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdemodalityfilter.hxx 2011-08-17 14:04:27.940273979 -0500
-+@@ -0,0 +1,49 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDEMODALITYFILTER_HXX_
-++#define _TDEMODALITYFILTER_HXX_
-++
-++#include <tqobject.h>
-++
-++class TDEModalityFilter : public TQObject
-++{
-++private:
-++ WId m_nWinId;
-++
-++public:
-++ TDEModalityFilter( WId nWinId );
-++ virtual ~TDEModalityFilter();
-++
-++ virtual bool eventFilter( TQObject *pObject, TQEvent *pEvent );
-++};
-++
-++#endif // _TDEMODALITYFILTER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/FPServiceInfo.hxx fpicker/source/unx/tde_unx/FPServiceInfo.hxx
-+--- fpicker/source/unx/tde_unx/FPServiceInfo.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/FPServiceInfo.hxx 2011-08-17 14:07:24.203772856 -0500
-+@@ -0,0 +1,48 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _FPSERVICEINFO_HXX_
-++#define _FPSERVICEINFO_HXX_
-++
-++// the service names
-++#define FILE_PICKER_SERVICE_NAME "com.sun.star.ui.dialogs.TDEFilePicker"
-++
-++// the implementation names
-++#define FILE_PICKER_IMPL_NAME "com.sun.star.ui.dialogs.UnxFilePicker"
-++
-++// the registry key names
-++// a key under which this service will be registered,
-++// Format: -> "/ImplName/UNO/SERVICES/ServiceName"
-++// <Implementation-Name></UNO/SERVICES/><Service-Name>
-++#define FILE_PICKER_REGKEY_NAME "/com.sun.star.ui.dialogs.UnxFilePicker/UNO/SERVICES/com.sun.star.ui.dialogs.TDEFilePicker"
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/fps-tde-ucd.txt fpicker/source/unx/tde_unx/fps-tde-ucd.txt
-+--- fpicker/source/unx/tde_unx/fps-tde-ucd.txt 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/fps-tde-ucd.txt 2011-08-17 14:06:16.168562070 -0500
-+@@ -0,0 +1,6 @@
-++[ComponentDescriptor]
-++ImplementationName=com.sun.star.ui.dialogs.UnxFilePicker
-++ComponentName=fps_tde.uno.so
-++LoaderName=com.sun.star.loader.SharedLibrary
-++[SupportedServices]
-++com.sun.star.ui.dialogs.TDEFilePicker
-+diff -urN fpicker/source/unx/tde_unx/fps_tde.xml fpicker/source/unx/tde_unx/fps_tde.xml
-+--- fpicker/source/unx/tde_unx/fps_tde.xml 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/fps_tde.xml 2011-08-17 14:07:17.433254165 -0500
-+@@ -0,0 +1,51 @@
-++<?xml version="1.0" encoding="UTF-8"?>
-++<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-++<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-++ <module-name>fps_tde</module-name>
-++ <component-description>
-++ <author> Jan Holesovsky </author>
-++ <name> com.sun.star.comp.ui.dialogs.FilePicker </name>
-++ <description>
-++ The TDE implementation of the FilePicker service.
-++ </description>
-++ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-++ <language> c++ </language>
-++ <status value="beta"/>
-++ <supported-service> com.sun.star.ui.dialogs.FilePicker </supported-service>
-++ <service-dependency>...</service-dependency>
-++ <type> com.sun.star.ui.dialogs.XExecutableDialog </type>
-++ <type> com.sun.star.ui.dialogs.XFilePicker </type>
-++ <type> com.sun.star.ui.dialogs.XFilterManager </type>
-++ <type> com.sun.star.ui.dialogs.XFilterGroupManager </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerListener </type>
-++ <type> com.sun.star.ui.dialogs.ExecutableDialogException </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerNotifier </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerControlAccess </type>
-++ <type> com.sun.star.ui.dialogs.XFilePreview </type>
-++ <type> com.sun.star.ui.dialogs.ExtendedFilePickerElementIds </type>
-++ <type> com.sun.star.ui.dialogs.ExecutableDialogResults </type>
-++ <type> com.sun.star.ui.dialogs.FilePickerEvent </type>
-++ <type> com.sun.star.ui.dialogs.CommonFilePickerElementIds </type>
-++ <type> com.sun.star.ui.dialogs.ListboxControlActions </type>
-++ <type> com.sun.star.ui.dialogs.TemplateDescription </type>
-++ <type> com.sun.star.ui.dialogs.FilePreviewImageFormats </type>
-++ <type> com.sun.star.util.XCancellable </type>
-++ <type> com.sun.star.lang.XComponent </type>
-++ <type> com.sun.star.lang.XMultiServiceFactory </type>
-++ <type> com.sun.star.lang.XSingleServiceFactory </type>
-++ <type> com.sun.star.lang.XServiceInfo </type>
-++ <type> com.sun.star.lang.XTypeProvider </type>
-++ <type> com.sun.star.lang.IllegalArgumentException </type>
-++ <type> com.sun.star.uno.TypeClass </type>
-++ <type> com.sun.star.uno.XWeak </type>
-++ <type> com.sun.star.uno.XAggregation </type>
-++ <type> com.sun.star.registry.XRegistryKey </type>
-++ <type> com.sun.star.container.XSet </type>
-++ </component-description>
-++ <project-build-dependency> cppuhelper </project-build-dependency>
-++ <project-build-dependency> cppu </project-build-dependency>
-++ <project-build-dependency> sal </project-build-dependency>
-++ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-++ <runtime-module-dependency> cppu2 </runtime-module-dependency>
-++ <runtime-module-dependency> sal2 </runtime-module-dependency>
-++</module-description>
-+diff -urN fpicker/source/unx/tde_unx/makefile.mk fpicker/source/unx/tde_unx/makefile.mk
-+--- fpicker/source/unx/tde_unx/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/makefile.mk 2011-08-17 14:07:11.152773020 -0500
-+@@ -0,0 +1,78 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2010 Novell, Inc.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++
-++PRJNAME=fpicker
-++TARGET=fps_tde.uno
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++DLLPRE=
-++
-++# ------------------------------------------------------------------
-++
-++# Currently just TDE is supported...
-++.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++dummy:
-++ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-++
-++.ELSE # we build for TDE
-++
-++# --- Files --------------------------------------------------------
-++
-++SLOFILES =\
-++ $(SLO)$/UnxCommandThread.obj \
-++ $(SLO)$/UnxFilePicker.obj \
-++ $(SLO)$/UnxNotifyThread.obj \
-++ $(SLO)$/UnxFPentry.obj
-++
-++SHL1NOCHECK=TRUE
-++SHL1TARGET=fps_tde.uno
-++SHL1STDLIBS=$(CPPULIB)\
-++ $(CPPUHELPERLIB)\
-++ $(SALLIB)\
-++ $(VCLLIB)\
-++ $(TOOLSLIB)
-++
-++SHL1OBJS=$(SLOFILES)
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++
-++DEF1NAME=$(SHL1TARGET)
-++DEF1VERSIONMAP=$(SOLARENV)/src/component.map
-++
-++.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-+diff -urN fpicker/source/unx/tde_unx/UnxCommandThread.cxx fpicker/source/unx/tde_unx/UnxCommandThread.cxx
-+--- fpicker/source/unx/tde_unx/UnxCommandThread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxCommandThread.cxx 2011-08-17 14:06:59.001842171 -0500
-+@@ -0,0 +1,315 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <UnxCommandThread.hxx>
-++#include <UnxNotifyThread.hxx>
-++
-++#include <rtl/ustring.hxx>
-++#include <rtl/ustrbuf.hxx>
-++
-++#include <unistd.h>
-++#include <string.h>
-++#include <iostream>
-++
-++using namespace ::com::sun::star;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePickerCommandThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePickerCommandThread::UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD )
-++ : m_pNotifyThread( pNotifyThread ),
-++ m_nReadFD( nReadFD )
-++{
-++}
-++
-++UnxFilePickerCommandThread::~UnxFilePickerCommandThread()
-++{
-++}
-++
-++sal_Bool SAL_CALL UnxFilePickerCommandThread::result()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aResult;
-++}
-++
-++::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getCurrentFilter()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetCurrentFilter;
-++}
-++
-++::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getDirectory()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetDirectory;
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::getFiles()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sal_Int32 nSize = m_aGetFiles.size();
-++ uno::Sequence< ::rtl::OUString > aFiles( ( nSize > 1 )? nSize + 1: nSize );
-++
-++ if ( nSize == 1 )
-++ aFiles[0] = m_aGetFiles.front();
-++ else if ( nSize > 1 )
-++ {
-++ // First entry in the sequence must be the dirname, the others are the
-++ // filenames, so we have to rearrange the list...
-++
-++ ::rtl::OUString aFront = m_aGetFiles.front();
-++ sal_Int32 nLastSlash = aFront.lastIndexOf( '/' );
-++
-++ aFiles[0] = ( nLastSlash >= 0 )? aFront.copy( 0, nLastSlash ): ::rtl::OUString();
-++ ++nLastSlash;
-++
-++ sal_Int32 nIdx = 1;
-++ for ( ::std::list< ::rtl::OUString >::const_iterator it = m_aGetFiles.begin();
-++ it != m_aGetFiles.end(); ++it, ++nIdx )
-++ {
-++ sal_Int32 nLength = (*it).getLength() - nLastSlash;
-++ aFiles[nIdx] = ( nLength >= 0 )? (*it).copy( nLastSlash, nLength ): ::rtl::OUString();
-++ }
-++ }
-++
-++ return aFiles;
-++}
-++
-++uno::Any SAL_CALL UnxFilePickerCommandThread::getValue()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetValue;
-++}
-++
-++void SAL_CALL UnxFilePickerCommandThread::run()
-++{
-++ if ( m_nReadFD < 0 )
-++ return;
-++
-++ sal_Int32 nBufferSize = 1024; // 1 is for testing, 1024 for real use
-++ sal_Char *pBuffer = new sal_Char[nBufferSize];
-++ sal_Char *pBufferEnd = pBuffer + nBufferSize;
-++
-++ sal_Char *pWhereToRead = pBuffer;
-++ sal_Char *pEntryBegin = pBuffer;
-++ sal_Int32 nBytesRead = 0;
-++ sal_Bool bShouldExit = sal_False;
-++ while ( !bShouldExit && ( nBytesRead = read( m_nReadFD, pWhereToRead, pBufferEnd - pWhereToRead ) ) > 0 )
-++ {
-++ sal_Bool bFoundNL = sal_False;
-++ sal_Char *pWhereToReadEnd = pWhereToRead + nBytesRead;
-++ sal_Char *pEntryEnd = pWhereToRead;
-++ do {
-++ for ( ; pEntryEnd < pWhereToReadEnd && *pEntryEnd != '\n'; ++pEntryEnd )
-++ ;
-++
-++ if ( pEntryEnd < pWhereToReadEnd )
-++ {
-++ bFoundNL = sal_True;
-++ *pEntryEnd = 0;
-++
-++ if ( strcmp( pEntryBegin, "exited" ) == 0 )
-++ bShouldExit = sal_True;
-++ else
-++ handleCommand( ::rtl::OUString( pEntryBegin, pEntryEnd - pEntryBegin, RTL_TEXTENCODING_UTF8 )/*, bQuit*/ );
-++
-++ pEntryBegin = pEntryEnd + 1;
-++ }
-++ } while ( pEntryEnd < pWhereToReadEnd );
-++
-++ if ( bFoundNL )
-++ {
-++ if ( pEntryBegin < pBufferEnd )
-++ memmove( pBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-++ }
-++ else
-++ {
-++ // enlarge the buffer size
-++ nBufferSize *= 2;
-++ sal_Char *pNewBuffer = new sal_Char[nBufferSize];
-++ if ( pEntryBegin < pBufferEnd )
-++ memmove( pNewBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-++
-++ delete[] pBuffer;
-++ pBuffer = pNewBuffer;
-++ pBufferEnd = pBuffer + nBufferSize;
-++ }
-++
-++ pWhereToRead = pBuffer + ( pWhereToReadEnd - pEntryBegin );
-++ pEntryBegin = pBuffer;
-++ }
-++}
-++
-++void SAL_CALL UnxFilePickerCommandThread::handleCommand( const ::rtl::OUString &rCommand )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "UnxFilePicker received: \"" <<
-++ OUStringToOString( rCommand, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-++#endif
-++
-++ ::std::list< ::rtl::OUString > aList = tokenize( rCommand );
-++
-++ if ( aList.size() == 0 )
-++ return;
-++
-++ ::rtl::OUString aCommandName = aList.front();
-++ aList.pop_front();
-++
-++ if ( aCommandName.equalsAscii( "accept" ) )
-++ {
-++ m_aResult = sal_True;
-++ m_aExecCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "reject" ) )
-++ {
-++ m_aResult = sal_False;
-++ m_aExecCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "fileSelectionChanged" ) )
-++ {
-++ if ( m_pNotifyThread )
-++ m_pNotifyThread->fileSelectionChanged();
-++ }
-++ else if ( aCommandName.equalsAscii( "files" ) )
-++ {
-++ m_aGetFiles = aList;
-++ m_aGetFilesCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "value" ) )
-++ {
-++ ::rtl::OUString aType;
-++ if ( !aList.empty() )
-++ {
-++ aType = aList.front();
-++ aList.pop_front();
-++ }
-++
-++ if ( aType.equalsAscii( "bool" ) )
-++ {
-++ sal_Bool bValue = !aList.empty() && aList.front().equalsIgnoreAsciiCaseAscii( "true" );
-++
-++ m_aGetValue <<= bValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "int" ) )
-++ {
-++ sal_Int32 nValue = 0;
-++ if ( !aList.empty() )
-++ nValue = aList.front().toInt32();
-++
-++ m_aGetValue <<= nValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "string" ) )
-++ {
-++ ::rtl::OUString aValue;
-++ if ( !aList.empty() )
-++ aValue = aList.front();
-++
-++ m_aGetValue <<= aValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "stringList" ) )
-++ {
-++ uno::Sequence< ::rtl::OUString > aSequence( aList.size() );
-++ sal_Int32 nIdx = 0;
-++ for ( ::std::list< ::rtl::OUString >::const_iterator it = aList.begin(); it != aList.end(); ++it, ++nIdx )
-++ aSequence[nIdx] = (*it);
-++
-++ m_aGetValue <<= aSequence;
-++ m_aGetValueCondition.set();
-++ }
-++ else
-++ {
-++ m_aGetValue = uno::Any();
-++ m_aGetValueCondition.set();
-++ }
-++ }
-++ else if ( aCommandName.equalsAscii( "currentFilter" ) )
-++ {
-++ m_aGetCurrentFilter = aList.empty()? ::rtl::OUString(): aList.front();
-++ m_aGetCurrentFilterCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "currentDirectory" ) )
-++ {
-++ m_aGetDirectory = aList.empty()? ::rtl::OUString(): aList.front();
-++ m_aGetDirectoryCondition.set();
-++ }
-++ else
-++ {
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "Unrecognized command: "
-++ << OUStringToOString( aCommandName, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-++#endif
-++ }
-++}
-++
-++::std::list< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::tokenize( const ::rtl::OUString &rCommand )
-++{
-++ ::std::list< ::rtl::OUString > aList;
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ const sal_Unicode *pUnicode = rCommand.getStr();
-++ const sal_Unicode *pEnd = pUnicode + rCommand.getLength();
-++ sal_Bool bQuoted = sal_False;
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ {
-++ ++pUnicode;
-++ if ( pUnicode != pEnd )
-++ {
-++ if ( *pUnicode == 'n' )
-++ aBuffer.appendAscii( "\n", 1 );
-++ else
-++ aBuffer.append( *pUnicode );
-++ }
-++ }
-++ else if ( *pUnicode == '"' )
-++ bQuoted = !bQuoted;
-++ else if ( *pUnicode == ' ' && !bQuoted )
-++ aList.push_back( aBuffer.makeStringAndClear() );
-++ else
-++ aBuffer.append( *pUnicode );
-++ }
-++ aList.push_back( aBuffer.makeStringAndClear() );
-++
-++ return aList;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxCommandThread.hxx fpicker/source/unx/tde_unx/UnxCommandThread.hxx
-+--- fpicker/source/unx/tde_unx/UnxCommandThread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxCommandThread.hxx 2011-08-17 14:06:49.721131468 -0500
-+@@ -0,0 +1,136 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXCOMMANDTHREAD_HXX_
-++#define _UNXCOMMANDTHREAD_HXX_
-++
-++#include <com/sun/star/uno/Any.hxx>
-++#include <com/sun/star/uno/Sequence.hxx>
-++
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <osl/thread.hxx>
-++#include <rtl/ustring.hxx>
-++
-++#include <vcl/svapp.hxx>
-++
-++#include <list>
-++
-++class UnxFilePickerNotifyThread;
-++
-++/** Synchronization for the 'thread-less' version of the fpicker.
-++
-++ Something like osl::Condition, but calls Application::Yield() while in
-++ wait().
-++*/
-++class YieldingCondition
-++{
-++ ::osl::Mutex m_aMutex;
-++ bool m_bValue;
-++
-++ bool get()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ return m_bValue;
-++ }
-++
-++public:
-++ YieldingCondition() { reset(); }
-++
-++ void reset()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ m_bValue = false;
-++ }
-++
-++ void set()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ m_bValue = true;
-++ }
-++
-++ void wait()
-++ {
-++ while ( !get() )
-++ Application::Yield();
-++ }
-++};
-++
-++class UnxFilePickerCommandThread : public ::osl::Thread
-++{
-++protected:
-++ UnxFilePickerNotifyThread *m_pNotifyThread;
-++ int m_nReadFD;
-++
-++ ::osl::Mutex m_aMutex;
-++
-++ YieldingCondition m_aExecCondition;
-++ sal_Bool m_aResult;
-++
-++ ::osl::Condition m_aGetCurrentFilterCondition;
-++ ::rtl::OUString m_aGetCurrentFilter;
-++
-++ ::osl::Condition m_aGetDirectoryCondition;
-++ ::rtl::OUString m_aGetDirectory;
-++
-++ ::osl::Condition m_aGetFilesCondition;
-++ ::std::list< ::rtl::OUString > m_aGetFiles;
-++
-++ ::osl::Condition m_aGetValueCondition;
-++ ::com::sun::star::uno::Any m_aGetValue;
-++
-++public:
-++ UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD );
-++ ~UnxFilePickerCommandThread();
-++
-++ YieldingCondition& SAL_CALL execCondition() { return m_aExecCondition; }
-++ sal_Bool SAL_CALL result();
-++
-++ ::osl::Condition& SAL_CALL getCurrentFilterCondition() { return m_aGetCurrentFilterCondition; }
-++ ::rtl::OUString SAL_CALL getCurrentFilter();
-++
-++ ::osl::Condition& SAL_CALL getDirectoryCondition() { return m_aGetDirectoryCondition; }
-++ ::rtl::OUString SAL_CALL getDirectory();
-++
-++ ::osl::Condition& SAL_CALL getFilesCondition() { return m_aGetFilesCondition; }
-++ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles();
-++
-++ ::osl::Condition& SAL_CALL getValueCondition() { return m_aGetValueCondition; }
-++ ::com::sun::star::uno::Any SAL_CALL getValue();
-++
-++protected:
-++ virtual void SAL_CALL run();
-++
-++ virtual void SAL_CALL handleCommand( const ::rtl::OUString &rCommand/*, sal_Bool &rQuit*/ );
-++ ::std::list< ::rtl::OUString > SAL_CALL tokenize( const ::rtl::OUString &rCommand );
-++};
-++
-++#endif // _UNXCOMMANDTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFilePicker.cxx fpicker/source/unx/tde_unx/UnxFilePicker.cxx
-+--- fpicker/source/unx/tde_unx/UnxFilePicker.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFilePicker.cxx 2011-08-17 14:07:44.765348071 -0500
-+@@ -0,0 +1,932 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <com/sun/star/lang/DisposedException.hpp>
-++#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-++#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-++#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
-++#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
-++#include <com/sun/star/ui/dialogs/ControlActions.hpp>
-++
-++#include <FPServiceInfo.hxx>
-++
-++#include <cppuhelper/interfacecontainer.h>
-++#include <osl/diagnose.h>
-++#include <rtl/ustring.hxx>
-++#include <rtl/ustrbuf.hxx>
-++#include <tools/resmgr.hxx>
-++
-++#include <svtools/svtools.hrc>
-++#include <UnxFilePicker.hxx>
-++#include <UnxCommandThread.hxx>
-++#include <UnxNotifyThread.hxx>
-++
-++#include <vcl/svapp.hxx>
-++#include <vcl/sysdata.hxx>
-++#include <vcl/syswin.hxx>
-++#include <vcl/window.hxx>
-++
-++#include <sys/wait.h>
-++#include <unistd.h>
-++#include <fcntl.h>
-++#include <stdio.h>
-++
-++#include <iostream>
-++
-++using namespace ::com::sun::star;
-++
-++using namespace ::com::sun::star::ui::dialogs;
-++using namespace ::com::sun::star::ui::dialogs::TemplateDescription;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// helper functions
-++//////////////////////////////////////////////////////////////////////////
-++
-++namespace
-++{
-++ // controling event notifications
-++ const bool STARTUP_SUSPENDED = true;
-++ const bool STARTUP_ALIVE = false;
-++
-++ uno::Sequence<rtl::OUString> SAL_CALL FilePicker_getSupportedServiceNames()
-++ {
-++ uno::Sequence<rtl::OUString> aRet(3);
-++ aRet[0] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.FilePicker");
-++ aRet[1] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.SystemFilePicker");
-++ aRet[2] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.TDEFilePicker");
-++ return aRet;
-++ }
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePicker
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePicker::UnxFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr )
-++ : cppu::WeakComponentImplHelper8<
-++ XFilterManager,
-++ XFilterGroupManager,
-++ XFilePickerControlAccess,
-++ XFilePickerNotifier,
-++// TODO XFilePreview,
-++ lang::XInitialization,
-++ util::XCancellable,
-++ lang::XEventListener,
-++ lang::XServiceInfo>( m_rbHelperMtx ),
-++ m_xServiceMgr( xServiceMgr ),
-++ m_nFilePickerPid( -1 ),
-++ m_nFilePickerWrite( -1 ),
-++ m_nFilePickerRead( -1 ),
-++ m_pNotifyThread( NULL ),
-++ m_pCommandThread( NULL ),
-++ m_pResMgr( CREATEVERSIONRESMGR( fps_office ) )
-++{
-++}
-++
-++UnxFilePicker::~UnxFilePicker()
-++{
-++ if ( m_nFilePickerPid > 0 )
-++ {
-++ sendCommand( ::rtl::OUString::createFromAscii( "exit" ) );
-++ waitpid( m_nFilePickerPid, NULL, 0 );
-++ }
-++
-++ if ( m_pCommandThread )
-++ {
-++ m_pCommandThread->join();
-++
-++ delete m_pCommandThread, m_pCommandThread = NULL;
-++ }
-++
-++ if ( m_pNotifyThread )
-++ {
-++ m_pNotifyThread->exit();
-++
-++ m_pNotifyThread->join();
-++
-++ delete m_pNotifyThread, m_pNotifyThread = NULL;
-++ }
-++
-++ if ( m_nFilePickerWrite >= 0 )
-++ close( m_nFilePickerWrite );
-++
-++ if ( m_nFilePickerRead >= 0 )
-++ close( m_nFilePickerRead );
-++
-++ delete m_pResMgr, m_pResMgr = NULL;
-++}
-++
-++void SAL_CALL UnxFilePicker::addFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ OSL_ASSERT( m_pNotifyThread );
-++ osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pNotifyThread->addFilePickerListener( xListener );
-++}
-++
-++void SAL_CALL UnxFilePicker::removeFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ OSL_ASSERT( m_pNotifyThread );
-++ osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pNotifyThread->removeFilePickerListener( xListener );
-++}
-++
-++void SAL_CALL UnxFilePicker::setTitle( const rtl::OUString &rTitle )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setTitle " );
-++ appendEscaped( aBuffer, rTitle );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++sal_Int16 SAL_CALL UnxFilePicker::execute()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++
-++ // this is _not_ an osl::Condition, see i#93366
-++ m_pCommandThread->execCondition().reset();
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "exec" ) );
-++
-++ m_pCommandThread->execCondition().wait();
-++
-++ return m_pCommandThread->result();
-++}
-++
-++void SAL_CALL UnxFilePicker::setMultiSelectionMode( sal_Bool bMode )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aString = bMode?
-++ ::rtl::OUString::createFromAscii( "setMultiSelection true" ):
-++ ::rtl::OUString::createFromAscii( "setMultiSelection false" );
-++
-++ sendCommand( aString );
-++}
-++
-++void SAL_CALL UnxFilePicker::setDefaultName( const ::rtl::OUString &rName )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setDefaultName " );
-++ appendEscaped( aBuffer, rName );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setDisplayDirectory( const rtl::OUString &rDirectory )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setDirectory " );
-++ appendEscaped( aBuffer, rDirectory );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getDisplayDirectory()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getDirectory" ),
-++ m_pCommandThread->getDirectoryCondition() );
-++
-++ return m_pCommandThread->getDirectory();
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getFiles()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getFiles" ),
-++ m_pCommandThread->getFilesCondition() );
-++
-++ return m_pCommandThread->getFiles();
-++}
-++
-++void SAL_CALL UnxFilePicker::appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendFilter " );
-++ appendEscaped( aBuffer, rTitle );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, rFilter );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setCurrentFilter( const rtl::OUString &rTitle )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setCurrentFilter " );
-++ appendEscaped( aBuffer, rTitle );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getCurrentFilter()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getCurrentFilter" ),
-++ m_pCommandThread->getCurrentFilterCondition() );
-++
-++ return m_pCommandThread->getCurrentFilter();
-++}
-++
-++void SAL_CALL UnxFilePicker::appendFilterGroup( const rtl::OUString &rGroupTitle, const uno::Sequence<beans::StringPair> &rFilters )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendFilterGroup " );
-++ appendEscaped( aBuffer, rGroupTitle );
-++
-++ for ( sal_Int32 i = 0; i < rFilters.getLength(); ++i )
-++ {
-++ beans::StringPair aPair = rFilters[i];
-++
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aPair.First );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aPair.Second );
-++ }
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const uno::Any &rValue )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aType;
-++ ::rtl::OUString aAction;
-++ sal_Int32 nTitleId;
-++
-++ if ( controlIdInfo( nControlId, aType, nTitleId ) && controlActionInfo( nControlAction, aAction ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setValue " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( aAction );
-++
-++ if ( aType.equalsAscii( "checkbox" ) )
-++ {
-++ sal_Bool bControlValue;
-++ if ( ( rValue >>= bControlValue ) && bControlValue )
-++ aBuffer.appendAscii( " true" );
-++ else
-++ aBuffer.appendAscii( " false" );
-++ }
-++ else if ( aType.equalsAscii( "listbox" ) )
-++ {
-++ switch ( nControlAction )
-++ {
-++ case ControlActions::ADD_ITEM:
-++ case ControlActions::SET_HELP_URL:
-++ {
-++ ::rtl::OUString aString;
-++ if ( rValue >>= aString )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aString );
-++ }
-++ }
-++ break;
-++
-++ case ControlActions::ADD_ITEMS:
-++ {
-++ uno::Sequence< ::rtl::OUString > aSequence;
-++ if ( rValue >>= aSequence )
-++ {
-++ for ( sal_Int32 nIdx = 0; nIdx < aSequence.getLength(); ++nIdx )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aSequence[nIdx] );
-++ }
-++
-++ }
-++ }
-++ break;
-++
-++ case ControlActions::DELETE_ITEM:
-++ case ControlActions::SET_SELECT_ITEM:
-++ {
-++ sal_Int32 nInt;
-++ if ( rValue >>= nInt )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( nInt );
-++ }
-++ }
-++ break;
-++
-++ default:
-++ // nothing
-++ break;
-++ }
-++ }
-++ // TODO else if push button...
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++ }
-++}
-++
-++uno::Any SAL_CALL UnxFilePicker::getValue( sal_Int16 nControlId, sal_Int16 nControlAction )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aAction;
-++
-++ if ( controlActionInfo( nControlAction, aAction ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "getValue " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( aAction );
-++
-++ sendCommand( aBuffer.makeStringAndClear(),
-++ m_pCommandThread->getValueCondition() );
-++
-++ return m_pCommandThread->getValue();
-++ }
-++
-++ return uno::Any();
-++}
-++
-++void SAL_CALL UnxFilePicker::enableControl( sal_Int16 nControlId, sal_Bool bEnable )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "enableControl " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( bEnable? " true": " false" );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setLabel " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, rLabel );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getLabel(sal_Int16 /*nControlId*/)
-++ throw ( uno::RuntimeException )
-++{
-++ // FIXME getLabel() is not yet implemented
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // TODO return m_pImpl->getLabel(nControlId);
-++ return ::rtl::OUString();
-++}
-++
-++/* TODO
-++uno::Sequence<sal_Int16> SAL_CALL UnxFilePicker::getSupportedImageFormats()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getSupportedImageFormats();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getTargetColorDepth()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getTargetColorDepth();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getAvailableWidth()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getAvailableWidth();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getAvailableHeight()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getAvailableHeight();
-++}
-++
-++void SAL_CALL UnxFilePicker::setImage( sal_Int16 aImageFormat, const uno::Any &rImage )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pImpl->setImage( aImageFormat, aImage );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::setShowState( sal_Bool bShowState )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->setShowState( bShowState );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::getShowState()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getShowState();
-++}
-++*/
-++
-++void SAL_CALL UnxFilePicker::initialize( const uno::Sequence<uno::Any> &rArguments )
-++ throw( uno::Exception, uno::RuntimeException )
-++{
-++ initFilePicker();
-++
-++ // parameter checking
-++ uno::Any aAny;
-++ if ( 0 == rArguments.getLength( ) )
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "no arguments" ),
-++ static_cast< XFilePicker* >( this ), 1 );
-++
-++ aAny = rArguments[0];
-++
-++ if ( ( aAny.getValueType() != ::getCppuType( (sal_Int16*)0 ) ) && ( aAny.getValueType() != ::getCppuType( (sal_Int8*)0 ) ) )
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "invalid argument type" ),
-++ static_cast< XFilePicker* >( this ), 1 );
-++
-++ sal_Int16 templateId = -1;
-++ aAny >>= templateId;
-++
-++ ::rtl::OUString aTypeOpen = ::rtl::OUString::createFromAscii( "setType \"open\"" );
-++ ::rtl::OUString aTypeSaveAs = ::rtl::OUString::createFromAscii( "setType \"save\"" );
-++
-++ switch ( templateId )
-++ {
-++ case FILEOPEN_SIMPLE:
-++ sendCommand( aTypeOpen );
-++ break;
-++
-++ case FILESAVE_SIMPLE:
-++ sendCommand( aTypeSaveAs );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_PASSWORD:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_SELECTION:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_SELECTION );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_TEMPLATE:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_TEMPLATE );
-++ break;
-++
-++ case FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE );
-++ break;
-++
-++ case FILEOPEN_PLAY:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::PUSHBUTTON_PLAY );
-++ break;
-++
-++ case FILEOPEN_READONLY_VERSION:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_READONLY );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_VERSION );
-++ break;
-++
-++ case FILEOPEN_LINK_PREVIEW:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ break;
-++
-++ default:
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "Unknown template" ),
-++ static_cast< XFilePicker* >( this ),
-++ 1 );
-++ }
-++}
-++
-++void SAL_CALL UnxFilePicker::cancel()
-++ throw ( uno::RuntimeException )
-++{
-++ // FIXME cancel() is not implemented
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // TODO m_pImpl->cancel();
-++}
-++
-++void SAL_CALL UnxFilePicker::disposing( const lang::EventObject &rEvent )
-++ throw( uno::RuntimeException )
-++{
-++ uno::Reference<XFilePickerListener> xFilePickerListener( rEvent.Source, uno::UNO_QUERY );
-++
-++ if ( xFilePickerListener.is() )
-++ removeFilePickerListener( xFilePickerListener );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getImplementationName()
-++ throw( uno::RuntimeException )
-++{
-++ return rtl::OUString::createFromAscii( FILE_PICKER_IMPL_NAME );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::supportsService( const rtl::OUString& ServiceName )
-++ throw( uno::RuntimeException )
-++{
-++ uno::Sequence< ::rtl::OUString > SupportedServicesNames = FilePicker_getSupportedServiceNames();
-++
-++ for ( sal_Int32 n = SupportedServicesNames.getLength(); n--; )
-++ {
-++ if ( SupportedServicesNames[n].compareTo( ServiceName ) == 0 )
-++ return sal_True;
-++ }
-++
-++ return sal_False;
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getSupportedServiceNames()
-++ throw( uno::RuntimeException )
-++{
-++ return FilePicker_getSupportedServiceNames();
-++}
-++
-++void UnxFilePicker::initFilePicker()
-++{
-++ int aFiledesStdin[2], aFiledesStdout[2];
-++ if ( pipe( aFiledesStdin ) < 0 || pipe( aFiledesStdout ) < 0 )
-++ return;
-++
-++ m_nFilePickerPid = fork();
-++ if ( m_nFilePickerPid < 0 )
-++ return;
-++
-++ if ( m_nFilePickerPid == 0 )
-++ {
-++ // Child...
-++ close( aFiledesStdin[1] ); // write end of the pipe
-++ dup2( aFiledesStdin[0], 0 );
-++ close( aFiledesStdin[0] );
-++
-++ close( aFiledesStdout[0] ); // read end of the pipe
-++ dup2( aFiledesStdout[1], 1 );
-++ close( aFiledesStdout[1] );
-++
-++#if OSL_DEBUG_LEVEL == 0
-++ int nRedirect = open( "/dev/null", O_WRONLY );
-++ if( nRedirect != -1 )
-++ {
-++ dup2( nRedirect, 2 );
-++ }
-++#endif
-++
-++ // The executable name
-++ char pFname[1024]; snprintf(pFname, sizeof pFname, "%s/%s", getenv("OLDPWD"), "tdefilepicker");
-++
-++ // ID of the main window
-++ const int nIdLen = 20;
-++ char pWinId[nIdLen] = "0";
-++
-++ // TODO pass here the real parent (not possible for system dialogs
-++ // yet), and default to GetDefDialogParent() only when the real parent
-++ // is NULL
-++ Window *pParentWin = Application::GetDefDialogParent();
-++ if ( pParentWin )
-++ {
-++ const SystemEnvData* pSysData = ((SystemWindow *)pParentWin)->GetSystemData();
-++ if ( pSysData )
-++ {
-++ snprintf( pWinId, nIdLen, "%ld", pSysData->aWindow ); // unx only
-++ pWinId[nIdLen-1] = 0;
-++ }
-++ }
-++
-++ // Execute the fpicker implementation
-++ execlp( pFname, pFname, "--winid", pWinId, NULL );
-++
-++ // Error, finish the child
-++ exit( -1 );
-++ }
-++
-++ // Parent continues
-++ close( aFiledesStdin[0] );
-++ m_nFilePickerWrite = aFiledesStdin[1];
-++
-++ close( aFiledesStdout[1] );
-++ m_nFilePickerRead = aFiledesStdout[0];
-++
-++ // Create the notify thread
-++ if ( !m_pNotifyThread )
-++ m_pNotifyThread = new UnxFilePickerNotifyThread( this );
-++
-++ // Create the command thread
-++ if ( !m_pCommandThread )
-++ m_pCommandThread = new UnxFilePickerCommandThread( m_pNotifyThread, m_nFilePickerRead );
-++
-++ // Start the threads
-++ m_pNotifyThread->create();
-++ m_pCommandThread->create();
-++
-++ return;
-++}
-++
-++void UnxFilePicker::checkFilePicker() throw( ::com::sun::star::uno::RuntimeException )
-++{
-++ if ( m_nFilePickerPid > 0 )
-++ {
-++ // TODO check if external file picker is runnning
-++ }
-++ else
-++ {
-++ throw uno::RuntimeException(
-++ ::rtl::OUString::createFromAscii( "the external file picker does not run" ),
-++ *this );
-++ }
-++}
-++
-++void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand )
-++{
-++ if ( m_nFilePickerWrite < 0 )
-++ return;
-++
-++ ::rtl::OString aUtfString = OUStringToOString( rCommand + ::rtl::OUString::createFromAscii( "\n" ), RTL_TEXTENCODING_UTF8 );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "UnxFilePicker sent: \"" << aUtfString.getStr() << "\"" << ::std::endl;
-++#endif
-++
-++ write( m_nFilePickerWrite, aUtfString.getStr(), aUtfString.getLength() );
-++}
-++
-++void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition )
-++{
-++ rCondition.reset();
-++
-++ sendCommand( rCommand );
-++
-++ rCondition.wait();
-++}
-++
-++void UnxFilePicker::appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString )
-++{
-++ const sal_Unicode *pUnicode = rString.getStr();
-++ const sal_Unicode *pEnd = pUnicode + rString.getLength();
-++
-++ rBuffer.appendAscii( "\"" , 1 );
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ rBuffer.appendAscii( "\\\\", 2 );
-++ else if ( *pUnicode == '"' )
-++ rBuffer.appendAscii( "\\\"", 2 );
-++ else if ( *pUnicode == '\n' )
-++ rBuffer.appendAscii( "\\n", 2 );
-++ else
-++ rBuffer.append( *pUnicode );
-++ }
-++
-++ rBuffer.appendAscii( "\"", 1 );
-++}
-++
-++sal_Bool UnxFilePicker::controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId )
-++{
-++ typedef struct {
-++ sal_Int16 nId;
-++ const ::rtl::OUString *pType;
-++ sal_Int32 nTitle;
-++ } ElementToName;
-++
-++ const ::rtl::OUString aCheckBox( RTL_CONSTASCII_USTRINGPARAM( "checkbox" ) );
-++ const ::rtl::OUString aControl( RTL_CONSTASCII_USTRINGPARAM( "control" ) );
-++ const ::rtl::OUString aEdit( RTL_CONSTASCII_USTRINGPARAM( "edit" ) );
-++ const ::rtl::OUString aLabel( RTL_CONSTASCII_USTRINGPARAM( "label" ) );
-++ const ::rtl::OUString aListBox( RTL_CONSTASCII_USTRINGPARAM( "listbox" ) );
-++ const ::rtl::OUString aPushButton( RTL_CONSTASCII_USTRINGPARAM( "pushbutton" ) );
-++
-++ const ElementToName *pPtr;
-++ const ElementToName pArray[] =
-++ {
-++ { CommonFilePickerElementIds::PUSHBUTTON_OK, &aPushButton, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::PUSHBUTTON_CANCEL, &aPushButton, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::LISTBOX_FILTER, &aListBox, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::CONTROL_FILEVIEW, &aControl, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::EDIT_FILEURL, &aEdit, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::LISTBOX_FILTER_LABEL, &aLabel, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::EDIT_FILEURL_LABEL, &aLabel, 0/*FIXME?*/ },
-++
-++ { ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &aCheckBox, STR_SVT_FILEPICKER_AUTO_EXTENSION },
-++ { ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, &aCheckBox, STR_SVT_FILEPICKER_PASSWORD },
-++ { ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS, &aCheckBox, STR_SVT_FILEPICKER_FILTER_OPTIONS },
-++ { ExtendedFilePickerElementIds::CHECKBOX_READONLY, &aCheckBox, STR_SVT_FILEPICKER_READONLY },
-++ { ExtendedFilePickerElementIds::CHECKBOX_LINK, &aCheckBox, STR_SVT_FILEPICKER_INSERT_AS_LINK },
-++ { ExtendedFilePickerElementIds::CHECKBOX_PREVIEW, &aCheckBox, STR_SVT_FILEPICKER_SHOW_PREVIEW },
-++ { ExtendedFilePickerElementIds::PUSHBUTTON_PLAY, &aPushButton, STR_SVT_FILEPICKER_PLAY },
-++ { ExtendedFilePickerElementIds::LISTBOX_VERSION, &aListBox, STR_SVT_FILEPICKER_VERSION },
-++ { ExtendedFilePickerElementIds::LISTBOX_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_TEMPLATES },
-++ { ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_IMAGE_TEMPLATE },
-++ { ExtendedFilePickerElementIds::CHECKBOX_SELECTION, &aCheckBox, STR_SVT_FILEPICKER_SELECTION },
-++ { 0, 0, 0 }
-++ };
-++
-++ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlId ); ++pPtr )
-++ ;
-++
-++ if ( pPtr->nId == nControlId )
-++ {
-++ rType = *(pPtr->pType);
-++ rTitleId = pPtr->nTitle;
-++
-++ return sal_True;
-++ }
-++
-++ return sal_False;
-++}
-++
-++sal_Bool UnxFilePicker::controlActionInfo( sal_Int16 nControlAction, ::rtl::OUString &rType )
-++{
-++ typedef struct {
-++ sal_Int16 nId;
-++ const ::rtl::OUString pType;
-++ } ElementToName;
-++
-++ const ElementToName *pPtr;
-++ const ElementToName pArray[] =
-++ {
-++ { ControlActions::ADD_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItem" ) ) },
-++ { ControlActions::ADD_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItems" ) ) },
-++ { ControlActions::DELETE_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItem" ) ) },
-++ { ControlActions::DELETE_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItems" ) ) },
-++ { ControlActions::SET_SELECT_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setSelectedItem" ) ) },
-++ { ControlActions::GET_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getItems" ) ) },
-++ { ControlActions::GET_SELECTED_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItem" ) ) },
-++ { ControlActions::GET_SELECTED_ITEM_INDEX, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItemIndex" ) ) },
-++ { ControlActions::SET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setHelpURL" ) ) },
-++ { ControlActions::GET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getHelpURL" ) ) },
-++ { 0, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "noAction" ) ) }
-++ };
-++
-++ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlAction ); ++pPtr )
-++ ;
-++
-++ rType = pPtr->pType;
-++
-++ return sal_True;
-++}
-++
-++void UnxFilePicker::sendAppendControlCommand( sal_Int16 nControlId )
-++{
-++ ::rtl::OUString aType;
-++ sal_Int32 nTitleId;
-++
-++ if ( controlIdInfo( nControlId, aType, nTitleId ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendControl " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aType );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, m_pResMgr? String( ResId( nTitleId, *m_pResMgr ) ): String() );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFilePicker.hxx fpicker/source/unx/tde_unx/UnxFilePicker.hxx
-+--- fpicker/source/unx/tde_unx/UnxFilePicker.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFilePicker.hxx 2011-08-17 14:07:41.705113628 -0500
-+@@ -0,0 +1,178 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXFILEPICKER_HXX_
-++#define _UNXFILEPICKER_HXX_
-++
-++#include <cppuhelper/compbase8.hxx>
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <rtl/ustrbuf.hxx>
-++
-++#include <com/sun/star/lang/XInitialization.hpp>
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
-++#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
-++#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
-++#include <com/sun/star/util/XCancellable.hpp>
-++
-++#include <list>
-++
-++class UnxFilePickerCommandThread;
-++class UnxFilePickerNotifyThread;
-++class ResMgr;
-++
-++class UnxFilePickerDummy
-++{
-++protected:
-++ osl::Mutex m_aMutex;
-++ osl::Mutex m_rbHelperMtx;
-++};
-++
-++class UnxFilePicker :
-++ public UnxFilePickerDummy,
-++ public cppu::WeakComponentImplHelper8<
-++ ::com::sun::star::ui::dialogs::XFilterManager,
-++ ::com::sun::star::ui::dialogs::XFilterGroupManager,
-++ ::com::sun::star::ui::dialogs::XFilePickerControlAccess,
-++ ::com::sun::star::ui::dialogs::XFilePickerNotifier,
-++// TODO ::com::sun::star::ui::dialogs::XFilePreview,
-++ ::com::sun::star::lang::XInitialization,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::lang::XEventListener,
-++ ::com::sun::star::lang::XServiceInfo >
-++{
-++protected:
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr; // to instanciate own services
-++
-++ pid_t m_nFilePickerPid;
-++ int m_nFilePickerWrite; // (tde|...)filepicker gets it as stdin
-++ int m_nFilePickerRead; // (tde|...)filepicker gets it as stdout
-++
-++ UnxFilePickerNotifyThread *m_pNotifyThread;
-++ UnxFilePickerCommandThread *m_pCommandThread;
-++
-++ ResMgr *m_pResMgr;
-++
-++public:
-++ UnxFilePicker( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceMgr );
-++ virtual ~UnxFilePicker();
-++
-++ // XFilePickerNotifier
-++
-++ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XExecutableDialog functions
-++
-++ virtual void SAL_CALL setTitle( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual sal_Int16 SAL_CALL execute() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilePicker functions
-++
-++ virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setDefaultName( const ::rtl::OUString &rName ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString &rDirectory ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::rtl::OUString SAL_CALL getDisplayDirectory() throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilterManager functions
-++
-++ virtual void SAL_CALL appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-++ virtual ::rtl::OUString SAL_CALL getCurrentFilter() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilterGroupManager functions
-++
-++ virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString &rGroupTitle, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > &rFilters ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XFilePickerControlAccess functions
-++
-++ virtual void SAL_CALL setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const ::com::sun::star::uno::Any &rValue ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 nControlId, sal_Int16 nControlAction ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL enableControl( sal_Int16 nControlId, sal_Bool bEnable ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ /* TODO XFilePreview
-++
-++ virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getTargetColorDepth( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getAvailableWidth( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getAvailableHeight( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const ::com::sun::star::uno::Any &rImage ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getShowState( ) throw (::com::sun::star::uno::RuntimeException);
-++ */
-++
-++ // XInitialization
-++
-++ virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > &rArguments ) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException );
-++
-++ // XCancellable
-++
-++ virtual void SAL_CALL cancel( ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XEventListener
-++
-++ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject &rEvent ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XServiceInfo
-++
-++ virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
-++ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString &rServiceName ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-++
-++private:
-++ // prevent copy and assignment
-++ UnxFilePicker( const UnxFilePicker& );
-++ UnxFilePicker& operator=( const UnxFilePicker& );
-++
-++protected:
-++ void initFilePicker();
-++ void checkFilePicker() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // Async sendCommand
-++ void sendCommand( const ::rtl::OUString &rCommand );
-++ // Synchronized sendCommand
-++ void sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition );
-++ void appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString );
-++
-++private:
-++ sal_Bool controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId );
-++ sal_Bool controlActionInfo( sal_Int16 nControlId, ::rtl::OUString &rType );
-++ void sendAppendControlCommand( sal_Int16 nControlId );
-++};
-++
-++#endif // _UNXFILEPICKER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFPentry.cxx fpicker/source/unx/tde_unx/UnxFPentry.cxx
-+--- fpicker/source/unx/tde_unx/UnxFPentry.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFPentry.cxx 2011-08-17 14:06:26.059319485 -0500
-+@@ -0,0 +1,128 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <com/sun/star/container/XSet.hpp>
-++
-++#include <cppuhelper/factory.hxx>
-++#include <osl/diagnose.h>
-++
-++#include "UnxFilePicker.hxx"
-++#include "FPServiceInfo.hxx"
-++
-++using namespace ::rtl;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++using namespace ::com::sun::star::registry;
-++using namespace ::cppu;
-++using ::com::sun::star::ui::dialogs::XFilePicker;
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++static Reference< XInterface > SAL_CALL createInstance( const Reference< XMultiServiceFactory >& rServiceManager )
-++{
-++ return Reference< XInterface >(
-++ static_cast< XFilePicker* >( new UnxFilePicker( rServiceManager ) ) );
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// the three uno functions that will be exported
-++//////////////////////////////////////////////////////////////////////////
-++
-++extern "C"
-++{
-++
-++//////////////////////////////////////////////////////////////////////////
-++// component_getImplementationEnvironment
-++//////////////////////////////////////////////////////////////////////////
-++
-++void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++sal_Bool SAL_CALL component_writeInfo( void* pServiceManager, void* pRegistryKey )
-++{
-++ sal_Bool bRetVal = sal_True;
-++
-++ if ( pRegistryKey )
-++ {
-++ try
-++ {
-++ Reference< XRegistryKey > pXNewKey( static_cast< XRegistryKey* >( pRegistryKey ) );
-++ pXNewKey->createKey( OUString::createFromAscii( FILE_PICKER_REGKEY_NAME ) );
-++ }
-++ catch( InvalidRegistryException& )
-++ {
-++ OSL_ENSURE( sal_False, "InvalidRegistryException caught" );
-++ bRetVal = sal_False;
-++ }
-++ }
-++
-++ return bRetVal;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++void* SAL_CALL component_getFactory( const sal_Char* pImplName, uno_Interface* pSrvManager, uno_Interface* pRegistryKey )
-++{
-++ void* pRet = 0;
-++
-++ if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, FILE_PICKER_IMPL_NAME ) ) )
-++ {
-++ Sequence< OUString > aSNS( 1 );
-++ aSNS.getArray( )[0] = OUString::createFromAscii( FILE_PICKER_SERVICE_NAME );
-++
-++ Reference< XSingleServiceFactory > xFactory ( createSingleFactory(
-++ reinterpret_cast< XMultiServiceFactory* > ( pSrvManager ),
-++ OUString::createFromAscii( pImplName ),
-++ createInstance,
-++ aSNS ) );
-++ if ( xFactory.is() )
-++ {
-++ xFactory->acquire();
-++ pRet = xFactory.get();
-++ }
-++ }
-++
-++ return pRet;
-++}
-++
-++} // extern "C"
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxNotifyThread.cxx fpicker/source/unx/tde_unx/UnxNotifyThread.cxx
-+--- fpicker/source/unx/tde_unx/UnxNotifyThread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxNotifyThread.cxx 2011-08-17 14:06:06.307806939 -0500
-+@@ -0,0 +1,116 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <UnxNotifyThread.hxx>
-++#include <UnxFilePicker.hxx>
-++
-++using namespace ::com::sun::star;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePickerNotifyThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePickerNotifyThread::UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker )
-++ : m_pUnxFilePicker( pUnxFilePicker ),
-++ m_bExit( sal_False ),
-++ m_eNotifyType( Nothing ),
-++ m_nControlId( 0 )
-++{
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::addFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_xListener = xListener;
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::removeFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_xListener.clear();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::exit()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_bExit = sal_True;
-++
-++ m_aExitCondition.reset();
-++ m_aNotifyCondition.set();
-++
-++ m_aExitCondition.wait();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::fileSelectionChanged()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_eNotifyType = FileSelectionChanged;
-++ m_nControlId = 0;
-++
-++ m_aNotifyCondition.set();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::run()
-++{
-++ do {
-++ m_aNotifyCondition.reset();
-++ m_aNotifyCondition.wait();
-++
-++ if ( m_xListener.is() && m_pUnxFilePicker )
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ui::dialogs::FilePickerEvent aEvent( *m_pUnxFilePicker, m_nControlId );
-++
-++ switch ( m_eNotifyType )
-++ {
-++ case FileSelectionChanged:
-++ m_xListener->fileSelectionChanged( aEvent );
-++ break;
-++
-++ // TODO More to come...
-++
-++ default:
-++ // nothing
-++ break;
-++ }
-++ }
-++ } while ( !m_bExit );
-++
-++ m_aExitCondition.set();
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxNotifyThread.hxx fpicker/source/unx/tde_unx/UnxNotifyThread.hxx
-+--- fpicker/source/unx/tde_unx/UnxNotifyThread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxNotifyThread.hxx 2011-08-17 14:05:56.737074019 -0500
-+@@ -0,0 +1,90 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXNOTIFYTHREAD_HXX_
-++#define _UNXNOTIFYTHREAD_HXX_
-++
-++#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp>
-++#include <com/sun/star/uno/Reference.hxx>
-++
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <osl/thread.hxx>
-++
-++class UnxFilePicker;
-++
-++class UnxFilePickerNotifyThread : public ::osl::Thread
-++{
-++protected:
-++ enum NotifyType
-++ {
-++ Nothing = 0,
-++ FileSelectionChanged
-++ // TODO More to come...
-++ };
-++
-++ UnxFilePicker *m_pUnxFilePicker;
-++
-++ ::osl::Mutex m_aMutex;
-++
-++ ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener > m_xListener;
-++
-++ sal_Bool m_bExit;
-++ ::osl::Condition m_aExitCondition;
-++
-++ NotifyType m_eNotifyType;
-++ ::osl::Condition m_aNotifyCondition;
-++ sal_Int16 m_nControlId;
-++
-++public:
-++ UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker );
-++
-++ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-++ throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-++ throw( ::com::sun::star::uno::RuntimeException );
-++
-++ void SAL_CALL exit();
-++
-++ void SAL_CALL fileSelectionChanged();
-++ /* TODO
-++ void SAL_CALL directoryChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-++ rtl::OUString SAL_CALL helpRequested( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ) const;
-++ void SAL_CALL controlStateChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-++ void SAL_CALL dialogSizeChanged( );
-++ */
-++
-++protected:
-++ virtual void SAL_CALL run();
-++};
-++
-++#endif // _UNXNOTIFYTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/makefile.mk shell/source/backends/tdebe/makefile.mk
-+--- shell/source/backends/tdebe/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/makefile.mk 2011-08-17 14:16:06.283767347 -0500
-+@@ -0,0 +1,82 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++PRJ=..$/..$/..
-++
-++PRJNAME=shell
-++TARGET=tdebe
-++
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++VISIBILITY_HIDDEN=TRUE
-++
-++# --- Settings ---
-++
-++.INCLUDE : settings.mk
-++
-++# For some of the included external TDE headers, GCC complains about shadowed
-++# symbols in instantiated template code only at the end of a compilation unit,
-++# so the only solution is to disable that warning here:
-++.IF "$(COM)" == "GCC"
-++CFLAGSCXX+=-Wno-shadow
-++.ENDIF
-++
-++UNIXTEXT=$(MISC)/$(TARGET)1-ucd.txt
-++
-++# no "lib" prefix
-++DLLPRE =
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++# --- Files ---
-++
-++SLOFILES=\
-++ $(SLO)$/tdeaccess.obj \
-++ $(SLO)$/tdebackend.obj
-++
-++SHL1NOCHECK=TRUE
-++SHL1TARGET=$(TARGET)1.uno
-++SHL1OBJS=$(SLOFILES)
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++
-++SHL1IMPLIB=i$(SHL1TARGET)
-++SHL1LINKFLAGS+=$(TDE_LIBS) -lkio
-++SHL1STDLIBS= \
-++ $(CPPUHELPERLIB) \
-++ $(CPPULIB) \
-++ $(SALLIB)
-++
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++DEF1NAME=$(SHL1TARGET)
-++
-++.ENDIF # "$(ENABLE_TDE)" == "TRUE"
-++
-++# --- Targets ---
-++
-++.INCLUDE : target.mk
-+diff -urN shell/source/backends/tdebe/tdeaccess.cxx shell/source/backends/tdebe/tdeaccess.cxx
-+--- shell/source/backends/tdebe/tdeaccess.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdeaccess.cxx 2011-08-17 14:16:46.426842396 -0500
-+@@ -0,0 +1,319 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#include "precompiled_shell.hxx"
-++#include "sal/config.h"
-++
-++#include "com/sun/star/uno/Any.hxx"
-++#include "cppu/unotype.hxx"
-++#include "osl/diagnose.h"
-++#include "osl/file.h"
-++#include "rtl/string.h"
-++#include "rtl/ustring.hxx"
-++
-++#include "tde_headers.h"
-++
-++#include "tdeaccess.hxx"
-++
-++#define SPACE ' '
-++#define COMMA ','
-++#define SEMI_COLON ';'
-++
-++namespace tdeaccess {
-++
-++namespace {
-++
-++namespace css = com::sun::star ;
-++namespace uno = css::uno ;
-++
-++}
-++
-++css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
-++ if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ExternalMailer"))) {
-++ KEMailSettings aEmailSettings;
-++ TQString aClientProgram;
-++ ::rtl::OUString sClientProgram;
-++
-++ aClientProgram = aEmailSettings.getSetting( KEMailSettings::ClientProgram );
-++ if ( aClientProgram.isEmpty() )
-++ aClientProgram = "kmail";
-++ else
-++ aClientProgram = aClientProgram.section(SPACE, 0, 0);
-++ sClientProgram = (const sal_Unicode *) aClientProgram.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sClientProgram ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")))
-++ {
-++ TQFont aFixedFont;
-++ short nFontHeight;
-++
-++ aFixedFont = KGlobalSettings::fixedFont();
-++ nFontHeight = aFixedFont.pointSize();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nFontHeight ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")))
-++ {
-++ TQFont aFixedFont;
-++ TQString aFontName;
-++ :: rtl::OUString sFontName;
-++
-++ aFixedFont = KGlobalSettings::fixedFont();
-++ aFontName = aFixedFont.family();
-++ sFontName = (const sal_Unicode *) aFontName.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sFontName ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")))
-++ {
-++ /* does not make much sense without an accessibility bridge */
-++ sal_Bool ATToolSupport = sal_False;
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( rtl::OUString::valueOf( ATToolSupport ) ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")))
-++ {
-++ TQString aDocumentsDir( KGlobalSettings::documentPath() );
-++ rtl::OUString sDocumentsDir;
-++ rtl::OUString sDocumentsURL;
-++ if ( aDocumentsDir.endsWith(TQChar('/')) )
-++ aDocumentsDir.truncate ( aDocumentsDir.length() - 1 );
-++ sDocumentsDir = (const sal_Unicode *) aDocumentsDir.ucs2();
-++ osl_getFileURLFromSystemPath( sDocumentsDir.pData, &sDocumentsURL.pData );
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sDocumentsURL ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")))
-++ {
-++ TQString aFTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aFTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aFTPProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")))
-++ {
-++ TQString aFTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aFTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aFTPProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")))
-++ {
-++ TQString aHTTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")))
-++ {
-++ TQString aHTTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")))
-++ {
-++ TQString aHTTPSProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPSProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPSProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")))
-++ {
-++ TQString aHTTPSProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPSProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPSProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy"))) {
-++ TQString aNoProxyFor;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++ aNoProxyFor = KProtocolManager::noProxyFor();
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aNoProxyFor.isEmpty() )
-++ {
-++ ::rtl::OUString sNoProxyFor;
-++
-++ aNoProxyFor = aNoProxyFor.replace( COMMA, SEMI_COLON );
-++ sNoProxyFor = (const sal_Unicode *) aNoProxyFor.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sNoProxyFor ) );
-++ }
-++ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetProxyType"))) {
-++ int nProxyType;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++ nProxyType = 1;
-++ break;
-++ default: // No proxy is used
-++ nProxyType = 0;
-++ }
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( (sal_Int32) nProxyType ) );
-++ } else {
-++ OSL_ASSERT(false); // this cannot happen
-++ }
-++ return css::beans::Optional< css::uno::Any >();
-++}
-++
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdeaccess.hxx shell/source/backends/tdebe/tdeaccess.hxx
-+--- shell/source/backends/tdebe/tdeaccess.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdeaccess.hxx 2011-08-17 14:16:31.565704001 -0500
-+@@ -0,0 +1,51 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#ifndef INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-++#define INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-++
-++#include "sal/config.h"
-++
-++#include "com/sun/star/beans/Optional.hpp"
-++
-++namespace com { namespace sun { namespace star { namespace uno {
-++ class Any;
-++} } } }
-++namespace rtl { class OUString; }
-++
-++namespace tdeaccess {
-++
-++com::sun::star::beans::Optional< com::sun::star::uno::Any > getValue(
-++ rtl::OUString const & id);
-++
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdebackend.cxx shell/source/backends/tdebe/tdebackend.cxx
-+--- shell/source/backends/tdebe/tdebackend.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdebackend.cxx 2011-08-17 14:16:42.136513747 -0500
-+@@ -0,0 +1,262 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#include "precompiled_shell.hxx"
-++#include "sal/config.h"
-++
-++#include "boost/noncopyable.hpp"
-++#include "com/sun/star/beans/Optional.hpp"
-++#include "com/sun/star/beans/PropertyVetoException.hpp"
-++#include "com/sun/star/beans/UnknownPropertyException.hpp"
-++#include "com/sun/star/beans/XPropertyChangeListener.hpp"
-++#include "com/sun/star/beans/XPropertySet.hpp"
-++#include "com/sun/star/beans/XPropertySetInfo.hpp"
-++#include "com/sun/star/beans/XVetoableChangeListener.hpp"
-++#include "com/sun/star/lang/IllegalArgumentException.hpp"
-++#include "com/sun/star/lang/WrappedTargetException.hpp"
-++#include "com/sun/star/lang/XMultiComponentFactory.hpp"
-++#include "com/sun/star/lang/XServiceInfo.hpp"
-++#include "com/sun/star/lang/WrappedTargetException.hpp"
-++#include "com/sun/star/uno/Any.hxx"
-++#include "com/sun/star/uno/Reference.hxx"
-++#include "com/sun/star/uno/RuntimeException.hpp"
-++#include "com/sun/star/uno/Sequence.hxx"
-++#include "com/sun/star/uno/XComponentContext.hpp"
-++#include "com/sun/star/uno/XCurrentContext.hpp"
-++#include "cppuhelper/factory.hxx"
-++#include "cppuhelper/implbase2.hxx"
-++#include "cppuhelper/implementationentry.hxx"
-++#include "cppuhelper/weak.hxx"
-++#include "rtl/string.h"
-++#include "rtl/ustring.h"
-++#include "rtl/ustring.hxx"
-++#include "sal/types.h"
-++#include "uno/current_context.hxx"
-++#include "uno/lbnames.h"
-++
-++#include "tde_headers.h"
-++
-++#include "tdeaccess.hxx"
-++
-++namespace {
-++
-++namespace css = com::sun::star;
-++
-++rtl::OUString SAL_CALL getServiceImplementationName() {
-++ return rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM(
-++ "com.sun.star.comp.configuration.backend.TDEBackend"));
-++}
-++
-++css::uno::Sequence< rtl::OUString > SAL_CALL getServiceSupportedServiceNames() {
-++ rtl::OUString name(
-++ RTL_CONSTASCII_USTRINGPARAM(
-++ "com.sun.star.configuration.backend.TDEBackend"));
-++ return css::uno::Sequence< rtl::OUString >(&name, 1);
-++}
-++
-++class Service:
-++ public cppu::WeakImplHelper2<
-++ css::lang::XServiceInfo, css::beans::XPropertySet >,
-++ private boost::noncopyable
-++{
-++public:
-++ Service();
-++
-++private:
-++ virtual ~Service() {}
-++
-++ virtual rtl::OUString SAL_CALL getImplementationName()
-++ throw (css::uno::RuntimeException)
-++ { return getServiceImplementationName(); }
-++
-++ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
-++ throw (css::uno::RuntimeException)
-++ { return ServiceName == getSupportedServiceNames()[0]; }
-++
-++ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
-++ getSupportedServiceNames() throw (css::uno::RuntimeException)
-++ { return getServiceSupportedServiceNames(); }
-++
-++ virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
-++ getPropertySetInfo() throw (css::uno::RuntimeException)
-++ { return css::uno::Reference< css::beans::XPropertySetInfo >(); }
-++
-++ virtual void SAL_CALL setPropertyValue(
-++ rtl::OUString const &, css::uno::Any const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::beans::PropertyVetoException,
-++ css::lang::IllegalArgumentException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException);
-++
-++ virtual css::uno::Any SAL_CALL getPropertyValue(
-++ rtl::OUString const & PropertyName)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException);
-++
-++ virtual void SAL_CALL addPropertyChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL removePropertyChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL addVetoableChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL removeVetoableChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ bool enabled_;
-++};
-++
-++Service::Service(): enabled_(false) {
-++ css::uno::Reference< css::uno::XCurrentContext > context(
-++ css::uno::getCurrentContext());
-++ if (context.is()) {
-++ rtl::OUString desktop;
-++ context->getValueByName(
-++ rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM("system.desktop-environment"))) >>=
-++ desktop;
-++ enabled_ = desktop.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("TDE")) &&
-++ KApplication::kApplication() != 0;
-++ }
-++}
-++
-++void Service::setPropertyValue(rtl::OUString const &, css::uno::Any const &)
-++ throw (
-++ css::beans::UnknownPropertyException, css::beans::PropertyVetoException,
-++ css::lang::IllegalArgumentException, css::lang::WrappedTargetException,
-++ css::uno::RuntimeException)
-++{
-++ throw css::lang::IllegalArgumentException(
-++ rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM("setPropertyValue not supported")),
-++ static_cast< cppu::OWeakObject * >(this), -1);
-++}
-++
-++css::uno::Any Service::getPropertyValue(rtl::OUString const & PropertyName)
-++ throw (
-++ css::beans::UnknownPropertyException, css::lang::WrappedTargetException,
-++ css::uno::RuntimeException)
-++{
-++ if (PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ExternalMailer")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetProxyType")))
-++ {
-++ return css::uno::makeAny(
-++ enabled_
-++ ? tdeaccess::getValue(PropertyName)
-++ : css::beans::Optional< css::uno::Any >());
-++ }
-++ throw css::beans::UnknownPropertyException(
-++ PropertyName, static_cast< cppu::OWeakObject * >(this));
-++}
-++
-++css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(
-++ css::uno::Reference< css::uno::XComponentContext > const &)
-++{
-++ return static_cast< cppu::OWeakObject * >(new Service);
-++}
-++
-++static cppu::ImplementationEntry const services[] = {
-++ { &createInstance, &getServiceImplementationName,
-++ &getServiceSupportedServiceNames, &cppu::createSingleComponentFactory, 0,
-++ 0 },
-++ { 0, 0, 0, 0, 0, 0 }
-++};
-++
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
-++ char const * pImplName, void * pServiceManager, void * pRegistryKey)
-++{
-++ return cppu::component_getFactoryHelper(
-++ pImplName, pServiceManager, pRegistryKey, services);
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
-++component_getImplementationEnvironment(
-++ char const ** ppEnvTypeName, uno_Environment **)
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-++ void * pServiceManager, void * pRegistryKey)
-++{
-++ return component_writeInfoHelper(pServiceManager, pRegistryKey, services);
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdebe1-ucd.txt shell/source/backends/tdebe/tdebe1-ucd.txt
-+--- shell/source/backends/tdebe/tdebe1-ucd.txt 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdebe1-ucd.txt 2011-08-17 14:16:36.266064060 -0500
-+@@ -0,0 +1,6 @@
-++[ComponentDescriptor]
-++ImplementationName=com.sun.star.comp.configuration.backend.TDEBackend
-++ComponentName=tdebe1.uno.so
-++LoaderName=com.sun.star.loader.SharedLibrary
-++[SupportedServices]
-++com.sun.star.configuration.backend.TDEBackend
-+--- fpicker/prj/build.lst 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/prj/build.lst 2011-08-17 19:28:07.578452546 -0500
-+@@ -7,8 +7,10 @@
-+ fp fpicker\source\unx\kde4 nmake - u fp_kde4_filepicker fp_inc NULL
-+ fp fpicker\source\unx\kde_unx nmake - u fp_unx_common fp_inc NULL
-+ fp fpicker\source\unx\kde nmake - u fp_unx_kde_filepicker fp_inc NULL
-++fp fpicker\source\unx\tde_unx nmake - u fp_unx_tdecommon fp_inc NULL
-++fp fpicker\source\unx\tde nmake - u fp_unx_tde_filepicker fp_inc NULL
-+ fp fpicker\source\aqua nmake - u fp_macosx_filepicker NULL
-+ fp fpicker\source\win32\filepicker nmake - w fp_win32_filepicker fp_inc NULL
-+ fp fpicker\source\win32\folderpicker nmake - w fp_win32_folderpicker fp_inc NULL
-+ fp fpicker\source\win32\misc nmake - w fp_win32_misc fp_win32_filepicker.w fp_win32_folderpicker.w fp_inc NULL
-+-fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-++fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_unx_tdecommon.u fp_unx_tde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-+--- shell/prj/build.lst 2010-11-11 09:30:08.000000000 -0600
-++++ shell/prj/build.lst 2011-08-17 19:29:38.835371237 -0500
-+@@ -30,5 +30,6 @@
-+ sl shell\source\backends\gconfbe nmake - u sl_backends_gconfbe sl_inc NULL
-+ sl shell\source\backends\kdebe nmake - u sl_backends_kdebe sl_inc NULL
-+ sl shell\source\backends\kde4be nmake - u sl_backends_kde4be sl_inc NULL
-++sl shell\source\backends\tdebe nmake - u sl_backends_tdebe sl_inc NULL
-+ sl shell\source\backends\desktopbe nmake - u sl_backends_desktopbe sl_inc NULL
-+ sl shell\source\win32\shlxthandler\ooofilt nmake - w sl_win32_shlxthandler_ooofilt sl_all_zipfile.w sl_all_ooofilereader.w sl_win32_shlxthandler_util.w sl_all sl_inc NULL
-+--- connectivity/prj/build.lst 2010-11-11 13:08:58.000000000 -0600
-++++ connectivity/prj/build.lst 2011-08-17 19:31:47.795150674 -0500
-+@@ -12,6 +12,7 @@
-+ cn connectivity\source\drivers\mozab\bootstrap nmake - all cn_mozab_bootstrap cn_mozab_mozillasrc cn_inc NULL
-+ cn connectivity\source\drivers\mozab nmake - all cn_mozab cn_mozab_bootstrap cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\kab nmake - all cn_kab cn_dbtools cn_inc NULL
-++cn connectivity\source\drivers\tdeab nmake - all cn_tdeab cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\macab nmake - all cn_macab cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\evoab2 nmake - all cn_evoab2 cn_dbtools cn_file cn_inc NULL
-+ cn connectivity\source\drivers\calc nmake - all cn_calc cn_file cn_inc NULL
-+@@ -28,5 +29,5 @@
-+ cn connectivity\source\simpledbt nmake - all cn_simpledbt cn_cmtools cn_inc NULL
-+ cn connectivity\source\dbtools nmake - all cn_dbtools cn_simpledbt cn_cmtools cn_parse cn_res cn_sdbcx cn_inc cn_res NULL
-+ cn connectivity\qa\connectivity\tools nmake - all cn_qa_tools cn_inc NULL
-+-cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_adabas cn_flat cn_dbase cn_hsqldb cn_macab NULL
-++cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_tdeab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_adabas cn_flat cn_dbase cn_hsqldb cn_macab NULL
-+
-+--- set_soenv.in 2011-03-08 12:51:39.000000000 -0600
-++++ set_soenv.in 2011-08-17 22:19:40.994282148 -0500
-+@@ -1732,6 +1732,10 @@
-+ ToFile( "KDE_GLIB_LIBS", "@KDE_GLIB_LIBS@", "e" );
-+ ToFile( "KDE_HAVE_GLIB", "@KDE_HAVE_GLIB@", "e" );
-+ ToFile( "ENABLE_KAB", "@ENABLE_KAB@", "e" );
-++ToFile( "ENABLE_TDE", "@ENABLE_TDE@", "e" );
-++ToFile( "TDE_CFLAGS", "@TDE_CFLAGS@", "e" );
-++ToFile( "TDE_LIBS", "@TDE_LIBS@", "e" );
-++ToFile( "ENABLE_TDEAB", "@ENABLE_TDEAB@", "e" );
-+ ToFile( "PSPRINT", "TRUE", "e" );
-+ ToFile( "MKDEPENDSOLVER", "TRUE", "e" );
-+ ToFile( "nodep", "@nodep@", "e" );
-+diff -urN shell/inc/tde_headers.h shell/inc/tde_headers.h
-+--- shell/inc/tde_headers.h 1969-12-31 18:00:00.000000000 -0600
-++++ shell/inc/tde_headers.h 2011-08-18 00:00:30.118955481 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef INCLUDED_VCL_TDE_HEADERS_H
-++#define INCLUDED_VCL_TDE_HEADERS_H
-++
-++/* ********* Suppress warnings if needed */
-++#include "sal/config.h"
-++
-++#if defined __GNUC__
-++#pragma GCC system_header
-++#endif
-++
-++
-++/* ********* Hack, but needed because of conflicting types... */
-++#define Region QtXRegion
-++
-++
-++/* ********* TQt headers */
-++#include <tqaccessible.h>
-++#include <tqcheckbox.h>
-++#include <tqcombobox.h>
-++#include <tqfont.h>
-++#include <tqframe.h>
-++#include <tqlineedit.h>
-++#include <tqlistview.h>
-++#include <tqmainwindow.h>
-++#include <tqmenudata.h>
-++#include <tqpaintdevice.h>
-++#include <tqpainter.h>
-++#include <tqpushbutton.h>
-++#include <tqradiobutton.h>
-++#include <tqrangecontrol.h>
-++#include <tqstring.h>
-++#include <tqtabbar.h>
-++#include <tqtabwidget.h>
-++#include <tqtoolbar.h>
-++#include <tqtoolbutton.h>
-++#include <tqwidget.h>
-++#include <tqprogressbar.h>
-++
-++/* ********* See hack on top of this file */
-++#undef Region
-++
-++
-++/* ********* TDE base headers */
-++#include <kaboutdata.h>
-++#include <kapplication.h>
-++#include <kcmdlineargs.h>
-++#include <kconfig.h>
-++#include <kdeversion.h>
-++#include <kemailsettings.h>
-++#include <kglobal.h>
-++#include <kglobalsettings.h>
-++#include <klocale.h>
-++#include <kmainwindow.h>
-++#include <kmenubar.h>
-++#include <kprotocolmanager.h>
-++#include <kstartupinfo.h>
-++#include <kstyle.h>
-++
-++
-++/* ********* TDE address book connectivity headers */
-++#include <kabc/addressbook.h>
-++#include <kabc/addressee.h>
-++#include <kabc/field.h>
-++#include <kabc/stdaddressbook.h>
-++
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/inc/resource/tdeab_res.hrc connectivity/source/inc/resource/tdeab_res.hrc
-+--- connectivity/source/inc/resource/tdeab_res.hrc 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/inc/resource/tdeab_res.hrc 2011-08-18 00:42:41.185561810 -0500
-+@@ -0,0 +1,44 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef CONNECTIVITY_RESOURCE_KAB_HRC
-++#define CONNECTIVITY_RESOURCE_KAB_HRC
-++
-++#include "resource/conn_shared_res.hrc"
-++#include "resource/common_res.hrc"
-++// ============================================================================
-++// = the tdeab driver's resource strings
-++// ============================================================================
-++
-++#define STR_NO_TDE_INST ( STR_KAB_BASE + 0 )
-++#define STR_TDE_VERSION_TOO_OLD ( STR_KAB_BASE + 1 )
-++#define STR_TDE_VERSION_TOO_NEW ( STR_KAB_BASE + 2 )
-++#define STR_TDE_VERSION_TOO_NEW_WORK_AROUND ( STR_KAB_BASE + 3 )
-++
-++#endif // CONNECTIVITY_RESOURCE_KAB_HRC
-++
-+diff -urN shell/prj/d.lst shell/prj/d.lst
-+--- shell/prj/d.lst 2010-11-11 09:30:08.000000000 -0600
-++++ shell/prj/d.lst 2011-08-18 00:54:55.072395417 -0500
-+@@ -14,6 +14,7 @@
-+ ..\%__SRC%\bin\open-url %_DEST%\bin%_EXT%\open-url
-+ ..\%__SRC%\bin\cde-open-url %_DEST%\bin%_EXT%\cde-open-url
-+ ..\%__SRC%\bin\kde-open-url %_DEST%\bin%_EXT%\kde-open-url
-++..\%__SRC%\bin\tde-open-url %_DEST%\bin%_EXT%\tde-open-url
-+ ..\%__SRC%\bin\gnome-open-url %_DEST%\bin%_EXT%\gnome-open-url
-+ ..\%__SRC%\bin\gnome-open-url.bin %_DEST%\bin%_EXT%\gnome-open-url.bin
-+ ..\%__SRC%\bin\senddoc %_DEST%\bin%_EXT%\senddoc
-+@@ -23,3 +24,4 @@
-+
-+ ..\%__SRC%\misc\*-ucd.txt %_DEST%\bin%_EXT%\*-ucd.txt
-+ ..\inc\kde_headers.h %_DEST%\inc%_EXT%\shell\kde_headers.h
-++..\inc\tde_headers.h %_DEST%\inc%_EXT%\shell\tde_headers.h
-+diff -urN fpicker/prj/d.lst fpicker/prj/d.lst
-+--- fpicker/prj/d.lst 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/prj/d.lst 2011-08-18 00:57:05.532528127 -0500
-+@@ -5,6 +5,7 @@
-+ ..\%__SRC%\bin\f*.res %_DEST%\bin%_EXT%\
-+ ..\%__SRC%\bin\f*.dll %_DEST%\bin%_EXT%\
-+ ..\%__SRC%\bin\kdefilepicker %_DEST%\bin%_EXT%\kdefilepicker
-++..\%__SRC%\bin\tdefilepicker %_DEST%\bin%_EXT%\tdefilepicker
-+ ..\%__SRC%\lib\f*.so %_DEST%\lib%_EXT%\
-+ ..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
-+
-+@@ -14,3 +15,4 @@
-+ ..\source\unx\kde4\fps-kde4-ucd.txt %_DEST%\bin%_EXT%\fps-kde4-ucd.txt
-+ ..\source\aqua\fps-aqua-ucd.txt %_DEST%\bin%_EXT%\fps-aqua-ucd.txt
-+ ..\source\unx\kde_unx\fps-kde-ucd.txt %_DEST%\bin%_EXT%\fps-kde-ucd.txt
-++..\source\unx\tde_unx\fps-tde-ucd.txt %_DEST%\bin%_EXT%\fps-tde-ucd.txt
-+diff -urN connectivity/prj/d.lst connectivity/prj/d.lst
-+--- connectivity/prj/d.lst 2010-11-11 09:30:07.000000000 -0600
-++++ connectivity/prj/d.lst 2011-08-18 00:58:04.797146865 -0500
-+@@ -8,6 +8,7 @@
-+ ..\source\drivers\adabas\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\ado\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\kab\*.xml %_DEST%\xml%_EXT%\*.xml
-++..\source\drivers\tdeab\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\macab\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\file\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\flat\*.xml %_DEST%\xml%_EXT%\*.xml
-+diff -urN scp2/prj/build.lst scp2/prj/build.lst
-+--- scp2/prj/build.lst 2010-11-30 14:17:23.000000000 -0600
-++++ scp2/prj/build.lst 2011-08-18 11:36:10.411551109 -0500
-+@@ -14,6 +14,7 @@
-+ cp scp2\source\impress nmake - all cp_impress cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\javafilter nmake - all cp_javafilter cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\kde nmake - all cp_kde cp_langmacros cp_langtemplates NULL
-++cp scp2\source\tde nmake - all cp_tde cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\layout nmake - all cp_layout cp_langmacros NULL
-+ cp scp2\source\math nmake - all cp_math cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\ooo nmake - all cp_ooo cp_langmacros cp_langtemplates NULL
-+@@ -27,4 +28,4 @@
-+ cp scp2\source\winexplorerext nmake - all cp_winexplorerext cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\onlineupdate nmake - all cp_update cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\accessories nmake - all cp_accessories cp_langmacros NULL
-+-cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-++cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_tde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-+diff -urN scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_library_ooo.scp
-+--- scp2/source/ooo/file_library_ooo.scp 2010-11-11 09:08:07.000000000 -0600
-++++ scp2/source/ooo/file_library_ooo.scp 2011-08-18 11:42:28.890516734 -0500
-+@@ -590,6 +590,25 @@
-+ End
-+ #endif
-+ #endif
-++#ifdef ENABLE_TDE
-++#ifndef MACOSX
-++File gid_File_Lib_Fps_Tde
-++ TXT_FILE_BODY;
-++ Styles = (PACKED,UNO_COMPONENT);
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Dir = gid_Dir_Program;
-++ Name = SPECIAL_COMPONENT_LIB_NAME(fps_tde.uno);
-++ Regmergefile = "fps-tde-ucd.txt";
-++End
-++File gid_File_Bin_TdeFilePicker
-++ BIN_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = gid_Brand_Dir_Program;
-++ Name = "tdefilepicker";
-++End
-++#endif
-++#endif
-++
-+ #endif
-+
-+ #ifdef MACOSX
-+@@ -1207,6 +1226,17 @@
-+ End
-+ #endif
-+ #endif
-++#ifdef ENABLE_TDE
-++#ifndef MACOSX
-++File gid_File_Lib_Vclplug_Tde
-++ Name = LIBNAME(vclplug_tde);
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++End
-++#endif
-++#endif
-++
-+ #endif
-+
-+ #if defined(QUARTZ)
-+diff -urN scp2/source/ooo/file_ooo.scp scp2/source/ooo/file_ooo.scp
-+--- scp2/source/ooo/file_ooo.scp 2011-03-08 13:12:46.000000000 -0600
-++++ scp2/source/ooo/file_ooo.scp 2011-08-18 11:40:40.942257980 -0500
-+@@ -209,6 +209,13 @@
-+ Styles = (PACKED);
-+ End
-+
-++File gid_File_Bin_Tde_Open_Url
-++ BIN_FILE_BODY;
-++ Dir = gid_Dir_Program;
-++ Name = "tde-open-url";
-++ Styles = (PACKED);
-++End
-++
-+ File gid_File_Bin_Cde_Open_Url
-+ BIN_FILE_BODY;
-+ Dir = gid_Dir_Program;
-+diff -urN scp2/source/ooo/module_hidden_ooo.scp scp2/source/ooo/module_hidden_ooo.scp
-+--- scp2/source/ooo/module_hidden_ooo.scp 2010-12-14 09:40:37.000000000 -0600
-++++ scp2/source/ooo/module_hidden_ooo.scp 2011-08-18 11:44:02.297661319 -0500
-+@@ -40,6 +40,7 @@
-+ gid_File_Bin_Gnome_Open_Url,
-+ gid_File_Bin_Gnome_Open_Url_Bin,
-+ gid_File_Bin_Kde_Open_Url,
-++ gid_File_Bin_Tde_Open_Url,
-+ gid_File_Bin_Open_Url,
-+ gid_File_Bin_Pagein,
-+ gid_File_Bin_Pluginapp,
-+@@ -239,6 +240,7 @@
-+ gid_File_Lib_Vclplug_Gtk,
-+ gid_File_Lib_Vclplug_Kde,
-+ gid_File_Lib_Vclplug_Kde4,
-++ gid_File_Lib_Vclplug_Tde,
-+ gid_File_Lib_Vclplug_Svp,
-+ gid_File_Lib_Basctl,
-+ gid_File_Lib_CanvasTools,
-+diff -urN scp2/source/tde/file_tde.scp scp2/source/tde/file_tde.scp
-+--- scp2/source/tde/file_tde.scp 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/file_tde.scp 2011-08-18 11:38:30.302260303 -0500
-+@@ -0,0 +1,39 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++#include "macros.inc"
-++
-++#ifdef ENABLE_TDE
-++File gid_File_Lib_Tdebe
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(tdebe1.uno,UNXSUFFIX));
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Regmergefile = "tdebe1-ucd.txt";
-++End
-++#endif
-+diff -urN scp2/source/tde/makefile.mk scp2/source/tde/makefile.mk
-+--- scp2/source/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/makefile.mk 2011-08-18 11:37:33.667925169 -0500
-+@@ -0,0 +1,59 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..
-++
-++PRJPCH=
-++
-++PRJNAME=scp2
-++TARGET=tde
-++TARGETTYPE=CUI
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++
-++SCP_PRODUCT_TYPE=osl
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++
-++.IF "$(ENABLE_TDE)" != ""
-++SCPDEFS+=-DENABLE_TDE
-++.ENDIF
-++
-++PARFILES = \
-++ module_tde.par \
-++ file_tde.par
-++
-++ULFFILES= \
-++ module_tde.ulf
-++.ENDIF
-++
-++# --- File ---------------------------------------------------------
-++
-++.INCLUDE : target.mk
-+diff -urN scp2/source/tde/module_tde.scp scp2/source/tde/module_tde.scp
-+--- scp2/source/tde/module_tde.scp 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/module_tde.scp 2011-08-18 11:38:07.870543319 -0500
-+@@ -0,0 +1,45 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include "macros.inc"
-++
-++#if defined( ENABLE_TDE )
-++Module gid_Module_Optional_Tde
-++ ParentID = gid_Module_Optional;
-++ Default = YES;
-++ PackageInfo = "packinfo_office.txt";
-++ MOD_NAME_DESC(MODULE_OPTIONAL_TDE);
-++ Styles = (DONTSHOWINUSERINSTALL);
-++ Files = (
-++#ifdef ENABLE_TDE
-++ gid_File_Lib_Tdebe
-++#endif // ENABLE_TDE
-++ );
-++End
-++#endif
-++
-+diff -urN scp2/source/tde/module_tde.ulf scp2/source/tde/module_tde.ulf
-+--- scp2/source/tde/module_tde.ulf 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/module_tde.ulf 2011-08-18 11:37:03.345603863 -0500
-+@@ -0,0 +1,34 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++[STR_NAME_MODULE_OPTIONAL_TDE]
-++en-US = "TDE Integration"
-++
-++[STR_DESC_MODULE_OPTIONAL_TDE]
-++en-US = "System integration of %PRODUCTNAME %PRODUCTVERSION into TDE."
-++
-+diff -urN scp2/util/makefile.mk scp2/util/makefile.mk
-+--- scp2/util/makefile.mk 2010-12-16 07:54:12.000000000 -0600
-++++ scp2/util/makefile.mk 2011-08-18 11:39:59.419080617 -0500
-+@@ -197,6 +197,12 @@
-+ module_kde.par \
-+ file_kde.par
-+ .ENDIF
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++SCP1FILES += \
-++ module_tde.par \
-++ file_tde.par
-++.ENDIF
-+ .ENDIF
-+
-+ .IF "$(ENABLE_CRASHDUMP)" != ""
-+@@ -380,6 +386,12 @@
-+ module_kde.par \
-+ file_kde.par
-+ .ENDIF
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++SCP2FILES += \
-++ module_tde.par \
-++ file_tde.par
-++.ENDIF
-+ .ENDIF
-+
-+ .IF "$(ENABLE_CRASHDUMP)" != ""
-+diff -urN shell/source/unix/misc/makefile.mk shell/source/unix/misc/makefile.mk
-+--- shell/source/unix/misc/makefile.mk 2010-11-11 09:30:08.000000000 -0600
-++++ shell/source/unix/misc/makefile.mk 2011-08-18 14:27:51.206440704 -0500
-+@@ -45,7 +45,8 @@
-+ $(BIN)$/open-url \
-+ $(BIN)$/cde-open-url \
-+ $(BIN)$/gnome-open-url \
-+- $(BIN)$/kde-open-url
-++ $(BIN)$/kde-open-url \
-++ $(BIN)$/tde-open-url
-+
-+ .IF "$(GUI)" == "OS2"
-+
-+diff -urN shell/source/unix/misc/tde-open-url.sh shell/source/unix/misc/tde-open-url.sh
-+--- shell/source/unix/misc/tde-open-url.sh 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/unix/misc/tde-open-url.sh 2010-11-11 09:30:08.000000000 -0600
-+@@ -0,0 +1,10 @@
-++#!/bin/sh
-++
-++# special handling for mailto: uris
-++if echo $1 | grep '^mailto:' > /dev/null; then
-++ kmailservice "$1" &
-++else
-++ kfmclient openURL "$1" &
-++fi
-++
-++exit 0
-+diff -urN setup_native/source/packinfo/packinfo_office.txt setup_native/source/packinfo/packinfo_office.txt
-+--- setup_native/source/packinfo/packinfo_office.txt 2011-03-08 13:12:46.000000000 -0600
-++++ setup_native/source/packinfo/packinfo_office.txt 2011-08-18 14:46:02.820250783 -0500
-+@@ -48,6 +48,21 @@
-+ End
-+
-+ Start
-++module = "gid_Module_Optional_Tde"
-++solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-tde-integration"
-++solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-++packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-tde-integration"
-++freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-++requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-++copyright = "1999-2009 by OpenOffice.org"
-++solariscopyright = "solariscopyrightfile"
-++vendor = "The Document Foundation"
-++description = "TDE integration module for LibreOffice %OOOBASEVERSION"
-++destpath = "/opt"
-++packageversion = "%OOOPACKAGEVERSION"
-++End
-++
-++Start
-+ module = "gid_Module_Root"
-+ # script = "shellscripts_core01.txt"
-+ solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-+diff -urN scp2/source/ooo/makefile.mk scp2/source/ooo/makefile.mk
-+--- scp2/source/ooo/makefile.mk 2010-12-16 05:06:55.000000000 -0600
-++++ scp2/source/ooo/makefile.mk 2011-08-18 15:49:48.543071983 -0500
-+@@ -88,6 +88,14 @@
-+ SCPDEFS+=-DENABLE_KAB
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++SCPDEFS+=-DENABLE_TDE
-++.ENDIF
-++
-++.IF "$(ENABLE_TDEAB)" != ""
-++SCPDEFS+=-DENABLE_TDEAB
-++.ENDIF
-++
-+ .IF "$(ENABLE_EVOAB2)" != ""
-+ SCPDEFS+=-DENABLE_EVOAB2
-+ .ENDIF
-+diff -urN solenv/config/sooo330.ini solenv/config/sooo330.ini
-+--- solenv/config/sooo330.ini 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/config/sooo330.ini 2011-08-18 19:37:01.865529222 -0500
-+@@ -646,6 +646,8 @@
-+ CVER C432
-+ ENABLE_KAB TRUE
-+ ENABLE_KDE TRUE
-++ ENABLE_TDEAB TRUE
-++ ENABLE_TDE TRUE
-+ ENABLE_EVOAB2 TRUE
-+ ENV_TOOLS %SOLARROOT%/et_linux_libc2.5/%WORK_STAMP%/bin
-+ GUI UNX
-+@@ -656,6 +658,7 @@
-+ JDK14PATH %SOLAR_JDK14PATH%
-+ JDK15PATH %SOLAR_JDK15PATH%
-+ KDE_ROOT /so/env/kde/linux/kde-3.2.2
-++ TDE_ROOT /so/env/tde/linux/tde-3.2.2
-+ LIBMYSQL_PATH %SOLAR_ENV_ROOT%/mysql-connector-c-6.0.2/unxlngi6
-+ NO_BSYMBOLIC True
-+ OJDK16PATH %SOLAR_OJDK16PATH%
-+@@ -921,6 +924,8 @@
-+ CVER C341
-+ ENABLE_KAB TRUE
-+ ENABLE_KDE TRUE
-++ ENABLE_TDEAB TRUE
-++ ENABLE_TDE TRUE
-+ ENV_TOOLS %SOLARROOT%/et_linux_libc2.32/%WORK_STAMP%/bin
-+ GUI UNX
-+ GUIBASE unx
-+@@ -930,6 +935,7 @@
-+ JDK14PATH %SOLAR_JDK14PATH%
-+ JDK15PATH %SOLAR_JDK15PATH%
-+ KDE_ROOT /so/env/kde/linux/kde-3.2.2
-++ TDE_ROOT /so/env/tde/linux/tde-3.2.2
-+ LIBMYSQL_PATH %SOLAR_ENV_ROOT%/mysql-connector-c-6.0.2/unxlngx6
-+ NO_BSYMBOLIC True
-+ OJDK16PATH %SOLAR_OJDK16PATH%
-+diff -urN solenv/config/ssolar.cmn solenv/config/ssolar.cmn
-+--- solenv/config/ssolar.cmn 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/config/ssolar.cmn 2011-08-18 19:37:26.207387814 -0500
-+@@ -89,6 +89,7 @@
-+ ENABLE_GCONF
-+ ENABLE_GNOMEVFS
-+ ENABLE_KDE
-++ ENABLE_TDE
-+ ENABLE_MEDIAWIKI
-+ ENABLE_MINIMIZER
-+ ENABLE_NSS_MODULE
-+diff -urN solenv/inc/unx.mk solenv/inc/unx.mk
-+--- solenv/inc/unx.mk 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/inc/unx.mk 2011-08-18 19:35:33.868809472 -0500
-+@@ -206,4 +206,13 @@
-+ .ENDIF # "$(KDE_ROOT)"!=""
-+ .ENDIF # "$(ENABLE_KDE)" != ""
-+
-++# enable building/linking TDE-dependent code in both OOo and SO build environment
-++.IF "$(ENABLE_TDE)" != ""
-++.IF "$(TDE_ROOT)"!=""
-++TDE_CFLAGS:=-I$(TDE_ROOT)/include -I/usr/include/tqt -DQT_CLEAN_NAMESPACE
-++TDE_LIBS:=-lkdeui -lkdecore -ltqt -lqt-mt
-++SOLARLIB+=-L$(TDE_ROOT)/lib
-++.ENDIF # "$(TDE_ROOT)"!=""
-++.ENDIF # "$(ENABLE_TDE)" != ""
-++
-+ OOO_LIBRARY_PATH_VAR *= LD_LIBRARY_PATH
-+diff -urN svx/util/makefile.pmk svx/util/makefile.pmk
-+--- svx/util/makefile.pmk 2010-11-11 09:30:08.000000000 -0600
-++++ svx/util/makefile.pmk 2011-08-18 19:40:05.809571436 -0500
-+@@ -40,4 +40,8 @@
-+ CFLAGS+=-DENABLE_KDE4
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++CFLAGS+=-DENABLE_TDE
-++.ENDIF
-++
-+ VISIBILITY_HIDDEN=TRUE
-+diff -urN cui/source/options/optgdlg.cxx cui/source/options/optgdlg.cxx
-+--- cui/source/options/optgdlg.cxx 2011-01-05 12:03:17.000000000 -0600
-++++ cui/source/options/optgdlg.cxx 2011-08-18 19:41:16.134938506 -0500
-+@@ -157,6 +157,14 @@
-+ return rtl::OUString();
-+ #endif
-+ }
-++ else if ( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-++ {
-++ #ifdef ENABLE_TDE
-++ return ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.TDEFilePicker" );
-++ #else
-++ return rtl::OUString();
-++ #endif
-++ }
-+ #if defined WNT
-+ return ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.SystemFilePicker" );
-+ #elif (defined MACOSX && defined QUARTZ)
-+diff -urN cui/util/makefile.pmk cui/util/makefile.pmk
-+--- cui/util/makefile.pmk 2010-11-11 09:12:41.000000000 -0600
-++++ cui/util/makefile.pmk 2011-08-18 19:40:36.291897881 -0500
-+@@ -37,4 +37,8 @@
-+ CFLAGS+=-DENABLE_KDE4
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++CFLAGS+=-DENABLE_TDE
-++.ENDIF
-++
-+ VISIBILITY_HIDDEN=TRUE
-+diff -urN desktop/source/pagein/makefile.mk desktop/source/pagein/makefile.mk
-+--- desktop/source/pagein/makefile.mk 2010-11-11 09:30:07.000000000 -0600
-++++ desktop/source/pagein/makefile.mk 2011-08-18 19:41:55.037907135 -0500
-+@@ -129,6 +129,9 @@
-+ .IF "$(ENABLE_KDE)" != ""
-+ @-echo $(DLLPRE)vclplug_kde$(DFTDLLPOST) >> $@
-+ .ENDIF # ENABLE_KDE
-++.IF "$(ENABLE_TDE)" != ""
-++ @-echo $(DLLPRE)vclplug_tde$(DFTDLLPOST) >> $@
-++.ENDIF # ENABLE_TDE
-+ #
-+ @-echo $(DLLPRE)basegfx$(DFTDLLPOST) >> $@
-+ @-echo $(DLLPRE)sot$(DFTDLLPOST) >> $@
-+diff -urN toolkit/source/layout/core/dialogbuttonhbox.cxx toolkit/source/layout/core/dialogbuttonhbox.cxx
-+--- toolkit/source/layout/core/dialogbuttonhbox.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ toolkit/source/layout/core/dialogbuttonhbox.cxx 2011-08-18 19:46:04.396929494 -0500
-+@@ -57,6 +57,8 @@
-+ DialogButtonHBox::WINDOWS;
-+ #elif defined( ENABLE_KDE )
-+ DialogButtonHBox::KDE;
-++#elif defined( ENABLE_TDE )
-++DialogButtonHBox::TDE;
-+ #else /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
-+ DialogButtonHBox::GNOME;
-+ #endif /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
-+@@ -84,6 +86,8 @@
-+ mnOrdering = GNOME;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "KDE" ) )
-+ mnOrdering = KDE;
-++ else if ( ordering.equalsIgnoreAsciiCaseAscii( "TDE" ) )
-++ mnOrdering = TDE;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "MacOS" ) )
-+ mnOrdering = MACOS;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "Windows" ) )
-+@@ -144,6 +148,8 @@
-+ macosOrdering();
-+ else if ( mnOrdering == KDE )
-+ kdeOrdering();
-++ else if ( mnOrdering == TDE )
-++ tdeOrdering();
-+ else if ( 1 || mnOrdering == GNOME )
-+ gnomeOrdering();
-+ }
-+@@ -218,6 +224,30 @@
-+ {
-+ std::list< Box_Base::ChildData * > ordered;
-+ if ( mpHelp )
-++ ordered.push_back( mpHelp );
-++ if ( mpReset )
-++ ordered.push_back( mpReset );
-++ if ( mpFlow && ( mpHelp || mpReset ) )
-++ ordered.push_back( mpFlow );
-++ ordered.insert( ordered.end(), maOther.begin(), maOther.end() );
-++ if ( mpAction )
-++ ordered.push_back( mpAction );
-++ if ( mpAffirmative )
-++ ordered.push_back( mpAffirmative );
-++ if ( mpApply )
-++ ordered.push_back( mpApply );
-++ if ( mpAlternate )
-++ ordered.push_back( mpAlternate );
-++ if ( mpCancel )
-++ ordered.push_back( mpCancel );
-++ maChildren = ordered;
-++}
-++
-++void
-++DialogButtonHBox::tdeOrdering()
-++{
-++ std::list< Box_Base::ChildData * > ordered;
-++ if ( mpHelp )
-+ ordered.push_back( mpHelp );
-+ if ( mpReset )
-+ ordered.push_back( mpReset );
-+diff -urN toolkit/source/layout/core/dialogbuttonhbox.hxx toolkit/source/layout/core/dialogbuttonhbox.hxx
-+--- toolkit/source/layout/core/dialogbuttonhbox.hxx 2010-11-11 09:22:48.000000000 -0600
-++++ toolkit/source/layout/core/dialogbuttonhbox.hxx 2011-08-18 19:46:17.897959152 -0500
-+@@ -45,11 +45,12 @@
-+ void SAL_CALL removeChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) throw ( css::uno::RuntimeException );
-+
-+ private:
-+- enum Ordering { PLATFORM, GNOME, KDE, MACOS, WINDOWS };
-++ enum Ordering { PLATFORM, GNOME, KDE, TDE, MACOS, WINDOWS };
-+
-+ void orderChildren();
-+ void gnomeOrdering();
-+ void kdeOrdering();
-++ void tdeOrdering();
-+ void macosOrdering();
-+ void windowsOrdering();
-+
-+diff -urN vcl/util/makefile.mk vcl/util/makefile.mk
-+--- vcl/util/makefile.mk 2011-03-08 12:51:41.000000000 -0600
-++++ vcl/util/makefile.mk 2011-08-18 19:55:25.649710040 -0500
-+@@ -420,6 +420,35 @@
-+
-+ .ENDIF # "$(ENABLE_KDE)" != ""
-+
-++# TDE plugin
-++.IF "$(ENABLE_TDE)" != ""
-++.IF "$(TDE_ROOT)"!=""
-++EXTRALIBPATHS+=-L$(TDE_ROOT)$/lib
-++.ENDIF
-++LIB5TARGET=$(SLB)$/itde_plug_
-++LIB5FILES=$(SLB)$/tdeplug.lib
-++SHL5TARGET=vclplug_tde$(DLLPOSTFIX)
-++SHL5IMPLIB=itde_plug_
-++SHL5LIBS=$(LIB5TARGET)
-++SHL5DEPN=$(SHL2TARGETN)
-++# libs for TDE plugin
-++SHL5STDLIBS+=-l$(SHL2TARGET)
-++SHL5STDLIBS+=\
-++ $(VCLLIB) \
-++ $(TOOLSLIB) \
-++ $(SALLIB) \
-++ $(X11LINK_DYNAMIC)
-++
-++.IF "$(ENABLE_RANDR)" != ""
-++.IF "$(XRANDR_DLOPEN)" == "FALSE"
-++SHL5STDLIBS+= $(XRANDR_LIBS)
-++.ENDIF
-++.ENDIF
-++
-++SHL5LINKFLAGS+=$(TDE_LIBS)
-++
-++.ENDIF # "$(ENABLE_TDE)" != ""
-++
-+ # KDE4 plugin
-+ .IF "$(ENABLE_KDE4)" != ""
-+ .IF "$(KDE4_ROOT)"!=""
-+diff -urN vcl/unx/tde/makefile.mk vcl/unx/tde/makefile.mk
-+--- vcl/unx/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/makefile.mk 2011-08-18 20:13:01.750097435 -0500
-+@@ -0,0 +1,82 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..
-++
-++PRJNAME=vcl
-++TARGET=tdeplug
-++.INCLUDE : $(PRJ)$/util$/makefile.pmk
-++
-++# workaround for makedepend hang
-++MTDEPENDSOLVER=
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++.INCLUDE : $(PRJ)$/util$/makefile2.pmk
-++
-++# For some of the included external TDE headers, GCC complains about shadowed
-++# symbols in instantiated template code only at the end of a compilation unit,
-++# so the only solution is to disable that warning here:
-++.IF "$(COM)" == "GCC"
-++CFLAGSCXX+=-Wno-shadow
-++.ENDIF
-++
-++# --- Files --------------------------------------------------------
-++
-++.IF "$(GUIBASE)"!="unx"
-++
-++dummy:
-++ @echo "Nothing to build for GUIBASE $(GUIBASE)"
-++
-++.ELSE # "$(GUIBASE)"!="unx"
-++
-++.IF "$(ENABLE_TDE)" != ""
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++.IF "$(ENABLE_RANDR)" != ""
-++CDEFS+=-DUSE_RANDR
-++.ENDIF
-++
-++SLOFILES=\
-++ $(SLO)$/tdedata.obj \
-++ $(SLO)$/salnativewidgets-tde.obj
-++
-++.ELSE # "$(ENABLE_TDE)" != ""
-++
-++dummy:
-++ @echo TDE disabled - nothing to build
-++.ENDIF
-++.ENDIF # "$(GUIBASE)"!="unx"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-++
-++.INCLUDE : $(PRJ)$/util$/target.pmk
-+diff -urN vcl/unx/tde/salnativewidgets-tde.cxx vcl/unx/tde/salnativewidgets-tde.cxx
-+--- vcl/unx/tde/salnativewidgets-tde.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/salnativewidgets-tde.cxx 2011-08-18 20:13:46.133472981 -0500
-+@@ -0,0 +1,2119 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_vcl.hxx"
-++
-++#define _SV_SALNATIVEWIDGETS_TDE_CXX
-++#include <shell/tde_headers.h>
-++
-++#include <salunx.h>
-++#include <saldata.hxx>
-++#include <saldisp.hxx>
-++
-++#include <salgdi.h>
-++
-++#include <salframe.h>
-++#include <vcl/settings.hxx>
-++#include <rtl/ustrbuf.hxx>
-++#include <plugins/tde/tdedata.hxx>
-++#include <iostream>
-++
-++#include <pspgraphics.h>
-++
-++using namespace ::rtl;
-++
-++/** Cached native widgets.
-++
-++ A class which caches and paints the native widgets.
-++*/
-++class WidgetPainter
-++{
-++ protected:
-++ /** Cached push button.
-++
-++ It is necessary for the TQStyle::drawControl(). The buttons are created
-++ on demand and they are still hidden (no TQWidget::show() is called).
-++ */
-++ TQPushButton *m_pPushButton;
-++
-++ /** Cached radio button.
-++
-++ @see m_pPushButton
-++ */
-++ TQRadioButton *m_pRadioButton;
-++
-++ /** Cached check box.
-++
-++ @see m_pPushButton
-++ */
-++ TQCheckBox *m_pCheckBox;
-++
-++ /** Cached combo box.
-++
-++ @see m_pPushButton
-++ */
-++ TQComboBox *m_pComboBox;
-++
-++ /** Cached editable combo box.
-++
-++ Needed, because some styles do not like dynamic changes
-++ (TQComboBox::setEditable()).
-++
-++ @see m_pPushButton
-++ */
-++ TQComboBox *m_pEditableComboBox;
-++
-++ /** Cached line edit box.
-++
-++ @see m_pPushButton
-++ */
-++ TQLineEdit *m_pLineEdit;
-++
-++ /** Cached spin box.
-++
-++ @see m_pPushButton
-++ */
-++ TQSpinWidget *m_pSpinWidget;
-++
-++ /** Cached spin box'es line edit.
-++
-++ @see m_pPushButton
-++ */
-++ TQLineEdit *m_pSpinEdit;
-++
-++ /** Cached tab.
-++
-++ Left, middle, right tab and a tab which is alone.
-++
-++ @see m_pPushButton
-++ */
-++ TQTab *m_pTabLeft, *m_pTabMiddle, *m_pTabRight, *m_pTabAlone;
-++
-++ /** Cached tab bar's parent widget.
-++
-++ Needed, because the Qt windows style checks for the availability
-++ of tab bar's parent. We cannot use m_pTabWidget, because
-++ TabWidget::setTabBar() and TabWidget::tabBar() methods are
-++ protected.
-++
-++ @see m_pPushButton, m_pTabWidget
-++ */
-++ TQWidget *m_pTabBarParent;
-++
-++ /** Cached tab bar widget.
-++
-++ @see m_pPushButton
-++ */
-++ TQTabBar *m_pTabBar;
-++
-++ /** Cached tab widget.
-++
-++ We need it to draw the tab page. It cannot be used to draw the
-++ tabs themselves, because the drawing has to be tweaked a little
-++ due to not enough information from VCL.
-++
-++ @see m_pPushButton, m_pTabBarParent
-++ */
-++ TQTabWidget *m_pTabWidget;
-++
-++ /** Cached list view.
-++
-++ @see m_pPushButton
-++ */
-++ TQListView *m_pListView;
-++
-++ /** Cached scroll bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQScrollBar *m_pScrollBar;
-++
-++ /** Cached dock area. Needed for proper functionality of tool bars.
-++
-++ @see m_pPushButton
-++ */
-++ TQMainWindow *m_pMainWindow;
-++
-++ /** Cached tool bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQToolBar *m_pToolBarHoriz, *m_pToolBarVert;
-++
-++ /** Cached tool button.
-++
-++ @see m_pPushButton
-++ */
-++ TQToolButton *m_pToolButton;
-++
-++ /** Cached menu bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQMenuBar *m_pMenuBar;
-++
-++ /** Identifiers of menu bar items.
-++ */
-++ int m_nMenuBarEnabledItem, m_nMenuBarDisabledItem;
-++
-++ /** Cached popup menu.
-++
-++ @see m_pPushButton
-++ */
-++ TQPopupMenu *m_pPopupMenu;
-++
-++ /** Identifiers of popup menu items.
-++ */
-++ int m_nPopupMenuEnabledItem, m_nPopupMenuDisabledItem;
-++
-++ /** cached progress bar
-++ */
-++ TQProgressBar *m_pProgressBar;
-++
-++ // TODO other widgets
-++
-++ public:
-++ /** Implicit constructor.
-++
-++ It creates an empty WidgetPainter with all the cached widgets initialized
-++ to NULL. The widgets are created on demand and they are still hidden
-++ (no TQWidget::show()), because they are needed just as a parameter for
-++ TQStyle::drawControl().
-++
-++ @see m_pPushButton
-++ */
-++ WidgetPainter( void );
-++
-++ /** Destructor.
-++
-++ Destruct all the cached widgets.
-++ */
-++ virtual ~WidgetPainter( void );
-++
-++ /** Paints the specified widget to the X window.
-++
-++ Use X calls to bitblt (bit block transfer) the widget qWidget to
-++ the window specified by drawable with the style defined by nStyle.
-++
-++ @param qWidget
-++ A pointer to the cached widget.
-++
-++ @param nState
-++ The state of the control (focused, on/off, ...)
-++
-++ @param aValue
-++ The value (true/false, ...)
-++
-++ @param dpy
-++ The display to be used by the X calls.
-++
-++ @param drawable
-++ The destination X window.
-++
-++ @param gc
-++ The graphics context.
-++ */
-++ BOOL drawStyledWidget( TQWidget *pWidget,
-++ ControlState nState, const ImplControlValue& aValue,
-++ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-++ ControlPart nPart = PART_ENTIRE_CONTROL );
-++
-++ /** 'Get' method for push button.
-++
-++ The method returns the cached push button. It is constructed if it
-++ does not exist. It has NULL as a parent and it stays hidden, but it
-++ is necessary for the drawStyledWidget() method.
-++
-++ @return valid push button.
-++ */
-++ TQPushButton *pushButton( const Rectangle& rControlRegion, BOOL bDefault );
-++
-++ /** 'Get' method for radio button.
-++
-++ @see pushButton()
-++ */
-++ TQRadioButton *radioButton( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for check box.
-++
-++ @see pushButton()
-++ */
-++ TQCheckBox *checkBox( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for combo box.
-++
-++ It returns m_pComboBox or m_pEditableComboBox according to
-++ bEditable.
-++
-++ @see pushButton(), m_pEditableComboBox
-++ */
-++ TQComboBox *comboBox( const Rectangle& rControlRegion, BOOL bEditable );
-++
-++ /** 'Get' method for line edit box.
-++
-++ @see pushButton()
-++ */
-++ TQLineEdit *lineEdit( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for spin box.
-++
-++ @see pushButton()
-++ */
-++ TQSpinWidget *spinWidget( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for tab bar.
-++
-++ @see pushButton()
-++ */
-++ TQTabBar *tabBar( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for tab widget.
-++
-++ @see pushButton()
-++ */
-++ TQTabWidget *tabWidget( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for list view.
-++
-++ @see pushButton()
-++ */
-++ TQListView *listView( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for scroll bar.
-++
-++ @see pushButton()
-++ */
-++ TQScrollBar *scrollBar( const Rectangle& rControlRegion,
-++ BOOL bHorizontal, const ImplControlValue& aValue );
-++
-++ /** 'Get' method for tool bar.
-++
-++ @see pushButton()
-++ */
-++ TQToolBar *toolBar( const Rectangle& rControlRegion, BOOL bHorizontal );
-++
-++ /** 'Get' method for tool button.
-++
-++ @see pushButton()
-++ */
-++ TQToolButton *toolButton( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for menu bar.
-++
-++ @see pushButton()
-++ */
-++ TQMenuBar *menuBar( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for popup menu.
-++
-++ @see pushButton()
-++ */
-++ TQPopupMenu *popupMenu( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for progress bar
-++
-++ @see pushButton()
-++ */
-++ TQProgressBar *progressBar( const Rectangle& rControlRegion );
-++
-++ // TODO other widgets
-++
-++ protected:
-++ /** Style conversion function.
-++
-++ Conversion function between VCL ControlState together with
-++ ImplControlValue and Qt state flags.
-++
-++ @param nState
-++ State of the widget (default, focused, ...) as defined in Native
-++ Widget Framework.
-++
-++ @param aValue
-++ Value held by the widget (on, off, ...)
-++ */
-++ TQStyle::SFlags vclStateValue2SFlags( ControlState nState, const ImplControlValue& aValue );
-++
-++ public:
-++ /** Convert VCL Rectangle to TQRect.
-++
-++ @param rControlRegion
-++ The region to convert.
-++
-++ @return
-++ The bounding box of the region.
-++ */
-++ static TQRect region2TQRect( const Rectangle& rControlRegion );
-++};
-++
-++WidgetPainter::WidgetPainter( void )
-++ : m_pPushButton( NULL ),
-++ m_pRadioButton( NULL ),
-++ m_pCheckBox( NULL ),
-++ m_pComboBox( NULL ),
-++ m_pEditableComboBox( NULL ),
-++ m_pLineEdit( NULL ),
-++ m_pSpinWidget( NULL ),
-++ m_pSpinEdit( NULL ),
-++ m_pTabLeft( NULL ),
-++ m_pTabMiddle( NULL ),
-++ m_pTabRight( NULL ),
-++ m_pTabAlone( NULL ),
-++ m_pTabBarParent( NULL ),
-++ m_pTabBar( NULL ),
-++ m_pTabWidget( NULL ),
-++ m_pListView( NULL ),
-++ m_pScrollBar( NULL ),
-++ m_pMainWindow( NULL ),
-++ m_pToolBarHoriz( NULL ),
-++ m_pToolBarVert( NULL ),
-++ m_pToolButton( NULL ),
-++ m_pMenuBar( NULL ),
-++ m_pPopupMenu( NULL ),
-++ m_pProgressBar( NULL )
-++{
-++}
-++
-++WidgetPainter::~WidgetPainter( void )
-++{
-++ delete m_pPushButton, m_pPushButton = NULL;
-++ delete m_pRadioButton, m_pRadioButton = NULL;
-++ delete m_pCheckBox, m_pCheckBox = NULL;
-++ delete m_pComboBox, m_pComboBox = NULL;
-++ delete m_pEditableComboBox, m_pEditableComboBox = NULL;
-++ delete m_pLineEdit, m_pLineEdit = NULL;
-++ delete m_pSpinWidget, m_pSpinWidget = NULL;
-++ m_pSpinEdit = NULL; // Deleted in m_pSpinWidget's destructor
-++ delete m_pTabAlone, m_pTabAlone = NULL;
-++ delete m_pTabBarParent, m_pTabBarParent = NULL;
-++ m_pTabBar = NULL; // Deleted in m_pTabBarParent's destructor
-++ m_pTabLeft = NULL;
-++ m_pTabMiddle = NULL;
-++ m_pTabRight = NULL;
-++ delete m_pTabWidget, m_pTabWidget = NULL;
-++ delete m_pListView, m_pListView = NULL;
-++ delete m_pScrollBar, m_pScrollBar = NULL;
-++ delete m_pToolBarHoriz, m_pToolBarHoriz = NULL;
-++ delete m_pToolBarVert, m_pToolBarVert = NULL;
-++ delete m_pMainWindow, m_pMainWindow = NULL;
-++ delete m_pToolButton, m_pToolButton = NULL;
-++ delete m_pMenuBar, m_pMenuBar = NULL;
-++ delete m_pPopupMenu, m_pPopupMenu = NULL;
-++ delete m_pProgressBar, m_pProgressBar = NULL;
-++}
-++
-++BOOL WidgetPainter::drawStyledWidget( TQWidget *pWidget,
-++ ControlState nState, const ImplControlValue& aValue,
-++ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-++ ControlPart nPart )
-++{
-++ if ( !pWidget )
-++ return FALSE;
-++
-++ // Normalize the widget
-++ TQPoint qWidgetPos( pWidget->pos() );
-++ pWidget->move( 0, 0 );
-++
-++ // Enable/disable the widget
-++ pWidget->setEnabled( nState & CTRL_STATE_ENABLED );
-++
-++ // Create pixmap to paint to
-++ TQPixmap qPixmap( pWidget->width(), pWidget->height() );
-++ TQPainter qPainter( &qPixmap );
-++ TQRect qRect( 0, 0, pWidget->width(), pWidget->height() );
-++
-++ // Use the background of the widget
-++ qPixmap.fill( pWidget, TQPoint(0, 0) );
-++
-++ // Convert the flags
-++ TQStyle::SFlags nStyle = vclStateValue2SFlags( nState, aValue );
-++
-++ // Store the widget class
-++ const char *pClassName = pWidget->className();
-++
-++ // Draw the widget to the pixmap
-++ if ( strcmp( TQPUSHBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ // Workaround for the Platinum style.
-++ // Platinum takes the state directly from the widget, not from SFlags.
-++ TQPushButton *pPushButton = static_cast<TQPushButton *>( pWidget->qt_cast( TQPUSHBUTTON_OBJECT_NAME_STRING ) );
-++ if ( pPushButton )
-++ {
-++ pPushButton->setDown ( nStyle & TQStyle::Style_Down );
-++ pPushButton->setOn ( nStyle & TQStyle::Style_On );
-++ pPushButton->setEnabled( nStyle & TQStyle::Style_Enabled );
-++ }
-++
-++ kapp->style().drawControl( TQStyle::CE_PushButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQRADIOBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ // Bitblt from the screen, because the radio buttons are usually not
-++ // rectangular, and there could be a bitmap under them
-++ GC aTmpGC = XCreateGC( dpy, qPixmap.handle(), 0, NULL );
-++ X11SalGraphics::CopyScreenArea( dpy,
-++ drawable, nScreen, nDepth,
-++ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-++ aTmpGC,
-++ qWidgetPos.x(), qWidgetPos.y(), qRect.width(), qRect.height(),
-++ 0, 0 );
-++ XFreeGC( dpy, aTmpGC );
-++
-++ kapp->style().drawControl( TQStyle::CE_RadioButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQCHECKBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawControl( TQStyle::CE_CheckBox,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQCOMBOBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawComplexControl( TQStyle::CC_ComboBox,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++
-++ // Editable combo box uses the background of the associated edit box
-++ TQComboBox *pComboBox = static_cast<TQComboBox *>( pWidget->qt_cast( TQCOMBOBOX_OBJECT_NAME_STRING ) );
-++ if ( pComboBox && pComboBox->editable() && pComboBox->lineEdit() )
-++ {
-++ TQColorGroup::ColorRole eColorRole = ( pComboBox->isEnabled() )?
-++ TQColorGroup::Base: TQColorGroup::Background;
-++ qPainter.fillRect(
-++ kapp->style().querySubControlMetrics( TQStyle::CC_ComboBox,
-++ pComboBox, TQStyle::SC_ComboBoxEditField ),
-++ pComboBox->lineEdit()->colorGroup().brush( eColorRole ) );
-++ }
-++ }
-++ else if ( strcmp( TQLINEEDIT_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelLineEdit,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-++ }
-++ else if ( strcmp( TQSPINWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const SpinbuttonValue *pValue = static_cast<const SpinbuttonValue *> ( &aValue );
-++
-++ // Is any of the buttons pressed?
-++ TQStyle::SCFlags eActive = TQStyle::SC_None;
-++ if ( pValue )
-++ {
-++ if ( pValue->mnUpperState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_SpinWidgetUp;
-++ else if ( pValue->mnLowerState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_SpinWidgetDown;
-++
-++ // Update the enable/disable state of the widget
-++ if ( ( nState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnUpperState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnLowerState & CTRL_STATE_ENABLED ) )
-++ {
-++ pWidget->setEnabled( true );
-++ nStyle |= TQStyle::Style_Enabled;
-++ }
-++ else
-++ pWidget->setEnabled( false );
-++
-++ // Mouse-over effect
-++ if ( (pValue->mnUpperState & CTRL_STATE_ROLLOVER) ||
-++ (pValue->mnLowerState & CTRL_STATE_ROLLOVER) )
-++ nStyle |= TQStyle::Style_MouseOver;
-++ }
-++
-++ // Spin widget uses the background of the associated edit box
-++ TQSpinWidget *pSpinWidget = static_cast<TQSpinWidget *>( pWidget->qt_cast( TQSPINWIDGET_OBJECT_NAME_STRING ) );
-++ if ( pSpinWidget && pSpinWidget->editWidget() )
-++ {
-++ TQColorGroup::ColorRole eColorRole = ( pSpinWidget->isEnabled() )?
-++ TQColorGroup::Base: TQColorGroup::Background;
-++ qPainter.fillRect(
-++ kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-++ pSpinWidget, TQStyle::SC_SpinWidgetEditField ),
-++ pSpinWidget->editWidget()->colorGroup().brush( eColorRole ) );
-++ }
-++
-++ // Adjust the frame (needed for Motif Plus style)
-++ TQRect qFrameRect = kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-++ pWidget, TQStyle::SC_SpinWidgetFrame );
-++
-++ kapp->style().drawComplexControl( TQStyle::CC_SpinWidget,
-++ &qPainter, pWidget, qFrameRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyle::SC_All, eActive );
-++ }
-++ else if ( strcmp( TQTABBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const TabitemValue *pValue = static_cast<const TabitemValue *> ( &aValue );
-++
-++ TQTab *pTab = NULL;
-++ if ( pValue )
-++ {
-++ if ( ( pValue->isFirst() || pValue->isLeftAligned() ) && ( pValue->isLast() || pValue->isRightAligned() ) )
-++ pTab = m_pTabAlone;
-++ else if ( pValue->isFirst() || pValue->isLeftAligned() )
-++ pTab = m_pTabLeft;
-++ else if ( pValue->isLast() || pValue->isRightAligned() )
-++ pTab = m_pTabRight;
-++ else
-++ pTab = m_pTabMiddle;
-++ }
-++ if ( !pTab )
-++ return FALSE;
-++
-++ pTab->setRect( qRect );
-++
-++ kapp->style().drawControl( TQStyle::CE_TabBarTab,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pTab ) );
-++ }
-++ else if ( strcmp( TQTABWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelTabWidget,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQLISTVIEW_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_Panel,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-++ }
-++ else if ( strcmp( TQSCROLLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-++
-++ TQStyle::SCFlags eActive = TQStyle::SC_None;
-++ if ( pValue )
-++ {
-++ // Workaround for Style_MouseOver-aware themes.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "QMotifPlusStyle", pStyleName ) == 0 )
-++ {
-++ nStyle |= TQStyle::Style_MouseOver;
-++ if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ }
-++ else if ( strcmp( "QSGIStyle", pStyleName ) == 0 )
-++ {
-++ nStyle |= TQStyle::Style_MouseOver;
-++ if ( pValue->mnButton1State & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSubLine;
-++ else if ( pValue->mnButton2State & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarAddLine;
-++ else if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ }
-++
-++ if ( pValue->mnButton1State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSubLine;
-++ else if ( pValue->mnButton2State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarAddLine;
-++ else if ( pValue->mnThumbState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ else if ( pValue->mnPage1State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSubPage;
-++ else if ( pValue->mnPage2State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarAddPage;
-++
-++ // Update the enable/disable state of the widget
-++ if ( ( nState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnButton1State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnButton2State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnThumbState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnPage1State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnPage2State & CTRL_STATE_ENABLED ) )
-++ {
-++ pWidget->setEnabled( true );
-++ nStyle |= TQStyle::Style_Enabled;
-++ }
-++ else
-++ pWidget->setEnabled( false );
-++ }
-++
-++ // Is it a horizontal scroll bar?
-++ TQScrollBar *pScrollBar = static_cast<TQScrollBar *> ( pWidget->qt_cast( TQSCROLLBAR_OBJECT_NAME_STRING ) );
-++ TQStyle::StyleFlags eHoriz = TQStyle::Style_Default;
-++ if ( pScrollBar && pScrollBar->orientation() == Qt::Horizontal )
-++ eHoriz = TQStyle::Style_Horizontal;
-++
-++ kapp->style().drawComplexControl( TQStyle::CC_ScrollBar,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle | eHoriz,
-++ TQStyle::SC_All, eActive );
-++ }
-++ else if ( strcmp( TQTOOLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ TQToolBar *pToolBar = static_cast< TQToolBar * >( pWidget->qt_cast( TQTOOLBAR_OBJECT_NAME_STRING ) );
-++ bool bIsHorizontal = false;
-++ if ( pToolBar && pToolBar->orientation() == Qt::Horizontal )
-++ {
-++ nStyle |= TQStyle::Style_Horizontal;
-++ bIsHorizontal = true;
-++ }
-++
-++ kapp->style().drawControl( TQStyle::CE_DockWindowEmptyArea,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelDockWindow,
-++ &qPainter, qRect, pWidget->colorGroup(), nStyle );
-++
-++ if ( nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT )
-++ {
-++ const ToolbarValue *pValue = static_cast< const ToolbarValue * >( &aValue );
-++
-++ TQRect qThumbRect = region2TQRect( pValue->maGripRect );
-++ qThumbRect.moveBy( -qWidgetPos.x(), -qWidgetPos.y() );
-++ if ( bIsHorizontal )
-++ qThumbRect.addCoords( 0, 2, 0, -3 ); // make the thumb a bit nicer
-++ else
-++ qThumbRect.addCoords( 2, 0, -3, 0 ); // make the thumb a bit nicer
-++
-++ if ( kapp->style().inherits( "HighColorStyle" ) ||
-++ kapp->style().inherits( "HighContrastStyle" ) ||
-++ kapp->style().inherits( "KeramikStyle" ) ||
-++ kapp->style().inherits( "KThemeStyle" ) ||
-++ kapp->style().inherits( "ThinKeramikStyle" ) )
-++ {
-++ // Workaround for the workaround in KStyle::drawPrimitive()
-++ KStyle *pStyle = static_cast< KStyle * >( &kapp->style() );
-++ pStyle->drawKStylePrimitive( KStyle::KPE_ToolBarHandle,
-++ &qPainter, pToolBar, qThumbRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else
-++ kapp->style().drawPrimitive( TQStyle::PE_DockWindowHandle,
-++ &qPainter, qThumbRect, pWidget->colorGroup(), nStyle );
-++ }
-++ }
-++ else if ( strcmp( TQTOOLBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ if( (nStyle & TQStyle::Style_MouseOver) )
-++ nStyle &= ~TQStyle::Style_Off;
-++ kapp->style().drawComplexControl( TQStyle::CC_ToolButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyle::SC_ToolButton );
-++ }
-++ else if ( strcmp( TQMENUBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ kapp->style().drawControl( TQStyle::CE_MenuBarEmptyArea,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( nPart == PART_MENU_ITEM )
-++ {
-++ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nMenuBarEnabledItem: m_nMenuBarDisabledItem;
-++ TQMenuItem *pMenuItem = static_cast<TQMenuBar*>( pWidget )->findItem( nMenuItem );
-++
-++ if ( nStyle & TQStyle::Style_Selected )
-++ nStyle |= TQStyle::Style_Active | TQStyle::Style_Down | TQStyle::Style_HasFocus;
-++
-++ kapp->style().drawControl( TQStyle::CE_MenuBarItem,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pMenuItem ) );
-++ }
-++ }
-++ else if ( strcmp( TQPOPUPMENU_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nPopupMenuEnabledItem: m_nPopupMenuDisabledItem;
-++ TQMenuItem *pMenuItem = static_cast<TQPopupMenu*>( pWidget )->findItem( nMenuItem );
-++
-++ if ( nStyle & TQStyle::Style_Selected )
-++ nStyle |= TQStyle::Style_Active;
-++
-++ kapp->style().drawControl( TQStyle::CE_PopupMenuItem,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pMenuItem, 0, 0 ) );
-++ }
-++ else if ( strcmp( TQPROGRESSBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ long nProgressWidth = aValue.getNumericVal();
-++ TQProgressBar* pProgress = static_cast<TQProgressBar*>(pWidget);
-++ pProgress->setProgress( nProgressWidth, qRect.width() );
-++
-++ kapp->style().drawControl( TQStyle::CE_ProgressBarGroove,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ kapp->style().drawControl( TQStyle::CE_ProgressBarContents,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else
-++ return FALSE;
-++
-++ // Bitblt it to the screen
-++ X11SalGraphics::CopyScreenArea( dpy,
-++ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-++ drawable, nScreen, nDepth,
-++ gc,
-++ 0, 0, qRect.width(), qRect.height(),
-++ qWidgetPos.x(), qWidgetPos.y() );
-++
-++ // Restore widget's position
-++ pWidget->move( qWidgetPos );
-++
-++ return TRUE;
-++}
-++
-++TQPushButton *WidgetPainter::pushButton( const Rectangle& rControlRegion,
-++ BOOL bDefault )
-++{
-++ if ( !m_pPushButton )
-++ m_pPushButton = new TQPushButton( NULL, "push_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken styles which do not add
-++ // TQStyle::PM_ButtonDefaultIndicator to the size of the default button
-++ // (for example Keramik)
-++ // FIXME Fix Keramik style to be consistant with Qt built-in styles. Aargh!
-++ if ( bDefault )
-++ {
-++ TQSize qContentsSize( 50, 50 );
-++ m_pPushButton->setDefault( false );
-++ TQSize qNormalSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-++ m_pPushButton, qContentsSize );
-++ m_pPushButton->setDefault( true );
-++ TQSize qDefSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-++ m_pPushButton, qContentsSize );
-++
-++ int nIndicatorSize = kapp->style().pixelMetric(
-++ TQStyle::PM_ButtonDefaultIndicator, m_pPushButton );
-++ if ( qNormalSize.width() == qDefSize.width() )
-++ qRect.addCoords( nIndicatorSize, 0, -nIndicatorSize, 0 );
-++ if ( qNormalSize.height() == qDefSize.height() )
-++ qRect.addCoords( 0, nIndicatorSize, 0, -nIndicatorSize );
-++ }
-++
-++ m_pPushButton->move( qRect.topLeft() );
-++ m_pPushButton->resize( qRect.size() );
-++ m_pPushButton->setDefault( bDefault );
-++
-++ return m_pPushButton;
-++}
-++
-++TQRadioButton *WidgetPainter::radioButton( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pRadioButton )
-++ m_pRadioButton = new TQRadioButton( NULL, "radio_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken themes which do not honor the given size.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-++ {
-++ TQRect qOldRect( qRect );
-++
-++ qRect.setWidth( kapp->style().pixelMetric(
-++ TQStyle::PM_ExclusiveIndicatorWidth, m_pRadioButton ) );
-++ qRect.setHeight( kapp->style().pixelMetric(
-++ TQStyle::PM_ExclusiveIndicatorHeight, m_pRadioButton ) );
-++
-++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-++ ( qOldRect.height() - qRect.height() ) / 2 );
-++ }
-++
-++ m_pRadioButton->move( qRect.topLeft() );
-++ m_pRadioButton->resize( qRect.size() );
-++
-++ return m_pRadioButton;
-++}
-++
-++TQCheckBox *WidgetPainter::checkBox( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pCheckBox )
-++ m_pCheckBox = new TQCheckBox( NULL, "check_box" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken themes which do not honor the given size.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-++ {
-++ TQRect qOldRect( qRect );
-++
-++ qRect.setWidth( kapp->style().pixelMetric(
-++ TQStyle::PM_IndicatorWidth, m_pCheckBox ) );
-++ qRect.setHeight( kapp->style().pixelMetric(
-++ TQStyle::PM_IndicatorHeight, m_pCheckBox ) );
-++
-++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-++ ( qOldRect.height() - qRect.height() ) / 2 );
-++ }
-++
-++ m_pCheckBox->move( qRect.topLeft() );
-++ m_pCheckBox->resize( qRect.size() );
-++
-++ return m_pCheckBox;
-++}
-++
-++TQComboBox *WidgetPainter::comboBox( const Rectangle& rControlRegion,
-++ BOOL bEditable )
-++{
-++ TQComboBox *pComboBox = NULL;
-++ if ( bEditable )
-++ {
-++ if ( !m_pEditableComboBox )
-++ m_pEditableComboBox = new TQComboBox( true, NULL, "combo_box_edit" );
-++ pComboBox = m_pEditableComboBox;
-++ }
-++ else
-++ {
-++ if ( !m_pComboBox )
-++ m_pComboBox = new TQComboBox( false, NULL, "combo_box" );
-++ pComboBox = m_pComboBox;
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ pComboBox->move( qRect.topLeft() );
-++ pComboBox->resize( qRect.size() );
-++
-++ return pComboBox;
-++}
-++
-++TQLineEdit *WidgetPainter::lineEdit( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pLineEdit )
-++ m_pLineEdit = new TQLineEdit( NULL, "line_edit" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pLineEdit->move( qRect.topLeft() );
-++ m_pLineEdit->resize( qRect.size() );
-++
-++ return m_pLineEdit;
-++}
-++
-++TQSpinWidget *WidgetPainter::spinWidget( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pSpinWidget )
-++ {
-++ m_pSpinWidget = new TQSpinWidget( NULL, "spin_widget" );
-++
-++ m_pSpinEdit = new TQLineEdit( NULL, "line_edit_spin" );
-++ m_pSpinWidget->setEditWidget( m_pSpinEdit );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pSpinWidget->move( qRect.topLeft() );
-++ m_pSpinWidget->resize( qRect.size() );
-++ m_pSpinWidget->arrange();
-++
-++ return m_pSpinWidget;
-++}
-++
-++TQTabBar *WidgetPainter::tabBar( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pTabBar )
-++ {
-++ if ( !m_pTabBarParent )
-++ m_pTabBarParent = new TQWidget( NULL, "tab_bar_parent" );
-++
-++ m_pTabBar = new TQTabBar( m_pTabBarParent, "tab_bar" );
-++
-++ m_pTabLeft = new TQTab();
-++ m_pTabMiddle = new TQTab();
-++ m_pTabRight = new TQTab();
-++ m_pTabAlone = new TQTab();
-++
-++ m_pTabBar->addTab( m_pTabLeft );
-++ m_pTabBar->addTab( m_pTabMiddle );
-++ m_pTabBar->addTab( m_pTabRight );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pTabBar->move( qRect.topLeft() );
-++ m_pTabBar->resize( qRect.size() );
-++
-++ m_pTabBar->setShape( TQTabBar::RoundedAbove );
-++
-++ return m_pTabBar;
-++}
-++
-++TQTabWidget *WidgetPainter::tabWidget( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pTabWidget )
-++ m_pTabWidget = new TQTabWidget( NULL, "tab_widget" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++ --qRect.rTop();
-++
-++ m_pTabWidget->move( qRect.topLeft() );
-++ m_pTabWidget->resize( qRect.size() );
-++
-++ return m_pTabWidget;
-++}
-++
-++TQListView *WidgetPainter::listView( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pListView )
-++ m_pListView = new TQListView( NULL, "list_view" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pListView->move( qRect.topLeft() );
-++ m_pListView->resize( qRect.size() );
-++
-++ return m_pListView;
-++}
-++
-++TQScrollBar *WidgetPainter::scrollBar( const Rectangle& rControlRegion,
-++ BOOL bHorizontal, const ImplControlValue& aValue )
-++{
-++ if ( !m_pScrollBar )
-++ {
-++ m_pScrollBar = new TQScrollBar( NULL, "scroll_bar" );
-++ m_pScrollBar->setTracking( false );
-++ m_pScrollBar->setLineStep( 1 );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pScrollBar->move( qRect.topLeft() );
-++ m_pScrollBar->resize( qRect.size() );
-++ m_pScrollBar->setOrientation( bHorizontal? Qt::Horizontal: Qt::Vertical );
-++
-++ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-++ if ( pValue )
-++ {
-++ m_pScrollBar->setMinValue( pValue->mnMin );
-++ m_pScrollBar->setMaxValue( pValue->mnMax - pValue->mnVisibleSize );
-++ m_pScrollBar->setValue( pValue->mnCur );
-++ m_pScrollBar->setPageStep( pValue->mnVisibleSize );
-++ }
-++
-++ return m_pScrollBar;
-++}
-++
-++TQToolBar *WidgetPainter::toolBar( const Rectangle& rControlRegion, BOOL bHorizontal )
-++{
-++ if ( !m_pMainWindow )
-++ m_pMainWindow = new TQMainWindow( NULL, "main_window" );
-++
-++ TQToolBar *pToolBar;
-++ if ( bHorizontal )
-++ {
-++ if ( !m_pToolBarHoriz )
-++ {
-++ m_pToolBarHoriz = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-++ m_pMainWindow->moveDockWindow( m_pToolBarHoriz, Qt::DockTop );
-++ }
-++ pToolBar = m_pToolBarHoriz;
-++ }
-++ else
-++ {
-++ if ( !m_pToolBarVert )
-++ {
-++ m_pToolBarVert = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-++ m_pMainWindow->moveDockWindow( m_pToolBarVert, Qt::DockLeft );
-++ }
-++ pToolBar = m_pToolBarVert;
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ pToolBar->move( qRect.topLeft() );
-++ pToolBar->resize( qRect.size() );
-++
-++ return pToolBar;
-++}
-++
-++TQToolButton *WidgetPainter::toolButton( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pToolButton )
-++ m_pToolButton = new TQToolButton( NULL, "tool_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pToolButton->move( qRect.topLeft() );
-++ m_pToolButton->resize( qRect.size() );
-++
-++ return m_pToolButton;
-++}
-++
-++TQMenuBar *WidgetPainter::menuBar( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pMenuBar )
-++ {
-++ m_pMenuBar = new TQMenuBar( NULL, "menu_bar" );
-++
-++ m_nMenuBarEnabledItem = m_pMenuBar->insertItem( "" );
-++ m_nMenuBarDisabledItem = m_pMenuBar->insertItem( "" );
-++
-++ m_pMenuBar->setItemEnabled( m_nMenuBarEnabledItem, true );
-++ m_pMenuBar->setItemEnabled( m_nMenuBarDisabledItem, false );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pMenuBar->move( qRect.topLeft() );
-++ m_pMenuBar->resize( qRect.size() );
-++
-++ return m_pMenuBar;
-++}
-++
-++TQPopupMenu *WidgetPainter::popupMenu( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pPopupMenu )
-++ {
-++ m_pPopupMenu = new TQPopupMenu( NULL, "popup_menu" );
-++
-++ m_nPopupMenuEnabledItem = m_pPopupMenu->insertItem( "" );
-++ m_nPopupMenuDisabledItem = m_pPopupMenu->insertItem( "" );
-++
-++ m_pPopupMenu->setItemEnabled( m_nPopupMenuEnabledItem, true );
-++ m_pPopupMenu->setItemEnabled( m_nPopupMenuDisabledItem, false );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pPopupMenu->move( qRect.topLeft() );
-++ m_pPopupMenu->resize( qRect.size() );
-++
-++ return m_pPopupMenu;
-++}
-++
-++TQProgressBar *WidgetPainter::progressBar( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pProgressBar )
-++ m_pProgressBar = new TQProgressBar( NULL, "progress_bar" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pProgressBar->move( qRect.topLeft() );
-++ m_pProgressBar->resize( qRect.size() );
-++
-++ return m_pProgressBar;
-++}
-++
-++TQStyle::SFlags WidgetPainter::vclStateValue2SFlags( ControlState nState,
-++ const ImplControlValue& aValue )
-++{
-++ TQStyle::SFlags nStyle =
-++ ( (nState & CTRL_STATE_DEFAULT)? TQStyle::Style_ButtonDefault: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_ENABLED)? TQStyle::Style_Enabled: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_FOCUSED)? TQStyle::Style_HasFocus: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_PRESSED)? TQStyle::Style_Down: TQStyle::Style_Raised ) |
-++ ( (nState & CTRL_STATE_SELECTED)? TQStyle::Style_Selected : TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_ROLLOVER)? TQStyle::Style_MouseOver: TQStyle::Style_Default );
-++ //TODO ( (nState & CTRL_STATE_HIDDEN)? TQStyle::Style_: TQStyle::Style_Default ) |
-++
-++ switch ( aValue.getTristateVal() )
-++ {
-++ case BUTTONVALUE_ON: nStyle |= TQStyle::Style_On; break;
-++ case BUTTONVALUE_OFF: nStyle |= TQStyle::Style_Off; break;
-++ case BUTTONVALUE_MIXED: nStyle |= TQStyle::Style_NoChange; break;
-++ default: break;
-++ }
-++
-++ return nStyle;
-++}
-++
-++TQRect WidgetPainter::region2TQRect( const Rectangle& rControlRegion )
-++{
-++ return TQRect( TQPoint( rControlRegion.Left(), rControlRegion.Top() ),
-++ TQPoint( rControlRegion.Right(), rControlRegion.Bottom() ) );
-++}
-++
-++/** Instance of WidgetPainter.
-++
-++ It is used to paint the widgets requested by NWF.
-++*/
-++static WidgetPainter *pWidgetPainter;
-++
-++class TDESalGraphics : public X11SalGraphics
-++{
-++ public:
-++ TDESalGraphics() {}
-++ virtual ~TDESalGraphics() {}
-++ virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
-++ virtual BOOL hitTestNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, const Point& aPos,
-++ BOOL& rIsInside );
-++ virtual BOOL drawNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption );
-++ virtual BOOL drawNativeControlText( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption );
-++ virtual BOOL getNativeControlRegion( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption,
-++ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion );
-++};
-++
-++/** What widgets can be drawn the native way.
-++
-++ @param nType
-++ Type of the widget.
-++
-++ @param nPart
-++ Specification of the widget's part if it consists of more than one.
-++
-++ @return TRUE if the platform supports native drawing of the widget nType
-++ defined by nPart.
-++*/
-++BOOL TDESalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart )
-++{
-++ return
-++ ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_WINDOW || nPart == HAS_BACKGROUND_TEXTURE ) ) ||
-++ ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ // no CTRL_SPINBUTTONS for TDE
-++ ( (nType == CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ // no CTRL_TAB_BODY for TDE
-++ ( (nType == CTRL_SCROLLBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) ) ||
-++ ( (nType == CTRL_SCROLLBAR) && (nPart == HAS_THREE_BUTTONS) ) || // TODO small optimization is possible here: return this only if the style really has 3 buttons
-++ // CTRL_GROUPBOX not supported
-++ // CTRL_FIXEDLINE not supported
-++ // CTRL_FIXEDBORDER not supported
-++ ( (nType == CTRL_TOOLBAR) && (nPart == PART_ENTIRE_CONTROL ||
-++ nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT ||
-++ nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT ||
-++ nPart == PART_BUTTON) ) ||
-++ ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-++ ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-++ ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-++ ;
-++}
-++
-++
-++/** Test whether the position is in the native widget.
-++
-++ If the return value is TRUE, bIsInside contains information whether
-++ aPos was or was not inside the native widget specified by the
-++ nType/nPart combination.
-++*/
-++BOOL TDESalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, const Point& rPos,
-++ BOOL& rIsInside )
-++{
-++ if ( nType == CTRL_SCROLLBAR )
-++ {
-++ // make position relative to rControlRegion
-++ Point aPos = rPos - rControlRegion.TopLeft();
-++ rIsInside = FALSE;
-++
-++ BOOL bHorizontal = ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT );
-++
-++ TQScrollBar *pScrollBar = pWidgetPainter->scrollBar( rControlRegion,
-++ bHorizontal, ImplControlValue() );
-++ TQRect qRectSubLine = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubLine );
-++ TQRect qRectAddLine = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarAddLine );
-++
-++ // There are 2 buttons on the right/bottom side of the scrollbar
-++ BOOL bTwoSubButtons = FALSE;
-++
-++ // It is a Platinum style scroll bar
-++ BOOL bPlatinumStyle = FALSE;
-++
-++ // Workaround for Platinum and 3 button style scroll bars.
-++ // It makes the right/down button bigger.
-++ if ( bHorizontal )
-++ {
-++ qRectAddLine.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar,
-++ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-++ if ( qRectAddLine.width() > qRectSubLine.width() )
-++ bTwoSubButtons = TRUE;
-++ if ( qRectSubLine.left() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).left() )
-++ bPlatinumStyle = TRUE;
-++ }
-++ else
-++ {
-++ qRectAddLine.setTop( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar,
-++ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-++ if ( qRectAddLine.height() > qRectSubLine.height() )
-++ bTwoSubButtons = TRUE;
-++ if ( qRectSubLine.top() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).top() )
-++ bPlatinumStyle = TRUE;
-++ }
-++
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_LEFT:
-++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-++ rIsInside = TRUE;
-++ else if ( bTwoSubButtons )
-++ {
-++ qRectAddLine.setWidth( qRectAddLine.width() / 2 );
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ }
-++ break;
-++
-++ case PART_BUTTON_UP:
-++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-++ rIsInside = TRUE;
-++ else if ( bTwoSubButtons )
-++ {
-++ qRectAddLine.setHeight( qRectAddLine.height() / 2 );
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ }
-++ break;
-++
-++ case PART_BUTTON_RIGHT:
-++ if ( bTwoSubButtons )
-++ qRectAddLine.setLeft( qRectAddLine.left() + qRectAddLine.width() / 2 );
-++
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ break;
-++
-++ case PART_BUTTON_DOWN:
-++ if ( bTwoSubButtons )
-++ qRectAddLine.setTop( qRectAddLine.top() + qRectAddLine.height() / 2 );
-++
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ break;
-++
-++ // cases PART_TRACK_HORZ_AREA and PART_TRACK_VERT_AREA
-++ default:
-++ return FALSE;
-++ }
-++
-++ return TRUE;
-++ }
-++
-++ return FALSE;
-++}
-++
-++
-++/** Draw the requested control described by nPart/nState.
-++
-++ @param rControlRegion
-++ The bounding region of the complete control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string).
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::drawNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& )
-++{
-++ BOOL bReturn = FALSE;
-++
-++ Display *dpy = GetXDisplay();
-++ XLIB_Window drawable = GetDrawable();
-++ GC gc = SelectPen(); //SelectFont(); // GC with current clipping region set
-++
-++ if ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->pushButton( rControlRegion, (nState & CTRL_STATE_DEFAULT) ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->radioButton( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->checkBox( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->comboBox( rControlRegion, TRUE ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->lineEdit( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->comboBox( rControlRegion, FALSE ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_WINDOW) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->listView( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->spinWidget( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType==CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->tabBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType==CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->tabWidget( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_SCROLLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->scrollBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ, aValue ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT || nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->toolBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_THUMB_VERT ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_BUTTON) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->toolButton( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->menuBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->popupMenu( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->progressBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++
-++ return bReturn;
-++}
-++
-++
-++/** Draw text on the widget.
-++
-++ OPTIONAL. Draws the requested text for the control described by nPart/nState.
-++ Used if text is not drawn by DrawNativeControl().
-++
-++ @param rControlRegion
-++ The bounding region of the complete control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string)
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::drawNativeControlText( ControlType, ControlPart,
-++ const Rectangle&, ControlState,
-++ const ImplControlValue&,
-++ const OUString& )
-++{
-++ return FALSE;
-++}
-++
-++/** Check if the bounding regions match.
-++
-++ If the return value is TRUE, rNativeBoundingRegion
-++ contains the true bounding region covered by the control
-++ including any adornment, while rNativeContentRegion contains the area
-++ within the control that can be safely drawn into without drawing over
-++ the borders of the control.
-++
-++ @param rControlRegion
-++ The bounding region of the control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string)
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue&,
-++ const OUString&,
-++ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion )
-++{
-++ BOOL bReturn = FALSE;
-++ TQRect qBoundingRect = WidgetPainter::region2TQRect( rControlRegion );
-++ TQRect qRect;
-++
-++ TQWidget *pWidget = NULL;
-++ switch ( nType )
-++ {
-++ // Metrics of the push button
-++ case CTRL_PUSHBUTTON:
-++ pWidget = pWidgetPainter->pushButton( rControlRegion, ( nState & CTRL_STATE_DEFAULT ) );
-++
-++ switch ( nPart )
-++ {
-++ case PART_ENTIRE_CONTROL:
-++ qRect = qBoundingRect;
-++
-++ if ( nState & CTRL_STATE_DEFAULT )
-++ {
-++ int nIndicatorSize = kapp->style().pixelMetric(
-++ TQStyle::PM_ButtonDefaultIndicator, pWidget );
-++ qBoundingRect.addCoords( -nIndicatorSize, -nIndicatorSize,
-++ nIndicatorSize, nIndicatorSize );
-++ bReturn = TRUE;
-++ }
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the radio button
-++ case CTRL_RADIOBUTTON:
-++ pWidget = pWidgetPainter->radioButton( rControlRegion );
-++
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorWidth, pWidget ) );
-++ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorHeight, pWidget ) );
-++
-++ bReturn = TRUE;
-++ }
-++ break;
-++
-++ // Metrics of the check box
-++ case CTRL_CHECKBOX:
-++ pWidget = pWidgetPainter->checkBox( rControlRegion );
-++
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_IndicatorWidth, pWidget ) );
-++ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_IndicatorHeight, pWidget ) );
-++
-++ bReturn = TRUE;
-++ }
-++ break;
-++
-++ // Metrics of the combo box
-++ case CTRL_COMBOBOX:
-++ case CTRL_LISTBOX:
-++ pWidget = pWidgetPainter->comboBox( rControlRegion, ( nType == CTRL_COMBOBOX ) );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxArrow );
-++ qRect.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget,
-++ TQStyle::SC_ComboBoxEditField ).right() + 1 );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++
-++ case PART_SUB_EDIT:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxEditField );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the spin box
-++ case CTRL_SPINBOX:
-++ pWidget = pWidgetPainter->spinWidget( rControlRegion );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_UP:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetUp );
-++ bReturn = TRUE;
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ break;
-++
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetDown );
-++ bReturn = TRUE;
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ break;
-++
-++ case PART_SUB_EDIT:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetEditField );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the scroll bar
-++ case CTRL_SCROLLBAR:
-++ pWidget = pWidgetPainter->scrollBar( rControlRegion,
-++ ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT ),
-++ ImplControlValue() );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_LEFT:
-++ case PART_BUTTON_UP:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarSubLine );
-++
-++ // Workaround for Platinum style scroll bars. It makes the
-++ // left/up button invisible.
-++ if ( nPart == PART_BUTTON_LEFT )
-++ {
-++ if ( qRect.left() > kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarSubPage ).left() )
-++ {
-++ qRect.setLeft( 0 );
-++ qRect.setRight( 0 );
-++ }
-++ }
-++ else
-++ {
-++ if ( qRect.top() > kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarSubPage ).top() )
-++ {
-++ qRect.setTop( 0 );
-++ qRect.setBottom( 0 );
-++ }
-++ }
-++
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++
-++ bReturn = TRUE;
-++ break;
-++
-++ case PART_BUTTON_RIGHT:
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarAddLine );
-++
-++ // Workaround for Platinum and 3 button style scroll bars.
-++ // It makes the right/down button bigger.
-++ if ( nPart == PART_BUTTON_RIGHT )
-++ qRect.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-++ else
-++ qRect.setTop( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-++
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++ }
-++
-++ // Fill rNativeBoundingRegion and rNativeContentRegion
-++ if ( bReturn )
-++ {
-++ // Bounding region
-++ Point aBPoint( qBoundingRect.x(), qBoundingRect.y() );
-++ Size aBSize( qBoundingRect.width(), qBoundingRect.height() );
-++ rNativeBoundingRegion = Rectangle( aBPoint, aBSize );
-++
-++ // Region of the content
-++ Point aPoint( qRect.x(), qRect.y() );
-++ Size aSize( qRect.width(), qRect.height() );
-++ rNativeContentRegion = Rectangle( aPoint, aSize );
-++ }
-++
-++ return bReturn;
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalFrame implementation
-++// -----------------------------------------------------------------------
-++
-++TDESalFrame::TDESalFrame( SalFrame* pParent, ULONG nStyle ) :
-++ X11SalFrame( pParent, nStyle )
-++{
-++}
-++
-++void TDESalFrame::Show( BOOL bVisible, BOOL bNoActivate )
-++{
-++ if ( !GetParent() && ! (GetStyle() & SAL_FRAME_STYLE_INTRO) )
-++ {
-++ TDEXLib* pXLib = static_cast<TDEXLib*>(GetDisplay()->GetXLib());
-++ pXLib->doStartup();
-++ }
-++ X11SalFrame::Show( bVisible, bNoActivate );
-++}
-++
-++/** Helper function to convert colors.
-++*/
-++static Color toColor( const TQColor &rColor )
-++{
-++ return Color( rColor.red(), rColor.green(), rColor.blue() );
-++}
-++
-++/** Helper function to read untranslated text entry from KConfig configuration repository.
-++*/
-++static OUString readEntryUntranslated( KConfig *pConfig, const char *pKey )
-++{
-++ return OUString::createFromAscii( pConfig->readEntryUntranslated( pKey ).ascii() );
-++}
-++
-++/** Helper function to read color from KConfig configuration repository.
-++*/
-++static Color readColor( KConfig *pConfig, const char *pKey )
-++{
-++ return toColor( pConfig->readColorEntry( pKey ) );
-++}
-++
-++/** Helper function to add information to Font from TQFont.
-++
-++ Mostly grabbed from the Gtk+ vclplug (salnativewidgets-gtk.cxx).
-++*/
-++static Font toFont( const TQFont &rTQFont, const ::com::sun::star::lang::Locale& rLocale )
-++{
-++ psp::FastPrintFontInfo aInfo;
-++ TQFontInfo qFontInfo( rTQFont );
-++
-++ // set family name
-++ aInfo.m_aFamilyName = String( rTQFont.family().utf8(), RTL_TEXTENCODING_UTF8 );
-++
-++ // set italic
-++ aInfo.m_eItalic = ( qFontInfo.italic()? psp::italic::Italic: psp::italic::Upright );
-++
-++ // set weight
-++ int nWeight = qFontInfo.weight();
-++ if ( nWeight <= TQFont::Light )
-++ aInfo.m_eWeight = psp::weight::Light;
-++ else if ( nWeight <= TQFont::Normal )
-++ aInfo.m_eWeight = psp::weight::Normal;
-++ else if ( nWeight <= TQFont::DemiBold )
-++ aInfo.m_eWeight = psp::weight::SemiBold;
-++ else if ( nWeight <= TQFont::Bold )
-++ aInfo.m_eWeight = psp::weight::Bold;
-++ else
-++ aInfo.m_eWeight = psp::weight::UltraBold;
-++
-++ // set width
-++ int nStretch = rTQFont.stretch();
-++ if ( nStretch <= TQFont::UltraCondensed )
-++ aInfo.m_eWidth = psp::width::UltraCondensed;
-++ else if ( nStretch <= TQFont::ExtraCondensed )
-++ aInfo.m_eWidth = psp::width::ExtraCondensed;
-++ else if ( nStretch <= TQFont::Condensed )
-++ aInfo.m_eWidth = psp::width::Condensed;
-++ else if ( nStretch <= TQFont::SemiCondensed )
-++ aInfo.m_eWidth = psp::width::SemiCondensed;
-++ else if ( nStretch <= TQFont::Unstretched )
-++ aInfo.m_eWidth = psp::width::Normal;
-++ else if ( nStretch <= TQFont::SemiExpanded )
-++ aInfo.m_eWidth = psp::width::SemiExpanded;
-++ else if ( nStretch <= TQFont::Expanded )
-++ aInfo.m_eWidth = psp::width::Expanded;
-++ else if ( nStretch <= TQFont::ExtraExpanded )
-++ aInfo.m_eWidth = psp::width::ExtraExpanded;
-++ else
-++ aInfo.m_eWidth = psp::width::UltraExpanded;
-++
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "font name BEFORE system match: \"%s\"\n", OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-++#endif
-++
-++ // match font to e.g. resolve "Sans"
-++ psp::PrintFontManager::get().matchFont( aInfo, rLocale );
-++
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "font match %s, name AFTER: \"%s\"\n",
-++ aInfo.m_nID != 0 ? "succeeded" : "failed",
-++ OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-++#endif
-++
-++ // font height
-++ int nPointHeight = qFontInfo.pointSize();
-++ if ( nPointHeight <= 0 )
-++ nPointHeight = rTQFont.pointSize();
-++
-++ // Create the font
-++ Font aFont( aInfo.m_aFamilyName, Size( 0, nPointHeight ) );
-++ if( aInfo.m_eWeight != psp::weight::Unknown )
-++ aFont.SetWeight( PspGraphics::ToFontWeight( aInfo.m_eWeight ) );
-++ if( aInfo.m_eWidth != psp::width::Unknown )
-++ aFont.SetWidthType( PspGraphics::ToFontWidth( aInfo.m_eWidth ) );
-++ if( aInfo.m_eItalic != psp::italic::Unknown )
-++ aFont.SetItalic( PspGraphics::ToFontItalic( aInfo.m_eItalic ) );
-++ if( aInfo.m_ePitch != psp::pitch::Unknown )
-++ aFont.SetPitch( PspGraphics::ToFontPitch( aInfo.m_ePitch ) );
-++
-++ return aFont;
-++}
-++
-++/** Implementation of TDE integration's main method.
-++*/
-++void TDESalFrame::UpdateSettings( AllSettings& rSettings )
-++{
-++ StyleSettings aStyleSettings( rSettings.GetStyleSettings() );
-++ bool bSetTitleFont = false;
-++
-++ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_LARGE );
-++
-++ // WM settings
-++ KConfig *pConfig = KGlobal::config();
-++ if ( pConfig )
-++ {
-++ pConfig->setGroup( "WM" );
-++ const char *pKey;
-++
-++ pKey = "activeBackground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "activeBlend";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveColor2( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveBackground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveBlend";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveColor2( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveForeground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveTextColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "activeForeground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveTextColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "titleFont";
-++ if ( pConfig->hasKey( pKey ) )
-++ {
-++ Font aFont = toFont( pConfig->readFontEntry( pKey ), rSettings.GetUILocale() );
-++ aStyleSettings.SetTitleFont( aFont );
-++ bSetTitleFont = true;
-++ }
-++
-++ pConfig->setGroup( "Icons" );
-++
-++ pKey = "Theme";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetPreferredSymbolsStyleName( readEntryUntranslated( pConfig, pKey ) );
-++ }
-++
-++ // General settings
-++ TQColorGroup qColorGroup = kapp->palette().active();
-++
-++ Color aFore = toColor( qColorGroup.foreground() );
-++ Color aBack = toColor( qColorGroup.background() );
-++ Color aText = toColor( qColorGroup.text() );
-++ Color aBase = toColor( qColorGroup.base() );
-++
-++ // Foreground
-++ aStyleSettings.SetRadioCheckTextColor( aFore );
-++ aStyleSettings.SetLabelTextColor( aFore );
-++ aStyleSettings.SetInfoTextColor( aFore );
-++ aStyleSettings.SetDialogTextColor( aFore );
-++ aStyleSettings.SetGroupTextColor( aFore );
-++
-++ // Text
-++ aStyleSettings.SetFieldTextColor( aText );
-++ aStyleSettings.SetFieldRolloverTextColor( aText );
-++ aStyleSettings.SetWindowTextColor( aText );
-++ aStyleSettings.SetHelpTextColor( aText );
-++
-++ // Base
-++ aStyleSettings.SetFieldColor( aBase );
-++ aStyleSettings.SetHelpColor( aBase );
-++ aStyleSettings.SetWindowColor( aBase );
-++ aStyleSettings.SetActiveTabColor( aBase );
-++
-++ // Buttons
-++ aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
-++ aStyleSettings.SetButtonRolloverTextColor( toColor( qColorGroup.buttonText() ) );
-++
-++ // Disable color
-++ aStyleSettings.SetDisableColor( toColor( qColorGroup.mid() ) );
-++
-++ // Workspace
-++ aStyleSettings.SetWorkspaceColor( toColor( qColorGroup.mid() ) );
-++
-++ // Background
-++ aStyleSettings.Set3DColors( aBack );
-++ aStyleSettings.SetFaceColor( aBack );
-++ aStyleSettings.SetInactiveTabColor( aBack );
-++ aStyleSettings.SetDialogColor( aBack );
-++ if( aBack == COL_LIGHTGRAY )
-++ aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );
-++ else
-++ {
-++ Color aColor2 = aStyleSettings.GetLightColor();
-++ aStyleSettings.
-++ SetCheckedColor( Color( (BYTE)(((USHORT)aBack.GetRed()+(USHORT)aColor2.GetRed())/2),
-++ (BYTE)(((USHORT)aBack.GetGreen()+(USHORT)aColor2.GetGreen())/2),
-++ (BYTE)(((USHORT)aBack.GetBlue()+(USHORT)aColor2.GetBlue())/2)
-++ ) );
-++ }
-++
-++ // Selection
-++ aStyleSettings.SetHighlightColor( toColor( qColorGroup.highlight() ) );
-++ aStyleSettings.SetHighlightTextColor( toColor( qColorGroup.highlightedText() ) );
-++
-++ // Font
-++ Font aFont = toFont( kapp->font(), rSettings.GetUILocale() );
-++
-++ aStyleSettings.SetAppFont( aFont );
-++ aStyleSettings.SetHelpFont( aFont );
-++ aStyleSettings.SetMenuFont( aFont ); // will be changed according to pMenuBar
-++ aStyleSettings.SetToolFont( aFont ); // will be changed according to pToolBar
-++ aStyleSettings.SetLabelFont( aFont );
-++ aStyleSettings.SetInfoFont( aFont );
-++ aStyleSettings.SetRadioCheckFont( aFont );
-++ aStyleSettings.SetPushButtonFont( aFont );
-++ aStyleSettings.SetFieldFont( aFont );
-++ aStyleSettings.SetIconFont( aFont );
-++ aStyleSettings.SetGroupFont( aFont );
-++
-++ aFont.SetWeight( WEIGHT_BOLD );
-++ if( !bSetTitleFont )
-++ aStyleSettings.SetTitleFont( aFont );
-++ aStyleSettings.SetFloatTitleFont( aFont );
-++
-++ int flash_time = TQApplication::cursorFlashTime();
-++ aStyleSettings.SetCursorBlinkTime( flash_time != 0 ? flash_time/2 : STYLE_CURSOR_NOBLINKTIME );
-++
-++ KMainWindow qMainWindow;
-++ qMainWindow.createGUI( "/dev/null" ); // hack
-++
-++ // Menu
-++ aStyleSettings.SetSkipDisabledInMenus( TRUE );
-++ KMenuBar *pMenuBar = qMainWindow.menuBar();
-++ if ( pMenuBar )
-++ {
-++ // Color
-++ TQColorGroup qMenuCG = pMenuBar->colorGroup();
-++
-++ // Menu text and background color, theme specific
-++ Color aMenuFore = toColor( qMenuCG.foreground() );
-++ Color aMenuBack = toColor( qMenuCG.background() );
-++ if ( kapp->style().inherits( "LightStyleV2" ) ||
-++ kapp->style().inherits( "LightStyleV3" ) ||
-++ ( kapp->style().inherits( "QMotifStyle" ) && !kapp->style().inherits( "QSGIStyle" ) ) ||
-++ kapp->style().inherits( "QWindowsStyle" ) )
-++ {
-++ aMenuFore = toColor( qMenuCG.buttonText() );
-++ aMenuBack = toColor( qMenuCG.button() );
-++ }
-++
-++ aStyleSettings.SetMenuTextColor( aMenuFore );
-++ aStyleSettings.SetMenuBarTextColor( aMenuFore );
-++ aStyleSettings.SetMenuColor( aMenuBack );
-++ aStyleSettings.SetMenuBarColor( aMenuBack );
-++
-++ aStyleSettings.SetMenuHighlightColor( toColor ( qMenuCG.highlight() ) );
-++
-++ // Menu items higlight text color, theme specific
-++ if ( kapp->style().inherits( "HighContrastStyle" ) ||
-++ kapp->style().inherits( "KeramikStyle" ) ||
-++ kapp->style().inherits( "QWindowsStyle" ) ||
-++ kapp->style().inherits( "ThinKeramikStyle" ) ||
-++ kapp->style().inherits( "PlastikStyle" ) )
-++ {
-++ aStyleSettings.SetMenuHighlightTextColor( toColor ( qMenuCG.highlightedText() ) );
-++ }
-++ else
-++ aStyleSettings.SetMenuHighlightTextColor( aMenuFore );
-++
-++ // set special menubar higlight text color
-++ if ( kapp->style().inherits( "HighContrastStyle" ) )
-++ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = toColor( qMenuCG.highlightedText() );
-++ else
-++ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = aMenuFore;
-++
-++ // Font
-++ aFont = toFont( pMenuBar->font(), rSettings.GetUILocale() );
-++ aStyleSettings.SetMenuFont( aFont );
-++ }
-++
-++ // Tool bar
-++ KToolBar *pToolBar = qMainWindow.toolBar();
-++ if ( pToolBar )
-++ {
-++ aFont = toFont( pToolBar->font(), rSettings.GetUILocale() );
-++ aStyleSettings.SetToolFont( aFont );
-++ }
-++
-++ // Scroll bar size
-++ aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( TQStyle::PM_ScrollBarExtent ) );
-++
-++ rSettings.SetStyleSettings( aStyleSettings );
-++}
-++
-++SalGraphics* TDESalFrame::GetGraphics()
-++{
-++ if( GetWindow() )
-++ {
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( ! m_aGraphics[i].bInUse )
-++ {
-++ m_aGraphics[i].bInUse = true;
-++ if( ! m_aGraphics[i].pGraphics )
-++ {
-++ m_aGraphics[i].pGraphics = new TDESalGraphics();
-++ m_aGraphics[i].pGraphics->Init( this, GetWindow(), GetScreenNumber() );
-++ }
-++ return m_aGraphics[i].pGraphics;
-++ }
-++ }
-++ }
-++
-++ return NULL;
-++}
-++
-++void TDESalFrame::ReleaseGraphics( SalGraphics *pGraphics )
-++{
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( m_aGraphics[i].pGraphics == pGraphics )
-++ {
-++ m_aGraphics[i].bInUse = false;
-++ break;
-++ }
-++ }
-++}
-++
-++void TDESalFrame::updateGraphics( bool bClear )
-++{
-++ Drawable aDrawable = bClear ? None : GetWindow();
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( m_aGraphics[i].bInUse )
-++ m_aGraphics[i].pGraphics->SetDrawable( aDrawable, GetScreenNumber() );
-++ }
-++}
-++
-++TDESalFrame::~TDESalFrame()
-++{
-++}
-++
-++TDESalFrame::GraphicsHolder::~GraphicsHolder()
-++{
-++ delete pGraphics;
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalInstance implementation
-++// -----------------------------------------------------------------------
-++
-++SalFrame *
-++TDESalInstance::CreateFrame( SalFrame *pParent, ULONG nStyle )
-++{
-++ return new TDESalFrame( pParent, nStyle );
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalData pieces
-++// -----------------------------------------------------------------------
-++
-++// Create the widget painter so we have some control over
-++// the destruction sequence, so Qt doesn't die in action.
-++
-++void TDEData::initNWF()
-++{
-++ ImplSVData *pSVData = ImplGetSVData();
-++ // draw toolbars on separate lines
-++ pSVData->maNWFData.mbDockingAreaSeparateTB = true;
-++
-++ pWidgetPainter = new WidgetPainter();
-++}
-++
-++void TDEData::deInitNWF()
-++{
-++ delete pWidgetPainter;
-++ pWidgetPainter = NULL;
-++
-++ // We have to destroy the style early
-++ kapp->setStyle( NULL );
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN vcl/unx/tde/tdedata.cxx vcl/unx/tde/tdedata.cxx
-+--- vcl/unx/tde/tdedata.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/tdedata.cxx 2011-08-18 20:14:26.186519004 -0500
-+@@ -0,0 +1,274 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_vcl.hxx"
-++
-++#define _SV_SALDATA_CXX
-++#include <shell/tde_headers.h>
-++
-++#include <unistd.h>
-++#include <fcntl.h>
-++
-++#include <stdio.h>
-++#include <string.h>
-++#include <stdlib.h>
-++#include <limits.h>
-++#include <errno.h>
-++#include <poll.h>
-++#ifdef FREEBSD
-++#include <sys/types.h>
-++#include <sys/time.h>
-++#include <unistd.h>
-++#endif
-++#include <plugins/tde/tdedata.hxx>
-++#include <osl/thread.h>
-++#include <osl/process.h>
-++#include <osl/module.h>
-++#include <osl/mutex.hxx>
-++
-++#include <tools/debug.hxx>
-++#include "i18n_im.hxx"
-++#include "i18n_xkb.hxx"
-++
-++/* #i59042# override KApplications method for session management
-++ * since it will interfere badly with our own.
-++ */
-++class VCLTDEApplication : public KApplication
-++{
-++ public:
-++ VCLTDEApplication() : KApplication() {}
-++
-++ virtual void commitData(QSessionManager &sm);
-++};
-++
-++void VCLTDEApplication::commitData(QSessionManager&)
-++{
-++}
-++
-++/***************************************************************************
-++ * class SalTDEDisplay *
-++ ***************************************************************************/
-++
-++SalTDEDisplay::SalTDEDisplay( Display* pDisp )
-++ : SalX11Display( pDisp )
-++{
-++}
-++
-++SalTDEDisplay::~SalTDEDisplay()
-++{
-++ // in case never a frame opened
-++ static_cast<TDEXLib*>(GetXLib())->doStartup();
-++ // clean up own members
-++ doDestruct();
-++ // prevent SalDisplay from closing KApplication's display
-++ pDisp_ = NULL;
-++}
-++
-++/***************************************************************************
-++ * class TDEXLib *
-++ ***************************************************************************/
-++
-++TDEXLib::~TDEXLib()
-++{
-++ // #158056# on 64 bit linux using libXRandr.so.2 will crash in
-++ // XCloseDisplay when freeing extension data
-++ // no known work around, therefor currently leak. Hopefully
-++ // this does not make problems since we're shutting down anyway
-++ // should we ever get a real tde plugin that uses the TDE event loop
-++ // we should use tde's method to signal screen changes similar
-++ // to the gtk plugin
-++ #if ! defined USE_RANDR || ! (defined LINUX && defined X86_64)
-++ // properly deinitialize KApplication
-++ delete (VCLTDEApplication*)m_pApplication;
-++ #endif
-++ // free the faked cmdline arguments no longer needed by KApplication
-++ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-++ free( m_pFreeCmdLineArgs[i] );
-++ delete [] m_pFreeCmdLineArgs;
-++ delete [] m_pAppCmdLineArgs;
-++}
-++
-++void TDEXLib::Init()
-++{
-++ SalI18N_InputMethod* pInputMethod = new SalI18N_InputMethod;
-++ pInputMethod->SetLocale();
-++ XrmInitialize();
-++
-++ KAboutData *kAboutData = new KAboutData( "LibreOffice",
-++ I18N_NOOP( "LibreOffice" ),
-++ "1.1.0",
-++ I18N_NOOP( "LibreOffice with TDE Native Widget Support." ),
-++ KAboutData::License_LGPL,
-++ "(c) 2003, 2004 Novell, Inc",
-++ I18N_NOOP( "LibreOffice is an office suite.\n" ),
-++ "http://libreoffice.org",
-++ "libreoffice@lists.freedesktop.org");
-++ kAboutData->addAuthor( "Jan Holesovsky",
-++ I18N_NOOP( "Original author and maintainer of the TDE NWF." ),
-++ "kendy@artax.karlin.mff.cuni.cz",
-++ "http://artax.karlin.mff.cuni.cz/~kendy" );
-++
-++ m_nFakeCmdLineArgs = 1;
-++ USHORT nIdx;
-++ int nParams = osl_getCommandArgCount();
-++ rtl::OString aDisplay;
-++ rtl::OUString aParam, aBin;
-++
-++ for ( nIdx = 0; nIdx < nParams; ++nIdx )
-++ {
-++ osl_getCommandArg( nIdx, &aParam.pData );
-++ if ( !m_pFreeCmdLineArgs && aParam.equalsAscii( "-display" ) && nIdx + 1 < nParams )
-++ {
-++ osl_getCommandArg( nIdx + 1, &aParam.pData );
-++ aDisplay = rtl::OUStringToOString( aParam, osl_getThreadTextEncoding() );
-++
-++ m_nFakeCmdLineArgs = 3;
-++ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++ m_pFreeCmdLineArgs[ 1 ] = strdup( "-display" );
-++ m_pFreeCmdLineArgs[ 2 ] = strdup( aDisplay.getStr() );
-++ }
-++ }
-++ if ( !m_pFreeCmdLineArgs )
-++ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++
-++ osl_getExecutableFile( &aParam.pData );
-++ osl_getSystemPathFromFileURL( aParam.pData, &aBin.pData );
-++ rtl::OString aExec = rtl::OUStringToOString( aBin, osl_getThreadTextEncoding() );
-++ m_pFreeCmdLineArgs[0] = strdup( aExec.getStr() );
-++
-++ // make a copy of the string list for freeing it since
-++ // KApplication manipulates the pointers inside the argument vector
-++ // note: KApplication bad !
-++ m_pAppCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-++ m_pAppCmdLineArgs[i] = m_pFreeCmdLineArgs[i];
-++
-++ KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData );
-++
-++ KApplication::disableAutoDcopRegistration();
-++ m_pApplication = new VCLTDEApplication();
-++ kapp->disableSessionManagement();
-++
-++ Display* pDisp = TQPaintDevice::x11AppDisplay();
-++
-++ SalDisplay *pSalDisplay = new SalTDEDisplay( pDisp );
-++
-++ pInputMethod->CreateMethod( pDisp );
-++ pInputMethod->AddConnectionWatch( pDisp, (void*)this );
-++ pSalDisplay->SetInputMethod( pInputMethod );
-++
-++ PushXErrorLevel( true );
-++ SalI18N_KeyboardExtension *pKbdExtension = new SalI18N_KeyboardExtension( pDisp );
-++ XSync( pDisp, False );
-++
-++ pKbdExtension->UseExtension( ! HasXErrorOccured() );
-++ PopXErrorLevel();
-++
-++ pSalDisplay->SetKbdExtension( pKbdExtension );
-++}
-++
-++void TDEXLib::doStartup()
-++{
-++ if( ! m_bStartupDone )
-++ {
-++ KStartupInfo::appStarted();
-++ m_bStartupDone = true;
-++ #if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "called KStartupInfo::appStarted()\n" );
-++ #endif
-++ }
-++}
-++
-++/**********************************************************************
-++ * class TDEData *
-++ **********************************************************************/
-++
-++TDEData::~TDEData()
-++{
-++}
-++
-++void TDEData::Init()
-++{
-++ pXLib_ = new TDEXLib();
-++ pXLib_->Init();
-++}
-++
-++/**********************************************************************
-++ * plugin entry point *
-++ **********************************************************************/
-++
-++extern "C" {
-++ VCL_DLLPUBLIC SalInstance* create_SalInstance( oslModule )
-++ {
-++ /* #i92121# workaround deadlocks in the X11 implementation
-++ */
-++ static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" );
-++ /* #i90094#
-++ from now on we know that an X connection will be
-++ established, so protect X against itself
-++ */
-++ if( ! ( pNoXInitThreads && *pNoXInitThreads ) )
-++ XInitThreads();
-++
-++ rtl::OString aVersion( qVersion() );
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "qt version string is \"%s\"\n", aVersion.getStr() );
-++#endif
-++ sal_Int32 nIndex = 0, nMajor = 0, nMinor = 0, nMicro = 0;
-++ nMajor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nIndex > 0 )
-++ nMinor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nIndex > 0 )
-++ nMicro = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nMajor != 3 || nMinor < 2 || (nMinor == 2 && nMicro < 2) )
-++ {
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "unsuitable qt version %d.%d.%d\n", (int)nMajor, (int)nMinor, (int)nMicro );
-++#endif
-++ return NULL;
-++ }
-++
-++ TDESalInstance* pInstance = new TDESalInstance( new SalYieldMutex() );
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "created TDESalInstance 0x%p\n", pInstance );
-++#endif
-++
-++ // initialize SalData
-++ TDEData *pSalData = new TDEData();
-++ SetSalData( pSalData );
-++ pSalData->m_pInstance = pInstance;
-++ pSalData->Init();
-++ pSalData->initNWF();
-++
-++ return pInstance;
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN vcl/prj/build.lst vcl/prj/build.lst
-+--- vcl/prj/build.lst 2010-11-11 13:09:00.000000000 -0600
-++++ vcl/prj/build.lst 2011-08-18 20:31:51.496382806 -0500
-+@@ -35,6 +35,7 @@
-+ vc vcl\unx\headless nmake - u vc__hl vc_inc NULL
-+ vc vcl\unx\kde nmake - u vc__kde vc_inc NULL
-+ vc vcl\unx\kde4 nmake - u vc__kde4 vc_inc NULL
-++vc vcl\unx\tde nmake - u vc__tde vc_inc NULL
-+ vc vcl\aqua\source\a11y nmake - u vc__aquy vc_inc NULL
-+ vc vcl\aqua\source\app nmake - u vc__appa vc_inc NULL
-+ vc vcl\aqua\source\dtrans nmake - u vc__dtra vc_inc NULL
-+@@ -45,6 +46,6 @@
-+ vc vcl\mac\source\gdi nmake - m vc__gdim vc_inc NULL
-+ vc vcl\mac\source\window nmake - m vc__winm vc_inc NULL
-+ vc vcl\mac\source\src nmake - m vc__srcm vc_inc NULL
-+-vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-++vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__tde.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-+ vc vcl\util\linksvp nmake - u vc_lsvp vc_util NULL
-+ vc vcl\workben nmake - all vc_wrkb vc_util vc_salmain NULL
-+diff -urN vcl/prj/d.lst vcl/prj/d.lst
-+--- vcl/prj/d.lst 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/prj/d.lst 2011-08-18 20:30:59.772430360 -0500
-+@@ -62,6 +62,7 @@
-+ ..\inc\vcl\javachild.hxx %_DEST%\inc%_EXT%\vcl\javachild.hxx
-+ ..\inc\vcl\jobset.hxx %_DEST%\inc%_EXT%\vcl\jobset.hxx
-+ ..\unx\inc\kde_headers.h %_DEST%\inc%_EXT%\vcl\kde_headers.h
-++..\unx\inc\tde_headers.h %_DEST%\inc%_EXT%\vcl\tde_headers.h
-+ ..\inc\vcl\keycod.hxx %_DEST%\inc%_EXT%\vcl\keycod.hxx
-+ ..\inc\vcl\keycodes.hxx %_DEST%\inc%_EXT%\vcl\keycodes.hxx
-+ ..\inc\vcl\lineinfo.hxx %_DEST%\inc%_EXT%\vcl\lineinfo.hxx
-+diff -urN vcl/source/app/settings.cxx vcl/source/app/settings.cxx
-+--- vcl/source/app/settings.cxx 2011-03-08 12:51:41.000000000 -0600
-++++ vcl/source/app/settings.cxx 2011-08-18 20:32:39.820075101 -0500
-+@@ -830,6 +830,8 @@
-+ nRet = STYLE_SYMBOLS_CRYSTAL;
-+ else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "kde4" ) )
-+ nRet = STYLE_SYMBOLS_OXYGEN;
-++ else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-++ nRet = STYLE_SYMBOLS_CRYSTAL;
-+ }
-+
-+ // falback to any existing style
-+diff -urN vcl/unx/source/gdi/dtint.cxx vcl/unx/source/gdi/dtint.cxx
-+--- vcl/unx/source/gdi/dtint.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/unx/source/gdi/dtint.cxx 2011-08-18 20:35:34.753448320 -0500
-+@@ -96,7 +96,7 @@
-+ /*
-+ * #i22061# override desktop detection
-+ * if environment variable OOO_FORCE_DESKTOP is set
-+- * to one of "cde" "kde" "gnome" then autodetection
-++ * to one of "cde" "kde" "tde" "gnome" then autodetection
-+ * is overridden.
-+ */
-+ static const char* pOverride = getenv( "OOO_FORCE_DESKTOP" );
-+diff -urN vcl/unx/source/plugadapt/salplug.cxx vcl/unx/source/plugadapt/salplug.cxx
-+--- vcl/unx/source/plugadapt/salplug.cxx 2010-11-11 13:09:00.000000000 -0600
-++++ vcl/unx/source/plugadapt/salplug.cxx 2011-08-18 20:35:23.512588295 -0500
-+@@ -55,10 +55,11 @@
-+ DESKTOP_GNOME,
-+ DESKTOP_KDE,
-+ DESKTOP_KDE4,
-++ DESKTOP_TDE,
-+ DESKTOP_CDE
-+ };
-+
-+-static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "CDE" };
-++static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "TDE", "CDE" };
-+
-+ static SalInstance* tryInstance( const OUString& rModuleBase )
-+ {
-+@@ -162,7 +166,7 @@
-+ {
-+ static const char* pKDEFallbackList[] =
-+ {
-+- "kde4", "kde", "gtk", "gen", 0
-++ "kde4", "kde", "tde", "gtk", "gen", 0
-+ };
-+
-+ static const char* pStandardFallbackList[] =
-+@@ -191,6 +195,11 @@
-+ }
-+ else if( desktop.equalsAscii( desktop_strings[DESKTOP_KDE4] ) )
-+ pList = pKDEFallbackList;
-++ else if( desktop.equalsAscii( desktop_strings[DESKTOP_TDE] ) )
-++ {
-++ pList = pKDEFallbackList;
-++ nListEntry = 1;
-++ }
-+
-+ SalInstance* pInst = NULL;
-+ while( pList[nListEntry] && pInst == NULL )
-+@@ -235,7 +244,7 @@
-+ pInst = autodetect_plugin();
-+
-+ // fallback, try everything
-+- const char* pPlugin[] = { "gtk", "kde", "gen", 0 };
-++ const char* pPlugin[] = { "gtk", "kde", "tde", "gen", 0 };
-+
-+ for ( int i = 0; !pInst && pPlugin[ i ]; ++i )
-+ pInst = tryInstance( OUString::createFromAscii( pPlugin[ i ] ) );
-+diff -urN vcl/unx/inc/plugins/tde/tdedata.hxx vcl/unx/inc/plugins/tde/tdedata.hxx
-+--- vcl/unx/inc/plugins/tde/tdedata.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/inc/plugins/tde/tdedata.hxx 2011-08-18 20:45:32.009117227 -0500
-+@@ -0,0 +1,114 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _VCL_TDEDATA_HXX
-++#define _VCL_TDEDATA_HXX
-++
-++#include <saldisp.hxx>
-++#include <saldata.hxx>
-++#include <salframe.h>
-++
-++class TDEData : public X11SalData
-++{
-++public:
-++ TDEData() {}
-++ virtual ~TDEData();
-++
-++ virtual void Init();
-++ virtual void initNWF();
-++ virtual void deInitNWF();
-++};
-++
-++class SalTDEDisplay : public SalX11Display
-++{
-++public:
-++ SalTDEDisplay( Display* pDisp );
-++ virtual ~SalTDEDisplay();
-++};
-++
-++class TDESalFrame : public X11SalFrame
-++{
-++ static const int nMaxGraphics = 2;
-++
-++ struct GraphicsHolder
-++ {
-++ X11SalGraphics* pGraphics;
-++ bool bInUse;
-++ GraphicsHolder()
-++ : pGraphics( NULL ),
-++ bInUse( false )
-++ {}
-++ ~GraphicsHolder();
-++ };
-++ GraphicsHolder m_aGraphics[ nMaxGraphics ];
-++
-++public:
-++ TDESalFrame( SalFrame* pParent, ULONG nStyle );
-++ virtual ~TDESalFrame();
-++
-++ virtual SalGraphics* GetGraphics();
-++ virtual void ReleaseGraphics( SalGraphics *pGraphics );
-++ virtual void updateGraphics( bool bClear );
-++ virtual void UpdateSettings( AllSettings& rSettings );
-++ virtual void Show( BOOL bVisible, BOOL bNoActivate );
-++};
-++
-++class TDESalInstance : public X11SalInstance
-++{
-++public:
-++ TDESalInstance( SalYieldMutex* pMutex )
-++ : X11SalInstance( pMutex ) {}
-++ virtual ~TDESalInstance() {}
-++ virtual SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle );
-++};
-++
-++class TDEXLib : public SalXLib
-++{
-++ bool m_bStartupDone;
-++ void* m_pApplication;
-++ char** m_pFreeCmdLineArgs;
-++ char** m_pAppCmdLineArgs;
-++ int m_nFakeCmdLineArgs;
-++public:
-++ TDEXLib() : SalXLib(),
-++ m_bStartupDone( false ),
-++ m_pApplication( NULL ),
-++ m_pFreeCmdLineArgs( NULL ),
-++ m_pAppCmdLineArgs( NULL ),
-++ m_nFakeCmdLineArgs( 0 )
-++ {}
-++ virtual ~TDEXLib();
-++ virtual void Init();
-++
-++ void doStartup();
-++};
-++
-++#endif // _VCL_TDEDATA_HXX
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_library_ooo.scp
-+--- scp2/source/ooo/file_library_ooo.scp 2010-11-11 09:08:07.000000000 -0600
-++++ scp2/source/ooo/file_library_ooo.scp 2011-08-19 03:12:08.329491869 -0500
-+@@ -463,6 +463,24 @@
-+
-+ #endif
-+
-++#ifdef ENABLE_TDEAB
-++File gid_File_Lib_Tdeab_1
-++ TXT_FILE_BODY;
-++ Styles = (PACKED,UNO_COMPONENT);
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(libtdeab1,UNXSUFFIX));
-++End
-++
-++File gid_File_Lib_Tdeab_Drv_1
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(libtdeabdrv1,UNXSUFFIX));
-++End
-++
-++#endif
-++
-+ #ifdef MACOSX
-+ File gid_File_Lib_Macab_1
-+ TXT_FILE_BODY;
-+diff -urN scp2/source/ooo/module_hidden_ooo.scp scp2/source/ooo/module_hidden_ooo.scp
-+--- scp2/source/ooo/module_hidden_ooo.scp 2010-12-14 09:40:37.000000000 -0600
-++++ scp2/source/ooo/module_hidden_ooo.scp 2011-08-19 03:13:34.946155129 -0500
-+@@ -285,6 +285,8 @@
-+ gid_File_Lib_Evoab_2,
-+ gid_File_Lib_Kab_1,
-+ gid_File_Lib_Kab_Drv_1,
-++ gid_File_Lib_Tdeab_1,
-++ gid_File_Lib_Tdeab_Drv_1,
-+ gid_File_Lib_Macab_1,
-+ gid_File_Lib_Macab_Drv_1,
-+ gid_File_Lib_Evtatt,
-+diff -urN postprocess/packregistry/makefile.mk postprocess/packregistry/makefile.mk
-+--- postprocess/packregistry/makefile.mk 2010-12-01 12:05:07.000000000 -0600
-++++ postprocess/packregistry/makefile.mk 2011-08-19 03:54:29.454469572 -0500
-+@@ -336,6 +336,9 @@
-+ .IF "$(ENABLE_KAB)" == "TRUE"
-+ MY_FILES_main += $(MY_MOD)/DataAccess/kab.xcu
-+ .END
-++.IF "$(ENABLE_TDEAB)" == "TRUE"
-++MY_FILES_main += $(MY_MOD)/DataAccess/tdeab.xcu
-++.END
-+ .IF "$(SYSTEM_MOZILLA)" != "YES" && "$(WITH_MOZILLA)" != "NO" && \
-+ "$(OS)" != "MACOSX"
-+ .IF "$(OS)" == "WNT"
-+diff -urN connectivity/version.mk connectivity/version.mk
-+--- connectivity/version.mk 2010-11-11 09:30:07.000000000 -0600
-++++ connectivity/version.mk 2011-08-19 03:55:43.470147349 -0500
-+@@ -101,6 +101,16 @@
-+ # the micro
-+ KAB_MICRO=0
-+
-++# ----------------------------Tdeab settings-------------------------------------#
-++# target
-++TDEAB_TARGET=tdeab
-++
-++# the major
-++TDEAB_MAJOR=1
-++# the minor
-++TDEAB_MINOR=0
-++# the micro
-++TDEAB_MICRO=0
-+
-+ # ----------------------------Macab settings-------------------------------------#
-+ # target
-+diff -urN fpicker/source/generic/fpicker.cxx fpicker/source/generic/fpicker.cxx
-+--- fpicker/source/generic/fpicker.cxx 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/source/generic/fpicker.cxx 2011-08-19 19:55:13.344690587 -0500
-+@@ -64,6 +64,8 @@
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFilePicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde4"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDE4FilePicker"));
-++ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-++ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFilePicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFilePicker"));
-+ #endif
-+@@ -139,6 +141,8 @@
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.GtkFolderPicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFolderPicker"));
-++ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-++ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFolderPicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFolderPicker"));
-+ #endif
-+diff -urN vcl/unx/source/desktopdetect/desktopdetector.cxx vcl/unx/source/desktopdetect/desktopdetector.cxx
-+--- vcl/unx/source/desktopdetect/desktopdetector.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/unx/source/desktopdetect/desktopdetector.cxx 2011-08-19 21:10:45.481110576 -0500
-+@@ -49,12 +49,13 @@
-+ DESKTOP_NONE = 0,
-+ DESKTOP_UNKNOWN,
-+ DESKTOP_GNOME,
-++ DESKTOP_TDE,
-+ DESKTOP_KDE,
-+ DESKTOP_KDE4,
-+ DESKTOP_CDE
-+ };
-+
-+-static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "CDE" };
-++static const char * desktop_strings[] = { "none", "unknown", "GNOME", "TDE", "KDE", "KDE4", "CDE" };
-+
-+ static bool is_gnome_desktop( Display* pDisplay )
-+ {
-+@@ -218,6 +219,15 @@
-+ return false;
-+ }
-+
-++static bool is_tde_desktop( Display* pDisplay )
-++{
-++ if ( NULL != getenv( "TDE_FULL_SESSION" ) )
-++ {
-++ return true;
-++ }
-++ return false;
-++}
-++
-+ static bool is_kde4_desktop( Display* pDisplay )
-+ {
-+ if ( NULL != getenv( "KDE_FULL_SESSION" ) )
-+@@ -265,6 +275,8 @@
-+
-+ if ( aOver.equalsIgnoreAsciiCase( "cde" ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_CDE] );
-++ if ( aOver.equalsIgnoreAsciiCase( "tde" ) )
-++ aRet.appendAscii( desktop_strings[DESKTOP_TDE] );
-+ if ( aOver.equalsIgnoreAsciiCase( "kde4" ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_KDE4] );
-+ if ( aOver.equalsIgnoreAsciiCase( "gnome" ) )
-+@@ -319,7 +331,9 @@
-+ {
-+ XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler );
-+
-+- if ( is_kde4_desktop( pDisplay ) )
-++ if ( is_tde_desktop( pDisplay ) )
-++ aRet.appendAscii( desktop_strings[DESKTOP_TDE] );
-++ else if ( is_kde4_desktop( pDisplay ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_KDE4] );
-+ else if ( is_gnome_desktop( pDisplay ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_GNOME] );
-diff -urN libreoffice-build/patches/unittesting/unittesting-vcl.diff libreoffice-build/patches/unittesting/unittesting-vcl.diff
---- libreoffice-build/patches/unittesting/unittesting-vcl.diff 2010-11-11 08:41:39.000000000 -0600
-+++ libreoffice-build/patches/unittesting/unittesting-vcl.diff 2011-08-21 16:24:42.000000000 -0500
-@@ -10,7 +10,7 @@
- +++ vcl/prj/build.lst
- @@ -47,4 +47,3 @@ vc vcl\mac\source\window nmake - m vc__winm vc_inc NULL
- vc vcl\mac\source\src nmake - m vc__srcm vc_inc NULL
-- vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-+ vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__tde.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
- vc vcl\util\linksvp nmake - u vc_lsvp vc_util NULL
- -vc vcl\workben nmake - all vc_wrkb vc_util vc_salmain NULL
- diff --git vcl/prj/tests.lst vcl/prj/tests.lst
diff --git a/main/thirdparty/libreoffice/3.3.3/patches/NOTES b/main/thirdparty/libreoffice/3.3.3/patches/NOTES
deleted file mode 100644
index 15a4f25d6..000000000
--- a/main/thirdparty/libreoffice/3.3.3/patches/NOTES
+++ /dev/null
@@ -1,3 +0,0 @@
-This patchset is intended for Debian and has not been tested on other systems, however the patch libreoffice-trinity.diff should apply cleanly to a stock LibreOffice source tree and function properly if enabled.
-
-After patch application, you will need to rerun autoconf from within the libreoffice-build directory in order to apply the changes made to configure.in
diff --git a/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity-debian.diff b/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity-debian.diff
deleted file mode 100644
index 46b04d4f2..000000000
--- a/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity-debian.diff
+++ /dev/null
@@ -1,368 +0,0 @@
-diff -urN debian/changelog debian/changelog
---- debian/changelog 2011-07-21 02:13:49.000000000 -0500
-+++ debian/changelog 2011-09-19 11:37:12.650300701 -0500
-@@ -1,3 +1,9 @@
-+libreoffice (1:3.3.3-1ubuntu2~build0~natty) natty; urgency=low
-+
-+ * Enable TDE module
-+
-+ -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Sat, 20 Aug 2011 15:14:00 -0600
-+
- libreoffice (1:3.3.3-1ubuntu2) natty-proposed; urgency=medium
-
- * move icons back to 3.3 location after unpacking (LP: #813148)
-diff -urN debian/control debian/control
---- debian/control 2011-07-21 02:15:18.000000000 -0500
-+++ debian/control 2011-09-19 11:55:20.684872566 -0500
-@@ -4,9 +4,9 @@
- Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
- XSBC-Original-Maintainer: Debian LibreOffice Maintainers <debian-openoffice@lists.debian.org>
- Uploaders: Rene Engelhard <rene@debian.org>
--Build-Depends: lsb-release, bzip2, bison, flex | flex-old, libxaw7-dev, unzip, zip, autoconf, automake, sharutils, pkg-config, libfontconfig1-dev, libc0.1 (>= 2.10.2-7) [kfreebsd-i386 kfreebsd-amd64], zlib1g-dev, libfreetype6-dev, libx11-dev, libsm-dev, libxt-dev, libxext-dev, libxtst-dev, libice-dev, libsane-dev, libxrender-dev, libcups2-dev, libarchive-zip-perl, libpng12-dev, libjpeg-dev, libxml2-dev, libexpat1-dev, fastjar, xsltproc, libxkbfile-dev, libxinerama-dev, x11proto-render-dev, unixodbc-dev (>= 2.2.11), libxml-parser-perl, gperf, libpq-dev, po-debconf, bc, wget | curl, dpkg-dev (>= 1.15.1), libgl1-mesa-dev [!armel !mips !mipsel], libglu1-mesa-dev [!armel !mips !mipsel], libpoppler-dev (>= 0.8.0), libgraphite-dev, libtextcat-dev (>= 2.2-8), libcurl4-gnutls-dev, libssl-dev, libdb-dev, python (>= 2.6.6-3+squeeze4), python-dev, debhelper (>= 7.2.3~), libcppunit-dev (>= 1.12), openjdk-6-jdk [alpha amd64 armel armhf i386 powerpc powerpcspe ppc64 s390 s390x sparc], gcj-native-helper [!powerpc !powerpcspe !ppc64], libgcj-common (>= 1:4.4.1) [!powerpc !powerpcspe !ppc64], ant (>= 1.7.0), ant-optional (>= 1.7.0), libcommons-codec-java, libcommons-httpclient-java, libcommons-lang-java, libcommons-logging-java, libservlet2.5-java, libbase-java-openoffice.org [!armel], libsac-java [!armel], libxml-java-openoffice.org [!armel], libflute-java-openoffice.org [!armel], libpentaho-reporting-flow-engine-java-openoffice.org [!armel], liblayout-java-openoffice.org [!armel], libloader-java-openoffice.org [!armel], libformula-java-openoffice.org [!armel], librepository-java-openoffice.org [!armel], libfonts-java-openoffice.org [!armel], libserializer-java-openoffice.org [!armel], libcommons-logging-java, libservlet2.5-java, javahelper, xulrunner-dev | firefox-dev, libnss3-dev (>= 3.12.3), dmake (>= 1:4.11), mono-devel (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libmono-dev (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], mono-utils (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], cli-common-dev (>= 0.5.7) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libhunspell-dev (>= 1.1.5-2), libhyphen-dev (>= 2.4), libstlport4.6-dev (>= 4.6.2-3) [i386], libboost-dev (>= 1.38), libmdds-dev, libvigraimpex-dev, libwpd-dev (>= 0.9.0), libmythes-dev (>= 2:1.2), libwps-dev (>= 0.2.0), libwpg-dev (>= 0.2.0), libicu-dev (>= 4.0), libxslt1-dev, libcairo2-dev, kdelibs5-dev (>= 4:4.3.4), libqt4-dev (>= 4.5), libmysqlclient-dev, libmysqlcppconn-dev (>= 1.1.0~r791), libebook1.2-dev [!armel], libxrandr-dev, libhsqldb-java (>> 1.8.0.10), bsh (>= 2.0b4), liblpsolve55-dev (>= 5.5.0.13-5+b1), lp-solve (>= 5.5.0.13-5+b1), libsuitesparse-dev (>= 1:3.4.0), libdbus-glib-1-dev (>= 0.60), libgstreamer-plugins-base0.10-dev, libneon27-gnutls-dev, librdf0-dev (>= 1.0.8), libgtk2.0-dev (>= 2.10), libgnomevfs2-dev, libgconf2-dev, libldap2-dev
-+Build-Depends: lsb-release, bzip2, bison, flex | flex-old, libxaw7-dev, unzip, zip, autoconf, automake, sharutils, pkg-config, libfontconfig1-dev, libc0.1 (>= 2.10.2-7) [kfreebsd-i386 kfreebsd-amd64], zlib1g-dev, libfreetype6-dev, libx11-dev, libsm-dev, libxt-dev, libxext-dev, libxtst-dev, libice-dev, libsane-dev, libxrender-dev, libcups2-dev, libarchive-zip-perl, libpng12-dev, libjpeg-dev, libxml2-dev, libexpat1-dev, fastjar, xsltproc, libxkbfile-dev, libxinerama-dev, x11proto-render-dev, unixodbc-dev (>= 2.2.11), libxml-parser-perl, gperf, libpq-dev, po-debconf, bc, wget | curl, dpkg-dev (>= 1.15.1), libgl1-mesa-dev [!armel !mips !mipsel], libglu1-mesa-dev [!armel !mips !mipsel], libpoppler-dev (>= 0.8.0), libgraphite-dev, libtextcat-dev (>= 2.2-8), libcurl4-gnutls-dev, libssl-dev, libdb-dev, python (>= 2.6.6-3+squeeze4), python-dev, debhelper (>= 7.2.3~), libcppunit-dev (>= 1.12), openjdk-6-jdk [alpha amd64 armel armhf i386 powerpc powerpcspe ppc64 s390 s390x sparc], gcj-native-helper [!powerpc !powerpcspe !ppc64], libgcj-common (>= 1:4.4.1) [!powerpc !powerpcspe !ppc64], ant (>= 1.7.0), ant-optional (>= 1.7.0), libcommons-codec-java, libcommons-httpclient-java, libcommons-lang-java, libcommons-logging-java, libservlet2.5-java, libbase-java-openoffice.org [!armel], libsac-java [!armel], libxml-java-openoffice.org [!armel], libflute-java-openoffice.org [!armel], libpentaho-reporting-flow-engine-java-openoffice.org [!armel], liblayout-java-openoffice.org [!armel], libloader-java-openoffice.org [!armel], libformula-java-openoffice.org [!armel], librepository-java-openoffice.org [!armel], libfonts-java-openoffice.org [!armel], libserializer-java-openoffice.org [!armel], libcommons-logging-java, libservlet2.5-java, javahelper, xulrunner-dev | firefox-dev, libnss3-dev (>= 3.12.3), dmake (>= 1:4.11), mono-devel (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libmono-dev (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], mono-utils (>= 2.4.2.3) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], cli-common-dev (>= 0.5.7) [amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386], libhunspell-dev (>= 1.1.5-2), libhyphen-dev (>= 2.4), libstlport4.6-dev (>= 4.6.2-3) [i386], libboost-dev (>= 1.38), libmdds-dev, libvigraimpex-dev, libwpd-dev (>= 0.9.0), libmythes-dev (>= 2:1.2), libwps-dev (>= 0.2.0), libwpg-dev (>= 0.2.0), libicu-dev (>= 4.0), libxslt1-dev, libcairo2-dev, kdelibs4-trinity-dev, libqt4-dev (>= 4.5), libmysqlclient-dev, libmysqlcppconn-dev (>= 1.1.0~r791), libebook1.2-dev [!armel], libxrandr-dev, libhsqldb-java (>> 1.8.0.10), bsh (>= 2.0b4), liblpsolve55-dev (>= 5.5.0.13-5+b1), lp-solve (>= 5.5.0.13-5+b1), libsuitesparse-dev (>= 1:3.4.0), libdbus-glib-1-dev (>= 0.60), libgstreamer-plugins-base0.10-dev, libneon27-gnutls-dev, librdf0-dev (>= 1.0.8), libgtk2.0-dev (>= 2.10), libgnomevfs2-dev, libgconf2-dev, libldap2-dev
- Build-Depends-Indep: fdupes, xml-core, imagemagick, fontforge
--Build-Conflicts: libcairo2 (= 1.4.8-1), libxul-dev (= 1.8.0.13~pre070720-0etch1), gjdoc (= 0.7.8-2), libc6-dev (= 2.6.1-3) [i386 amd64], libc6-dev (= 2.6.1-4) [i386 amd64], nvidia-glx-dev, nvidia-glx-legacy-dev, libmono-dev (= 1.2.6+dfsg-1), libmono-dev (= 1.2.6+dfsg-2), libmono-dev (= 1.2.6+dfsg-3), libmono-dev (= 1.2.6+dfsg-4), libmono-dev (= 2.4+dfsg-2) [sparc], gcj-4.2 (= 4.2.2-6), flex (= 2.5.34-1) [amd64], libboost1.39-dev (<< 1.39.0-2), graphicsmagick-imagemagick-compat (<< 1.3.9~), qt3-dev-tools, ant (= 1.8.0-1) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-2) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-3) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], libmdds-dev (>= 0.4.0), base-files (= 6.0), base-files (= 6.0squeeze1), libhsqldb-java (>= 1.8.1~)
-+Build-Conflicts: libcairo2 (= 1.4.8-1), libxul-dev (= 1.8.0.13~pre070720-0etch1), gjdoc (= 0.7.8-2), libc6-dev (= 2.6.1-3) [i386 amd64], libc6-dev (= 2.6.1-4) [i386 amd64], nvidia-glx-dev, nvidia-glx-legacy-dev, libmono-dev (= 1.2.6+dfsg-1), libmono-dev (= 1.2.6+dfsg-2), libmono-dev (= 1.2.6+dfsg-3), libmono-dev (= 1.2.6+dfsg-4), libmono-dev (= 2.4+dfsg-2) [sparc], gcj-4.2 (= 4.2.2-6), flex (= 2.5.34-1) [amd64], libboost1.39-dev (<< 1.39.0-2), graphicsmagick-imagemagick-compat (<< 1.3.9~), ant (= 1.8.0-1) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-2) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], ant (= 1.8.0-3) [hppa ia64 kfreebsd-i386 kfreebsd-amd64 mips mipsel], libmdds-dev (>= 0.4.0), base-files (= 6.0), base-files (= 6.0squeeze1), libhsqldb-java (>= 1.8.1~)
- Standards-Version: 3.9.1
- XS-Python-Version: current
- Vcs-Git: https://alioth.debian.org/anonscm/git/pkg-openoffice/libreoffice.git
-@@ -18,7 +18,7 @@
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Depends: libreoffice-core (= ${binary:Version}), libreoffice-writer, libreoffice-calc, libreoffice-impress, libreoffice-draw, libreoffice-math, libreoffice-base [!armel], libreoffice-report-builder-bin [!armel], ttf-dejavu, ttf-sil-gentium-basic, libreoffice-filter-mobiledev, ${lucene-depends}, ${java-common-depends}, ${misc:Depends}
- Recommends: ttf-liberation | ttf-mscorefonts-installer
--Suggests: hunspell-dictionary, myspell-dictionary, libreoffice-help-${help-l10n-virtual-version}, menu, unixodbc, cups-bsd, libsane, hyphen-hyphenation-patterns, mythes-thesaurus, libxrender1, libgl1, libreoffice-gnome | libreoffice-kde, iceweasel | firefox | icedove | thunderbird | iceape-browser | mozilla-browser, ${java-runtime-depends}, openclipart-libreoffice, pstoedit, imagemagick | graphicsmagick-imagemagick-compat, libpaper-utils, ${gstreamer-plugins-suggests}, ${libldap-suggests}, ${ooo-binfilter-dep}, ${ooo-officebean-dep}
-+Suggests: hunspell-dictionary, myspell-dictionary, libreoffice-help-${help-l10n-virtual-version}, menu, unixodbc, cups-bsd, libsane, hyphen-hyphenation-patterns, mythes-thesaurus, libxrender1, libgl1, libreoffice-gnome | libreoffice-kde | libreoffice-trinity, iceweasel | firefox | icedove | thunderbird | iceape-browser | mozilla-browser, ${java-runtime-depends}, openclipart-libreoffice, pstoedit, imagemagick | graphicsmagick-imagemagick-compat, libpaper-utils, ${gstreamer-plugins-suggests}, ${libldap-suggests}, ${ooo-binfilter-dep}, ${ooo-officebean-dep}
- Description: office productivity suite
- LibreOffice is a full-featured office productivity suite that provides
- a near drop-in replacement for Microsoft(R) Office.
-@@ -45,6 +45,7 @@
- QuickStarter for GNOMEs notification are
- * libreoffice-gnome: GNOME VFS, GConf backend
- * libreoffice-kde: KDE UI Plugin and KDE File Picker support
-+ * libreoffice-trinity: TDE UI Plugin and TDE File Picker support
- * menu: Will add libreoffice menu entries for every Debian window manager.
- * unixodbc: ODBC database support
- * cups-bsd: Allows LibreOffice to detect your CUPS printer queues
-@@ -91,7 +92,7 @@
- Package: libreoffice-core
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Depends: libreoffice-common (>> ${base-version}), ttf-opensymbol (>= 1:3.0), ${shlibs:Depends}, ure (>= 1.5.1+OOo3.1.1-15), fontconfig, ${mozilla-nss-depends}, ${misc:Depends}
--Conflicts: libreoffice-calc (<< ${binary:Version}), libreoffice-writer (<< ${binary:Version}), libreoffice-impress (<< ${binary:Version}), libreoffice-draw (<< ${binary:Version}), libreoffice-base (<< ${binary:Version}), libreoffice-gtk (<< ${binary:Version}), libreoffice-gnome (<< ${binary:Version}), libreoffice-kde (<< ${binary:Version}), libreoffice-evolution (<< ${binary:Version}), libreoffice-filter-so52 (<< ${binary:Version}), libreoffice-officebean (<< ${binary:Version}), libreoffice-dev (<< ${binary:Version}), libcairo2 (= 1.4.8-1), libicu38 (= 3.8~d01-1), cli-uno-bridge (<< 1:3.0.0~dev300m22), cacao-oj6-jre, mozilla-plugin-vlc (<< 1.0)
-+Conflicts: libreoffice-calc (<< ${binary:Version}), libreoffice-writer (<< ${binary:Version}), libreoffice-impress (<< ${binary:Version}), libreoffice-draw (<< ${binary:Version}), libreoffice-base (<< ${binary:Version}), libreoffice-gtk (<< ${binary:Version}), libreoffice-gnome (<< ${binary:Version}), libreoffice-kde (<< ${binary:Version}), libreoffice-trinity (<< ${binary:Version}), libreoffice-evolution (<< ${binary:Version}), libreoffice-filter-so52 (<< ${binary:Version}), libreoffice-officebean (<< ${binary:Version}), libreoffice-dev (<< ${binary:Version}), libcairo2 (= 1.4.8-1), libicu38 (= 3.8~d01-1), cli-uno-bridge (<< 1:3.0.0~dev300m22), cacao-oj6-jre, mozilla-plugin-vlc (<< 1.0)
- Breaks: myspell-ru (<< 0.99g5-8.1), myspell-lv (<< 0.7.3-3.1), myspell-et (<< 1:20030606-12.1), myspell-fi (<< 0.7-17.2), myspell-cs-cz (<< 20040229-4.1), myspell-el-gr (<< 0.3-1.1), myspell-nn (<< 2.0.10-3.1), myspell-nb (<< 2.0.10-3.1), hunspell-ar (<< 0.0.0+20080110-1.1), myspell-hu (<< 0.99.4-1.2), hunspell-gl-es (<< 2.2a-6), myspell-gv (<< 0.50-8), myspell-en-au (<< 2.1-5), myspell-fa (<< 0.20070816-2), hunspell-uz (<< 0.6-3.1), hunspell-ko (<< 0.3.3-1), hunspell-se (<< 1.0~beta6.20081222-1.1), hunspell-de-med (<< 20090825-1), hunspell-en-us (<< 20070829-3), myspell-sv-se (<< 1.3.8-6-2.2), myspell-sk (<< 0.5.5a-2.1), myspell-fo (<< 0.2.36-3), myspell-nl (<< 1:1.10-3), myspell-pt-br (<< 2009.03.30-1.1), myspell-pl (<< 20090830-1), myspell-pt-pt (<< 20090309-1.1), myspell-ga (<< 2.0-19), myspell-gd (<< 0.50-7), myspell-ku (<< 0.20.0-1.1), myspell-hr (<< 20060617-2), myspell-fr-gut (<< 1:1.0-26.1), myspell-eo (<< 2.1.2000.02.25-41), myspell-de-de-oldspell (<< 1:2-25.1), myspell-da (<< 1.6.18-1.1), myspell-es (<< 1.10-7), myspell-de-at (<< 20071211-2), myspell-de-ch (<< 20071211-2), myspell-de-de (<< 20071211-2), hunspell-de-at (<< 20071211-2), hunspell-de-ch (<< 20071211-2), hunspell-de-de (<< 20071211-2), myspell-ca (<< 0.6-8), myspell-tl (<< 0.4-0-5), myspell-ne (<< 1.0-4.1), myspell-fr (<< 1.4-25), myspell-hy (<< 0.10.1-1.1), myspell-en-us (<< 1:3.1.0-3), myspell-en-gb (<< 1:3.1.0-3), myspell-en-za (<< 1:3.1.0-3), myspell-af (<< 1:3.1.0-3), myspell-it (<< 1:3.1.0-3), myspell-sw (<< 1:3.1.0-3), myspell-th (<< 1:3.1.0-3), hunspell-en-ca (<< 1:3.1.0-3), hunspell-ne (<< 1:3.1.0-3), hunspell-da (<< 1:3.1.0-3), hunspell-fr (<< 1:3.1.0-3), hunspell-vi (<< 1:3.1.0-3), hunspell-hu (<< 1:3.1.0-3), hunspell-sr (<< 1:3.1.0-3), hunspell-sh (<< 1:3.1.0-3), myspell-lv (<< 0.7.3-3.1), myspell-et (<< 1:20030606-12.1), myspell-nn (<< 2.0.10-3.1), myspell-nb (<< 2.0.10-3.1)
- Provides: libreoffice-bundled
- Replaces: libreoffice-calc (<< 1:3.3.2-5)
-@@ -775,7 +776,7 @@
- Section: debug
- Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
- Priority: extra
--Depends: libreoffice-core (= ${binary:Version}) | libreoffice-gcj (= ${binary:Version}) | libreoffice-dev (= ${binary:Version}) | libreoffice-gnome (= ${binary:Version}) | libreoffice-kde (= ${binary:Version}) | libreoffice-calc (= ${binary:Version}) | libreoffice-base-core (= ${binary:Version}) | libreoffice-base (= ${binary:Version}) | libreoffice-impress (= ${binary:Version}) | libreoffice-filter-binfilter (= ${binary:Version}) | libreoffice-draw (= ${binary:Version}) | libreoffice-writer (= ${binary:Version}) | python-uno (= ${binary:Version}) | cli-uno-bridge (= ${binary:Version}) | mozilla-libreoffice (= ${binary:Version}) | libreoffice-ogltrans (= ${binary:Version}), ${misc:Depends}
-+Depends: libreoffice-core (= ${binary:Version}) | libreoffice-gcj (= ${binary:Version}) | libreoffice-dev (= ${binary:Version}) | libreoffice-gnome (= ${binary:Version}) | libreoffice-kde (= ${binary:Version}) | libreoffice-trinity (= ${binary:Version}) | libreoffice-calc (= ${binary:Version}) | libreoffice-base-core (= ${binary:Version}) | libreoffice-base (= ${binary:Version}) | libreoffice-impress (= ${binary:Version}) | libreoffice-filter-binfilter (= ${binary:Version}) | libreoffice-draw (= ${binary:Version}) | libreoffice-writer (= ${binary:Version}) | python-uno (= ${binary:Version}) | cli-uno-bridge (= ${binary:Version}) | mozilla-libreoffice (= ${binary:Version}) | libreoffice-ogltrans (= ${binary:Version}), ${misc:Depends}
- Recommends: ure-dbg
- Suggests: ${dbg-dbg-suggests}
- Description: office productivity suite -- debug symbols
-@@ -837,6 +838,25 @@
- * konqueror / kmail
- * libreoffice-kab: KDE Addressbook support
-
-+Package: libreoffice-trinity
-+Architecture: alpha amd64 armel armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
-+Depends: libreoffice-core (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
-+Recommends: ${tde-iconset-dep}
-+Suggests: konqueror-trinity, kmail-trinity, libreoffice-kab-trinity
-+Section: kde
-+Enhances: libreoffice
-+Replaces: openoffice.org-trinity (<< 1:3.3.0~)
-+Description: office productivity suite -- TDE integration
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package contains the TDE plugin for drawing OOo's widgets with
-+ TDE/Qt and a TDEish File Picker when running under TDE.
-+ You can extend the functionality of this by installing these packages:
-+ .
-+ * konqueror-trinity / kmail-trinity
-+ * libreoffice-kab-trinity: TDE Addressbook support
-+
- Package: libreoffice-sdbc-postgresql
- Section: misc
- Architecture: alpha amd64 armhf hppa i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc kfreebsd-amd64 kfreebsd-i386
-diff -urN debian/control.in debian/control.in
---- debian/control.in 2011-07-21 02:13:49.000000000 -0500
-+++ debian/control.in 2011-09-19 11:36:44.782768358 -0500
-@@ -180,6 +180,7 @@
- libreofficeVER-gtk (<< ${binary:Version}),
- libreofficeVER-gnome (<< ${binary:Version}),
- libreofficeVER-kde (<< ${binary:Version}),
-+ libreofficeVER-trinity (<< ${binary:Version}),
- libreofficeVER-evolution (<< ${binary:Version}),
- libreofficeVER-filter-so52 (<< ${binary:Version}),
- libreofficeVER-officebean (<< ${binary:Version}),
-diff -urN debian/control.tdeab.in debian/control.tdeab.in
---- debian/control.tdeab.in 1969-12-31 18:00:00.000000000 -0600
-+++ debian/control.tdeab.in 2011-09-19 11:36:44.790768076 -0500
-@@ -0,0 +1,14 @@
-+Package: libreofficeVER-kab-trinity
-+Architecture: %OOO_BASE_ARCHS%
-+Depends: libreofficeVER-core (= ${binary:Version}),
-+ ${shlibs:Depends},
-+ ${misc:Depends}
-+Recommends: kaddressbook-trinity
-+Conflicts: ure (<< 1.5.1+OOo3.1.1-15)
-+Description: office productivity suite -- TDE adressbook support
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package allows LibreOffice to access the TDE Addressbook.
-+ You need to install kaddressbook-trinity separately.
-+
-diff -urN debian/control.tde.in debian/control.tde.in
---- debian/control.tde.in 1969-12-31 18:00:00.000000000 -0600
-+++ debian/control.tde.in 2011-09-19 11:36:44.794767989 -0500
-@@ -0,0 +1,23 @@
-+Package: libreofficeVER-trinity
-+Architecture: %OOO_ARCHS%
-+Depends: libreofficeVER-core (= ${binary:Version}),
-+ ${shlibs:Depends},
-+ ${misc:Depends}
-+Recommends: ${tde-iconset-dep}
-+Suggests: konqueror-trinity,
-+ kmail-trinity,
-+ libreofficeVER-kab-trinity
-+Section: kde
-+Enhances: libreofficeVER
-+Replaces: openoffice.org-trinity (<< 1:3.3.0~)
-+Description: office productivity suite -- TDE integration
-+ LibreOffice is a full-featured office productivity suite that provides
-+ a near drop-in replacement for Microsoft(R) Office.
-+ .
-+ This package contains the TDE plugin for drawing OOo's widgets with
-+ TDE/TQt and a TDEish File Picker when running under TDE.
-+ You can extend the functionality of this by installing these packages:
-+ .
-+ * konqueror-trinity / kmail-trinity
-+ * libreoffice-kab-trinity: TDE Addressbook support
-+
-diff -urN debian/rules debian/rules
---- debian/rules 2011-07-21 02:13:49.000000000 -0500
-+++ debian/rules 2011-09-19 11:39:32.611849416 -0500
-@@ -175,11 +175,18 @@
- BUILD_CAIROCANVAS=y
- SYSTEM_STUFF += cairo
- CAIRO_FONTS_PATCH=y
--BUILD_KDE=y
-+BUILD_KDE=n
-+BUILD_TDE=y
- # not ported to KDE 4
- ENABLE_KDEAB=n
- QT_MINVER= (>= 4.5)
- KDELIBS_MINVER= (>= 4:4.3.4)
-+ifeq "$(BUILD_TDE)" "y"
-+ ENABLE_TDEAB=y
-+endif
-+ifeq "$(BUILD_TDE)" "y"
-+ TDELIBS_MINVER= (>= 4:3.5.12)
-+endif
- BUILD_DBG_PACKAGE=y
- SYSTEM_STUFF += beanshell
- SYSTEM_STUFF += hsqldb
-@@ -376,6 +383,7 @@
- ENABLE_MYSQLNATIVE=n
- ENABLE_EVO2=n
- ENABLE_KDEAB=n
-+ ENABLE_TDEAB=n
- ENABLE_REPORTDESIGN=n
- DEBHELPER_OPTIONS += -Nlibreoffice$(VER)-base libreoffice$(VER)-base-core
- DEBHELPER_OPTIONS += -Nlibreoffice$(VER)-evolution -Nlibreoffice$(VER)-kab
-@@ -1001,6 +1009,25 @@
- endif
- endif
-
-+ifeq "$(BUILD_TDE)" "n"
-+ CONFIGURE_FLAGS+= --disable-tde
-+ CONFIGURE_FLAGS+= --with-images="$(IMAGES)"
-+else
-+ CONFIGURE_FLAGS+= --disable-kde
-+ CONFIGURE_FLAGS+= --disable-kde4
-+ CONFIGURE_FLAGS+= --enable-tde
-+ TDE_ICONSET_DEP=libreoffice$(VER)-style-crystal
-+ BUILD_DEPS += , kdelibs4-trinity-dev
-+
-+ DBG_DBG_SUGGESTS+= , kdelibs-trinity-dbg, libtqtinterface-dbg
-+
-+ ifeq "$(ENABLE_TDEAB)" "y"
-+ BUILD_DEPS += , kdepim-trinity-dev
-+ else
-+ CONFIGURE_FLAGS+= --disable-tdeab
-+ endif
-+endif
-+
- ifeq "$(ENABLE_MYSQLNATIVE)" "y"
- CONFIGURE_FLAGS += --enable-mysql-connector
- ifneq (,$(filter mysql, $(SYSTEM_STUFF)))
-@@ -1542,6 +1569,11 @@
- >> debian/control < debian/control.kde.in
- perl -pi -e 's/ libreoffice$(VER)-gnome,/ libreoffice-gnome | libreoffice$(VER)-kde,/' debian/control
- endif
-+ifeq "$(BUILD_TDE)" "y"
-+ sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
-+ >> debian/control < debian/control.tde.in
-+ perl -pi -e 's/ libreoffice$(VER)-gnome,/ libreoffice-gnome | libreoffice$(VER)-trinity,/' debian/control
-+endif
- ifeq "$(ENABLE_SDBC_POSTGRESQL)" "y"
- sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
- >> debian/control < debian/control.postgresql.in
-@@ -1558,6 +1590,10 @@
- sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
- >> debian/control < debian/control.kab.in
- endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ sed -e "s|libreofficeVER|libreoffice$(VER)|g" \
-+ >> debian/control < debian/control.tdeab.in
-+endif
- endif # ifeq "$(PKGSOURCE)" "libreoffice$(VER)"
-
- perl -pi -e "s,%OOO_ARCHS%,$(OOO_ARCHS),g" debian/control
-@@ -1625,6 +1661,10 @@
- perl -pi -e 's/GConf backend$$/GConf backend\n * libreoffice$(VER)-kde: KDE UI Plugin and KDE File Picker support/' debian/control
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ perl -pi -e 's/GConf backend$$/GConf backend\n * libreoffice$(VER)-trinity: TDE UI Plugin and TDE File Picker support/' debian/control
-+endif
-+
- ifeq "$(ENABLE_LDAP)" "y"
- perl -pi -e 's/paperconf$$/paperconf\n * $(LDAP_LIB): LDAP client library; needed for LibreOffice getting its\n profiles from LDAP/' debian/control
- endif
-@@ -1702,6 +1742,12 @@
- endif
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ # be sure we use the right moc, FIXME: Trinity uses its own moc
-+ mkdir -p $(CURDIR)/debian/usr/bin
-+ ln -sf /usr/bin/moc-qt$(KDE_VER) $(CURDIR)/debian/usr/bin/moc
-+endif
-+
- ifeq "$(USE_STLPORT)" "y"
- ifeq "$(USE_SYSTEM_STLPORT)" "y"
- # stlport home
-@@ -1778,6 +1824,7 @@
- dh_testdir
-
- ifeq "$(BUILD_KDE)" "n"
-+ ifeq "$(BUILD_TDE)" "n"
- # hack to tell we want crystal icons nevertheless and they should be
- # extracted...
- if ! grep -q crystal $(OOO_BUILD_TREE)/bin/setup; then \
-@@ -1786,6 +1833,7 @@
- | sed -e s/\'industrial/\'industrial\ crystal/ \
- > $(OOO_BUILD_TREE)/bin/setup && rm $(OOO_BUILD_TREE)/bin/setup.bak; \
- fi
-+ endif
- endif
-
- cd $(OOO_BUILD_TREE) ; \
-@@ -2297,6 +2345,12 @@
- -br $(PKGDIR)-core/$(OODIR)/program/services.rdb \
- -c 'vnd.sun.star.expand:$$OOO_BASE_DIR/program/libkab1.so'
- endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ debian/ure/$(OOBRANDDIR)/ure/bin/regcomp -revoke \
-+ -r $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-+ -br $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-+ -c 'vnd.sun.star.expand:$$OOO_BASE_DIR/program/libtdeab1.so'
-+endif
- ifeq "$(BUILD_BINFILTERS)" "y"
- debian/ure/$(OOBRANDDIR)/ure/bin/regcomp -revoke \
- -r $(PKGDIR)-core/$(OODIR)/program/services.rdb \
-@@ -2383,6 +2437,49 @@
- done
- endif
-
-+ifeq "$(BUILD_TDE)" "y"
-+ mkdir -p -m755 $(PKGDIR)-trinity/$(OODIR)/program
-+ mkdir -p -m755 $(PKGDIR)-trinity/$(OOBRANDDIR)/program
-+ for f in fps_tde*.uno.so libvclplug_tde*.so; do \
-+ mv $(PKGDIR)-core/$(OODIR)/program/$$f $(PKGDIR)-trinity/$(OODIR)/program || exit 1 ;\
-+ done
-+ mv $(PKGDIR)-common/$(OOBRANDDIR)/program/tdefilepicker \
-+ $(PKGDIR)-trinity/$(OOBRANDDIR)/program
-+
-+ # install files for TDEs "create new" ...
-+ mkdir -p $(PKGDIR)-trinity/usr/share/templates/.source
-+ for i in $(SOURCE_TREE)/extras/source/shellnew/*; do \
-+ cp $$i $(PKGDIR)-trinity/usr/share/templates/.source/`basename $$i`; \
-+ done
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Writer/" \
-+ | sed -e "s/@EXT@/odt/" \
-+ | sed -e "s/@TYPE@/text/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odt.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Calc/" \
-+ | sed -e "s/@EXT@/ods/" \
-+ | sed -e "s/@TYPE@/spreadsheet/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.ods.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Impress/" \
-+ | sed -e "s/@EXT@/odp/" \
-+ | sed -e "s/@TYPE@/presentation/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odp.desktop
-+ cat debian/templates/soffice-template.desktop.in \
-+ | sed -e "s/@APP@/Draw/" \
-+ | sed -e "s/@EXT@/odg/" \
-+ | sed -e "s/@TYPE@/drawing/" \
-+ > $(PKGDIR)-trinity/usr/share/templates/soffice.odg.desktop
-+endif
-+ifeq "$(ENABLE_TDEAB)" "y"
-+ rm -rf $(PKGDIR)-kab-trinity
-+ mkdir -p -m755 $(PKGDIR)-kab-trinity/$(OODIR)/program
-+ for f in libtdeab*so; do \
-+ mv $(PKGDIR)-core/$(OODIR)/program/$$f $(PKGDIR)-kab-trinity/$(OODIR)/program || exit 1 ;\
-+ done
-+endif
-+
- # move the GNOME stuff which are *not* in gid_Module_Optional_Gnome
- # (which is moved into -gnome in package-ooo) into -gnome
- mkdir -p -m755 $(PKGDIR)-gnome/$(OODIR)/program
-@@ -3473,6 +3570,7 @@
- -V'ooo-binfilter-dep=$(OOO_BINFILTER_DEP)' \
- -V'ooo-officebean-dep=$(OOO_OFFICEBEAN_DEP)' \
- -V'kde-iconset-dep=$(KDE_ICONSET_DEP)' \
-+ -V'tde-iconset-dep=$(TDE_ICONSET_DEP)' \
- -V'lpsolve-dep=$(LPSOLVE_DEP)' \
- -V'gstreamer-plugins-suggests=$(GSTREAMER_PLUGINS_SUGGESTS)' \
- -V'libebook-dep=$(shell debian/scripts/get_libebook_dep.sh)' \
-diff -urN libreoffice-build/configure.in libreoffice-build/configure.in
---- libreoffice-build/configure.in 2011-05-31 10:43:15.000000000 -0500
-+++ libreoffice-build/configure.in 2011-09-19 11:36:44.850767094 -0500
-@@ -81,6 +81,11 @@
- --disable-kde4 Disables KDE4 native widgets.],
- ,)
-
-+AC_ARG_ENABLE(tde,
-+[
-+ --disable-tde Disables TDE native widgets.],
-+,)
-+
- AC_ARG_ENABLE(mono,
- [
- --enable-mono Enables the compilation of the Mono bindings.],
-@@ -928,6 +933,16 @@
- OOO_WIDGET_FLAGS="$OOO_WIDGET_FLAGS --disable-kde4"
- fi
-
-+OOO_WIDGET_FLAGS=
-+if test "$enable_tde" != "no"; then
-+ if test "z$with_win32" = "z" -a "z`uname -s`" != "zDarwin" -a "z$with_distro" != "zCrossWin32"; then
-+ OOO_WIDGET_FLAGS="--enable-tde"
-+ widget_sets="tde"
-+ fi
-+else
-+ OOO_WIDGET_FLAGS="--disable-tde"
-+fi
-+
- if test "$enable_gtk" != "no"; then
- if test "z$with_win32" = "z" -a "z`uname -s`" != "zDarwin" -a "z$with_distro" != "zCrossWin32"; then
- OOO_WIDGET_FLAGS="--enable-gtk $OOO_WIDGET_FLAGS" \ No newline at end of file
diff --git a/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity.diff b/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity.diff
deleted file mode 100644
index 65658e809..000000000
--- a/main/thirdparty/libreoffice/3.3.3/patches/libreoffice-trinity.diff
+++ /dev/null
@@ -1,15796 +0,0 @@
-diff -urN libreoffice-build/patches/dev300/apply libreoffice-build/patches/dev300/apply
---- libreoffice-build/patches/dev300/apply 2011-09-19 11:41:11.000000000 -0500
-+++ libreoffice-build/patches/dev300/apply 2011-09-19 11:36:17.051219826 -0500
-@@ -22,7 +22,7 @@
-
- LinuxCommon : Common, Defaults, FontConfigTemporaryHacks, \
- FedoraLinuxOnlyFixes, LinuxOnly, msaccess, OpenGLTransitions, \
-- CliMonoCommon, Mono, MonoComp, AddressBooks, QuickStarter, KDE4, Netbook, \
-+ CliMonoCommon, Mono, MonoComp, AddressBooks, QuickStarter, KDE4, TDE, Netbook, \
- GlobalNSPluginSupport, Gcc46
- MacOSXCommon : Common, Defaults
- Win32Common : Common, Defaults, Win32Only, CliMonoCommon, CliComponent, NotDebian
-@@ -184,8 +184,6 @@
- # pass $ORIGIN correctly to RPATH
- icu-4.2.1-rpath.diff. pmladek
-
--[ TemporaryHacks ]
--
- # add idl target to toplevel makefile
- makefile-idl-build.diff, noelpwer
-
-@@ -1500,6 +1498,10 @@
- # we need a good plan before, though ;-)
- split-icons-search-usr-share.diff, n#296502, pmladek
-
-+[ TDE ]
-+# add trinity integration
-+trinity-modules.diff
-+
- [ ArkOnly ]
- SectionOwner => brosenk
-
-diff -urN libreoffice-build/patches/dev300/trinity-modules.diff libreoffice-build/patches/dev300/trinity-modules.diff
---- libreoffice-build/patches/dev300/trinity-modules.diff 1969-12-31 18:00:00.000000000 -0600
-+++ libreoffice-build/patches/dev300/trinity-modules.diff 2011-09-19 11:35:33.699926859 -0500
-@@ -0,0 +1,15748 @@
-+diff -urN configure.in configure.in
-+--- configure.in 2011-03-08 12:51:39.000000000 -0600
-++++ configure.in 2011-08-17 16:40:04.716144357 -0500
-+@@ -233,6 +233,15 @@
-+ [ --disable-kdeab Disable the KDE3 address book support
-+ ],,if test "$enable_kde" = "yes"; then enable_kdeab=yes; fi)
-+
-++AC_ARG_ENABLE(tde,
-++[ --enable-tde Determines whether to use TQt3/TDE vclplug on platforms
-++ where TQt and TDE are available.
-++],,)
-++
-++AC_ARG_ENABLE(tdeab,
-++[ --disable-tdeab Disable the TDE address book support
-++],,if test "$enable_tde" = "yes"; then enable_tdeab=yes; fi)
-++
-+ AC_ARG_ENABLE(kde4,
-+ [ --enable-kde4 Determines whether to use Qt4/KDE4 vclplug on platforms
-+ where Qt4 and KDE4 are available. May be used with --enable-kde
-+@@ -1350,6 +1359,7 @@
-+ test_cairo=yes
-+ build_gstreamer=yes
-+ test_kde=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1385,6 +1395,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1428,6 +1439,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1463,6 +1475,7 @@
-+ build_gstreamer=yes
-+ test_kde=yes
-+ test_kde4=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_randr=yes
-+ test_freetype=yes
-+@@ -1482,6 +1495,7 @@
-+ test_gtk=yes
-+ build_cairo=yes
-+ test_kde=yes
-++ test_tde=yes
-+ test_cups=yes
-+ test_freetype=yes
-+ test_randr=yes
-+@@ -6141,6 +6155,13 @@
-+ fi
-+ AC_SUBST(ENABLE_KDE4)
-+
-++ENABLE_TDE=""
-++if test "x$enable_tde" = "xyes"; then
-++ ENABLE_TDE="TRUE"
-++ R="$R tde"
-++fi
-++AC_SUBST(ENABLE_TDE)
-++
-+ if test -z "$R"; then
-+ AC_MSG_RESULT([none])
-+ else
-+@@ -7044,6 +7065,129 @@
-+ AC_SUBST(KDE_HAVE_GLIB)
-+
-+ dnl ===================================================================
-++dnl Check whether the Qt3 and TDE libraries are available.
-++dnl ===================================================================
-++
-++TDE_CFLAGS=""
-++TDE_LIBS=""
-++if test "$_os" != "OpenBSD"; then
-++ MOC="moc"
-++fi
-++if test "$test_tde" = "yes" -a "$ENABLE_TDE" = "TRUE" ; then
-++ dnl Search paths for Qt3 and TDE
-++ if test "$build_cpu" != "x86_64" ; then
-++ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib/qt3/include /usr/lib/qt/include /usr/share/qt3/include /usr/local/include/X11/qt3 $x_includes"
-++ qt_libdirs="$QTLIB /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-++ else
-++ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib64/qt3/include /usr/lib64/qt/include /usr/share/qt3/include /usr/lib/qt3/include /usr/lib/qt/include /usr/local/include/X11/qt3 $x_includes"
-++ qt_libdirs="$QTLIB /usr/local/qt/lib64 /usr/lib64/qt /usr/lib64 /usr/X11R6/lib64/X11/qt /usr/X11R6/lib64/qt /usr/lib64/qt3/lib64 /usr/lib64/qt/lib64 /usr/share/qt3/lib64 /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-++ fi
-++ if test -n "$QTDIR" ; then
-++ qt_incdirs="$QTDIR/include $qt_incdirs"
-++ if test "$build_cpu" != "x86_64" ; then
-++ qt_libdirs="$QTDIR/lib $qt_libdirs"
-++ else
-++ qt_libdirs="$QTDIR/lib64 $QTDIR/lib $qt_libdirs"
-++ fi
-++ fi
-++ if test "$build_cpu" != "x86_64" ; then
-++ tde_incdirs="/opt/trinity/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-++ tde_libdirs="/opt/trinity/lib /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib/kde4/lib /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-++ else
-++ tde_incdirs="/opt/trinity/include /usr/lib64/kde/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-++ tde_libdirs="/opt/trinity/lib /usr/lib64/kde/lib64 /usr/local/kde/lib64 /usr/kde/lib64 /usr/lib64/kde /usr/lib64/kde3 /usr/lib64 /usr/X11R6/lib64 /usr/local/lib64 /opt/trinity/lib64 /opt/kde/lib64 /usr/X11R6/kde/lib64 /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-++ fi
-++ if test -n "$TDEDIR" ; then
-++ tde_incdirs="$TDEDIR/include $tde_incdirs"
-++ if test "$build_cpu" != "x86_64" ; then
-++ tde_libdirs="$TDEDIR/lib $tde_libdirs"
-++ else
-++ tde_libdirs="$TDEDIR/lib64 $TDEDIR/lib $tde_libdirs"
-++ fi
-++ fi
-++
-++ dnl What to test
-++ qt_test_include="qstyle.h"
-++ qt_test_library="libqt-mt.so*"
-++ tde_test_include="kapp.h"
-++ tde_test_library="libDCOP.so*"
-++
-++ dnl Check for Qt3 headers
-++ AC_MSG_CHECKING([for Qt3 headers])
-++ qt_incdir="no"
-++ for tde_check in $qt_incdirs ; do
-++ if test -r "$tde_check/$qt_test_include" ; then
-++ qt_incdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$qt_incdir])
-++ if test "x$qt_incdir" = "xno" ; then
-++ AC_MSG_ERROR([Qt3 headers not found. Please specify the root of
-++your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for Qt3 libraries
-++ AC_MSG_CHECKING([for Qt3 libraries])
-++ qt_libdir="no"
-++ for qt_check in $qt_libdirs ; do
-++ if test -r "`ls $qt_check/$qt_test_library 2>/dev/null | head -1`" ; then
-++ qt_libdir="$qt_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$qt_libdir])
-++ if test "x$qt_libdir" = "xno" ; then
-++ AC_MSG_ERROR([Qt3 libraries not found. Please specify the root of
-++your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for Meta Object Compiler
-++ AC_PATH_PROG( MOC, moc, no, [`dirname $qt_libdir`/bin:$QTDIR/bin:$PATH] )
-++ if test "$MOC" = "no" ; then
-++ AC_MSG_ERROR([Qt3 Meta Object Compiler not found. Please specify
-++the root of your Qt3 installation by exporting QTDIR before running "configure".])
-++ fi
-++
-++ dnl Check for TDE headers
-++ AC_MSG_CHECKING([for TDE headers])
-++ tde_incdir="no"
-++ for tde_check in $tde_incdirs ; do
-++ if test -r "$tde_check/$tde_test_include" ; then
-++ tde_incdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$tde_incdir])
-++ if test "x$tde_incdir" = "xno" ; then
-++ AC_MSG_ERROR([TDE headers not found. Please specify the root of
-++your TDE installation by exporting TDEDIR before running "configure".])
-++ fi
-++
-++ dnl Check for TDE libraries
-++ AC_MSG_CHECKING([for TDE libraries])
-++ tde_libdir="no"
-++ for tde_check in $tde_libdirs ; do
-++ if test -r "`ls $tde_check/$tde_test_library 2>/dev/null | head -1`" ; then
-++ tde_libdir="$tde_check"
-++ break
-++ fi
-++ done
-++ AC_MSG_RESULT([$tde_libdir])
-++ if test "x$tde_libdir" = "xno" ; then
-++ AC_MSG_ERROR([TDE libraries not found. Please specify the root of
-++your TDE installation by exporting TDEDIR before running "configure".])
-++ fi
-++
-++ dnl Set the variables
-++ TDE_CFLAGS="-I$qt_incdir -I$tde_incdir -I/usr/include/tqt -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT"
-++ TDE_LIBS="-L$tde_libdir -L$qt_libdir -lkdeui -lkdecore -ltqt -lqt-mt"
-++fi
-++AC_SUBST(TDE_CFLAGS)
-++AC_SUBST(TDE_LIBS)
-++AC_SUBST(MOC)
-++
-++dnl ===================================================================
-+ dnl Test for the enabling the lockdown pieces
-+ dnl ===================================================================
-+ AC_MSG_CHECKING([whether to enable the lockdown pieces])
-+@@ -7100,6 +7244,33 @@
-+ AC_SUBST(ENABLE_KAB)
-+
-+ dnl ===================================================================
-++dnl Test whether to include TDE AB support
-++dnl ===================================================================
-++AC_MSG_CHECKING([whether to enable TDE address book support])
-++if test "$enable_tdeab" = "yes" && test "$enable_tde" = "yes"; then
-++ AC_MSG_RESULT([yes])
-++ AC_LANG_PUSH([C++])
-++ save_CXXFLAGS=$CXXFLAGS
-++ CXXFLAGS="$CXXFLAGS $TDE_CFLAGS"
-++ AC_MSG_CHECKING([whether TDE is between 3.2 and 3.6])
-++ AC_TRY_RUN([
-++#include <kdeversion.h>
-++
-++int main(int argc, char **argv) {
-++ if (KDE_VERSION_MAJOR == 3 && 2 <= KDE_VERSION_MINOR && KDE_VERSION_MINOR <= 6) return 0;
-++ else return 1;
-++}
-++ ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([TDE version too old or too recent, please use another version of TDE or disable TDE address book support])])
-++ CXXFLAGS=$save_CXXFLAGS
-++ AC_LANG_POP([C++])
-++ ENABLE_TDEAB=TRUE
-++else
-++ AC_MSG_RESULT([no])
-++ ENABLE_TDEAB=
-++fi
-++AC_SUBST(ENABLE_TDEAB)
-++
-++dnl ===================================================================
-+ dnl Test whether to include MathMLDTD
-+ dnl ===================================================================
-+ AC_MSG_CHECKING([whether to include MathMLDTD])
-+diff -urN connectivity/source/drivers/tdeab/exports.dxp connectivity/source/drivers/tdeab/exports.dxp
-+--- connectivity/source/drivers/tdeab/exports.dxp 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/exports.dxp 2011-08-17 14:23:01.735590880 -0500
-+@@ -0,0 +1,3 @@
-++component_getImplementationEnvironment
-++component_writeInfo
-++component_getFactory
-+diff -urN connectivity/source/drivers/tdeab/KCatalog.cxx connectivity/source/drivers/tdeab/KCatalog.cxx
-+--- connectivity/source/drivers/tdeab/KCatalog.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KCatalog.cxx 2011-08-17 14:29:39.766199199 -0500
-+@@ -0,0 +1,128 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KCatalog.hxx"
-++#include "KConnection.hxx"
-++#include "KTables.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++using namespace ::cppu;
-++
-++// -------------------------------------------------------------------------
-++KabCatalog::KabCatalog(KabConnection* _pCon)
-++ : connectivity::sdbcx::OCatalog(_pCon),
-++ m_pConnection(_pCon),
-++ m_xMetaData(m_pConnection->getMetaData())
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshTables()
-++{
-++ TStringVector aVector;
-++ Sequence< ::rtl::OUString > aTypes(1);
-++ aTypes[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"));
-++ Reference< XResultSet > xResult = m_xMetaData->getTables(
-++ Any(),
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-++ aTypes);
-++
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult,UNO_QUERY);
-++ ::rtl::OUString aName;
-++ // const ::rtl::OUString& sDot = KabCatalog::getDot();
-++
-++ while (xResult->next())
-++ {
-++ // aName = xRow->getString(2);
-++ // aName += sDot;
-++ aName = xRow->getString(3);
-++ aVector.push_back(aName);
-++ }
-++ }
-++ if (m_pTables)
-++ m_pTables->reFill(aVector);
-++ else
-++ m_pTables = new KabTables(m_xMetaData,*this,m_aMutex,aVector);
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshViews()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshGroups()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabCatalog::refreshUsers()
-++{
-++}
-++// -------------------------------------------------------------------------
-++const ::rtl::OUString& KabCatalog::getDot()
-++{
-++ static const ::rtl::OUString sDot = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("."));
-++ return sDot;
-++}
-++// -----------------------------------------------------------------------------
-++
-++// XTablesSupplier
-++Reference< XNameAccess > SAL_CALL KabCatalog::getTables( ) throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++ checkDisposed(rBHelper.bDisposed);
-++
-++ try
-++ {
-++ if (!m_pTables)
-++ refreshTables();
-++ }
-++ catch( const RuntimeException& )
-++ {
-++ // allowed to leave this method
-++ throw;
-++ }
-++ catch( const Exception& )
-++ {
-++ // allowed
-++ }
-++
-++ return m_pTables;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KCatalog.hxx connectivity/source/drivers/tdeab/KCatalog.hxx
-+--- connectivity/source/drivers/tdeab/KCatalog.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KCatalog.hxx 2011-08-17 14:29:32.345628247 -0500
-+@@ -0,0 +1,68 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CATALOG_HXX_
-++#define _CONNECTIVITY_KAB_CATALOG_HXX_
-++
-++#include "connectivity/sdbcx/VCatalog.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabConnection;
-++
-++ class KabCatalog : public connectivity::sdbcx::OCatalog
-++ {
-++ KabConnection* m_pConnection; // used to get the metadata
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; // just to make things easier
-++
-++ public:
-++ KabCatalog(KabConnection* _pCon);
-++
-++ inline KabConnection* getConnection() const { return m_pConnection; }
-++
-++ static const ::rtl::OUString& getDot();
-++
-++ // implementation of the pure virtual methods
-++ virtual void refreshTables();
-++ virtual void refreshViews();
-++ virtual void refreshGroups();
-++ virtual void refreshUsers();
-++
-++ // XTablesSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CATALOG_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KColumns.cxx connectivity/source/drivers/tdeab/KColumns.cxx
-+--- connectivity/source/drivers/tdeab/KColumns.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KColumns.cxx 2011-08-17 14:29:23.634958020 -0500
-+@@ -0,0 +1,102 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KColumns.hxx"
-++#include "KTable.hxx"
-++#include "KTables.hxx"
-++#include "KCatalog.hxx"
-++#include "connectivity/sdbcx/VColumn.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace connectivity::sdbcx;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++// -------------------------------------------------------------------------
-++sdbcx::ObjectType KabColumns::createObject(const ::rtl::OUString& _rName)
-++{
-++ Reference< XResultSet > xResult = m_pTable->getConnection()->getMetaData()->getColumns(
-++ Any(),
-++ m_pTable->getSchema(),
-++ m_pTable->getTableName(),
-++ _rName);
-++
-++ sdbcx::ObjectType xRet = NULL;
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult,UNO_QUERY);
-++
-++ while (xResult->next())
-++ {
-++ if (xRow->getString(4) == _rName)
-++ {
-++ OColumn* pRet = new OColumn(
-++ _rName,
-++ xRow->getString(6),
-++ xRow->getString(13),
-++ xRow->getString(12),
-++ xRow->getInt(11),
-++ xRow->getInt(7),
-++ xRow->getInt(9),
-++ xRow->getInt(5),
-++ sal_False,
-++ sal_False,
-++ sal_False,
-++ sal_True);
-++ xRet = pRet;
-++ break;
-++ }
-++ }
-++ }
-++
-++ return xRet;
-++}
-++// -------------------------------------------------------------------------
-++void KabColumns::impl_refresh() throw(RuntimeException)
-++{
-++ m_pTable->refreshColumns();
-++}
-++// -------------------------------------------------------------------------
-++KabColumns::KabColumns( KabTable* _pTable,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector)
-++ : sdbcx::OCollection(*_pTable, sal_True, _rMutex, _rVector),
-++ m_pTable(_pTable)
-++{
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KColumns.hxx connectivity/source/drivers/tdeab/KColumns.hxx
-+--- connectivity/source/drivers/tdeab/KColumns.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KColumns.hxx 2011-08-17 14:29:13.974214692 -0500
-+@@ -0,0 +1,58 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_COLUMNS_HXX_
-++#define _CONNECTIVITY_KAB_COLUMNS_HXX_
-++
-++#include "KTable.hxx"
-++#include "connectivity/sdbcx/VCollection.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabColumns : public sdbcx::OCollection
-++ {
-++ protected:
-++ KabTable* m_pTable;
-++
-++ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-++ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-++
-++ public:
-++ KabColumns( KabTable* _pTable,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_COLUMNS_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kcondition.cxx connectivity/source/drivers/tdeab/kcondition.cxx
-+--- connectivity/source/drivers/tdeab/kcondition.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kcondition.cxx 2011-08-17 14:29:06.863667577 -0500
-+@@ -0,0 +1,233 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "kcondition.hxx"
-++#include "kfields.hxx"
-++#include "connectivity/CommonTools.hxx"
-++
-++using namespace ::connectivity::kab;
-++using namespace ::com::sun::star::sdbc;
-++// -----------------------------------------------------------------------------
-++KabCondition::~KabCondition()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionConstant::KabConditionConstant(const sal_Bool bValue)
-++ : KabCondition(),
-++ m_bValue(bValue)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::isAlwaysTrue() const
-++{
-++ return m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::isAlwaysFalse() const
-++{
-++ return !m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionConstant::eval(const ::KABC::Addressee &) const
-++{
-++ return m_bValue;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionColumn::KabConditionColumn(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabCondition(),
-++ m_nFieldNumber(findKabField(sColumnName))
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionColumn::isAlwaysTrue() const
-++{
-++ // Sometimes true, sometimes false
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionColumn::isAlwaysFalse() const
-++{
-++ // Sometimes true, sometimes false
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionNull::KabConditionNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabConditionColumn(sColumnName)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionNull::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ return aQtName.isNull();
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionNotNull::KabConditionNotNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-++ : KabConditionColumn(sColumnName)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionNotNull::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ return !aQtName.isNull();
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionCompare::KabConditionCompare(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionColumn(sColumnName),
-++ m_sMatchString(sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionEqual::KabConditionEqual(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionEqual::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++// Timestamps should not be compared according to their string value
-++// The syntax for such queries should be like
-++// {ts '2004-03-29 12:55:00.000000'}
-++// They should also support operators like '<' or '>='
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return sValue == m_sMatchString;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionDifferent::KabConditionDifferent(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionDifferent::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return sValue != m_sMatchString;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionSimilar::KabConditionSimilar(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-++ : KabConditionCompare(sColumnName, sMatchString)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionSimilar::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-++
-++ if (aQtName.isNull()) return sal_False;
-++
-++ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-++ return match(m_sMatchString, sValue, '\0');
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionBoolean::KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight)
-++ : KabCondition(),
-++ m_pLeft(pLeft),
-++ m_pRight(pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionBoolean::~KabConditionBoolean()
-++{
-++ delete m_pLeft;
-++ delete m_pRight;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionOr::KabConditionOr(KabCondition *pLeft, KabCondition *pRight)
-++ : KabConditionBoolean(pLeft, pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::isAlwaysTrue() const
-++{
-++ return m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::isAlwaysFalse() const
-++{
-++ return m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionOr::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ // We avoid evaluating terms as much as we can
-++ if (m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue()) return sal_True;
-++ if (m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse()) return sal_False;
-++
-++ if (m_pLeft->eval(aAddressee)) return sal_True;
-++ if (m_pRight->eval(aAddressee)) return sal_True;
-++
-++ return sal_False;
-++}
-++// -----------------------------------------------------------------------------
-++KabConditionAnd::KabConditionAnd(KabCondition *pLeft, KabCondition *pRight)
-++ : KabConditionBoolean(pLeft, pRight)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::isAlwaysTrue() const
-++{
-++ return m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::isAlwaysFalse() const
-++{
-++ return m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse();
-++}
-++// -----------------------------------------------------------------------------
-++sal_Bool KabConditionAnd::eval(const ::KABC::Addressee &aAddressee) const
-++{
-++ // We avoid evaluating terms as much as we can
-++ if (m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse()) return sal_False;
-++ if (m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue()) return sal_True;
-++
-++ if (!m_pLeft->eval(aAddressee)) return sal_False;
-++ if (!m_pRight->eval(aAddressee)) return sal_False;
-++
-++ return sal_True;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kcondition.hxx connectivity/source/drivers/tdeab/kcondition.hxx
-+--- connectivity/source/drivers/tdeab/kcondition.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kcondition.hxx 2011-08-17 14:28:59.403093526 -0500
-+@@ -0,0 +1,164 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CONDITION_HXX_
-++#define _CONNECTIVITY_KAB_CONDITION_HXX_
-++
-++#include <comphelper/types.hxx>
-++#include <shell/tde_headers.h>
-++#include <connectivity/dbexception.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++// -----------------------------------------------------------------------------
-++class KabCondition
-++{
-++ public:
-++ virtual ~KabCondition();
-++ virtual sal_Bool isAlwaysTrue() const = 0;
-++ virtual sal_Bool isAlwaysFalse() const = 0;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const = 0;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionConstant : public KabCondition
-++{
-++ protected:
-++ sal_Bool m_bValue;
-++
-++ public:
-++ KabConditionConstant(const sal_Bool bValue);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionColumn : public KabCondition
-++{
-++ protected:
-++ sal_Int32 m_nFieldNumber;
-++
-++ TQString value(const ::KABC::Addressee &aAddressee) const;
-++
-++ public:
-++ KabConditionColumn(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionNull : public KabConditionColumn
-++{
-++ public:
-++ KabConditionNull(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionNotNull : public KabConditionColumn
-++{
-++ public:
-++ KabConditionNotNull(
-++ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionCompare : public KabConditionColumn
-++{
-++ protected:
-++ const ::rtl::OUString m_sMatchString;
-++
-++ public:
-++ KabConditionCompare(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionEqual : public KabConditionCompare
-++{
-++ public:
-++ KabConditionEqual(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionDifferent : public KabConditionCompare
-++{
-++ public:
-++ KabConditionDifferent(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionSimilar : public KabConditionCompare
-++{
-++ public:
-++ KabConditionSimilar(
-++ const ::rtl::OUString &sColumnName,
-++ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionBoolean : public KabCondition
-++{
-++ protected:
-++ KabCondition *m_pLeft, *m_pRight;
-++
-++ public:
-++ KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight);
-++ virtual ~KabConditionBoolean();
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionOr : public KabConditionBoolean
-++{
-++ public:
-++ KabConditionOr(KabCondition *pLeft, KabCondition *pRight);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++class KabConditionAnd : public KabConditionBoolean
-++{
-++ public:
-++ KabConditionAnd(KabCondition *pLeft, KabCondition *pRight);
-++ virtual sal_Bool isAlwaysTrue() const;
-++ virtual sal_Bool isAlwaysFalse() const;
-++ virtual sal_Bool eval(const ::KABC::Addressee &addressee) const;
-++};
-++// -----------------------------------------------------------------------------
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CONDITION_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KConnection.cxx connectivity/source/drivers/tdeab/KConnection.cxx
-+--- connectivity/source/drivers/tdeab/KConnection.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KConnection.cxx 2011-08-17 14:28:53.822664134 -0500
-+@@ -0,0 +1,332 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KConnection.hxx"
-++#include "KDatabaseMetaData.hxx"
-++#include "KStatement.hxx"
-++#include "KPreparedStatement.hxx"
-++#include "KDriver.hxx"
-++#include "KCatalog.hxx"
-++#include <com/sun/star/sdbc/ColumnValue.hpp>
-++#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-++#include <shell/tde_headers.h>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++
-++IMPLEMENT_SERVICE_INFO(KabConnection, "com.sun.star.sdbc.drivers.KabConnection", "com.sun.star.sdbc.Connection")
-++//-----------------------------------------------------------------------------
-++KabConnection::KabConnection(KabDriver* _pDriver)
-++ : OMetaConnection_BASE(m_aMutex),
-++ OSubComponent<KabConnection, KabConnection_BASE>((::cppu::OWeakObject*)_pDriver, this),
-++ m_xMetaData(NULL),
-++ m_pAddressBook(NULL),
-++ m_pDriver(_pDriver)
-++{
-++ m_pDriver->acquire();
-++}
-++//-----------------------------------------------------------------------------
-++KabConnection::~KabConnection()
-++{
-++ if (!isClosed())
-++ close();
-++
-++ m_pDriver->release();
-++ m_pDriver = NULL;
-++}
-++//-----------------------------------------------------------------------------
-++void SAL_CALL KabConnection::release() throw()
-++{
-++ relase_ChildImpl();
-++}
-++// -----------------------------------------------------------------------------
-++void KabConnection::construct(const ::rtl::OUString&, const Sequence< PropertyValue >&) throw(SQLException)
-++{
-++ osl_incrementInterlockedCount( &m_refCount );
-++
-++ // create a TDE address book object
-++ m_pAddressBook = KABC::StdAddressBook::self();
-++ m_pAddressBook->setAutomaticSave(false);
-++// perharps we should analyze the URL to know whether the addressbook is local, over LDAP, etc...
-++// perharps we should get some user and password information from "info" properties
-++
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// XServiceInfo
-++// --------------------------------------------------------------------------------
-++Reference< XStatement > SAL_CALL KabConnection::createStatement( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // create a statement
-++ // the statement can only be executed once
-++ Reference< XStatement > xReturn = new KabStatement(this);
-++ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-++ return xReturn;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XPreparedStatement > SAL_CALL KabConnection::prepareStatement( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // create a statement
-++ // the statement can only be executed more than once
-++ Reference< XPreparedStatement > xReturn = new KabPreparedStatement(this, _sSql);
-++ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-++ return xReturn;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XPreparedStatement > SAL_CALL KabConnection::prepareCall( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // not implemented yet :-) a task to do
-++ return NULL;
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabConnection::nativeSQL( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ // when you need to transform SQL92 to you driver specific you can do it here
-++
-++ return _sSql;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setAutoCommit( sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ // here you have to set your commit mode please have a look at the jdbc documentation to get a clear explanation
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::getAutoCommit( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ // you have to distinguish which if you are in autocommit mode or not
-++ // at normal case true should be fine here
-++
-++ return sal_True;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::commit( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // when you database does support transactions you should commit here
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::rollback( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // same as commit but for the other case
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::isClosed( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // just simple -> we are closed when we are disposed, that means someone called dispose(); (XComponent)
-++ return KabConnection_BASE::rBHelper.bDisposed;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XDatabaseMetaData > SAL_CALL KabConnection::getMetaData( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // here we have to create the class with biggest interface
-++ // The answer is 42 :-)
-++ Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
-++ if (!xMetaData.is())
-++ {
-++ xMetaData = new KabDatabaseMetaData(this); // need the connection because it can return it
-++ m_xMetaData = xMetaData;
-++ }
-++
-++ return xMetaData;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setReadOnly( sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // set you connection to readonly
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabConnection::isReadOnly( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // return if your connection to readonly
-++ return sal_False;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setCatalog( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // if your database doesn't work with catalogs you go to next method otherwise you kjnow what to do
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabConnection::getCatalog( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++
-++ // return your current catalog
-++ return ::rtl::OUString();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setTransactionIsolation( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // set your isolation level
-++ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabConnection::getTransactionIsolation( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++
-++ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-++ return TransactionIsolation::NONE;
-++}
-++// --------------------------------------------------------------------------------
-++Reference< ::com::sun::star::container::XNameAccess > SAL_CALL KabConnection::getTypeMap( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++
-++ // if your driver has special database types you can return it here
-++
-++ return NULL;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::setTypeMap( const Reference< ::com::sun::star::container::XNameAccess >& ) throw(SQLException, RuntimeException)
-++{
-++ // the other way around
-++}
-++// --------------------------------------------------------------------------------
-++// XCloseable
-++void SAL_CALL KabConnection::close( ) throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-++ }
-++ dispose();
-++}
-++// --------------------------------------------------------------------------------
-++// XWarningsSupplier
-++Any SAL_CALL KabConnection::getWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ // when you collected some warnings -> return it
-++ return Any();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabConnection::clearWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ // you should clear your collected warnings here
-++}
-++//------------------------------------------------------------------------------
-++void KabConnection::disposing()
-++{
-++ // we noticed that we should be destroied in near future so we have to dispose our statements
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ for (OWeakRefArray::iterator i = m_aStatements.begin(); m_aStatements.end() != i; ++i)
-++ {
-++ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-++ if (xComp.is())
-++ xComp->dispose();
-++ }
-++ m_aStatements.clear();
-++
-++ if (m_pAddressBook != NULL)
-++ {
-++ m_pAddressBook->close();
-++ m_pAddressBook = NULL;
-++ }
-++
-++ m_xMetaData = ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData>();
-++
-++ dispose_ChildImpl();
-++ KabConnection_BASE::disposing();
-++}
-++// -----------------------------------------------------------------------------
-++Reference< XTablesSupplier > SAL_CALL KabConnection::createCatalog()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ Reference< XTablesSupplier > xTab = m_xCatalog;
-++ if (!m_xCatalog.is())
-++ {
-++ KabCatalog *pCat = new KabCatalog(this);
-++ xTab = pCat;
-++ m_xCatalog = xTab;
-++ }
-++ return xTab;
-++}
-++// -----------------------------------------------------------------------------
-++::KABC::AddressBook* KabConnection::getAddressBook() const
-++{
-++ return m_pAddressBook;
-++}
-++// -----------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL createKabConnection( void* _pDriver )
-++{
-++ KabConnection* pConnection = new KabConnection( static_cast< KabDriver* >( _pDriver ) );
-++ // by definition, the pointer crossing library boundaries as void ptr is acquired once
-++ pConnection->acquire();
-++ return pConnection;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KConnection.hxx connectivity/source/drivers/tdeab/KConnection.hxx
-+--- connectivity/source/drivers/tdeab/KConnection.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KConnection.hxx 2011-08-17 14:28:47.592184720 -0500
-+@@ -0,0 +1,142 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_CONNECTION_HXX_
-++#define _CONNECTIVITY_KAB_CONNECTION_HXX_
-++
-++#include <map>
-++#include "OSubComponent.hxx"
-++#include "connectivity/CommonTools.hxx"
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/sdbc/SQLWarning.hpp>
-++#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-++#include <com/sun/star/sdbc/XConnection.hpp>
-++#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-++#include <comphelper/broadcasthelper.hxx>
-++#include <cppuhelper/compbase3.hxx>
-++
-++namespace KABC
-++{
-++ class StdAddressBook;
-++ class AddressBook;
-++}
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++
-++ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XConnection,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::lang::XServiceInfo
-++ > OMetaConnection_BASE;
-++
-++ class KabStatement_Base;
-++ class KabDriver;
-++ class KabDatabaseMetaData;
-++
-++ typedef OMetaConnection_BASE KabConnection_BASE; // implements basics and text encoding
-++ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-++
-++ class KabConnection : public comphelper::OBaseMutex,
-++ public KabConnection_BASE,
-++ public OSubComponent<KabConnection, KabConnection_BASE>
-++ {
-++ friend class OSubComponent<KabConnection, KabConnection_BASE>;
-++
-++ protected:
-++ //====================================================================
-++ // Data attributes
-++ //====================================================================
-++ ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++
-++ OWeakRefArray m_aStatements; // vector containing a list of all the Statement objects
-++ // for this Connection
-++
-++ ::KABC::StdAddressBook* m_pAddressBook; // the address book
-++ KabDriver* m_pDriver; // pointer to the owning driver object
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier>
-++ m_xCatalog; // needed for the SQL interpreter
-++
-++ public:
-++ virtual void construct( const ::rtl::OUString& url,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info) throw(::com::sun::star::sdbc::SQLException);
-++
-++ KabConnection(KabDriver* _pDriver);
-++ virtual ~KabConnection();
-++
-++ void closeAllStatements () throw( ::com::sun::star::sdbc::SQLException);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XInterface
-++ virtual void SAL_CALL release() throw();
-++
-++ // XServiceInfo
-++ DECLARE_SERVICE_INFO();
-++
-++ // XConnection
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setAutoCommit( sal_Bool autoCommit ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setReadOnly( sal_Bool readOnly ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setCatalog( const ::rtl::OUString& catalog ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTransactionIsolation( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // needed for the SQL interpreter
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > SAL_CALL createCatalog();
-++
-++ // accessors
-++ inline KabDriver* getDriver() const { return m_pDriver;}
-++ ::KABC::AddressBook* getAddressBook() const;
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_CONNECTION_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx
-+--- connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx 2011-08-17 14:28:44.171921542 -0500
-+@@ -0,0 +1,1084 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDatabaseMetaData.hxx"
-++#include "kfields.hxx"
-++#include "TDEInit.h"
-++#include <shell/tde_headers.h>
-++#include "FDatabaseMetaDataResultSet.hxx"
-++#include "OTypeInfo.hxx"
-++#include <com/sun/star/sdbc/ColumnValue.hpp>
-++#include <com/sun/star/sdbc/ResultSetType.hpp>
-++#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++
-++KabDatabaseMetaData::KabDatabaseMetaData(KabConnection* _pCon)
-++ : m_xConnection(_pCon),
-++ m_bUseCatalog(sal_True)
-++{
-++ OSL_ENSURE(_pCon,"KabDatabaseMetaData::KabDatabaseMetaData: No connection set!");
-++
-++ osl_incrementInterlockedCount( &m_refCount );
-++ m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// -------------------------------------------------------------------------
-++KabDatabaseMetaData::~KabDatabaseMetaData()
-++{
-++}
-++// -------------------------------------------------------------------------
-++const ::rtl::OUString & KabDatabaseMetaData::getAddressBookTableName()
-++{
-++ static const ::rtl::OUString aAddressBookTableName
-++ (::rtl::OUString::createFromAscii( i18n("Address Book") ));
-++
-++ return aAddressBookTableName;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogSeparator( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ if (m_bUseCatalog)
-++ { // do some special here for you database
-++ }
-++
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxBinaryLiteralLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxRowSize( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCatalogNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCharLiteralLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInIndex( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCursorNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxConnections( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInTable( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatementLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTableNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTablesInSelect( ) throw(SQLException, RuntimeException)
-++{
-++ // MaxTablesInSelect describes how many tables can participate in the FROM part of a given SELECT statement,
-++ // currently, the resultset/statement implementations can cope with one table only
-++ sal_Int32 nValue = 1;
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::doesMaxRowSizeIncludeBlobs( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithAddColumn( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithDropColumn( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxIndexLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsNonNullableColumns( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ if (m_bUseCatalog)
-++ {
-++ }
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getIdentifierQuoteString( ) throw(SQLException, RuntimeException)
-++{
-++ // normally this is "
-++ ::rtl::OUString aVal = ::rtl::OUString::createFromAscii("\"");
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getExtraNameCharacters( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aVal;
-++ return aVal;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDifferentTableCorrelationNames( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::isCatalogAtStart( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Bool bValue = sal_False;
-++ if (m_bUseCatalog)
-++ {
-++ }
-++ return bValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionIgnoredInTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionCausesTransactionCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataManipulationTransactionsOnly( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedDelete( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedUpdate( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossRollback( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossCommit( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossRollback( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactionIsolationLevel( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInDataManipulation( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92FullSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92EntryLevelSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True; // should be supported at least
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsIntegrityEnhancementFacility( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInIndexDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInTableDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInTableDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInIndexDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInDataManipulation( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatements( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxProcedureNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxSchemaNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::allProceduresAreCallable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsStoredProcedures( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSelectForUpdate( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::allTablesAreSelectable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::isReadOnly( ) throw(SQLException, RuntimeException)
-++{
-++ // for the moment, we have read-only addresses, but this might change in the future
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFiles( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFilePerTable( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTypeConversion( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullPlusNonNullIsNull( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsColumnAliasing( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsTableCorrelationNames( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsConvert( sal_Int32, sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsExpressionsInOrderBy( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupBy( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByBeyondSelect( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByUnrelated( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleTransactions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleResultSets( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsLikeEscapeClause( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsOrderByUnrelated( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnion( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnionAll( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtEnd( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtStart( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedHigh( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedLow( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInProcedureCalls( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInProcedureCalls( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCorrelatedSubqueries( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInComparisons( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInExists( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInIns( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInQuantifieds( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92IntermediateSQL( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getURL( ) throw(SQLException, RuntimeException)
-++{
-++ // if someday we support more than the default address book,
-++ // this method should return the URL which was used to create it
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("sdbc:address:kab:");
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getUserName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("kab");
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverVersion() throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii(KAB_DRIVER_VERSION);
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductVersion( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductName( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getProcedureTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSchemaTerm( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMajorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MAJOR;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDefaultTransactionIsolation( ) throw(SQLException, RuntimeException)
-++{
-++ return TransactionIsolation::NONE;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMinorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MINOR;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSQLKeywords( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSearchStringEscape( ) throw(SQLException, RuntimeException)
-++{
-++ ::rtl::OUString aValue;
-++ return aValue;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getStringFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getTimeDateFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getSystemFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDatabaseMetaData::getNumericFunctions( ) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsExtendedSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsCoreSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsMinimumSQLGrammar( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsFullOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsLimitedOuterJoins( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInGroupBy( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInOrderBy( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInSelect( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxUserNameLength( ) throw(SQLException, RuntimeException)
-++{
-++ sal_Int32 nValue = 0; // 0 means no limit
-++ return nValue;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetType( sal_Int32 setType ) throw(SQLException, RuntimeException)
-++{
-++ switch (setType)
-++ {
-++ case ResultSetType::FORWARD_ONLY:
-++ case ResultSetType::SCROLL_INSENSITIVE:
-++ return sal_True;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ switch (setType)
-++ {
-++ case ResultSetType::FORWARD_ONLY:
-++ case ResultSetType::SCROLL_INSENSITIVE:
-++ return sal_True;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::ownInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::othersInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::updatesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::deletesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::insertsAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDatabaseMetaData::supportsBatchUpdates( ) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabDatabaseMetaData::getConnection( ) throw(SQLException, RuntimeException)
-++{
-++ return (Reference< XConnection >) m_xConnection.get();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTableTypes( ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-++
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(2);
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = new ORowSetValueDecorator(aTable);
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTypeInfo( ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(19);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-++ aRow[2] = new ORowSetValueDecorator(DataType::CHAR);
-++ aRow[3] = new ORowSetValueDecorator((sal_Int32) 254);
-++ aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-++ aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-++ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[7] = new ORowSetValueDecorator((sal_Int32) ColumnValue::NULLABLE);
-++ aRow[8] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[9] = new ORowSetValueDecorator((sal_Int32) ColumnSearch::CHAR);
-++ aRow[10] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[11] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[12] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[14] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[16] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[17] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[18] = new ORowSetValueDecorator((sal_Int32) 10);
-++ aRows.push_back(aRow);
-++// Much more types might appear in TDE address books
-++// To be completed
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCatalogs( ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCatalogs );
-++}
-++// -----------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getSchemas( ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eSchemas );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumnPrivileges(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-++ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eColumnPrivileges );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumns(
-++ const Any&,
-++ const ::rtl::OUString&,
-++ const ::rtl::OUString& tableNamePattern,
-++ const ::rtl::OUString& columnNamePattern) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumns);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (match(tableNamePattern, getAddressBookTableName(), '\0'))
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(19);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-++ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[9] = ODatabaseMetaDataResultSet::get0Value();
-++ aRow[10] = new ORowSetValueDecorator((sal_Int32) 10);
-++ aRow[11] = ODatabaseMetaDataResultSet::get1Value();
-++ aRow[12] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[14] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[15] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[16] = new ORowSetValueDecorator((sal_Int32) 254);
-++ aRow[18] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("YES"));
-++
-++ sal_Int32 nPosition = 1;
-++ TQString aQtName;
-++ ::rtl::OUString sName;
-++
-++ aQtName = ::KABC::Addressee::revisionLabel();
-++ sName = (const sal_Unicode *) aQtName.ucs2();
-++ if (match(columnNamePattern, sName, '\0'))
-++ {
-++ aRow[4] = new ORowSetValueDecorator(sName);
-++ aRow[5] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-++ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-++ aRow[17] = new ORowSetValueDecorator(nPosition++);
-++ aRows.push_back(aRow);
-++ }
-++
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ ::KABC::Field::List::iterator aField;
-++
-++ for ( aField = aFields.begin();
-++ aField != aFields.end();
-++ ++aField, ++nPosition)
-++ {
-++ aQtName = (*aField)->label();
-++ sName = (const sal_Unicode *) aQtName.ucs2();
-++ if (match(columnNamePattern, sName, '\0'))
-++ {
-++ aRow[4] = new ORowSetValueDecorator(sName);
-++ aRow[5] = new ORowSetValueDecorator(DataType::CHAR);
-++ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-++ aRow[7] = new ORowSetValueDecorator((sal_Int32) 256);
-++// Might be VARCHAR and not CHAR[256]...
-++ aRow[17] = new ORowSetValueDecorator(nPosition);
-++ aRows.push_back(aRow);
-++ }
-++ }
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTables(
-++ const Any&,
-++ const ::rtl::OUString&,
-++ const ::rtl::OUString&,
-++ const Sequence< ::rtl::OUString >& types) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTables);
-++ Reference< XResultSet > xRef = pResult;
-++
-++ // check whether we have tables in the requested types
-++ // for the moment, we answer only the "TABLE" table type
-++ // when no types are given at all, we return all the tables
-++ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-++ sal_Bool bTableFound = sal_False;
-++ const ::rtl::OUString* p = types.getConstArray(),
-++ * pEnd = p + types.getLength();
-++
-++ if (p == pEnd)
-++ {
-++ bTableFound = sal_True;
-++ }
-++ else while (p < pEnd)
-++ {
-++ if (match(*p, aTable, '\0'))
-++ {
-++ bTableFound = sal_True;
-++ break;
-++ }
-++ p++;
-++ }
-++ if (!bTableFound)
-++ return xRef;
-++
-++ static ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (aRows.empty())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow(6);
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-++ aRow[4] = new ORowSetValueDecorator(aTable);
-++ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedureColumns(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedureColumns );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedures(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedures );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getVersionColumns(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
-++{
-++ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eVersionColumns);
-++
-++ Reference< XResultSet > xRef = pResult;
-++
-++ ODatabaseMetaDataResultSet::ORows aRows;
-++
-++ if (table == getAddressBookTableName())
-++ {
-++ ODatabaseMetaDataResultSet::ORow aRow( 9 );
-++ TQString aQtName = ::KABC::Addressee::revisionLabel();
-++ ::rtl::OUString sName = (const sal_Unicode *) aQtName.ucs2();
-++
-++ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-++
-++ aRow[2] = new ORowSetValueDecorator(sName);
-++ aRow[3] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-++ aRow[4] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-++
-++ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[7] = ODatabaseMetaDataResultSet::getEmptyValue();
-++ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-++
-++ aRows.push_back(aRow);
-++ }
-++ pResult->setRows(aRows);
-++ return xRef;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getExportedKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eExportedKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getImportedKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eImportedKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getPrimaryKeys(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::ePrimaryKeys );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getIndexInfo(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-++ sal_Bool, sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eIndexInfo );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getBestRowIdentifier(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString&, sal_Int32,
-++ sal_Bool ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eBestRowIdentifier );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTablePrivileges(
-++ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eTablePrivileges );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCrossReference(
-++ const Any&, const ::rtl::OUString&,
-++ const ::rtl::OUString&, const Any&,
-++ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCrossReference );
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getUDTs( const Any&, const ::rtl::OUString&, const ::rtl::OUString&, const Sequence< sal_Int32 >& ) throw(SQLException, RuntimeException)
-++{
-++ OSL_ENSURE(0,"Not implemented yet!");
-++ throw SQLException();
-++}
-++// -----------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx
-+--- connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx 2011-08-17 14:28:31.880975797 -0500
-+@@ -0,0 +1,217 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++#define _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++
-++#include "KConnection.hxx"
-++#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-++#include <cppuhelper/implbase1.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ //**************************************************************
-++ //************ Class: KabDatabaseMetaData
-++ //**************************************************************
-++
-++ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XDatabaseMetaData> KabDatabaseMetaData_BASE;
-++
-++ class KabDatabaseMetaData : public KabDatabaseMetaData_BASE
-++ {
-++ ::com::sun::star::uno::Reference< KabConnection > m_xConnection;
-++ sal_Bool m_bUseCatalog;
-++
-++ public:
-++
-++ inline KabConnection* getOwnConnection() const { return m_xConnection.get(); }
-++
-++ KabDatabaseMetaData(KabConnection* _pCon);
-++ static const ::rtl::OUString & getAddressBookTableName();
-++ virtual ~KabDatabaseMetaData();
-++
-++ // this interface is really BIG
-++ // XDatabaseMetaData
-++ virtual sal_Bool SAL_CALL allProceduresAreCallable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL allTablesAreSelectable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getURL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getUserName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedHigh( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedLow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullsAreSortedAtEnd( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDatabaseProductName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDatabaseProductVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDriverName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getDriverVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDriverMajorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDriverMinorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL usesLocalFiles( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL usesLocalFilePerTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesUpperCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesLowerCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getIdentifierQuoteString( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSQLKeywords( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getNumericFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getStringFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSystemFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getTimeDateFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSearchStringEscape( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getExtraNameCharacters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsAlterTableWithAddColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsAlterTableWithDropColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsColumnAliasing( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL nullPlusNonNullIsNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTypeConversion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsConvert( sal_Int32 fromType, sal_Int32 toType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDifferentTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsExpressionsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOrderByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsGroupByBeyondSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsLikeEscapeClause( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMultipleResultSets( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMultipleTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsNonNullableColumns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsMinimumSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCoreSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsExtendedSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92EntryLevelSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92IntermediateSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsANSI92FullSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsIntegrityEnhancementFacility( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsFullOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsLimitedOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSchemaTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getProcedureTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCatalogAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogSeparator( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsPositionedDelete( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsPositionedUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSelectForUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsStoredProcedures( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInComparisons( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInExists( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInIns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsSubqueriesInQuantifieds( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsCorrelatedSubqueries( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsUnion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsUnionAll( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxBinaryLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCharLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInIndex( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxColumnsInTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxConnections( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCursorNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxIndexLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxSchemaNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxProcedureNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxCatalogNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxRowSize( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxStatementLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxStatements( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxTableNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxTablesInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMaxUserNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getDefaultTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsTransactionIsolationLevel( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedures( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedureColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTables( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getSchemas( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCatalogs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTableTypes( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumnPrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTablePrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getBestRowIdentifier( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Int32 scope, sal_Bool nullable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getVersionColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog, const ::rtl::OUString& primarySchema, const ::rtl::OUString& primaryTable, const ::com::sun::star::uno::Any& foreignCatalog, const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTypeInfo( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getIndexInfo( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsResultSetType( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 concurrency ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL ownInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL othersInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL updatesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL deletesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL insertsAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsBatchUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getUDTs( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& typeNamePattern, const ::com::sun::star::uno::Sequence< sal_Int32 >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDriver.cxx connectivity/source/drivers/tdeab/KDriver.cxx
-+--- connectivity/source/drivers/tdeab/KDriver.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDriver.cxx 2011-08-17 14:28:05.938979574 -0500
-+@@ -0,0 +1,476 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDriver.hxx"
-++#include "TDEInit.h"
-++#include "KConnection.hxx"
-++
-++/** === begin UNO includes === **/
-++#include <com/sun/star/sdb/SQLContext.hpp>
-++#include <com/sun/star/lang/NullPointerException.hpp>
-++#include <com/sun/star/frame/XDesktop.hpp>
-++/** === end UNO includes === **/
-++#include <rtl/ustrbuf.hxx>
-++#include <tools/diagnose_ex.h>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdb;
-++using namespace com::sun::star::frame;
-++using namespace connectivity::kab;
-++
-++// =======================================================================
-++// = KabImplModule
-++// =======================================================================
-++// --------------------------------------------------------------------------------
-++KabImplModule::KabImplModule( const Reference< XMultiServiceFactory >& _rxFactory )
-++ :m_xORB(_rxFactory)
-++ ,m_bAttemptedLoadModule(false)
-++ ,m_bAttemptedInitialize(false)
-++ ,m_hConnectorModule(NULL)
-++ ,m_pConnectionFactoryFunc(NULL)
-++ ,m_pApplicationInitFunc(NULL)
-++ ,m_pApplicationShutdownFunc(NULL)
-++ ,m_pTDEVersionCheckFunc(NULL)
-++{
-++ if ( !m_xORB.is() )
-++ throw NullPointerException();
-++}
-++
-++// --------------------------------------------------------------------------------
-++bool KabImplModule::isTDEPresent()
-++{
-++ if ( !impl_loadModule() )
-++ return false;
-++
-++ return true;
-++}
-++
-++// --------------------------------------------------------------------------------
-++KabImplModule::TDEVersionType KabImplModule::matchTDEVersion()
-++{
-++ OSL_PRECOND( m_pTDEVersionCheckFunc, "KabImplModule::matchTDEVersion: module not loaded!" );
-++
-++ int nVersionInfo = (*m_pTDEVersionCheckFunc)();
-++ if ( nVersionInfo < 0 )
-++ return eTooOld;
-++ if ( nVersionInfo > 0 )
-++ return eToNew;
-++ return eSupported;
-++}
-++
-++// --------------------------------------------------------------------------------
-++namespace
-++{
-++ template< typename FUNCTION >
-++ void lcl_getFunctionFromModuleOrUnload( oslModule& _rModule, const sal_Char* _pAsciiSymbolName, FUNCTION& _rFunction )
-++ {
-++ _rFunction = NULL;
-++ if ( _rModule )
-++ {
-++ //
-++ const ::rtl::OUString sSymbolName = ::rtl::OUString::createFromAscii( _pAsciiSymbolName );
-++ _rFunction = (FUNCTION)( osl_getSymbol( _rModule, sSymbolName.pData ) );
-++
-++ if ( !_rFunction )
-++ { // did not find the symbol
-++ OSL_ENSURE( false, ::rtl::OString( "lcl_getFunctionFromModuleOrUnload: could not find the symbol " ) + ::rtl::OString( _pAsciiSymbolName ) );
-++ osl_unloadModule( _rModule );
-++ _rModule = NULL;
-++ }
-++ }
-++ }
-++}
-++
-++// --------------------------------------------------------------------------------
-++extern "C" { void SAL_CALL thisModule() {} }
-++
-++bool KabImplModule::impl_loadModule()
-++{
-++ if ( m_bAttemptedLoadModule )
-++ return ( m_hConnectorModule != NULL );
-++ m_bAttemptedLoadModule = true;
-++
-++ OSL_ENSURE( !m_hConnectorModule && !m_pConnectionFactoryFunc && !m_pApplicationInitFunc && !m_pApplicationShutdownFunc && !m_pTDEVersionCheckFunc,
-++ "KabImplModule::impl_loadModule: inconsistence: inconsistency (never attempted load before, but some values already set)!");
-++
-++ const ::rtl::OUString sModuleName = ::rtl::OUString::createFromAscii( SAL_MODULENAME( "kabdrv1" ) );
-++ m_hConnectorModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, SAL_LOADMODULE_NOW ); // LAZY! #i61335#
-++ OSL_ENSURE( m_hConnectorModule, "KabImplModule::impl_loadModule: could not load the implementation library!" );
-++ if ( !m_hConnectorModule )
-++ return false;
-++
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "createKabConnection", m_pConnectionFactoryFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "initKApplication", m_pApplicationInitFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "shutdownKApplication", m_pApplicationShutdownFunc );
-++ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "matchTDEVersion", m_pTDEVersionCheckFunc );
-++
-++ if ( !m_hConnectorModule )
-++ // one of the symbols did not exist
-++ throw RuntimeException();
-++
-++ return true;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_unloadModule()
-++{
-++ OSL_PRECOND( m_hConnectorModule != NULL, "KabImplModule::impl_unloadModule: no module!" );
-++
-++ osl_unloadModule( m_hConnectorModule );
-++ m_hConnectorModule = NULL;
-++
-++ m_pConnectionFactoryFunc = NULL;
-++ m_pApplicationInitFunc = NULL;
-++ m_pApplicationShutdownFunc = NULL;
-++ m_pTDEVersionCheckFunc = NULL;
-++
-++ m_bAttemptedLoadModule = false;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::init()
-++{
-++ if ( !impl_loadModule() )
-++ impl_throwNoKdeException();
-++
-++ // if we're not running on a supported version, throw
-++ KabImplModule::TDEVersionType eTDEVersion = matchTDEVersion();
-++
-++ if ( eTDEVersion == eTooOld )
-++ impl_throwKdeTooOldException();
-++
-++ if ( ( eTDEVersion == eToNew ) && !impl_doAllowNewTDEVersion() )
-++ impl_throwKdeTooNewException();
-++
-++ if ( !m_bAttemptedInitialize )
-++ {
-++ m_bAttemptedInitialize = true;
-++ (*m_pApplicationInitFunc)();
-++ }
-++}
-++
-++// --------------------------------------------------------------------------------
-++bool KabImplModule::impl_doAllowNewTDEVersion()
-++{
-++ try
-++ {
-++ Reference< XMultiServiceFactory > xConfigProvider(
-++ m_xORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-++ UNO_QUERY_THROW );
-++ Sequence< Any > aCreationArgs(1);
-++ aCreationArgs[0] <<= PropertyValue(
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ),
-++ 0,
-++ makeAny( KabDriver::impl_getConfigurationSettingsPath() ),
-++ PropertyState_DIRECT_VALUE );
-++ Reference< XPropertySet > xSettings( xConfigProvider->createInstanceWithArguments(
-++ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ) ),
-++ aCreationArgs ),
-++ UNO_QUERY_THROW );
-++
-++ sal_Bool bDisableCheck = sal_False;
-++ xSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DisableTDEMaximumVersionCheck" ) ) ) >>= bDisableCheck;
-++
-++ return bDisableCheck != sal_False;
-++ }
-++ catch( const Exception& )
-++ {
-++ DBG_UNHANDLED_EXCEPTION();
-++ }
-++ return false;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwNoKdeException()
-++{
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_NO_TDE_INST
-++ ) );
-++ impl_throwGenericSQLException( sError );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwKdeTooOldException()
-++{
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_TDE_VERSION_TOO_OLD,
-++ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-++ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-++ ) );
-++ impl_throwGenericSQLException( sError );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwGenericSQLException( const ::rtl::OUString& _rMessage )
-++{
-++ SQLException aError;
-++ aError.Message = _rMessage;
-++ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-++ aError.ErrorCode = 0;
-++ throw aError;
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::impl_throwKdeTooNewException()
-++{
-++ ::connectivity::SharedResources aResources;
-++
-++ SQLException aError;
-++ aError.Message = aResources.getResourceStringWithSubstitution(
-++ STR_TDE_VERSION_TOO_NEW,
-++ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-++ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-++ );
-++ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-++ aError.ErrorCode = 0;
-++
-++ SQLContext aDetails;
-++ ::rtl::OUStringBuffer aMessage;
-++ aMessage.append( aResources.getResourceString(STR_TDE_VERSION_TOO_NEW_WORK_AROUND) );
-++
-++ aMessage.appendAscii( "Sub disableTDEMaxVersionCheck\n" );
-++ aMessage.appendAscii( " BasicLibraries.LoadLibrary( \"Tools\" )\n" );
-++
-++ aMessage.appendAscii( " Dim configNode as Object\n" );
-++ aMessage.appendAscii( " configNode = GetRegistryKeyContent( \"" );
-++ aMessage.append( KabDriver::impl_getConfigurationSettingsPath() );
-++ aMessage.appendAscii( "\", true )\n" );
-++
-++ aMessage.appendAscii( " configNode.DisableTDEMaximumVersionCheck = TRUE\n" );
-++ aMessage.appendAscii( " configNode.commitChanges\n" );
-++ aMessage.appendAscii( "End Sub\n" );
-++
-++ aDetails.Message = aMessage.makeStringAndClear();
-++
-++ aError.NextException <<= aDetails;
-++
-++ throw aError;
-++}
-++
-++// --------------------------------------------------------------------------------
-++KabConnection* KabImplModule::createConnection( KabDriver* _pDriver ) const
-++{
-++ OSL_PRECOND( m_hConnectorModule, "KabImplModule::createConnection: not initialized!" );
-++
-++ void* pUntypedConnection = (*m_pConnectionFactoryFunc)( _pDriver );
-++ if ( !pUntypedConnection )
-++ throw RuntimeException();
-++
-++ return static_cast< KabConnection* >( pUntypedConnection );
-++}
-++
-++// --------------------------------------------------------------------------------
-++void KabImplModule::shutdown()
-++{
-++ if ( !m_hConnectorModule )
-++ return;
-++
-++ (*m_pApplicationShutdownFunc)();
-++ m_bAttemptedInitialize = false;
-++
-++ impl_unloadModule();
-++}
-++
-++// =======================================================================
-++// = KabDriver
-++// =======================================================================
-++KabDriver::KabDriver(
-++ const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory)
-++ : KDriver_BASE(m_aMutex),
-++ m_xMSFactory(_rxFactory),
-++ m_aImplModule(_rxFactory)
-++{
-++ if ( !m_xMSFactory.is() )
-++ throw NullPointerException();
-++
-++ osl_incrementInterlockedCount( &m_refCount );
-++ try
-++ {
-++ Reference< XDesktop > xDesktop(
-++ m_xMSFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ),
-++ UNO_QUERY_THROW );
-++ xDesktop->addTerminateListener( this );
-++ }
-++ catch( const Exception& )
-++ {
-++ DBG_UNHANDLED_EXCEPTION();
-++ }
-++ osl_decrementInterlockedCount( &m_refCount );
-++}
-++// --------------------------------------------------------------------------------
-++void KabDriver::disposing()
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ // when driver will be destroied so all our connections have to be destroied as well
-++ for (OWeakRefArray::iterator i = m_xConnections.begin(); m_xConnections.end() != i; ++i)
-++ {
-++ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-++ if (xComp.is())
-++ xComp->dispose();
-++ }
-++ m_xConnections.clear();
-++
-++ WeakComponentImplHelperBase::disposing();
-++}
-++// static ServiceInfo
-++//------------------------------------------------------------------------------
-++rtl::OUString KabDriver::getImplementationName_Static( ) throw(RuntimeException)
-++{
-++ return rtl::OUString::createFromAscii( impl_getAsciiImplementationName() );
-++}
-++//------------------------------------------------------------------------------
-++Sequence< ::rtl::OUString > KabDriver::getSupportedServiceNames_Static( ) throw (RuntimeException)
-++{
-++ // which service is supported
-++ // for more information @see com.sun.star.sdbc.Driver
-++ Sequence< ::rtl::OUString > aSNS( 1 );
-++ aSNS[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdbc.Driver");
-++
-++ return aSNS;
-++}
-++//------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabDriver::getImplementationName( ) throw(RuntimeException)
-++{
-++ return getImplementationName_Static();
-++}
-++//------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDriver::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
-++{
-++ Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames());
-++ const ::rtl::OUString* pSupported = aSupported.getConstArray();
-++ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
-++
-++ while (pSupported != pEnd && !pSupported->equals(_rServiceName))
-++ ++pSupported;
-++ return pSupported != pEnd;
-++}
-++//------------------------------------------------------------------
-++Sequence< ::rtl::OUString > SAL_CALL KabDriver::getSupportedServiceNames( ) throw(RuntimeException)
-++{
-++ return getSupportedServiceNames_Static();
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabDriver::connect( const ::rtl::OUString& url, const Sequence< PropertyValue >& info ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ m_aImplModule.init();
-++
-++ // create a new connection with the given properties and append it to our vector
-++ KabConnection* pConnection = m_aImplModule.createConnection( this );
-++ OSL_POSTCOND( pConnection, "KabDriver::connect: no connection has been created by the factory!" );
-++
-++ // by definition, the factory function returned an object which was acquired once
-++ Reference< XConnection > xConnection = pConnection;
-++ pConnection->release();
-++
-++ // late constructor call which can throw exception and allows a correct dtor call when so
-++ pConnection->construct( url, info );
-++
-++ // remember it
-++ m_xConnections.push_back( WeakReferenceHelper( *pConnection ) );
-++
-++ return xConnection;
-++}
-++// --------------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabDriver::acceptsURL( const ::rtl::OUString& url )
-++ throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++ if ( !m_aImplModule.isTDEPresent() )
-++ return sal_False;
-++
-++ // here we have to look whether we support this URL format
-++ return (!url.compareTo(::rtl::OUString::createFromAscii("sdbc:address:kab:"), 16));
-++}
-++// --------------------------------------------------------------------------------
-++Sequence< DriverPropertyInfo > SAL_CALL KabDriver::getPropertyInfo( const ::rtl::OUString&, const Sequence< PropertyValue >& ) throw(SQLException, RuntimeException)
-++{
-++ // if you have something special to say, return it here :-)
-++ return Sequence< DriverPropertyInfo >();
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDriver::getMajorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MAJOR;
-++}
-++// --------------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabDriver::getMinorVersion( ) throw(RuntimeException)
-++{
-++ return KAB_DRIVER_VERSION_MINOR;
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::queryTermination( const EventObject& ) throw (TerminationVetoException, RuntimeException)
-++{
-++ // nothing to do, nothing to veto
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::notifyTermination( const EventObject& ) throw (RuntimeException)
-++{
-++ m_aImplModule.shutdown();
-++}
-++// --------------------------------------------------------------------------------
-++void SAL_CALL KabDriver::disposing( const EventObject& ) throw (RuntimeException)
-++{
-++ // not interested in (this is the disposing of the desktop, if any)
-++}
-++// --------------------------------------------------------------------------------
-++const sal_Char* KabDriver::impl_getAsciiImplementationName()
-++{
-++ return "com.sun.star.comp.sdbc.kab.Driver";
-++ // this name is referenced in the configuration and in the kab.xml
-++ // Please be careful when changing it.
-++}
-++// --------------------------------------------------------------------------------
-++::rtl::OUString KabDriver::impl_getConfigurationSettingsPath()
-++{
-++ ::rtl::OUStringBuffer aPath;
-++ aPath.appendAscii( "/org.openoffice.Office.DataAccess/DriverSettings/" );
-++ aPath.appendAscii( "com.sun.star.comp.sdbc.kab.Driver" );
-++ return aPath.makeStringAndClear();
-++}
-++// --------------------------------------------------------------------------------
-++Reference< XInterface > SAL_CALL KabDriver::Create( const Reference< XMultiServiceFactory >& _rxFactory ) throw( Exception )
-++{
-++ return *(new KabDriver(_rxFactory));
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KDriver.hxx connectivity/source/drivers/tdeab/KDriver.hxx
-+--- connectivity/source/drivers/tdeab/KDriver.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KDriver.hxx 2011-08-17 14:27:57.178305442 -0500
-+@@ -0,0 +1,227 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_DRIVER_HXX_
-++#define _CONNECTIVITY_KAB_DRIVER_HXX_
-++
-++/** === begin UNO includes === **/
-++#include <com/sun/star/sdbc/XDriver.hpp>
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/frame/XTerminateListener.hpp>
-++/** === end UNO includes === **/
-++#include <cppuhelper/compbase3.hxx>
-++#include <osl/module.h>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabConnection;
-++ class KabDriver;
-++
-++ typedef void* (SAL_CALL * ConnectionFactoryFunction)( void* _pDriver );
-++ typedef void (SAL_CALL * ApplicationInitFunction)( void );
-++ typedef void (SAL_CALL * ApplicationShutdownFunction)( void );
-++ typedef int (SAL_CALL * TDEVersionCheckFunction)( void );
-++
-++ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-++
-++ // ===============================================================
-++ // = KabImplModule
-++ // ===============================================================
-++ class KabImplModule
-++ {
-++ private:
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-++ m_xORB;
-++
-++ /// Did we already attempt to load the module and to retrieve the symbols?
-++ bool m_bAttemptedLoadModule;
-++ /// Did we already check the TDE version and initialize the impl module (or at least attempted to)?
-++ bool m_bAttemptedInitialize;
-++
-++ oslModule m_hConnectorModule;
-++ ConnectionFactoryFunction m_pConnectionFactoryFunc;
-++ ApplicationInitFunction m_pApplicationInitFunc;
-++ ApplicationShutdownFunction m_pApplicationShutdownFunc;
-++ TDEVersionCheckFunction m_pTDEVersionCheckFunc;
-++
-++ public:
-++ KabImplModule( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory );
-++
-++ /** determines whether there is a TDE present in the environment
-++ */
-++ bool isTDEPresent();
-++
-++ enum TDEVersionType
-++ {
-++ eTooOld,
-++ eSupported,
-++ eToNew
-++ };
-++ /** checks whether the TDE version we're running against is supported
-++ @precond
-++ the module is loaded, i.e impl_loadModule has successfully been called
-++ */
-++ TDEVersionType matchTDEVersion();
-++
-++ /** initializes the implementation module.
-++
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if the module could be loaded, but required symbols are missing
-++ @raises ::com::sun::star::sdbc::SQLException
-++ if the TDE version we're running against is not supported, or no TDE was found at all
-++ */
-++ void init();
-++
-++ /** shuts down the impl module (and the TDE application, if we own it)
-++ */
-++ void shutdown();
-++
-++ /** creates a new connection
-++ @precond
-++ <member>init</member> has been called before
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if no connection object could be created (which is a severe error, normally impossible)
-++ */
-++ KabConnection* createConnection( KabDriver* _pDriver ) const;
-++
-++ private:
-++ /** loads the implementation module and retrieves the needed symbols
-++
-++ Save against being called multiple times.
-++
-++ @return <TRUE/> if the module could be loaded successfully.
-++
-++ @raises ::com::sun::star::uno::RuntimeException
-++ if the module could be loaded, but required symbols are missing
-++ */
-++ bool impl_loadModule();
-++
-++ /** unloads the implementation module, and resets all function pointers to <NULL/>
-++ @precond m_hConnectorModule is not <NULL/>
-++ */
-++ void impl_unloadModule();
-++
-++ /** throws an SQLException saying than no TDE installation was found
-++ */
-++ void impl_throwNoKdeException();
-++
-++ /** throws an SQLException saying that the found TDE version is too old
-++ */
-++ void impl_throwKdeTooOldException();
-++
-++ /** throws an SQLException saying that the found TDE version is too new
-++ */
-++ void impl_throwKdeTooNewException();
-++
-++ /** throws a generic SQL exception with SQLState S1000 and error code 0
-++ */
-++ void impl_throwGenericSQLException( const ::rtl::OUString& _rMessage );
-++
-++ /** determines whether it's allowed to run on a too-new (not confirmed to work) version
-++ */
-++ bool impl_doAllowNewTDEVersion();
-++ };
-++
-++ // ===============================================================
-++ // = KabDriver
-++ // ===============================================================
-++ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XDriver,
-++ ::com::sun::star::lang::XServiceInfo,
-++ ::com::sun::star::frame::XTerminateListener > KDriver_BASE;
-++ class KabDriver : public KDriver_BASE
-++ {
-++ protected:
-++ ::osl::Mutex m_aMutex; // mutex is need to control member access
-++ OWeakRefArray m_xConnections; // vector containing a list of all the
-++ // KabConnection objects for this Driver
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-++ m_xMSFactory; // the multi-service factory
-++ KabImplModule m_aImplModule;
-++
-++ public:
-++ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) throw( ::com::sun::star::uno::Exception );
-++
-++ // XServiceInfo - static versions
-++ static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException);
-++ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static( ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
-++ getMSFactory() const { return m_xMSFactory; }
-++
-++ /** returns the driver's implementation name (being pure ASCII) for reference in various places
-++ */
-++ static const sal_Char* impl_getAsciiImplementationName();
-++
-++ /** returns the path of our configuration settings
-++ */
-++ static ::rtl::OUString impl_getConfigurationSettingsPath();
-++
-++ protected:
-++ KabDriver(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XServiceInfo
-++ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XDriver
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connect( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL acceptsURL( const ::rtl::OUString& url ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sdbc::DriverPropertyInfo > SAL_CALL getPropertyInfo( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMajorVersion() throw(::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getMinorVersion() throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XTerminateListener
-++ virtual void SAL_CALL queryTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL notifyTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ // XEventListener
-++ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ private:
-++ /** shuts down the library which contains the real implementations
-++
-++ This method is safe against being called multiple times
-++
-++ @precond our mutex is locked
-++ */
-++ void impl_shutdownImplementationModule();
-++ };
-++ }
-++
-++}
-++
-++#endif // _CONNECTIVITY_KAB_DRIVER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kfields.cxx connectivity/source/drivers/tdeab/kfields.cxx
-+--- connectivity/source/drivers/tdeab/kfields.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kfields.cxx 2011-08-17 14:27:40.557026383 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "kfields.hxx"
-++#include "resource/common_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace ::connectivity::kab;
-++using namespace ::com::sun::star::sdbc;
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++// -----------------------------------------------------------------------------
-++// return the value of a TDE address book field, given an addressee and a field number
-++TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber)
-++{
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++ return aAddressee.revision().toString("yyyy-MM-dd hh:mm:ss");
-++ default:
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ return aFields[nFieldNumber - KAB_DATA_FIELDS]->value(aAddressee);
-++ }
-++}
-++// ------------------------------------------------------------------------------
-++// search the TDE address book field number of a given column name
-++sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(SQLException)
-++{
-++ TQString aQtName;
-++ ::rtl::OUString aName;
-++
-++ aQtName = KABC::Addressee::revisionLabel();
-++ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ if (columnName == aName)
-++ return KAB_FIELD_REVISION;
-++
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ ::KABC::Field::List::iterator aField;
-++ sal_uInt32 nResult;
-++
-++ for ( aField = aFields.begin(), nResult = KAB_DATA_FIELDS;
-++ aField != aFields.end();
-++ ++aField, ++nResult)
-++ {
-++ aQtName = (*aField)->label();
-++ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++
-++ if (columnName == aName)
-++ return nResult;
-++ }
-++
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_INVALID_COLUMNNAME,
-++ "$columnname$",columnName
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// ------------------------------------------------------------------------------
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/kfields.hxx connectivity/source/drivers/tdeab/kfields.hxx
-+--- connectivity/source/drivers/tdeab/kfields.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/kfields.hxx 2011-08-17 14:27:31.926362235 -0500
-+@@ -0,0 +1,51 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_FIELDS_HXX_
-++#define _CONNECTIVITY_KAB_FIELDS_HXX_
-++
-++#include <shell/tde_headers.h>
-++#include <connectivity/dbexception.hxx>
-++#include <rtl/ustring.hxx>
-++
-++#define KAB_FIELD_REVISION 0
-++#define KAB_DATA_FIELDS 1
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber);
-++ sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(::com::sun::star::sdbc::SQLException);
-++ }
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/korder.cxx connectivity/source/drivers/tdeab/korder.cxx
-+--- connectivity/source/drivers/tdeab/korder.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/korder.cxx 2011-08-17 14:27:22.785658823 -0500
-+@@ -0,0 +1,92 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "korder.hxx"
-++#include "kfields.hxx"
-++
-++using namespace ::connectivity::kab;
-++
-++KabOrder::~KabOrder()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabSimpleOrder::KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending)
-++ : KabOrder(),
-++ m_nFieldNumber(findKabField(sColumnName)),
-++ m_bAscending(bAscending)
-++{
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 KabSimpleOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-++{
-++ sal_Int32 result;
-++
-++ result = TQString::compare(
-++ valueOfKabField(aAddressee1, m_nFieldNumber),
-++ valueOfKabField(aAddressee2, m_nFieldNumber));
-++// Timestamps should be compared differently than with their string value
-++
-++ if (!m_bAscending) result = -result;
-++
-++ return result;
-++}
-++// -----------------------------------------------------------------------------
-++KabComplexOrder::KabComplexOrder()
-++ : KabOrder(),
-++ m_aOrders()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++KabComplexOrder::~KabComplexOrder()
-++{
-++ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-++ delete m_aOrders[i];
-++}
-++// -----------------------------------------------------------------------------
-++void KabComplexOrder::addOrder(KabOrder *pOrder)
-++{
-++ m_aOrders.push_back(pOrder);
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 KabComplexOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-++{
-++ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-++ {
-++ const KabOrder *pOrder = m_aOrders[i];
-++ sal_Int32 result = pOrder->compare(aAddressee1, aAddressee2);
-++
-++ if (result) return result;
-++ }
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/korder.hxx connectivity/source/drivers/tdeab/korder.hxx
-+--- connectivity/source/drivers/tdeab/korder.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/korder.hxx 2011-08-17 14:27:15.825123174 -0500
-+@@ -0,0 +1,78 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_ORDER_HXX_
-++#define _CONNECTIVITY_KAB_ORDER_HXX_
-++
-++#include "rtl/ustring.hxx"
-++#include <shell/tde_headers.h>
-++
-++#include <vector>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabOrder
-++ {
-++ public:
-++ virtual ~KabOrder();
-++
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const = 0;
-++ };
-++
-++ class KabSimpleOrder : public KabOrder
-++ {
-++ sal_Int32 m_nFieldNumber;
-++ sal_Bool m_bAscending;
-++
-++ TQString value(const ::KABC::Addressee &aAddressee) const;
-++ public:
-++ KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending);
-++
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-++ };
-++
-++ class KabComplexOrder : public KabOrder
-++ {
-++ ::std::vector<KabOrder *> m_aOrders;
-++
-++ public:
-++ KabComplexOrder();
-++ virtual ~KabComplexOrder();
-++
-++ void addOrder(KabOrder *pOrder);
-++ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-++ };
-++ }
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KPreparedStatement.cxx connectivity/source/drivers/tdeab/KPreparedStatement.cxx
-+--- connectivity/source/drivers/tdeab/KPreparedStatement.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KPreparedStatement.cxx 2011-08-17 14:27:09.434631390 -0500
-+@@ -0,0 +1,394 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KPreparedStatement.hxx"
-++#include "propertyids.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include <connectivity/dbtools.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::util;
-++
-++IMPLEMENT_SERVICE_INFO(KabPreparedStatement, "com.sun.star.sdbc.drivers.KabPreparedStatement", "com.sun.star.sdbc.PreparedStatement");
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::checkAndResizeParameters(sal_Int32 nParams) throw(SQLException)
-++{
-++ if ( !m_aParameterRow.is() )
-++ m_aParameterRow = new OValueVector();
-++
-++ if (nParams < 1)
-++ ::dbtools::throwInvalidIndexException(*(KabPreparedStatement *) this,Any());
-++
-++ if (nParams >= (sal_Int32) (m_aParameterRow->get()).size())
-++ (m_aParameterRow->get()).resize(nParams);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::setKabFields() const throw(SQLException)
-++{
-++ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-++
-++ xColumns = m_aSQLIterator.getSelectColumns();
-++ if (!xColumns.is())
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_INVALID_COLUMN_SELECTION
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ }
-++ m_xMetaData->setKabFields(xColumns);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::resetParameters() const throw(SQLException)
-++{
-++ m_nParameterIndex = 0;
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::getNextParameter(::rtl::OUString &rParameter) const throw(SQLException)
-++{
-++ if (m_nParameterIndex >= (sal_Int32) (m_aParameterRow->get()).size())
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(
-++ STR_INVALID_PARA_COUNT
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,*(KabPreparedStatement *) this);
-++ } // if (m_nParameterIndex >= (sal_Int32) (*m_aParameterRow).size())
-++
-++ rParameter = (m_aParameterRow->get())[m_nParameterIndex];
-++
-++ m_nParameterIndex++;
-++}
-++// -------------------------------------------------------------------------
-++KabPreparedStatement::KabPreparedStatement(
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& sql)
-++ : KabPreparedStatement_BASE(_pConnection),
-++ m_sSqlStatement(sql),
-++ m_bPrepared(sal_False),
-++ m_nParameterIndex(0),
-++ m_aParameterRow()
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabPreparedStatement::~KabPreparedStatement()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::disposing()
-++{
-++ KabPreparedStatement_BASE::disposing();
-++
-++ if (m_aParameterRow.is())
-++ {
-++ m_aParameterRow->get().clear();
-++ m_aParameterRow = NULL;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSetMetaData > SAL_CALL KabPreparedStatement::getMetaData() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ if (!m_xMetaData.is())
-++ {
-++ m_xMetaData = new KabResultSetMetaData(getOwnConnection());
-++ setKabFields();
-++ }
-++ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-++ return xMetaData;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::close() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // Reset last warning message
-++ try {
-++ clearWarnings ();
-++ KabCommonStatement::close();
-++ }
-++ catch (SQLException &) {
-++ // If we get an error, ignore
-++ }
-++
-++ // Remove this Statement object from the Connection object's
-++ // list
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabPreparedStatement::execute() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet> xRS = KabCommonStatement::executeQuery(m_sSqlStatement);
-++
-++ return xRS.is();
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabPreparedStatement::executeUpdate() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // same as in statement with the difference that this statement also can contain parameter
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabPreparedStatement::getConnection() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ return (Reference< XConnection >) m_pConnection;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabPreparedStatement::executeQuery() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet > rs = KabCommonStatement::executeQuery(m_sSqlStatement);
-++
-++ return rs;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setNull(sal_Int32 parameterIndex, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ checkAndResizeParameters(parameterIndex);
-++
-++ (m_aParameterRow->get())[parameterIndex - 1].setNull();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObjectNull(sal_Int32, sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setObjectNull", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBoolean", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setByte", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setShort", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setInt", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setFloat", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setDouble", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setString(sal_Int32 parameterIndex, const ::rtl::OUString &x) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ checkAndResizeParameters(parameterIndex);
-++
-++ (m_aParameterRow->get())[parameterIndex - 1] = x;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBytes", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setDate", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setTime", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setTimestamp", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBinaryStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBinaryStream", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setCharacterStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setCharacterStream", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObject(sal_Int32 parameterIndex, const Any& x) throw(SQLException, RuntimeException)
-++{
-++ if(!::dbtools::implSetObject(this,parameterIndex,x))
-++ {
-++ throw SQLException();
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setObjectWithInfo(sal_Int32, const Any&, sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setObjectWithInfo", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setRef(sal_Int32, const Reference< XRef >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setRef", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setBlob(sal_Int32, const Reference< XBlob >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setBlob", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setClob(sal_Int32, const Reference< XClob >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setClob", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::setArray(sal_Int32, const Reference< XArray >&) throw(SQLException, RuntimeException)
-++{
-++
-++
-++
-++::dbtools::throwFunctionNotSupportedException("setArray", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabPreparedStatement::clearParameters() throw(SQLException, RuntimeException)
-++{
-++::dbtools::throwFunctionNotSupportedException("clearParameters", NULL);
-++}
-++// -------------------------------------------------------------------------
-++void KabPreparedStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ break;
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ break;
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ break;
-++ default:
-++ KabCommonStatement::setFastPropertyValue_NoBroadcast(nHandle,rValue);
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KPreparedStatement.hxx connectivity/source/drivers/tdeab/KPreparedStatement.hxx
-+--- connectivity/source/drivers/tdeab/KPreparedStatement.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KPreparedStatement.hxx 2011-08-17 14:27:04.434246577 -0500
-+@@ -0,0 +1,123 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++#define _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++
-++#include "KStatement.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include <connectivity/FValue.hxx>
-++#include <com/sun/star/sdbc/XParameters.hpp>
-++#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-++#include <cppuhelper/implbase4.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++
-++ class OBoundParam;
-++ typedef ::cppu::ImplInheritanceHelper4< KabCommonStatement,
-++ ::com::sun::star::sdbc::XPreparedStatement,
-++ ::com::sun::star::sdbc::XParameters,
-++ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-++ ::com::sun::star::lang::XServiceInfo> KabPreparedStatement_BASE;
-++
-++ class KabPreparedStatement : public KabPreparedStatement_BASE
-++ {
-++ protected:
-++ ::rtl::OUString m_sSqlStatement;
-++ ::rtl::Reference< KabResultSetMetaData >
-++ m_xMetaData;
-++ sal_Bool m_bPrepared;
-++ mutable sal_Int32 m_nParameterIndex;
-++ OValueRow m_aParameterRow;
-++
-++ void checkAndResizeParameters(sal_Int32 nParams) throw(::com::sun::star::sdbc::SQLException);
-++ void setKabFields() const throw(::com::sun::star::sdbc::SQLException);
-++
-++ protected:
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-++
-++ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-++ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-++ virtual ~KabPreparedStatement();
-++
-++ public:
-++ DECLARE_SERVICE_INFO();
-++ KabPreparedStatement(KabConnection* _pConnection, const ::rtl::OUString& sql);
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing();
-++
-++ // XPreparedStatement
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL executeUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XParameters
-++ virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetMetaDataSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSet.cxx connectivity/source/drivers/tdeab/KResultSet.cxx
-+--- connectivity/source/drivers/tdeab/KResultSet.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSet.cxx 2011-08-17 14:26:57.383703991 -0500
-+@@ -0,0 +1,991 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KResultSet.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include "KConnection.hxx"
-++#include "kcondition.hxx"
-++#include "korder.hxx"
-++#include "kfields.hxx"
-++#include <com/sun/star/beans/PropertyAttribute.hpp>
-++#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-++#include "TConnection.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace cppu;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++using namespace com::sun::star::io;
-++using namespace com::sun::star::util;
-++
-++IMPLEMENT_SERVICE_INFO(KabResultSet, "com.sun.star.sdbc.drivers.KabResultSet", "com.sun.star.sdbc.ResultSet");
-++// -------------------------------------------------------------------------
-++KabResultSet::KabResultSet(KabCommonStatement* pStmt)
-++ : KabResultSet_BASE(m_aMutex),
-++ OPropertySetHelper(KabResultSet_BASE::rBHelper),
-++ m_xStatement(pStmt),
-++ m_xMetaData(NULL),
-++ m_aKabAddressees(),
-++ m_nRowPos(-1),
-++ m_bWasNull(sal_True)
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabResultSet::~KabResultSet()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::allKabAddressees()
-++{
-++ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-++ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-++
-++ m_aKabAddressees = pAddressBook->allAddressees();
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::someKabAddressees(const KabCondition *pCondition)
-++{
-++ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-++ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-++
-++ KABC::AddressBook::Iterator iterator;
-++
-++ for (iterator = pAddressBook->begin();
-++ iterator != pAddressBook->end();
-++ ++iterator)
-++ {
-++ if (pCondition->eval(*iterator))
-++ m_aKabAddressees.push_back(*iterator);
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::sortKabAddressees(const KabOrder *pOrder)
-++{
-++ // We do not use class KAddresseeList, which has a sorting algorithm in it, because
-++ // it uses templates. It would expand to more or less the same code as the one
-++ // which follows, but it would need not be called in a much less convenient way.
-++
-++ KABC::Addressee::List::Iterator
-++ begin = m_aKabAddressees.begin(),
-++ end = m_aKabAddressees.end(),
-++ iterator;
-++
-++ // Bubble sort. Feel free to implement a better algorithm.
-++ while (begin != end)
-++ {
-++ end--;
-++ for (iterator = begin; iterator != end; ++iterator)
-++ {
-++ if (pOrder->compare(*iterator, *end) > 0)
-++ qSwap(*iterator, *end);
-++ }
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::disposing()
-++{
-++ OPropertySetHelper::disposing();
-++
-++ ::osl::MutexGuard aGuard(m_aMutex);
-++
-++m_xStatement.clear();
-++m_xMetaData.clear();
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::queryInterface(const Type & rType) throw(RuntimeException)
-++{
-++ Any aRet = OPropertySetHelper::queryInterface(rType);
-++ if (!aRet.hasValue())
-++ aRet = KabResultSet_BASE::queryInterface(rType);
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::acquire() throw()
-++{
-++ KabResultSet_BASE::acquire();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::release() throw()
-++{
-++ KabResultSet_BASE::release();
-++}
-++// -------------------------------------------------------------------------
-++Sequence< Type > SAL_CALL KabResultSet::getTypes() throw(RuntimeException)
-++{
-++ OTypeCollection aTypes(
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XMultiPropertySet >*) 0),
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XFastPropertySet >*) 0),
-++ ::getCppuType( (const Reference< ::com::sun::star::beans::XPropertySet >*) 0));
-++
-++ return comphelper::concatSequences(aTypes.getTypes(), KabResultSet_BASE::getTypes());
-++}
-++// -------------------------------------------------------------------------
-++::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabResultSet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
-++{
-++ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::findColumn(const ::rtl::OUString& columnName) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // find the first column with the name columnName
-++ Reference< XResultSetMetaData > xMeta = getMetaData();
-++ sal_Int32 nLen = xMeta->getColumnCount();
-++
-++ for (sal_Int32 i = 1; i <= nLen; ++i)
-++ if (xMeta->isCaseSensitive(i) ?
-++ columnName == xMeta->getColumnName(i) :
-++ columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)))
-++ return i;
-++
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-++ STR_INVALID_COLUMNNAME,
-++ "$columnname$",columnName
-++ ) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSet::getString(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString aRet;
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-++ {
-++ sal_Int32 nFieldNumber = m_xMetaData->fieldAtColumn(columnIndex);
-++ TQString aQtName;
-++
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++// trigger an exception here
-++m_bWasNull = true;
-++return aRet;
-++ default:
-++ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->value(m_aKabAddressees[m_nRowPos]);
-++ }
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++ if (!aQtName.isNull())
-++ {
-++ m_bWasNull = false;
-++ aRet = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ return aRet;
-++ }
-++ }
-++// Trigger an exception ?
-++ m_bWasNull = true;
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::getBoolean(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBoolean", NULL);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int8 SAL_CALL KabResultSet::getByte(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getByte", NULL);
-++
-++ sal_Int8 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int16 SAL_CALL KabResultSet::getShort(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getShort", NULL);
-++
-++ sal_Int16 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::getInt(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getInt", NULL);
-++
-++ sal_Int32 nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int64 SAL_CALL KabResultSet::getLong(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getLong", NULL);
-++
-++ return sal_Int64();
-++}
-++// -------------------------------------------------------------------------
-++float SAL_CALL KabResultSet::getFloat(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getFloat", NULL);
-++
-++ float nVal(0);
-++ return nVal;
-++}
-++// -------------------------------------------------------------------------
-++double SAL_CALL KabResultSet::getDouble(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getDouble", NULL);
-++
-++ double nRet = 0;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++Sequence< sal_Int8 > SAL_CALL KabResultSet::getBytes(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("", NULL);
-++
-++ return Sequence< sal_Int8 >();
-++}
-++// -------------------------------------------------------------------------
-++Date SAL_CALL KabResultSet::getDate(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getDate", NULL);
-++
-++ Date aRet;
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++Time SAL_CALL KabResultSet::getTime(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getTime", NULL);
-++
-++ Time nRet;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++DateTime SAL_CALL KabResultSet::getTimestamp(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ DateTime nRet;
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-++ {
-++ KabResultSetMetaData *pMeta = static_cast<KabResultSetMetaData *>(m_xMetaData.get());
-++ sal_Int32 nFieldNumber = pMeta->fieldAtColumn(columnIndex);
-++
-++ if (nFieldNumber == KAB_FIELD_REVISION)
-++ {
-++ TQDateTime nRevision(m_aKabAddressees[m_nRowPos].revision());
-++
-++ if (!nRevision.isNull())
-++ {
-++ m_bWasNull = false;
-++ nRet.Year = nRevision.date().year();
-++ nRet.Month = nRevision.date().month();
-++ nRet.Day = nRevision.date().day();
-++ nRet.Hours = nRevision.time().hour();
-++ nRet.Minutes = nRevision.time().minute();
-++ nRet.Seconds = nRevision.time().second();
-++ nRet.HundredthSeconds = nRevision.time().msec() / 10;
-++ return nRet;
-++ }
-++ }
-++ else {
-++ ;
-++ }
-++// trigger an exception here
-++ }
-++// Trigger an exception ?
-++ m_bWasNull = true;
-++ return nRet;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInputStream > SAL_CALL KabResultSet::getBinaryStream(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBinaryStream", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInputStream > SAL_CALL KabResultSet::getCharacterStream(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getCharacterStream", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::getObject(sal_Int32, const Reference< ::com::sun::star::container::XNameAccess >&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getObject", NULL);
-++
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XRef > SAL_CALL KabResultSet::getRef(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getRef", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XBlob > SAL_CALL KabResultSet::getBlob(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getBlob", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XClob > SAL_CALL KabResultSet::getClob(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getClob", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XArray > SAL_CALL KabResultSet::getArray(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++::dbtools::throwFunctionNotSupportedException("getArray", NULL);
-++
-++ return NULL;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSetMetaData > SAL_CALL KabResultSet::getMetaData() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (!m_xMetaData.is())
-++ m_xMetaData = new KabResultSetMetaData(m_xStatement->getOwnConnection());
-++
-++ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-++ return xMetaData;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isBeforeFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (m_nRowPos == -1)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isAfterLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (m_nRowPos == nAddressees)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ if (m_nRowPos == 0)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::isLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (m_nRowPos == nAddressees - 1)
-++ return sal_True;
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::beforeFirst() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // move before the first row
-++ m_nRowPos = -1;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::afterLast() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // move after the last row
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ m_nRowPos = nAddressees;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::close() throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ }
-++ dispose();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::first() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (nAddressees == 0)
-++ return sal_False;
-++
-++ m_nRowPos = 0;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::last() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (nAddressees == 0)
-++ return sal_False;
-++
-++ m_nRowPos = nAddressees - 1;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::getRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return m_nRowPos;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::absolute(sal_Int32 row) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++ if (row <= -1 ||
-++ row >= nAddressees)
-++ return sal_False;
-++
-++ m_nRowPos = row;
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::relative(sal_Int32 row) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos + row);
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::next() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos + 1);
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::previous() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return absolute(m_nRowPos - 1);
-++}
-++// -------------------------------------------------------------------------
-++Reference< XInterface > SAL_CALL KabResultSet::getStatement() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ Reference< XStatement > xStatement = m_xStatement.get();
-++ return xStatement;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowDeleted() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowInserted() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::rowUpdated() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::wasNull() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return m_bWasNull;
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::cancel() throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::clearWarnings() throw(SQLException, RuntimeException)
-++{
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabResultSet::getWarnings() throw(SQLException, RuntimeException)
-++{
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::insertRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // you only have to implement this if you want to insert new rows
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // only when you allow updates
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::deleteRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::cancelRowUpdates() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::moveToInsertRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ // only when you allow inserts
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::moveToCurrentRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateNull(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-++{
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -----------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateString(sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateBinaryStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateCharacterStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::refreshRow() throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateObject(sal_Int32, const Any&) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabResultSet::updateNumericObject(sal_Int32, const Any&, sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++}
-++// -------------------------------------------------------------------------
-++// XRowLocate
-++Any SAL_CALL KabResultSet::getBookmark() throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ if (m_nRowPos != -1 && m_nRowPos != nAddressees)
-++ {
-++ TQString aQtName = m_aKabAddressees[m_nRowPos].uid();
-++ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++ return makeAny(sUniqueIdentifier);
-++ }
-++ return Any();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::moveToBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ for (sal_Int32 nRow = 0; nRow < nAddressees; nRow++)
-++ {
-++ TQString aQtName = m_aKabAddressees[nRow].uid();
-++ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-++
-++ if (sUniqueIdentifier == sBookmark)
-++ {
-++ m_nRowPos = nRow;
-++ return sal_True;
-++ }
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ sal_Int32 nRowSave = m_nRowPos;
-++
-++ if (moveToBookmark(bookmark))
-++ {
-++ sal_Int32 nAddressees = m_aKabAddressees.size();
-++
-++ m_nRowPos += rows;
-++
-++ if (-1 < m_nRowPos && m_nRowPos < nAddressees)
-++ return sal_True;
-++ }
-++
-++ m_nRowPos = nRowSave;
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::compareBookmarks(const Any& firstItem, const Any& secondItem) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sFirst = comphelper::getString(firstItem);
-++ ::rtl::OUString sSecond = comphelper::getString(secondItem);
-++
-++ if (sFirst < sSecond)
-++ return CompareBookmark::LESS;
-++ if (sFirst > sSecond)
-++ return CompareBookmark::GREATER;
-++ return CompareBookmark::EQUAL;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSet::hasOrderedBookmarks() throw( SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSet::hashBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-++
-++ return sBookmark.hashCode();
-++}
-++// -------------------------------------------------------------------------
-++// XDeleteRows
-++Sequence< sal_Int32 > SAL_CALL KabResultSet::deleteRows(const Sequence< Any >&) throw( SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-++
-++ return Sequence< sal_Int32 >();
-++}
-++// -------------------------------------------------------------------------
-++IPropertyArrayHelper* KabResultSet::createArrayHelper() const
-++{
-++ Sequence< Property > aProps(6);
-++ Property* pProperties = aProps.getArray();
-++ sal_Int32 nPos = 0;
-++ DECL_PROP1IMPL(CURSORNAME, ::rtl::OUString) PropertyAttribute::READONLY);
-++ DECL_PROP0(FETCHDIRECTION, sal_Int32);
-++ DECL_PROP0(FETCHSIZE, sal_Int32);
-++ DECL_BOOL_PROP1IMPL(ISBOOKMARKABLE) PropertyAttribute::READONLY);
-++ DECL_PROP1IMPL(RESULTSETCONCURRENCY,sal_Int32) PropertyAttribute::READONLY);
-++ DECL_PROP1IMPL(RESULTSETTYPE, sal_Int32) PropertyAttribute::READONLY);
-++
-++ return new OPropertyArrayHelper(aProps);
-++}
-++// -------------------------------------------------------------------------
-++IPropertyArrayHelper & KabResultSet::getInfoHelper()
-++{
-++ return *static_cast<KabResultSet*>(this)->getArrayHelper();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool KabResultSet::convertFastPropertyValue(
-++ Any &,
-++ Any &,
-++ sal_Int32 nHandle,
-++ const Any& )
-++ throw (::com::sun::star::lang::IllegalArgumentException)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ throw ::com::sun::star::lang::IllegalArgumentException();
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ default:
-++ ;
-++ }
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const Any& )
-++ throw (Exception)
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ throw Exception();
-++ break;
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ break;
-++ case PROPERTY_ID_FETCHSIZE:
-++ break;
-++ default:
-++ ;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSet::getFastPropertyValue(
-++ Any& _rValue,
-++ sal_Int32 nHandle) const
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_ISBOOKMARKABLE:
-++ _rValue <<= (sal_Bool)sal_False;
-++ break;
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ ;
-++ }
-++}
-++// -----------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSet.hxx connectivity/source/drivers/tdeab/KResultSet.hxx
-+--- connectivity/source/drivers/tdeab/KResultSet.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSet.hxx 2011-08-17 14:26:47.312928966 -0500
-+@@ -0,0 +1,228 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_RESULTSET_HXX_
-++#define _CONNECTIVITY_KAB_RESULTSET_HXX_
-++
-++#include "KStatement.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include <shell/tde_headers.h>
-++#include <com/sun/star/sdbc/XRow.hpp>
-++#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-++#include <com/sun/star/sdbc/XColumnLocate.hpp>
-++#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-++#include <com/sun/star/sdbc/XRowUpdate.hpp>
-++#include <com/sun/star/sdbcx/XRowLocate.hpp>
-++#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-++#include <cppuhelper/compbase12.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ /*
-++ ** KabResultSet
-++ */
-++ typedef ::cppu::WeakComponentImplHelper12< ::com::sun::star::sdbc::XResultSet,
-++ ::com::sun::star::sdbc::XRow,
-++ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::sdbc::XResultSetUpdate,
-++ ::com::sun::star::sdbc::XRowUpdate,
-++ ::com::sun::star::sdbcx::XRowLocate,
-++ ::com::sun::star::sdbcx::XDeleteRows,
-++ ::com::sun::star::sdbc::XCloseable,
-++ ::com::sun::star::sdbc::XColumnLocate,
-++ ::com::sun::star::lang::XServiceInfo> KabResultSet_BASE;
-++
-++ class KabResultSet : public comphelper::OBaseMutex,
-++ public KabResultSet_BASE,
-++ public ::cppu::OPropertySetHelper,
-++ public comphelper::OPropertyArrayUsageHelper<KabResultSet>
-++ {
-++ protected:
-++ ::rtl::Reference< KabCommonStatement > m_xStatement; // the statement that has created this result set
-++ ::rtl::Reference< KabResultSetMetaData > m_xMetaData; // the description of the columns in this result set
-++ ::KABC::Addressee::List m_aKabAddressees; // address book entries matching the query
-++ sal_Int32 m_nRowPos; // the current row within the result set
-++ sal_Bool m_bWasNull; // last entry retrieved from this result set was NULL
-++
-++ // OPropertyArrayUsageHelper
-++ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-++
-++ // OPropertySetHelper
-++ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-++
-++ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-++ ::com::sun::star::uno::Any & rConvertedValue,
-++ ::com::sun::star::uno::Any & rOldValue,
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue)
-++ throw (::com::sun::star::lang::IllegalArgumentException);
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue)
-++ throw (::com::sun::star::uno::Exception);
-++ virtual void SAL_CALL getFastPropertyValue(
-++ ::com::sun::star::uno::Any& rValue,
-++ sal_Int32 nHandle) const;
-++
-++ // you can't delete objects of this type
-++ virtual ~KabResultSet();
-++
-++ public:
-++ DECLARE_SERVICE_INFO();
-++
-++ KabResultSet(KabCommonStatement *pStmt);
-++
-++ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > operator *()
-++ {
-++ return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(*(KabResultSet_BASE*) this);
-++ }
-++
-++ void allKabAddressees();
-++ void someKabAddressees(const class KabCondition *pCondition);
-++ void sortKabAddressees(const class KabOrder *pOrder);
-++
-++ // ::cppu::OComponentHelper
-++ virtual void SAL_CALL disposing(void);
-++
-++ // XInterface
-++ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL acquire() throw();
-++ virtual void SAL_CALL release() throw();
-++
-++ // XTypeProvider
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XPropertySet
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSet
-++ virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XRow
-++ virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetMetaDataSupplier
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCancellable
-++ virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XResultSetUpdate
-++ virtual void SAL_CALL insertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL deleteRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ // XRowUpdate
-++ virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBytes( sal_Int32 columnIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateBinaryStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XColumnLocate
-++ virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XRowLocate
-++ virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& firstItem, const ::com::sun::star::uno::Any& secondItem ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XDeleteRows
-++ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_RESULTSET_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSetMetaData.cxx connectivity/source/drivers/tdeab/KResultSetMetaData.cxx
-+--- connectivity/source/drivers/tdeab/KResultSetMetaData.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSetMetaData.cxx 2011-08-17 14:26:20.900896322 -0500
-+@@ -0,0 +1,191 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KResultSetMetaData.hxx"
-++#include "kfields.hxx"
-++#include "KDatabaseMetaData.hxx"
-++#include <com/sun/star/sdbc/DataType.hpp>
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::sdbc;
-++
-++KabResultSetMetaData::KabResultSetMetaData(KabConnection* _pConnection)
-++ : m_pConnection(_pConnection),
-++ m_aKabFields()
-++{
-++}
-++// -------------------------------------------------------------------------
-++KabResultSetMetaData::~KabResultSetMetaData()
-++{
-++}
-++// -------------------------------------------------------------------------
-++void KabResultSetMetaData::setKabFields(const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(SQLException)
-++{
-++ OSQLColumns::Vector::const_iterator aIter;
-++ static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name"));
-++
-++ for (aIter = xColumns->get().begin(); aIter != xColumns->get().end(); ++aIter)
-++ {
-++ ::rtl::OUString aFieldName;
-++ sal_uInt32 nFieldNumber;
-++
-++ (*aIter)->getPropertyValue(aName) >>= aFieldName;
-++ nFieldNumber = findKabField(aFieldName);
-++ m_aKabFields.push_back(nFieldNumber);
-++ }
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnDisplaySize(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields[column - 1] < KAB_DATA_FIELDS? 20: 50;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnType(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields[column - 1] == KAB_FIELD_REVISION? DataType::TIMESTAMP: DataType::CHAR;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getColumnCount() throw(SQLException, RuntimeException)
-++{
-++ return m_aKabFields.size();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isCaseSensitive(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getSchemaName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnName(sal_Int32 column) throw(SQLException, RuntimeException)
-++{
-++ sal_uInt32 nFieldNumber = m_aKabFields[column - 1];
-++ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-++ TQString aQtName;
-++
-++ switch (nFieldNumber)
-++ {
-++ case KAB_FIELD_REVISION:
-++ aQtName = KABC::Addressee::revisionLabel();
-++ break;
-++ default:
-++ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->label();
-++ }
-++ ::rtl::OUString aName((const sal_Unicode *) aQtName.ucs2());
-++
-++ return aName;
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getTableName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return KabDatabaseMetaData::getAddressBookTableName();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getCatalogName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnTypeName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnLabel(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnServiceName(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return ::rtl::OUString();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isCurrency(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isAutoIncrement(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isSigned(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getPrecision(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return 0;
-++}
-++// -----------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::getScale(sal_Int32) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
-++{
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabResultSetMetaData::isNullable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return (sal_Int32) sal_True;
-++// TDE address book currently does not use NULL values.
-++// But it might do it someday
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isSearchable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isReadOnly(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_True;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isDefinitelyWritable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabResultSetMetaData::isWritable(sal_Int32) throw(SQLException, RuntimeException)
-++{
-++ return sal_False;
-++}
-++// -------------------------------------------------------------------------
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KResultSetMetaData.hxx connectivity/source/drivers/tdeab/KResultSetMetaData.hxx
-+--- connectivity/source/drivers/tdeab/KResultSetMetaData.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KResultSetMetaData.hxx 2011-08-17 14:26:13.350315217 -0500
-+@@ -0,0 +1,95 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++#define _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++
-++#include "KConnection.hxx"
-++#include <connectivity/CommonTools.hxx>
-++#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-++#include <cppuhelper/implbase1.hxx>
-++#include <rtl/ref.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ /*
-++ ** KabResultSetMetaData
-++ */
-++ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XResultSetMetaData> KabResultSetMetaData_BASE;
-++
-++ class KabResultSetMetaData : public KabResultSetMetaData_BASE
-++ {
-++ KabConnection* m_pConnection;
-++ ::std::vector<sal_Int32> m_aKabFields; // for each selected column, contains the number
-++ // of the corresponding KAddressBook field
-++
-++ protected:
-++ virtual ~KabResultSetMetaData();
-++
-++ public:
-++ KabResultSetMetaData(KabConnection* _pConnection);
-++
-++ // avoid ambigous cast error from the compiler
-++ inline operator ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > () throw()
-++ { return this; }
-++
-++ void setKabFields(
-++ const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(::com::sun::star::sdbc::SQLException);
-++ inline sal_uInt32 fieldAtColumn(sal_Int32 columnIndex) const
-++ { return m_aKabFields[columnIndex - 1]; }
-++
-++ virtual sal_Int32 SAL_CALL getColumnCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isAutoIncrement( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCaseSensitive( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isSearchable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isCurrency( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL isNullable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isSigned( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getColumnDisplaySize( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnLabel( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getSchemaName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getPrecision( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getScale( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getTableName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getCatalogName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getColumnType( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnTypeName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isReadOnly( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL isDefinitelyWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getColumnServiceName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KServices.cxx connectivity/source/drivers/tdeab/KServices.cxx
-+--- connectivity/source/drivers/tdeab/KServices.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KServices.cxx 2011-08-17 14:26:08.609950397 -0500
-+@@ -0,0 +1,180 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KDriver.hxx"
-++#include <cppuhelper/factory.hxx>
-++#include <osl/diagnose.h>
-++
-++using namespace connectivity::kab;
-++using ::rtl::OUString;
-++using ::com::sun::star::uno::Reference;
-++using ::com::sun::star::uno::Sequence;
-++using ::com::sun::star::registry::XRegistryKey;
-++using ::com::sun::star::lang::XSingleServiceFactory;
-++using ::com::sun::star::lang::XMultiServiceFactory;
-++
-++typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
-++ (
-++ const Reference< XMultiServiceFactory > & rServiceManager,
-++ const OUString & rComponentName,
-++ ::cppu::ComponentInstantiation pCreateFunction,
-++ const Sequence< OUString > & rServiceNames,
-++ rtl_ModuleCount* _pTemp
-++ );
-++
-++//***************************************************************************************
-++//
-++// The following C Api must be provided!
-++// It consists in three functions that must be exported by the module
-++//
-++
-++//---------------------------------------------------------------------------------------
-++void REGISTER_PROVIDER(
-++ const OUString& aServiceImplName,
-++ const Sequence< OUString>& Services,
-++ const Reference< ::com::sun::star::registry::XRegistryKey > & xKey)
-++{
-++ OUString aMainKeyName;
-++ aMainKeyName = OUString::createFromAscii("/");
-++ aMainKeyName += aServiceImplName;
-++ aMainKeyName += OUString::createFromAscii("/UNO/SERVICES");
-++
-++ Reference< ::com::sun::star::registry::XRegistryKey > xNewKey( xKey->createKey(aMainKeyName) );
-++ OSL_ENSURE(xNewKey.is(), "KAB::component_writeInfo : could not create a registry key !");
-++
-++ for (sal_Int32 i=0; i<Services.getLength(); ++i)
-++ xNewKey->createKey(Services[i]);
-++}
-++
-++
-++//---------------------------------------------------------------------------------------
-++struct ProviderRequest
-++{
-++ Reference< XSingleServiceFactory > xRet;
-++ Reference< XMultiServiceFactory > const xServiceManager;
-++ OUString const sImplementationName;
-++
-++ ProviderRequest(
-++ void* pServiceManager,
-++ sal_Char const* pImplementationName
-++ )
-++ : xServiceManager(reinterpret_cast<XMultiServiceFactory*>(pServiceManager))
-++ , sImplementationName(OUString::createFromAscii(pImplementationName))
-++ {
-++ }
-++
-++ inline
-++ sal_Bool CREATE_PROVIDER(
-++ const OUString& Implname,
-++ const Sequence< OUString > & Services,
-++ ::cppu::ComponentInstantiation Factory,
-++ createFactoryFunc creator
-++ )
-++ {
-++ if (!xRet.is() && (Implname == sImplementationName))
-++ try
-++ {
-++ xRet = creator( xServiceManager, sImplementationName,Factory, Services,0);
-++ }
-++ catch(...)
-++ {
-++ }
-++ return xRet.is();
-++ }
-++
-++ void* getProvider() const { return xRet.get(); }
-++};
-++
-++//---------------------------------------------------------------------------------------
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
-++ const sal_Char **ppEnvTypeName,
-++ uno_Environment **
-++ )
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++//---------------------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-++ void*,
-++ void* pRegistryKey
-++ )
-++{
-++ if (pRegistryKey)
-++ try
-++ {
-++ Reference< ::com::sun::star::registry::XRegistryKey > xKey(reinterpret_cast< ::com::sun::star::registry::XRegistryKey*>(pRegistryKey));
-++
-++ REGISTER_PROVIDER(
-++ KabDriver::getImplementationName_Static(),
-++ KabDriver::getSupportedServiceNames_Static(), xKey);
-++
-++ return sal_True;
-++ }
-++ catch (::com::sun::star::registry::InvalidRegistryException& )
-++ {
-++ OSL_ENSURE(sal_False, "KAB::component_writeInfo : could not create a registry key ! ## InvalidRegistryException !");
-++ }
-++
-++ return sal_False;
-++}
-++
-++//---------------------------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(
-++ const sal_Char* pImplementationName,
-++ void* pServiceManager,
-++ void*)
-++{
-++ void* pRet = 0;
-++ if (pServiceManager)
-++ {
-++ ProviderRequest aReq(pServiceManager,pImplementationName);
-++
-++ aReq.CREATE_PROVIDER(
-++ KabDriver::getImplementationName_Static(),
-++ KabDriver::getSupportedServiceNames_Static(),
-++ &KabDriver::Create,
-++ ::cppu::createSingleFactory)
-++ ;
-++
-++ if (aReq.xRet.is())
-++ aReq.xRet->acquire();
-++
-++ pRet = aReq.getProvider();
-++ }
-++
-++ return pRet;
-++};
-++
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KStatement.cxx connectivity/source/drivers/tdeab/KStatement.cxx
-+--- connectivity/source/drivers/tdeab/KStatement.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KStatement.cxx 2011-08-17 14:26:01.429397755 -0500
-+@@ -0,0 +1,588 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KStatement.hxx"
-++#include "KConnection.hxx"
-++#include "KDriver.hxx"
-++#include "KResultSet.hxx"
-++#include "KResultSetMetaData.hxx"
-++#include "kcondition.hxx"
-++#include "korder.hxx"
-++#include "TConnection.hxx"
-++#include <connectivity/dbexception.hxx>
-++#include "resource/tdeab_res.hrc"
-++#include "resource/sharedresources.hxx"
-++
-++
-++#if OSL_DEBUG_LEVEL > 0
-++# define OUtoCStr( x ) ( ::rtl::OUStringToOString ( (x), RTL_TEXTENCODING_ASCII_US).getStr())
-++#else /* OSL_DEBUG_LEVEL */
-++# define OUtoCStr( x ) ("dummy")
-++#endif /* OSL_DEBUG_LEVEL */
-++
-++using namespace connectivity::kab;
-++using namespace com::sun::star::uno;
-++using namespace com::sun::star::lang;
-++using namespace com::sun::star::beans;
-++using namespace com::sun::star::sdbc;
-++using namespace com::sun::star::sdbcx;
-++using namespace com::sun::star::container;
-++using namespace com::sun::star::io;
-++using namespace com::sun::star::util;
-++
-++namespace
-++{
-++ void lcl_throwError(sal_uInt16 _nErrorId)
-++ {
-++ ::connectivity::SharedResources aResources;
-++ const ::rtl::OUString sError( aResources.getResourceString(_nErrorId) );
-++ ::dbtools::throwGenericSQLException(sError,NULL);
-++ }
-++}
-++
-++IMPLEMENT_SERVICE_INFO(KabStatement, "com.sun.star.sdbc.drivers.KabStatement", "com.sun.star.sdbc.Statement");
-++//------------------------------------------------------------------------------
-++KabCommonStatement::KabCommonStatement(KabConnection* _pConnection )
-++ : KabCommonStatement_BASE(m_aMutex),
-++ OPropertySetHelper(KabCommonStatement_BASE::rBHelper),
-++ m_aParser(_pConnection->getDriver()->getMSFactory()),
-++ m_aSQLIterator(_pConnection, _pConnection->createCatalog()->getTables(), m_aParser, NULL ),
-++ m_pParseTree(NULL),
-++ m_pConnection(_pConnection),
-++ rBHelper(KabCommonStatement_BASE::rBHelper)
-++{
-++ m_pConnection->acquire();
-++}
-++// -----------------------------------------------------------------------------
-++KabCommonStatement::~KabCommonStatement()
-++{
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::disposing()
-++{
-++ KabCommonStatement_BASE::disposing();
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::resetParameters() const throw(::com::sun::star::sdbc::SQLException)
-++{
-++ lcl_throwError(STR_PARA_ONLY_PREPARED);
-++}
-++// -----------------------------------------------------------------------------
-++void KabCommonStatement::getNextParameter(::rtl::OUString &) const throw(::com::sun::star::sdbc::SQLException)
-++{
-++ lcl_throwError(STR_PARA_ONLY_PREPARED);
-++}
-++// -----------------------------------------------------------------------------
-++KabCondition *KabCommonStatement::analyseWhereClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-++{
-++ if (pParseNode->count() == 3)
-++ {
-++ const OSQLParseNode *pLeft = pParseNode->getChild(0),
-++ *pMiddle = pParseNode->getChild(1),
-++ *pRight = pParseNode->getChild(2);
-++
-++ // WHERE ( ... ) ?
-++ if (SQL_ISPUNCTUATION(pLeft, "(") && SQL_ISPUNCTUATION(pRight, ")"))
-++ {
-++ return analyseWhereClause(pMiddle);
-++ }
-++ else if (SQL_ISRULE(pParseNode, comparison_predicate))
-++ {
-++ if (pLeft->isToken() && pRight->isToken())
-++ {
-++ switch (pMiddle->getNodeType())
-++ {
-++ case SQL_NODE_EQUAL:
-++ // WHERE 0 = 1
-++ return new KabConditionConstant(pLeft->getTokenValue() == pRight->getTokenValue());
-++
-++ case SQL_NODE_NOTEQUAL:
-++ // WHERE 0 <> 1
-++ // (might not be correct SQL... don't care, handling anyway)
-++ return new KabConditionConstant(pLeft->getTokenValue() != pRight->getTokenValue());
-++
-++ default:
-++ break;
-++ }
-++ }
-++ else if (SQL_ISRULE(pLeft, column_ref))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (pRight->isToken() || SQL_ISRULE(pRight, parameter))
-++ {
-++ ::rtl::OUString sMatchString;
-++
-++ if (pRight->isToken()) // WHERE Name = 'Doe'
-++ sMatchString = pRight->getTokenValue();
-++ else if (SQL_ISRULE(pRight, parameter)) // WHERE Name = ?
-++ getNextParameter(sMatchString);
-++
-++ switch (pMiddle->getNodeType())
-++ {
-++ case SQL_NODE_EQUAL:
-++ // WHERE Name = 'Smith'
-++ return new KabConditionEqual(sColumnName, sMatchString);
-++
-++ case SQL_NODE_NOTEQUAL:
-++ // WHERE Name <> 'Jones'
-++ return new KabConditionDifferent(sColumnName, sMatchString);
-++
-++ default:
-++ break;
-++ }
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, search_condition))
-++ {
-++ if (SQL_ISTOKEN(pMiddle, OR))
-++ {
-++ // WHERE Name = 'Smith' OR Name = 'Jones'
-++ return new KabConditionOr(
-++ analyseWhereClause(pLeft),
-++ analyseWhereClause(pRight));
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, boolean_term))
-++ {
-++ if (SQL_ISTOKEN(pMiddle, AND))
-++ {
-++ // WHERE Name = 'Smith' AND "Given Name" = 'Peter'
-++ return new KabConditionAnd(
-++ analyseWhereClause(pLeft),
-++ analyseWhereClause(pRight));
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, test_for_null) || SQL_ISRULE(pParseNode, like_predicate))
-++ {
-++ const OSQLParseNode *pLeft = pParseNode->getChild(0);
-++ const OSQLParseNode* pPart2 = pParseNode->getChild(1);
-++ const OSQLParseNode *pMiddleLeft = pPart2->getChild(0),
-++ *pMiddleRight = pPart2->getChild(1),
-++ *pRight = pPart2->getChild(2);
-++
-++ if (SQL_ISRULE(pParseNode, test_for_null))
-++ {
-++ if (SQL_ISRULE(pLeft, column_ref) &&
-++ SQL_ISTOKEN(pMiddleLeft, IS) &&
-++ SQL_ISTOKEN(pRight, NULL))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (SQL_ISTOKEN(pMiddleRight, NOT))
-++ {
-++ // WHERE "Mobile Phone" IS NOT NULL
-++ return new KabConditionNotNull(sColumnName);
-++ }
-++ else
-++ {
-++ // WHERE "Mobile Phone" IS NULL
-++ return new KabConditionNull(sColumnName);
-++ }
-++ }
-++ }
-++ else if (SQL_ISRULE(pParseNode, like_predicate))
-++ {
-++ if (SQL_ISRULE(pLeft, column_ref))
-++ {
-++ ::rtl::OUString sColumnName,
-++ sTableRange;
-++
-++ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-++
-++ if (pMiddleRight->isToken() || SQL_ISRULE(pMiddleRight, parameter))
-++ {
-++ ::rtl::OUString sMatchString;
-++
-++ if (pMiddleRight->isToken()) // WHERE Name LIKE 'Sm%'
-++ sMatchString = pMiddleRight->getTokenValue();
-++ else if (SQL_ISRULE(pMiddleRight, parameter)) // WHERE Name LIKE ?
-++ getNextParameter(sMatchString);
-++
-++ return new KabConditionSimilar(sColumnName, sMatchString);
-++ }
-++ }
-++ }
-++ }
-++
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++// -----------------------------------------------------------------------------
-++KabOrder *KabCommonStatement::analyseOrderByClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-++{
-++ if (SQL_ISRULE(pParseNode, ordering_spec_commalist))
-++ {
-++ KabComplexOrder *list = new KabComplexOrder();
-++ sal_uInt32 n = pParseNode->count();
-++
-++ // Iterate through the ordering columns
-++ for (sal_uInt32 i = 0; i < n; i++)
-++ {
-++ list->addOrder
-++ (analyseOrderByClause(pParseNode->getChild(i)));
-++ }
-++
-++ return list;
-++ }
-++ else if (SQL_ISRULE(pParseNode, ordering_spec))
-++ {
-++ if (pParseNode->count() == 2)
-++ {
-++ OSQLParseNode* pColumnRef = pParseNode->getChild(0);
-++ OSQLParseNode* pAscendingDescending = pParseNode->getChild(1);
-++
-++ if (SQL_ISRULE(pColumnRef, column_ref))
-++ {
-++ if (pColumnRef->count() == 3)
-++ pColumnRef = pColumnRef->getChild(2);
-++
-++ if (pColumnRef->count() == 1)
-++ {
-++ ::rtl::OUString sColumnName =
-++ pColumnRef->getChild(0)->getTokenValue();
-++ sal_Bool bAscending =
-++ SQL_ISTOKEN(pAscendingDescending, DESC)?
-++ sal_False:
-++ sal_True;
-++
-++ return new KabSimpleOrder(sColumnName, bAscending);
-++ }
-++ }
-++ }
-++ }
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++ // Unreachable:
-++ OSL_ASSERT(false);
-++ return 0;
-++}
-++//------------------------------------------------------------------------------
-++sal_Bool KabCommonStatement::isTableKnown(KabResultSet *pResult) const
-++{
-++ // can handle requests like SELECT * FROM addresses addresses
-++ // but cannot handle requests like SELECT * FROM addresses persons
-++ if (m_aSQLIterator.getTables().size() != 1)
-++ return sal_False;
-++
-++ if (m_aSQLIterator.getTables().begin()->first != pResult->getMetaData()->getTableName(0))
-++ return sal_False;
-++
-++ return sal_True;
-++}
-++//------------------------------------------------------------------------------
-++void KabCommonStatement::setKabFields(KabResultSet *pResult) const throw(SQLException)
-++{
-++ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-++ KabResultSetMetaData *pMeta; // meta information - holds the list of KAddressBook fields
-++
-++ xColumns = m_aSQLIterator.getSelectColumns();
-++ if (!xColumns.is())
-++ {
-++ lcl_throwError(STR_INVALID_COLUMN_SELECTION);
-++ }
-++ pMeta = static_cast<KabResultSetMetaData *>(pResult->getMetaData().get());
-++ pMeta->setKabFields(xColumns);
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::selectAddressees(KabResultSet *pResult) const throw(SQLException)
-++{
-++ const OSQLParseNode *pParseNode;
-++ KabCondition *pCondition;
-++
-++ pParseNode = m_aSQLIterator.getWhereTree();
-++ if (pParseNode != NULL)
-++ {
-++ if (SQL_ISRULE(pParseNode, where_clause))
-++ {
-++ resetParameters();
-++ pParseNode = pParseNode->getChild(1);
-++ pCondition = analyseWhereClause(pParseNode);
-++ if (pCondition->isAlwaysTrue())
-++ pResult->allKabAddressees();
-++ else if (!pCondition->isAlwaysFalse())
-++ pResult->someKabAddressees(pCondition);
-++ delete pCondition;
-++ return;
-++ }
-++ }
-++
-++ // no WHERE clause: get all rows
-++ pResult->allKabAddressees();
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::sortAddressees(KabResultSet *pResult) const throw(SQLException)
-++{
-++ const OSQLParseNode *pParseNode;
-++ KabOrder *pOrder;
-++
-++ pParseNode = m_aSQLIterator.getOrderTree();
-++ if (pParseNode != NULL)
-++ {
-++ if (SQL_ISRULE(pParseNode, opt_order_by_clause))
-++ {
-++ pParseNode = pParseNode->getChild(2);
-++ pOrder = analyseOrderByClause(pParseNode);
-++ pResult->sortKabAddressees(pOrder);
-++ delete pOrder;
-++ }
-++ }
-++}
-++//-----------------------------------------------------------------------------
-++Any SAL_CALL KabCommonStatement::queryInterface( const Type & rType ) throw(RuntimeException)
-++{
-++ Any aRet = KabCommonStatement_BASE::queryInterface(rType);
-++ if (!aRet.hasValue())
-++ aRet = OPropertySetHelper::queryInterface(rType);
-++ return aRet;
-++}
-++// -------------------------------------------------------------------------
-++Sequence< Type > SAL_CALL KabCommonStatement::getTypes( ) throw(RuntimeException)
-++{
-++ ::cppu::OTypeCollection aTypes( ::getCppuType( (const Reference< XMultiPropertySet > *)0 ),
-++ ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
-++ ::getCppuType( (const Reference< XPropertySet > *)0 ));
-++
-++ return comphelper::concatSequences(aTypes.getTypes(),KabCommonStatement_BASE::getTypes());
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::cancel( ) throw(RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++ // cancel the current sql statement
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::close( ) throw(SQLException, RuntimeException)
-++{
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ }
-++ dispose();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool SAL_CALL KabCommonStatement::execute(
-++ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ Reference< XResultSet > xRS = executeQuery(sql);
-++
-++ return xRS.is();
-++}
-++// -------------------------------------------------------------------------
-++Reference< XResultSet > SAL_CALL KabCommonStatement::executeQuery(
-++ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++OSL_TRACE("TDE Address book - SQL Request: %s", OUtoCStr(sql));
-++
-++ KabResultSet* pResult = new KabResultSet(this);
-++ Reference< XResultSet > xRS = pResult;
-++ ::rtl::OUString aErr;
-++
-++ m_pParseTree = m_aParser.parseTree(aErr, sql);
-++ if (m_pParseTree == NULL)
-++ throw SQLException(aErr, *this, aErr, 0, Any());
-++
-++ m_aSQLIterator.setParseTree(m_pParseTree);
-++ m_aSQLIterator.traverseAll();
-++ switch (m_aSQLIterator.getStatementType())
-++ {
-++ case SQL_STATEMENT_SELECT:
-++ if (isTableKnown(pResult)) // FROM which table ?
-++ {
-++ setKabFields(pResult); // SELECT which columns ?
-++ selectAddressees(pResult); // WHERE which condition ?
-++ sortAddressees(pResult); // ORDER BY which columns ?
-++// To be continued: DISTINCT
-++// etc...
-++ }
-++ break;
-++
-++ default:
-++// To be continued: UPDATE
-++// DELETE
-++// etc...
-++ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-++ }
-++
-++ return xRS;
-++}
-++// -------------------------------------------------------------------------
-++Reference< XConnection > SAL_CALL KabCommonStatement::getConnection( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // just return our connection here
-++ return (Reference< XConnection >) m_pConnection;
-++}
-++// -------------------------------------------------------------------------
-++sal_Int32 SAL_CALL KabCommonStatement::executeUpdate( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ // the return values gives information about how many rows are affected by executing the sql statement
-++ return 0;
-++}
-++// -------------------------------------------------------------------------
-++Any SAL_CALL KabCommonStatement::getWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ return makeAny(m_aLastWarning);
-++}
-++// -------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::clearWarnings( ) throw(SQLException, RuntimeException)
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-++
-++ m_aLastWarning = SQLWarning();
-++}
-++// -------------------------------------------------------------------------
-++::cppu::IPropertyArrayHelper* KabCommonStatement::createArrayHelper( ) const
-++{
-++ // this properties are defined by the service statement
-++ // they must be in alphabetic order
-++ Sequence< Property > aProps(10);
-++ Property* pProperties = aProps.getArray();
-++ sal_Int32 nPos = 0;
-++ DECL_PROP0(CURSORNAME, ::rtl::OUString);
-++ DECL_BOOL_PROP0(ESCAPEPROCESSING);
-++ DECL_PROP0(FETCHDIRECTION,sal_Int32);
-++ DECL_PROP0(FETCHSIZE, sal_Int32);
-++ DECL_PROP0(MAXFIELDSIZE,sal_Int32);
-++ DECL_PROP0(MAXROWS, sal_Int32);
-++ DECL_PROP0(QUERYTIMEOUT,sal_Int32);
-++ DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
-++ DECL_PROP0(RESULTSETTYPE,sal_Int32);
-++ DECL_BOOL_PROP0(USEBOOKMARKS);
-++
-++ return new ::cppu::OPropertyArrayHelper(aProps);
-++}
-++// -------------------------------------------------------------------------
-++::cppu::IPropertyArrayHelper & KabCommonStatement::getInfoHelper()
-++{
-++ return *const_cast<KabCommonStatement*>(this)->getArrayHelper();
-++}
-++// -------------------------------------------------------------------------
-++sal_Bool KabCommonStatement::convertFastPropertyValue(
-++ Any &,
-++ Any &,
-++ sal_Int32,
-++ const Any&) throw (::com::sun::star::lang::IllegalArgumentException)
-++{
-++ sal_Bool bConverted = sal_False;
-++ // here we have to try to convert
-++ return bConverted;
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any&) throw (Exception)
-++{
-++ // set the value to whatever is nescessary
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_QUERYTIMEOUT:
-++ case PROPERTY_ID_MAXFIELDSIZE:
-++ case PROPERTY_ID_MAXROWS:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ case PROPERTY_ID_ESCAPEPROCESSING:
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ default:
-++ ;
-++ }
-++}
-++// -------------------------------------------------------------------------
-++void KabCommonStatement::getFastPropertyValue(Any&,sal_Int32 nHandle) const
-++{
-++ switch (nHandle)
-++ {
-++ case PROPERTY_ID_QUERYTIMEOUT:
-++ case PROPERTY_ID_MAXFIELDSIZE:
-++ case PROPERTY_ID_MAXROWS:
-++ case PROPERTY_ID_CURSORNAME:
-++ case PROPERTY_ID_RESULTSETCONCURRENCY:
-++ case PROPERTY_ID_RESULTSETTYPE:
-++ case PROPERTY_ID_FETCHDIRECTION:
-++ case PROPERTY_ID_FETCHSIZE:
-++ case PROPERTY_ID_ESCAPEPROCESSING:
-++ case PROPERTY_ID_USEBOOKMARKS:
-++ default:
-++ ;
-++ }
-++}
-++// -----------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::acquire() throw()
-++{
-++ KabCommonStatement_BASE::acquire();
-++}
-++// -----------------------------------------------------------------------------
-++void SAL_CALL KabCommonStatement::release() throw()
-++{
-++ KabCommonStatement_BASE::release();
-++}
-++// -----------------------------------------------------------------------------
-++Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabCommonStatement::getPropertySetInfo( ) throw(RuntimeException)
-++{
-++ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-++}
-++// -----------------------------------------------------------------------------
-++KabStatement::KabStatement(KabConnection* _pConnection)
-++ : KabStatement_BASE(_pConnection)
-++{
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KStatement.hxx connectivity/source/drivers/tdeab/KStatement.hxx
-+--- connectivity/source/drivers/tdeab/KStatement.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KStatement.hxx 2011-08-17 14:25:52.088678867 -0500
-+@@ -0,0 +1,174 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_STATEMENT_HXX_
-++#define _CONNECTIVITY_KAB_STATEMENT_HXX_
-++
-++#include "KConnection.hxx"
-++#include <list>
-++#include "connectivity/sqliterator.hxx"
-++#include "connectivity/sqlparse.hxx"
-++#include <com/sun/star/sdbc/XStatement.hpp>
-++#include <com/sun/star/util/XCancellable.hpp>
-++#include <cppuhelper/compbase4.hxx>
-++#include <cppuhelper/implbase1.hxx>
-++#include <comphelper/proparrhlp.hxx>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ typedef ::cppu::WeakComponentImplHelper4< ::com::sun::star::sdbc::XStatement,
-++ ::com::sun::star::sdbc::XWarningsSupplier,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::sdbc::XCloseable> KabCommonStatement_BASE;
-++
-++ //**************************************************************
-++ // Class KabCommonStatement
-++ // is a base class for the normal statement and for the prepared statement
-++ //**************************************************************
-++ class KabCommonStatement : public comphelper::OBaseMutex,
-++ public KabCommonStatement_BASE,
-++ public ::cppu::OPropertySetHelper,
-++ public comphelper::OPropertyArrayUsageHelper<KabCommonStatement>
-++
-++ {
-++ ::com::sun::star::sdbc::SQLWarning m_aLastWarning;
-++
-++ protected:
-++ ::std::list< ::rtl::OUString> m_aBatchList;
-++ connectivity::OSQLParser m_aParser;
-++ connectivity::OSQLParseTreeIterator m_aSQLIterator;
-++ connectivity::OSQLParseNode* m_pParseTree;
-++ KabConnection* m_pConnection; // The owning Connection object
-++
-++ protected:
-++ class KabCondition *analyseWhereClause(
-++ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-++ class KabOrder *analyseOrderByClause(
-++ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-++ sal_Bool isTableKnown(class KabResultSet *pResult) const;
-++ void setKabFields(class KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++ void selectAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++ void sortAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-++
-++ // OPropertyArrayUsageHelper
-++ virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
-++
-++ // OPropertySetHelper
-++ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-++ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-++ ::com::sun::star::uno::Any & rConvertedValue,
-++ ::com::sun::star::uno::Any & rOldValue,
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::lang::IllegalArgumentException);
-++ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-++ sal_Int32 nHandle,
-++ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-++ virtual void SAL_CALL getFastPropertyValue(
-++ ::com::sun::star::uno::Any& rValue,
-++ sal_Int32 nHandle) const;
-++
-++ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-++ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-++ virtual ~KabCommonStatement();
-++
-++ public:
-++ ::cppu::OBroadcastHelper& rBHelper;
-++
-++ KabCommonStatement(KabConnection *_pConnection);
-++ using KabCommonStatement_BASE::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
-++
-++ // OComponentHelper
-++ virtual void SAL_CALL disposing();
-++
-++ // XInterface
-++ virtual void SAL_CALL release() throw();
-++ virtual void SAL_CALL acquire() throw();
-++ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
-++ const ::com::sun::star::uno::Type & rType
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XTypeProvider
-++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XPropertySet
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XStatement
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL executeUpdate(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL execute(
-++ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XWarningsSupplier
-++ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL clearWarnings(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XCancellable
-++ virtual void SAL_CALL cancel(
-++ ) throw(::com::sun::star::uno::RuntimeException);
-++
-++ // XCloseable
-++ virtual void SAL_CALL close(
-++ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-++
-++ // other methods
-++ inline KabConnection* getOwnConnection() const { return m_pConnection; }
-++ };
-++
-++ //**************************************************************
-++ // Class KabStatement
-++ //**************************************************************
-++ typedef ::cppu::ImplInheritanceHelper1<
-++ KabCommonStatement, ::com::sun::star::lang::XServiceInfo > KabStatement_BASE;
-++
-++ class KabStatement : public KabStatement_BASE
-++ {
-++ protected:
-++ virtual ~KabStatement() { }
-++
-++ public:
-++ KabStatement(KabConnection* _pConnection);
-++ DECLARE_SERVICE_INFO();
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_STATEMENT_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTable.cxx connectivity/source/drivers/tdeab/KTable.cxx
-+--- connectivity/source/drivers/tdeab/KTable.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTable.cxx 2011-08-17 14:25:28.396855433 -0500
-+@@ -0,0 +1,100 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KTable.hxx"
-++#include "KTables.hxx"
-++#include "KColumns.hxx"
-++#include "KCatalog.hxx"
-++
-++using namespace connectivity::kab;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++// -------------------------------------------------------------------------
-++KabTable::KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection)
-++ : KabTable_TYPEDEF(_pTables, sal_True),
-++ m_pConnection(_pConnection)
-++{
-++ construct();
-++}
-++// -------------------------------------------------------------------------
-++KabTable::KabTable( sdbcx::OCollection* _pTables,
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& _Name,
-++ const ::rtl::OUString& _Type,
-++ const ::rtl::OUString& _Description ,
-++ const ::rtl::OUString& _SchemaName,
-++ const ::rtl::OUString& _CatalogName
-++ ) : KabTable_TYPEDEF(_pTables,sal_True,
-++ _Name,
-++ _Type,
-++ _Description,
-++ _SchemaName,
-++ _CatalogName),
-++ m_pConnection(_pConnection)
-++{
-++ construct();
-++}
-++// -------------------------------------------------------------------------
-++void KabTable::refreshColumns()
-++{
-++ TStringVector aVector;
-++
-++ if (!isNew())
-++ {
-++ Reference< XResultSet > xResult = m_pConnection->getMetaData()->getColumns(
-++ Any(),
-++ m_SchemaName,
-++ m_Name,
-++ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%")));
-++
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult, UNO_QUERY);
-++ while (xResult->next())
-++ aVector.push_back(xRow->getString(4));
-++ }
-++ }
-++
-++ if (m_pColumns)
-++ m_pColumns->reFill(aVector);
-++ else
-++ m_pColumns = new KabColumns(this,m_aMutex,aVector);
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTable.hxx connectivity/source/drivers/tdeab/KTable.hxx
-+--- connectivity/source/drivers/tdeab/KTable.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTable.hxx 2011-08-17 14:25:22.436396680 -0500
-+@@ -0,0 +1,72 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_TABLE_HXX_
-++#define _CONNECTIVITY_KAB_TABLE_HXX_
-++
-++#include "KConnection.hxx"
-++#include "connectivity/sdbcx/VTable.hxx"
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ typedef connectivity::sdbcx::OTable KabTable_TYPEDEF;
-++
-++ ::rtl::OUString getTypeString(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xColProp);
-++
-++ class KabTable : public KabTable_TYPEDEF
-++ {
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++ KabConnection* m_pConnection;
-++
-++ public:
-++ KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection);
-++ KabTable( sdbcx::OCollection* _pTables,
-++ KabConnection* _pConnection,
-++ const ::rtl::OUString& _Name,
-++ const ::rtl::OUString& _Type,
-++ const ::rtl::OUString& _Description = ::rtl::OUString(),
-++ const ::rtl::OUString& _SchemaName = ::rtl::OUString(),
-++ const ::rtl::OUString& _CatalogName = ::rtl::OUString()
-++ );
-++
-++ KabConnection* getConnection() { return m_pConnection;}
-++
-++ virtual void refreshColumns();
-++
-++ ::rtl::OUString getTableName() const { return m_Name; }
-++ ::rtl::OUString getSchema() const { return m_SchemaName; }
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_TABLE_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTables.cxx connectivity/source/drivers/tdeab/KTables.cxx
-+--- connectivity/source/drivers/tdeab/KTables.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTables.cxx 2011-08-17 14:25:16.415933304 -0500
-+@@ -0,0 +1,94 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++
-++#include "KTables.hxx"
-++#include "KTable.hxx"
-++#include "KCatalog.hxx"
-++#include "KConnection.hxx"
-++#include <comphelper/types.hxx>
-++
-++using namespace connectivity::kab;
-++using namespace connectivity;
-++using namespace ::comphelper;
-++using namespace ::cppu;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::beans;
-++using namespace ::com::sun::star::sdbcx;
-++using namespace ::com::sun::star::sdbc;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++
-++sdbcx::ObjectType KabTables::createObject(const ::rtl::OUString& _rName)
-++{
-++ ::rtl::OUString aName,aSchema;
-++ aSchema = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-++ aName = _rName;
-++
-++ Sequence< ::rtl::OUString > aTypes(1);
-++ aTypes[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-++ ::rtl::OUString sEmpty;
-++
-++ Reference< XResultSet > xResult = m_xMetaData->getTables(Any(), aSchema, aName, aTypes);
-++
-++ sdbcx::ObjectType xRet = NULL;
-++ if (xResult.is())
-++ {
-++ Reference< XRow > xRow(xResult, UNO_QUERY);
-++ if (xResult->next()) // there can be only one table with this name
-++ {
-++ KabTable* pRet = new KabTable(
-++ this,
-++ static_cast<KabCatalog&>(m_rParent).getConnection(),
-++ aName,
-++ xRow->getString(4),
-++ xRow->getString(5),
-++ sEmpty);
-++ xRet = pRet;
-++ }
-++ }
-++ ::comphelper::disposeComponent(xResult);
-++
-++ return xRet;
-++}
-++// -------------------------------------------------------------------------
-++void KabTables::impl_refresh( ) throw(RuntimeException)
-++{
-++ static_cast<KabCatalog&>(m_rParent).refreshTables();
-++}
-++// -------------------------------------------------------------------------
-++void KabTables::disposing(void)
-++{
-++m_xMetaData.clear();
-++ OCollection::disposing();
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/KTables.hxx connectivity/source/drivers/tdeab/KTables.hxx
-+--- connectivity/source/drivers/tdeab/KTables.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/KTables.hxx 2011-08-17 14:24:50.933971998 -0500
-+@@ -0,0 +1,65 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _CONNECTIVITY_KAB_TABLES_HXX_
-++#define _CONNECTIVITY_KAB_TABLES_HXX_
-++
-++#include "connectivity/sdbcx/VCollection.hxx"
-++#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ class KabTables : public sdbcx::OCollection
-++ {
-++ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-++
-++ protected:
-++ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-++ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-++
-++ public:
-++ KabTables(
-++ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rMetaData,
-++ ::cppu::OWeakObject& _rParent,
-++ ::osl::Mutex& _rMutex,
-++ const TStringVector &_rVector)
-++ : sdbcx::OCollection(_rParent,sal_True,_rMutex,_rVector),
-++ m_xMetaData(_rMetaData)
-++ { }
-++
-++ virtual void SAL_CALL disposing(void);
-++ };
-++ }
-++}
-++
-++#endif // _CONNECTIVITY_KAB_TABLES_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/makefile.mk connectivity/source/drivers/tdeab/makefile.mk
-+--- connectivity/source/drivers/tdeab/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/makefile.mk 2011-08-17 14:24:11.740955243 -0500
-+@@ -0,0 +1,139 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++PRJINC=..$/..
-++PRJNAME=connectivity
-++TARGET=tdeab
-++TARGET2=$(TARGET)drv
-++
-++ENABLE_EXCEPTIONS=TRUE
-++VISIBILITY_HIDDEN=TRUE
-++
-++# --- Settings ----------------------------------
-++
-++.INCLUDE : $(PRJ)$/makefile.pmk
-++.INCLUDE : $(PRJ)$/version.mk
-++
-++.IF "$(GUI)" == "UNX"
-++.IF "$(ENABLE_TDEAB)" == "TRUE"
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++.IF "$(TDE_ROOT)"!=""
-++EXTRALIBPATHS+=-L$(TDE_ROOT)$/lib
-++.ENDIF
-++
-++# === TDEAB base library ==========================
-++
-++# --- Files -------------------------------------
-++
-++SLOFILES= \
-++ $(SLO)$/KDriver.obj \
-++ $(SLO)$/KServices.obj
-++
-++DEPOBJFILES= \
-++ $(SLO2FILES)
-++
-++# --- Library -----------------------------------
-++
-++SHL1VERSIONMAP=$(SOLARENV)/src/component.map
-++
-++SHL1TARGET= $(TARGET)$(TDEAB_MAJOR)
-++SHL1OBJS=$(SLOFILES)
-++SHL1STDLIBS=\
-++ $(CPPULIB) \
-++ $(CPPUHELPERLIB) \
-++ $(DBTOOLSLIB) \
-++ $(SALLIB) \
-++ $(SALHELPERLIB)
-++
-++SHL1DEPN=
-++SHL1IMPLIB= i$(TARGET)
-++
-++SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-++
-++DEF1NAME= $(SHL1TARGET)
-++
-++# === TDEAB impl library ==========================
-++
-++# --- Files -------------------------------------
-++
-++SLO2FILES=\
-++ $(SLO)$/KColumns.obj \
-++ $(SLO)$/KTable.obj \
-++ $(SLO)$/KTables.obj \
-++ $(SLO)$/KCatalog.obj \
-++ $(SLO)$/KResultSet.obj \
-++ $(SLO)$/KStatement.obj \
-++ $(SLO)$/KPreparedStatement.obj \
-++ $(SLO)$/KDatabaseMetaData.obj \
-++ $(SLO)$/KConnection.obj \
-++ $(SLO)$/KResultSetMetaData.obj \
-++ $(SLO)$/kcondition.obj \
-++ $(SLO)$/korder.obj \
-++ $(SLO)$/kfields.obj \
-++ $(SLO)$/TDEInit.obj
-++
-++TDEAB_LIB=$(TDE_LIBS) -lkabc
-++
-++# --- Library -----------------------------------
-++
-++SHL2VERSIONMAP=$(TARGET2).map
-++
-++SHL2TARGET= $(TARGET2)$(TDEAB_MAJOR)
-++SHL2OBJS=$(SLO2FILES)
-++SHL2LINKFLAGS+=$(TDEAB_LIB)
-++SHL2STDLIBS=\
-++ $(CPPULIB) \
-++ $(CPPUHELPERLIB) \
-++ $(SALLIB) \
-++ $(SALHELPERLIB) \
-++ $(DBTOOLSLIB) \
-++ $(COMPHELPERLIB)
-++
-++SHL2DEPN=
-++SHL2IMPLIB= i$(TARGET2)
-++
-++SHL2DEF= $(MISC)$/$(SHL2TARGET).def
-++
-++DEF2NAME= $(SHL2TARGET)
-++
-++# --- Targets -----------------------------------
-++.ELSE # "$(ENABLE_TDEAB)" == "TRUE"
-++dummy:
-++ @echo TDE Addressbook disabled - nothing to build
-++.ENDIF
-++
-++.ELSE # "$(GUI)" == "UNX"
-++dummy:
-++ @echo "Nothing to build for GUI $(GUI)"
-++.ENDIF
-++
-++.INCLUDE : $(PRJ)$/target.pmk
-++
-+diff -urN connectivity/source/drivers/tdeab/tdeabdrv.map connectivity/source/drivers/tdeab/tdeabdrv.map
-+--- connectivity/source/drivers/tdeab/tdeabdrv.map 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeabdrv.map 2011-08-17 14:25:00.664720964 -0500
-+@@ -0,0 +1,9 @@
-++UDK_3_0_0 {
-++ global:
-++ createKabConnection;
-++ initKApplication;
-++ shutdownKApplication;
-++ matchTDEVersion;
-++ local:
-++ *;
-++};
-+diff -urN connectivity/source/drivers/tdeab/tdeab.xcu connectivity/source/drivers/tdeab/tdeab.xcu
-+--- connectivity/source/drivers/tdeab/tdeab.xcu 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeab.xcu 2011-08-17 14:29:58.077608095 -0500
-+@@ -0,0 +1,47 @@
-++<?xml version="1.0" encoding="UTF-8"?>
-++<!--***********************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************ -->
-++<oor:component-data oor:name="Drivers" oor:package="org.openoffice.Office.DataAccess" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-++ <node oor:name="Installed">
-++ <node oor:name="sdbc:address:kab" oor:op="replace">
-++ <prop oor:name="Driver">
-++ <value>com.sun.star.comp.sdbc.kab.Driver</value>
-++ </prop>
-++ <prop oor:name="DriverTypeDisplayName" oor:type="xs:string">
-++ <value xml:lang="en-US">TDE Address Book</value>
-++ </prop>
-++ <node oor:name="Features">
-++ <node oor:name="EscapeDateTime" oor:op="replace">
-++ <prop oor:name="Value" oor:type="xs:boolean">
-++ <value>true</value>
-++ </prop>
-++ </node>
-++ </node>
-++ </node>
-++ </node>
-++</oor:component-data>
-+diff -urN connectivity/source/drivers/tdeab/tdeab.xml connectivity/source/drivers/tdeab/tdeab.xml
-+--- connectivity/source/drivers/tdeab/tdeab.xml 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/tdeab.xml 2011-08-17 14:29:44.246543923 -0500
-+@@ -0,0 +1,77 @@
-++<?xml version='1.0' encoding="UTF-8"?>
-++<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//W3C//DTD HTML 3.2//EN" "module-description.dtd">
-++<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-++ <module-name> kab1 </module-name>
-++ <component-description>
-++ <Author>Eric Bischoff</Author>
-++ <Name>com.sun.star.comp.sdbc.kab.Driver</Name>
-++ <description>This library implements the database driver for TDE address book formats.</description>
-++ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-++ <language>c++</language>
-++ <status value="final"/>
-++ <supported-service>com.sun.star.sdbc.Driver</supported-service>
-++ <service-dependency> ... </service-dependency>
-++ </component-description>
-++ <project-build-dependency> cppuhelper </project-build-dependency>
-++ <project-build-dependency> cppu </project-build-dependency>
-++ <project-build-dependency> sal </project-build-dependency>
-++
-++ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-++ <runtime-module-dependency> cppu1 </runtime-module-dependency>
-++ <runtime-module-dependency> sal1 </runtime-module-dependency>
-++
-++ <type> com.sun.star.registry.XRegistryKey </type>
-++ <type> com.sun.star.util.XCancellable </type>
-++ <type> com.sun.star.util.XNumberFormatter </type>
-++ <type> com.sun.star.uno.TypeClass </type>
-++ <type> com.sun.star.uno.XWeak </type>
-++ <type> com.sun.star.uno.XAggregation </type>
-++ <type> com.sun.star.uno.XComponentContext </type>
-++ <type> com.sun.star.beans.PropertyAttribute </type>
-++ <type> com.sun.star.beans.XPropertyState </type>
-++ <type> com.sun.star.beans.XPropertySet </type>
-++ <type> com.sun.star.beans.PropertyValue </type>
-++ <type> com.sun.star.beans.XMultiPropertySet </type>
-++ <type> com.sun.star.beans.XFastPropertySet </type>
-++ <type> com.sun.star.lang.XSingleServiceFactory </type>
-++ <type> com.sun.star.lang.XTypeProvider </type>
-++ <type> com.sun.star.lang.XSingleComponentFactory </type>
-++ <type> com.sun.star.lang.EventObject </type>
-++ <type> com.sun.star.lang.XComponent </type>
-++ <type> com.sun.star.lang.IllegalArgumentException </type>
-++ <type> com.sun.star.lang.DisposedException </type>
-++ <type> com.sun.star.lang.XMultiServiceFactory </type>
-++ <type> com.sun.star.lang.XServiceInfo </type>
-++ <type> com.sun.star.lang.XUnoTunnel </type>
-++ <type> com.sun.star.java.XJavaThreadRegister_11 </type>
-++ <type> com.sun.star.java.XJavaVM </type>
-++ <type> com.sun.star.sdbc.FetchDirection </type>
-++ <type> com.sun.star.sdbc.XConnection </type>
-++ <type> com.sun.star.sdbc.XStatement </type>
-++ <type> com.sun.star.sdbc.XResultSet </type>
-++ <type> com.sun.star.sdbc.XResultSetMetaDataSupplier</type>
-++ <type> com.sun.star.sdbc.XColumnLocate </type>
-++ <type> com.sun.star.sdbc.XResultSetUpdate </type>
-++ <type> com.sun.star.sdbc.XWarningsSupplier </type>
-++ <type> com.sun.star.sdbc.XRowUpdate </type>
-++ <type> com.sun.star.sdbc.XMultipleResults </type>
-++ <type> com.sun.star.sdbc.XBatchExecution </type>
-++ <type> com.sun.star.sdbc.XPreparedBatchExecution </type>
-++ <type> com.sun.star.sdbc.XParameters </type>
-++ <type> com.sun.star.sdbc.XOutParameters </type>
-++ <type> com.sun.star.sdbc.DriverPropertyInfo </type>
-++ <type> com.sun.star.sdbc.SQLWarning </type>
-++ <type> com.sun.star.sdbc.XRow </type>
-++ <type> com.sun.star.sdbc.ColumnSearch </type>
-++ <type> com.sun.star.sdbc.ColumnValue </type>
-++ <type> com.sun.star.sdbc.DataType </type>
-++ <type> com.sun.star.sdbc.XDriver </type>
-++ <type> com.sun.star.sdbc.TransactionIsolation </type>
-++ <type> com.sun.star.sdbc.ResultSetType </type>
-++ <type> com.sun.star.sdbc.ResultSetConcurrency </type>
-++ <type> com.sun.star.sdbcx.XRowLocate </type>
-++ <type> com.sun.star.sdbcx.XDeleteRows </type>
-++ <type> com.sun.star.sdbcx.CompareBookmark </type>
-++ <type> com.sun.star.sdb.XColumnUpdate </type>
-++ <type> com.sun.star.sdb.XColumn </type>
-++</module-description>
-+diff -urN connectivity/source/drivers/tdeab/TDEInit.cxx connectivity/source/drivers/tdeab/TDEInit.cxx
-+--- connectivity/source/drivers/tdeab/TDEInit.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/TDEInit.cxx 2011-08-17 14:28:21.700192397 -0500
-+@@ -0,0 +1,158 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_connectivity.hxx"
-++#include "TDEInit.h"
-++#include <osl/diagnose.h>
-++#include <osl/process.h>
-++#include <shell/tde_headers.h>
-++
-++namespace connectivity
-++{
-++ namespace kab
-++ {
-++ // ===============================================================
-++ // = TDEInit
-++ // ===============================================================
-++ class TDEInit
-++ {
-++ private:
-++ /// TDE application if we own it
-++ static KApplication* s_pKApplication;
-++ static bool s_bDidInsertCatalogue;
-++
-++ public:
-++ static void Init();
-++ static void Shutdown();
-++ };
-++
-++ // ---------------------------------------------------------------
-++ KApplication* TDEInit::s_pKApplication = NULL;
-++ bool TDEInit::s_bDidInsertCatalogue = false;
-++
-++ // ---------------------------------------------------------------
-++ void TDEInit::Init()
-++ {
-++ // TODO: All this is not thread-safe
-++
-++ // we create a TDE application only if it is not already done
-++ if (KApplication::kApplication() == NULL)
-++ {
-++ OSL_ENSURE(s_pKApplication == NULL, "TDEInit::Init: inconsistency in the application pointers!");
-++
-++ char *kabargs[1] = {(char*)"libkab1"};
-++ KCmdLineArgs::init(1, kabargs, "KAddressBook", *kabargs, "Address Book driver", KAB_DRIVER_VERSION);
-++
-++ s_pKApplication = new KApplication(false, false);
-++ }
-++
-++ // set language
-++ rtl_Locale *pProcessLocale;
-++ osl_getProcessLocale(&pProcessLocale);
-++ // sal_Unicode and TQChar are (currently) both 16 bits characters
-++ TQString aLanguage(
-++ (const TQChar *) pProcessLocale->Language->buffer,
-++ (int) pProcessLocale->Language->length);
-++ KGlobal::locale()->setLanguage(aLanguage);
-++
-++ // load TDE address book's localized messages
-++ KGlobal::locale()->insertCatalogue("kaddressbook");
-++ s_bDidInsertCatalogue = true;
-++ }
-++
-++ // ---------------------------------------------------------------
-++ void TDEInit::Shutdown()
-++ {
-++ if ( s_bDidInsertCatalogue )
-++ // this guard is necessary, since TDE 3.3 seems to crash if we remove a catalogue
-++ // which we did not previously insert
-++ KGlobal::locale()->removeCatalogue("kaddressbook");
-++
-++ if ( s_pKApplication != NULL )
-++ {
-++ delete s_pKApplication;
-++ s_pKApplication = NULL;
-++ }
-++ }
-++ }
-++}
-++
-++// =======================================================================
-++namespace
-++{
-++ double normalizeVersion( unsigned int major, unsigned int minor )
-++ {
-++ return major + 1.0 * minor / 1000;
-++ }
-++}
-++
-++// -----------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL initKApplication()
-++{
-++ ::connectivity::kab::TDEInit::Init();
-++}
-++
-++// -----------------------------------------------------------------------
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL shutdownKApplication()
-++{
-++ ::connectivity::kab::TDEInit::Shutdown();
-++}
-++// -----------------------------------------------------------------------
-++/** checks whether the TDE version on the system we're running at is supported
-++ by the driver
-++
-++ Has to be called before any other code from this library, in particular,
-++ it has to be called before initKApplication()
-++
-++ If this function returns <code>0</code>, then no other code from this library
-++ has to be called, else the results are unpredictable.
-++
-++ @return
-++ <ul><li><code>0</code> if the TDE version is supportednon</li>
-++ <li>a negative value if the version is too old</li>
-++ <li>a positive value if the version is too new to know whether it works with this driver</li>
-++ </ul>
-++
-++ #i60062# / 2006-01-06 / frank.schoenheit@sun.com
-++*/
-++extern "C" SAL_DLLPUBLIC_EXPORT int SAL_CALL matchTDEVersion()
-++{
-++ double nMinVersion = normalizeVersion( MIN_TDE_VERSION_MAJOR, MIN_TDE_VERSION_MINOR );
-++ double nCurVersion = normalizeVersion( ::KDE::versionMajor(), ::KDE::versionMinor() );
-++ double nMaxVersion = normalizeVersion( MAX_TDE_VERSION_MAJOR, MAX_TDE_VERSION_MINOR );
-++
-++ if ( nCurVersion < nMinVersion )
-++ return -1;
-++ if ( nCurVersion > nMaxVersion )
-++ return 1;
-++
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/drivers/tdeab/TDEInit.h connectivity/source/drivers/tdeab/TDEInit.h
-+--- connectivity/source/drivers/tdeab/TDEInit.h 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/drivers/tdeab/TDEInit.h 2011-08-17 14:28:13.719578294 -0500
-+@@ -0,0 +1,47 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef CONNECTIVITY_KAB_TDEINIT_H
-++#define CONNECTIVITY_KAB_TDEINIT_H
-++
-++// the address book driver's version
-++#define KAB_DRIVER_VERSION "0.2"
-++#define KAB_DRIVER_VERSION_MAJOR 0
-++#define KAB_DRIVER_VERSION_MINOR 2
-++
-++// the minimum TDE version which is required at runtime
-++#define MIN_TDE_VERSION_MAJOR 3
-++#define MIN_TDE_VERSION_MINOR 2
-++
-++#define MAX_TDE_VERSION_MAJOR 3
-++#define MAX_TDE_VERSION_MINOR 6
-++
-++
-++#endif // CONNECTIVITY_KAB_TDEINIT_H
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/makefile.mk fpicker/source/unx/tde/makefile.mk
-+--- fpicker/source/unx/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/makefile.mk 2011-08-17 14:08:00.486552458 -0500
-+@@ -0,0 +1,75 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2010 Novell, Inc.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++
-++PRJNAME=fpicker
-++TARGET=tdefilepicker
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++#COMP1TYPELIST=$(TARGET)
-++#COMPRDB=$(SOLARBINDIR)$/types.rdb
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++
-++# ------------------------------------------------------------------
-++
-++.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++dummy:
-++ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-++
-++.ELSE # we build for TDE
-++
-++CFLAGS+= $(TDE_CFLAGS)
-++
-++# --- Files --------------------------------------------------------
-++
-++SLOFILES =\
-++ $(SLO)$/tdecommandthread.obj \
-++ $(SLO)$/tdefilepicker.obj \
-++ $(SLO)$/tdefilepicker.moc.obj \
-++ $(SLO)$/tdefpmain.obj \
-++ $(SLO)$/tdemodalityfilter.obj
-++
-++APP1TARGET=$(TARGET)
-++APP1OBJS=$(SLOFILES)
-++APP1RPATH=BRAND
-++APP1LINKFLAGS=$(TDE_LIBS) -lkio -lX11
-++APP1STDLIBS=$(SALLIB)
-++
-++.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-++
-++$(MISC)$/tdefilepicker.moc.cxx : tdefilepicker.hxx
-++ $(MOC) $< -o $@
-+diff -urN fpicker/source/unx/tde/tdecommandthread.cxx fpicker/source/unx/tde/tdecommandthread.cxx
-+--- fpicker/source/unx/tde/tdecommandthread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdecommandthread.cxx 2011-08-17 14:05:05.983187311 -0500
-+@@ -0,0 +1,178 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdecommandthread.hxx>
-++
-++#include <tqstringlist.h>
-++
-++#include <kapplication.h>
-++
-++#include <iostream>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// CommandEvent
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDECommandEvent::TDECommandEvent( const TQString &qCommand, TQStringList *pStringList )
-++ : TQCustomEvent( TypeId, pStringList ),
-++ m_eCommand( Unknown )
-++{
-++ struct {
-++ const char *pName;
-++ CommandEventType eType;
-++ } *pIdx, pMapping[] =
-++ {
-++ { "appendControl", AppendControl },
-++ { "enableControl", EnableControl },
-++ { "getValue", GetValue },
-++ { "setValue", SetValue },
-++ { "appendFilter", AppendFilter },
-++ { "appendFilterGroup", AppendFilterGroup },
-++ { "getCurrentFilter", GetCurrentFilter },
-++ { "setCurrentFilter", SetCurrentFilter },
-++ { "getDirectory", GetDirectory },
-++ { "setDirectory", SetDirectory },
-++ { "getFiles", GetFiles },
-++ { "setTitle", SetTitle },
-++ { "setType", SetType },
-++ { "setDefaultName", SetDefaultName },
-++ { "setMultiSelection", SetMultiSelection },
-++ { "exec", Exec },
-++ { 0, Unknown }
-++ };
-++
-++ for ( pIdx = pMapping; pIdx->pName && qCommand != pIdx->pName; ++pIdx )
-++ ;
-++
-++ m_eCommand = pIdx->eType;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// CommandThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDECommandThread::TDECommandThread( TQWidget *pObject )
-++ : m_pObject( pObject )
-++{
-++}
-++
-++TDECommandThread::~TDECommandThread()
-++{
-++}
-++
-++void TDECommandThread::run()
-++{
-++ TQTextIStream qStream( stdin );
-++ qStream.setEncoding( TQTextStream::UnicodeUTF8 );
-++
-++ TQString qLine;
-++ bool bQuit = false;
-++ while ( !bQuit && !qStream.atEnd() )
-++ {
-++ qLine = qStream.readLine();
-++ handleCommand( qLine, bQuit );
-++ }
-++}
-++
-++void TDECommandThread::handleCommand( const TQString &rString, bool &bQuit )
-++{
-++ TQMutexLocker qMutexLocker( &m_aMutex );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "tdefilepicker received: " << rString.latin1() << ::std::endl;
-++#endif
-++
-++ bQuit = false;
-++ TQStringList *pTokens = tokenize( rString );
-++
-++ if ( !pTokens )
-++ return;
-++ if ( pTokens->empty() )
-++ {
-++ delete pTokens, pTokens = NULL;
-++ return;
-++ }
-++
-++ TQString qCommand = pTokens->front();
-++ pTokens->pop_front();
-++
-++ if ( qCommand == "exit" )
-++ {
-++ bQuit = true;
-++ kapp->exit();
-++ kapp->wakeUpGuiThread();
-++ }
-++ else
-++ kapp->postEvent( m_pObject, new TDECommandEvent( qCommand, pTokens ) );
-++}
-++
-++TQStringList* TDECommandThread::tokenize( const TQString &rString )
-++{
-++ // Commands look like:
-++ // command arg1 arg2 arg3 ...
-++ // Args may be enclosed in '"', if they contain spaces.
-++
-++ TQStringList *pList = new TQStringList();
-++
-++ TQString qBuffer;
-++ qBuffer.reserve( 1024 );
-++
-++ const TQChar *pUnicode = rString.unicode();
-++ const TQChar *pEnd = pUnicode + rString.length();
-++ bool bQuoted = false;
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ {
-++ ++pUnicode;
-++ if ( pUnicode != pEnd )
-++ {
-++ if ( *pUnicode == 'n' )
-++ qBuffer.append( '\n' );
-++ else
-++ qBuffer.append( *pUnicode );
-++ }
-++ }
-++ else if ( *pUnicode == '"' )
-++ bQuoted = !bQuoted;
-++ else if ( *pUnicode == ' ' && !bQuoted )
-++ {
-++ pList->push_back( qBuffer );
-++ qBuffer.setLength( 0 );
-++ }
-++ else
-++ qBuffer.append( *pUnicode );
-++ }
-++ pList->push_back( qBuffer );
-++
-++ return pList;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdecommandthread.hxx fpicker/source/unx/tde/tdecommandthread.hxx
-+--- fpicker/source/unx/tde/tdecommandthread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdecommandthread.hxx 2011-08-17 14:04:34.560780976 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDECOMMANDTHREAD_HXX_
-++#define _TDECOMMANDTHREAD_HXX_
-++
-++#include <tqevent.h>
-++#include <tqmutex.h>
-++#include <tqthread.h>
-++
-++class TDECommandEvent : public TQCustomEvent
-++{
-++public:
-++ enum CommandEventType {
-++ Unknown = 0,
-++
-++ AppendControl,
-++ EnableControl,
-++ GetValue,
-++ SetValue,
-++
-++ AppendFilter,
-++ AppendFilterGroup,
-++ UpdateFilters,
-++ GetCurrentFilter,
-++ SetCurrentFilter,
-++
-++ GetDirectory,
-++ SetDirectory,
-++
-++ GetFiles,
-++
-++ SetTitle,
-++ SetType,
-++ SetDefaultName,
-++ SetMultiSelection,
-++
-++ Exec
-++ };
-++ static const TQEvent::Type TypeId = (TQEvent::Type) ( (int) TQEvent::User + 42 /*random magic value*/ );
-++
-++protected:
-++ CommandEventType m_eCommand;
-++
-++public:
-++ TDECommandEvent( const TQString &qCommand, TQStringList *pStringList );
-++
-++ CommandEventType command() const { return m_eCommand; }
-++ TQStringList* stringList() { return static_cast< TQStringList* >( data() ); }
-++};
-++
-++class TDECommandThread : public TQThread
-++{
-++protected:
-++ TQObject *m_pObject;
-++
-++ TQMutex m_aMutex;
-++
-++public:
-++ TDECommandThread( TQWidget *pObject );
-++ virtual ~TDECommandThread();
-++
-++ virtual void run();
-++
-++protected:
-++ void handleCommand( const TQString &rString, bool &bQuit );
-++ TQStringList* tokenize( const TQString &rString );
-++};
-++
-++#endif // _TDECOMMANDTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefilepicker.cxx fpicker/source/unx/tde/tdefilepicker.cxx
-+--- fpicker/source/unx/tde/tdefilepicker.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefilepicker.cxx 2011-08-17 14:05:04.073041030 -0500
-+@@ -0,0 +1,733 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdecommandthread.hxx>
-++#include <tdefilepicker.hxx>
-++
-++#include <tqcheckbox.h>
-++#include <tqcombobox.h>
-++#include <tqgrid.h>
-++#include <tqhbox.h>
-++#include <tqlabel.h>
-++#include <tqlayout.h>
-++#include <tqobjectlist.h>
-++#include <tqpushbutton.h>
-++#include <tqregexp.h>
-++#include <tqvbox.h>
-++
-++#ifdef TQT_NO_EMIT
-++#define emit
-++#endif
-++
-++#include <kdeversion.h>
-++#include <kdiroperator.h>
-++#include <kfiledialog.h>
-++#include <kfilefiltercombo.h>
-++#include <kio/netaccess.h>
-++#include <klocale.h>
-++#include <kmessagebox.h>
-++#include <ktempfile.h>
-++
-++#include <algorithm>
-++#include <iostream>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// TDEFileDialog
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDEFileDialog::TDEFileDialog( const TQString &startDir, const TQString &filter,
-++ TQWidget *parent, const char *name )
-++ : KFileDialog( startDir, filter, parent, name, true, m_pCustomWidget = new TQVBox() ),
-++ m_pCombosAndButtons( new TQHBox( m_pCustomWidget ) ),
-++ m_pLabels( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pComboBoxes( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pPushButtons( new TQVBox( m_pCombosAndButtons ) ),
-++ m_pCheckBoxes( new TQGrid( 2, m_pCustomWidget ) ),
-++ m_bIsSave( false ),
-++ m_bIsExecuting( false ),
-++ m_bCanNotifySelection( true )
-++{
-++ connect( this, SIGNAL( fileHighlighted( const TQString & ) ),
-++ this, SLOT( fileHighlightedCommand( const TQString & ) ) );
-++
-++ connect( this, SIGNAL( selectionChanged() ),
-++ this, SLOT( selectionChangedCommand() ) );
-++
-++ m_pCustomWidget->setSpacing( KDialog::spacingHint() );
-++ m_pCombosAndButtons->setSpacing( KDialog::spacingHint() );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++TDEFileDialog::~TDEFileDialog()
-++{
-++}
-++
-++void TDEFileDialog::resizeEvent( TQResizeEvent *pEvent )
-++{
-++ KFileDialog::resizeEvent( pEvent );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++void TDEFileDialog::showEvent( TQShowEvent *pEvent )
-++{
-++ KFileDialog::showEvent( pEvent );
-++
-++ updateCustomWidgetLayout();
-++}
-++
-++void TDEFileDialog::updateCustomWidgetLayout()
-++{
-++ TQPoint qReferencePoint = filterWidget->mapTo( this, TQPoint( 0, 0 ) );
-++ TQPoint qCustomPoint = m_pCustomWidget->mapTo( this, TQPoint( 0, 0 ) );
-++
-++ int nLeft = qReferencePoint.x() - qCustomPoint.x();
-++ int nRight = m_pCustomWidget->width() - filterWidget->width() - nLeft;
-++
-++ nLeft -= KDialog::spacingHint();
-++ nRight -= KDialog::spacingHint();
-++ m_pLabels->setFixedWidth( ( nLeft > 0 )? nLeft: 80 );
-++ // FIXME The following call sets the width of m_pPushButtons all right,
-++ // but it also increases the width of m_pComboBoxes rapidly. Can we do
-++ // anything about it?
-++ m_pPushButtons->setFixedWidth( ( nRight > 0 )? nRight: 100 );
-++}
-++
-++void TDEFileDialog::customEvent( TQCustomEvent *pEvent )
-++{
-++ if ( pEvent && pEvent->type() == TDECommandEvent::TypeId )
-++ {
-++ TDECommandEvent *pCommandEvent = static_cast< TDECommandEvent* >( pEvent );
-++ TQStringList *pStringList = pCommandEvent->stringList();
-++
-++ int nListSize = -1;
-++ if ( pStringList )
-++ nListSize = pStringList->size();
-++
-++ switch ( pCommandEvent->command() )
-++ {
-++ case TDECommandEvent::AppendControl:
-++ if ( nListSize >= 3 )
-++ {
-++ appendControl( (*pStringList)[0], (*pStringList)[1], (*pStringList)[2] );
-++ }
-++ break;
-++ case TDECommandEvent::EnableControl:
-++ if ( nListSize >= 2 )
-++ {
-++ enableControl( (*pStringList)[0], (*pStringList)[1] );
-++ }
-++ break;
-++ case TDECommandEvent::GetValue:
-++ if ( nListSize >= 2 )
-++ {
-++ getValue( (*pStringList)[0], (*pStringList)[1] );
-++ }
-++ break;
-++ case TDECommandEvent::SetValue:
-++ if ( nListSize >= 2 )
-++ {
-++ TQStringList qStringList = (*pStringList);
-++ qStringList.pop_front();
-++ qStringList.pop_front();
-++
-++ setValue( (*pStringList)[0], (*pStringList)[1], qStringList );
-++ }
-++ break;
-++ case TDECommandEvent::AppendFilter:
-++ if ( nListSize >= 2 )
-++ {
-++ appendFilter( (*pStringList)[0], (*pStringList)[1] );
-++
-++ // update the filters widget
-++ setFilter( filters() );
-++ }
-++ break;
-++ case TDECommandEvent::AppendFilterGroup:
-++ if ( nListSize >= 1 )
-++ {
-++ TQStringList::const_iterator it = pStringList->begin();
-++ ++it; // We ignore the filter group name
-++
-++ while ( it != pStringList->end() )
-++ {
-++ TQString qTitle = *it;
-++ ++it;
-++ if ( it != pStringList->end() )
-++ {
-++ appendFilter( qTitle, (*it) );
-++ ++it;
-++ }
-++ }
-++
-++ // update the filters widget
-++ setFilter( filters() );
-++ }
-++ break;
-++ case TDECommandEvent::GetCurrentFilter:
-++ {
-++ TQString qCurrentFilter = filterWidget->currentText();
-++ sendCommand( "currentFilter " + escapeString( qCurrentFilter ) );
-++ }
-++ break;
-++ case TDECommandEvent::SetCurrentFilter:
-++ if ( nListSize >= 1 )
-++ {
-++ static_cast< TDEFileFilterComboHack* >( filterWidget )->setCurrentFilter( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::GetDirectory:
-++ {
-++ TQString qDirectory = baseURL().url();
-++ if ( qDirectory.startsWith( "file:/" ) && qDirectory.mid( 6, 1 ) != "/" )
-++ qDirectory.replace( "file:/", "file:///" );
-++ sendCommand( "currentDirectory " + escapeString( qDirectory ) );
-++ }
-++ break;
-++ case TDECommandEvent::SetDirectory:
-++ if ( nListSize >= 1 )
-++ {
-++ setURL( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::GetFiles:
-++ {
-++ TQString qString;
-++ qString.reserve( 1024 );
-++
-++ qString.append( "files" );
-++
-++ if ( result() == TQDialog::Accepted )
-++ {
-++ KURL::List qList( selectedURLs() );
-++ for ( KURL::List::const_iterator it = qList.begin(); it != qList.end(); ++it )
-++ appendURL( qString, (*it) );
-++ }
-++ else
-++ {
-++ // we have to return the selected files anyway
-++ const KFileItemList *pItems = ops->selectedItems();
-++ for ( KFileItemListIterator it( *pItems ); it.current(); ++it )
-++ appendURL( qString, (*it)->url() );
-++ }
-++
-++ sendCommand( qString );
-++ setCanNotifySelection( true );
-++ }
-++ break;
-++ case TDECommandEvent::SetTitle:
-++ if ( nListSize >= 1 )
-++ {
-++ setCaption( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::SetType:
-++ if ( nListSize >= 1 )
-++ {
-++ TQString qType( pStringList->front() );
-++ if ( qType == "open" )
-++ {
-++ setIsSave( false );
-++ setCaption( i18n( "Open" ) );
-++ }
-++ else if ( qType == "save" )
-++ {
-++ setIsSave( true );
-++ setCaption( i18n( "Save As" ) );
-++ }
-++ }
-++ break;
-++ case TDECommandEvent::SetDefaultName:
-++ if ( nListSize >= 1 )
-++ {
-++ setKeepLocation( true );
-++ setSelection( pStringList->front() );
-++ }
-++ break;
-++ case TDECommandEvent::SetMultiSelection:
-++ if ( nListSize >= 1 )
-++ {
-++ if ( pStringList->front() == "true" )
-++ setMode( KFile::Files );
-++ else
-++ setMode( KFile::File );
-++ }
-++ break;
-++ case TDECommandEvent::Exec:
-++ {
-++ filterWidget->setEditable( false );
-++ setIsExecuting( true );
-++ bool bCanExit = false;
-++ do {
-++ setCanNotifySelection( true );
-++ exec();
-++
-++ KURL qLocalSelectedURL = mostLocalURL( selectedURL() );
-++ TQString qProtocol( qLocalSelectedURL.protocol() );
-++
-++ if ( isSave() && result() == TQDialog::Accepted )
-++ {
-++ if ( qProtocol == "file" )
-++ {
-++ TQString qFileName( addExtension( qLocalSelectedURL.path() ) );
-++ bCanExit =
-++ !QFile::exists( qFileName ) ||
-++ ( KMessageBox::warningYesNo( 0,
-++ i18n( "A file named \"%1\" already exists. "
-++ "Are you sure you want to overwrite it?" ).arg( qFileName ),
-++ i18n( "Overwrite File?" ),
-++ i18n( "Overwrite" ), KStdGuiItem::cancel() ) == KMessageBox::Yes );
-++ }
-++ else if ( !isSupportedProtocol( qProtocol ) )
-++ {
-++ KMessageBox::sorry( 0,
-++ i18n( "Saving using protocol \"%1\" is not supported." ).arg( qProtocol ) );
-++ bCanExit = false;
-++ }
-++ else
-++ bCanExit = true;
-++ }
-++ else if ( !isSave() && result() == TQDialog::Accepted && !isSupportedProtocol( qProtocol ) )
-++ {
-++ KMessageBox::information( 0,
-++ i18n( "Protocol \"%1\" is supported only partially. "
-++ "Local copy of the file will be created." ).arg( qProtocol ) );
-++ bCanExit = true;
-++ }
-++ else
-++ bCanExit = true;
-++ } while ( !bCanExit );
-++ setIsExecuting( false );
-++
-++ if ( result() == TQDialog::Accepted )
-++ sendCommand( "accept" );
-++ else
-++ sendCommand( "reject" );
-++ }
-++ break;
-++ default:
-++ break;
-++ }
-++
-++ // FIXME Some cleanup of pEvent? delete something, etc.?
-++ }
-++}
-++
-++void TDEFileDialog::appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle )
-++{
-++ TQString qLabel( rTitle );
-++ qLabel.replace( '~', '&' );
-++
-++ if ( rType == "checkbox" )
-++ {
-++ TQCheckBox *pCheckBox = new TQCheckBox( qLabel, m_pCheckBoxes, rId.utf8() );
-++
-++ pCheckBox->setEnabled( true );
-++ pCheckBox->setChecked( false );
-++ }
-++ else if ( rType == "listbox" )
-++ {
-++ TQLabel *pComboLabel = new TQLabel( qLabel, m_pLabels );
-++ TQComboBox *pComboBox = new TQComboBox( m_pComboBoxes, rId.utf8() );
-++
-++ pComboLabel->setBuddy( pComboBox );
-++ pComboBox->setEnabled( true );
-++ }
-++ else if ( rType == "pushbutton" )
-++ {
-++ TQPushButton *pPushButton = new TQPushButton( qLabel, m_pPushButtons, rId.utf8() );
-++ pPushButton->setEnabled( true );
-++ }
-++}
-++
-++TQWidget* TDEFileDialog::findControl( const TQString &rId ) const
-++{
-++ TQObjectList *pList = m_pCustomWidget->queryList();
-++ TQCString qName( rId.utf8() );
-++ TQObjectList::const_iterator it = pList->begin();
-++
-++ for ( ; it != pList->end() && qName != (*it)->name(); ++it )
-++ ;
-++
-++ TQWidget *pWidget = NULL;
-++ if ( it != pList->end() )
-++ pWidget = static_cast< TQWidget* >( *it );
-++
-++ delete pList;
-++
-++ return pWidget;
-++}
-++
-++void TDEFileDialog::enableControl( const TQString &rId, const TQString &rValue )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++
-++ if ( pWidget )
-++ pWidget->setEnabled( rValue.lower() == "true" );
-++}
-++
-++void TDEFileDialog::getValue( const TQString &rId, const TQString &rAction )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++ TQString qString;
-++ qString.reserve( 1024 );
-++ qString.append( "value" );
-++
-++ if ( pWidget )
-++ {
-++ TQCString qClassName = pWidget->className();
-++ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-++ {
-++ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-++
-++ if ( pCheckBox->isChecked() )
-++ qString.append( " bool true" );
-++ else
-++ qString.append( " bool false" );
-++ }
-++ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-++ {
-++ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-++ if ( rAction == "getItems" )
-++ {
-++ qString.append( " stringList" );
-++ for ( int nIdx = 0; nIdx < pComboBox->count(); ++nIdx )
-++ {
-++ qString.append( ' ' );
-++ appendEscaped( qString, pComboBox->text( nIdx ) );
-++ }
-++ }
-++ else if ( rAction == "getSelectedItem" )
-++ {
-++ qString.append( " string " );
-++ appendEscaped( qString, pComboBox->currentText() );
-++ }
-++ else if ( rAction == "getSelectedItemIndex" )
-++ {
-++ qString.append( " int " );
-++ qString.append( TQString().setNum( pComboBox->currentItem() ) );
-++ }
-++ // TODO getHelpURL
-++ }
-++ // TODO push button
-++ }
-++
-++ sendCommand( qString );
-++}
-++
-++void TDEFileDialog::setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue )
-++{
-++ TQWidget *pWidget = findControl( rId );
-++
-++ if ( pWidget )
-++ {
-++ TQCString qClassName = pWidget->className();
-++ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-++ {
-++ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-++
-++ bool bValue = ( !rValue.isEmpty() ) && ( rValue.front().lower() == "true" );
-++ pCheckBox->setChecked( bValue );
-++ }
-++ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-++ {
-++ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-++ if ( rAction == "addItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->insertItem( rValue.front() );
-++ }
-++ else if ( rAction == "addItems" )
-++ {
-++ pComboBox->insertStringList( rValue );
-++ }
-++ else if ( rAction == "deleteItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->removeItem( rValue.front().toInt() );
-++ }
-++ else if ( rAction == "deleteItems" )
-++ {
-++ pComboBox->clear();
-++ }
-++ else if ( rAction == "setSelectedItem" )
-++ {
-++ if ( !rValue.isEmpty() )
-++ pComboBox->setCurrentItem( rValue.front().toInt() );
-++ }
-++ // FIXME setHelpURL is ignored
-++ }
-++ // TODO push button
-++ }
-++}
-++
-++void TDEFileDialog::appendFilter( const TQString &rTitle, const TQString &rFilter )
-++{
-++ // Filters are separated by ';'
-++ TQString qFilter( rFilter );
-++ qFilter.replace( TQChar( ';' ), TQChar( ' ' ) ).replace( "*.*", "*" );
-++
-++ // Workaround for too wide <All formats> (*.bmp;...) entry
-++ TQString qTitle( rTitle );
-++ qTitle.replace( TQRegExp( "^<([^>]*)> \\(.*" ), "<\\1>" );
-++
-++ m_aFilters.push_back( qMakePair( qTitle, qFilter ) );
-++}
-++
-++TQString TDEFileDialog::filters() const
-++{
-++ TQString qString, qTmp;
-++ bool bFirstFilter = true;
-++
-++ for ( FilterList::const_iterator it = m_aFilters.begin(); it != m_aFilters.end(); ++it )
-++ {
-++ if ( bFirstFilter )
-++ bFirstFilter = false;
-++ else
-++ qString.append( '\n' );
-++
-++ qString.append( (*it).second );
-++ qString.append( '|' );
-++
-++ qTmp = (*it).first;
-++ qString.append( qTmp.replace( '/', "\\/" ) );
-++ }
-++
-++ return qString;
-++}
-++
-++TQString TDEFileDialog::addExtension( const TQString &rFileName ) const
-++{
-++ if ( !isSave() )
-++ return rFileName;
-++
-++ TQString qExtension;
-++
-++ TQWidget *pExtensionWidget = findControl( "100" ); // CHECKBOX_AUTOEXTENSION
-++ TQCheckBox *pExtensionCB = pExtensionWidget? static_cast< TQCheckBox* >( pExtensionWidget->qt_cast( TQCHECKBOX_OBJECT_NAME_STRING ) ): NULL;
-++ if ( pExtensionCB && pExtensionCB->isChecked() )
-++ {
-++ // FIXME: qFilter can be a MIME; we ignore it now...
-++ TQStringList qFilterList = TQStringList::split( " ", currentFilter() );
-++ for ( TQStringList::const_iterator it = qFilterList.begin();
-++ qExtension.isEmpty() && it != qFilterList.end();
-++ ++it )
-++ {
-++ int nUnwanted = (*it).findRev( '*' );
-++ if ( nUnwanted < 0 )
-++ nUnwanted = (*it).findRev( '?' );
-++ else
-++ nUnwanted = ::std::max( nUnwanted, (*it).find( '?', nUnwanted ) );
-++
-++ int nIdx = (*it).find( '.', ::std::max( nUnwanted, 0 ) );
-++ if ( nIdx >= 0 )
-++ qExtension = (*it).mid( nIdx ).lower();
-++ }
-++ }
-++
-++ if ( qExtension.isEmpty() || qExtension == "." || rFileName.endsWith( qExtension ) )
-++ return rFileName;
-++ else
-++ return rFileName + qExtension;
-++}
-++
-++bool TDEFileDialog::isSupportedProtocol( const TQString &rProtocol ) const
-++{
-++ // TODO Get this information directly from OOo
-++ const char * pOOoProtocols[] = { "", "smb", "ftp", "http", "file", "mailto",
-++ "vnd.sun.star.webdav", "news", "private", "vnd.sun.star.help",
-++ "https", "slot", "macro", "javascript", "imap", "pop3", "data",
-++ "cid", "out", "vnd.sun.star.wfs", "vnd.sun.star.hier", "vim",
-++ ".uno", ".component", "vnd.sun.star.pkg", "ldap", "db",
-++ "vnd.sun.star.cmd", "vnd.sun.star.script", "vnd.sun.star.odma",
-++ "telnet",
-++ NULL };
-++
-++ for ( const char **pIndex = pOOoProtocols; *pIndex != NULL; ++pIndex )
-++ {
-++ if ( rProtocol == *pIndex )
-++ return true;
-++ }
-++
-++ // TODO gnome-vfs bits here
-++
-++ return false;
-++}
-++
-++KURL TDEFileDialog::mostLocalURL( const KURL &rURL ) const
-++{
-++#if KDE_IS_VERSION(3,5,0)
-++ KURL qMostLocalURL( KIO::NetAccess::mostLocalURL( rURL, const_cast<TDEFileDialog*>( this ) ) );
-++ if ( qMostLocalURL.isLocalFile() )
-++ return qMostLocalURL;
-++ else
-++ {
-++ // Terrible hack to get even non-existing media:// files right
-++ qMostLocalURL.cd( ".." );
-++ KURL qMostLocalPath( KIO::NetAccess::mostLocalURL( qMostLocalURL, const_cast<TDEFileDialog*>( this ) ) );
-++ if ( qMostLocalPath.isLocalFile() )
-++ {
-++ qMostLocalPath.addPath( rURL.fileName() );
-++ return qMostLocalPath;
-++ }
-++ }
-++#endif
-++
-++ return rURL;
-++}
-++
-++TQString TDEFileDialog::localCopy( const TQString &rFileName ) const
-++{
-++ // 106 == MIB enum for UTF-8
-++ KURL qLocalURL = mostLocalURL( KURL( rFileName, 106 ) );
-++ if ( qLocalURL.isLocalFile() )
-++ return qLocalURL.url();
-++
-++ int nExtensionPos = rFileName.findRev( '/' );
-++ if ( nExtensionPos >= 0 )
-++ nExtensionPos = rFileName.find( '.', nExtensionPos );
-++ else
-++ nExtensionPos = rFileName.find( '.' );
-++
-++ KTempFile qTempFile( TQString::null, ( nExtensionPos < 0 )? TQString(): rFileName.mid( nExtensionPos ) );
-++ KURL qDestURL;
-++ qDestURL.setPath( qTempFile.name() );
-++
-++ if ( !KIO::NetAccess::file_copy( rFileName, qDestURL, 0600, true, false, NULL ) )
-++ {
-++ KMessageBox::error( 0, KIO::NetAccess::lastErrorString() );
-++ return TQString::null;
-++ }
-++
-++ return qDestURL.url();
-++}
-++
-++void TDEFileDialog::fileHighlightedCommand( const TQString & )
-++{
-++ if ( canNotifySelection() )
-++ {
-++ sendCommand( "fileSelectionChanged" );
-++ setCanNotifySelection( false );
-++ }
-++}
-++
-++void TDEFileDialog::selectionChangedCommand()
-++{
-++ if ( canNotifySelection() )
-++ {
-++ sendCommand( "fileSelectionChanged" );
-++ setCanNotifySelection( false );
-++ }
-++}
-++
-++void TDEFileDialog::sendCommand( const TQString &rCommand )
-++{
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "tdefilepicker sent: " << rCommand.latin1() << ::std::endl;
-++#endif
-++
-++ //m_aOutputStream << rCommand << endl;
-++ ::std::cout << rCommand.utf8() << ::std::endl;
-++}
-++
-++void TDEFileDialog::appendURL( TQString &rBuffer, const KURL &rURL )
-++{
-++ // From Martin Kretzschmar:
-++ // file:///path/to/test%E0.odt is not a valid URL from OOo's point of
-++ // view. (?Most modern parts of?) OOo assume(s) that the URL contains only
-++ // ASCII characters (which test%E0.odt does) and is UTF-8 after unescaping
-++ // (which file:///path/test%E0.odt is not).
-++ // Cf. the comment in sal/inc/osl/file.h.
-++ // 106 == MIB enum for UTF-8
-++ TQString qUrlStr = addExtension( rURL.url( 0, 106 ) );
-++
-++ if ( !isExecuting() && !isSupportedProtocol( rURL.protocol() ) )
-++ qUrlStr = localCopy( qUrlStr );
-++
-++ if ( qUrlStr.startsWith( "file:/" ) && qUrlStr.mid( 6, 1 ) != "/" )
-++ qUrlStr.replace( "file:/", "file:///" );
-++
-++ rBuffer.append( " " );
-++ if ( !qUrlStr.isEmpty() )
-++ appendEscaped( rBuffer, qUrlStr );
-++}
-++
-++void TDEFileDialog::appendEscaped( TQString &rBuffer, const TQString &rString )
-++{
-++ const TQChar *pUnicode = rString.unicode();
-++ const TQChar *pEnd = pUnicode + rString.length();
-++
-++ rBuffer.append( '"' );
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ rBuffer.append( "\\\\" );
-++ else if ( *pUnicode == '"' )
-++ rBuffer.append( "\\\"" );
-++ else if ( *pUnicode == '\n' )
-++ rBuffer.append( "\\\n" );
-++ else
-++ rBuffer.append( *pUnicode );
-++ }
-++ rBuffer.append( '"' );
-++}
-++
-++TQString TDEFileDialog::escapeString( const TQString &rString )
-++{
-++ TQString qString;
-++ qString.reserve( 2*rString.length() + 2 ); // every char escaped + quotes
-++
-++ appendEscaped( qString, rString );
-++
-++ return qString;
-++}
-++
-++
-++void TDEFileFilterComboHack::setCurrentFilter( const TQString& filter )
-++{
-++ setCurrentText( filter );
-++ filterChanged();
-++
-++ // Workaround for 'Filter name (*.blah)' vs. 'Filter name'
-++ if ( currentText() != text( currentItem() ) )
-++ {
-++ int nItem = 0;
-++ for ( ; nItem < count() && !text( nItem ).startsWith( filter ); ++nItem );
-++
-++ if ( nItem < count() )
-++ setCurrentItem( nItem );
-++ else
-++ setCurrentItem( 0 );
-++
-++ filterChanged();
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefilepicker.hxx fpicker/source/unx/tde/tdefilepicker.hxx
-+--- fpicker/source/unx/tde/tdefilepicker.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefilepicker.hxx 2011-08-17 14:05:02.262902414 -0500
-+@@ -0,0 +1,126 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDEFILEPICKER_HXX_
-++#define _TDEFILEPICKER_HXX_
-++
-++#include <kfiledialog.h>
-++#include <kfilefiltercombo.h>
-++
-++class TQGrid;
-++class TQHBox;
-++class TQVBox;
-++
-++class TDEFileDialog : public KFileDialog
-++{
-++ Q_OBJECT
-++
-++protected:
-++ typedef TQPair< TQString, TQString > FilterEntry;
-++ typedef TQValueList< FilterEntry > FilterList;
-++
-++ TQVBox *m_pCustomWidget;
-++ TQHBox *m_pCombosAndButtons;
-++
-++ TQVBox *m_pLabels;
-++ TQVBox *m_pComboBoxes;
-++ TQVBox *m_pPushButtons;
-++
-++ TQGrid *m_pCheckBoxes;
-++
-++ FilterList m_aFilters;
-++
-++ /** Are we a "Save As" dialog?
-++ *
-++ * We cannot use KFileDialog::setOperationMode() here, because then
-++ * it automatically adds an "Automatically select filename extension"
-++ * check box, and completely destroys the dialog's layout
-++ * (custom list boxes are under this check box, which looks ugly).
-++ */
-++ bool m_bIsSave;
-++ bool m_bIsExecuting;
-++
-++ bool m_bCanNotifySelection;
-++
-++public:
-++ TDEFileDialog( const TQString &startDir, const TQString &filter,
-++ TQWidget *parent, const char *name );
-++ virtual ~TDEFileDialog();
-++
-++protected:
-++ virtual void resizeEvent( TQResizeEvent *pEvent );
-++ virtual void showEvent( TQShowEvent *pEvent );
-++ void updateCustomWidgetLayout();
-++
-++ virtual void customEvent( TQCustomEvent *pEvent );
-++
-++protected:
-++ void appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle );
-++ TQWidget* findControl( const TQString &rId ) const;
-++ void enableControl( const TQString &rId, const TQString &rValue );
-++ void getValue( const TQString &rId, const TQString &rAction );
-++ void setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue );
-++
-++ void appendFilter( const TQString &rTitle, const TQString &rFilter );
-++ TQString filters() const;
-++ TQString addExtension( const TQString &rFileName ) const;
-++
-++ void setIsSave( bool bIsSave ) { m_bIsSave = bIsSave; }
-++ bool isSave( void ) const { return m_bIsSave; }
-++
-++ void setIsExecuting( bool bIsExecuting ) { m_bIsExecuting = bIsExecuting; }
-++ bool isExecuting( void ) const { return m_bIsExecuting; }
-++
-++ bool isSupportedProtocol( const TQString &rProtocol ) const;
-++ KURL mostLocalURL( const KURL &rURL ) const;
-++ TQString localCopy( const TQString &rFileName ) const;
-++
-++ void setCanNotifySelection( bool bCanNotifySelection ) { m_bCanNotifySelection = bCanNotifySelection; }
-++ bool canNotifySelection( void ) const { return m_bCanNotifySelection; }
-++
-++protected slots:
-++ void fileHighlightedCommand( const TQString & );
-++ void selectionChangedCommand();
-++
-++protected:
-++ void sendCommand( const TQString &rCommand );
-++ void appendURL( TQString &rBuffer, const KURL &rURL );
-++ void appendEscaped( TQString &rBuffer, const TQString &rString );
-++ TQString escapeString( const TQString &rString );
-++};
-++
-++class TDEFileFilterComboHack : public KFileFilterCombo
-++{
-++public:
-++ void setCurrentFilter( const TQString& filter );
-++};
-++
-++#endif // _TDEFILEPICKER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdefpmain.cxx fpicker/source/unx/tde/tdefpmain.cxx
-+--- fpicker/source/unx/tde/tdefpmain.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdefpmain.cxx 2011-08-17 14:04:58.622623640 -0500
-+@@ -0,0 +1,93 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdemodalityfilter.hxx>
-++#include <tdefilepicker.hxx>
-++#include <tdecommandthread.hxx>
-++
-++#include <kaboutdata.h>
-++#include <kapplication.h>
-++#include <kcmdlineargs.h>
-++
-++#include <iostream>
-++#include <stdlib.h>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// Main
-++//////////////////////////////////////////////////////////////////////////
-++
-++static KCmdLineOptions sOptions[] =
-++{
-++ { "winid <argument>", I18N_NOOP("Window ID to which is the fpicker modal"), "0" },
-++ KCmdLineLastOption
-++};
-++
-++int main( int argc, char* argv[] )
-++{
-++ // we fake the name of the application to have "OpenOffice.org" in the
-++ // title
-++ KAboutData qAboutData( "tdefilepicker", I18N_NOOP( "OpenOffice.org" ),
-++ "0.1", I18N_NOOP( "tdefilepicker is an implementation of the TDE file dialog for OpenOffice.org." ),
-++ KAboutData::License_LGPL,
-++ "(c) 2004, Jan Holesovsky" );
-++ qAboutData.addAuthor( "Jan Holesovsky", I18N_NOOP("Original author and current maintainer"), "kendy@openoffice.org" );
-++
-++ // Let the user see that this does something...
-++ ::std::cerr << "tdefilepicker, an implementation of TDE file dialog for OOo." << ::std::endl
-++ << "Type 'exit' and press Enter to finish." << ::std::endl;
-++
-++ KCmdLineArgs::addCmdLineOptions( sOptions );
-++ KCmdLineArgs::init( argc, argv, &qAboutData );
-++
-++ KLocale::setMainCatalogue( "kdialog" );
-++
-++ KApplication kApplication;
-++
-++ // Setup the modality
-++ KCmdLineArgs *pArgs = KCmdLineArgs::parsedArgs();
-++ long nWinId = atol( pArgs->getOption( "winid" ) );
-++ pArgs->clear();
-++
-++ TDEModalityFilter qModalityFilter( nWinId );
-++
-++ TDEFileDialog aFileDialog( NULL, TQString(), NULL, "tdefiledialog" );
-++
-++ TDECommandThread qCommandThread( &aFileDialog );
-++ qCommandThread.start();
-++
-++ kApplication.exec();
-++
-++ qCommandThread.wait();
-++
-++ ::std::cout << "exited" << ::std::endl;
-++
-++ return 0;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdemodalityfilter.cxx fpicker/source/unx/tde/tdemodalityfilter.cxx
-+--- fpicker/source/unx/tde/tdemodalityfilter.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdemodalityfilter.cxx 2011-08-17 14:04:44.121513143 -0500
-+@@ -0,0 +1,68 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <tdemodalityfilter.hxx>
-++
-++#include <kapplication.h>
-++#include <kdialogbase.h>
-++
-++#include <netwm.h>
-++#include <X11/Xlib.h>
-++#include <X11/Xutil.h>
-++
-++//////////////////////////////////////////////////////////////////////////
-++// Modality filter
-++//////////////////////////////////////////////////////////////////////////
-++
-++TDEModalityFilter::TDEModalityFilter( WId nWinId )
-++ : m_nWinId( nWinId )
-++{
-++ kapp->installEventFilter( this );
-++}
-++
-++TDEModalityFilter::~TDEModalityFilter()
-++{
-++ kapp->removeEventFilter( this );
-++}
-++
-++bool TDEModalityFilter::eventFilter( TQObject *pObject, TQEvent *pEvent )
-++{
-++ if ( pObject->isWidgetType() && pEvent->type() == TQEvent::Show )
-++ {
-++ KDialogBase* pDlg = ::qt_cast< KDialogBase* >( pObject );
-++ if ( pDlg != NULL && m_nWinId != 0 )
-++ {
-++ XSetTransientForHint( qt_xdisplay(), pDlg->winId(), m_nWinId );
-++ m_nWinId = 0;
-++ }
-++ }
-++ return false;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde/tdemodalityfilter.hxx fpicker/source/unx/tde/tdemodalityfilter.hxx
-+--- fpicker/source/unx/tde/tdemodalityfilter.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde/tdemodalityfilter.hxx 2011-08-17 14:04:27.940273979 -0500
-+@@ -0,0 +1,49 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _TDEMODALITYFILTER_HXX_
-++#define _TDEMODALITYFILTER_HXX_
-++
-++#include <tqobject.h>
-++
-++class TDEModalityFilter : public TQObject
-++{
-++private:
-++ WId m_nWinId;
-++
-++public:
-++ TDEModalityFilter( WId nWinId );
-++ virtual ~TDEModalityFilter();
-++
-++ virtual bool eventFilter( TQObject *pObject, TQEvent *pEvent );
-++};
-++
-++#endif // _TDEMODALITYFILTER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/FPServiceInfo.hxx fpicker/source/unx/tde_unx/FPServiceInfo.hxx
-+--- fpicker/source/unx/tde_unx/FPServiceInfo.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/FPServiceInfo.hxx 2011-08-17 14:07:24.203772856 -0500
-+@@ -0,0 +1,48 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _FPSERVICEINFO_HXX_
-++#define _FPSERVICEINFO_HXX_
-++
-++// the service names
-++#define FILE_PICKER_SERVICE_NAME "com.sun.star.ui.dialogs.TDEFilePicker"
-++
-++// the implementation names
-++#define FILE_PICKER_IMPL_NAME "com.sun.star.ui.dialogs.UnxFilePicker"
-++
-++// the registry key names
-++// a key under which this service will be registered,
-++// Format: -> "/ImplName/UNO/SERVICES/ServiceName"
-++// <Implementation-Name></UNO/SERVICES/><Service-Name>
-++#define FILE_PICKER_REGKEY_NAME "/com.sun.star.ui.dialogs.UnxFilePicker/UNO/SERVICES/com.sun.star.ui.dialogs.TDEFilePicker"
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/fps-tde-ucd.txt fpicker/source/unx/tde_unx/fps-tde-ucd.txt
-+--- fpicker/source/unx/tde_unx/fps-tde-ucd.txt 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/fps-tde-ucd.txt 2011-08-17 14:06:16.168562070 -0500
-+@@ -0,0 +1,6 @@
-++[ComponentDescriptor]
-++ImplementationName=com.sun.star.ui.dialogs.UnxFilePicker
-++ComponentName=fps_tde.uno.so
-++LoaderName=com.sun.star.loader.SharedLibrary
-++[SupportedServices]
-++com.sun.star.ui.dialogs.TDEFilePicker
-+diff -urN fpicker/source/unx/tde_unx/fps_tde.xml fpicker/source/unx/tde_unx/fps_tde.xml
-+--- fpicker/source/unx/tde_unx/fps_tde.xml 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/fps_tde.xml 2011-08-17 14:07:17.433254165 -0500
-+@@ -0,0 +1,51 @@
-++<?xml version="1.0" encoding="UTF-8"?>
-++<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-++<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-++ <module-name>fps_tde</module-name>
-++ <component-description>
-++ <author> Jan Holesovsky </author>
-++ <name> com.sun.star.comp.ui.dialogs.FilePicker </name>
-++ <description>
-++ The TDE implementation of the FilePicker service.
-++ </description>
-++ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-++ <language> c++ </language>
-++ <status value="beta"/>
-++ <supported-service> com.sun.star.ui.dialogs.FilePicker </supported-service>
-++ <service-dependency>...</service-dependency>
-++ <type> com.sun.star.ui.dialogs.XExecutableDialog </type>
-++ <type> com.sun.star.ui.dialogs.XFilePicker </type>
-++ <type> com.sun.star.ui.dialogs.XFilterManager </type>
-++ <type> com.sun.star.ui.dialogs.XFilterGroupManager </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerListener </type>
-++ <type> com.sun.star.ui.dialogs.ExecutableDialogException </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerNotifier </type>
-++ <type> com.sun.star.ui.dialogs.XFilePickerControlAccess </type>
-++ <type> com.sun.star.ui.dialogs.XFilePreview </type>
-++ <type> com.sun.star.ui.dialogs.ExtendedFilePickerElementIds </type>
-++ <type> com.sun.star.ui.dialogs.ExecutableDialogResults </type>
-++ <type> com.sun.star.ui.dialogs.FilePickerEvent </type>
-++ <type> com.sun.star.ui.dialogs.CommonFilePickerElementIds </type>
-++ <type> com.sun.star.ui.dialogs.ListboxControlActions </type>
-++ <type> com.sun.star.ui.dialogs.TemplateDescription </type>
-++ <type> com.sun.star.ui.dialogs.FilePreviewImageFormats </type>
-++ <type> com.sun.star.util.XCancellable </type>
-++ <type> com.sun.star.lang.XComponent </type>
-++ <type> com.sun.star.lang.XMultiServiceFactory </type>
-++ <type> com.sun.star.lang.XSingleServiceFactory </type>
-++ <type> com.sun.star.lang.XServiceInfo </type>
-++ <type> com.sun.star.lang.XTypeProvider </type>
-++ <type> com.sun.star.lang.IllegalArgumentException </type>
-++ <type> com.sun.star.uno.TypeClass </type>
-++ <type> com.sun.star.uno.XWeak </type>
-++ <type> com.sun.star.uno.XAggregation </type>
-++ <type> com.sun.star.registry.XRegistryKey </type>
-++ <type> com.sun.star.container.XSet </type>
-++ </component-description>
-++ <project-build-dependency> cppuhelper </project-build-dependency>
-++ <project-build-dependency> cppu </project-build-dependency>
-++ <project-build-dependency> sal </project-build-dependency>
-++ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-++ <runtime-module-dependency> cppu2 </runtime-module-dependency>
-++ <runtime-module-dependency> sal2 </runtime-module-dependency>
-++</module-description>
-+diff -urN fpicker/source/unx/tde_unx/makefile.mk fpicker/source/unx/tde_unx/makefile.mk
-+--- fpicker/source/unx/tde_unx/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/makefile.mk 2011-08-17 14:07:11.152773020 -0500
-+@@ -0,0 +1,78 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2010 Novell, Inc.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..$/..
-++
-++PRJNAME=fpicker
-++TARGET=fps_tde.uno
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++DLLPRE=
-++
-++# ------------------------------------------------------------------
-++
-++# Currently just TDE is supported...
-++.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++dummy:
-++ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-++
-++.ELSE # we build for TDE
-++
-++# --- Files --------------------------------------------------------
-++
-++SLOFILES =\
-++ $(SLO)$/UnxCommandThread.obj \
-++ $(SLO)$/UnxFilePicker.obj \
-++ $(SLO)$/UnxNotifyThread.obj \
-++ $(SLO)$/UnxFPentry.obj
-++
-++SHL1NOCHECK=TRUE
-++SHL1TARGET=fps_tde.uno
-++SHL1STDLIBS=$(CPPULIB)\
-++ $(CPPUHELPERLIB)\
-++ $(SALLIB)\
-++ $(VCLLIB)\
-++ $(TOOLSLIB)
-++
-++SHL1OBJS=$(SLOFILES)
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++
-++DEF1NAME=$(SHL1TARGET)
-++DEF1VERSIONMAP=$(SOLARENV)/src/component.map
-++
-++.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-+diff -urN fpicker/source/unx/tde_unx/UnxCommandThread.cxx fpicker/source/unx/tde_unx/UnxCommandThread.cxx
-+--- fpicker/source/unx/tde_unx/UnxCommandThread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxCommandThread.cxx 2011-08-17 14:06:59.001842171 -0500
-+@@ -0,0 +1,315 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <UnxCommandThread.hxx>
-++#include <UnxNotifyThread.hxx>
-++
-++#include <rtl/ustring.hxx>
-++#include <rtl/ustrbuf.hxx>
-++
-++#include <unistd.h>
-++#include <string.h>
-++#include <iostream>
-++
-++using namespace ::com::sun::star;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePickerCommandThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePickerCommandThread::UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD )
-++ : m_pNotifyThread( pNotifyThread ),
-++ m_nReadFD( nReadFD )
-++{
-++}
-++
-++UnxFilePickerCommandThread::~UnxFilePickerCommandThread()
-++{
-++}
-++
-++sal_Bool SAL_CALL UnxFilePickerCommandThread::result()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aResult;
-++}
-++
-++::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getCurrentFilter()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetCurrentFilter;
-++}
-++
-++::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getDirectory()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetDirectory;
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::getFiles()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sal_Int32 nSize = m_aGetFiles.size();
-++ uno::Sequence< ::rtl::OUString > aFiles( ( nSize > 1 )? nSize + 1: nSize );
-++
-++ if ( nSize == 1 )
-++ aFiles[0] = m_aGetFiles.front();
-++ else if ( nSize > 1 )
-++ {
-++ // First entry in the sequence must be the dirname, the others are the
-++ // filenames, so we have to rearrange the list...
-++
-++ ::rtl::OUString aFront = m_aGetFiles.front();
-++ sal_Int32 nLastSlash = aFront.lastIndexOf( '/' );
-++
-++ aFiles[0] = ( nLastSlash >= 0 )? aFront.copy( 0, nLastSlash ): ::rtl::OUString();
-++ ++nLastSlash;
-++
-++ sal_Int32 nIdx = 1;
-++ for ( ::std::list< ::rtl::OUString >::const_iterator it = m_aGetFiles.begin();
-++ it != m_aGetFiles.end(); ++it, ++nIdx )
-++ {
-++ sal_Int32 nLength = (*it).getLength() - nLastSlash;
-++ aFiles[nIdx] = ( nLength >= 0 )? (*it).copy( nLastSlash, nLength ): ::rtl::OUString();
-++ }
-++ }
-++
-++ return aFiles;
-++}
-++
-++uno::Any SAL_CALL UnxFilePickerCommandThread::getValue()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_aGetValue;
-++}
-++
-++void SAL_CALL UnxFilePickerCommandThread::run()
-++{
-++ if ( m_nReadFD < 0 )
-++ return;
-++
-++ sal_Int32 nBufferSize = 1024; // 1 is for testing, 1024 for real use
-++ sal_Char *pBuffer = new sal_Char[nBufferSize];
-++ sal_Char *pBufferEnd = pBuffer + nBufferSize;
-++
-++ sal_Char *pWhereToRead = pBuffer;
-++ sal_Char *pEntryBegin = pBuffer;
-++ sal_Int32 nBytesRead = 0;
-++ sal_Bool bShouldExit = sal_False;
-++ while ( !bShouldExit && ( nBytesRead = read( m_nReadFD, pWhereToRead, pBufferEnd - pWhereToRead ) ) > 0 )
-++ {
-++ sal_Bool bFoundNL = sal_False;
-++ sal_Char *pWhereToReadEnd = pWhereToRead + nBytesRead;
-++ sal_Char *pEntryEnd = pWhereToRead;
-++ do {
-++ for ( ; pEntryEnd < pWhereToReadEnd && *pEntryEnd != '\n'; ++pEntryEnd )
-++ ;
-++
-++ if ( pEntryEnd < pWhereToReadEnd )
-++ {
-++ bFoundNL = sal_True;
-++ *pEntryEnd = 0;
-++
-++ if ( strcmp( pEntryBegin, "exited" ) == 0 )
-++ bShouldExit = sal_True;
-++ else
-++ handleCommand( ::rtl::OUString( pEntryBegin, pEntryEnd - pEntryBegin, RTL_TEXTENCODING_UTF8 )/*, bQuit*/ );
-++
-++ pEntryBegin = pEntryEnd + 1;
-++ }
-++ } while ( pEntryEnd < pWhereToReadEnd );
-++
-++ if ( bFoundNL )
-++ {
-++ if ( pEntryBegin < pBufferEnd )
-++ memmove( pBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-++ }
-++ else
-++ {
-++ // enlarge the buffer size
-++ nBufferSize *= 2;
-++ sal_Char *pNewBuffer = new sal_Char[nBufferSize];
-++ if ( pEntryBegin < pBufferEnd )
-++ memmove( pNewBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-++
-++ delete[] pBuffer;
-++ pBuffer = pNewBuffer;
-++ pBufferEnd = pBuffer + nBufferSize;
-++ }
-++
-++ pWhereToRead = pBuffer + ( pWhereToReadEnd - pEntryBegin );
-++ pEntryBegin = pBuffer;
-++ }
-++}
-++
-++void SAL_CALL UnxFilePickerCommandThread::handleCommand( const ::rtl::OUString &rCommand )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "UnxFilePicker received: \"" <<
-++ OUStringToOString( rCommand, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-++#endif
-++
-++ ::std::list< ::rtl::OUString > aList = tokenize( rCommand );
-++
-++ if ( aList.size() == 0 )
-++ return;
-++
-++ ::rtl::OUString aCommandName = aList.front();
-++ aList.pop_front();
-++
-++ if ( aCommandName.equalsAscii( "accept" ) )
-++ {
-++ m_aResult = sal_True;
-++ m_aExecCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "reject" ) )
-++ {
-++ m_aResult = sal_False;
-++ m_aExecCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "fileSelectionChanged" ) )
-++ {
-++ if ( m_pNotifyThread )
-++ m_pNotifyThread->fileSelectionChanged();
-++ }
-++ else if ( aCommandName.equalsAscii( "files" ) )
-++ {
-++ m_aGetFiles = aList;
-++ m_aGetFilesCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "value" ) )
-++ {
-++ ::rtl::OUString aType;
-++ if ( !aList.empty() )
-++ {
-++ aType = aList.front();
-++ aList.pop_front();
-++ }
-++
-++ if ( aType.equalsAscii( "bool" ) )
-++ {
-++ sal_Bool bValue = !aList.empty() && aList.front().equalsIgnoreAsciiCaseAscii( "true" );
-++
-++ m_aGetValue <<= bValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "int" ) )
-++ {
-++ sal_Int32 nValue = 0;
-++ if ( !aList.empty() )
-++ nValue = aList.front().toInt32();
-++
-++ m_aGetValue <<= nValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "string" ) )
-++ {
-++ ::rtl::OUString aValue;
-++ if ( !aList.empty() )
-++ aValue = aList.front();
-++
-++ m_aGetValue <<= aValue;
-++ m_aGetValueCondition.set();
-++ }
-++ else if ( aType.equalsAscii( "stringList" ) )
-++ {
-++ uno::Sequence< ::rtl::OUString > aSequence( aList.size() );
-++ sal_Int32 nIdx = 0;
-++ for ( ::std::list< ::rtl::OUString >::const_iterator it = aList.begin(); it != aList.end(); ++it, ++nIdx )
-++ aSequence[nIdx] = (*it);
-++
-++ m_aGetValue <<= aSequence;
-++ m_aGetValueCondition.set();
-++ }
-++ else
-++ {
-++ m_aGetValue = uno::Any();
-++ m_aGetValueCondition.set();
-++ }
-++ }
-++ else if ( aCommandName.equalsAscii( "currentFilter" ) )
-++ {
-++ m_aGetCurrentFilter = aList.empty()? ::rtl::OUString(): aList.front();
-++ m_aGetCurrentFilterCondition.set();
-++ }
-++ else if ( aCommandName.equalsAscii( "currentDirectory" ) )
-++ {
-++ m_aGetDirectory = aList.empty()? ::rtl::OUString(): aList.front();
-++ m_aGetDirectoryCondition.set();
-++ }
-++ else
-++ {
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "Unrecognized command: "
-++ << OUStringToOString( aCommandName, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-++#endif
-++ }
-++}
-++
-++::std::list< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::tokenize( const ::rtl::OUString &rCommand )
-++{
-++ ::std::list< ::rtl::OUString > aList;
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ const sal_Unicode *pUnicode = rCommand.getStr();
-++ const sal_Unicode *pEnd = pUnicode + rCommand.getLength();
-++ sal_Bool bQuoted = sal_False;
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ {
-++ ++pUnicode;
-++ if ( pUnicode != pEnd )
-++ {
-++ if ( *pUnicode == 'n' )
-++ aBuffer.appendAscii( "\n", 1 );
-++ else
-++ aBuffer.append( *pUnicode );
-++ }
-++ }
-++ else if ( *pUnicode == '"' )
-++ bQuoted = !bQuoted;
-++ else if ( *pUnicode == ' ' && !bQuoted )
-++ aList.push_back( aBuffer.makeStringAndClear() );
-++ else
-++ aBuffer.append( *pUnicode );
-++ }
-++ aList.push_back( aBuffer.makeStringAndClear() );
-++
-++ return aList;
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxCommandThread.hxx fpicker/source/unx/tde_unx/UnxCommandThread.hxx
-+--- fpicker/source/unx/tde_unx/UnxCommandThread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxCommandThread.hxx 2011-08-17 14:06:49.721131468 -0500
-+@@ -0,0 +1,136 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXCOMMANDTHREAD_HXX_
-++#define _UNXCOMMANDTHREAD_HXX_
-++
-++#include <com/sun/star/uno/Any.hxx>
-++#include <com/sun/star/uno/Sequence.hxx>
-++
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <osl/thread.hxx>
-++#include <rtl/ustring.hxx>
-++
-++#include <vcl/svapp.hxx>
-++
-++#include <list>
-++
-++class UnxFilePickerNotifyThread;
-++
-++/** Synchronization for the 'thread-less' version of the fpicker.
-++
-++ Something like osl::Condition, but calls Application::Yield() while in
-++ wait().
-++*/
-++class YieldingCondition
-++{
-++ ::osl::Mutex m_aMutex;
-++ bool m_bValue;
-++
-++ bool get()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ return m_bValue;
-++ }
-++
-++public:
-++ YieldingCondition() { reset(); }
-++
-++ void reset()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ m_bValue = false;
-++ }
-++
-++ void set()
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++ m_bValue = true;
-++ }
-++
-++ void wait()
-++ {
-++ while ( !get() )
-++ Application::Yield();
-++ }
-++};
-++
-++class UnxFilePickerCommandThread : public ::osl::Thread
-++{
-++protected:
-++ UnxFilePickerNotifyThread *m_pNotifyThread;
-++ int m_nReadFD;
-++
-++ ::osl::Mutex m_aMutex;
-++
-++ YieldingCondition m_aExecCondition;
-++ sal_Bool m_aResult;
-++
-++ ::osl::Condition m_aGetCurrentFilterCondition;
-++ ::rtl::OUString m_aGetCurrentFilter;
-++
-++ ::osl::Condition m_aGetDirectoryCondition;
-++ ::rtl::OUString m_aGetDirectory;
-++
-++ ::osl::Condition m_aGetFilesCondition;
-++ ::std::list< ::rtl::OUString > m_aGetFiles;
-++
-++ ::osl::Condition m_aGetValueCondition;
-++ ::com::sun::star::uno::Any m_aGetValue;
-++
-++public:
-++ UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD );
-++ ~UnxFilePickerCommandThread();
-++
-++ YieldingCondition& SAL_CALL execCondition() { return m_aExecCondition; }
-++ sal_Bool SAL_CALL result();
-++
-++ ::osl::Condition& SAL_CALL getCurrentFilterCondition() { return m_aGetCurrentFilterCondition; }
-++ ::rtl::OUString SAL_CALL getCurrentFilter();
-++
-++ ::osl::Condition& SAL_CALL getDirectoryCondition() { return m_aGetDirectoryCondition; }
-++ ::rtl::OUString SAL_CALL getDirectory();
-++
-++ ::osl::Condition& SAL_CALL getFilesCondition() { return m_aGetFilesCondition; }
-++ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles();
-++
-++ ::osl::Condition& SAL_CALL getValueCondition() { return m_aGetValueCondition; }
-++ ::com::sun::star::uno::Any SAL_CALL getValue();
-++
-++protected:
-++ virtual void SAL_CALL run();
-++
-++ virtual void SAL_CALL handleCommand( const ::rtl::OUString &rCommand/*, sal_Bool &rQuit*/ );
-++ ::std::list< ::rtl::OUString > SAL_CALL tokenize( const ::rtl::OUString &rCommand );
-++};
-++
-++#endif // _UNXCOMMANDTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFilePicker.cxx fpicker/source/unx/tde_unx/UnxFilePicker.cxx
-+--- fpicker/source/unx/tde_unx/UnxFilePicker.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFilePicker.cxx 2011-08-17 14:07:44.765348071 -0500
-+@@ -0,0 +1,932 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <com/sun/star/lang/DisposedException.hpp>
-++#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-++#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-++#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
-++#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
-++#include <com/sun/star/ui/dialogs/ControlActions.hpp>
-++
-++#include <FPServiceInfo.hxx>
-++
-++#include <cppuhelper/interfacecontainer.h>
-++#include <osl/diagnose.h>
-++#include <rtl/ustring.hxx>
-++#include <rtl/ustrbuf.hxx>
-++#include <tools/resmgr.hxx>
-++
-++#include <svtools/svtools.hrc>
-++#include <UnxFilePicker.hxx>
-++#include <UnxCommandThread.hxx>
-++#include <UnxNotifyThread.hxx>
-++
-++#include <vcl/svapp.hxx>
-++#include <vcl/sysdata.hxx>
-++#include <vcl/syswin.hxx>
-++#include <vcl/window.hxx>
-++
-++#include <sys/wait.h>
-++#include <unistd.h>
-++#include <fcntl.h>
-++#include <stdio.h>
-++
-++#include <iostream>
-++
-++using namespace ::com::sun::star;
-++
-++using namespace ::com::sun::star::ui::dialogs;
-++using namespace ::com::sun::star::ui::dialogs::TemplateDescription;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// helper functions
-++//////////////////////////////////////////////////////////////////////////
-++
-++namespace
-++{
-++ // controling event notifications
-++ const bool STARTUP_SUSPENDED = true;
-++ const bool STARTUP_ALIVE = false;
-++
-++ uno::Sequence<rtl::OUString> SAL_CALL FilePicker_getSupportedServiceNames()
-++ {
-++ uno::Sequence<rtl::OUString> aRet(3);
-++ aRet[0] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.FilePicker");
-++ aRet[1] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.SystemFilePicker");
-++ aRet[2] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.TDEFilePicker");
-++ return aRet;
-++ }
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePicker
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePicker::UnxFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr )
-++ : cppu::WeakComponentImplHelper8<
-++ XFilterManager,
-++ XFilterGroupManager,
-++ XFilePickerControlAccess,
-++ XFilePickerNotifier,
-++// TODO XFilePreview,
-++ lang::XInitialization,
-++ util::XCancellable,
-++ lang::XEventListener,
-++ lang::XServiceInfo>( m_rbHelperMtx ),
-++ m_xServiceMgr( xServiceMgr ),
-++ m_nFilePickerPid( -1 ),
-++ m_nFilePickerWrite( -1 ),
-++ m_nFilePickerRead( -1 ),
-++ m_pNotifyThread( NULL ),
-++ m_pCommandThread( NULL ),
-++ m_pResMgr( CREATEVERSIONRESMGR( fps_office ) )
-++{
-++}
-++
-++UnxFilePicker::~UnxFilePicker()
-++{
-++ if ( m_nFilePickerPid > 0 )
-++ {
-++ sendCommand( ::rtl::OUString::createFromAscii( "exit" ) );
-++ waitpid( m_nFilePickerPid, NULL, 0 );
-++ }
-++
-++ if ( m_pCommandThread )
-++ {
-++ m_pCommandThread->join();
-++
-++ delete m_pCommandThread, m_pCommandThread = NULL;
-++ }
-++
-++ if ( m_pNotifyThread )
-++ {
-++ m_pNotifyThread->exit();
-++
-++ m_pNotifyThread->join();
-++
-++ delete m_pNotifyThread, m_pNotifyThread = NULL;
-++ }
-++
-++ if ( m_nFilePickerWrite >= 0 )
-++ close( m_nFilePickerWrite );
-++
-++ if ( m_nFilePickerRead >= 0 )
-++ close( m_nFilePickerRead );
-++
-++ delete m_pResMgr, m_pResMgr = NULL;
-++}
-++
-++void SAL_CALL UnxFilePicker::addFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ OSL_ASSERT( m_pNotifyThread );
-++ osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pNotifyThread->addFilePickerListener( xListener );
-++}
-++
-++void SAL_CALL UnxFilePicker::removeFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ OSL_ASSERT( m_pNotifyThread );
-++ osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pNotifyThread->removeFilePickerListener( xListener );
-++}
-++
-++void SAL_CALL UnxFilePicker::setTitle( const rtl::OUString &rTitle )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setTitle " );
-++ appendEscaped( aBuffer, rTitle );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++sal_Int16 SAL_CALL UnxFilePicker::execute()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++
-++ // this is _not_ an osl::Condition, see i#93366
-++ m_pCommandThread->execCondition().reset();
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "exec" ) );
-++
-++ m_pCommandThread->execCondition().wait();
-++
-++ return m_pCommandThread->result();
-++}
-++
-++void SAL_CALL UnxFilePicker::setMultiSelectionMode( sal_Bool bMode )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aString = bMode?
-++ ::rtl::OUString::createFromAscii( "setMultiSelection true" ):
-++ ::rtl::OUString::createFromAscii( "setMultiSelection false" );
-++
-++ sendCommand( aString );
-++}
-++
-++void SAL_CALL UnxFilePicker::setDefaultName( const ::rtl::OUString &rName )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setDefaultName " );
-++ appendEscaped( aBuffer, rName );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setDisplayDirectory( const rtl::OUString &rDirectory )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setDirectory " );
-++ appendEscaped( aBuffer, rDirectory );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getDisplayDirectory()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getDirectory" ),
-++ m_pCommandThread->getDirectoryCondition() );
-++
-++ return m_pCommandThread->getDirectory();
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getFiles()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getFiles" ),
-++ m_pCommandThread->getFilesCondition() );
-++
-++ return m_pCommandThread->getFiles();
-++}
-++
-++void SAL_CALL UnxFilePicker::appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendFilter " );
-++ appendEscaped( aBuffer, rTitle );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, rFilter );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setCurrentFilter( const rtl::OUString &rTitle )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setCurrentFilter " );
-++ appendEscaped( aBuffer, rTitle );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getCurrentFilter()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ sendCommand( ::rtl::OUString::createFromAscii( "getCurrentFilter" ),
-++ m_pCommandThread->getCurrentFilterCondition() );
-++
-++ return m_pCommandThread->getCurrentFilter();
-++}
-++
-++void SAL_CALL UnxFilePicker::appendFilterGroup( const rtl::OUString &rGroupTitle, const uno::Sequence<beans::StringPair> &rFilters )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendFilterGroup " );
-++ appendEscaped( aBuffer, rGroupTitle );
-++
-++ for ( sal_Int32 i = 0; i < rFilters.getLength(); ++i )
-++ {
-++ beans::StringPair aPair = rFilters[i];
-++
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aPair.First );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aPair.Second );
-++ }
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const uno::Any &rValue )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aType;
-++ ::rtl::OUString aAction;
-++ sal_Int32 nTitleId;
-++
-++ if ( controlIdInfo( nControlId, aType, nTitleId ) && controlActionInfo( nControlAction, aAction ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setValue " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( aAction );
-++
-++ if ( aType.equalsAscii( "checkbox" ) )
-++ {
-++ sal_Bool bControlValue;
-++ if ( ( rValue >>= bControlValue ) && bControlValue )
-++ aBuffer.appendAscii( " true" );
-++ else
-++ aBuffer.appendAscii( " false" );
-++ }
-++ else if ( aType.equalsAscii( "listbox" ) )
-++ {
-++ switch ( nControlAction )
-++ {
-++ case ControlActions::ADD_ITEM:
-++ case ControlActions::SET_HELP_URL:
-++ {
-++ ::rtl::OUString aString;
-++ if ( rValue >>= aString )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aString );
-++ }
-++ }
-++ break;
-++
-++ case ControlActions::ADD_ITEMS:
-++ {
-++ uno::Sequence< ::rtl::OUString > aSequence;
-++ if ( rValue >>= aSequence )
-++ {
-++ for ( sal_Int32 nIdx = 0; nIdx < aSequence.getLength(); ++nIdx )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aSequence[nIdx] );
-++ }
-++
-++ }
-++ }
-++ break;
-++
-++ case ControlActions::DELETE_ITEM:
-++ case ControlActions::SET_SELECT_ITEM:
-++ {
-++ sal_Int32 nInt;
-++ if ( rValue >>= nInt )
-++ {
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( nInt );
-++ }
-++ }
-++ break;
-++
-++ default:
-++ // nothing
-++ break;
-++ }
-++ }
-++ // TODO else if push button...
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++ }
-++}
-++
-++uno::Any SAL_CALL UnxFilePicker::getValue( sal_Int16 nControlId, sal_Int16 nControlAction )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUString aAction;
-++
-++ if ( controlActionInfo( nControlAction, aAction ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "getValue " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ aBuffer.append( aAction );
-++
-++ sendCommand( aBuffer.makeStringAndClear(),
-++ m_pCommandThread->getValueCondition() );
-++
-++ return m_pCommandThread->getValue();
-++ }
-++
-++ return uno::Any();
-++}
-++
-++void SAL_CALL UnxFilePicker::enableControl( sal_Int16 nControlId, sal_Bool bEnable )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "enableControl " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( bEnable? " true": " false" );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++void SAL_CALL UnxFilePicker::setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "setLabel " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, rLabel );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getLabel(sal_Int16 /*nControlId*/)
-++ throw ( uno::RuntimeException )
-++{
-++ // FIXME getLabel() is not yet implemented
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // TODO return m_pImpl->getLabel(nControlId);
-++ return ::rtl::OUString();
-++}
-++
-++/* TODO
-++uno::Sequence<sal_Int16> SAL_CALL UnxFilePicker::getSupportedImageFormats()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getSupportedImageFormats();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getTargetColorDepth()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getTargetColorDepth();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getAvailableWidth()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getAvailableWidth();
-++}
-++
-++sal_Int32 SAL_CALL UnxFilePicker::getAvailableHeight()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getAvailableHeight();
-++}
-++
-++void SAL_CALL UnxFilePicker::setImage( sal_Int16 aImageFormat, const uno::Any &rImage )
-++ throw( lang::IllegalArgumentException, uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_pImpl->setImage( aImageFormat, aImage );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::setShowState( sal_Bool bShowState )
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->setShowState( bShowState );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::getShowState()
-++ throw( uno::RuntimeException )
-++{
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ return m_pImpl->getShowState();
-++}
-++*/
-++
-++void SAL_CALL UnxFilePicker::initialize( const uno::Sequence<uno::Any> &rArguments )
-++ throw( uno::Exception, uno::RuntimeException )
-++{
-++ initFilePicker();
-++
-++ // parameter checking
-++ uno::Any aAny;
-++ if ( 0 == rArguments.getLength( ) )
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "no arguments" ),
-++ static_cast< XFilePicker* >( this ), 1 );
-++
-++ aAny = rArguments[0];
-++
-++ if ( ( aAny.getValueType() != ::getCppuType( (sal_Int16*)0 ) ) && ( aAny.getValueType() != ::getCppuType( (sal_Int8*)0 ) ) )
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "invalid argument type" ),
-++ static_cast< XFilePicker* >( this ), 1 );
-++
-++ sal_Int16 templateId = -1;
-++ aAny >>= templateId;
-++
-++ ::rtl::OUString aTypeOpen = ::rtl::OUString::createFromAscii( "setType \"open\"" );
-++ ::rtl::OUString aTypeSaveAs = ::rtl::OUString::createFromAscii( "setType \"save\"" );
-++
-++ switch ( templateId )
-++ {
-++ case FILEOPEN_SIMPLE:
-++ sendCommand( aTypeOpen );
-++ break;
-++
-++ case FILESAVE_SIMPLE:
-++ sendCommand( aTypeSaveAs );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_PASSWORD:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_SELECTION:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_SELECTION );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION_TEMPLATE:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_TEMPLATE );
-++ break;
-++
-++ case FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE );
-++ break;
-++
-++ case FILEOPEN_PLAY:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::PUSHBUTTON_PLAY );
-++ break;
-++
-++ case FILEOPEN_READONLY_VERSION:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_READONLY );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_VERSION );
-++ break;
-++
-++ case FILEOPEN_LINK_PREVIEW:
-++ sendCommand( aTypeOpen );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-++ break;
-++
-++ case FILESAVE_AUTOEXTENSION:
-++ sendCommand( aTypeSaveAs );
-++
-++ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-++ break;
-++
-++ default:
-++ throw lang::IllegalArgumentException(
-++ rtl::OUString::createFromAscii( "Unknown template" ),
-++ static_cast< XFilePicker* >( this ),
-++ 1 );
-++ }
-++}
-++
-++void SAL_CALL UnxFilePicker::cancel()
-++ throw ( uno::RuntimeException )
-++{
-++ // FIXME cancel() is not implemented
-++ checkFilePicker();
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ // TODO m_pImpl->cancel();
-++}
-++
-++void SAL_CALL UnxFilePicker::disposing( const lang::EventObject &rEvent )
-++ throw( uno::RuntimeException )
-++{
-++ uno::Reference<XFilePickerListener> xFilePickerListener( rEvent.Source, uno::UNO_QUERY );
-++
-++ if ( xFilePickerListener.is() )
-++ removeFilePickerListener( xFilePickerListener );
-++}
-++
-++rtl::OUString SAL_CALL UnxFilePicker::getImplementationName()
-++ throw( uno::RuntimeException )
-++{
-++ return rtl::OUString::createFromAscii( FILE_PICKER_IMPL_NAME );
-++}
-++
-++sal_Bool SAL_CALL UnxFilePicker::supportsService( const rtl::OUString& ServiceName )
-++ throw( uno::RuntimeException )
-++{
-++ uno::Sequence< ::rtl::OUString > SupportedServicesNames = FilePicker_getSupportedServiceNames();
-++
-++ for ( sal_Int32 n = SupportedServicesNames.getLength(); n--; )
-++ {
-++ if ( SupportedServicesNames[n].compareTo( ServiceName ) == 0 )
-++ return sal_True;
-++ }
-++
-++ return sal_False;
-++}
-++
-++uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getSupportedServiceNames()
-++ throw( uno::RuntimeException )
-++{
-++ return FilePicker_getSupportedServiceNames();
-++}
-++
-++void UnxFilePicker::initFilePicker()
-++{
-++ int aFiledesStdin[2], aFiledesStdout[2];
-++ if ( pipe( aFiledesStdin ) < 0 || pipe( aFiledesStdout ) < 0 )
-++ return;
-++
-++ m_nFilePickerPid = fork();
-++ if ( m_nFilePickerPid < 0 )
-++ return;
-++
-++ if ( m_nFilePickerPid == 0 )
-++ {
-++ // Child...
-++ close( aFiledesStdin[1] ); // write end of the pipe
-++ dup2( aFiledesStdin[0], 0 );
-++ close( aFiledesStdin[0] );
-++
-++ close( aFiledesStdout[0] ); // read end of the pipe
-++ dup2( aFiledesStdout[1], 1 );
-++ close( aFiledesStdout[1] );
-++
-++#if OSL_DEBUG_LEVEL == 0
-++ int nRedirect = open( "/dev/null", O_WRONLY );
-++ if( nRedirect != -1 )
-++ {
-++ dup2( nRedirect, 2 );
-++ }
-++#endif
-++
-++ // The executable name
-++ char pFname[1024]; snprintf(pFname, sizeof pFname, "%s/%s", getenv("OLDPWD"), "tdefilepicker");
-++
-++ // ID of the main window
-++ const int nIdLen = 20;
-++ char pWinId[nIdLen] = "0";
-++
-++ // TODO pass here the real parent (not possible for system dialogs
-++ // yet), and default to GetDefDialogParent() only when the real parent
-++ // is NULL
-++ Window *pParentWin = Application::GetDefDialogParent();
-++ if ( pParentWin )
-++ {
-++ const SystemEnvData* pSysData = ((SystemWindow *)pParentWin)->GetSystemData();
-++ if ( pSysData )
-++ {
-++ snprintf( pWinId, nIdLen, "%ld", pSysData->aWindow ); // unx only
-++ pWinId[nIdLen-1] = 0;
-++ }
-++ }
-++
-++ // Execute the fpicker implementation
-++ execlp( pFname, pFname, "--winid", pWinId, NULL );
-++
-++ // Error, finish the child
-++ exit( -1 );
-++ }
-++
-++ // Parent continues
-++ close( aFiledesStdin[0] );
-++ m_nFilePickerWrite = aFiledesStdin[1];
-++
-++ close( aFiledesStdout[1] );
-++ m_nFilePickerRead = aFiledesStdout[0];
-++
-++ // Create the notify thread
-++ if ( !m_pNotifyThread )
-++ m_pNotifyThread = new UnxFilePickerNotifyThread( this );
-++
-++ // Create the command thread
-++ if ( !m_pCommandThread )
-++ m_pCommandThread = new UnxFilePickerCommandThread( m_pNotifyThread, m_nFilePickerRead );
-++
-++ // Start the threads
-++ m_pNotifyThread->create();
-++ m_pCommandThread->create();
-++
-++ return;
-++}
-++
-++void UnxFilePicker::checkFilePicker() throw( ::com::sun::star::uno::RuntimeException )
-++{
-++ if ( m_nFilePickerPid > 0 )
-++ {
-++ // TODO check if external file picker is runnning
-++ }
-++ else
-++ {
-++ throw uno::RuntimeException(
-++ ::rtl::OUString::createFromAscii( "the external file picker does not run" ),
-++ *this );
-++ }
-++}
-++
-++void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand )
-++{
-++ if ( m_nFilePickerWrite < 0 )
-++ return;
-++
-++ ::rtl::OString aUtfString = OUStringToOString( rCommand + ::rtl::OUString::createFromAscii( "\n" ), RTL_TEXTENCODING_UTF8 );
-++
-++#if OSL_DEBUG_LEVEL > 0
-++ ::std::cerr << "UnxFilePicker sent: \"" << aUtfString.getStr() << "\"" << ::std::endl;
-++#endif
-++
-++ write( m_nFilePickerWrite, aUtfString.getStr(), aUtfString.getLength() );
-++}
-++
-++void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition )
-++{
-++ rCondition.reset();
-++
-++ sendCommand( rCommand );
-++
-++ rCondition.wait();
-++}
-++
-++void UnxFilePicker::appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString )
-++{
-++ const sal_Unicode *pUnicode = rString.getStr();
-++ const sal_Unicode *pEnd = pUnicode + rString.getLength();
-++
-++ rBuffer.appendAscii( "\"" , 1 );
-++
-++ for ( ; pUnicode != pEnd; ++pUnicode )
-++ {
-++ if ( *pUnicode == '\\' )
-++ rBuffer.appendAscii( "\\\\", 2 );
-++ else if ( *pUnicode == '"' )
-++ rBuffer.appendAscii( "\\\"", 2 );
-++ else if ( *pUnicode == '\n' )
-++ rBuffer.appendAscii( "\\n", 2 );
-++ else
-++ rBuffer.append( *pUnicode );
-++ }
-++
-++ rBuffer.appendAscii( "\"", 1 );
-++}
-++
-++sal_Bool UnxFilePicker::controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId )
-++{
-++ typedef struct {
-++ sal_Int16 nId;
-++ const ::rtl::OUString *pType;
-++ sal_Int32 nTitle;
-++ } ElementToName;
-++
-++ const ::rtl::OUString aCheckBox( RTL_CONSTASCII_USTRINGPARAM( "checkbox" ) );
-++ const ::rtl::OUString aControl( RTL_CONSTASCII_USTRINGPARAM( "control" ) );
-++ const ::rtl::OUString aEdit( RTL_CONSTASCII_USTRINGPARAM( "edit" ) );
-++ const ::rtl::OUString aLabel( RTL_CONSTASCII_USTRINGPARAM( "label" ) );
-++ const ::rtl::OUString aListBox( RTL_CONSTASCII_USTRINGPARAM( "listbox" ) );
-++ const ::rtl::OUString aPushButton( RTL_CONSTASCII_USTRINGPARAM( "pushbutton" ) );
-++
-++ const ElementToName *pPtr;
-++ const ElementToName pArray[] =
-++ {
-++ { CommonFilePickerElementIds::PUSHBUTTON_OK, &aPushButton, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::PUSHBUTTON_CANCEL, &aPushButton, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::LISTBOX_FILTER, &aListBox, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::CONTROL_FILEVIEW, &aControl, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::EDIT_FILEURL, &aEdit, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::LISTBOX_FILTER_LABEL, &aLabel, 0/*FIXME?*/ },
-++ { CommonFilePickerElementIds::EDIT_FILEURL_LABEL, &aLabel, 0/*FIXME?*/ },
-++
-++ { ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &aCheckBox, STR_SVT_FILEPICKER_AUTO_EXTENSION },
-++ { ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, &aCheckBox, STR_SVT_FILEPICKER_PASSWORD },
-++ { ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS, &aCheckBox, STR_SVT_FILEPICKER_FILTER_OPTIONS },
-++ { ExtendedFilePickerElementIds::CHECKBOX_READONLY, &aCheckBox, STR_SVT_FILEPICKER_READONLY },
-++ { ExtendedFilePickerElementIds::CHECKBOX_LINK, &aCheckBox, STR_SVT_FILEPICKER_INSERT_AS_LINK },
-++ { ExtendedFilePickerElementIds::CHECKBOX_PREVIEW, &aCheckBox, STR_SVT_FILEPICKER_SHOW_PREVIEW },
-++ { ExtendedFilePickerElementIds::PUSHBUTTON_PLAY, &aPushButton, STR_SVT_FILEPICKER_PLAY },
-++ { ExtendedFilePickerElementIds::LISTBOX_VERSION, &aListBox, STR_SVT_FILEPICKER_VERSION },
-++ { ExtendedFilePickerElementIds::LISTBOX_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_TEMPLATES },
-++ { ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_IMAGE_TEMPLATE },
-++ { ExtendedFilePickerElementIds::CHECKBOX_SELECTION, &aCheckBox, STR_SVT_FILEPICKER_SELECTION },
-++ { 0, 0, 0 }
-++ };
-++
-++ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlId ); ++pPtr )
-++ ;
-++
-++ if ( pPtr->nId == nControlId )
-++ {
-++ rType = *(pPtr->pType);
-++ rTitleId = pPtr->nTitle;
-++
-++ return sal_True;
-++ }
-++
-++ return sal_False;
-++}
-++
-++sal_Bool UnxFilePicker::controlActionInfo( sal_Int16 nControlAction, ::rtl::OUString &rType )
-++{
-++ typedef struct {
-++ sal_Int16 nId;
-++ const ::rtl::OUString pType;
-++ } ElementToName;
-++
-++ const ElementToName *pPtr;
-++ const ElementToName pArray[] =
-++ {
-++ { ControlActions::ADD_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItem" ) ) },
-++ { ControlActions::ADD_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItems" ) ) },
-++ { ControlActions::DELETE_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItem" ) ) },
-++ { ControlActions::DELETE_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItems" ) ) },
-++ { ControlActions::SET_SELECT_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setSelectedItem" ) ) },
-++ { ControlActions::GET_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getItems" ) ) },
-++ { ControlActions::GET_SELECTED_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItem" ) ) },
-++ { ControlActions::GET_SELECTED_ITEM_INDEX, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItemIndex" ) ) },
-++ { ControlActions::SET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setHelpURL" ) ) },
-++ { ControlActions::GET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getHelpURL" ) ) },
-++ { 0, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "noAction" ) ) }
-++ };
-++
-++ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlAction ); ++pPtr )
-++ ;
-++
-++ rType = pPtr->pType;
-++
-++ return sal_True;
-++}
-++
-++void UnxFilePicker::sendAppendControlCommand( sal_Int16 nControlId )
-++{
-++ ::rtl::OUString aType;
-++ sal_Int32 nTitleId;
-++
-++ if ( controlIdInfo( nControlId, aType, nTitleId ) )
-++ {
-++ ::rtl::OUStringBuffer aBuffer( 1024 );
-++
-++ aBuffer.appendAscii( "appendControl " );
-++ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, aType );
-++ aBuffer.appendAscii( " ", 1 );
-++ appendEscaped( aBuffer, m_pResMgr? String( ResId( nTitleId, *m_pResMgr ) ): String() );
-++
-++ sendCommand( aBuffer.makeStringAndClear() );
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFilePicker.hxx fpicker/source/unx/tde_unx/UnxFilePicker.hxx
-+--- fpicker/source/unx/tde_unx/UnxFilePicker.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFilePicker.hxx 2011-08-17 14:07:41.705113628 -0500
-+@@ -0,0 +1,178 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXFILEPICKER_HXX_
-++#define _UNXFILEPICKER_HXX_
-++
-++#include <cppuhelper/compbase8.hxx>
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <rtl/ustrbuf.hxx>
-++
-++#include <com/sun/star/lang/XInitialization.hpp>
-++#include <com/sun/star/lang/XServiceInfo.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
-++#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
-++#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
-++#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
-++#include <com/sun/star/util/XCancellable.hpp>
-++
-++#include <list>
-++
-++class UnxFilePickerCommandThread;
-++class UnxFilePickerNotifyThread;
-++class ResMgr;
-++
-++class UnxFilePickerDummy
-++{
-++protected:
-++ osl::Mutex m_aMutex;
-++ osl::Mutex m_rbHelperMtx;
-++};
-++
-++class UnxFilePicker :
-++ public UnxFilePickerDummy,
-++ public cppu::WeakComponentImplHelper8<
-++ ::com::sun::star::ui::dialogs::XFilterManager,
-++ ::com::sun::star::ui::dialogs::XFilterGroupManager,
-++ ::com::sun::star::ui::dialogs::XFilePickerControlAccess,
-++ ::com::sun::star::ui::dialogs::XFilePickerNotifier,
-++// TODO ::com::sun::star::ui::dialogs::XFilePreview,
-++ ::com::sun::star::lang::XInitialization,
-++ ::com::sun::star::util::XCancellable,
-++ ::com::sun::star::lang::XEventListener,
-++ ::com::sun::star::lang::XServiceInfo >
-++{
-++protected:
-++ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr; // to instanciate own services
-++
-++ pid_t m_nFilePickerPid;
-++ int m_nFilePickerWrite; // (tde|...)filepicker gets it as stdin
-++ int m_nFilePickerRead; // (tde|...)filepicker gets it as stdout
-++
-++ UnxFilePickerNotifyThread *m_pNotifyThread;
-++ UnxFilePickerCommandThread *m_pCommandThread;
-++
-++ ResMgr *m_pResMgr;
-++
-++public:
-++ UnxFilePicker( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceMgr );
-++ virtual ~UnxFilePicker();
-++
-++ // XFilePickerNotifier
-++
-++ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XExecutableDialog functions
-++
-++ virtual void SAL_CALL setTitle( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual sal_Int16 SAL_CALL execute() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilePicker functions
-++
-++ virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setDefaultName( const ::rtl::OUString &rName ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString &rDirectory ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::rtl::OUString SAL_CALL getDisplayDirectory() throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilterManager functions
-++
-++ virtual void SAL_CALL appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-++ virtual ::rtl::OUString SAL_CALL getCurrentFilter() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XFilterGroupManager functions
-++
-++ virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString &rGroupTitle, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > &rFilters ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-++
-++ // XFilePickerControlAccess functions
-++
-++ virtual void SAL_CALL setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const ::com::sun::star::uno::Any &rValue ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 nControlId, sal_Int16 nControlAction ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL enableControl( sal_Int16 nControlId, sal_Bool bEnable ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId ) throw (::com::sun::star::uno::RuntimeException);
-++
-++ /* TODO XFilePreview
-++
-++ virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getTargetColorDepth( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getAvailableWidth( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Int32 SAL_CALL getAvailableHeight( ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const ::com::sun::star::uno::Any &rImage ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) throw (::com::sun::star::uno::RuntimeException);
-++ virtual sal_Bool SAL_CALL getShowState( ) throw (::com::sun::star::uno::RuntimeException);
-++ */
-++
-++ // XInitialization
-++
-++ virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > &rArguments ) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException );
-++
-++ // XCancellable
-++
-++ virtual void SAL_CALL cancel( ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XEventListener
-++
-++ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject &rEvent ) throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // XServiceInfo
-++
-++ virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
-++ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString &rServiceName ) throw( ::com::sun::star::uno::RuntimeException );
-++ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-++
-++private:
-++ // prevent copy and assignment
-++ UnxFilePicker( const UnxFilePicker& );
-++ UnxFilePicker& operator=( const UnxFilePicker& );
-++
-++protected:
-++ void initFilePicker();
-++ void checkFilePicker() throw( ::com::sun::star::uno::RuntimeException );
-++
-++ // Async sendCommand
-++ void sendCommand( const ::rtl::OUString &rCommand );
-++ // Synchronized sendCommand
-++ void sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition );
-++ void appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString );
-++
-++private:
-++ sal_Bool controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId );
-++ sal_Bool controlActionInfo( sal_Int16 nControlId, ::rtl::OUString &rType );
-++ void sendAppendControlCommand( sal_Int16 nControlId );
-++};
-++
-++#endif // _UNXFILEPICKER_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxFPentry.cxx fpicker/source/unx/tde_unx/UnxFPentry.cxx
-+--- fpicker/source/unx/tde_unx/UnxFPentry.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxFPentry.cxx 2011-08-17 14:06:26.059319485 -0500
-+@@ -0,0 +1,128 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <com/sun/star/container/XSet.hpp>
-++
-++#include <cppuhelper/factory.hxx>
-++#include <osl/diagnose.h>
-++
-++#include "UnxFilePicker.hxx"
-++#include "FPServiceInfo.hxx"
-++
-++using namespace ::rtl;
-++using namespace ::com::sun::star::uno;
-++using namespace ::com::sun::star::container;
-++using namespace ::com::sun::star::lang;
-++using namespace ::com::sun::star::registry;
-++using namespace ::cppu;
-++using ::com::sun::star::ui::dialogs::XFilePicker;
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++static Reference< XInterface > SAL_CALL createInstance( const Reference< XMultiServiceFactory >& rServiceManager )
-++{
-++ return Reference< XInterface >(
-++ static_cast< XFilePicker* >( new UnxFilePicker( rServiceManager ) ) );
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++// the three uno functions that will be exported
-++//////////////////////////////////////////////////////////////////////////
-++
-++extern "C"
-++{
-++
-++//////////////////////////////////////////////////////////////////////////
-++// component_getImplementationEnvironment
-++//////////////////////////////////////////////////////////////////////////
-++
-++void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++sal_Bool SAL_CALL component_writeInfo( void* pServiceManager, void* pRegistryKey )
-++{
-++ sal_Bool bRetVal = sal_True;
-++
-++ if ( pRegistryKey )
-++ {
-++ try
-++ {
-++ Reference< XRegistryKey > pXNewKey( static_cast< XRegistryKey* >( pRegistryKey ) );
-++ pXNewKey->createKey( OUString::createFromAscii( FILE_PICKER_REGKEY_NAME ) );
-++ }
-++ catch( InvalidRegistryException& )
-++ {
-++ OSL_ENSURE( sal_False, "InvalidRegistryException caught" );
-++ bRetVal = sal_False;
-++ }
-++ }
-++
-++ return bRetVal;
-++}
-++
-++//////////////////////////////////////////////////////////////////////////
-++//
-++//////////////////////////////////////////////////////////////////////////
-++
-++void* SAL_CALL component_getFactory( const sal_Char* pImplName, uno_Interface* pSrvManager, uno_Interface* pRegistryKey )
-++{
-++ void* pRet = 0;
-++
-++ if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, FILE_PICKER_IMPL_NAME ) ) )
-++ {
-++ Sequence< OUString > aSNS( 1 );
-++ aSNS.getArray( )[0] = OUString::createFromAscii( FILE_PICKER_SERVICE_NAME );
-++
-++ Reference< XSingleServiceFactory > xFactory ( createSingleFactory(
-++ reinterpret_cast< XMultiServiceFactory* > ( pSrvManager ),
-++ OUString::createFromAscii( pImplName ),
-++ createInstance,
-++ aSNS ) );
-++ if ( xFactory.is() )
-++ {
-++ xFactory->acquire();
-++ pRet = xFactory.get();
-++ }
-++ }
-++
-++ return pRet;
-++}
-++
-++} // extern "C"
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxNotifyThread.cxx fpicker/source/unx/tde_unx/UnxNotifyThread.cxx
-+--- fpicker/source/unx/tde_unx/UnxNotifyThread.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxNotifyThread.cxx 2011-08-17 14:06:06.307806939 -0500
-+@@ -0,0 +1,116 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include <UnxNotifyThread.hxx>
-++#include <UnxFilePicker.hxx>
-++
-++using namespace ::com::sun::star;
-++
-++//////////////////////////////////////////////////////////////////////////
-++// UnxFilePickerNotifyThread
-++//////////////////////////////////////////////////////////////////////////
-++
-++UnxFilePickerNotifyThread::UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker )
-++ : m_pUnxFilePicker( pUnxFilePicker ),
-++ m_bExit( sal_False ),
-++ m_eNotifyType( Nothing ),
-++ m_nControlId( 0 )
-++{
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::addFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_xListener = xListener;
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::removeFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-++ throw( uno::RuntimeException )
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_xListener.clear();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::exit()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_bExit = sal_True;
-++
-++ m_aExitCondition.reset();
-++ m_aNotifyCondition.set();
-++
-++ m_aExitCondition.wait();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::fileSelectionChanged()
-++{
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ m_eNotifyType = FileSelectionChanged;
-++ m_nControlId = 0;
-++
-++ m_aNotifyCondition.set();
-++}
-++
-++void SAL_CALL UnxFilePickerNotifyThread::run()
-++{
-++ do {
-++ m_aNotifyCondition.reset();
-++ m_aNotifyCondition.wait();
-++
-++ if ( m_xListener.is() && m_pUnxFilePicker )
-++ {
-++ ::osl::MutexGuard aGuard( m_aMutex );
-++
-++ ui::dialogs::FilePickerEvent aEvent( *m_pUnxFilePicker, m_nControlId );
-++
-++ switch ( m_eNotifyType )
-++ {
-++ case FileSelectionChanged:
-++ m_xListener->fileSelectionChanged( aEvent );
-++ break;
-++
-++ // TODO More to come...
-++
-++ default:
-++ // nothing
-++ break;
-++ }
-++ }
-++ } while ( !m_bExit );
-++
-++ m_aExitCondition.set();
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN fpicker/source/unx/tde_unx/UnxNotifyThread.hxx fpicker/source/unx/tde_unx/UnxNotifyThread.hxx
-+--- fpicker/source/unx/tde_unx/UnxNotifyThread.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ fpicker/source/unx/tde_unx/UnxNotifyThread.hxx 2011-08-17 14:05:56.737074019 -0500
-+@@ -0,0 +1,90 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2010 Novell, Inc.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _UNXNOTIFYTHREAD_HXX_
-++#define _UNXNOTIFYTHREAD_HXX_
-++
-++#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp>
-++#include <com/sun/star/uno/Reference.hxx>
-++
-++#include <osl/conditn.hxx>
-++#include <osl/mutex.hxx>
-++#include <osl/thread.hxx>
-++
-++class UnxFilePicker;
-++
-++class UnxFilePickerNotifyThread : public ::osl::Thread
-++{
-++protected:
-++ enum NotifyType
-++ {
-++ Nothing = 0,
-++ FileSelectionChanged
-++ // TODO More to come...
-++ };
-++
-++ UnxFilePicker *m_pUnxFilePicker;
-++
-++ ::osl::Mutex m_aMutex;
-++
-++ ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener > m_xListener;
-++
-++ sal_Bool m_bExit;
-++ ::osl::Condition m_aExitCondition;
-++
-++ NotifyType m_eNotifyType;
-++ ::osl::Condition m_aNotifyCondition;
-++ sal_Int16 m_nControlId;
-++
-++public:
-++ UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker );
-++
-++ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-++ throw( ::com::sun::star::uno::RuntimeException );
-++ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-++ throw( ::com::sun::star::uno::RuntimeException );
-++
-++ void SAL_CALL exit();
-++
-++ void SAL_CALL fileSelectionChanged();
-++ /* TODO
-++ void SAL_CALL directoryChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-++ rtl::OUString SAL_CALL helpRequested( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ) const;
-++ void SAL_CALL controlStateChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-++ void SAL_CALL dialogSizeChanged( );
-++ */
-++
-++protected:
-++ virtual void SAL_CALL run();
-++};
-++
-++#endif // _UNXNOTIFYTHREAD_HXX_
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/makefile.mk shell/source/backends/tdebe/makefile.mk
-+--- shell/source/backends/tdebe/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/makefile.mk 2011-08-17 14:16:06.283767347 -0500
-+@@ -0,0 +1,82 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++PRJ=..$/..$/..
-++
-++PRJNAME=shell
-++TARGET=tdebe
-++
-++LIBTARGET=NO
-++ENABLE_EXCEPTIONS=TRUE
-++VISIBILITY_HIDDEN=TRUE
-++
-++# --- Settings ---
-++
-++.INCLUDE : settings.mk
-++
-++# For some of the included external TDE headers, GCC complains about shadowed
-++# symbols in instantiated template code only at the end of a compilation unit,
-++# so the only solution is to disable that warning here:
-++.IF "$(COM)" == "GCC"
-++CFLAGSCXX+=-Wno-shadow
-++.ENDIF
-++
-++UNIXTEXT=$(MISC)/$(TARGET)1-ucd.txt
-++
-++# no "lib" prefix
-++DLLPRE =
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++# --- Files ---
-++
-++SLOFILES=\
-++ $(SLO)$/tdeaccess.obj \
-++ $(SLO)$/tdebackend.obj
-++
-++SHL1NOCHECK=TRUE
-++SHL1TARGET=$(TARGET)1.uno
-++SHL1OBJS=$(SLOFILES)
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++
-++SHL1IMPLIB=i$(SHL1TARGET)
-++SHL1LINKFLAGS+=$(TDE_LIBS) -lkio
-++SHL1STDLIBS= \
-++ $(CPPUHELPERLIB) \
-++ $(CPPULIB) \
-++ $(SALLIB)
-++
-++SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-++DEF1NAME=$(SHL1TARGET)
-++
-++.ENDIF # "$(ENABLE_TDE)" == "TRUE"
-++
-++# --- Targets ---
-++
-++.INCLUDE : target.mk
-+diff -urN shell/source/backends/tdebe/tdeaccess.cxx shell/source/backends/tdebe/tdeaccess.cxx
-+--- shell/source/backends/tdebe/tdeaccess.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdeaccess.cxx 2011-08-17 14:16:46.426842396 -0500
-+@@ -0,0 +1,319 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#include "precompiled_shell.hxx"
-++#include "sal/config.h"
-++
-++#include "com/sun/star/uno/Any.hxx"
-++#include "cppu/unotype.hxx"
-++#include "osl/diagnose.h"
-++#include "osl/file.h"
-++#include "rtl/string.h"
-++#include "rtl/ustring.hxx"
-++
-++#include "tde_headers.h"
-++
-++#include "tdeaccess.hxx"
-++
-++#define SPACE ' '
-++#define COMMA ','
-++#define SEMI_COLON ';'
-++
-++namespace tdeaccess {
-++
-++namespace {
-++
-++namespace css = com::sun::star ;
-++namespace uno = css::uno ;
-++
-++}
-++
-++css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
-++ if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ExternalMailer"))) {
-++ KEMailSettings aEmailSettings;
-++ TQString aClientProgram;
-++ ::rtl::OUString sClientProgram;
-++
-++ aClientProgram = aEmailSettings.getSetting( KEMailSettings::ClientProgram );
-++ if ( aClientProgram.isEmpty() )
-++ aClientProgram = "kmail";
-++ else
-++ aClientProgram = aClientProgram.section(SPACE, 0, 0);
-++ sClientProgram = (const sal_Unicode *) aClientProgram.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sClientProgram ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")))
-++ {
-++ TQFont aFixedFont;
-++ short nFontHeight;
-++
-++ aFixedFont = KGlobalSettings::fixedFont();
-++ nFontHeight = aFixedFont.pointSize();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nFontHeight ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")))
-++ {
-++ TQFont aFixedFont;
-++ TQString aFontName;
-++ :: rtl::OUString sFontName;
-++
-++ aFixedFont = KGlobalSettings::fixedFont();
-++ aFontName = aFixedFont.family();
-++ sFontName = (const sal_Unicode *) aFontName.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sFontName ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")))
-++ {
-++ /* does not make much sense without an accessibility bridge */
-++ sal_Bool ATToolSupport = sal_False;
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( rtl::OUString::valueOf( ATToolSupport ) ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")))
-++ {
-++ TQString aDocumentsDir( KGlobalSettings::documentPath() );
-++ rtl::OUString sDocumentsDir;
-++ rtl::OUString sDocumentsURL;
-++ if ( aDocumentsDir.endsWith(TQChar('/')) )
-++ aDocumentsDir.truncate ( aDocumentsDir.length() - 1 );
-++ sDocumentsDir = (const sal_Unicode *) aDocumentsDir.ucs2();
-++ osl_getFileURLFromSystemPath( sDocumentsDir.pData, &sDocumentsURL.pData );
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sDocumentsURL ) );
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")))
-++ {
-++ TQString aFTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aFTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aFTPProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")))
-++ {
-++ TQString aFTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aFTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aFTPProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")))
-++ {
-++ TQString aHTTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")))
-++ {
-++ TQString aHTTPProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")))
-++ {
-++ TQString aHTTPSProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPSProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPSProxy);
-++ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sProxy ) );
-++ }
-++ } else if (id.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")))
-++ {
-++ TQString aHTTPSProxy;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-++ break;
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-++// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-++// The best we can do here is to ask the current value for a given address.
-++ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aHTTPSProxy.isEmpty() )
-++ {
-++ KURL aProxy(aHTTPSProxy);
-++ sal_Int32 nPort = aProxy.port();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( nPort ) );
-++ }
-++ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy"))) {
-++ TQString aNoProxyFor;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++ aNoProxyFor = KProtocolManager::noProxyFor();
-++ break;
-++ default: // No proxy is used
-++ break;
-++ }
-++ if ( !aNoProxyFor.isEmpty() )
-++ {
-++ ::rtl::OUString sNoProxyFor;
-++
-++ aNoProxyFor = aNoProxyFor.replace( COMMA, SEMI_COLON );
-++ sNoProxyFor = (const sal_Unicode *) aNoProxyFor.ucs2();
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( sNoProxyFor ) );
-++ }
-++ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetProxyType"))) {
-++ int nProxyType;
-++ switch ( KProtocolManager::proxyType() )
-++ {
-++ case KProtocolManager::ManualProxy: // Proxies are manually configured
-++ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-++ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-++ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-++ nProxyType = 1;
-++ break;
-++ default: // No proxy is used
-++ nProxyType = 0;
-++ }
-++ return css::beans::Optional< css::uno::Any >(
-++ true, uno::makeAny( (sal_Int32) nProxyType ) );
-++ } else {
-++ OSL_ASSERT(false); // this cannot happen
-++ }
-++ return css::beans::Optional< css::uno::Any >();
-++}
-++
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdeaccess.hxx shell/source/backends/tdebe/tdeaccess.hxx
-+--- shell/source/backends/tdebe/tdeaccess.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdeaccess.hxx 2011-08-17 14:16:31.565704001 -0500
-+@@ -0,0 +1,51 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#ifndef INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-++#define INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-++
-++#include "sal/config.h"
-++
-++#include "com/sun/star/beans/Optional.hpp"
-++
-++namespace com { namespace sun { namespace star { namespace uno {
-++ class Any;
-++} } } }
-++namespace rtl { class OUString; }
-++
-++namespace tdeaccess {
-++
-++com::sun::star::beans::Optional< com::sun::star::uno::Any > getValue(
-++ rtl::OUString const & id);
-++
-++}
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdebackend.cxx shell/source/backends/tdebe/tdebackend.cxx
-+--- shell/source/backends/tdebe/tdebackend.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdebackend.cxx 2011-08-17 14:16:42.136513747 -0500
-+@@ -0,0 +1,262 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++*
-++* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++*
-++* Copyright 2000, 2010 Oracle and/or its affiliates.
-++* Copyright 2011 Timothy Pearson
-++*
-++* OpenOffice.org - a multi-platform office productivity suite
-++*
-++* This file is part of OpenOffice.org.
-++*
-++* OpenOffice.org is free software: you can redistribute it and/or modify
-++* it under the terms of the GNU Lesser General Public License version 3
-++* only, as published by the Free Software Foundation.
-++*
-++* OpenOffice.org 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 version 3 for more details
-++* (a copy is included in the LICENSE file that accompanied this code).
-++*
-++* You should have received a copy of the GNU Lesser General Public License
-++* version 3 along with OpenOffice.org. If not, see
-++* <http://www.openoffice.org/license.html>
-++* for a copy of the LGPLv3 License.
-++*
-++************************************************************************/
-++
-++#include "precompiled_shell.hxx"
-++#include "sal/config.h"
-++
-++#include "boost/noncopyable.hpp"
-++#include "com/sun/star/beans/Optional.hpp"
-++#include "com/sun/star/beans/PropertyVetoException.hpp"
-++#include "com/sun/star/beans/UnknownPropertyException.hpp"
-++#include "com/sun/star/beans/XPropertyChangeListener.hpp"
-++#include "com/sun/star/beans/XPropertySet.hpp"
-++#include "com/sun/star/beans/XPropertySetInfo.hpp"
-++#include "com/sun/star/beans/XVetoableChangeListener.hpp"
-++#include "com/sun/star/lang/IllegalArgumentException.hpp"
-++#include "com/sun/star/lang/WrappedTargetException.hpp"
-++#include "com/sun/star/lang/XMultiComponentFactory.hpp"
-++#include "com/sun/star/lang/XServiceInfo.hpp"
-++#include "com/sun/star/lang/WrappedTargetException.hpp"
-++#include "com/sun/star/uno/Any.hxx"
-++#include "com/sun/star/uno/Reference.hxx"
-++#include "com/sun/star/uno/RuntimeException.hpp"
-++#include "com/sun/star/uno/Sequence.hxx"
-++#include "com/sun/star/uno/XComponentContext.hpp"
-++#include "com/sun/star/uno/XCurrentContext.hpp"
-++#include "cppuhelper/factory.hxx"
-++#include "cppuhelper/implbase2.hxx"
-++#include "cppuhelper/implementationentry.hxx"
-++#include "cppuhelper/weak.hxx"
-++#include "rtl/string.h"
-++#include "rtl/ustring.h"
-++#include "rtl/ustring.hxx"
-++#include "sal/types.h"
-++#include "uno/current_context.hxx"
-++#include "uno/lbnames.h"
-++
-++#include "tde_headers.h"
-++
-++#include "tdeaccess.hxx"
-++
-++namespace {
-++
-++namespace css = com::sun::star;
-++
-++rtl::OUString SAL_CALL getServiceImplementationName() {
-++ return rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM(
-++ "com.sun.star.comp.configuration.backend.TDEBackend"));
-++}
-++
-++css::uno::Sequence< rtl::OUString > SAL_CALL getServiceSupportedServiceNames() {
-++ rtl::OUString name(
-++ RTL_CONSTASCII_USTRINGPARAM(
-++ "com.sun.star.configuration.backend.TDEBackend"));
-++ return css::uno::Sequence< rtl::OUString >(&name, 1);
-++}
-++
-++class Service:
-++ public cppu::WeakImplHelper2<
-++ css::lang::XServiceInfo, css::beans::XPropertySet >,
-++ private boost::noncopyable
-++{
-++public:
-++ Service();
-++
-++private:
-++ virtual ~Service() {}
-++
-++ virtual rtl::OUString SAL_CALL getImplementationName()
-++ throw (css::uno::RuntimeException)
-++ { return getServiceImplementationName(); }
-++
-++ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
-++ throw (css::uno::RuntimeException)
-++ { return ServiceName == getSupportedServiceNames()[0]; }
-++
-++ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
-++ getSupportedServiceNames() throw (css::uno::RuntimeException)
-++ { return getServiceSupportedServiceNames(); }
-++
-++ virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
-++ getPropertySetInfo() throw (css::uno::RuntimeException)
-++ { return css::uno::Reference< css::beans::XPropertySetInfo >(); }
-++
-++ virtual void SAL_CALL setPropertyValue(
-++ rtl::OUString const &, css::uno::Any const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::beans::PropertyVetoException,
-++ css::lang::IllegalArgumentException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException);
-++
-++ virtual css::uno::Any SAL_CALL getPropertyValue(
-++ rtl::OUString const & PropertyName)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException);
-++
-++ virtual void SAL_CALL addPropertyChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL removePropertyChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL addVetoableChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ virtual void SAL_CALL removeVetoableChangeListener(
-++ rtl::OUString const &,
-++ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-++ throw (
-++ css::beans::UnknownPropertyException,
-++ css::lang::WrappedTargetException, css::uno::RuntimeException)
-++ {}
-++
-++ bool enabled_;
-++};
-++
-++Service::Service(): enabled_(false) {
-++ css::uno::Reference< css::uno::XCurrentContext > context(
-++ css::uno::getCurrentContext());
-++ if (context.is()) {
-++ rtl::OUString desktop;
-++ context->getValueByName(
-++ rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM("system.desktop-environment"))) >>=
-++ desktop;
-++ enabled_ = desktop.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("TDE")) &&
-++ KApplication::kApplication() != 0;
-++ }
-++}
-++
-++void Service::setPropertyValue(rtl::OUString const &, css::uno::Any const &)
-++ throw (
-++ css::beans::UnknownPropertyException, css::beans::PropertyVetoException,
-++ css::lang::IllegalArgumentException, css::lang::WrappedTargetException,
-++ css::uno::RuntimeException)
-++{
-++ throw css::lang::IllegalArgumentException(
-++ rtl::OUString(
-++ RTL_CONSTASCII_USTRINGPARAM("setPropertyValue not supported")),
-++ static_cast< cppu::OWeakObject * >(this), -1);
-++}
-++
-++css::uno::Any Service::getPropertyValue(rtl::OUString const & PropertyName)
-++ throw (
-++ css::beans::UnknownPropertyException, css::lang::WrappedTargetException,
-++ css::uno::RuntimeException)
-++{
-++ if (PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ExternalMailer")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy")) ||
-++ PropertyName.equalsAsciiL(
-++ RTL_CONSTASCII_STRINGPARAM("ooInetProxyType")))
-++ {
-++ return css::uno::makeAny(
-++ enabled_
-++ ? tdeaccess::getValue(PropertyName)
-++ : css::beans::Optional< css::uno::Any >());
-++ }
-++ throw css::beans::UnknownPropertyException(
-++ PropertyName, static_cast< cppu::OWeakObject * >(this));
-++}
-++
-++css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(
-++ css::uno::Reference< css::uno::XComponentContext > const &)
-++{
-++ return static_cast< cppu::OWeakObject * >(new Service);
-++}
-++
-++static cppu::ImplementationEntry const services[] = {
-++ { &createInstance, &getServiceImplementationName,
-++ &getServiceSupportedServiceNames, &cppu::createSingleComponentFactory, 0,
-++ 0 },
-++ { 0, 0, 0, 0, 0, 0 }
-++};
-++
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
-++ char const * pImplName, void * pServiceManager, void * pRegistryKey)
-++{
-++ return cppu::component_getFactoryHelper(
-++ pImplName, pServiceManager, pRegistryKey, services);
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
-++component_getImplementationEnvironment(
-++ char const ** ppEnvTypeName, uno_Environment **)
-++{
-++ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-++}
-++
-++extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-++ void * pServiceManager, void * pRegistryKey)
-++{
-++ return component_writeInfoHelper(pServiceManager, pRegistryKey, services);
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN shell/source/backends/tdebe/tdebe1-ucd.txt shell/source/backends/tdebe/tdebe1-ucd.txt
-+--- shell/source/backends/tdebe/tdebe1-ucd.txt 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/backends/tdebe/tdebe1-ucd.txt 2011-08-17 14:16:36.266064060 -0500
-+@@ -0,0 +1,6 @@
-++[ComponentDescriptor]
-++ImplementationName=com.sun.star.comp.configuration.backend.TDEBackend
-++ComponentName=tdebe1.uno.so
-++LoaderName=com.sun.star.loader.SharedLibrary
-++[SupportedServices]
-++com.sun.star.configuration.backend.TDEBackend
-+--- fpicker/prj/build.lst 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/prj/build.lst 2011-08-17 19:28:07.578452546 -0500
-+@@ -7,8 +7,10 @@
-+ fp fpicker\source\unx\kde4 nmake - u fp_kde4_filepicker fp_inc NULL
-+ fp fpicker\source\unx\kde_unx nmake - u fp_unx_common fp_inc NULL
-+ fp fpicker\source\unx\kde nmake - u fp_unx_kde_filepicker fp_inc NULL
-++fp fpicker\source\unx\tde_unx nmake - u fp_unx_tdecommon fp_inc NULL
-++fp fpicker\source\unx\tde nmake - u fp_unx_tde_filepicker fp_inc NULL
-+ fp fpicker\source\aqua nmake - u fp_macosx_filepicker NULL
-+ fp fpicker\source\win32\filepicker nmake - w fp_win32_filepicker fp_inc NULL
-+ fp fpicker\source\win32\folderpicker nmake - w fp_win32_folderpicker fp_inc NULL
-+ fp fpicker\source\win32\misc nmake - w fp_win32_misc fp_win32_filepicker.w fp_win32_folderpicker.w fp_inc NULL
-+-fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-++fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_unx_tdecommon.u fp_unx_tde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-+--- shell/prj/build.lst 2010-11-11 09:30:08.000000000 -0600
-++++ shell/prj/build.lst 2011-08-17 19:29:38.835371237 -0500
-+@@ -30,5 +30,6 @@
-+ sl shell\source\backends\gconfbe nmake - u sl_backends_gconfbe sl_inc NULL
-+ sl shell\source\backends\kdebe nmake - u sl_backends_kdebe sl_inc NULL
-+ sl shell\source\backends\kde4be nmake - u sl_backends_kde4be sl_inc NULL
-++sl shell\source\backends\tdebe nmake - u sl_backends_tdebe sl_inc NULL
-+ sl shell\source\backends\desktopbe nmake - u sl_backends_desktopbe sl_inc NULL
-+ sl shell\source\win32\shlxthandler\ooofilt nmake - w sl_win32_shlxthandler_ooofilt sl_all_zipfile.w sl_all_ooofilereader.w sl_win32_shlxthandler_util.w sl_all sl_inc NULL
-+--- connectivity/prj/build.lst 2010-11-11 13:08:58.000000000 -0600
-++++ connectivity/prj/build.lst 2011-08-17 19:31:47.795150674 -0500
-+@@ -12,6 +12,7 @@
-+ cn connectivity\source\drivers\mozab\bootstrap nmake - all cn_mozab_bootstrap cn_mozab_mozillasrc cn_inc NULL
-+ cn connectivity\source\drivers\mozab nmake - all cn_mozab cn_mozab_bootstrap cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\kab nmake - all cn_kab cn_dbtools cn_inc NULL
-++cn connectivity\source\drivers\tdeab nmake - all cn_tdeab cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\macab nmake - all cn_macab cn_dbtools cn_inc NULL
-+ cn connectivity\source\drivers\evoab2 nmake - all cn_evoab2 cn_dbtools cn_file cn_inc NULL
-+ cn connectivity\source\drivers\calc nmake - all cn_calc cn_file cn_inc NULL
-+@@ -28,5 +29,5 @@
-+ cn connectivity\source\simpledbt nmake - all cn_simpledbt cn_cmtools cn_inc NULL
-+ cn connectivity\source\dbtools nmake - all cn_dbtools cn_simpledbt cn_cmtools cn_parse cn_res cn_sdbcx cn_inc cn_res NULL
-+ cn connectivity\qa\connectivity\tools nmake - all cn_qa_tools cn_inc NULL
-+-cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_adabas cn_flat cn_dbase cn_hsqldb cn_macab NULL
-++cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_tdeab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_adabas cn_flat cn_dbase cn_hsqldb cn_macab NULL
-+
-+--- set_soenv.in 2011-03-08 12:51:39.000000000 -0600
-++++ set_soenv.in 2011-08-17 22:19:40.994282148 -0500
-+@@ -1732,6 +1732,10 @@
-+ ToFile( "KDE_GLIB_LIBS", "@KDE_GLIB_LIBS@", "e" );
-+ ToFile( "KDE_HAVE_GLIB", "@KDE_HAVE_GLIB@", "e" );
-+ ToFile( "ENABLE_KAB", "@ENABLE_KAB@", "e" );
-++ToFile( "ENABLE_TDE", "@ENABLE_TDE@", "e" );
-++ToFile( "TDE_CFLAGS", "@TDE_CFLAGS@", "e" );
-++ToFile( "TDE_LIBS", "@TDE_LIBS@", "e" );
-++ToFile( "ENABLE_TDEAB", "@ENABLE_TDEAB@", "e" );
-+ ToFile( "PSPRINT", "TRUE", "e" );
-+ ToFile( "MKDEPENDSOLVER", "TRUE", "e" );
-+ ToFile( "nodep", "@nodep@", "e" );
-+diff -urN shell/inc/tde_headers.h shell/inc/tde_headers.h
-+--- shell/inc/tde_headers.h 1969-12-31 18:00:00.000000000 -0600
-++++ shell/inc/tde_headers.h 2011-08-18 00:00:30.118955481 -0500
-+@@ -0,0 +1,98 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef INCLUDED_VCL_TDE_HEADERS_H
-++#define INCLUDED_VCL_TDE_HEADERS_H
-++
-++/* ********* Suppress warnings if needed */
-++#include "sal/config.h"
-++
-++#if defined __GNUC__
-++#pragma GCC system_header
-++#endif
-++
-++
-++/* ********* Hack, but needed because of conflicting types... */
-++#define Region QtXRegion
-++
-++
-++/* ********* TQt headers */
-++#include <tqaccessible.h>
-++#include <tqcheckbox.h>
-++#include <tqcombobox.h>
-++#include <tqfont.h>
-++#include <tqframe.h>
-++#include <tqlineedit.h>
-++#include <tqlistview.h>
-++#include <tqmainwindow.h>
-++#include <tqmenudata.h>
-++#include <tqpaintdevice.h>
-++#include <tqpainter.h>
-++#include <tqpushbutton.h>
-++#include <tqradiobutton.h>
-++#include <tqrangecontrol.h>
-++#include <tqstring.h>
-++#include <tqtabbar.h>
-++#include <tqtabwidget.h>
-++#include <tqtoolbar.h>
-++#include <tqtoolbutton.h>
-++#include <tqwidget.h>
-++#include <tqprogressbar.h>
-++
-++/* ********* See hack on top of this file */
-++#undef Region
-++
-++
-++/* ********* TDE base headers */
-++#include <kaboutdata.h>
-++#include <kapplication.h>
-++#include <kcmdlineargs.h>
-++#include <kconfig.h>
-++#include <kdeversion.h>
-++#include <kemailsettings.h>
-++#include <kglobal.h>
-++#include <kglobalsettings.h>
-++#include <klocale.h>
-++#include <kmainwindow.h>
-++#include <kmenubar.h>
-++#include <kprotocolmanager.h>
-++#include <kstartupinfo.h>
-++#include <kstyle.h>
-++
-++
-++/* ********* TDE address book connectivity headers */
-++#include <kabc/addressbook.h>
-++#include <kabc/addressee.h>
-++#include <kabc/field.h>
-++#include <kabc/stdaddressbook.h>
-++
-++
-++#endif
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN connectivity/source/inc/resource/tdeab_res.hrc connectivity/source/inc/resource/tdeab_res.hrc
-+--- connectivity/source/inc/resource/tdeab_res.hrc 1969-12-31 18:00:00.000000000 -0600
-++++ connectivity/source/inc/resource/tdeab_res.hrc 2011-08-18 00:42:41.185561810 -0500
-+@@ -0,0 +1,44 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef CONNECTIVITY_RESOURCE_KAB_HRC
-++#define CONNECTIVITY_RESOURCE_KAB_HRC
-++
-++#include "resource/conn_shared_res.hrc"
-++#include "resource/common_res.hrc"
-++// ============================================================================
-++// = the tdeab driver's resource strings
-++// ============================================================================
-++
-++#define STR_NO_TDE_INST ( STR_KAB_BASE + 0 )
-++#define STR_TDE_VERSION_TOO_OLD ( STR_KAB_BASE + 1 )
-++#define STR_TDE_VERSION_TOO_NEW ( STR_KAB_BASE + 2 )
-++#define STR_TDE_VERSION_TOO_NEW_WORK_AROUND ( STR_KAB_BASE + 3 )
-++
-++#endif // CONNECTIVITY_RESOURCE_KAB_HRC
-++
-+diff -urN shell/prj/d.lst shell/prj/d.lst
-+--- shell/prj/d.lst 2010-11-11 09:30:08.000000000 -0600
-++++ shell/prj/d.lst 2011-08-18 00:54:55.072395417 -0500
-+@@ -14,6 +14,7 @@
-+ ..\%__SRC%\bin\open-url %_DEST%\bin%_EXT%\open-url
-+ ..\%__SRC%\bin\cde-open-url %_DEST%\bin%_EXT%\cde-open-url
-+ ..\%__SRC%\bin\kde-open-url %_DEST%\bin%_EXT%\kde-open-url
-++..\%__SRC%\bin\tde-open-url %_DEST%\bin%_EXT%\tde-open-url
-+ ..\%__SRC%\bin\gnome-open-url %_DEST%\bin%_EXT%\gnome-open-url
-+ ..\%__SRC%\bin\gnome-open-url.bin %_DEST%\bin%_EXT%\gnome-open-url.bin
-+ ..\%__SRC%\bin\senddoc %_DEST%\bin%_EXT%\senddoc
-+@@ -23,3 +24,4 @@
-+
-+ ..\%__SRC%\misc\*-ucd.txt %_DEST%\bin%_EXT%\*-ucd.txt
-+ ..\inc\kde_headers.h %_DEST%\inc%_EXT%\shell\kde_headers.h
-++..\inc\tde_headers.h %_DEST%\inc%_EXT%\shell\tde_headers.h
-+diff -urN fpicker/prj/d.lst fpicker/prj/d.lst
-+--- fpicker/prj/d.lst 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/prj/d.lst 2011-08-18 00:57:05.532528127 -0500
-+@@ -5,6 +5,7 @@
-+ ..\%__SRC%\bin\f*.res %_DEST%\bin%_EXT%\
-+ ..\%__SRC%\bin\f*.dll %_DEST%\bin%_EXT%\
-+ ..\%__SRC%\bin\kdefilepicker %_DEST%\bin%_EXT%\kdefilepicker
-++..\%__SRC%\bin\tdefilepicker %_DEST%\bin%_EXT%\tdefilepicker
-+ ..\%__SRC%\lib\f*.so %_DEST%\lib%_EXT%\
-+ ..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
-+
-+@@ -14,3 +15,4 @@
-+ ..\source\unx\kde4\fps-kde4-ucd.txt %_DEST%\bin%_EXT%\fps-kde4-ucd.txt
-+ ..\source\aqua\fps-aqua-ucd.txt %_DEST%\bin%_EXT%\fps-aqua-ucd.txt
-+ ..\source\unx\kde_unx\fps-kde-ucd.txt %_DEST%\bin%_EXT%\fps-kde-ucd.txt
-++..\source\unx\tde_unx\fps-tde-ucd.txt %_DEST%\bin%_EXT%\fps-tde-ucd.txt
-+diff -urN connectivity/prj/d.lst connectivity/prj/d.lst
-+--- connectivity/prj/d.lst 2010-11-11 09:30:07.000000000 -0600
-++++ connectivity/prj/d.lst 2011-08-18 00:58:04.797146865 -0500
-+@@ -8,6 +8,7 @@
-+ ..\source\drivers\adabas\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\ado\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\kab\*.xml %_DEST%\xml%_EXT%\*.xml
-++..\source\drivers\tdeab\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\macab\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\file\*.xml %_DEST%\xml%_EXT%\*.xml
-+ ..\source\drivers\flat\*.xml %_DEST%\xml%_EXT%\*.xml
-+diff -urN scp2/prj/build.lst scp2/prj/build.lst
-+--- scp2/prj/build.lst 2010-11-30 14:17:23.000000000 -0600
-++++ scp2/prj/build.lst 2011-08-18 11:36:10.411551109 -0500
-+@@ -14,6 +14,7 @@
-+ cp scp2\source\impress nmake - all cp_impress cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\javafilter nmake - all cp_javafilter cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\kde nmake - all cp_kde cp_langmacros cp_langtemplates NULL
-++cp scp2\source\tde nmake - all cp_tde cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\layout nmake - all cp_layout cp_langmacros NULL
-+ cp scp2\source\math nmake - all cp_math cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\ooo nmake - all cp_ooo cp_langmacros cp_langtemplates NULL
-+@@ -27,4 +28,4 @@
-+ cp scp2\source\winexplorerext nmake - all cp_winexplorerext cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\onlineupdate nmake - all cp_update cp_langmacros cp_langtemplates NULL
-+ cp scp2\source\accessories nmake - all cp_accessories cp_langmacros NULL
-+-cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-++cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_tde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-+diff -urN scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_library_ooo.scp
-+--- scp2/source/ooo/file_library_ooo.scp 2010-11-11 09:08:07.000000000 -0600
-++++ scp2/source/ooo/file_library_ooo.scp 2011-08-18 11:42:28.890516734 -0500
-+@@ -590,6 +590,25 @@
-+ End
-+ #endif
-+ #endif
-++#ifdef ENABLE_TDE
-++#ifndef MACOSX
-++File gid_File_Lib_Fps_Tde
-++ TXT_FILE_BODY;
-++ Styles = (PACKED,UNO_COMPONENT);
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Dir = gid_Dir_Program;
-++ Name = SPECIAL_COMPONENT_LIB_NAME(fps_tde.uno);
-++ Regmergefile = "fps-tde-ucd.txt";
-++End
-++File gid_File_Bin_TdeFilePicker
-++ BIN_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = gid_Brand_Dir_Program;
-++ Name = "tdefilepicker";
-++End
-++#endif
-++#endif
-++
-+ #endif
-+
-+ #ifdef MACOSX
-+@@ -1207,6 +1226,17 @@
-+ End
-+ #endif
-+ #endif
-++#ifdef ENABLE_TDE
-++#ifndef MACOSX
-++File gid_File_Lib_Vclplug_Tde
-++ Name = LIBNAME(vclplug_tde);
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++End
-++#endif
-++#endif
-++
-+ #endif
-+
-+ #if defined(QUARTZ)
-+diff -urN scp2/source/ooo/file_ooo.scp scp2/source/ooo/file_ooo.scp
-+--- scp2/source/ooo/file_ooo.scp 2011-03-08 13:12:46.000000000 -0600
-++++ scp2/source/ooo/file_ooo.scp 2011-08-18 11:40:40.942257980 -0500
-+@@ -209,6 +209,13 @@
-+ Styles = (PACKED);
-+ End
-+
-++File gid_File_Bin_Tde_Open_Url
-++ BIN_FILE_BODY;
-++ Dir = gid_Dir_Program;
-++ Name = "tde-open-url";
-++ Styles = (PACKED);
-++End
-++
-+ File gid_File_Bin_Cde_Open_Url
-+ BIN_FILE_BODY;
-+ Dir = gid_Dir_Program;
-+diff -urN scp2/source/ooo/module_hidden_ooo.scp scp2/source/ooo/module_hidden_ooo.scp
-+--- scp2/source/ooo/module_hidden_ooo.scp 2010-12-14 09:40:37.000000000 -0600
-++++ scp2/source/ooo/module_hidden_ooo.scp 2011-08-18 11:44:02.297661319 -0500
-+@@ -40,6 +40,7 @@
-+ gid_File_Bin_Gnome_Open_Url,
-+ gid_File_Bin_Gnome_Open_Url_Bin,
-+ gid_File_Bin_Kde_Open_Url,
-++ gid_File_Bin_Tde_Open_Url,
-+ gid_File_Bin_Open_Url,
-+ gid_File_Bin_Pagein,
-+ gid_File_Bin_Pluginapp,
-+@@ -239,6 +240,7 @@
-+ gid_File_Lib_Vclplug_Gtk,
-+ gid_File_Lib_Vclplug_Kde,
-+ gid_File_Lib_Vclplug_Kde4,
-++ gid_File_Lib_Vclplug_Tde,
-+ gid_File_Lib_Vclplug_Svp,
-+ gid_File_Lib_Basctl,
-+ gid_File_Lib_CanvasTools,
-+diff -urN scp2/source/tde/file_tde.scp scp2/source/tde/file_tde.scp
-+--- scp2/source/tde/file_tde.scp 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/file_tde.scp 2011-08-18 11:38:30.302260303 -0500
-+@@ -0,0 +1,39 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++#include "macros.inc"
-++
-++#ifdef ENABLE_TDE
-++File gid_File_Lib_Tdebe
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(tdebe1.uno,UNXSUFFIX));
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Regmergefile = "tdebe1-ucd.txt";
-++End
-++#endif
-+diff -urN scp2/source/tde/makefile.mk scp2/source/tde/makefile.mk
-+--- scp2/source/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/makefile.mk 2011-08-18 11:37:33.667925169 -0500
-+@@ -0,0 +1,59 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..
-++
-++PRJPCH=
-++
-++PRJNAME=scp2
-++TARGET=tde
-++TARGETTYPE=CUI
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++
-++SCP_PRODUCT_TYPE=osl
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++
-++.IF "$(ENABLE_TDE)" != ""
-++SCPDEFS+=-DENABLE_TDE
-++.ENDIF
-++
-++PARFILES = \
-++ module_tde.par \
-++ file_tde.par
-++
-++ULFFILES= \
-++ module_tde.ulf
-++.ENDIF
-++
-++# --- File ---------------------------------------------------------
-++
-++.INCLUDE : target.mk
-+diff -urN scp2/source/tde/module_tde.scp scp2/source/tde/module_tde.scp
-+--- scp2/source/tde/module_tde.scp 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/module_tde.scp 2011-08-18 11:38:07.870543319 -0500
-+@@ -0,0 +1,45 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#include "macros.inc"
-++
-++#if defined( ENABLE_TDE )
-++Module gid_Module_Optional_Tde
-++ ParentID = gid_Module_Optional;
-++ Default = YES;
-++ PackageInfo = "packinfo_office.txt";
-++ MOD_NAME_DESC(MODULE_OPTIONAL_TDE);
-++ Styles = (DONTSHOWINUSERINSTALL);
-++ Files = (
-++#ifdef ENABLE_TDE
-++ gid_File_Lib_Tdebe
-++#endif // ENABLE_TDE
-++ );
-++End
-++#endif
-++
-+diff -urN scp2/source/tde/module_tde.ulf scp2/source/tde/module_tde.ulf
-+--- scp2/source/tde/module_tde.ulf 1969-12-31 18:00:00.000000000 -0600
-++++ scp2/source/tde/module_tde.ulf 2011-08-18 11:37:03.345603863 -0500
-+@@ -0,0 +1,34 @@
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++[STR_NAME_MODULE_OPTIONAL_TDE]
-++en-US = "TDE Integration"
-++
-++[STR_DESC_MODULE_OPTIONAL_TDE]
-++en-US = "System integration of %PRODUCTNAME %PRODUCTVERSION into TDE."
-++
-+diff -urN scp2/util/makefile.mk scp2/util/makefile.mk
-+--- scp2/util/makefile.mk 2010-12-16 07:54:12.000000000 -0600
-++++ scp2/util/makefile.mk 2011-08-18 11:39:59.419080617 -0500
-+@@ -197,6 +197,12 @@
-+ module_kde.par \
-+ file_kde.par
-+ .ENDIF
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++SCP1FILES += \
-++ module_tde.par \
-++ file_tde.par
-++.ENDIF
-+ .ENDIF
-+
-+ .IF "$(ENABLE_CRASHDUMP)" != ""
-+@@ -380,6 +386,12 @@
-+ module_kde.par \
-+ file_kde.par
-+ .ENDIF
-++
-++.IF "$(ENABLE_TDE)" == "TRUE"
-++SCP2FILES += \
-++ module_tde.par \
-++ file_tde.par
-++.ENDIF
-+ .ENDIF
-+
-+ .IF "$(ENABLE_CRASHDUMP)" != ""
-+diff -urN shell/source/unix/misc/makefile.mk shell/source/unix/misc/makefile.mk
-+--- shell/source/unix/misc/makefile.mk 2010-11-11 09:30:08.000000000 -0600
-++++ shell/source/unix/misc/makefile.mk 2011-08-18 14:27:51.206440704 -0500
-+@@ -45,7 +45,8 @@
-+ $(BIN)$/open-url \
-+ $(BIN)$/cde-open-url \
-+ $(BIN)$/gnome-open-url \
-+- $(BIN)$/kde-open-url
-++ $(BIN)$/kde-open-url \
-++ $(BIN)$/tde-open-url
-+
-+ .IF "$(GUI)" == "OS2"
-+
-+diff -urN shell/source/unix/misc/tde-open-url.sh shell/source/unix/misc/tde-open-url.sh
-+--- shell/source/unix/misc/tde-open-url.sh 1969-12-31 18:00:00.000000000 -0600
-++++ shell/source/unix/misc/tde-open-url.sh 2010-11-11 09:30:08.000000000 -0600
-+@@ -0,0 +1,10 @@
-++#!/bin/sh
-++
-++# special handling for mailto: uris
-++if echo $1 | grep '^mailto:' > /dev/null; then
-++ kmailservice "$1" &
-++else
-++ kfmclient openURL "$1" &
-++fi
-++
-++exit 0
-+diff -urN setup_native/source/packinfo/packinfo_office.txt setup_native/source/packinfo/packinfo_office.txt
-+--- setup_native/source/packinfo/packinfo_office.txt 2011-03-08 13:12:46.000000000 -0600
-++++ setup_native/source/packinfo/packinfo_office.txt 2011-08-18 14:46:02.820250783 -0500
-+@@ -48,6 +48,21 @@
-+ End
-+
-+ Start
-++module = "gid_Module_Optional_Tde"
-++solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-tde-integration"
-++solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-++packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-tde-integration"
-++freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-++requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-++copyright = "1999-2009 by OpenOffice.org"
-++solariscopyright = "solariscopyrightfile"
-++vendor = "The Document Foundation"
-++description = "TDE integration module for LibreOffice %OOOBASEVERSION"
-++destpath = "/opt"
-++packageversion = "%OOOPACKAGEVERSION"
-++End
-++
-++Start
-+ module = "gid_Module_Root"
-+ # script = "shellscripts_core01.txt"
-+ solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-+diff -urN scp2/source/ooo/makefile.mk scp2/source/ooo/makefile.mk
-+--- scp2/source/ooo/makefile.mk 2010-12-16 05:06:55.000000000 -0600
-++++ scp2/source/ooo/makefile.mk 2011-08-18 15:49:48.543071983 -0500
-+@@ -88,6 +88,14 @@
-+ SCPDEFS+=-DENABLE_KAB
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++SCPDEFS+=-DENABLE_TDE
-++.ENDIF
-++
-++.IF "$(ENABLE_TDEAB)" != ""
-++SCPDEFS+=-DENABLE_TDEAB
-++.ENDIF
-++
-+ .IF "$(ENABLE_EVOAB2)" != ""
-+ SCPDEFS+=-DENABLE_EVOAB2
-+ .ENDIF
-+diff -urN solenv/config/sooo330.ini solenv/config/sooo330.ini
-+--- solenv/config/sooo330.ini 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/config/sooo330.ini 2011-08-18 19:37:01.865529222 -0500
-+@@ -646,6 +646,8 @@
-+ CVER C432
-+ ENABLE_KAB TRUE
-+ ENABLE_KDE TRUE
-++ ENABLE_TDEAB TRUE
-++ ENABLE_TDE TRUE
-+ ENABLE_EVOAB2 TRUE
-+ ENV_TOOLS %SOLARROOT%/et_linux_libc2.5/%WORK_STAMP%/bin
-+ GUI UNX
-+@@ -656,6 +658,7 @@
-+ JDK14PATH %SOLAR_JDK14PATH%
-+ JDK15PATH %SOLAR_JDK15PATH%
-+ KDE_ROOT /so/env/kde/linux/kde-3.2.2
-++ TDE_ROOT /so/env/tde/linux/tde-3.2.2
-+ LIBMYSQL_PATH %SOLAR_ENV_ROOT%/mysql-connector-c-6.0.2/unxlngi6
-+ NO_BSYMBOLIC True
-+ OJDK16PATH %SOLAR_OJDK16PATH%
-+@@ -921,6 +924,8 @@
-+ CVER C341
-+ ENABLE_KAB TRUE
-+ ENABLE_KDE TRUE
-++ ENABLE_TDEAB TRUE
-++ ENABLE_TDE TRUE
-+ ENV_TOOLS %SOLARROOT%/et_linux_libc2.32/%WORK_STAMP%/bin
-+ GUI UNX
-+ GUIBASE unx
-+@@ -930,6 +935,7 @@
-+ JDK14PATH %SOLAR_JDK14PATH%
-+ JDK15PATH %SOLAR_JDK15PATH%
-+ KDE_ROOT /so/env/kde/linux/kde-3.2.2
-++ TDE_ROOT /so/env/tde/linux/tde-3.2.2
-+ LIBMYSQL_PATH %SOLAR_ENV_ROOT%/mysql-connector-c-6.0.2/unxlngx6
-+ NO_BSYMBOLIC True
-+ OJDK16PATH %SOLAR_OJDK16PATH%
-+diff -urN solenv/config/ssolar.cmn solenv/config/ssolar.cmn
-+--- solenv/config/ssolar.cmn 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/config/ssolar.cmn 2011-08-18 19:37:26.207387814 -0500
-+@@ -89,6 +89,7 @@
-+ ENABLE_GCONF
-+ ENABLE_GNOMEVFS
-+ ENABLE_KDE
-++ ENABLE_TDE
-+ ENABLE_MEDIAWIKI
-+ ENABLE_MINIMIZER
-+ ENABLE_NSS_MODULE
-+diff -urN solenv/inc/unx.mk solenv/inc/unx.mk
-+--- solenv/inc/unx.mk 2010-11-11 09:08:07.000000000 -0600
-++++ solenv/inc/unx.mk 2011-08-18 19:35:33.868809472 -0500
-+@@ -206,4 +206,13 @@
-+ .ENDIF # "$(KDE_ROOT)"!=""
-+ .ENDIF # "$(ENABLE_KDE)" != ""
-+
-++# enable building/linking TDE-dependent code in both OOo and SO build environment
-++.IF "$(ENABLE_TDE)" != ""
-++.IF "$(TDE_ROOT)"!=""
-++TDE_CFLAGS:=-I$(TDE_ROOT)/include -I/usr/include/tqt -DQT_CLEAN_NAMESPACE
-++TDE_LIBS:=-lkdeui -lkdecore -ltqt -lqt-mt
-++SOLARLIB+=-L$(TDE_ROOT)/lib
-++.ENDIF # "$(TDE_ROOT)"!=""
-++.ENDIF # "$(ENABLE_TDE)" != ""
-++
-+ OOO_LIBRARY_PATH_VAR *= LD_LIBRARY_PATH
-+diff -urN svx/util/makefile.pmk svx/util/makefile.pmk
-+--- svx/util/makefile.pmk 2010-11-11 09:30:08.000000000 -0600
-++++ svx/util/makefile.pmk 2011-08-18 19:40:05.809571436 -0500
-+@@ -40,4 +40,8 @@
-+ CFLAGS+=-DENABLE_KDE4
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++CFLAGS+=-DENABLE_TDE
-++.ENDIF
-++
-+ VISIBILITY_HIDDEN=TRUE
-+diff -urN cui/source/options/optgdlg.cxx cui/source/options/optgdlg.cxx
-+--- cui/source/options/optgdlg.cxx 2011-01-05 12:03:17.000000000 -0600
-++++ cui/source/options/optgdlg.cxx 2011-08-18 19:41:16.134938506 -0500
-+@@ -157,6 +157,14 @@
-+ return rtl::OUString();
-+ #endif
-+ }
-++ else if ( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-++ {
-++ #ifdef ENABLE_TDE
-++ return ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.TDEFilePicker" );
-++ #else
-++ return rtl::OUString();
-++ #endif
-++ }
-+ #if defined WNT
-+ return ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.SystemFilePicker" );
-+ #elif (defined MACOSX && defined QUARTZ)
-+diff -urN cui/util/makefile.pmk cui/util/makefile.pmk
-+--- cui/util/makefile.pmk 2010-11-11 09:12:41.000000000 -0600
-++++ cui/util/makefile.pmk 2011-08-18 19:40:36.291897881 -0500
-+@@ -37,4 +37,8 @@
-+ CFLAGS+=-DENABLE_KDE4
-+ .ENDIF
-+
-++.IF "$(ENABLE_TDE)" != ""
-++CFLAGS+=-DENABLE_TDE
-++.ENDIF
-++
-+ VISIBILITY_HIDDEN=TRUE
-+diff -urN desktop/source/pagein/makefile.mk desktop/source/pagein/makefile.mk
-+--- desktop/source/pagein/makefile.mk 2010-11-11 09:30:07.000000000 -0600
-++++ desktop/source/pagein/makefile.mk 2011-08-18 19:41:55.037907135 -0500
-+@@ -129,6 +129,9 @@
-+ .IF "$(ENABLE_KDE)" != ""
-+ @-echo $(DLLPRE)vclplug_kde$(DFTDLLPOST) >> $@
-+ .ENDIF # ENABLE_KDE
-++.IF "$(ENABLE_TDE)" != ""
-++ @-echo $(DLLPRE)vclplug_tde$(DFTDLLPOST) >> $@
-++.ENDIF # ENABLE_TDE
-+ #
-+ @-echo $(DLLPRE)basegfx$(DFTDLLPOST) >> $@
-+ @-echo $(DLLPRE)sot$(DFTDLLPOST) >> $@
-+diff -urN toolkit/source/layout/core/dialogbuttonhbox.cxx toolkit/source/layout/core/dialogbuttonhbox.cxx
-+--- toolkit/source/layout/core/dialogbuttonhbox.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ toolkit/source/layout/core/dialogbuttonhbox.cxx 2011-08-18 19:46:04.396929494 -0500
-+@@ -57,6 +57,8 @@
-+ DialogButtonHBox::WINDOWS;
-+ #elif defined( ENABLE_KDE )
-+ DialogButtonHBox::KDE;
-++#elif defined( ENABLE_TDE )
-++DialogButtonHBox::TDE;
-+ #else /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
-+ DialogButtonHBox::GNOME;
-+ #endif /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
-+@@ -84,6 +86,8 @@
-+ mnOrdering = GNOME;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "KDE" ) )
-+ mnOrdering = KDE;
-++ else if ( ordering.equalsIgnoreAsciiCaseAscii( "TDE" ) )
-++ mnOrdering = TDE;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "MacOS" ) )
-+ mnOrdering = MACOS;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "Windows" ) )
-+@@ -144,6 +148,8 @@
-+ macosOrdering();
-+ else if ( mnOrdering == KDE )
-+ kdeOrdering();
-++ else if ( mnOrdering == TDE )
-++ tdeOrdering();
-+ else if ( 1 || mnOrdering == GNOME )
-+ gnomeOrdering();
-+ }
-+@@ -218,6 +224,30 @@
-+ {
-+ std::list< Box_Base::ChildData * > ordered;
-+ if ( mpHelp )
-++ ordered.push_back( mpHelp );
-++ if ( mpReset )
-++ ordered.push_back( mpReset );
-++ if ( mpFlow && ( mpHelp || mpReset ) )
-++ ordered.push_back( mpFlow );
-++ ordered.insert( ordered.end(), maOther.begin(), maOther.end() );
-++ if ( mpAction )
-++ ordered.push_back( mpAction );
-++ if ( mpAffirmative )
-++ ordered.push_back( mpAffirmative );
-++ if ( mpApply )
-++ ordered.push_back( mpApply );
-++ if ( mpAlternate )
-++ ordered.push_back( mpAlternate );
-++ if ( mpCancel )
-++ ordered.push_back( mpCancel );
-++ maChildren = ordered;
-++}
-++
-++void
-++DialogButtonHBox::tdeOrdering()
-++{
-++ std::list< Box_Base::ChildData * > ordered;
-++ if ( mpHelp )
-+ ordered.push_back( mpHelp );
-+ if ( mpReset )
-+ ordered.push_back( mpReset );
-+diff -urN toolkit/source/layout/core/dialogbuttonhbox.hxx toolkit/source/layout/core/dialogbuttonhbox.hxx
-+--- toolkit/source/layout/core/dialogbuttonhbox.hxx 2010-11-11 09:22:48.000000000 -0600
-++++ toolkit/source/layout/core/dialogbuttonhbox.hxx 2011-08-18 19:46:17.897959152 -0500
-+@@ -45,11 +45,12 @@
-+ void SAL_CALL removeChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) throw ( css::uno::RuntimeException );
-+
-+ private:
-+- enum Ordering { PLATFORM, GNOME, KDE, MACOS, WINDOWS };
-++ enum Ordering { PLATFORM, GNOME, KDE, TDE, MACOS, WINDOWS };
-+
-+ void orderChildren();
-+ void gnomeOrdering();
-+ void kdeOrdering();
-++ void tdeOrdering();
-+ void macosOrdering();
-+ void windowsOrdering();
-+
-+diff -urN vcl/util/makefile.mk vcl/util/makefile.mk
-+--- vcl/util/makefile.mk 2011-03-08 12:51:41.000000000 -0600
-++++ vcl/util/makefile.mk 2011-08-18 19:55:25.649710040 -0500
-+@@ -420,6 +420,35 @@
-+
-+ .ENDIF # "$(ENABLE_KDE)" != ""
-+
-++# TDE plugin
-++.IF "$(ENABLE_TDE)" != ""
-++.IF "$(TDE_ROOT)"!=""
-++EXTRALIBPATHS+=-L$(TDE_ROOT)$/lib
-++.ENDIF
-++LIB5TARGET=$(SLB)$/itde_plug_
-++LIB5FILES=$(SLB)$/tdeplug.lib
-++SHL5TARGET=vclplug_tde$(DLLPOSTFIX)
-++SHL5IMPLIB=itde_plug_
-++SHL5LIBS=$(LIB5TARGET)
-++SHL5DEPN=$(SHL2TARGETN)
-++# libs for TDE plugin
-++SHL5STDLIBS+=-l$(SHL2TARGET)
-++SHL5STDLIBS+=\
-++ $(VCLLIB) \
-++ $(TOOLSLIB) \
-++ $(SALLIB) \
-++ $(X11LINK_DYNAMIC)
-++
-++.IF "$(ENABLE_RANDR)" != ""
-++.IF "$(XRANDR_DLOPEN)" == "FALSE"
-++SHL5STDLIBS+= $(XRANDR_LIBS)
-++.ENDIF
-++.ENDIF
-++
-++SHL5LINKFLAGS+=$(TDE_LIBS)
-++
-++.ENDIF # "$(ENABLE_TDE)" != ""
-++
-+ # KDE4 plugin
-+ .IF "$(ENABLE_KDE4)" != ""
-+ .IF "$(KDE4_ROOT)"!=""
-+diff -urN vcl/unx/tde/makefile.mk vcl/unx/tde/makefile.mk
-+--- vcl/unx/tde/makefile.mk 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/makefile.mk 2011-08-18 20:13:01.750097435 -0500
-+@@ -0,0 +1,82 @@
-++#*************************************************************************
-++#
-++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++#
-++# Copyright 2000, 2010 Oracle and/or its affiliates.
-++# Copyright 2011 Timothy Pearson
-++#
-++# OpenOffice.org - a multi-platform office productivity suite
-++#
-++# This file is part of OpenOffice.org.
-++#
-++# OpenOffice.org is free software: you can redistribute it and/or modify
-++# it under the terms of the GNU Lesser General Public License version 3
-++# only, as published by the Free Software Foundation.
-++#
-++# OpenOffice.org 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 version 3 for more details
-++# (a copy is included in the LICENSE file that accompanied this code).
-++#
-++# You should have received a copy of the GNU Lesser General Public License
-++# version 3 along with OpenOffice.org. If not, see
-++# <http://www.openoffice.org/license.html>
-++# for a copy of the LGPLv3 License.
-++#
-++#*************************************************************************
-++
-++PRJ=..$/..
-++
-++PRJNAME=vcl
-++TARGET=tdeplug
-++.INCLUDE : $(PRJ)$/util$/makefile.pmk
-++
-++# workaround for makedepend hang
-++MTDEPENDSOLVER=
-++
-++# --- Settings -----------------------------------------------------
-++
-++.INCLUDE : settings.mk
-++.INCLUDE : $(PRJ)$/util$/makefile2.pmk
-++
-++# For some of the included external TDE headers, GCC complains about shadowed
-++# symbols in instantiated template code only at the end of a compilation unit,
-++# so the only solution is to disable that warning here:
-++.IF "$(COM)" == "GCC"
-++CFLAGSCXX+=-Wno-shadow
-++.ENDIF
-++
-++# --- Files --------------------------------------------------------
-++
-++.IF "$(GUIBASE)"!="unx"
-++
-++dummy:
-++ @echo "Nothing to build for GUIBASE $(GUIBASE)"
-++
-++.ELSE # "$(GUIBASE)"!="unx"
-++
-++.IF "$(ENABLE_TDE)" != ""
-++
-++CFLAGS+=$(TDE_CFLAGS)
-++
-++.IF "$(ENABLE_RANDR)" != ""
-++CDEFS+=-DUSE_RANDR
-++.ENDIF
-++
-++SLOFILES=\
-++ $(SLO)$/tdedata.obj \
-++ $(SLO)$/salnativewidgets-tde.obj
-++
-++.ELSE # "$(ENABLE_TDE)" != ""
-++
-++dummy:
-++ @echo TDE disabled - nothing to build
-++.ENDIF
-++.ENDIF # "$(GUIBASE)"!="unx"
-++
-++# --- Targets ------------------------------------------------------
-++
-++.INCLUDE : target.mk
-++
-++.INCLUDE : $(PRJ)$/util$/target.pmk
-+diff -urN vcl/unx/tde/salnativewidgets-tde.cxx vcl/unx/tde/salnativewidgets-tde.cxx
-+--- vcl/unx/tde/salnativewidgets-tde.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/salnativewidgets-tde.cxx 2011-08-18 20:13:46.133472981 -0500
-+@@ -0,0 +1,2119 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_vcl.hxx"
-++
-++#define _SV_SALNATIVEWIDGETS_TDE_CXX
-++#include <shell/tde_headers.h>
-++
-++#include <salunx.h>
-++#include <saldata.hxx>
-++#include <saldisp.hxx>
-++
-++#include <salgdi.h>
-++
-++#include <salframe.h>
-++#include <vcl/settings.hxx>
-++#include <rtl/ustrbuf.hxx>
-++#include <plugins/tde/tdedata.hxx>
-++#include <iostream>
-++
-++#include <pspgraphics.h>
-++
-++using namespace ::rtl;
-++
-++/** Cached native widgets.
-++
-++ A class which caches and paints the native widgets.
-++*/
-++class WidgetPainter
-++{
-++ protected:
-++ /** Cached push button.
-++
-++ It is necessary for the TQStyle::drawControl(). The buttons are created
-++ on demand and they are still hidden (no TQWidget::show() is called).
-++ */
-++ TQPushButton *m_pPushButton;
-++
-++ /** Cached radio button.
-++
-++ @see m_pPushButton
-++ */
-++ TQRadioButton *m_pRadioButton;
-++
-++ /** Cached check box.
-++
-++ @see m_pPushButton
-++ */
-++ TQCheckBox *m_pCheckBox;
-++
-++ /** Cached combo box.
-++
-++ @see m_pPushButton
-++ */
-++ TQComboBox *m_pComboBox;
-++
-++ /** Cached editable combo box.
-++
-++ Needed, because some styles do not like dynamic changes
-++ (TQComboBox::setEditable()).
-++
-++ @see m_pPushButton
-++ */
-++ TQComboBox *m_pEditableComboBox;
-++
-++ /** Cached line edit box.
-++
-++ @see m_pPushButton
-++ */
-++ TQLineEdit *m_pLineEdit;
-++
-++ /** Cached spin box.
-++
-++ @see m_pPushButton
-++ */
-++ TQSpinWidget *m_pSpinWidget;
-++
-++ /** Cached spin box'es line edit.
-++
-++ @see m_pPushButton
-++ */
-++ TQLineEdit *m_pSpinEdit;
-++
-++ /** Cached tab.
-++
-++ Left, middle, right tab and a tab which is alone.
-++
-++ @see m_pPushButton
-++ */
-++ TQTab *m_pTabLeft, *m_pTabMiddle, *m_pTabRight, *m_pTabAlone;
-++
-++ /** Cached tab bar's parent widget.
-++
-++ Needed, because the Qt windows style checks for the availability
-++ of tab bar's parent. We cannot use m_pTabWidget, because
-++ TabWidget::setTabBar() and TabWidget::tabBar() methods are
-++ protected.
-++
-++ @see m_pPushButton, m_pTabWidget
-++ */
-++ TQWidget *m_pTabBarParent;
-++
-++ /** Cached tab bar widget.
-++
-++ @see m_pPushButton
-++ */
-++ TQTabBar *m_pTabBar;
-++
-++ /** Cached tab widget.
-++
-++ We need it to draw the tab page. It cannot be used to draw the
-++ tabs themselves, because the drawing has to be tweaked a little
-++ due to not enough information from VCL.
-++
-++ @see m_pPushButton, m_pTabBarParent
-++ */
-++ TQTabWidget *m_pTabWidget;
-++
-++ /** Cached list view.
-++
-++ @see m_pPushButton
-++ */
-++ TQListView *m_pListView;
-++
-++ /** Cached scroll bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQScrollBar *m_pScrollBar;
-++
-++ /** Cached dock area. Needed for proper functionality of tool bars.
-++
-++ @see m_pPushButton
-++ */
-++ TQMainWindow *m_pMainWindow;
-++
-++ /** Cached tool bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQToolBar *m_pToolBarHoriz, *m_pToolBarVert;
-++
-++ /** Cached tool button.
-++
-++ @see m_pPushButton
-++ */
-++ TQToolButton *m_pToolButton;
-++
-++ /** Cached menu bar.
-++
-++ @see m_pPushButton
-++ */
-++ TQMenuBar *m_pMenuBar;
-++
-++ /** Identifiers of menu bar items.
-++ */
-++ int m_nMenuBarEnabledItem, m_nMenuBarDisabledItem;
-++
-++ /** Cached popup menu.
-++
-++ @see m_pPushButton
-++ */
-++ TQPopupMenu *m_pPopupMenu;
-++
-++ /** Identifiers of popup menu items.
-++ */
-++ int m_nPopupMenuEnabledItem, m_nPopupMenuDisabledItem;
-++
-++ /** cached progress bar
-++ */
-++ TQProgressBar *m_pProgressBar;
-++
-++ // TODO other widgets
-++
-++ public:
-++ /** Implicit constructor.
-++
-++ It creates an empty WidgetPainter with all the cached widgets initialized
-++ to NULL. The widgets are created on demand and they are still hidden
-++ (no TQWidget::show()), because they are needed just as a parameter for
-++ TQStyle::drawControl().
-++
-++ @see m_pPushButton
-++ */
-++ WidgetPainter( void );
-++
-++ /** Destructor.
-++
-++ Destruct all the cached widgets.
-++ */
-++ virtual ~WidgetPainter( void );
-++
-++ /** Paints the specified widget to the X window.
-++
-++ Use X calls to bitblt (bit block transfer) the widget qWidget to
-++ the window specified by drawable with the style defined by nStyle.
-++
-++ @param qWidget
-++ A pointer to the cached widget.
-++
-++ @param nState
-++ The state of the control (focused, on/off, ...)
-++
-++ @param aValue
-++ The value (true/false, ...)
-++
-++ @param dpy
-++ The display to be used by the X calls.
-++
-++ @param drawable
-++ The destination X window.
-++
-++ @param gc
-++ The graphics context.
-++ */
-++ BOOL drawStyledWidget( TQWidget *pWidget,
-++ ControlState nState, const ImplControlValue& aValue,
-++ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-++ ControlPart nPart = PART_ENTIRE_CONTROL );
-++
-++ /** 'Get' method for push button.
-++
-++ The method returns the cached push button. It is constructed if it
-++ does not exist. It has NULL as a parent and it stays hidden, but it
-++ is necessary for the drawStyledWidget() method.
-++
-++ @return valid push button.
-++ */
-++ TQPushButton *pushButton( const Rectangle& rControlRegion, BOOL bDefault );
-++
-++ /** 'Get' method for radio button.
-++
-++ @see pushButton()
-++ */
-++ TQRadioButton *radioButton( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for check box.
-++
-++ @see pushButton()
-++ */
-++ TQCheckBox *checkBox( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for combo box.
-++
-++ It returns m_pComboBox or m_pEditableComboBox according to
-++ bEditable.
-++
-++ @see pushButton(), m_pEditableComboBox
-++ */
-++ TQComboBox *comboBox( const Rectangle& rControlRegion, BOOL bEditable );
-++
-++ /** 'Get' method for line edit box.
-++
-++ @see pushButton()
-++ */
-++ TQLineEdit *lineEdit( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for spin box.
-++
-++ @see pushButton()
-++ */
-++ TQSpinWidget *spinWidget( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for tab bar.
-++
-++ @see pushButton()
-++ */
-++ TQTabBar *tabBar( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for tab widget.
-++
-++ @see pushButton()
-++ */
-++ TQTabWidget *tabWidget( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for list view.
-++
-++ @see pushButton()
-++ */
-++ TQListView *listView( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for scroll bar.
-++
-++ @see pushButton()
-++ */
-++ TQScrollBar *scrollBar( const Rectangle& rControlRegion,
-++ BOOL bHorizontal, const ImplControlValue& aValue );
-++
-++ /** 'Get' method for tool bar.
-++
-++ @see pushButton()
-++ */
-++ TQToolBar *toolBar( const Rectangle& rControlRegion, BOOL bHorizontal );
-++
-++ /** 'Get' method for tool button.
-++
-++ @see pushButton()
-++ */
-++ TQToolButton *toolButton( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for menu bar.
-++
-++ @see pushButton()
-++ */
-++ TQMenuBar *menuBar( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for popup menu.
-++
-++ @see pushButton()
-++ */
-++ TQPopupMenu *popupMenu( const Rectangle& rControlRegion );
-++
-++ /** 'Get' method for progress bar
-++
-++ @see pushButton()
-++ */
-++ TQProgressBar *progressBar( const Rectangle& rControlRegion );
-++
-++ // TODO other widgets
-++
-++ protected:
-++ /** Style conversion function.
-++
-++ Conversion function between VCL ControlState together with
-++ ImplControlValue and Qt state flags.
-++
-++ @param nState
-++ State of the widget (default, focused, ...) as defined in Native
-++ Widget Framework.
-++
-++ @param aValue
-++ Value held by the widget (on, off, ...)
-++ */
-++ TQStyle::SFlags vclStateValue2SFlags( ControlState nState, const ImplControlValue& aValue );
-++
-++ public:
-++ /** Convert VCL Rectangle to TQRect.
-++
-++ @param rControlRegion
-++ The region to convert.
-++
-++ @return
-++ The bounding box of the region.
-++ */
-++ static TQRect region2TQRect( const Rectangle& rControlRegion );
-++};
-++
-++WidgetPainter::WidgetPainter( void )
-++ : m_pPushButton( NULL ),
-++ m_pRadioButton( NULL ),
-++ m_pCheckBox( NULL ),
-++ m_pComboBox( NULL ),
-++ m_pEditableComboBox( NULL ),
-++ m_pLineEdit( NULL ),
-++ m_pSpinWidget( NULL ),
-++ m_pSpinEdit( NULL ),
-++ m_pTabLeft( NULL ),
-++ m_pTabMiddle( NULL ),
-++ m_pTabRight( NULL ),
-++ m_pTabAlone( NULL ),
-++ m_pTabBarParent( NULL ),
-++ m_pTabBar( NULL ),
-++ m_pTabWidget( NULL ),
-++ m_pListView( NULL ),
-++ m_pScrollBar( NULL ),
-++ m_pMainWindow( NULL ),
-++ m_pToolBarHoriz( NULL ),
-++ m_pToolBarVert( NULL ),
-++ m_pToolButton( NULL ),
-++ m_pMenuBar( NULL ),
-++ m_pPopupMenu( NULL ),
-++ m_pProgressBar( NULL )
-++{
-++}
-++
-++WidgetPainter::~WidgetPainter( void )
-++{
-++ delete m_pPushButton, m_pPushButton = NULL;
-++ delete m_pRadioButton, m_pRadioButton = NULL;
-++ delete m_pCheckBox, m_pCheckBox = NULL;
-++ delete m_pComboBox, m_pComboBox = NULL;
-++ delete m_pEditableComboBox, m_pEditableComboBox = NULL;
-++ delete m_pLineEdit, m_pLineEdit = NULL;
-++ delete m_pSpinWidget, m_pSpinWidget = NULL;
-++ m_pSpinEdit = NULL; // Deleted in m_pSpinWidget's destructor
-++ delete m_pTabAlone, m_pTabAlone = NULL;
-++ delete m_pTabBarParent, m_pTabBarParent = NULL;
-++ m_pTabBar = NULL; // Deleted in m_pTabBarParent's destructor
-++ m_pTabLeft = NULL;
-++ m_pTabMiddle = NULL;
-++ m_pTabRight = NULL;
-++ delete m_pTabWidget, m_pTabWidget = NULL;
-++ delete m_pListView, m_pListView = NULL;
-++ delete m_pScrollBar, m_pScrollBar = NULL;
-++ delete m_pToolBarHoriz, m_pToolBarHoriz = NULL;
-++ delete m_pToolBarVert, m_pToolBarVert = NULL;
-++ delete m_pMainWindow, m_pMainWindow = NULL;
-++ delete m_pToolButton, m_pToolButton = NULL;
-++ delete m_pMenuBar, m_pMenuBar = NULL;
-++ delete m_pPopupMenu, m_pPopupMenu = NULL;
-++ delete m_pProgressBar, m_pProgressBar = NULL;
-++}
-++
-++BOOL WidgetPainter::drawStyledWidget( TQWidget *pWidget,
-++ ControlState nState, const ImplControlValue& aValue,
-++ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-++ ControlPart nPart )
-++{
-++ if ( !pWidget )
-++ return FALSE;
-++
-++ // Normalize the widget
-++ TQPoint qWidgetPos( pWidget->pos() );
-++ pWidget->move( 0, 0 );
-++
-++ // Enable/disable the widget
-++ pWidget->setEnabled( nState & CTRL_STATE_ENABLED );
-++
-++ // Create pixmap to paint to
-++ TQPixmap qPixmap( pWidget->width(), pWidget->height() );
-++ TQPainter qPainter( &qPixmap );
-++ TQRect qRect( 0, 0, pWidget->width(), pWidget->height() );
-++
-++ // Use the background of the widget
-++ qPixmap.fill( pWidget, TQPoint(0, 0) );
-++
-++ // Convert the flags
-++ TQStyle::SFlags nStyle = vclStateValue2SFlags( nState, aValue );
-++
-++ // Store the widget class
-++ const char *pClassName = pWidget->className();
-++
-++ // Draw the widget to the pixmap
-++ if ( strcmp( TQPUSHBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ // Workaround for the Platinum style.
-++ // Platinum takes the state directly from the widget, not from SFlags.
-++ TQPushButton *pPushButton = static_cast<TQPushButton *>( pWidget->qt_cast( TQPUSHBUTTON_OBJECT_NAME_STRING ) );
-++ if ( pPushButton )
-++ {
-++ pPushButton->setDown ( nStyle & TQStyle::Style_Down );
-++ pPushButton->setOn ( nStyle & TQStyle::Style_On );
-++ pPushButton->setEnabled( nStyle & TQStyle::Style_Enabled );
-++ }
-++
-++ kapp->style().drawControl( TQStyle::CE_PushButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQRADIOBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ // Bitblt from the screen, because the radio buttons are usually not
-++ // rectangular, and there could be a bitmap under them
-++ GC aTmpGC = XCreateGC( dpy, qPixmap.handle(), 0, NULL );
-++ X11SalGraphics::CopyScreenArea( dpy,
-++ drawable, nScreen, nDepth,
-++ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-++ aTmpGC,
-++ qWidgetPos.x(), qWidgetPos.y(), qRect.width(), qRect.height(),
-++ 0, 0 );
-++ XFreeGC( dpy, aTmpGC );
-++
-++ kapp->style().drawControl( TQStyle::CE_RadioButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQCHECKBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawControl( TQStyle::CE_CheckBox,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQCOMBOBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawComplexControl( TQStyle::CC_ComboBox,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++
-++ // Editable combo box uses the background of the associated edit box
-++ TQComboBox *pComboBox = static_cast<TQComboBox *>( pWidget->qt_cast( TQCOMBOBOX_OBJECT_NAME_STRING ) );
-++ if ( pComboBox && pComboBox->editable() && pComboBox->lineEdit() )
-++ {
-++ TQColorGroup::ColorRole eColorRole = ( pComboBox->isEnabled() )?
-++ TQColorGroup::Base: TQColorGroup::Background;
-++ qPainter.fillRect(
-++ kapp->style().querySubControlMetrics( TQStyle::CC_ComboBox,
-++ pComboBox, TQStyle::SC_ComboBoxEditField ),
-++ pComboBox->lineEdit()->colorGroup().brush( eColorRole ) );
-++ }
-++ }
-++ else if ( strcmp( TQLINEEDIT_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelLineEdit,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-++ }
-++ else if ( strcmp( TQSPINWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const SpinbuttonValue *pValue = static_cast<const SpinbuttonValue *> ( &aValue );
-++
-++ // Is any of the buttons pressed?
-++ TQStyle::SCFlags eActive = TQStyle::SC_None;
-++ if ( pValue )
-++ {
-++ if ( pValue->mnUpperState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_SpinWidgetUp;
-++ else if ( pValue->mnLowerState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_SpinWidgetDown;
-++
-++ // Update the enable/disable state of the widget
-++ if ( ( nState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnUpperState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnLowerState & CTRL_STATE_ENABLED ) )
-++ {
-++ pWidget->setEnabled( true );
-++ nStyle |= TQStyle::Style_Enabled;
-++ }
-++ else
-++ pWidget->setEnabled( false );
-++
-++ // Mouse-over effect
-++ if ( (pValue->mnUpperState & CTRL_STATE_ROLLOVER) ||
-++ (pValue->mnLowerState & CTRL_STATE_ROLLOVER) )
-++ nStyle |= TQStyle::Style_MouseOver;
-++ }
-++
-++ // Spin widget uses the background of the associated edit box
-++ TQSpinWidget *pSpinWidget = static_cast<TQSpinWidget *>( pWidget->qt_cast( TQSPINWIDGET_OBJECT_NAME_STRING ) );
-++ if ( pSpinWidget && pSpinWidget->editWidget() )
-++ {
-++ TQColorGroup::ColorRole eColorRole = ( pSpinWidget->isEnabled() )?
-++ TQColorGroup::Base: TQColorGroup::Background;
-++ qPainter.fillRect(
-++ kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-++ pSpinWidget, TQStyle::SC_SpinWidgetEditField ),
-++ pSpinWidget->editWidget()->colorGroup().brush( eColorRole ) );
-++ }
-++
-++ // Adjust the frame (needed for Motif Plus style)
-++ TQRect qFrameRect = kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-++ pWidget, TQStyle::SC_SpinWidgetFrame );
-++
-++ kapp->style().drawComplexControl( TQStyle::CC_SpinWidget,
-++ &qPainter, pWidget, qFrameRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyle::SC_All, eActive );
-++ }
-++ else if ( strcmp( TQTABBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const TabitemValue *pValue = static_cast<const TabitemValue *> ( &aValue );
-++
-++ TQTab *pTab = NULL;
-++ if ( pValue )
-++ {
-++ if ( ( pValue->isFirst() || pValue->isLeftAligned() ) && ( pValue->isLast() || pValue->isRightAligned() ) )
-++ pTab = m_pTabAlone;
-++ else if ( pValue->isFirst() || pValue->isLeftAligned() )
-++ pTab = m_pTabLeft;
-++ else if ( pValue->isLast() || pValue->isRightAligned() )
-++ pTab = m_pTabRight;
-++ else
-++ pTab = m_pTabMiddle;
-++ }
-++ if ( !pTab )
-++ return FALSE;
-++
-++ pTab->setRect( qRect );
-++
-++ kapp->style().drawControl( TQStyle::CE_TabBarTab,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pTab ) );
-++ }
-++ else if ( strcmp( TQTABWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelTabWidget,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( strcmp( TQLISTVIEW_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ kapp->style().drawPrimitive( TQStyle::PE_Panel,
-++ &qPainter, qRect,
-++ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-++ }
-++ else if ( strcmp( TQSCROLLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-++
-++ TQStyle::SCFlags eActive = TQStyle::SC_None;
-++ if ( pValue )
-++ {
-++ // Workaround for Style_MouseOver-aware themes.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "QMotifPlusStyle", pStyleName ) == 0 )
-++ {
-++ nStyle |= TQStyle::Style_MouseOver;
-++ if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ }
-++ else if ( strcmp( "QSGIStyle", pStyleName ) == 0 )
-++ {
-++ nStyle |= TQStyle::Style_MouseOver;
-++ if ( pValue->mnButton1State & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSubLine;
-++ else if ( pValue->mnButton2State & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarAddLine;
-++ else if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ }
-++
-++ if ( pValue->mnButton1State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSubLine;
-++ else if ( pValue->mnButton2State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarAddLine;
-++ else if ( pValue->mnThumbState & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSlider;
-++ else if ( pValue->mnPage1State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarSubPage;
-++ else if ( pValue->mnPage2State & CTRL_STATE_PRESSED )
-++ eActive = TQStyle::SC_ScrollBarAddPage;
-++
-++ // Update the enable/disable state of the widget
-++ if ( ( nState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnButton1State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnButton2State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnThumbState & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnPage1State & CTRL_STATE_ENABLED ) ||
-++ ( pValue->mnPage2State & CTRL_STATE_ENABLED ) )
-++ {
-++ pWidget->setEnabled( true );
-++ nStyle |= TQStyle::Style_Enabled;
-++ }
-++ else
-++ pWidget->setEnabled( false );
-++ }
-++
-++ // Is it a horizontal scroll bar?
-++ TQScrollBar *pScrollBar = static_cast<TQScrollBar *> ( pWidget->qt_cast( TQSCROLLBAR_OBJECT_NAME_STRING ) );
-++ TQStyle::StyleFlags eHoriz = TQStyle::Style_Default;
-++ if ( pScrollBar && pScrollBar->orientation() == Qt::Horizontal )
-++ eHoriz = TQStyle::Style_Horizontal;
-++
-++ kapp->style().drawComplexControl( TQStyle::CC_ScrollBar,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle | eHoriz,
-++ TQStyle::SC_All, eActive );
-++ }
-++ else if ( strcmp( TQTOOLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ TQToolBar *pToolBar = static_cast< TQToolBar * >( pWidget->qt_cast( TQTOOLBAR_OBJECT_NAME_STRING ) );
-++ bool bIsHorizontal = false;
-++ if ( pToolBar && pToolBar->orientation() == Qt::Horizontal )
-++ {
-++ nStyle |= TQStyle::Style_Horizontal;
-++ bIsHorizontal = true;
-++ }
-++
-++ kapp->style().drawControl( TQStyle::CE_DockWindowEmptyArea,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++
-++ kapp->style().drawPrimitive( TQStyle::PE_PanelDockWindow,
-++ &qPainter, qRect, pWidget->colorGroup(), nStyle );
-++
-++ if ( nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT )
-++ {
-++ const ToolbarValue *pValue = static_cast< const ToolbarValue * >( &aValue );
-++
-++ TQRect qThumbRect = region2TQRect( pValue->maGripRect );
-++ qThumbRect.moveBy( -qWidgetPos.x(), -qWidgetPos.y() );
-++ if ( bIsHorizontal )
-++ qThumbRect.addCoords( 0, 2, 0, -3 ); // make the thumb a bit nicer
-++ else
-++ qThumbRect.addCoords( 2, 0, -3, 0 ); // make the thumb a bit nicer
-++
-++ if ( kapp->style().inherits( "HighColorStyle" ) ||
-++ kapp->style().inherits( "HighContrastStyle" ) ||
-++ kapp->style().inherits( "KeramikStyle" ) ||
-++ kapp->style().inherits( "KThemeStyle" ) ||
-++ kapp->style().inherits( "ThinKeramikStyle" ) )
-++ {
-++ // Workaround for the workaround in KStyle::drawPrimitive()
-++ KStyle *pStyle = static_cast< KStyle * >( &kapp->style() );
-++ pStyle->drawKStylePrimitive( KStyle::KPE_ToolBarHandle,
-++ &qPainter, pToolBar, qThumbRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else
-++ kapp->style().drawPrimitive( TQStyle::PE_DockWindowHandle,
-++ &qPainter, qThumbRect, pWidget->colorGroup(), nStyle );
-++ }
-++ }
-++ else if ( strcmp( TQTOOLBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ if( (nStyle & TQStyle::Style_MouseOver) )
-++ nStyle &= ~TQStyle::Style_Off;
-++ kapp->style().drawComplexControl( TQStyle::CC_ToolButton,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyle::SC_ToolButton );
-++ }
-++ else if ( strcmp( TQMENUBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ kapp->style().drawControl( TQStyle::CE_MenuBarEmptyArea,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else if ( nPart == PART_MENU_ITEM )
-++ {
-++ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nMenuBarEnabledItem: m_nMenuBarDisabledItem;
-++ TQMenuItem *pMenuItem = static_cast<TQMenuBar*>( pWidget )->findItem( nMenuItem );
-++
-++ if ( nStyle & TQStyle::Style_Selected )
-++ nStyle |= TQStyle::Style_Active | TQStyle::Style_Down | TQStyle::Style_HasFocus;
-++
-++ kapp->style().drawControl( TQStyle::CE_MenuBarItem,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pMenuItem ) );
-++ }
-++ }
-++ else if ( strcmp( TQPOPUPMENU_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nPopupMenuEnabledItem: m_nPopupMenuDisabledItem;
-++ TQMenuItem *pMenuItem = static_cast<TQPopupMenu*>( pWidget )->findItem( nMenuItem );
-++
-++ if ( nStyle & TQStyle::Style_Selected )
-++ nStyle |= TQStyle::Style_Active;
-++
-++ kapp->style().drawControl( TQStyle::CE_PopupMenuItem,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle,
-++ TQStyleOption( pMenuItem, 0, 0 ) );
-++ }
-++ else if ( strcmp( TQPROGRESSBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-++ {
-++ long nProgressWidth = aValue.getNumericVal();
-++ TQProgressBar* pProgress = static_cast<TQProgressBar*>(pWidget);
-++ pProgress->setProgress( nProgressWidth, qRect.width() );
-++
-++ kapp->style().drawControl( TQStyle::CE_ProgressBarGroove,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ kapp->style().drawControl( TQStyle::CE_ProgressBarContents,
-++ &qPainter, pWidget, qRect,
-++ pWidget->colorGroup(), nStyle );
-++ }
-++ else
-++ return FALSE;
-++
-++ // Bitblt it to the screen
-++ X11SalGraphics::CopyScreenArea( dpy,
-++ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-++ drawable, nScreen, nDepth,
-++ gc,
-++ 0, 0, qRect.width(), qRect.height(),
-++ qWidgetPos.x(), qWidgetPos.y() );
-++
-++ // Restore widget's position
-++ pWidget->move( qWidgetPos );
-++
-++ return TRUE;
-++}
-++
-++TQPushButton *WidgetPainter::pushButton( const Rectangle& rControlRegion,
-++ BOOL bDefault )
-++{
-++ if ( !m_pPushButton )
-++ m_pPushButton = new TQPushButton( NULL, "push_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken styles which do not add
-++ // TQStyle::PM_ButtonDefaultIndicator to the size of the default button
-++ // (for example Keramik)
-++ // FIXME Fix Keramik style to be consistant with Qt built-in styles. Aargh!
-++ if ( bDefault )
-++ {
-++ TQSize qContentsSize( 50, 50 );
-++ m_pPushButton->setDefault( false );
-++ TQSize qNormalSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-++ m_pPushButton, qContentsSize );
-++ m_pPushButton->setDefault( true );
-++ TQSize qDefSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-++ m_pPushButton, qContentsSize );
-++
-++ int nIndicatorSize = kapp->style().pixelMetric(
-++ TQStyle::PM_ButtonDefaultIndicator, m_pPushButton );
-++ if ( qNormalSize.width() == qDefSize.width() )
-++ qRect.addCoords( nIndicatorSize, 0, -nIndicatorSize, 0 );
-++ if ( qNormalSize.height() == qDefSize.height() )
-++ qRect.addCoords( 0, nIndicatorSize, 0, -nIndicatorSize );
-++ }
-++
-++ m_pPushButton->move( qRect.topLeft() );
-++ m_pPushButton->resize( qRect.size() );
-++ m_pPushButton->setDefault( bDefault );
-++
-++ return m_pPushButton;
-++}
-++
-++TQRadioButton *WidgetPainter::radioButton( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pRadioButton )
-++ m_pRadioButton = new TQRadioButton( NULL, "radio_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken themes which do not honor the given size.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-++ {
-++ TQRect qOldRect( qRect );
-++
-++ qRect.setWidth( kapp->style().pixelMetric(
-++ TQStyle::PM_ExclusiveIndicatorWidth, m_pRadioButton ) );
-++ qRect.setHeight( kapp->style().pixelMetric(
-++ TQStyle::PM_ExclusiveIndicatorHeight, m_pRadioButton ) );
-++
-++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-++ ( qOldRect.height() - qRect.height() ) / 2 );
-++ }
-++
-++ m_pRadioButton->move( qRect.topLeft() );
-++ m_pRadioButton->resize( qRect.size() );
-++
-++ return m_pRadioButton;
-++}
-++
-++TQCheckBox *WidgetPainter::checkBox( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pCheckBox )
-++ m_pCheckBox = new TQCheckBox( NULL, "check_box" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ // Workaround for broken themes which do not honor the given size.
-++ // Quite ugly, but I do not know about a better solution.
-++ const char *pStyleName = kapp->style().className();
-++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-++ {
-++ TQRect qOldRect( qRect );
-++
-++ qRect.setWidth( kapp->style().pixelMetric(
-++ TQStyle::PM_IndicatorWidth, m_pCheckBox ) );
-++ qRect.setHeight( kapp->style().pixelMetric(
-++ TQStyle::PM_IndicatorHeight, m_pCheckBox ) );
-++
-++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-++ ( qOldRect.height() - qRect.height() ) / 2 );
-++ }
-++
-++ m_pCheckBox->move( qRect.topLeft() );
-++ m_pCheckBox->resize( qRect.size() );
-++
-++ return m_pCheckBox;
-++}
-++
-++TQComboBox *WidgetPainter::comboBox( const Rectangle& rControlRegion,
-++ BOOL bEditable )
-++{
-++ TQComboBox *pComboBox = NULL;
-++ if ( bEditable )
-++ {
-++ if ( !m_pEditableComboBox )
-++ m_pEditableComboBox = new TQComboBox( true, NULL, "combo_box_edit" );
-++ pComboBox = m_pEditableComboBox;
-++ }
-++ else
-++ {
-++ if ( !m_pComboBox )
-++ m_pComboBox = new TQComboBox( false, NULL, "combo_box" );
-++ pComboBox = m_pComboBox;
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ pComboBox->move( qRect.topLeft() );
-++ pComboBox->resize( qRect.size() );
-++
-++ return pComboBox;
-++}
-++
-++TQLineEdit *WidgetPainter::lineEdit( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pLineEdit )
-++ m_pLineEdit = new TQLineEdit( NULL, "line_edit" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pLineEdit->move( qRect.topLeft() );
-++ m_pLineEdit->resize( qRect.size() );
-++
-++ return m_pLineEdit;
-++}
-++
-++TQSpinWidget *WidgetPainter::spinWidget( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pSpinWidget )
-++ {
-++ m_pSpinWidget = new TQSpinWidget( NULL, "spin_widget" );
-++
-++ m_pSpinEdit = new TQLineEdit( NULL, "line_edit_spin" );
-++ m_pSpinWidget->setEditWidget( m_pSpinEdit );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pSpinWidget->move( qRect.topLeft() );
-++ m_pSpinWidget->resize( qRect.size() );
-++ m_pSpinWidget->arrange();
-++
-++ return m_pSpinWidget;
-++}
-++
-++TQTabBar *WidgetPainter::tabBar( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pTabBar )
-++ {
-++ if ( !m_pTabBarParent )
-++ m_pTabBarParent = new TQWidget( NULL, "tab_bar_parent" );
-++
-++ m_pTabBar = new TQTabBar( m_pTabBarParent, "tab_bar" );
-++
-++ m_pTabLeft = new TQTab();
-++ m_pTabMiddle = new TQTab();
-++ m_pTabRight = new TQTab();
-++ m_pTabAlone = new TQTab();
-++
-++ m_pTabBar->addTab( m_pTabLeft );
-++ m_pTabBar->addTab( m_pTabMiddle );
-++ m_pTabBar->addTab( m_pTabRight );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pTabBar->move( qRect.topLeft() );
-++ m_pTabBar->resize( qRect.size() );
-++
-++ m_pTabBar->setShape( TQTabBar::RoundedAbove );
-++
-++ return m_pTabBar;
-++}
-++
-++TQTabWidget *WidgetPainter::tabWidget( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pTabWidget )
-++ m_pTabWidget = new TQTabWidget( NULL, "tab_widget" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++ --qRect.rTop();
-++
-++ m_pTabWidget->move( qRect.topLeft() );
-++ m_pTabWidget->resize( qRect.size() );
-++
-++ return m_pTabWidget;
-++}
-++
-++TQListView *WidgetPainter::listView( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pListView )
-++ m_pListView = new TQListView( NULL, "list_view" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pListView->move( qRect.topLeft() );
-++ m_pListView->resize( qRect.size() );
-++
-++ return m_pListView;
-++}
-++
-++TQScrollBar *WidgetPainter::scrollBar( const Rectangle& rControlRegion,
-++ BOOL bHorizontal, const ImplControlValue& aValue )
-++{
-++ if ( !m_pScrollBar )
-++ {
-++ m_pScrollBar = new TQScrollBar( NULL, "scroll_bar" );
-++ m_pScrollBar->setTracking( false );
-++ m_pScrollBar->setLineStep( 1 );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pScrollBar->move( qRect.topLeft() );
-++ m_pScrollBar->resize( qRect.size() );
-++ m_pScrollBar->setOrientation( bHorizontal? Qt::Horizontal: Qt::Vertical );
-++
-++ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-++ if ( pValue )
-++ {
-++ m_pScrollBar->setMinValue( pValue->mnMin );
-++ m_pScrollBar->setMaxValue( pValue->mnMax - pValue->mnVisibleSize );
-++ m_pScrollBar->setValue( pValue->mnCur );
-++ m_pScrollBar->setPageStep( pValue->mnVisibleSize );
-++ }
-++
-++ return m_pScrollBar;
-++}
-++
-++TQToolBar *WidgetPainter::toolBar( const Rectangle& rControlRegion, BOOL bHorizontal )
-++{
-++ if ( !m_pMainWindow )
-++ m_pMainWindow = new TQMainWindow( NULL, "main_window" );
-++
-++ TQToolBar *pToolBar;
-++ if ( bHorizontal )
-++ {
-++ if ( !m_pToolBarHoriz )
-++ {
-++ m_pToolBarHoriz = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-++ m_pMainWindow->moveDockWindow( m_pToolBarHoriz, Qt::DockTop );
-++ }
-++ pToolBar = m_pToolBarHoriz;
-++ }
-++ else
-++ {
-++ if ( !m_pToolBarVert )
-++ {
-++ m_pToolBarVert = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-++ m_pMainWindow->moveDockWindow( m_pToolBarVert, Qt::DockLeft );
-++ }
-++ pToolBar = m_pToolBarVert;
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ pToolBar->move( qRect.topLeft() );
-++ pToolBar->resize( qRect.size() );
-++
-++ return pToolBar;
-++}
-++
-++TQToolButton *WidgetPainter::toolButton( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pToolButton )
-++ m_pToolButton = new TQToolButton( NULL, "tool_button" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pToolButton->move( qRect.topLeft() );
-++ m_pToolButton->resize( qRect.size() );
-++
-++ return m_pToolButton;
-++}
-++
-++TQMenuBar *WidgetPainter::menuBar( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pMenuBar )
-++ {
-++ m_pMenuBar = new TQMenuBar( NULL, "menu_bar" );
-++
-++ m_nMenuBarEnabledItem = m_pMenuBar->insertItem( "" );
-++ m_nMenuBarDisabledItem = m_pMenuBar->insertItem( "" );
-++
-++ m_pMenuBar->setItemEnabled( m_nMenuBarEnabledItem, true );
-++ m_pMenuBar->setItemEnabled( m_nMenuBarDisabledItem, false );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pMenuBar->move( qRect.topLeft() );
-++ m_pMenuBar->resize( qRect.size() );
-++
-++ return m_pMenuBar;
-++}
-++
-++TQPopupMenu *WidgetPainter::popupMenu( const Rectangle& rControlRegion)
-++{
-++ if ( !m_pPopupMenu )
-++ {
-++ m_pPopupMenu = new TQPopupMenu( NULL, "popup_menu" );
-++
-++ m_nPopupMenuEnabledItem = m_pPopupMenu->insertItem( "" );
-++ m_nPopupMenuDisabledItem = m_pPopupMenu->insertItem( "" );
-++
-++ m_pPopupMenu->setItemEnabled( m_nPopupMenuEnabledItem, true );
-++ m_pPopupMenu->setItemEnabled( m_nPopupMenuDisabledItem, false );
-++ }
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pPopupMenu->move( qRect.topLeft() );
-++ m_pPopupMenu->resize( qRect.size() );
-++
-++ return m_pPopupMenu;
-++}
-++
-++TQProgressBar *WidgetPainter::progressBar( const Rectangle& rControlRegion )
-++{
-++ if ( !m_pProgressBar )
-++ m_pProgressBar = new TQProgressBar( NULL, "progress_bar" );
-++
-++ TQRect qRect = region2TQRect( rControlRegion );
-++
-++ m_pProgressBar->move( qRect.topLeft() );
-++ m_pProgressBar->resize( qRect.size() );
-++
-++ return m_pProgressBar;
-++}
-++
-++TQStyle::SFlags WidgetPainter::vclStateValue2SFlags( ControlState nState,
-++ const ImplControlValue& aValue )
-++{
-++ TQStyle::SFlags nStyle =
-++ ( (nState & CTRL_STATE_DEFAULT)? TQStyle::Style_ButtonDefault: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_ENABLED)? TQStyle::Style_Enabled: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_FOCUSED)? TQStyle::Style_HasFocus: TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_PRESSED)? TQStyle::Style_Down: TQStyle::Style_Raised ) |
-++ ( (nState & CTRL_STATE_SELECTED)? TQStyle::Style_Selected : TQStyle::Style_Default ) |
-++ ( (nState & CTRL_STATE_ROLLOVER)? TQStyle::Style_MouseOver: TQStyle::Style_Default );
-++ //TODO ( (nState & CTRL_STATE_HIDDEN)? TQStyle::Style_: TQStyle::Style_Default ) |
-++
-++ switch ( aValue.getTristateVal() )
-++ {
-++ case BUTTONVALUE_ON: nStyle |= TQStyle::Style_On; break;
-++ case BUTTONVALUE_OFF: nStyle |= TQStyle::Style_Off; break;
-++ case BUTTONVALUE_MIXED: nStyle |= TQStyle::Style_NoChange; break;
-++ default: break;
-++ }
-++
-++ return nStyle;
-++}
-++
-++TQRect WidgetPainter::region2TQRect( const Rectangle& rControlRegion )
-++{
-++ return TQRect( TQPoint( rControlRegion.Left(), rControlRegion.Top() ),
-++ TQPoint( rControlRegion.Right(), rControlRegion.Bottom() ) );
-++}
-++
-++/** Instance of WidgetPainter.
-++
-++ It is used to paint the widgets requested by NWF.
-++*/
-++static WidgetPainter *pWidgetPainter;
-++
-++class TDESalGraphics : public X11SalGraphics
-++{
-++ public:
-++ TDESalGraphics() {}
-++ virtual ~TDESalGraphics() {}
-++ virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
-++ virtual BOOL hitTestNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, const Point& aPos,
-++ BOOL& rIsInside );
-++ virtual BOOL drawNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption );
-++ virtual BOOL drawNativeControlText( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption );
-++ virtual BOOL getNativeControlRegion( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& aCaption,
-++ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion );
-++};
-++
-++/** What widgets can be drawn the native way.
-++
-++ @param nType
-++ Type of the widget.
-++
-++ @param nPart
-++ Specification of the widget's part if it consists of more than one.
-++
-++ @return TRUE if the platform supports native drawing of the widget nType
-++ defined by nPart.
-++*/
-++BOOL TDESalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart )
-++{
-++ return
-++ ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_WINDOW || nPart == HAS_BACKGROUND_TEXTURE ) ) ||
-++ ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-++ // no CTRL_SPINBUTTONS for TDE
-++ ( (nType == CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ ( (nType == CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) ) ||
-++ // no CTRL_TAB_BODY for TDE
-++ ( (nType == CTRL_SCROLLBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) ) ||
-++ ( (nType == CTRL_SCROLLBAR) && (nPart == HAS_THREE_BUTTONS) ) || // TODO small optimization is possible here: return this only if the style really has 3 buttons
-++ // CTRL_GROUPBOX not supported
-++ // CTRL_FIXEDLINE not supported
-++ // CTRL_FIXEDBORDER not supported
-++ ( (nType == CTRL_TOOLBAR) && (nPart == PART_ENTIRE_CONTROL ||
-++ nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT ||
-++ nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT ||
-++ nPart == PART_BUTTON) ) ||
-++ ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-++ ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-++ ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-++ ;
-++}
-++
-++
-++/** Test whether the position is in the native widget.
-++
-++ If the return value is TRUE, bIsInside contains information whether
-++ aPos was or was not inside the native widget specified by the
-++ nType/nPart combination.
-++*/
-++BOOL TDESalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, const Point& rPos,
-++ BOOL& rIsInside )
-++{
-++ if ( nType == CTRL_SCROLLBAR )
-++ {
-++ // make position relative to rControlRegion
-++ Point aPos = rPos - rControlRegion.TopLeft();
-++ rIsInside = FALSE;
-++
-++ BOOL bHorizontal = ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT );
-++
-++ TQScrollBar *pScrollBar = pWidgetPainter->scrollBar( rControlRegion,
-++ bHorizontal, ImplControlValue() );
-++ TQRect qRectSubLine = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubLine );
-++ TQRect qRectAddLine = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarAddLine );
-++
-++ // There are 2 buttons on the right/bottom side of the scrollbar
-++ BOOL bTwoSubButtons = FALSE;
-++
-++ // It is a Platinum style scroll bar
-++ BOOL bPlatinumStyle = FALSE;
-++
-++ // Workaround for Platinum and 3 button style scroll bars.
-++ // It makes the right/down button bigger.
-++ if ( bHorizontal )
-++ {
-++ qRectAddLine.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar,
-++ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-++ if ( qRectAddLine.width() > qRectSubLine.width() )
-++ bTwoSubButtons = TRUE;
-++ if ( qRectSubLine.left() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).left() )
-++ bPlatinumStyle = TRUE;
-++ }
-++ else
-++ {
-++ qRectAddLine.setTop( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pScrollBar,
-++ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-++ if ( qRectAddLine.height() > qRectSubLine.height() )
-++ bTwoSubButtons = TRUE;
-++ if ( qRectSubLine.top() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).top() )
-++ bPlatinumStyle = TRUE;
-++ }
-++
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_LEFT:
-++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-++ rIsInside = TRUE;
-++ else if ( bTwoSubButtons )
-++ {
-++ qRectAddLine.setWidth( qRectAddLine.width() / 2 );
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ }
-++ break;
-++
-++ case PART_BUTTON_UP:
-++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-++ rIsInside = TRUE;
-++ else if ( bTwoSubButtons )
-++ {
-++ qRectAddLine.setHeight( qRectAddLine.height() / 2 );
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ }
-++ break;
-++
-++ case PART_BUTTON_RIGHT:
-++ if ( bTwoSubButtons )
-++ qRectAddLine.setLeft( qRectAddLine.left() + qRectAddLine.width() / 2 );
-++
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ break;
-++
-++ case PART_BUTTON_DOWN:
-++ if ( bTwoSubButtons )
-++ qRectAddLine.setTop( qRectAddLine.top() + qRectAddLine.height() / 2 );
-++
-++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-++ break;
-++
-++ // cases PART_TRACK_HORZ_AREA and PART_TRACK_VERT_AREA
-++ default:
-++ return FALSE;
-++ }
-++
-++ return TRUE;
-++ }
-++
-++ return FALSE;
-++}
-++
-++
-++/** Draw the requested control described by nPart/nState.
-++
-++ @param rControlRegion
-++ The bounding region of the complete control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string).
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::drawNativeControl( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue& aValue,
-++ const OUString& )
-++{
-++ BOOL bReturn = FALSE;
-++
-++ Display *dpy = GetXDisplay();
-++ XLIB_Window drawable = GetDrawable();
-++ GC gc = SelectPen(); //SelectFont(); // GC with current clipping region set
-++
-++ if ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->pushButton( rControlRegion, (nState & CTRL_STATE_DEFAULT) ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->radioButton( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->checkBox( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->comboBox( rControlRegion, TRUE ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->lineEdit( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->comboBox( rControlRegion, FALSE ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_WINDOW) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->listView( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->spinWidget( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType==CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->tabBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType==CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->tabWidget( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_SCROLLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->scrollBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ, aValue ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT || nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->toolBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_THUMB_VERT ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_BUTTON) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->toolButton( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->menuBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-++ }
-++ else if ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->popupMenu( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++ else if ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-++ {
-++ bReturn = pWidgetPainter->drawStyledWidget(
-++ pWidgetPainter->progressBar( rControlRegion ),
-++ nState, aValue,
-++ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-++ }
-++
-++ return bReturn;
-++}
-++
-++
-++/** Draw text on the widget.
-++
-++ OPTIONAL. Draws the requested text for the control described by nPart/nState.
-++ Used if text is not drawn by DrawNativeControl().
-++
-++ @param rControlRegion
-++ The bounding region of the complete control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string)
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::drawNativeControlText( ControlType, ControlPart,
-++ const Rectangle&, ControlState,
-++ const ImplControlValue&,
-++ const OUString& )
-++{
-++ return FALSE;
-++}
-++
-++/** Check if the bounding regions match.
-++
-++ If the return value is TRUE, rNativeBoundingRegion
-++ contains the true bounding region covered by the control
-++ including any adornment, while rNativeContentRegion contains the area
-++ within the control that can be safely drawn into without drawing over
-++ the borders of the control.
-++
-++ @param rControlRegion
-++ The bounding region of the control in VCL frame coordinates.
-++
-++ @param aValue
-++ An optional value (tristate/numerical/string)
-++
-++ @param aCaption
-++ A caption or title string (like button text etc.)
-++*/
-++BOOL TDESalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart,
-++ const Rectangle& rControlRegion, ControlState nState,
-++ const ImplControlValue&,
-++ const OUString&,
-++ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion )
-++{
-++ BOOL bReturn = FALSE;
-++ TQRect qBoundingRect = WidgetPainter::region2TQRect( rControlRegion );
-++ TQRect qRect;
-++
-++ TQWidget *pWidget = NULL;
-++ switch ( nType )
-++ {
-++ // Metrics of the push button
-++ case CTRL_PUSHBUTTON:
-++ pWidget = pWidgetPainter->pushButton( rControlRegion, ( nState & CTRL_STATE_DEFAULT ) );
-++
-++ switch ( nPart )
-++ {
-++ case PART_ENTIRE_CONTROL:
-++ qRect = qBoundingRect;
-++
-++ if ( nState & CTRL_STATE_DEFAULT )
-++ {
-++ int nIndicatorSize = kapp->style().pixelMetric(
-++ TQStyle::PM_ButtonDefaultIndicator, pWidget );
-++ qBoundingRect.addCoords( -nIndicatorSize, -nIndicatorSize,
-++ nIndicatorSize, nIndicatorSize );
-++ bReturn = TRUE;
-++ }
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the radio button
-++ case CTRL_RADIOBUTTON:
-++ pWidget = pWidgetPainter->radioButton( rControlRegion );
-++
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorWidth, pWidget ) );
-++ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorHeight, pWidget ) );
-++
-++ bReturn = TRUE;
-++ }
-++ break;
-++
-++ // Metrics of the check box
-++ case CTRL_CHECKBOX:
-++ pWidget = pWidgetPainter->checkBox( rControlRegion );
-++
-++ if ( nPart == PART_ENTIRE_CONTROL )
-++ {
-++ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_IndicatorWidth, pWidget ) );
-++ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_IndicatorHeight, pWidget ) );
-++
-++ bReturn = TRUE;
-++ }
-++ break;
-++
-++ // Metrics of the combo box
-++ case CTRL_COMBOBOX:
-++ case CTRL_LISTBOX:
-++ pWidget = pWidgetPainter->comboBox( rControlRegion, ( nType == CTRL_COMBOBOX ) );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxArrow );
-++ qRect.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget,
-++ TQStyle::SC_ComboBoxEditField ).right() + 1 );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++
-++ case PART_SUB_EDIT:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxEditField );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the spin box
-++ case CTRL_SPINBOX:
-++ pWidget = pWidgetPainter->spinWidget( rControlRegion );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_UP:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetUp );
-++ bReturn = TRUE;
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ break;
-++
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetDown );
-++ bReturn = TRUE;
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ break;
-++
-++ case PART_SUB_EDIT:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetEditField );
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++
-++ // Metrics of the scroll bar
-++ case CTRL_SCROLLBAR:
-++ pWidget = pWidgetPainter->scrollBar( rControlRegion,
-++ ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT ),
-++ ImplControlValue() );
-++ switch ( nPart )
-++ {
-++ case PART_BUTTON_LEFT:
-++ case PART_BUTTON_UP:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarSubLine );
-++
-++ // Workaround for Platinum style scroll bars. It makes the
-++ // left/up button invisible.
-++ if ( nPart == PART_BUTTON_LEFT )
-++ {
-++ if ( qRect.left() > kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarSubPage ).left() )
-++ {
-++ qRect.setLeft( 0 );
-++ qRect.setRight( 0 );
-++ }
-++ }
-++ else
-++ {
-++ if ( qRect.top() > kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarSubPage ).top() )
-++ {
-++ qRect.setTop( 0 );
-++ qRect.setBottom( 0 );
-++ }
-++ }
-++
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++
-++ bReturn = TRUE;
-++ break;
-++
-++ case PART_BUTTON_RIGHT:
-++ case PART_BUTTON_DOWN:
-++ qRect = kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarAddLine );
-++
-++ // Workaround for Platinum and 3 button style scroll bars.
-++ // It makes the right/down button bigger.
-++ if ( nPart == PART_BUTTON_RIGHT )
-++ qRect.setLeft( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-++ else
-++ qRect.setTop( kapp->style().querySubControlMetrics(
-++ TQStyle::CC_ScrollBar, pWidget,
-++ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-++
-++ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-++
-++ bReturn = TRUE;
-++ break;
-++ }
-++ break;
-++ }
-++
-++ // Fill rNativeBoundingRegion and rNativeContentRegion
-++ if ( bReturn )
-++ {
-++ // Bounding region
-++ Point aBPoint( qBoundingRect.x(), qBoundingRect.y() );
-++ Size aBSize( qBoundingRect.width(), qBoundingRect.height() );
-++ rNativeBoundingRegion = Rectangle( aBPoint, aBSize );
-++
-++ // Region of the content
-++ Point aPoint( qRect.x(), qRect.y() );
-++ Size aSize( qRect.width(), qRect.height() );
-++ rNativeContentRegion = Rectangle( aPoint, aSize );
-++ }
-++
-++ return bReturn;
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalFrame implementation
-++// -----------------------------------------------------------------------
-++
-++TDESalFrame::TDESalFrame( SalFrame* pParent, ULONG nStyle ) :
-++ X11SalFrame( pParent, nStyle )
-++{
-++}
-++
-++void TDESalFrame::Show( BOOL bVisible, BOOL bNoActivate )
-++{
-++ if ( !GetParent() && ! (GetStyle() & SAL_FRAME_STYLE_INTRO) )
-++ {
-++ TDEXLib* pXLib = static_cast<TDEXLib*>(GetDisplay()->GetXLib());
-++ pXLib->doStartup();
-++ }
-++ X11SalFrame::Show( bVisible, bNoActivate );
-++}
-++
-++/** Helper function to convert colors.
-++*/
-++static Color toColor( const TQColor &rColor )
-++{
-++ return Color( rColor.red(), rColor.green(), rColor.blue() );
-++}
-++
-++/** Helper function to read untranslated text entry from KConfig configuration repository.
-++*/
-++static OUString readEntryUntranslated( KConfig *pConfig, const char *pKey )
-++{
-++ return OUString::createFromAscii( pConfig->readEntryUntranslated( pKey ).ascii() );
-++}
-++
-++/** Helper function to read color from KConfig configuration repository.
-++*/
-++static Color readColor( KConfig *pConfig, const char *pKey )
-++{
-++ return toColor( pConfig->readColorEntry( pKey ) );
-++}
-++
-++/** Helper function to add information to Font from TQFont.
-++
-++ Mostly grabbed from the Gtk+ vclplug (salnativewidgets-gtk.cxx).
-++*/
-++static Font toFont( const TQFont &rTQFont, const ::com::sun::star::lang::Locale& rLocale )
-++{
-++ psp::FastPrintFontInfo aInfo;
-++ TQFontInfo qFontInfo( rTQFont );
-++
-++ // set family name
-++ aInfo.m_aFamilyName = String( rTQFont.family().utf8(), RTL_TEXTENCODING_UTF8 );
-++
-++ // set italic
-++ aInfo.m_eItalic = ( qFontInfo.italic()? psp::italic::Italic: psp::italic::Upright );
-++
-++ // set weight
-++ int nWeight = qFontInfo.weight();
-++ if ( nWeight <= TQFont::Light )
-++ aInfo.m_eWeight = psp::weight::Light;
-++ else if ( nWeight <= TQFont::Normal )
-++ aInfo.m_eWeight = psp::weight::Normal;
-++ else if ( nWeight <= TQFont::DemiBold )
-++ aInfo.m_eWeight = psp::weight::SemiBold;
-++ else if ( nWeight <= TQFont::Bold )
-++ aInfo.m_eWeight = psp::weight::Bold;
-++ else
-++ aInfo.m_eWeight = psp::weight::UltraBold;
-++
-++ // set width
-++ int nStretch = rTQFont.stretch();
-++ if ( nStretch <= TQFont::UltraCondensed )
-++ aInfo.m_eWidth = psp::width::UltraCondensed;
-++ else if ( nStretch <= TQFont::ExtraCondensed )
-++ aInfo.m_eWidth = psp::width::ExtraCondensed;
-++ else if ( nStretch <= TQFont::Condensed )
-++ aInfo.m_eWidth = psp::width::Condensed;
-++ else if ( nStretch <= TQFont::SemiCondensed )
-++ aInfo.m_eWidth = psp::width::SemiCondensed;
-++ else if ( nStretch <= TQFont::Unstretched )
-++ aInfo.m_eWidth = psp::width::Normal;
-++ else if ( nStretch <= TQFont::SemiExpanded )
-++ aInfo.m_eWidth = psp::width::SemiExpanded;
-++ else if ( nStretch <= TQFont::Expanded )
-++ aInfo.m_eWidth = psp::width::Expanded;
-++ else if ( nStretch <= TQFont::ExtraExpanded )
-++ aInfo.m_eWidth = psp::width::ExtraExpanded;
-++ else
-++ aInfo.m_eWidth = psp::width::UltraExpanded;
-++
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "font name BEFORE system match: \"%s\"\n", OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-++#endif
-++
-++ // match font to e.g. resolve "Sans"
-++ psp::PrintFontManager::get().matchFont( aInfo, rLocale );
-++
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "font match %s, name AFTER: \"%s\"\n",
-++ aInfo.m_nID != 0 ? "succeeded" : "failed",
-++ OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-++#endif
-++
-++ // font height
-++ int nPointHeight = qFontInfo.pointSize();
-++ if ( nPointHeight <= 0 )
-++ nPointHeight = rTQFont.pointSize();
-++
-++ // Create the font
-++ Font aFont( aInfo.m_aFamilyName, Size( 0, nPointHeight ) );
-++ if( aInfo.m_eWeight != psp::weight::Unknown )
-++ aFont.SetWeight( PspGraphics::ToFontWeight( aInfo.m_eWeight ) );
-++ if( aInfo.m_eWidth != psp::width::Unknown )
-++ aFont.SetWidthType( PspGraphics::ToFontWidth( aInfo.m_eWidth ) );
-++ if( aInfo.m_eItalic != psp::italic::Unknown )
-++ aFont.SetItalic( PspGraphics::ToFontItalic( aInfo.m_eItalic ) );
-++ if( aInfo.m_ePitch != psp::pitch::Unknown )
-++ aFont.SetPitch( PspGraphics::ToFontPitch( aInfo.m_ePitch ) );
-++
-++ return aFont;
-++}
-++
-++/** Implementation of TDE integration's main method.
-++*/
-++void TDESalFrame::UpdateSettings( AllSettings& rSettings )
-++{
-++ StyleSettings aStyleSettings( rSettings.GetStyleSettings() );
-++ bool bSetTitleFont = false;
-++
-++ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_LARGE );
-++
-++ // WM settings
-++ KConfig *pConfig = KGlobal::config();
-++ if ( pConfig )
-++ {
-++ pConfig->setGroup( "WM" );
-++ const char *pKey;
-++
-++ pKey = "activeBackground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "activeBlend";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveColor2( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveBackground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveBlend";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveColor2( readColor( pConfig, pKey ) );
-++
-++ pKey = "inactiveForeground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetDeactiveTextColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "activeForeground";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetActiveTextColor( readColor( pConfig, pKey ) );
-++
-++ pKey = "titleFont";
-++ if ( pConfig->hasKey( pKey ) )
-++ {
-++ Font aFont = toFont( pConfig->readFontEntry( pKey ), rSettings.GetUILocale() );
-++ aStyleSettings.SetTitleFont( aFont );
-++ bSetTitleFont = true;
-++ }
-++
-++ pConfig->setGroup( "Icons" );
-++
-++ pKey = "Theme";
-++ if ( pConfig->hasKey( pKey ) )
-++ aStyleSettings.SetPreferredSymbolsStyleName( readEntryUntranslated( pConfig, pKey ) );
-++ }
-++
-++ // General settings
-++ TQColorGroup qColorGroup = kapp->palette().active();
-++
-++ Color aFore = toColor( qColorGroup.foreground() );
-++ Color aBack = toColor( qColorGroup.background() );
-++ Color aText = toColor( qColorGroup.text() );
-++ Color aBase = toColor( qColorGroup.base() );
-++
-++ // Foreground
-++ aStyleSettings.SetRadioCheckTextColor( aFore );
-++ aStyleSettings.SetLabelTextColor( aFore );
-++ aStyleSettings.SetInfoTextColor( aFore );
-++ aStyleSettings.SetDialogTextColor( aFore );
-++ aStyleSettings.SetGroupTextColor( aFore );
-++
-++ // Text
-++ aStyleSettings.SetFieldTextColor( aText );
-++ aStyleSettings.SetFieldRolloverTextColor( aText );
-++ aStyleSettings.SetWindowTextColor( aText );
-++ aStyleSettings.SetHelpTextColor( aText );
-++
-++ // Base
-++ aStyleSettings.SetFieldColor( aBase );
-++ aStyleSettings.SetHelpColor( aBase );
-++ aStyleSettings.SetWindowColor( aBase );
-++ aStyleSettings.SetActiveTabColor( aBase );
-++
-++ // Buttons
-++ aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
-++ aStyleSettings.SetButtonRolloverTextColor( toColor( qColorGroup.buttonText() ) );
-++
-++ // Disable color
-++ aStyleSettings.SetDisableColor( toColor( qColorGroup.mid() ) );
-++
-++ // Workspace
-++ aStyleSettings.SetWorkspaceColor( toColor( qColorGroup.mid() ) );
-++
-++ // Background
-++ aStyleSettings.Set3DColors( aBack );
-++ aStyleSettings.SetFaceColor( aBack );
-++ aStyleSettings.SetInactiveTabColor( aBack );
-++ aStyleSettings.SetDialogColor( aBack );
-++ if( aBack == COL_LIGHTGRAY )
-++ aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );
-++ else
-++ {
-++ Color aColor2 = aStyleSettings.GetLightColor();
-++ aStyleSettings.
-++ SetCheckedColor( Color( (BYTE)(((USHORT)aBack.GetRed()+(USHORT)aColor2.GetRed())/2),
-++ (BYTE)(((USHORT)aBack.GetGreen()+(USHORT)aColor2.GetGreen())/2),
-++ (BYTE)(((USHORT)aBack.GetBlue()+(USHORT)aColor2.GetBlue())/2)
-++ ) );
-++ }
-++
-++ // Selection
-++ aStyleSettings.SetHighlightColor( toColor( qColorGroup.highlight() ) );
-++ aStyleSettings.SetHighlightTextColor( toColor( qColorGroup.highlightedText() ) );
-++
-++ // Font
-++ Font aFont = toFont( kapp->font(), rSettings.GetUILocale() );
-++
-++ aStyleSettings.SetAppFont( aFont );
-++ aStyleSettings.SetHelpFont( aFont );
-++ aStyleSettings.SetMenuFont( aFont ); // will be changed according to pMenuBar
-++ aStyleSettings.SetToolFont( aFont ); // will be changed according to pToolBar
-++ aStyleSettings.SetLabelFont( aFont );
-++ aStyleSettings.SetInfoFont( aFont );
-++ aStyleSettings.SetRadioCheckFont( aFont );
-++ aStyleSettings.SetPushButtonFont( aFont );
-++ aStyleSettings.SetFieldFont( aFont );
-++ aStyleSettings.SetIconFont( aFont );
-++ aStyleSettings.SetGroupFont( aFont );
-++
-++ aFont.SetWeight( WEIGHT_BOLD );
-++ if( !bSetTitleFont )
-++ aStyleSettings.SetTitleFont( aFont );
-++ aStyleSettings.SetFloatTitleFont( aFont );
-++
-++ int flash_time = TQApplication::cursorFlashTime();
-++ aStyleSettings.SetCursorBlinkTime( flash_time != 0 ? flash_time/2 : STYLE_CURSOR_NOBLINKTIME );
-++
-++ KMainWindow qMainWindow;
-++ qMainWindow.createGUI( "/dev/null" ); // hack
-++
-++ // Menu
-++ aStyleSettings.SetSkipDisabledInMenus( TRUE );
-++ KMenuBar *pMenuBar = qMainWindow.menuBar();
-++ if ( pMenuBar )
-++ {
-++ // Color
-++ TQColorGroup qMenuCG = pMenuBar->colorGroup();
-++
-++ // Menu text and background color, theme specific
-++ Color aMenuFore = toColor( qMenuCG.foreground() );
-++ Color aMenuBack = toColor( qMenuCG.background() );
-++ if ( kapp->style().inherits( "LightStyleV2" ) ||
-++ kapp->style().inherits( "LightStyleV3" ) ||
-++ ( kapp->style().inherits( "QMotifStyle" ) && !kapp->style().inherits( "QSGIStyle" ) ) ||
-++ kapp->style().inherits( "QWindowsStyle" ) )
-++ {
-++ aMenuFore = toColor( qMenuCG.buttonText() );
-++ aMenuBack = toColor( qMenuCG.button() );
-++ }
-++
-++ aStyleSettings.SetMenuTextColor( aMenuFore );
-++ aStyleSettings.SetMenuBarTextColor( aMenuFore );
-++ aStyleSettings.SetMenuColor( aMenuBack );
-++ aStyleSettings.SetMenuBarColor( aMenuBack );
-++
-++ aStyleSettings.SetMenuHighlightColor( toColor ( qMenuCG.highlight() ) );
-++
-++ // Menu items higlight text color, theme specific
-++ if ( kapp->style().inherits( "HighContrastStyle" ) ||
-++ kapp->style().inherits( "KeramikStyle" ) ||
-++ kapp->style().inherits( "QWindowsStyle" ) ||
-++ kapp->style().inherits( "ThinKeramikStyle" ) ||
-++ kapp->style().inherits( "PlastikStyle" ) )
-++ {
-++ aStyleSettings.SetMenuHighlightTextColor( toColor ( qMenuCG.highlightedText() ) );
-++ }
-++ else
-++ aStyleSettings.SetMenuHighlightTextColor( aMenuFore );
-++
-++ // set special menubar higlight text color
-++ if ( kapp->style().inherits( "HighContrastStyle" ) )
-++ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = toColor( qMenuCG.highlightedText() );
-++ else
-++ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = aMenuFore;
-++
-++ // Font
-++ aFont = toFont( pMenuBar->font(), rSettings.GetUILocale() );
-++ aStyleSettings.SetMenuFont( aFont );
-++ }
-++
-++ // Tool bar
-++ KToolBar *pToolBar = qMainWindow.toolBar();
-++ if ( pToolBar )
-++ {
-++ aFont = toFont( pToolBar->font(), rSettings.GetUILocale() );
-++ aStyleSettings.SetToolFont( aFont );
-++ }
-++
-++ // Scroll bar size
-++ aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( TQStyle::PM_ScrollBarExtent ) );
-++
-++ rSettings.SetStyleSettings( aStyleSettings );
-++}
-++
-++SalGraphics* TDESalFrame::GetGraphics()
-++{
-++ if( GetWindow() )
-++ {
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( ! m_aGraphics[i].bInUse )
-++ {
-++ m_aGraphics[i].bInUse = true;
-++ if( ! m_aGraphics[i].pGraphics )
-++ {
-++ m_aGraphics[i].pGraphics = new TDESalGraphics();
-++ m_aGraphics[i].pGraphics->Init( this, GetWindow(), GetScreenNumber() );
-++ }
-++ return m_aGraphics[i].pGraphics;
-++ }
-++ }
-++ }
-++
-++ return NULL;
-++}
-++
-++void TDESalFrame::ReleaseGraphics( SalGraphics *pGraphics )
-++{
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( m_aGraphics[i].pGraphics == pGraphics )
-++ {
-++ m_aGraphics[i].bInUse = false;
-++ break;
-++ }
-++ }
-++}
-++
-++void TDESalFrame::updateGraphics( bool bClear )
-++{
-++ Drawable aDrawable = bClear ? None : GetWindow();
-++ for( int i = 0; i < nMaxGraphics; i++ )
-++ {
-++ if( m_aGraphics[i].bInUse )
-++ m_aGraphics[i].pGraphics->SetDrawable( aDrawable, GetScreenNumber() );
-++ }
-++}
-++
-++TDESalFrame::~TDESalFrame()
-++{
-++}
-++
-++TDESalFrame::GraphicsHolder::~GraphicsHolder()
-++{
-++ delete pGraphics;
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalInstance implementation
-++// -----------------------------------------------------------------------
-++
-++SalFrame *
-++TDESalInstance::CreateFrame( SalFrame *pParent, ULONG nStyle )
-++{
-++ return new TDESalFrame( pParent, nStyle );
-++}
-++
-++// -----------------------------------------------------------------------
-++// TDESalData pieces
-++// -----------------------------------------------------------------------
-++
-++// Create the widget painter so we have some control over
-++// the destruction sequence, so Qt doesn't die in action.
-++
-++void TDEData::initNWF()
-++{
-++ ImplSVData *pSVData = ImplGetSVData();
-++ // draw toolbars on separate lines
-++ pSVData->maNWFData.mbDockingAreaSeparateTB = true;
-++
-++ pWidgetPainter = new WidgetPainter();
-++}
-++
-++void TDEData::deInitNWF()
-++{
-++ delete pWidgetPainter;
-++ pWidgetPainter = NULL;
-++
-++ // We have to destroy the style early
-++ kapp->setStyle( NULL );
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN vcl/unx/tde/tdedata.cxx vcl/unx/tde/tdedata.cxx
-+--- vcl/unx/tde/tdedata.cxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/tde/tdedata.cxx 2011-08-18 20:14:26.186519004 -0500
-+@@ -0,0 +1,274 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++// MARKER(update_precomp.py): autogen include statement, do not remove
-++#include "precompiled_vcl.hxx"
-++
-++#define _SV_SALDATA_CXX
-++#include <shell/tde_headers.h>
-++
-++#include <unistd.h>
-++#include <fcntl.h>
-++
-++#include <stdio.h>
-++#include <string.h>
-++#include <stdlib.h>
-++#include <limits.h>
-++#include <errno.h>
-++#include <poll.h>
-++#ifdef FREEBSD
-++#include <sys/types.h>
-++#include <sys/time.h>
-++#include <unistd.h>
-++#endif
-++#include <plugins/tde/tdedata.hxx>
-++#include <osl/thread.h>
-++#include <osl/process.h>
-++#include <osl/module.h>
-++#include <osl/mutex.hxx>
-++
-++#include <tools/debug.hxx>
-++#include "i18n_im.hxx"
-++#include "i18n_xkb.hxx"
-++
-++/* #i59042# override KApplications method for session management
-++ * since it will interfere badly with our own.
-++ */
-++class VCLTDEApplication : public KApplication
-++{
-++ public:
-++ VCLTDEApplication() : KApplication() {}
-++
-++ virtual void commitData(QSessionManager &sm);
-++};
-++
-++void VCLTDEApplication::commitData(QSessionManager&)
-++{
-++}
-++
-++/***************************************************************************
-++ * class SalTDEDisplay *
-++ ***************************************************************************/
-++
-++SalTDEDisplay::SalTDEDisplay( Display* pDisp )
-++ : SalX11Display( pDisp )
-++{
-++}
-++
-++SalTDEDisplay::~SalTDEDisplay()
-++{
-++ // in case never a frame opened
-++ static_cast<TDEXLib*>(GetXLib())->doStartup();
-++ // clean up own members
-++ doDestruct();
-++ // prevent SalDisplay from closing KApplication's display
-++ pDisp_ = NULL;
-++}
-++
-++/***************************************************************************
-++ * class TDEXLib *
-++ ***************************************************************************/
-++
-++TDEXLib::~TDEXLib()
-++{
-++ // #158056# on 64 bit linux using libXRandr.so.2 will crash in
-++ // XCloseDisplay when freeing extension data
-++ // no known work around, therefor currently leak. Hopefully
-++ // this does not make problems since we're shutting down anyway
-++ // should we ever get a real tde plugin that uses the TDE event loop
-++ // we should use tde's method to signal screen changes similar
-++ // to the gtk plugin
-++ #if ! defined USE_RANDR || ! (defined LINUX && defined X86_64)
-++ // properly deinitialize KApplication
-++ delete (VCLTDEApplication*)m_pApplication;
-++ #endif
-++ // free the faked cmdline arguments no longer needed by KApplication
-++ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-++ free( m_pFreeCmdLineArgs[i] );
-++ delete [] m_pFreeCmdLineArgs;
-++ delete [] m_pAppCmdLineArgs;
-++}
-++
-++void TDEXLib::Init()
-++{
-++ SalI18N_InputMethod* pInputMethod = new SalI18N_InputMethod;
-++ pInputMethod->SetLocale();
-++ XrmInitialize();
-++
-++ KAboutData *kAboutData = new KAboutData( "LibreOffice",
-++ I18N_NOOP( "LibreOffice" ),
-++ "1.1.0",
-++ I18N_NOOP( "LibreOffice with TDE Native Widget Support." ),
-++ KAboutData::License_LGPL,
-++ "(c) 2003, 2004 Novell, Inc",
-++ I18N_NOOP( "LibreOffice is an office suite.\n" ),
-++ "http://libreoffice.org",
-++ "libreoffice@lists.freedesktop.org");
-++ kAboutData->addAuthor( "Jan Holesovsky",
-++ I18N_NOOP( "Original author and maintainer of the TDE NWF." ),
-++ "kendy@artax.karlin.mff.cuni.cz",
-++ "http://artax.karlin.mff.cuni.cz/~kendy" );
-++
-++ m_nFakeCmdLineArgs = 1;
-++ USHORT nIdx;
-++ int nParams = osl_getCommandArgCount();
-++ rtl::OString aDisplay;
-++ rtl::OUString aParam, aBin;
-++
-++ for ( nIdx = 0; nIdx < nParams; ++nIdx )
-++ {
-++ osl_getCommandArg( nIdx, &aParam.pData );
-++ if ( !m_pFreeCmdLineArgs && aParam.equalsAscii( "-display" ) && nIdx + 1 < nParams )
-++ {
-++ osl_getCommandArg( nIdx + 1, &aParam.pData );
-++ aDisplay = rtl::OUStringToOString( aParam, osl_getThreadTextEncoding() );
-++
-++ m_nFakeCmdLineArgs = 3;
-++ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++ m_pFreeCmdLineArgs[ 1 ] = strdup( "-display" );
-++ m_pFreeCmdLineArgs[ 2 ] = strdup( aDisplay.getStr() );
-++ }
-++ }
-++ if ( !m_pFreeCmdLineArgs )
-++ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++
-++ osl_getExecutableFile( &aParam.pData );
-++ osl_getSystemPathFromFileURL( aParam.pData, &aBin.pData );
-++ rtl::OString aExec = rtl::OUStringToOString( aBin, osl_getThreadTextEncoding() );
-++ m_pFreeCmdLineArgs[0] = strdup( aExec.getStr() );
-++
-++ // make a copy of the string list for freeing it since
-++ // KApplication manipulates the pointers inside the argument vector
-++ // note: KApplication bad !
-++ m_pAppCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-++ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-++ m_pAppCmdLineArgs[i] = m_pFreeCmdLineArgs[i];
-++
-++ KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData );
-++
-++ KApplication::disableAutoDcopRegistration();
-++ m_pApplication = new VCLTDEApplication();
-++ kapp->disableSessionManagement();
-++
-++ Display* pDisp = TQPaintDevice::x11AppDisplay();
-++
-++ SalDisplay *pSalDisplay = new SalTDEDisplay( pDisp );
-++
-++ pInputMethod->CreateMethod( pDisp );
-++ pInputMethod->AddConnectionWatch( pDisp, (void*)this );
-++ pSalDisplay->SetInputMethod( pInputMethod );
-++
-++ PushXErrorLevel( true );
-++ SalI18N_KeyboardExtension *pKbdExtension = new SalI18N_KeyboardExtension( pDisp );
-++ XSync( pDisp, False );
-++
-++ pKbdExtension->UseExtension( ! HasXErrorOccured() );
-++ PopXErrorLevel();
-++
-++ pSalDisplay->SetKbdExtension( pKbdExtension );
-++}
-++
-++void TDEXLib::doStartup()
-++{
-++ if( ! m_bStartupDone )
-++ {
-++ KStartupInfo::appStarted();
-++ m_bStartupDone = true;
-++ #if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "called KStartupInfo::appStarted()\n" );
-++ #endif
-++ }
-++}
-++
-++/**********************************************************************
-++ * class TDEData *
-++ **********************************************************************/
-++
-++TDEData::~TDEData()
-++{
-++}
-++
-++void TDEData::Init()
-++{
-++ pXLib_ = new TDEXLib();
-++ pXLib_->Init();
-++}
-++
-++/**********************************************************************
-++ * plugin entry point *
-++ **********************************************************************/
-++
-++extern "C" {
-++ VCL_DLLPUBLIC SalInstance* create_SalInstance( oslModule )
-++ {
-++ /* #i92121# workaround deadlocks in the X11 implementation
-++ */
-++ static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" );
-++ /* #i90094#
-++ from now on we know that an X connection will be
-++ established, so protect X against itself
-++ */
-++ if( ! ( pNoXInitThreads && *pNoXInitThreads ) )
-++ XInitThreads();
-++
-++ rtl::OString aVersion( qVersion() );
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "qt version string is \"%s\"\n", aVersion.getStr() );
-++#endif
-++ sal_Int32 nIndex = 0, nMajor = 0, nMinor = 0, nMicro = 0;
-++ nMajor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nIndex > 0 )
-++ nMinor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nIndex > 0 )
-++ nMicro = aVersion.getToken( 0, '.', nIndex ).toInt32();
-++ if( nMajor != 3 || nMinor < 2 || (nMinor == 2 && nMicro < 2) )
-++ {
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "unsuitable qt version %d.%d.%d\n", (int)nMajor, (int)nMinor, (int)nMicro );
-++#endif
-++ return NULL;
-++ }
-++
-++ TDESalInstance* pInstance = new TDESalInstance( new SalYieldMutex() );
-++#if OSL_DEBUG_LEVEL > 1
-++ fprintf( stderr, "created TDESalInstance 0x%p\n", pInstance );
-++#endif
-++
-++ // initialize SalData
-++ TDEData *pSalData = new TDEData();
-++ SetSalData( pSalData );
-++ pSalData->m_pInstance = pInstance;
-++ pSalData->Init();
-++ pSalData->initNWF();
-++
-++ return pInstance;
-++ }
-++}
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN vcl/prj/build.lst vcl/prj/build.lst
-+--- vcl/prj/build.lst 2010-11-11 13:09:00.000000000 -0600
-++++ vcl/prj/build.lst 2011-08-18 20:31:51.496382806 -0500
-+@@ -35,6 +35,7 @@
-+ vc vcl\unx\headless nmake - u vc__hl vc_inc NULL
-+ vc vcl\unx\kde nmake - u vc__kde vc_inc NULL
-+ vc vcl\unx\kde4 nmake - u vc__kde4 vc_inc NULL
-++vc vcl\unx\tde nmake - u vc__tde vc_inc NULL
-+ vc vcl\aqua\source\a11y nmake - u vc__aquy vc_inc NULL
-+ vc vcl\aqua\source\app nmake - u vc__appa vc_inc NULL
-+ vc vcl\aqua\source\dtrans nmake - u vc__dtra vc_inc NULL
-+@@ -45,6 +46,6 @@
-+ vc vcl\mac\source\gdi nmake - m vc__gdim vc_inc NULL
-+ vc vcl\mac\source\window nmake - m vc__winm vc_inc NULL
-+ vc vcl\mac\source\src nmake - m vc__srcm vc_inc NULL
-+-vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-++vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__tde.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-+ vc vcl\util\linksvp nmake - u vc_lsvp vc_util NULL
-+ vc vcl\workben nmake - all vc_wrkb vc_util vc_salmain NULL
-+diff -urN vcl/prj/d.lst vcl/prj/d.lst
-+--- vcl/prj/d.lst 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/prj/d.lst 2011-08-18 20:30:59.772430360 -0500
-+@@ -62,6 +62,7 @@
-+ ..\inc\vcl\javachild.hxx %_DEST%\inc%_EXT%\vcl\javachild.hxx
-+ ..\inc\vcl\jobset.hxx %_DEST%\inc%_EXT%\vcl\jobset.hxx
-+ ..\unx\inc\kde_headers.h %_DEST%\inc%_EXT%\vcl\kde_headers.h
-++..\unx\inc\tde_headers.h %_DEST%\inc%_EXT%\vcl\tde_headers.h
-+ ..\inc\vcl\keycod.hxx %_DEST%\inc%_EXT%\vcl\keycod.hxx
-+ ..\inc\vcl\keycodes.hxx %_DEST%\inc%_EXT%\vcl\keycodes.hxx
-+ ..\inc\vcl\lineinfo.hxx %_DEST%\inc%_EXT%\vcl\lineinfo.hxx
-+diff -urN vcl/source/app/settings.cxx vcl/source/app/settings.cxx
-+--- vcl/source/app/settings.cxx 2011-03-08 12:51:41.000000000 -0600
-++++ vcl/source/app/settings.cxx 2011-08-18 20:32:39.820075101 -0500
-+@@ -830,6 +830,8 @@
-+ nRet = STYLE_SYMBOLS_CRYSTAL;
-+ else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "kde4" ) )
-+ nRet = STYLE_SYMBOLS_OXYGEN;
-++ else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-++ nRet = STYLE_SYMBOLS_CRYSTAL;
-+ }
-+
-+ // falback to any existing style
-+diff -urN vcl/unx/source/gdi/dtint.cxx vcl/unx/source/gdi/dtint.cxx
-+--- vcl/unx/source/gdi/dtint.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/unx/source/gdi/dtint.cxx 2011-08-18 20:35:34.753448320 -0500
-+@@ -96,7 +96,7 @@
-+ /*
-+ * #i22061# override desktop detection
-+ * if environment variable OOO_FORCE_DESKTOP is set
-+- * to one of "cde" "kde" "gnome" then autodetection
-++ * to one of "cde" "kde" "tde" "gnome" then autodetection
-+ * is overridden.
-+ */
-+ static const char* pOverride = getenv( "OOO_FORCE_DESKTOP" );
-+diff -urN vcl/unx/source/plugadapt/salplug.cxx vcl/unx/source/plugadapt/salplug.cxx
-+--- vcl/unx/source/plugadapt/salplug.cxx 2010-11-11 13:09:00.000000000 -0600
-++++ vcl/unx/source/plugadapt/salplug.cxx 2011-08-18 20:35:23.512588295 -0500
-+@@ -55,10 +55,11 @@
-+ DESKTOP_GNOME,
-+ DESKTOP_KDE,
-+ DESKTOP_KDE4,
-++ DESKTOP_TDE,
-+ DESKTOP_CDE
-+ };
-+
-+-static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "CDE" };
-++static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "TDE", "CDE" };
-+
-+ static SalInstance* tryInstance( const OUString& rModuleBase )
-+ {
-+@@ -162,7 +166,7 @@
-+ {
-+ static const char* pKDEFallbackList[] =
-+ {
-+- "kde4", "kde", "gtk", "gen", 0
-++ "kde4", "kde", "tde", "gtk", "gen", 0
-+ };
-+
-+ static const char* pStandardFallbackList[] =
-+@@ -191,6 +195,11 @@
-+ }
-+ else if( desktop.equalsAscii( desktop_strings[DESKTOP_KDE4] ) )
-+ pList = pKDEFallbackList;
-++ else if( desktop.equalsAscii( desktop_strings[DESKTOP_TDE] ) )
-++ {
-++ pList = pKDEFallbackList;
-++ nListEntry = 1;
-++ }
-+
-+ SalInstance* pInst = NULL;
-+ while( pList[nListEntry] && pInst == NULL )
-+@@ -235,7 +244,7 @@
-+ pInst = autodetect_plugin();
-+
-+ // fallback, try everything
-+- const char* pPlugin[] = { "gtk", "kde", "gen", 0 };
-++ const char* pPlugin[] = { "gtk", "kde", "tde", "gen", 0 };
-+
-+ for ( int i = 0; !pInst && pPlugin[ i ]; ++i )
-+ pInst = tryInstance( OUString::createFromAscii( pPlugin[ i ] ) );
-+diff -urN vcl/unx/inc/plugins/tde/tdedata.hxx vcl/unx/inc/plugins/tde/tdedata.hxx
-+--- vcl/unx/inc/plugins/tde/tdedata.hxx 1969-12-31 18:00:00.000000000 -0600
-++++ vcl/unx/inc/plugins/tde/tdedata.hxx 2011-08-18 20:45:32.009117227 -0500
-+@@ -0,0 +1,114 @@
-++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-++/*************************************************************************
-++ *
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * Copyright 2000, 2010 Oracle and/or its affiliates.
-++ * Copyright 2011 Timothy Pearson
-++ *
-++ * OpenOffice.org - a multi-platform office productivity suite
-++ *
-++ * This file is part of OpenOffice.org.
-++ *
-++ * OpenOffice.org is free software: you can redistribute it and/or modify
-++ * it under the terms of the GNU Lesser General Public License version 3
-++ * only, as published by the Free Software Foundation.
-++ *
-++ * OpenOffice.org 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 version 3 for more details
-++ * (a copy is included in the LICENSE file that accompanied this code).
-++ *
-++ * You should have received a copy of the GNU Lesser General Public License
-++ * version 3 along with OpenOffice.org. If not, see
-++ * <http://www.openoffice.org/license.html>
-++ * for a copy of the LGPLv3 License.
-++ *
-++ ************************************************************************/
-++
-++#ifndef _VCL_TDEDATA_HXX
-++#define _VCL_TDEDATA_HXX
-++
-++#include <saldisp.hxx>
-++#include <saldata.hxx>
-++#include <salframe.h>
-++
-++class TDEData : public X11SalData
-++{
-++public:
-++ TDEData() {}
-++ virtual ~TDEData();
-++
-++ virtual void Init();
-++ virtual void initNWF();
-++ virtual void deInitNWF();
-++};
-++
-++class SalTDEDisplay : public SalX11Display
-++{
-++public:
-++ SalTDEDisplay( Display* pDisp );
-++ virtual ~SalTDEDisplay();
-++};
-++
-++class TDESalFrame : public X11SalFrame
-++{
-++ static const int nMaxGraphics = 2;
-++
-++ struct GraphicsHolder
-++ {
-++ X11SalGraphics* pGraphics;
-++ bool bInUse;
-++ GraphicsHolder()
-++ : pGraphics( NULL ),
-++ bInUse( false )
-++ {}
-++ ~GraphicsHolder();
-++ };
-++ GraphicsHolder m_aGraphics[ nMaxGraphics ];
-++
-++public:
-++ TDESalFrame( SalFrame* pParent, ULONG nStyle );
-++ virtual ~TDESalFrame();
-++
-++ virtual SalGraphics* GetGraphics();
-++ virtual void ReleaseGraphics( SalGraphics *pGraphics );
-++ virtual void updateGraphics( bool bClear );
-++ virtual void UpdateSettings( AllSettings& rSettings );
-++ virtual void Show( BOOL bVisible, BOOL bNoActivate );
-++};
-++
-++class TDESalInstance : public X11SalInstance
-++{
-++public:
-++ TDESalInstance( SalYieldMutex* pMutex )
-++ : X11SalInstance( pMutex ) {}
-++ virtual ~TDESalInstance() {}
-++ virtual SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle );
-++};
-++
-++class TDEXLib : public SalXLib
-++{
-++ bool m_bStartupDone;
-++ void* m_pApplication;
-++ char** m_pFreeCmdLineArgs;
-++ char** m_pAppCmdLineArgs;
-++ int m_nFakeCmdLineArgs;
-++public:
-++ TDEXLib() : SalXLib(),
-++ m_bStartupDone( false ),
-++ m_pApplication( NULL ),
-++ m_pFreeCmdLineArgs( NULL ),
-++ m_pAppCmdLineArgs( NULL ),
-++ m_nFakeCmdLineArgs( 0 )
-++ {}
-++ virtual ~TDEXLib();
-++ virtual void Init();
-++
-++ void doStartup();
-++};
-++
-++#endif // _VCL_TDEDATA_HXX
-++
-++/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-+diff -urN scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_library_ooo.scp
-+--- scp2/source/ooo/file_library_ooo.scp 2010-11-11 09:08:07.000000000 -0600
-++++ scp2/source/ooo/file_library_ooo.scp 2011-08-19 03:12:08.329491869 -0500
-+@@ -463,6 +463,24 @@
-+
-+ #endif
-+
-++#ifdef ENABLE_TDEAB
-++File gid_File_Lib_Tdeab_1
-++ TXT_FILE_BODY;
-++ Styles = (PACKED,UNO_COMPONENT);
-++ RegistryID = gid_Starregistry_Services_Rdb;
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(libtdeab1,UNXSUFFIX));
-++End
-++
-++File gid_File_Lib_Tdeab_Drv_1
-++ TXT_FILE_BODY;
-++ Styles = (PACKED);
-++ Dir = SCP2_OOO_BIN_DIR;
-++ Name = STRING(CONCAT2(libtdeabdrv1,UNXSUFFIX));
-++End
-++
-++#endif
-++
-+ #ifdef MACOSX
-+ File gid_File_Lib_Macab_1
-+ TXT_FILE_BODY;
-+diff -urN scp2/source/ooo/module_hidden_ooo.scp scp2/source/ooo/module_hidden_ooo.scp
-+--- scp2/source/ooo/module_hidden_ooo.scp 2010-12-14 09:40:37.000000000 -0600
-++++ scp2/source/ooo/module_hidden_ooo.scp 2011-08-19 03:13:34.946155129 -0500
-+@@ -285,6 +285,8 @@
-+ gid_File_Lib_Evoab_2,
-+ gid_File_Lib_Kab_1,
-+ gid_File_Lib_Kab_Drv_1,
-++ gid_File_Lib_Tdeab_1,
-++ gid_File_Lib_Tdeab_Drv_1,
-+ gid_File_Lib_Macab_1,
-+ gid_File_Lib_Macab_Drv_1,
-+ gid_File_Lib_Evtatt,
-+diff -urN postprocess/packregistry/makefile.mk postprocess/packregistry/makefile.mk
-+--- postprocess/packregistry/makefile.mk 2010-12-01 12:05:07.000000000 -0600
-++++ postprocess/packregistry/makefile.mk 2011-08-19 03:54:29.454469572 -0500
-+@@ -336,6 +336,9 @@
-+ .IF "$(ENABLE_KAB)" == "TRUE"
-+ MY_FILES_main += $(MY_MOD)/DataAccess/kab.xcu
-+ .END
-++.IF "$(ENABLE_TDEAB)" == "TRUE"
-++MY_FILES_main += $(MY_MOD)/DataAccess/tdeab.xcu
-++.END
-+ .IF "$(SYSTEM_MOZILLA)" != "YES" && "$(WITH_MOZILLA)" != "NO" && \
-+ "$(OS)" != "MACOSX"
-+ .IF "$(OS)" == "WNT"
-+diff -urN connectivity/version.mk connectivity/version.mk
-+--- connectivity/version.mk 2010-11-11 09:30:07.000000000 -0600
-++++ connectivity/version.mk 2011-08-19 03:55:43.470147349 -0500
-+@@ -101,6 +101,16 @@
-+ # the micro
-+ KAB_MICRO=0
-+
-++# ----------------------------Tdeab settings-------------------------------------#
-++# target
-++TDEAB_TARGET=tdeab
-++
-++# the major
-++TDEAB_MAJOR=1
-++# the minor
-++TDEAB_MINOR=0
-++# the micro
-++TDEAB_MICRO=0
-+
-+ # ----------------------------Macab settings-------------------------------------#
-+ # target
-+diff -urN fpicker/source/generic/fpicker.cxx fpicker/source/generic/fpicker.cxx
-+--- fpicker/source/generic/fpicker.cxx 2010-11-11 09:30:08.000000000 -0600
-++++ fpicker/source/generic/fpicker.cxx 2011-08-19 19:55:13.344690587 -0500
-+@@ -64,6 +64,8 @@
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFilePicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde4"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDE4FilePicker"));
-++ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-++ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFilePicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFilePicker"));
-+ #endif
-+@@ -139,6 +141,8 @@
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.GtkFolderPicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFolderPicker"));
-++ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-++ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFolderPicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFolderPicker"));
-+ #endif
-+diff -urN vcl/unx/source/desktopdetect/desktopdetector.cxx vcl/unx/source/desktopdetect/desktopdetector.cxx
-+--- vcl/unx/source/desktopdetect/desktopdetector.cxx 2010-11-11 09:22:48.000000000 -0600
-++++ vcl/unx/source/desktopdetect/desktopdetector.cxx 2011-08-19 21:10:45.481110576 -0500
-+@@ -49,12 +49,13 @@
-+ DESKTOP_NONE = 0,
-+ DESKTOP_UNKNOWN,
-+ DESKTOP_GNOME,
-++ DESKTOP_TDE,
-+ DESKTOP_KDE,
-+ DESKTOP_KDE4,
-+ DESKTOP_CDE
-+ };
-+
-+-static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4", "CDE" };
-++static const char * desktop_strings[] = { "none", "unknown", "GNOME", "TDE", "KDE", "KDE4", "CDE" };
-+
-+ static bool is_gnome_desktop( Display* pDisplay )
-+ {
-+@@ -218,6 +219,15 @@
-+ return false;
-+ }
-+
-++static bool is_tde_desktop( Display* pDisplay )
-++{
-++ if ( NULL != getenv( "TDE_FULL_SESSION" ) )
-++ {
-++ return true;
-++ }
-++ return false;
-++}
-++
-+ static bool is_kde4_desktop( Display* pDisplay )
-+ {
-+ if ( NULL != getenv( "KDE_FULL_SESSION" ) )
-+@@ -265,6 +275,8 @@
-+
-+ if ( aOver.equalsIgnoreAsciiCase( "cde" ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_CDE] );
-++ if ( aOver.equalsIgnoreAsciiCase( "tde" ) )
-++ aRet.appendAscii( desktop_strings[DESKTOP_TDE] );
-+ if ( aOver.equalsIgnoreAsciiCase( "kde4" ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_KDE4] );
-+ if ( aOver.equalsIgnoreAsciiCase( "gnome" ) )
-+@@ -319,7 +331,9 @@
-+ {
-+ XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler );
-+
-+- if ( is_kde4_desktop( pDisplay ) )
-++ if ( is_tde_desktop( pDisplay ) )
-++ aRet.appendAscii( desktop_strings[DESKTOP_TDE] );
-++ else if ( is_kde4_desktop( pDisplay ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_KDE4] );
-+ else if ( is_gnome_desktop( pDisplay ) )
-+ aRet.appendAscii( desktop_strings[DESKTOP_GNOME] );
-diff -urN libreoffice-build/patches/unittesting/unittesting-vcl.diff libreoffice-build/patches/unittesting/unittesting-vcl.diff
---- libreoffice-build/patches/unittesting/unittesting-vcl.diff 2010-11-11 08:41:39.000000000 -0600
-+++ libreoffice-build/patches/unittesting/unittesting-vcl.diff 2011-09-19 11:35:33.731926351 -0500
-@@ -10,7 +10,7 @@
- +++ vcl/prj/build.lst
- @@ -47,4 +47,3 @@ vc vcl\mac\source\window nmake - m vc__winm vc_inc NULL
- vc vcl\mac\source\src nmake - m vc__srcm vc_inc NULL
-- vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
-+ vc vcl\util nmake - all vc_util vc__plug.u vc__desk.u vc__aquy.u vc__appa.u vc__dtra.u vc__appm.m vc__appu.u vc__dtru.u vc__appw.w vc__appp.p vc__gdia.u vc__gdim.m vc__gdiu.u vc__gdiw.w vc__gdip.p vc__srcm.m vc__srcw.w vc__srcp.p vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__winp.p vc__gtka.u vc__gtky.u vc__gtkw.u vc__gtkg.u vc__kde.u vc__kde4.u vc__tde.u vc__hl.u vc__ftmu.u vc__prgu.u vc__prnu.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs vc_fts vc_components NULL
- vc vcl\util\linksvp nmake - u vc_lsvp vc_util NULL
- -vc vcl\workben nmake - all vc_wrkb vc_util vc_salmain NULL
- diff --git vcl/prj/tests.lst vcl/prj/tests.lst
diff --git a/main/thirdparty/libreoffice/git_10_28_2011/patches/libreoffice-trinity.diff b/main/thirdparty/libreoffice/git_10_28_2011/patches/libreoffice-trinity.diff
deleted file mode 100644
index fccd9f4e6..000000000
--- a/main/thirdparty/libreoffice/git_10_28_2011/patches/libreoffice-trinity.diff
+++ /dev/null
@@ -1,16171 +0,0 @@
-diff --git a/Repository.mk b/Repository.mk
-index 5fab1b5..f123f3b 100644
---- a/Repository.mk
-+++ b/Repository.mk
-@@ -229,6 +229,7 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \
- vclplug_gtk \
- vclplug_gtk3 \
- vclplug_kde \
-+ vclplug_tde \
- vclplug_kde4 \
- vclplug_svp \
- visioimport \
-diff --git a/bin/distro-install-file-lists b/bin/distro-install-file-lists
-index b233030..23f2504 100755
---- a/bin/distro-install-file-lists
-+++ b/bin/distro-install-file-lists
-@@ -211,6 +211,13 @@ if test "z$OOO_VENDOR" != "zDebian" ; then
- mv_file_between_flists kde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libkabdrv1.so
- add_used_directories kde_list.txt common_list.txt
-
-+ # tde subpackage
-+ test -f $DESTDIR/gid_Module_Optional_Tde && cp $DESTDIR/gid_Module_Optional_Tde tde_list.txt || :
-+ mv_file_between_flists tde_list.txt common_list.txt $INSTALLDIR/program/tdefilepicker
-+ mv_file_between_flists tde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/fps_tde.uno.so
-+ mv_file_between_flists tde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libvclplug_tdel..so
-+ mv_file_between_flists tde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libtdeabdrv1.so
-+
- # create kde4 subpackage
- mv_file_between_flists kde4_list.txt kde_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/kde4be1.uno.so
- mv_file_between_flists kde4_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libvclplug_kde4l..so
-@@ -416,6 +423,7 @@ else
- create_package_directory gid_Module_Optional_Pyuno pkg/python-uno
- create_package_directory gid_Module_Optional_Gnome pkg/libreoffice-gnome
- create_package_directory gid_Module_Optional_Kde pkg/libreoffice-kde
-+ create_package_directory gid_Module_Optional_Tde pkg/libreoffice-tde
-
- create_package_directory gid_Module_Root_Files_2 pkg/libreoffice-common
- create_package_directory gid_Module_Root_Files_3 pkg/libreoffice-common
-@@ -494,7 +502,7 @@ else
- fi &&
- ( cd pkg/libreoffice-common/$d
- find -maxdepth 1 \
-- -regex '\./\(.*\.so.*\|.*\.bin\|pagein\|nsplugin\|kdefilepicker\|msfontextract\|.*\.rdb\|javaldx\|uri-encode\)' \
-+ -regex '\./\(.*\.so.*\|.*\.bin\|pagein\|nsplugin\|kdefilepicker\|tdefilepicker\|msfontextract\|.*\.rdb\|javaldx\|uri-encode\)' \
- -exec mv {} $DESTDIR/pkg/libreoffice-core/$d \;
- ); \
- done
-diff --git a/configure.in b/configure.in
-index 3b48331..2888cbb 100644
---- a/configure.in
-+++ b/configure.in
-@@ -381,6 +381,15 @@ AC_ARG_ENABLE(kdeab,
- fi
- )
-
-+AC_ARG_ENABLE(tde,
-+[ --enable-tde Determines whether to use TQt3/TDE vclplug on platforms
-+ where TQt and TDE are available.
-+],,)
-+
-+AC_ARG_ENABLE(tdeab,
-+[ --disable-tdeab Disable the TDE address book support
-+],,if test "$enable_tde" = "yes"; then enable_tdeab=yes; fi)
-+
- AC_ARG_ENABLE(kde4,
- AS_HELP_STRING([--enable-kde4],
- [Determines whether to use Qt4/KDE4 vclplug on platforms where Qt4 and
-@@ -1554,6 +1563,7 @@ solaris*)
- test_gtk=yes
- build_gstreamer=yes
- test_kde=yes
-+ test_tde=yes
- test_freetype=yes
- test_gstreamer=yes
- _os=SunOS
-@@ -1587,6 +1597,7 @@ linux-gnu*|k*bsd*-gnu*)
- test_gtk=yes
- build_gstreamer=yes
- test_kde=yes
-+ test_tde=yes
- test_kde4=yes
- test_freetype=yes
- test_unix_quickstarter=yes
-@@ -1659,6 +1670,7 @@ freebsd*)
- test_gtk=yes
- build_gstreamer=yes
- test_kde=yes
-+ test_tde=yes
- test_kde4=yes
- test_freetype=yes
- AC_MSG_CHECKING([the FreeBSD operating system release])
-@@ -1703,6 +1715,7 @@ aix*)
- openbsd*)
- test_gtk=yes
- test_kde=yes
-+ test_tde=yes
- test_freetype=yes
- PTHREAD_CFLAGS="-D_THREAD_SAFE"
- PTHREAD_LIBS="-pthread"
-@@ -1713,6 +1726,7 @@ dragonfly*)
- test_gtk=yes
- build_gstreamer=yes
- test_kde=yes
-+ test_tde=yes
- test_kde4=yes
- test_freetype=yes
- PTHREAD_LIBS="-pthread"
-@@ -6941,6 +6955,13 @@ if test "x$enable_kde4" = "xyes"; then
- fi
- AC_SUBST(ENABLE_KDE4)
-
-+ENABLE_TDE=""
-+if test "x$enable_tde" = "xyes"; then
-+ ENABLE_TDE="TRUE"
-+ R="$R tde"
-+fi
-+AC_SUBST(ENABLE_TDE)
-+
- if test -z "$R"; then
- AC_MSG_RESULT([none])
- else
-@@ -7852,6 +7873,129 @@ AC_SUBST(KDE_GLIB_LIBS)
- AC_SUBST(KDE_HAVE_GLIB)
-
- dnl ===================================================================
-+dnl Check whether the Qt3 and TDE libraries are available.
-+dnl ===================================================================
-+
-+TDE_CFLAGS=""
-+TDE_LIBS=""
-+if test "$_os" != "OpenBSD"; then
-+ MOC="tmoc"
-+fi
-+if test "$test_tde" = "yes" -a "$ENABLE_TDE" = "TRUE" ; then
-+ dnl Search paths for Qt3 and TDE
-+ if test "$build_cpu" != "x86_64" ; then
-+ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib/qt3/include /usr/lib/qt/include /usr/share/qt3/include /usr/local/include/X11/qt3 $x_includes"
-+ qt_libdirs="$QTLIB /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-+ else
-+ qt_incdirs="$QTINC /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib64/qt3/include /usr/lib64/qt/include /usr/share/qt3/include /usr/lib/qt3/include /usr/lib/qt/include /usr/local/include/X11/qt3 $x_includes"
-+ qt_libdirs="$QTLIB /usr/local/qt/lib64 /usr/lib64/qt /usr/lib64 /usr/X11R6/lib64/X11/qt /usr/X11R6/lib64/qt /usr/lib64/qt3/lib64 /usr/lib64/qt/lib64 /usr/share/qt3/lib64 /usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt3/lib /usr/lib/qt/lib /usr/share/qt3/lib /usr/local/lib/qt3 $x_libraries"
-+ fi
-+ if test -n "$QTDIR" ; then
-+ qt_incdirs="$QTDIR/include $qt_incdirs"
-+ if test "$build_cpu" != "x86_64" ; then
-+ qt_libdirs="$QTDIR/lib $qt_libdirs"
-+ else
-+ qt_libdirs="$QTDIR/lib64 $QTDIR/lib $qt_libdirs"
-+ fi
-+ fi
-+ if test "$build_cpu" != "x86_64" ; then
-+ tde_incdirs="/opt/trinity/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-+ tde_libdirs="/opt/trinity/lib /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib/kde4/lib /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-+ else
-+ tde_incdirs="/opt/trinity/include /usr/lib64/kde/include /usr/lib/kde/include /usr/lib/kde4/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde4/include /opt/kde/include $x_includes"
-+ tde_libdirs="/opt/trinity/lib /usr/lib64/kde/lib64 /usr/local/kde/lib64 /usr/kde/lib64 /usr/lib64/kde /usr/lib64/kde3 /usr/lib64 /usr/X11R6/lib64 /usr/local/lib64 /opt/trinity/lib64 /opt/kde/lib64 /usr/X11R6/kde/lib64 /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde4 /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde4/lib /opt/kde/lib /usr/X11R6/kde/lib $x_libraries"
-+ fi
-+ if test -n "$TDEDIR" ; then
-+ tde_incdirs="$TDEDIR/include $tde_incdirs"
-+ if test "$build_cpu" != "x86_64" ; then
-+ tde_libdirs="$TDEDIR/lib $tde_libdirs"
-+ else
-+ tde_libdirs="$TDEDIR/lib64 $TDEDIR/lib $tde_libdirs"
-+ fi
-+ fi
-+
-+ dnl What to test
-+ qt_test_include="qstyle.h"
-+ qt_test_library="libqt-mt.so*"
-+ tde_test_include="kapp.h"
-+ tde_test_library="libDCOP.so*"
-+
-+ dnl Check for Qt3 headers
-+ AC_MSG_CHECKING([for Qt3 headers])
-+ qt_incdir="no"
-+ for tde_check in $qt_incdirs ; do
-+ if test -r "$tde_check/$qt_test_include" ; then
-+ qt_incdir="$tde_check"
-+ break
-+ fi
-+ done
-+ AC_MSG_RESULT([$qt_incdir])
-+ if test "x$qt_incdir" = "xno" ; then
-+ AC_MSG_ERROR([Qt3 headers not found. Please specify the root of
-+your Qt3 installation by exporting QTDIR before running "configure".])
-+ fi
-+
-+ dnl Check for Qt3 libraries
-+ AC_MSG_CHECKING([for Qt3 libraries])
-+ qt_libdir="no"
-+ for qt_check in $qt_libdirs ; do
-+ if test -r "`ls $qt_check/$qt_test_library 2>/dev/null | head -1`" ; then
-+ qt_libdir="$qt_check"
-+ break
-+ fi
-+ done
-+ AC_MSG_RESULT([$qt_libdir])
-+ if test "x$qt_libdir" = "xno" ; then
-+ AC_MSG_ERROR([Qt3 libraries not found. Please specify the root of
-+your Qt3 installation by exporting QTDIR before running "configure".])
-+ fi
-+
-+ dnl Check for Meta Object Compiler
-+ AC_PATH_PROG( MOC, tmoc, no, [`dirname $qt_libdir`/bin:$QTDIR/bin:$PATH] )
-+ if test "$MOC" = "no" ; then
-+ AC_MSG_ERROR([TQt3 Meta Object Compiler not found. Please specify
-+the root of your Qt3 installation by exporting QTDIR before running "configure".])
-+ fi
-+
-+ dnl Check for TDE headers
-+ AC_MSG_CHECKING([for TDE headers])
-+ tde_incdir="no"
-+ for tde_check in $tde_incdirs ; do
-+ if test -r "$tde_check/$tde_test_include" ; then
-+ tde_incdir="$tde_check"
-+ break
-+ fi
-+ done
-+ AC_MSG_RESULT([$tde_incdir])
-+ if test "x$tde_incdir" = "xno" ; then
-+ AC_MSG_ERROR([TDE headers not found. Please specify the root of
-+your TDE installation by exporting TDEDIR before running "configure".])
-+ fi
-+
-+ dnl Check for TDE libraries
-+ AC_MSG_CHECKING([for TDE libraries])
-+ tde_libdir="no"
-+ for tde_check in $tde_libdirs ; do
-+ if test -r "`ls $tde_check/$tde_test_library 2>/dev/null | head -1`" ; then
-+ tde_libdir="$tde_check"
-+ break
-+ fi
-+ done
-+ AC_MSG_RESULT([$tde_libdir])
-+ if test "x$tde_libdir" = "xno" ; then
-+ AC_MSG_ERROR([TDE libraries not found. Please specify the root of
-+your TDE installation by exporting TDEDIR before running "configure".])
-+ fi
-+
-+ dnl Set the variables
-+ TDE_CFLAGS="-I$qt_incdir -I$tde_incdir -I/usr/include/tqt -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT"
-+ TDE_LIBS="-L$tde_libdir -L$qt_libdir -lkdeui -lkdecore -ltqt -lqt-mt"
-+fi
-+AC_SUBST(TDE_CFLAGS)
-+AC_SUBST(TDE_LIBS)
-+AC_SUBST(MOC)
-+
-+dnl ===================================================================
- dnl Test for the enabling the lockdown pieces
- dnl ===================================================================
- AC_MSG_CHECKING([whether to enable the lockdown pieces])
-@@ -7908,6 +8052,33 @@ fi
- AC_SUBST(ENABLE_KAB)
-
- dnl ===================================================================
-+dnl Test whether to include TDE AB support
-+dnl ===================================================================
-+AC_MSG_CHECKING([whether to enable TDE address book support])
-+if test "$enable_tdeab" = "yes" && test "$enable_tde" = "yes"; then
-+ AC_MSG_RESULT([yes])
-+ AC_LANG_PUSH([C++])
-+ save_CXXFLAGS=$CXXFLAGS
-+ CXXFLAGS="$CXXFLAGS $TDE_CFLAGS"
-+ AC_MSG_CHECKING([whether TDE is between 3.2 and 3.6])
-+ AC_TRY_RUN([
-+#include <kdeversion.h>
-+
-+int main(int argc, char **argv) {
-+ if (KDE_VERSION_MAJOR == 3 && 2 <= KDE_VERSION_MINOR && KDE_VERSION_MINOR <= 6) return 0;
-+ else return 1;
-+}
-+ ], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([TDE version too old or too recent, please use another version of TDE or disable TDE address book support])])
-+ CXXFLAGS=$save_CXXFLAGS
-+ AC_LANG_POP([C++])
-+ ENABLE_TDEAB=TRUE
-+else
-+ AC_MSG_RESULT([no])
-+ ENABLE_TDEAB=
-+fi
-+AC_SUBST(ENABLE_TDEAB)
-+
-+dnl ===================================================================
- dnl Test whether to include MathMLDTD
- dnl ===================================================================
- AC_MSG_CHECKING([whether to include MathMLDTD])
-diff --git a/connectivity/prj/build.lst b/connectivity/prj/build.lst
-index 9860897..be07edb 100644
---- a/connectivity/prj/build.lst
-+++ b/connectivity/prj/build.lst
-@@ -12,6 +12,7 @@ cn connectivity\source\drivers\mozab\mozillasrc nmake - all cn_mozab_moz
- cn connectivity\source\drivers\mozab\bootstrap nmake - all cn_mozab_bootstrap cn_mozab_mozillasrc cn_inc NULL
- cn connectivity\source\drivers\mozab nmake - all cn_mozab cn_mozab_bootstrap cn_dbtools cn_inc NULL
- cn connectivity\source\drivers\kab nmake - all cn_kab cn_dbtools cn_inc NULL
-+cn connectivity\source\drivers\tdeab nmake - all cn_tdeab cn_dbtools cn_inc NULL
- cn connectivity\source\drivers\macab nmake - all cn_macab cn_dbtools cn_inc NULL
- cn connectivity\source\drivers\evoab2 nmake - all cn_evoab2 cn_dbtools cn_file cn_inc NULL
- cn connectivity\source\drivers\calc nmake - all cn_calc cn_file cn_inc NULL
-@@ -28,4 +29,4 @@ cn connectivity\source\simpledbt nmake - all cn_simpledbt
- cn connectivity\source\dbtools nmake - all cn_dbtools cn_simpledbt cn_cmtools cn_parse cn_res cn_sdbcx cn_inc cn_res NULL
- cn connectivity\qa\connectivity\tools nmake - all cn_qa_tools cn_inc NULL
- cn connectivity\qa nmake - all cn_qa cn_inc NULL
--cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_flat cn_dbase cn_hsqldb cn_macab NULL
-+cn connectivity\util nmake - all cn_util cn_ado cn_mozab cn_kab cn_tdeab cn_evoab2 cn_calc cn_odbc cn_mysql cn_jdbc cn_flat cn_dbase cn_hsqldb cn_macab NULL
-diff --git a/connectivity/prj/d.lst b/connectivity/prj/d.lst
-index 1387da4..400ecaa 100644
---- a/connectivity/prj/d.lst
-+++ b/connectivity/prj/d.lst
-@@ -11,6 +11,7 @@
- ..\source\drivers\adabas\*.xml %_DEST%\xml\*.xml
- ..\source\drivers\ado\*.xml %_DEST%\xml\*.xml
- ..\source\drivers\kab\*.xml %_DEST%\xml\*.xml
-+..\source\drivers\tdeab\*.xml %_DEST%\xml\*.xml
- ..\source\drivers\macab\*.xml %_DEST%\xml\*.xml
- ..\source\drivers\file\*.xml %_DEST%\xml\*.xml
- ..\source\drivers\flat\*.xml %_DEST%\xml\*.xml
-diff --git a/connectivity/source/drivers/tdeab/KCatalog.cxx b/connectivity/source/drivers/tdeab/KCatalog.cxx
-new file mode 100644
-index 0000000..262144e
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KCatalog.cxx
-@@ -0,0 +1,128 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KCatalog.hxx"
-+#include "KConnection.hxx"
-+#include "KTables.hxx"
-+
-+using namespace connectivity::kab;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::beans;
-+using namespace ::com::sun::star::sdbcx;
-+using namespace ::com::sun::star::sdbc;
-+using namespace ::com::sun::star::container;
-+using namespace ::com::sun::star::lang;
-+using namespace ::cppu;
-+
-+// -------------------------------------------------------------------------
-+KabCatalog::KabCatalog(KabConnection* _pCon)
-+ : connectivity::sdbcx::OCatalog(_pCon),
-+ m_pConnection(_pCon),
-+ m_xMetaData(m_pConnection->getMetaData())
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabCatalog::refreshTables()
-+{
-+ TStringVector aVector;
-+ Sequence< ::rtl::OUString > aTypes(1);
-+ aTypes[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"));
-+ Reference< XResultSet > xResult = m_xMetaData->getTables(
-+ Any(),
-+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%")),
-+ aTypes);
-+
-+ if (xResult.is())
-+ {
-+ Reference< XRow > xRow(xResult,UNO_QUERY);
-+ ::rtl::OUString aName;
-+ // const ::rtl::OUString& sDot = KabCatalog::getDot();
-+
-+ while (xResult->next())
-+ {
-+ // aName = xRow->getString(2);
-+ // aName += sDot;
-+ aName = xRow->getString(3);
-+ aVector.push_back(aName);
-+ }
-+ }
-+ if (m_pTables)
-+ m_pTables->reFill(aVector);
-+ else
-+ m_pTables = new KabTables(m_xMetaData,*this,m_aMutex,aVector);
-+}
-+// -------------------------------------------------------------------------
-+void KabCatalog::refreshViews()
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabCatalog::refreshGroups()
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabCatalog::refreshUsers()
-+{
-+}
-+// -------------------------------------------------------------------------
-+const ::rtl::OUString& KabCatalog::getDot()
-+{
-+ static const ::rtl::OUString sDot = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("."));
-+ return sDot;
-+}
-+// -----------------------------------------------------------------------------
-+
-+// XTablesSupplier
-+Reference< XNameAccess > SAL_CALL KabCatalog::getTables( ) throw(RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+ checkDisposed(rBHelper.bDisposed);
-+
-+ try
-+ {
-+ if (!m_pTables)
-+ refreshTables();
-+ }
-+ catch( const RuntimeException& )
-+ {
-+ // allowed to leave this method
-+ throw;
-+ }
-+ catch( const Exception& )
-+ {
-+ // allowed
-+ }
-+
-+ return m_pTables;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KCatalog.hxx b/connectivity/source/drivers/tdeab/KCatalog.hxx
-new file mode 100644
-index 0000000..ddfe1e9
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KCatalog.hxx
-@@ -0,0 +1,68 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_CATALOG_HXX_
-+#define _CONNECTIVITY_KAB_CATALOG_HXX_
-+
-+#include "connectivity/sdbcx/VCatalog.hxx"
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ class KabConnection;
-+
-+ class KabCatalog : public connectivity::sdbcx::OCatalog
-+ {
-+ KabConnection* m_pConnection; // used to get the metadata
-+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; // just to make things easier
-+
-+ public:
-+ KabCatalog(KabConnection* _pCon);
-+
-+ inline KabConnection* getConnection() const { return m_pConnection; }
-+
-+ static const ::rtl::OUString& getDot();
-+
-+ // implementation of the pure virtual methods
-+ virtual void refreshTables();
-+ virtual void refreshViews();
-+ virtual void refreshGroups();
-+ virtual void refreshUsers();
-+
-+ // XTablesSupplier
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables(
-+ ) throw(::com::sun::star::uno::RuntimeException);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_CATALOG_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KColumns.cxx b/connectivity/source/drivers/tdeab/KColumns.cxx
-new file mode 100644
-index 0000000..e61e457
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KColumns.cxx
-@@ -0,0 +1,102 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KColumns.hxx"
-+#include "KTable.hxx"
-+#include "KTables.hxx"
-+#include "KCatalog.hxx"
-+#include "connectivity/sdbcx/VColumn.hxx"
-+
-+using namespace connectivity::kab;
-+using namespace connectivity::sdbcx;
-+using namespace connectivity;
-+using namespace ::comphelper;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::beans;
-+using namespace ::com::sun::star::sdbc;
-+using namespace ::com::sun::star::container;
-+using namespace ::com::sun::star::lang;
-+
-+// -------------------------------------------------------------------------
-+sdbcx::ObjectType KabColumns::createObject(const ::rtl::OUString& _rName)
-+{
-+ Reference< XResultSet > xResult = m_pTable->getConnection()->getMetaData()->getColumns(
-+ Any(),
-+ m_pTable->getSchema(),
-+ m_pTable->getTableName(),
-+ _rName);
-+
-+ sdbcx::ObjectType xRet = NULL;
-+ if (xResult.is())
-+ {
-+ Reference< XRow > xRow(xResult,UNO_QUERY);
-+
-+ while (xResult->next())
-+ {
-+ if (xRow->getString(4) == _rName)
-+ {
-+ OColumn* pRet = new OColumn(
-+ _rName,
-+ xRow->getString(6),
-+ xRow->getString(13),
-+ xRow->getString(12),
-+ xRow->getInt(11),
-+ xRow->getInt(7),
-+ xRow->getInt(9),
-+ xRow->getInt(5),
-+ sal_False,
-+ sal_False,
-+ sal_False,
-+ sal_True);
-+ xRet = pRet;
-+ break;
-+ }
-+ }
-+ }
-+
-+ return xRet;
-+}
-+// -------------------------------------------------------------------------
-+void KabColumns::impl_refresh() throw(RuntimeException)
-+{
-+ m_pTable->refreshColumns();
-+}
-+// -------------------------------------------------------------------------
-+KabColumns::KabColumns( KabTable* _pTable,
-+ ::osl::Mutex& _rMutex,
-+ const TStringVector &_rVector)
-+ : sdbcx::OCollection(*_pTable, sal_True, _rMutex, _rVector),
-+ m_pTable(_pTable)
-+{
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KColumns.hxx b/connectivity/source/drivers/tdeab/KColumns.hxx
-new file mode 100644
-index 0000000..1919747
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KColumns.hxx
-@@ -0,0 +1,58 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_COLUMNS_HXX_
-+#define _CONNECTIVITY_KAB_COLUMNS_HXX_
-+
-+#include "KTable.hxx"
-+#include "connectivity/sdbcx/VCollection.hxx"
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ class KabColumns : public sdbcx::OCollection
-+ {
-+ protected:
-+ KabTable* m_pTable;
-+
-+ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-+ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-+
-+ public:
-+ KabColumns( KabTable* _pTable,
-+ ::osl::Mutex& _rMutex,
-+ const TStringVector &_rVector);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_COLUMNS_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KConnection.cxx b/connectivity/source/drivers/tdeab/KConnection.cxx
-new file mode 100644
-index 0000000..26824bf
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KConnection.cxx
-@@ -0,0 +1,332 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KConnection.hxx"
-+#include "KDatabaseMetaData.hxx"
-+#include "KStatement.hxx"
-+#include "KPreparedStatement.hxx"
-+#include "KDriver.hxx"
-+#include "KCatalog.hxx"
-+#include <com/sun/star/sdbc/ColumnValue.hpp>
-+#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-+#include <shell/tde_headers.h>
-+
-+using namespace connectivity::kab;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::beans;
-+using namespace com::sun::star::sdbc;
-+using namespace com::sun::star::sdbcx;
-+
-+IMPLEMENT_SERVICE_INFO(KabConnection, "com.sun.star.sdbc.drivers.KabConnection", "com.sun.star.sdbc.Connection")
-+//-----------------------------------------------------------------------------
-+KabConnection::KabConnection(KabDriver* _pDriver)
-+ : OMetaConnection_BASE(m_aMutex),
-+ OSubComponent<KabConnection, KabConnection_BASE>((::cppu::OWeakObject*)_pDriver, this),
-+ m_xMetaData(NULL),
-+ m_pAddressBook(NULL),
-+ m_pDriver(_pDriver)
-+{
-+ m_pDriver->acquire();
-+}
-+//-----------------------------------------------------------------------------
-+KabConnection::~KabConnection()
-+{
-+ if (!isClosed())
-+ close();
-+
-+ m_pDriver->release();
-+ m_pDriver = NULL;
-+}
-+//-----------------------------------------------------------------------------
-+void SAL_CALL KabConnection::release() throw()
-+{
-+ relase_ChildImpl();
-+}
-+// -----------------------------------------------------------------------------
-+void KabConnection::construct(const ::rtl::OUString&, const Sequence< PropertyValue >&) throw(SQLException)
-+{
-+ osl_incrementInterlockedCount( &m_refCount );
-+
-+ // create a TDE address book object
-+ m_pAddressBook = KABC::StdAddressBook::self();
-+ m_pAddressBook->setAutomaticSave(false);
-+// perharps we should analyze the URL to know whether the addressbook is local, over LDAP, etc...
-+// perharps we should get some user and password information from "info" properties
-+
-+ osl_decrementInterlockedCount( &m_refCount );
-+}
-+// XServiceInfo
-+// --------------------------------------------------------------------------------
-+Reference< XStatement > SAL_CALL KabConnection::createStatement( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // create a statement
-+ // the statement can only be executed once
-+ Reference< XStatement > xReturn = new KabStatement(this);
-+ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-+ return xReturn;
-+}
-+// --------------------------------------------------------------------------------
-+Reference< XPreparedStatement > SAL_CALL KabConnection::prepareStatement( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // create a statement
-+ // the statement can only be executed more than once
-+ Reference< XPreparedStatement > xReturn = new KabPreparedStatement(this, _sSql);
-+ m_aStatements.push_back(WeakReferenceHelper(xReturn));
-+ return xReturn;
-+}
-+// --------------------------------------------------------------------------------
-+Reference< XPreparedStatement > SAL_CALL KabConnection::prepareCall( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // not implemented yet :-) a task to do
-+ return NULL;
-+}
-+// --------------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabConnection::nativeSQL( const ::rtl::OUString& _sSql ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ // when you need to transform SQL92 to you driver specific you can do it here
-+
-+ return _sSql;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::setAutoCommit( sal_Bool ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+ // here you have to set your commit mode please have a look at the jdbc documentation to get a clear explanation
-+}
-+// --------------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabConnection::getAutoCommit( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+ // you have to distinguish which if you are in autocommit mode or not
-+ // at normal case true should be fine here
-+
-+ return sal_True;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::commit( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // when you database does support transactions you should commit here
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::rollback( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // same as commit but for the other case
-+}
-+// --------------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabConnection::isClosed( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ // just simple -> we are closed when we are disposed, that means someone called dispose(); (XComponent)
-+ return KabConnection_BASE::rBHelper.bDisposed;
-+}
-+// --------------------------------------------------------------------------------
-+Reference< XDatabaseMetaData > SAL_CALL KabConnection::getMetaData( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // here we have to create the class with biggest interface
-+ // The answer is 42 :-)
-+ Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
-+ if (!xMetaData.is())
-+ {
-+ xMetaData = new KabDatabaseMetaData(this); // need the connection because it can return it
-+ m_xMetaData = xMetaData;
-+ }
-+
-+ return xMetaData;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::setReadOnly( sal_Bool ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // set you connection to readonly
-+}
-+// --------------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabConnection::isReadOnly( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // return if your connection to readonly
-+ return sal_False;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::setCatalog( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // if your database doesn't work with catalogs you go to next method otherwise you kjnow what to do
-+}
-+// --------------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabConnection::getCatalog( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+
-+ // return your current catalog
-+ return ::rtl::OUString();
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::setTransactionIsolation( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // set your isolation level
-+ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-+}
-+// --------------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabConnection::getTransactionIsolation( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+
-+ // please have a look at @see com.sun.star.sdbc.TransactionIsolation
-+ return TransactionIsolation::NONE;
-+}
-+// --------------------------------------------------------------------------------
-+Reference< ::com::sun::star::container::XNameAccess > SAL_CALL KabConnection::getTypeMap( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+
-+ // if your driver has special database types you can return it here
-+
-+ return NULL;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::setTypeMap( const Reference< ::com::sun::star::container::XNameAccess >& ) throw(SQLException, RuntimeException)
-+{
-+ // the other way around
-+}
-+// --------------------------------------------------------------------------------
-+// XCloseable
-+void SAL_CALL KabConnection::close( ) throw(SQLException, RuntimeException)
-+{
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabConnection_BASE::rBHelper.bDisposed);
-+ }
-+ dispose();
-+}
-+// --------------------------------------------------------------------------------
-+// XWarningsSupplier
-+Any SAL_CALL KabConnection::getWarnings( ) throw(SQLException, RuntimeException)
-+{
-+ // when you collected some warnings -> return it
-+ return Any();
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabConnection::clearWarnings( ) throw(SQLException, RuntimeException)
-+{
-+ // you should clear your collected warnings here
-+}
-+//------------------------------------------------------------------------------
-+void KabConnection::disposing()
-+{
-+ // we noticed that we should be destroied in near future so we have to dispose our statements
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+
-+ for (OWeakRefArray::iterator i = m_aStatements.begin(); m_aStatements.end() != i; ++i)
-+ {
-+ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-+ if (xComp.is())
-+ xComp->dispose();
-+ }
-+ m_aStatements.clear();
-+
-+ if (m_pAddressBook != NULL)
-+ {
-+ m_pAddressBook->close();
-+ m_pAddressBook = NULL;
-+ }
-+
-+ m_xMetaData = ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData>();
-+
-+ dispose_ChildImpl();
-+ KabConnection_BASE::disposing();
-+}
-+// -----------------------------------------------------------------------------
-+Reference< XTablesSupplier > SAL_CALL KabConnection::createCatalog()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ Reference< XTablesSupplier > xTab = m_xCatalog;
-+ if (!m_xCatalog.is())
-+ {
-+ KabCatalog *pCat = new KabCatalog(this);
-+ xTab = pCat;
-+ m_xCatalog = xTab;
-+ }
-+ return xTab;
-+}
-+// -----------------------------------------------------------------------------
-+::KABC::AddressBook* KabConnection::getAddressBook() const
-+{
-+ return m_pAddressBook;
-+}
-+// -----------------------------------------------------------------------------
-+extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL createKabConnection( void* _pDriver )
-+{
-+ KabConnection* pConnection = new KabConnection( static_cast< KabDriver* >( _pDriver ) );
-+ // by definition, the pointer crossing library boundaries as void ptr is acquired once
-+ pConnection->acquire();
-+ return pConnection;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KConnection.hxx b/connectivity/source/drivers/tdeab/KConnection.hxx
-new file mode 100644
-index 0000000..66b75d4
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KConnection.hxx
-@@ -0,0 +1,142 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_CONNECTION_HXX_
-+#define _CONNECTIVITY_KAB_CONNECTION_HXX_
-+
-+#include <map>
-+#include "OSubComponent.hxx"
-+#include "connectivity/CommonTools.hxx"
-+#include <com/sun/star/lang/XServiceInfo.hpp>
-+#include <com/sun/star/sdbc/SQLWarning.hpp>
-+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-+#include <com/sun/star/sdbc/XConnection.hpp>
-+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-+#include <comphelper/broadcasthelper.hxx>
-+#include <cppuhelper/compbase3.hxx>
-+
-+namespace KABC
-+{
-+ class StdAddressBook;
-+ class AddressBook;
-+}
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+
-+ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XConnection,
-+ ::com::sun::star::sdbc::XWarningsSupplier,
-+ ::com::sun::star::lang::XServiceInfo
-+ > OMetaConnection_BASE;
-+
-+ class KabStatement_Base;
-+ class KabDriver;
-+ class KabDatabaseMetaData;
-+
-+ typedef OMetaConnection_BASE KabConnection_BASE; // implements basics and text encoding
-+ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-+
-+ class KabConnection : public comphelper::OBaseMutex,
-+ public KabConnection_BASE,
-+ public OSubComponent<KabConnection, KabConnection_BASE>
-+ {
-+ friend class OSubComponent<KabConnection, KabConnection_BASE>;
-+
-+ protected:
-+ //====================================================================
-+ // Data attributes
-+ //====================================================================
-+ ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-+
-+ OWeakRefArray m_aStatements; // vector containing a list of all the Statement objects
-+ // for this Connection
-+
-+ ::KABC::StdAddressBook* m_pAddressBook; // the address book
-+ KabDriver* m_pDriver; // pointer to the owning driver object
-+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier>
-+ m_xCatalog; // needed for the SQL interpreter
-+
-+ public:
-+ virtual void construct( const ::rtl::OUString& url,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info) throw(::com::sun::star::sdbc::SQLException);
-+
-+ KabConnection(KabDriver* _pDriver);
-+ virtual ~KabConnection();
-+
-+ void closeAllStatements () throw( ::com::sun::star::sdbc::SQLException);
-+
-+ // OComponentHelper
-+ virtual void SAL_CALL disposing(void);
-+
-+ // XInterface
-+ virtual void SAL_CALL release() throw();
-+
-+ // XServiceInfo
-+ DECLARE_SERVICE_INFO();
-+
-+ // XConnection
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setAutoCommit( sal_Bool autoCommit ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setReadOnly( sal_Bool readOnly ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setCatalog( const ::rtl::OUString& catalog ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setTransactionIsolation( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XCloseable
-+ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XWarningsSupplier
-+ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // needed for the SQL interpreter
-+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > SAL_CALL createCatalog();
-+
-+ // accessors
-+ inline KabDriver* getDriver() const { return m_pDriver;}
-+ ::KABC::AddressBook* getAddressBook() const;
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_CONNECTION_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx b/connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx
-new file mode 100644
-index 0000000..1bff0ea
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KDatabaseMetaData.cxx
-@@ -0,0 +1,1084 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KDatabaseMetaData.hxx"
-+#include "kfields.hxx"
-+#include "TDEInit.h"
-+#include <shell/tde_headers.h>
-+#include "FDatabaseMetaDataResultSet.hxx"
-+#include "OTypeInfo.hxx"
-+#include <com/sun/star/sdbc/ColumnValue.hpp>
-+#include <com/sun/star/sdbc/ResultSetType.hpp>
-+#include <com/sun/star/sdbc/TransactionIsolation.hpp>
-+
-+using namespace connectivity::kab;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::beans;
-+using namespace com::sun::star::sdbc;
-+
-+KabDatabaseMetaData::KabDatabaseMetaData(KabConnection* _pCon)
-+ : m_xConnection(_pCon),
-+ m_bUseCatalog(sal_True)
-+{
-+ OSL_ENSURE(_pCon,"KabDatabaseMetaData::KabDatabaseMetaData: No connection set!");
-+
-+ osl_incrementInterlockedCount( &m_refCount );
-+ m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
-+ osl_decrementInterlockedCount( &m_refCount );
-+}
-+// -------------------------------------------------------------------------
-+KabDatabaseMetaData::~KabDatabaseMetaData()
-+{
-+}
-+// -------------------------------------------------------------------------
-+const ::rtl::OUString & KabDatabaseMetaData::getAddressBookTableName()
-+{
-+ static const ::rtl::OUString aAddressBookTableName
-+ (::rtl::OUString::createFromAscii( i18n("Address Book") ));
-+
-+ return aAddressBookTableName;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogSeparator( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aVal;
-+ if (m_bUseCatalog)
-+ { // do some special here for you database
-+ }
-+
-+ return aVal;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxBinaryLiteralLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxRowSize( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCatalogNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCharLiteralLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInIndex( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxCursorNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxConnections( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInTable( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatementLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTableNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxTablesInSelect( ) throw(SQLException, RuntimeException)
-+{
-+ // MaxTablesInSelect describes how many tables can participate in the FROM part of a given SELECT statement,
-+ // currently, the resultset/statement implementations can cope with one table only
-+ sal_Int32 nValue = 1;
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::doesMaxRowSizeIncludeBlobs( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesLowerCaseIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::storesUpperCaseIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithAddColumn( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsAlterTableWithDropColumn( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxIndexLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsNonNullableColumns( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getCatalogTerm( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aVal;
-+ if (m_bUseCatalog)
-+ {
-+ }
-+ return aVal;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getIdentifierQuoteString( ) throw(SQLException, RuntimeException)
-+{
-+ // normally this is "
-+ ::rtl::OUString aVal = ::rtl::OUString::createFromAscii("\"");
-+ return aVal;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getExtraNameCharacters( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aVal;
-+ return aVal;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsDifferentTableCorrelationNames( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::isCatalogAtStart( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Bool bValue = sal_False;
-+ if (m_bUseCatalog)
-+ {
-+ }
-+ return bValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionIgnoredInTransactions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::dataDefinitionCausesTransactionCommit( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataManipulationTransactionsOnly( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedDelete( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsPositionedUpdate( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossRollback( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenStatementsAcrossCommit( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossCommit( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOpenCursorsAcrossRollback( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactionIsolationLevel( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInDataManipulation( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92FullSQL( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92EntryLevelSQL( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True; // should be supported at least
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsIntegrityEnhancementFacility( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInIndexDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInTableDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInTableDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInIndexDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInDataManipulation( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOuterJoins( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxStatements( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxProcedureNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxSchemaNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsTransactions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::allProceduresAreCallable( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsStoredProcedures( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSelectForUpdate( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::allTablesAreSelectable( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::isReadOnly( ) throw(SQLException, RuntimeException)
-+{
-+ // for the moment, we have read-only addresses, but this might change in the future
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFiles( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::usesLocalFilePerTable( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsTypeConversion( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::nullPlusNonNullIsNull( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsColumnAliasing( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsTableCorrelationNames( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsConvert( sal_Int32, sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsExpressionsInOrderBy( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupBy( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByBeyondSelect( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsGroupByUnrelated( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleTransactions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsMultipleResultSets( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsLikeEscapeClause( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsOrderByUnrelated( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnion( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsUnionAll( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsMixedCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtEnd( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedAtStart( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedHigh( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::nullsAreSortedLow( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInProcedureCalls( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSchemasInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInProcedureCalls( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCatalogsInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCorrelatedSubqueries( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInComparisons( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInExists( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInIns( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsSubqueriesInQuantifieds( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsANSI92IntermediateSQL( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getURL( ) throw(SQLException, RuntimeException)
-+{
-+ // if someday we support more than the default address book,
-+ // this method should return the URL which was used to create it
-+ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("sdbc:address:kab:");
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getUserName( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverName( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii("kab");
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getDriverVersion() throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue = ::rtl::OUString::createFromAscii(KAB_DRIVER_VERSION);
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductVersion( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getDatabaseProductName( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getProcedureTerm( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getSchemaTerm( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMajorVersion( ) throw(RuntimeException)
-+{
-+ return KAB_DRIVER_VERSION_MAJOR;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getDefaultTransactionIsolation( ) throw(SQLException, RuntimeException)
-+{
-+ return TransactionIsolation::NONE;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getDriverMinorVersion( ) throw(RuntimeException)
-+{
-+ return KAB_DRIVER_VERSION_MINOR;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getSQLKeywords( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getSearchStringEscape( ) throw(SQLException, RuntimeException)
-+{
-+ ::rtl::OUString aValue;
-+ return aValue;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getStringFunctions( ) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getTimeDateFunctions( ) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getSystemFunctions( ) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDatabaseMetaData::getNumericFunctions( ) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsExtendedSQLGrammar( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsCoreSQLGrammar( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsMinimumSQLGrammar( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsFullOuterJoins( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsLimitedOuterJoins( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInGroupBy( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInOrderBy( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxColumnsInSelect( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDatabaseMetaData::getMaxUserNameLength( ) throw(SQLException, RuntimeException)
-+{
-+ sal_Int32 nValue = 0; // 0 means no limit
-+ return nValue;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetType( sal_Int32 setType ) throw(SQLException, RuntimeException)
-+{
-+ switch (setType)
-+ {
-+ case ResultSetType::FORWARD_ONLY:
-+ case ResultSetType::SCROLL_INSENSITIVE:
-+ return sal_True;
-+ }
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ switch (setType)
-+ {
-+ case ResultSetType::FORWARD_ONLY:
-+ case ResultSetType::SCROLL_INSENSITIVE:
-+ return sal_True;
-+ }
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::ownUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::ownDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::ownInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::othersUpdatesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::othersDeletesAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::othersInsertsAreVisible( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::updatesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::deletesAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::insertsAreDetected( sal_Int32 ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDatabaseMetaData::supportsBatchUpdates( ) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XConnection > SAL_CALL KabDatabaseMetaData::getConnection( ) throw(SQLException, RuntimeException)
-+{
-+ return (Reference< XConnection >) m_xConnection.get();
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTableTypes( ) throw(SQLException, RuntimeException)
-+{
-+ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes);
-+ Reference< XResultSet > xRef = pResult;
-+
-+ static ODatabaseMetaDataResultSet::ORows aRows;
-+ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-+
-+ if (aRows.empty())
-+ {
-+ ODatabaseMetaDataResultSet::ORow aRow(2);
-+ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[1] = new ORowSetValueDecorator(aTable);
-+ aRows.push_back(aRow);
-+ }
-+ pResult->setRows(aRows);
-+ return xRef;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTypeInfo( ) throw(SQLException, RuntimeException)
-+{
-+ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
-+ Reference< XResultSet > xRef = pResult;
-+
-+ static ODatabaseMetaDataResultSet::ORows aRows;
-+ if (aRows.empty())
-+ {
-+ ODatabaseMetaDataResultSet::ORow aRow(19);
-+
-+ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[1] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-+ aRow[2] = new ORowSetValueDecorator(DataType::CHAR);
-+ aRow[3] = new ORowSetValueDecorator((sal_Int32) 254);
-+ aRow[4] = ODatabaseMetaDataResultSet::getQuoteValue();
-+ aRow[5] = ODatabaseMetaDataResultSet::getQuoteValue();
-+ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[7] = new ORowSetValueDecorator((sal_Int32) ColumnValue::NULLABLE);
-+ aRow[8] = ODatabaseMetaDataResultSet::get1Value();
-+ aRow[9] = new ORowSetValueDecorator((sal_Int32) ColumnSearch::CHAR);
-+ aRow[10] = ODatabaseMetaDataResultSet::get1Value();
-+ aRow[11] = ODatabaseMetaDataResultSet::get0Value();
-+ aRow[12] = ODatabaseMetaDataResultSet::get0Value();
-+ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[14] = ODatabaseMetaDataResultSet::get0Value();
-+ aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-+ aRow[16] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[17] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[18] = new ORowSetValueDecorator((sal_Int32) 10);
-+ aRows.push_back(aRow);
-+// Much more types might appear in TDE address books
-+// To be completed
-+ }
-+ pResult->setRows(aRows);
-+ return xRef;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCatalogs( ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCatalogs );
-+}
-+// -----------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getSchemas( ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eSchemas );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumnPrivileges(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-+ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eColumnPrivileges );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getColumns(
-+ const Any&,
-+ const ::rtl::OUString&,
-+ const ::rtl::OUString& tableNamePattern,
-+ const ::rtl::OUString& columnNamePattern) throw(SQLException, RuntimeException)
-+{
-+ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumns);
-+ Reference< XResultSet > xRef = pResult;
-+
-+ ODatabaseMetaDataResultSet::ORows aRows;
-+
-+ if (match(tableNamePattern, getAddressBookTableName(), '\0'))
-+ {
-+ ODatabaseMetaDataResultSet::ORow aRow(19);
-+
-+ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-+ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[9] = ODatabaseMetaDataResultSet::get0Value();
-+ aRow[10] = new ORowSetValueDecorator((sal_Int32) 10);
-+ aRow[11] = ODatabaseMetaDataResultSet::get1Value();
-+ aRow[12] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[13] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[14] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[15] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[16] = new ORowSetValueDecorator((sal_Int32) 254);
-+ aRow[18] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("YES"));
-+
-+ sal_Int32 nPosition = 1;
-+ TQString aQtName;
-+ ::rtl::OUString sName;
-+
-+ aQtName = ::KABC::Addressee::revisionLabel();
-+ sName = (const sal_Unicode *) aQtName.ucs2();
-+ if (match(columnNamePattern, sName, '\0'))
-+ {
-+ aRow[4] = new ORowSetValueDecorator(sName);
-+ aRow[5] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-+ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-+ aRow[17] = new ORowSetValueDecorator(nPosition++);
-+ aRows.push_back(aRow);
-+ }
-+
-+ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-+ ::KABC::Field::List::iterator aField;
-+
-+ for ( aField = aFields.begin();
-+ aField != aFields.end();
-+ ++aField, ++nPosition)
-+ {
-+ aQtName = (*aField)->label();
-+ sName = (const sal_Unicode *) aQtName.ucs2();
-+ if (match(columnNamePattern, sName, '\0'))
-+ {
-+ aRow[4] = new ORowSetValueDecorator(sName);
-+ aRow[5] = new ORowSetValueDecorator(DataType::CHAR);
-+ aRow[6] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("CHAR"));
-+ aRow[7] = new ORowSetValueDecorator((sal_Int32) 256);
-+// Might be VARCHAR and not CHAR[256]...
-+ aRow[17] = new ORowSetValueDecorator(nPosition);
-+ aRows.push_back(aRow);
-+ }
-+ }
-+ }
-+ pResult->setRows(aRows);
-+ return xRef;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTables(
-+ const Any&,
-+ const ::rtl::OUString&,
-+ const ::rtl::OUString&,
-+ const Sequence< ::rtl::OUString >& types) throw(SQLException, RuntimeException)
-+{
-+ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTables);
-+ Reference< XResultSet > xRef = pResult;
-+
-+ // check whether we have tables in the requested types
-+ // for the moment, we answer only the "TABLE" table type
-+ // when no types are given at all, we return all the tables
-+ static const ::rtl::OUString aTable(::rtl::OUString::createFromAscii("TABLE"));
-+ sal_Bool bTableFound = sal_False;
-+ const ::rtl::OUString* p = types.getConstArray(),
-+ * pEnd = p + types.getLength();
-+
-+ if (p == pEnd)
-+ {
-+ bTableFound = sal_True;
-+ }
-+ else while (p < pEnd)
-+ {
-+ if (match(*p, aTable, '\0'))
-+ {
-+ bTableFound = sal_True;
-+ break;
-+ }
-+ p++;
-+ }
-+ if (!bTableFound)
-+ return xRef;
-+
-+ static ODatabaseMetaDataResultSet::ORows aRows;
-+
-+ if (aRows.empty())
-+ {
-+ ODatabaseMetaDataResultSet::ORow aRow(6);
-+
-+ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[2] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[3] = new ORowSetValueDecorator(getAddressBookTableName());
-+ aRow[4] = new ORowSetValueDecorator(aTable);
-+ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRows.push_back(aRow);
-+ }
-+ pResult->setRows(aRows);
-+ return xRef;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedureColumns(
-+ const Any&, const ::rtl::OUString&,
-+ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedureColumns );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getProcedures(
-+ const Any&, const ::rtl::OUString&,
-+ const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eProcedures );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getVersionColumns(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
-+{
-+ ::connectivity::ODatabaseMetaDataResultSet* pResult = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eVersionColumns);
-+
-+ Reference< XResultSet > xRef = pResult;
-+
-+ ODatabaseMetaDataResultSet::ORows aRows;
-+
-+ if (table == getAddressBookTableName())
-+ {
-+ ODatabaseMetaDataResultSet::ORow aRow( 9 );
-+ TQString aQtName = ::KABC::Addressee::revisionLabel();
-+ ::rtl::OUString sName = (const sal_Unicode *) aQtName.ucs2();
-+
-+ aRow[0] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[1] = ODatabaseMetaDataResultSet::getEmptyValue();
-+
-+ aRow[2] = new ORowSetValueDecorator(sName);
-+ aRow[3] = new ORowSetValueDecorator(DataType::TIMESTAMP);
-+ aRow[4] = new ORowSetValueDecorator(::rtl::OUString::createFromAscii("TIMESTAMP"));
-+
-+ aRow[5] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[6] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[7] = ODatabaseMetaDataResultSet::getEmptyValue();
-+ aRow[8] = ODatabaseMetaDataResultSet::getEmptyValue();
-+
-+ aRows.push_back(aRow);
-+ }
-+ pResult->setRows(aRows);
-+ return xRef;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getExportedKeys(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eExportedKeys );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getImportedKeys(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eImportedKeys );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getPrimaryKeys(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::ePrimaryKeys );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getIndexInfo(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString&,
-+ sal_Bool, sal_Bool ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eIndexInfo );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getBestRowIdentifier(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString&, sal_Int32,
-+ sal_Bool ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eBestRowIdentifier );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getTablePrivileges(
-+ const Any&, const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eTablePrivileges );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getCrossReference(
-+ const Any&, const ::rtl::OUString&,
-+ const ::rtl::OUString&, const Any&,
-+ const ::rtl::OUString&, const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ return new ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eCrossReference );
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabDatabaseMetaData::getUDTs( const Any&, const ::rtl::OUString&, const ::rtl::OUString&, const Sequence< sal_Int32 >& ) throw(SQLException, RuntimeException)
-+{
-+ OSL_ENSURE(0,"Not implemented yet!");
-+ throw SQLException();
-+}
-+// -----------------------------------------------------------------------------
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx b/connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx
-new file mode 100644
-index 0000000..9ddc063
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KDatabaseMetaData.hxx
-@@ -0,0 +1,217 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-+#define _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-+
-+#include "KConnection.hxx"
-+#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-+#include <cppuhelper/implbase1.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ //**************************************************************
-+ //************ Class: KabDatabaseMetaData
-+ //**************************************************************
-+
-+ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XDatabaseMetaData> KabDatabaseMetaData_BASE;
-+
-+ class KabDatabaseMetaData : public KabDatabaseMetaData_BASE
-+ {
-+ ::com::sun::star::uno::Reference< KabConnection > m_xConnection;
-+ sal_Bool m_bUseCatalog;
-+
-+ public:
-+
-+ inline KabConnection* getOwnConnection() const { return m_xConnection.get(); }
-+
-+ KabDatabaseMetaData(KabConnection* _pCon);
-+ static const ::rtl::OUString & getAddressBookTableName();
-+ virtual ~KabDatabaseMetaData();
-+
-+ // this interface is really BIG
-+ // XDatabaseMetaData
-+ virtual sal_Bool SAL_CALL allProceduresAreCallable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL allTablesAreSelectable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getURL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getUserName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL nullsAreSortedHigh( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL nullsAreSortedLow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL nullsAreSortedAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL nullsAreSortedAtEnd( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getDatabaseProductName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getDatabaseProductVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getDriverName( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getDriverVersion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getDriverMajorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getDriverMinorVersion( ) throw(::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL usesLocalFiles( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL usesLocalFilePerTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesUpperCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesLowerCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesMixedCaseIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getIdentifierQuoteString( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getSQLKeywords( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getNumericFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getStringFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getSystemFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getTimeDateFunctions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getSearchStringEscape( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getExtraNameCharacters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsAlterTableWithAddColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsAlterTableWithDropColumn( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsColumnAliasing( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL nullPlusNonNullIsNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsTypeConversion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsConvert( sal_Int32 fromType, sal_Int32 toType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsDifferentTableCorrelationNames( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsExpressionsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOrderByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsGroupByUnrelated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsGroupByBeyondSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsLikeEscapeClause( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsMultipleResultSets( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsMultipleTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsNonNullableColumns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsMinimumSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCoreSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsExtendedSQLGrammar( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsANSI92EntryLevelSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsANSI92IntermediateSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsANSI92FullSQL( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsIntegrityEnhancementFacility( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsFullOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsLimitedOuterJoins( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getSchemaTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getProcedureTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getCatalogTerm( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isCatalogAtStart( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getCatalogSeparator( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSchemasInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSchemasInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSchemasInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSchemasInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCatalogsInDataManipulation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCatalogsInProcedureCalls( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCatalogsInTableDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsPositionedDelete( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsPositionedUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSelectForUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsStoredProcedures( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSubqueriesInComparisons( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSubqueriesInExists( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSubqueriesInIns( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsSubqueriesInQuantifieds( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsCorrelatedSubqueries( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsUnion( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsUnionAll( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxBinaryLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxCharLiteralLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnsInGroupBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnsInIndex( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnsInOrderBy( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnsInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxColumnsInTable( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxConnections( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxCursorNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxIndexLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxSchemaNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxProcedureNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxCatalogNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxRowSize( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxStatementLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxStatements( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxTableNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxTablesInSelect( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMaxUserNameLength( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getDefaultTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsTransactionIsolationLevel( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedures( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getProcedureColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTables( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getSchemas( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCatalogs( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTableTypes( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumnPrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, const ::rtl::OUString& columnNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTablePrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getBestRowIdentifier( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Int32 scope, sal_Bool nullable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getVersionColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog, const ::rtl::OUString& primarySchema, const ::rtl::OUString& primaryTable, const ::com::sun::star::uno::Any& foreignCatalog, const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTypeInfo( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getIndexInfo( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsResultSetType( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 concurrency ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL ownUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL ownDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL ownInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL othersUpdatesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL othersDeletesAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL othersInsertsAreVisible( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL updatesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL deletesAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL insertsAreDetected( sal_Int32 setType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsBatchUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getUDTs( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& typeNamePattern, const ::com::sun::star::uno::Sequence< sal_Int32 >& types ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_DATABASEMETADATA_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KDriver.cxx b/connectivity/source/drivers/tdeab/KDriver.cxx
-new file mode 100644
-index 0000000..cdf0463
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KDriver.cxx
-@@ -0,0 +1,476 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KDriver.hxx"
-+#include "TDEInit.h"
-+#include "KConnection.hxx"
-+
-+/** === begin UNO includes === **/
-+#include <com/sun/star/sdb/SQLContext.hpp>
-+#include <com/sun/star/lang/NullPointerException.hpp>
-+#include <com/sun/star/frame/XDesktop.hpp>
-+/** === end UNO includes === **/
-+#include <rtl/ustrbuf.hxx>
-+#include <tools/diagnose_ex.h>
-+#include "resource/tdeab_res.hrc"
-+#include "resource/sharedresources.hxx"
-+
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::beans;
-+using namespace com::sun::star::sdbc;
-+using namespace com::sun::star::sdb;
-+using namespace com::sun::star::frame;
-+using namespace connectivity::kab;
-+
-+// =======================================================================
-+// = KabImplModule
-+// =======================================================================
-+// --------------------------------------------------------------------------------
-+KabImplModule::KabImplModule( const Reference< XMultiServiceFactory >& _rxFactory )
-+ :m_xORB(_rxFactory)
-+ ,m_bAttemptedLoadModule(false)
-+ ,m_bAttemptedInitialize(false)
-+ ,m_hConnectorModule(NULL)
-+ ,m_pConnectionFactoryFunc(NULL)
-+ ,m_pApplicationInitFunc(NULL)
-+ ,m_pApplicationShutdownFunc(NULL)
-+ ,m_pTDEVersionCheckFunc(NULL)
-+{
-+ if ( !m_xORB.is() )
-+ throw NullPointerException();
-+}
-+
-+// --------------------------------------------------------------------------------
-+bool KabImplModule::isTDEPresent()
-+{
-+ if ( !impl_loadModule() )
-+ return false;
-+
-+ return true;
-+}
-+
-+// --------------------------------------------------------------------------------
-+KabImplModule::TDEVersionType KabImplModule::matchTDEVersion()
-+{
-+ OSL_PRECOND( m_pTDEVersionCheckFunc, "KabImplModule::matchTDEVersion: module not loaded!" );
-+
-+ int nVersionInfo = (*m_pTDEVersionCheckFunc)();
-+ if ( nVersionInfo < 0 )
-+ return eTooOld;
-+ if ( nVersionInfo > 0 )
-+ return eToNew;
-+ return eSupported;
-+}
-+
-+// --------------------------------------------------------------------------------
-+namespace
-+{
-+ template< typename FUNCTION >
-+ void lcl_getFunctionFromModuleOrUnload( oslModule& _rModule, const sal_Char* _pAsciiSymbolName, FUNCTION& _rFunction )
-+ {
-+ _rFunction = NULL;
-+ if ( _rModule )
-+ {
-+ //
-+ const ::rtl::OUString sSymbolName = ::rtl::OUString::createFromAscii( _pAsciiSymbolName );
-+ _rFunction = (FUNCTION)( osl_getSymbol( _rModule, sSymbolName.pData ) );
-+
-+ if ( !_rFunction )
-+ { // did not find the symbol
-+ OSL_ENSURE( false, ::rtl::OString( "lcl_getFunctionFromModuleOrUnload: could not find the symbol " ) + ::rtl::OString( _pAsciiSymbolName ) );
-+ osl_unloadModule( _rModule );
-+ _rModule = NULL;
-+ }
-+ }
-+ }
-+}
-+
-+// --------------------------------------------------------------------------------
-+extern "C" { void SAL_CALL thisModule() {} }
-+
-+bool KabImplModule::impl_loadModule()
-+{
-+ if ( m_bAttemptedLoadModule )
-+ return ( m_hConnectorModule != NULL );
-+ m_bAttemptedLoadModule = true;
-+
-+ OSL_ENSURE( !m_hConnectorModule && !m_pConnectionFactoryFunc && !m_pApplicationInitFunc && !m_pApplicationShutdownFunc && !m_pTDEVersionCheckFunc,
-+ "KabImplModule::impl_loadModule: inconsistence: inconsistency (never attempted load before, but some values already set)!");
-+
-+ const ::rtl::OUString sModuleName = ::rtl::OUString::createFromAscii( SAL_MODULENAME( "kabdrv1" ) );
-+ m_hConnectorModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, SAL_LOADMODULE_NOW ); // LAZY! #i61335#
-+ OSL_ENSURE( m_hConnectorModule, "KabImplModule::impl_loadModule: could not load the implementation library!" );
-+ if ( !m_hConnectorModule )
-+ return false;
-+
-+ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "createKabConnection", m_pConnectionFactoryFunc );
-+ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "initKApplication", m_pApplicationInitFunc );
-+ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "shutdownKApplication", m_pApplicationShutdownFunc );
-+ lcl_getFunctionFromModuleOrUnload( m_hConnectorModule, "matchTDEVersion", m_pTDEVersionCheckFunc );
-+
-+ if ( !m_hConnectorModule )
-+ // one of the symbols did not exist
-+ throw RuntimeException();
-+
-+ return true;
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::impl_unloadModule()
-+{
-+ OSL_PRECOND( m_hConnectorModule != NULL, "KabImplModule::impl_unloadModule: no module!" );
-+
-+ osl_unloadModule( m_hConnectorModule );
-+ m_hConnectorModule = NULL;
-+
-+ m_pConnectionFactoryFunc = NULL;
-+ m_pApplicationInitFunc = NULL;
-+ m_pApplicationShutdownFunc = NULL;
-+ m_pTDEVersionCheckFunc = NULL;
-+
-+ m_bAttemptedLoadModule = false;
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::init()
-+{
-+ if ( !impl_loadModule() )
-+ impl_throwNoKdeException();
-+
-+ // if we're not running on a supported version, throw
-+ KabImplModule::TDEVersionType eTDEVersion = matchTDEVersion();
-+
-+ if ( eTDEVersion == eTooOld )
-+ impl_throwKdeTooOldException();
-+
-+ if ( ( eTDEVersion == eToNew ) && !impl_doAllowNewTDEVersion() )
-+ impl_throwKdeTooNewException();
-+
-+ if ( !m_bAttemptedInitialize )
-+ {
-+ m_bAttemptedInitialize = true;
-+ (*m_pApplicationInitFunc)();
-+ }
-+}
-+
-+// --------------------------------------------------------------------------------
-+bool KabImplModule::impl_doAllowNewTDEVersion()
-+{
-+ try
-+ {
-+ Reference< XMultiServiceFactory > xConfigProvider(
-+ m_xORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-+ UNO_QUERY_THROW );
-+ Sequence< Any > aCreationArgs(1);
-+ aCreationArgs[0] <<= PropertyValue(
-+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ),
-+ 0,
-+ makeAny( KabDriver::impl_getConfigurationSettingsPath() ),
-+ PropertyState_DIRECT_VALUE );
-+ Reference< XPropertySet > xSettings( xConfigProvider->createInstanceWithArguments(
-+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ) ),
-+ aCreationArgs ),
-+ UNO_QUERY_THROW );
-+
-+ sal_Bool bDisableCheck = sal_False;
-+ xSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DisableTDEMaximumVersionCheck" ) ) ) >>= bDisableCheck;
-+
-+ return bDisableCheck != sal_False;
-+ }
-+ catch( const Exception& )
-+ {
-+ DBG_UNHANDLED_EXCEPTION();
-+ }
-+ return false;
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::impl_throwNoKdeException()
-+{
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceString(
-+ STR_NO_TDE_INST
-+ ) );
-+ impl_throwGenericSQLException( sError );
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::impl_throwKdeTooOldException()
-+{
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-+ STR_TDE_VERSION_TOO_OLD,
-+ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-+ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-+ ) );
-+ impl_throwGenericSQLException( sError );
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::impl_throwGenericSQLException( const ::rtl::OUString& _rMessage )
-+{
-+ SQLException aError;
-+ aError.Message = _rMessage;
-+ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-+ aError.ErrorCode = 0;
-+ throw aError;
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::impl_throwKdeTooNewException()
-+{
-+ ::connectivity::SharedResources aResources;
-+
-+ SQLException aError;
-+ aError.Message = aResources.getResourceStringWithSubstitution(
-+ STR_TDE_VERSION_TOO_NEW,
-+ "$major$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MAJOR),
-+ "$minor$",::rtl::OUString::valueOf((sal_Int32)MIN_TDE_VERSION_MINOR)
-+ );
-+ aError.SQLState = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "S1000" ) );
-+ aError.ErrorCode = 0;
-+
-+ SQLContext aDetails;
-+ ::rtl::OUStringBuffer aMessage;
-+ aMessage.append( aResources.getResourceString(STR_TDE_VERSION_TOO_NEW_WORK_AROUND) );
-+
-+ aMessage.appendAscii( "Sub disableTDEMaxVersionCheck\n" );
-+ aMessage.appendAscii( " BasicLibraries.LoadLibrary( \"Tools\" )\n" );
-+
-+ aMessage.appendAscii( " Dim configNode as Object\n" );
-+ aMessage.appendAscii( " configNode = GetRegistryKeyContent( \"" );
-+ aMessage.append( KabDriver::impl_getConfigurationSettingsPath() );
-+ aMessage.appendAscii( "\", true )\n" );
-+
-+ aMessage.appendAscii( " configNode.DisableTDEMaximumVersionCheck = TRUE\n" );
-+ aMessage.appendAscii( " configNode.commitChanges\n" );
-+ aMessage.appendAscii( "End Sub\n" );
-+
-+ aDetails.Message = aMessage.makeStringAndClear();
-+
-+ aError.NextException <<= aDetails;
-+
-+ throw aError;
-+}
-+
-+// --------------------------------------------------------------------------------
-+KabConnection* KabImplModule::createConnection( KabDriver* _pDriver ) const
-+{
-+ OSL_PRECOND( m_hConnectorModule, "KabImplModule::createConnection: not initialized!" );
-+
-+ void* pUntypedConnection = (*m_pConnectionFactoryFunc)( _pDriver );
-+ if ( !pUntypedConnection )
-+ throw RuntimeException();
-+
-+ return static_cast< KabConnection* >( pUntypedConnection );
-+}
-+
-+// --------------------------------------------------------------------------------
-+void KabImplModule::shutdown()
-+{
-+ if ( !m_hConnectorModule )
-+ return;
-+
-+ (*m_pApplicationShutdownFunc)();
-+ m_bAttemptedInitialize = false;
-+
-+ impl_unloadModule();
-+}
-+
-+// =======================================================================
-+// = KabDriver
-+// =======================================================================
-+KabDriver::KabDriver(
-+ const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory)
-+ : KDriver_BASE(m_aMutex),
-+ m_xMSFactory(_rxFactory),
-+ m_aImplModule(_rxFactory)
-+{
-+ if ( !m_xMSFactory.is() )
-+ throw NullPointerException();
-+
-+ osl_incrementInterlockedCount( &m_refCount );
-+ try
-+ {
-+ Reference< XDesktop > xDesktop(
-+ m_xMSFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ),
-+ UNO_QUERY_THROW );
-+ xDesktop->addTerminateListener( this );
-+ }
-+ catch( const Exception& )
-+ {
-+ DBG_UNHANDLED_EXCEPTION();
-+ }
-+ osl_decrementInterlockedCount( &m_refCount );
-+}
-+// --------------------------------------------------------------------------------
-+void KabDriver::disposing()
-+{
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+
-+ // when driver will be destroied so all our connections have to be destroied as well
-+ for (OWeakRefArray::iterator i = m_xConnections.begin(); m_xConnections.end() != i; ++i)
-+ {
-+ Reference< XComponent > xComp(i->get(), UNO_QUERY);
-+ if (xComp.is())
-+ xComp->dispose();
-+ }
-+ m_xConnections.clear();
-+
-+ WeakComponentImplHelperBase::disposing();
-+}
-+// static ServiceInfo
-+//------------------------------------------------------------------------------
-+rtl::OUString KabDriver::getImplementationName_Static( ) throw(RuntimeException)
-+{
-+ return rtl::OUString::createFromAscii( impl_getAsciiImplementationName() );
-+}
-+//------------------------------------------------------------------------------
-+Sequence< ::rtl::OUString > KabDriver::getSupportedServiceNames_Static( ) throw (RuntimeException)
-+{
-+ // which service is supported
-+ // for more information @see com.sun.star.sdbc.Driver
-+ Sequence< ::rtl::OUString > aSNS( 1 );
-+ aSNS[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdbc.Driver");
-+
-+ return aSNS;
-+}
-+//------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabDriver::getImplementationName( ) throw(RuntimeException)
-+{
-+ return getImplementationName_Static();
-+}
-+//------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDriver::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
-+{
-+ Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames());
-+ const ::rtl::OUString* pSupported = aSupported.getConstArray();
-+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength();
-+
-+ while (pSupported != pEnd && !pSupported->equals(_rServiceName))
-+ ++pSupported;
-+ return pSupported != pEnd;
-+}
-+//------------------------------------------------------------------
-+Sequence< ::rtl::OUString > SAL_CALL KabDriver::getSupportedServiceNames( ) throw(RuntimeException)
-+{
-+ return getSupportedServiceNames_Static();
-+}
-+// --------------------------------------------------------------------------------
-+Reference< XConnection > SAL_CALL KabDriver::connect( const ::rtl::OUString& url, const Sequence< PropertyValue >& info ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+
-+ m_aImplModule.init();
-+
-+ // create a new connection with the given properties and append it to our vector
-+ KabConnection* pConnection = m_aImplModule.createConnection( this );
-+ OSL_POSTCOND( pConnection, "KabDriver::connect: no connection has been created by the factory!" );
-+
-+ // by definition, the factory function returned an object which was acquired once
-+ Reference< XConnection > xConnection = pConnection;
-+ pConnection->release();
-+
-+ // late constructor call which can throw exception and allows a correct dtor call when so
-+ pConnection->construct( url, info );
-+
-+ // remember it
-+ m_xConnections.push_back( WeakReferenceHelper( *pConnection ) );
-+
-+ return xConnection;
-+}
-+// --------------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabDriver::acceptsURL( const ::rtl::OUString& url )
-+ throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+
-+ if ( !m_aImplModule.isTDEPresent() )
-+ return sal_False;
-+
-+ // here we have to look whether we support this URL format
-+ return (!url.compareTo(::rtl::OUString::createFromAscii("sdbc:address:kab:"), 16));
-+}
-+// --------------------------------------------------------------------------------
-+Sequence< DriverPropertyInfo > SAL_CALL KabDriver::getPropertyInfo( const ::rtl::OUString&, const Sequence< PropertyValue >& ) throw(SQLException, RuntimeException)
-+{
-+ // if you have something special to say, return it here :-)
-+ return Sequence< DriverPropertyInfo >();
-+}
-+// --------------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDriver::getMajorVersion( ) throw(RuntimeException)
-+{
-+ return KAB_DRIVER_VERSION_MAJOR;
-+}
-+// --------------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabDriver::getMinorVersion( ) throw(RuntimeException)
-+{
-+ return KAB_DRIVER_VERSION_MINOR;
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabDriver::queryTermination( const EventObject& ) throw (TerminationVetoException, RuntimeException)
-+{
-+ // nothing to do, nothing to veto
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabDriver::notifyTermination( const EventObject& ) throw (RuntimeException)
-+{
-+ m_aImplModule.shutdown();
-+}
-+// --------------------------------------------------------------------------------
-+void SAL_CALL KabDriver::disposing( const EventObject& ) throw (RuntimeException)
-+{
-+ // not interested in (this is the disposing of the desktop, if any)
-+}
-+// --------------------------------------------------------------------------------
-+const sal_Char* KabDriver::impl_getAsciiImplementationName()
-+{
-+ return "com.sun.star.comp.sdbc.kab.Driver";
-+ // this name is referenced in the configuration and in the kab.xml
-+ // Please be careful when changing it.
-+}
-+// --------------------------------------------------------------------------------
-+::rtl::OUString KabDriver::impl_getConfigurationSettingsPath()
-+{
-+ ::rtl::OUStringBuffer aPath;
-+ aPath.appendAscii( "/org.openoffice.Office.DataAccess/DriverSettings/" );
-+ aPath.appendAscii( "com.sun.star.comp.sdbc.kab.Driver" );
-+ return aPath.makeStringAndClear();
-+}
-+// --------------------------------------------------------------------------------
-+Reference< XInterface > SAL_CALL KabDriver::Create( const Reference< XMultiServiceFactory >& _rxFactory ) throw( Exception )
-+{
-+ return *(new KabDriver(_rxFactory));
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KDriver.hxx b/connectivity/source/drivers/tdeab/KDriver.hxx
-new file mode 100644
-index 0000000..b09a7d2
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KDriver.hxx
-@@ -0,0 +1,227 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_DRIVER_HXX_
-+#define _CONNECTIVITY_KAB_DRIVER_HXX_
-+
-+/** === begin UNO includes === **/
-+#include <com/sun/star/sdbc/XDriver.hpp>
-+#include <com/sun/star/lang/XServiceInfo.hpp>
-+#include <com/sun/star/frame/XTerminateListener.hpp>
-+/** === end UNO includes === **/
-+#include <cppuhelper/compbase3.hxx>
-+#include <osl/module.h>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ class KabConnection;
-+ class KabDriver;
-+
-+ typedef void* (SAL_CALL * ConnectionFactoryFunction)( void* _pDriver );
-+ typedef void (SAL_CALL * ApplicationInitFunction)( void );
-+ typedef void (SAL_CALL * ApplicationShutdownFunction)( void );
-+ typedef int (SAL_CALL * TDEVersionCheckFunction)( void );
-+
-+ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
-+
-+ // ===============================================================
-+ // = KabImplModule
-+ // ===============================================================
-+ class KabImplModule
-+ {
-+ private:
-+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-+ m_xORB;
-+
-+ /// Did we already attempt to load the module and to retrieve the symbols?
-+ bool m_bAttemptedLoadModule;
-+ /// Did we already check the TDE version and initialize the impl module (or at least attempted to)?
-+ bool m_bAttemptedInitialize;
-+
-+ oslModule m_hConnectorModule;
-+ ConnectionFactoryFunction m_pConnectionFactoryFunc;
-+ ApplicationInitFunction m_pApplicationInitFunc;
-+ ApplicationShutdownFunction m_pApplicationShutdownFunc;
-+ TDEVersionCheckFunction m_pTDEVersionCheckFunc;
-+
-+ public:
-+ KabImplModule( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory );
-+
-+ /** determines whether there is a TDE present in the environment
-+ */
-+ bool isTDEPresent();
-+
-+ enum TDEVersionType
-+ {
-+ eTooOld,
-+ eSupported,
-+ eToNew
-+ };
-+ /** checks whether the TDE version we're running against is supported
-+ @precond
-+ the module is loaded, i.e impl_loadModule has successfully been called
-+ */
-+ TDEVersionType matchTDEVersion();
-+
-+ /** initializes the implementation module.
-+
-+ @raises ::com::sun::star::uno::RuntimeException
-+ if the module could be loaded, but required symbols are missing
-+ @raises ::com::sun::star::sdbc::SQLException
-+ if the TDE version we're running against is not supported, or no TDE was found at all
-+ */
-+ void init();
-+
-+ /** shuts down the impl module (and the TDE application, if we own it)
-+ */
-+ void shutdown();
-+
-+ /** creates a new connection
-+ @precond
-+ <member>init</member> has been called before
-+ @raises ::com::sun::star::uno::RuntimeException
-+ if no connection object could be created (which is a severe error, normally impossible)
-+ */
-+ KabConnection* createConnection( KabDriver* _pDriver ) const;
-+
-+ private:
-+ /** loads the implementation module and retrieves the needed symbols
-+
-+ Save against being called multiple times.
-+
-+ @return <TRUE/> if the module could be loaded successfully.
-+
-+ @raises ::com::sun::star::uno::RuntimeException
-+ if the module could be loaded, but required symbols are missing
-+ */
-+ bool impl_loadModule();
-+
-+ /** unloads the implementation module, and resets all function pointers to <NULL/>
-+ @precond m_hConnectorModule is not <NULL/>
-+ */
-+ void impl_unloadModule();
-+
-+ /** throws an SQLException saying than no TDE installation was found
-+ */
-+ void impl_throwNoKdeException();
-+
-+ /** throws an SQLException saying that the found TDE version is too old
-+ */
-+ void impl_throwKdeTooOldException();
-+
-+ /** throws an SQLException saying that the found TDE version is too new
-+ */
-+ void impl_throwKdeTooNewException();
-+
-+ /** throws a generic SQL exception with SQLState S1000 and error code 0
-+ */
-+ void impl_throwGenericSQLException( const ::rtl::OUString& _rMessage );
-+
-+ /** determines whether it's allowed to run on a too-new (not confirmed to work) version
-+ */
-+ bool impl_doAllowNewTDEVersion();
-+ };
-+
-+ // ===============================================================
-+ // = KabDriver
-+ // ===============================================================
-+ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XDriver,
-+ ::com::sun::star::lang::XServiceInfo,
-+ ::com::sun::star::frame::XTerminateListener > KDriver_BASE;
-+ class KabDriver : public KDriver_BASE
-+ {
-+ protected:
-+ ::osl::Mutex m_aMutex; // mutex is need to control member access
-+ OWeakRefArray m_xConnections; // vector containing a list of all the
-+ // KabConnection objects for this Driver
-+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
-+ m_xMSFactory; // the multi-service factory
-+ KabImplModule m_aImplModule;
-+
-+ public:
-+ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) throw( ::com::sun::star::uno::Exception );
-+
-+ // XServiceInfo - static versions
-+ static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException);
-+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static( ) throw (::com::sun::star::uno::RuntimeException);
-+
-+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
-+ getMSFactory() const { return m_xMSFactory; }
-+
-+ /** returns the driver's implementation name (being pure ASCII) for reference in various places
-+ */
-+ static const sal_Char* impl_getAsciiImplementationName();
-+
-+ /** returns the path of our configuration settings
-+ */
-+ static ::rtl::OUString impl_getConfigurationSettingsPath();
-+
-+ protected:
-+ KabDriver(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory);
-+
-+ // OComponentHelper
-+ virtual void SAL_CALL disposing(void);
-+
-+ // XServiceInfo
-+ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XDriver
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connect( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL acceptsURL( const ::rtl::OUString& url ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sdbc::DriverPropertyInfo > SAL_CALL getPropertyInfo( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMajorVersion() throw(::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getMinorVersion() throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XTerminateListener
-+ virtual void SAL_CALL queryTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL notifyTermination( const ::com::sun::star::lang::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException);
-+
-+ // XEventListener
-+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-+
-+ private:
-+ /** shuts down the library which contains the real implementations
-+
-+ This method is safe against being called multiple times
-+
-+ @precond our mutex is locked
-+ */
-+ void impl_shutdownImplementationModule();
-+ };
-+ }
-+
-+}
-+
-+#endif // _CONNECTIVITY_KAB_DRIVER_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KPreparedStatement.cxx b/connectivity/source/drivers/tdeab/KPreparedStatement.cxx
-new file mode 100644
-index 0000000..12816c2
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KPreparedStatement.cxx
-@@ -0,0 +1,394 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KPreparedStatement.hxx"
-+#include "propertyids.hxx"
-+#include <connectivity/dbexception.hxx>
-+#include <connectivity/dbtools.hxx>
-+#include "resource/tdeab_res.hrc"
-+#include "resource/sharedresources.hxx"
-+
-+using namespace connectivity::kab;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::sdbc;
-+using namespace com::sun::star::util;
-+
-+IMPLEMENT_SERVICE_INFO(KabPreparedStatement, "com.sun.star.sdbc.drivers.KabPreparedStatement", "com.sun.star.sdbc.PreparedStatement");
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::checkAndResizeParameters(sal_Int32 nParams) throw(SQLException)
-+{
-+ if ( !m_aParameterRow.is() )
-+ m_aParameterRow = new OValueVector();
-+
-+ if (nParams < 1)
-+ ::dbtools::throwInvalidIndexException(*(KabPreparedStatement *) this,Any());
-+
-+ if (nParams >= (sal_Int32) (m_aParameterRow->get()).size())
-+ (m_aParameterRow->get()).resize(nParams);
-+}
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::setKabFields() const throw(SQLException)
-+{
-+ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-+
-+ xColumns = m_aSQLIterator.getSelectColumns();
-+ if (!xColumns.is())
-+ {
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceString(
-+ STR_INVALID_COLUMN_SELECTION
-+ ) );
-+ ::dbtools::throwGenericSQLException(sError,NULL);
-+ }
-+ m_xMetaData->setKabFields(xColumns);
-+}
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::resetParameters() const throw(SQLException)
-+{
-+ m_nParameterIndex = 0;
-+}
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::getNextParameter(::rtl::OUString &rParameter) const throw(SQLException)
-+{
-+ if (m_nParameterIndex >= (sal_Int32) (m_aParameterRow->get()).size())
-+ {
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceString(
-+ STR_INVALID_PARA_COUNT
-+ ) );
-+ ::dbtools::throwGenericSQLException(sError,*(KabPreparedStatement *) this);
-+ } // if (m_nParameterIndex >= (sal_Int32) (*m_aParameterRow).size())
-+
-+ rParameter = (m_aParameterRow->get())[m_nParameterIndex];
-+
-+ m_nParameterIndex++;
-+}
-+// -------------------------------------------------------------------------
-+KabPreparedStatement::KabPreparedStatement(
-+ KabConnection* _pConnection,
-+ const ::rtl::OUString& sql)
-+ : KabPreparedStatement_BASE(_pConnection),
-+ m_sSqlStatement(sql),
-+ m_bPrepared(sal_False),
-+ m_nParameterIndex(0),
-+ m_aParameterRow()
-+{
-+}
-+// -------------------------------------------------------------------------
-+KabPreparedStatement::~KabPreparedStatement()
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::disposing()
-+{
-+ KabPreparedStatement_BASE::disposing();
-+
-+ if (m_aParameterRow.is())
-+ {
-+ m_aParameterRow->get().clear();
-+ m_aParameterRow = NULL;
-+ }
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSetMetaData > SAL_CALL KabPreparedStatement::getMetaData() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ if (!m_xMetaData.is())
-+ {
-+ m_xMetaData = new KabResultSetMetaData(getOwnConnection());
-+ setKabFields();
-+ }
-+ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-+ return xMetaData;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::close() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ // Reset last warning message
-+ try {
-+ clearWarnings ();
-+ KabCommonStatement::close();
-+ }
-+ catch (SQLException &) {
-+ // If we get an error, ignore
-+ }
-+
-+ // Remove this Statement object from the Connection object's
-+ // list
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabPreparedStatement::execute() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ Reference< XResultSet> xRS = KabCommonStatement::executeQuery(m_sSqlStatement);
-+
-+ return xRS.is();
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabPreparedStatement::executeUpdate() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ // same as in statement with the difference that this statement also can contain parameter
-+ return 0;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XConnection > SAL_CALL KabPreparedStatement::getConnection() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ return (Reference< XConnection >) m_pConnection;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabPreparedStatement::executeQuery() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ Reference< XResultSet > rs = KabCommonStatement::executeQuery(m_sSqlStatement);
-+
-+ return rs;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setNull(sal_Int32 parameterIndex, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ checkAndResizeParameters(parameterIndex);
-+
-+ (m_aParameterRow->get())[parameterIndex - 1].setNull();
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setObjectNull(sal_Int32, sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setObjectNull", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setBoolean", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setByte", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setShort", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setInt", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setFloat", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setDouble", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setString(sal_Int32 parameterIndex, const ::rtl::OUString &x) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ checkAndResizeParameters(parameterIndex);
-+
-+ (m_aParameterRow->get())[parameterIndex - 1] = x;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setBytes", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setDate", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setTime", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setTimestamp", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setBinaryStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setBinaryStream", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setCharacterStream(sal_Int32, const Reference< ::com::sun::star::io::XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setCharacterStream", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setObject(sal_Int32 parameterIndex, const Any& x) throw(SQLException, RuntimeException)
-+{
-+ if(!::dbtools::implSetObject(this,parameterIndex,x))
-+ {
-+ throw SQLException();
-+ }
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setObjectWithInfo(sal_Int32, const Any&, sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setObjectWithInfo", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setRef(sal_Int32, const Reference< XRef >&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setRef", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setBlob(sal_Int32, const Reference< XBlob >&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setBlob", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setClob(sal_Int32, const Reference< XClob >&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setClob", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::setArray(sal_Int32, const Reference< XArray >&) throw(SQLException, RuntimeException)
-+{
-+
-+
-+
-+::dbtools::throwFunctionNotSupportedException("setArray", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabPreparedStatement::clearParameters() throw(SQLException, RuntimeException)
-+{
-+::dbtools::throwFunctionNotSupportedException("clearParameters", NULL);
-+}
-+// -------------------------------------------------------------------------
-+void KabPreparedStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-+{
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ break;
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ break;
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ break;
-+ case PROPERTY_ID_USEBOOKMARKS:
-+ break;
-+ default:
-+ KabCommonStatement::setFastPropertyValue_NoBroadcast(nHandle,rValue);
-+ }
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KPreparedStatement.hxx b/connectivity/source/drivers/tdeab/KPreparedStatement.hxx
-new file mode 100644
-index 0000000..25a7a01
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KPreparedStatement.hxx
-@@ -0,0 +1,123 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-+#define _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-+
-+#include "KStatement.hxx"
-+#include "KResultSetMetaData.hxx"
-+#include <connectivity/FValue.hxx>
-+#include <com/sun/star/sdbc/XParameters.hpp>
-+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-+#include <cppuhelper/implbase4.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+
-+ class OBoundParam;
-+ typedef ::cppu::ImplInheritanceHelper4< KabCommonStatement,
-+ ::com::sun::star::sdbc::XPreparedStatement,
-+ ::com::sun::star::sdbc::XParameters,
-+ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-+ ::com::sun::star::lang::XServiceInfo> KabPreparedStatement_BASE;
-+
-+ class KabPreparedStatement : public KabPreparedStatement_BASE
-+ {
-+ protected:
-+ ::rtl::OUString m_sSqlStatement;
-+ ::rtl::Reference< KabResultSetMetaData >
-+ m_xMetaData;
-+ sal_Bool m_bPrepared;
-+ mutable sal_Int32 m_nParameterIndex;
-+ OValueRow m_aParameterRow;
-+
-+ void checkAndResizeParameters(sal_Int32 nParams) throw(::com::sun::star::sdbc::SQLException);
-+ void setKabFields() const throw(::com::sun::star::sdbc::SQLException);
-+
-+ protected:
-+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-+ sal_Int32 nHandle,
-+ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-+
-+ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-+ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-+ virtual ~KabPreparedStatement();
-+
-+ public:
-+ DECLARE_SERVICE_INFO();
-+ KabPreparedStatement(KabConnection* _pConnection, const ::rtl::OUString& sql);
-+
-+ // OComponentHelper
-+ virtual void SAL_CALL disposing();
-+
-+ // XPreparedStatement
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL executeUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XParameters
-+ virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XCloseable
-+ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XResultSetMetaDataSupplier
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_PREPAREDSTATEMENT_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KResultSet.cxx b/connectivity/source/drivers/tdeab/KResultSet.cxx
-new file mode 100644
-index 0000000..a0d6b07
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KResultSet.cxx
-@@ -0,0 +1,991 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KResultSet.hxx"
-+#include "KResultSetMetaData.hxx"
-+#include "KConnection.hxx"
-+#include "kcondition.hxx"
-+#include "korder.hxx"
-+#include "kfields.hxx"
-+#include <com/sun/star/beans/PropertyAttribute.hpp>
-+#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-+#include "TConnection.hxx"
-+#include <connectivity/dbexception.hxx>
-+#include "resource/tdeab_res.hrc"
-+#include "resource/sharedresources.hxx"
-+
-+using namespace connectivity::kab;
-+using namespace cppu;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::beans;
-+using namespace com::sun::star::sdbc;
-+using namespace com::sun::star::sdbcx;
-+using namespace com::sun::star::io;
-+using namespace com::sun::star::util;
-+
-+IMPLEMENT_SERVICE_INFO(KabResultSet, "com.sun.star.sdbc.drivers.KabResultSet", "com.sun.star.sdbc.ResultSet");
-+// -------------------------------------------------------------------------
-+KabResultSet::KabResultSet(KabCommonStatement* pStmt)
-+ : KabResultSet_BASE(m_aMutex),
-+ OPropertySetHelper(KabResultSet_BASE::rBHelper),
-+ m_xStatement(pStmt),
-+ m_xMetaData(NULL),
-+ m_aKabAddressees(),
-+ m_nRowPos(-1),
-+ m_bWasNull(sal_True)
-+{
-+}
-+// -------------------------------------------------------------------------
-+KabResultSet::~KabResultSet()
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::allKabAddressees()
-+{
-+ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-+ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-+
-+ m_aKabAddressees = pAddressBook->allAddressees();
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::someKabAddressees(const KabCondition *pCondition)
-+{
-+ KabConnection* pConnection = static_cast< KabConnection *>(m_xStatement->getConnection().get());
-+ KABC::AddressBook* pAddressBook = pConnection->getAddressBook();
-+
-+ KABC::AddressBook::Iterator iterator;
-+
-+ for (iterator = pAddressBook->begin();
-+ iterator != pAddressBook->end();
-+ ++iterator)
-+ {
-+ if (pCondition->eval(*iterator))
-+ m_aKabAddressees.push_back(*iterator);
-+ }
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::sortKabAddressees(const KabOrder *pOrder)
-+{
-+ // We do not use class KAddresseeList, which has a sorting algorithm in it, because
-+ // it uses templates. It would expand to more or less the same code as the one
-+ // which follows, but it would need not be called in a much less convenient way.
-+
-+ KABC::Addressee::List::Iterator
-+ begin = m_aKabAddressees.begin(),
-+ end = m_aKabAddressees.end(),
-+ iterator;
-+
-+ // Bubble sort. Feel free to implement a better algorithm.
-+ while (begin != end)
-+ {
-+ end--;
-+ for (iterator = begin; iterator != end; ++iterator)
-+ {
-+ if (pOrder->compare(*iterator, *end) > 0)
-+ qSwap(*iterator, *end);
-+ }
-+ }
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::disposing()
-+{
-+ OPropertySetHelper::disposing();
-+
-+ ::osl::MutexGuard aGuard(m_aMutex);
-+
-+m_xStatement.clear();
-+m_xMetaData.clear();
-+}
-+// -------------------------------------------------------------------------
-+Any SAL_CALL KabResultSet::queryInterface(const Type & rType) throw(RuntimeException)
-+{
-+ Any aRet = OPropertySetHelper::queryInterface(rType);
-+ if (!aRet.hasValue())
-+ aRet = KabResultSet_BASE::queryInterface(rType);
-+ return aRet;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::acquire() throw()
-+{
-+ KabResultSet_BASE::acquire();
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::release() throw()
-+{
-+ KabResultSet_BASE::release();
-+}
-+// -------------------------------------------------------------------------
-+Sequence< Type > SAL_CALL KabResultSet::getTypes() throw(RuntimeException)
-+{
-+ OTypeCollection aTypes(
-+ ::getCppuType( (const Reference< ::com::sun::star::beans::XMultiPropertySet >*) 0),
-+ ::getCppuType( (const Reference< ::com::sun::star::beans::XFastPropertySet >*) 0),
-+ ::getCppuType( (const Reference< ::com::sun::star::beans::XPropertySet >*) 0));
-+
-+ return comphelper::concatSequences(aTypes.getTypes(), KabResultSet_BASE::getTypes());
-+}
-+// -------------------------------------------------------------------------
-+::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabResultSet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
-+{
-+ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSet::findColumn(const ::rtl::OUString& columnName) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // find the first column with the name columnName
-+ Reference< XResultSetMetaData > xMeta = getMetaData();
-+ sal_Int32 nLen = xMeta->getColumnCount();
-+
-+ for (sal_Int32 i = 1; i <= nLen; ++i)
-+ if (xMeta->isCaseSensitive(i) ?
-+ columnName == xMeta->getColumnName(i) :
-+ columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)))
-+ return i;
-+
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-+ STR_INVALID_COLUMNNAME,
-+ "$columnname$",columnName
-+ ) );
-+ ::dbtools::throwGenericSQLException(sError,NULL);
-+
-+ // Unreachable:
-+ OSL_ASSERT(false);
-+ return 0;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSet::getString(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ ::rtl::OUString aRet;
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-+
-+ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-+ {
-+ sal_Int32 nFieldNumber = m_xMetaData->fieldAtColumn(columnIndex);
-+ TQString aQtName;
-+
-+ switch (nFieldNumber)
-+ {
-+ case KAB_FIELD_REVISION:
-+// trigger an exception here
-+m_bWasNull = true;
-+return aRet;
-+ default:
-+ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->value(m_aKabAddressees[m_nRowPos]);
-+ }
-+// TDE address book currently does not use NULL values.
-+// But it might do it someday
-+ if (!aQtName.isNull())
-+ {
-+ m_bWasNull = false;
-+ aRet = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-+ return aRet;
-+ }
-+ }
-+// Trigger an exception ?
-+ m_bWasNull = true;
-+ return aRet;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::getBoolean(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getBoolean", NULL);
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int8 SAL_CALL KabResultSet::getByte(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getByte", NULL);
-+
-+ sal_Int8 nRet = 0;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int16 SAL_CALL KabResultSet::getShort(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getShort", NULL);
-+
-+ sal_Int16 nRet = 0;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSet::getInt(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getInt", NULL);
-+
-+ sal_Int32 nRet = 0;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int64 SAL_CALL KabResultSet::getLong(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getLong", NULL);
-+
-+ return sal_Int64();
-+}
-+// -------------------------------------------------------------------------
-+float SAL_CALL KabResultSet::getFloat(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getFloat", NULL);
-+
-+ float nVal(0);
-+ return nVal;
-+}
-+// -------------------------------------------------------------------------
-+double SAL_CALL KabResultSet::getDouble(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getDouble", NULL);
-+
-+ double nRet = 0;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+Sequence< sal_Int8 > SAL_CALL KabResultSet::getBytes(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("", NULL);
-+
-+ return Sequence< sal_Int8 >();
-+}
-+// -------------------------------------------------------------------------
-+Date SAL_CALL KabResultSet::getDate(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getDate", NULL);
-+
-+ Date aRet;
-+ return aRet;
-+}
-+// -------------------------------------------------------------------------
-+Time SAL_CALL KabResultSet::getTime(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getTime", NULL);
-+
-+ Time nRet;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+DateTime SAL_CALL KabResultSet::getTimestamp(sal_Int32 columnIndex) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ DateTime nRet;
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+
-+ if (m_nRowPos != -1 && m_nRowPos != nAddressees && m_xMetaData.is())
-+ {
-+ KabResultSetMetaData *pMeta = static_cast<KabResultSetMetaData *>(m_xMetaData.get());
-+ sal_Int32 nFieldNumber = pMeta->fieldAtColumn(columnIndex);
-+
-+ if (nFieldNumber == KAB_FIELD_REVISION)
-+ {
-+ TQDateTime nRevision(m_aKabAddressees[m_nRowPos].revision());
-+
-+ if (!nRevision.isNull())
-+ {
-+ m_bWasNull = false;
-+ nRet.Year = nRevision.date().year();
-+ nRet.Month = nRevision.date().month();
-+ nRet.Day = nRevision.date().day();
-+ nRet.Hours = nRevision.time().hour();
-+ nRet.Minutes = nRevision.time().minute();
-+ nRet.Seconds = nRevision.time().second();
-+ nRet.HundredthSeconds = nRevision.time().msec() / 10;
-+ return nRet;
-+ }
-+ }
-+ else {
-+ ;
-+ }
-+// trigger an exception here
-+ }
-+// Trigger an exception ?
-+ m_bWasNull = true;
-+ return nRet;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XInputStream > SAL_CALL KabResultSet::getBinaryStream(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getBinaryStream", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XInputStream > SAL_CALL KabResultSet::getCharacterStream(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getCharacterStream", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Any SAL_CALL KabResultSet::getObject(sal_Int32, const Reference< ::com::sun::star::container::XNameAccess >&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getObject", NULL);
-+
-+ return Any();
-+}
-+// -------------------------------------------------------------------------
-+Reference< XRef > SAL_CALL KabResultSet::getRef(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getRef", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XBlob > SAL_CALL KabResultSet::getBlob(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getBlob", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XClob > SAL_CALL KabResultSet::getClob(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getClob", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XArray > SAL_CALL KabResultSet::getArray(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+::dbtools::throwFunctionNotSupportedException("getArray", NULL);
-+
-+ return NULL;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSetMetaData > SAL_CALL KabResultSet::getMetaData() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ if (!m_xMetaData.is())
-+ m_xMetaData = new KabResultSetMetaData(m_xStatement->getOwnConnection());
-+
-+ Reference< XResultSetMetaData > xMetaData = m_xMetaData.get();
-+ return xMetaData;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::isBeforeFirst() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ if (m_nRowPos == -1)
-+ return sal_True;
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::isAfterLast() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ if (m_nRowPos == nAddressees)
-+ return sal_True;
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::isFirst() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ if (m_nRowPos == 0)
-+ return sal_True;
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::isLast() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ if (m_nRowPos == nAddressees - 1)
-+ return sal_True;
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::beforeFirst() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // move before the first row
-+ m_nRowPos = -1;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::afterLast() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // move after the last row
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ m_nRowPos = nAddressees;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::close() throw(SQLException, RuntimeException)
-+{
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+ }
-+ dispose();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::first() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ if (nAddressees == 0)
-+ return sal_False;
-+
-+ m_nRowPos = 0;
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::last() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ if (nAddressees == 0)
-+ return sal_False;
-+
-+ m_nRowPos = nAddressees - 1;
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSet::getRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return m_nRowPos;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::absolute(sal_Int32 row) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+ if (row <= -1 ||
-+ row >= nAddressees)
-+ return sal_False;
-+
-+ m_nRowPos = row;
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::relative(sal_Int32 row) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return absolute(m_nRowPos + row);
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::next() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return absolute(m_nRowPos + 1);
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::previous() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return absolute(m_nRowPos - 1);
-+}
-+// -------------------------------------------------------------------------
-+Reference< XInterface > SAL_CALL KabResultSet::getStatement() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ Reference< XStatement > xStatement = m_xStatement.get();
-+ return xStatement;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::rowDeleted() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::rowInserted() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::rowUpdated() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::wasNull() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return m_bWasNull;
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::cancel() throw(RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::clearWarnings() throw(SQLException, RuntimeException)
-+{
-+}
-+// -------------------------------------------------------------------------
-+Any SAL_CALL KabResultSet::getWarnings() throw(SQLException, RuntimeException)
-+{
-+ return Any();
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::insertRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // you only have to implement this if you want to insert new rows
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // only when you allow updates
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::deleteRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::cancelRowUpdates() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::moveToInsertRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ // only when you allow inserts
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::moveToCurrentRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateNull(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateBoolean(sal_Int32, sal_Bool) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateByte(sal_Int32, sal_Int8) throw(SQLException, RuntimeException)
-+{
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateShort(sal_Int32, sal_Int16) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateInt(sal_Int32, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateLong(sal_Int32, sal_Int64) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -----------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateFloat(sal_Int32, float) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateDouble(sal_Int32, double) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateString(sal_Int32, const ::rtl::OUString&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateBytes(sal_Int32, const Sequence< sal_Int8 >&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateDate(sal_Int32, const Date&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateTime(sal_Int32, const Time&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateTimestamp(sal_Int32, const DateTime&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateBinaryStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateCharacterStream(sal_Int32, const Reference< XInputStream >&, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::refreshRow() throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateObject(sal_Int32, const Any&) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabResultSet::updateNumericObject(sal_Int32, const Any&, sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+}
-+// -------------------------------------------------------------------------
-+// XRowLocate
-+Any SAL_CALL KabResultSet::getBookmark() throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+
-+ if (m_nRowPos != -1 && m_nRowPos != nAddressees)
-+ {
-+ TQString aQtName = m_aKabAddressees[m_nRowPos].uid();
-+ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-+ return makeAny(sUniqueIdentifier);
-+ }
-+ return Any();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::moveToBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+
-+ for (sal_Int32 nRow = 0; nRow < nAddressees; nRow++)
-+ {
-+ TQString aQtName = m_aKabAddressees[nRow].uid();
-+ ::rtl::OUString sUniqueIdentifier = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-+
-+ if (sUniqueIdentifier == sBookmark)
-+ {
-+ m_nRowPos = nRow;
-+ return sal_True;
-+ }
-+ }
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ sal_Int32 nRowSave = m_nRowPos;
-+
-+ if (moveToBookmark(bookmark))
-+ {
-+ sal_Int32 nAddressees = m_aKabAddressees.size();
-+
-+ m_nRowPos += rows;
-+
-+ if (-1 < m_nRowPos && m_nRowPos < nAddressees)
-+ return sal_True;
-+ }
-+
-+ m_nRowPos = nRowSave;
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSet::compareBookmarks(const Any& firstItem, const Any& secondItem) throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ ::rtl::OUString sFirst = comphelper::getString(firstItem);
-+ ::rtl::OUString sSecond = comphelper::getString(secondItem);
-+
-+ if (sFirst < sSecond)
-+ return CompareBookmark::LESS;
-+ if (sFirst > sSecond)
-+ return CompareBookmark::GREATER;
-+ return CompareBookmark::EQUAL;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSet::hasOrderedBookmarks() throw( SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSet::hashBookmark(const Any& bookmark) throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ ::rtl::OUString sBookmark = comphelper::getString(bookmark);
-+
-+ return sBookmark.hashCode();
-+}
-+// -------------------------------------------------------------------------
-+// XDeleteRows
-+Sequence< sal_Int32 > SAL_CALL KabResultSet::deleteRows(const Sequence< Any >&) throw( SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabResultSet_BASE::rBHelper.bDisposed);
-+
-+ return Sequence< sal_Int32 >();
-+}
-+// -------------------------------------------------------------------------
-+IPropertyArrayHelper* KabResultSet::createArrayHelper() const
-+{
-+ Sequence< Property > aProps(6);
-+ Property* pProperties = aProps.getArray();
-+ sal_Int32 nPos = 0;
-+ DECL_PROP1IMPL(CURSORNAME, ::rtl::OUString) PropertyAttribute::READONLY);
-+ DECL_PROP0(FETCHDIRECTION, sal_Int32);
-+ DECL_PROP0(FETCHSIZE, sal_Int32);
-+ DECL_BOOL_PROP1IMPL(ISBOOKMARKABLE) PropertyAttribute::READONLY);
-+ DECL_PROP1IMPL(RESULTSETCONCURRENCY,sal_Int32) PropertyAttribute::READONLY);
-+ DECL_PROP1IMPL(RESULTSETTYPE, sal_Int32) PropertyAttribute::READONLY);
-+
-+ return new OPropertyArrayHelper(aProps);
-+}
-+// -------------------------------------------------------------------------
-+IPropertyArrayHelper & KabResultSet::getInfoHelper()
-+{
-+ return *static_cast<KabResultSet*>(this)->getArrayHelper();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool KabResultSet::convertFastPropertyValue(
-+ Any &,
-+ Any &,
-+ sal_Int32 nHandle,
-+ const Any& )
-+ throw (::com::sun::star::lang::IllegalArgumentException)
-+{
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_ISBOOKMARKABLE:
-+ case PROPERTY_ID_CURSORNAME:
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ throw ::com::sun::star::lang::IllegalArgumentException();
-+ break;
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ case PROPERTY_ID_FETCHSIZE:
-+ default:
-+ ;
-+ }
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::setFastPropertyValue_NoBroadcast(
-+ sal_Int32 nHandle,
-+ const Any& )
-+ throw (Exception)
-+{
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_ISBOOKMARKABLE:
-+ case PROPERTY_ID_CURSORNAME:
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ throw Exception();
-+ break;
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ break;
-+ case PROPERTY_ID_FETCHSIZE:
-+ break;
-+ default:
-+ ;
-+ }
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSet::getFastPropertyValue(
-+ Any& _rValue,
-+ sal_Int32 nHandle) const
-+{
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_ISBOOKMARKABLE:
-+ _rValue <<= (sal_Bool)sal_False;
-+ break;
-+ case PROPERTY_ID_CURSORNAME:
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ case PROPERTY_ID_FETCHSIZE:
-+ ;
-+ }
-+}
-+// -----------------------------------------------------------------------------
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KResultSet.hxx b/connectivity/source/drivers/tdeab/KResultSet.hxx
-new file mode 100644
-index 0000000..d68f676
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KResultSet.hxx
-@@ -0,0 +1,228 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_RESULTSET_HXX_
-+#define _CONNECTIVITY_KAB_RESULTSET_HXX_
-+
-+#include "KStatement.hxx"
-+#include "KResultSetMetaData.hxx"
-+#include <shell/tde_headers.h>
-+#include <com/sun/star/sdbc/XRow.hpp>
-+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-+#include <com/sun/star/sdbc/XColumnLocate.hpp>
-+#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-+#include <com/sun/star/sdbc/XRowUpdate.hpp>
-+#include <com/sun/star/sdbcx/XRowLocate.hpp>
-+#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-+#include <cppuhelper/compbase12.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ /*
-+ ** KabResultSet
-+ */
-+ typedef ::cppu::WeakComponentImplHelper12< ::com::sun::star::sdbc::XResultSet,
-+ ::com::sun::star::sdbc::XRow,
-+ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
-+ ::com::sun::star::util::XCancellable,
-+ ::com::sun::star::sdbc::XWarningsSupplier,
-+ ::com::sun::star::sdbc::XResultSetUpdate,
-+ ::com::sun::star::sdbc::XRowUpdate,
-+ ::com::sun::star::sdbcx::XRowLocate,
-+ ::com::sun::star::sdbcx::XDeleteRows,
-+ ::com::sun::star::sdbc::XCloseable,
-+ ::com::sun::star::sdbc::XColumnLocate,
-+ ::com::sun::star::lang::XServiceInfo> KabResultSet_BASE;
-+
-+ class KabResultSet : public comphelper::OBaseMutex,
-+ public KabResultSet_BASE,
-+ public ::cppu::OPropertySetHelper,
-+ public comphelper::OPropertyArrayUsageHelper<KabResultSet>
-+ {
-+ protected:
-+ ::rtl::Reference< KabCommonStatement > m_xStatement; // the statement that has created this result set
-+ ::rtl::Reference< KabResultSetMetaData > m_xMetaData; // the description of the columns in this result set
-+ ::KABC::Addressee::List m_aKabAddressees; // address book entries matching the query
-+ sal_Int32 m_nRowPos; // the current row within the result set
-+ sal_Bool m_bWasNull; // last entry retrieved from this result set was NULL
-+
-+ // OPropertyArrayUsageHelper
-+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-+
-+ // OPropertySetHelper
-+ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-+
-+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-+ ::com::sun::star::uno::Any & rConvertedValue,
-+ ::com::sun::star::uno::Any & rOldValue,
-+ sal_Int32 nHandle,
-+ const ::com::sun::star::uno::Any& rValue)
-+ throw (::com::sun::star::lang::IllegalArgumentException);
-+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-+ sal_Int32 nHandle,
-+ const ::com::sun::star::uno::Any& rValue)
-+ throw (::com::sun::star::uno::Exception);
-+ virtual void SAL_CALL getFastPropertyValue(
-+ ::com::sun::star::uno::Any& rValue,
-+ sal_Int32 nHandle) const;
-+
-+ // you can't delete objects of this type
-+ virtual ~KabResultSet();
-+
-+ public:
-+ DECLARE_SERVICE_INFO();
-+
-+ KabResultSet(KabCommonStatement *pStmt);
-+
-+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > operator *()
-+ {
-+ return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(*(KabResultSet_BASE*) this);
-+ }
-+
-+ void allKabAddressees();
-+ void someKabAddressees(const class KabCondition *pCondition);
-+ void sortKabAddressees(const class KabOrder *pOrder);
-+
-+ // ::cppu::OComponentHelper
-+ virtual void SAL_CALL disposing(void);
-+
-+ // XInterface
-+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL acquire() throw();
-+ virtual void SAL_CALL release() throw();
-+
-+ // XTypeProvider
-+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XPropertySet
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XResultSet
-+ virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XRow
-+ virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XResultSetMetaDataSupplier
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XCancellable
-+ virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XCloseable
-+ virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XWarningsSupplier
-+ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XResultSetUpdate
-+ virtual void SAL_CALL insertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL deleteRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ // XRowUpdate
-+ virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateBytes( sal_Int32 columnIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateBinaryStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XColumnLocate
-+ virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XRowLocate
-+ virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& firstItem, const ::com::sun::star::uno::Any& secondItem ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XDeleteRows
-+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_RESULTSET_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KResultSetMetaData.cxx b/connectivity/source/drivers/tdeab/KResultSetMetaData.cxx
-new file mode 100644
-index 0000000..08dfb05
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KResultSetMetaData.cxx
-@@ -0,0 +1,191 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KResultSetMetaData.hxx"
-+#include "kfields.hxx"
-+#include "KDatabaseMetaData.hxx"
-+#include <com/sun/star/sdbc/DataType.hpp>
-+
-+using namespace connectivity::kab;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::sdbc;
-+
-+KabResultSetMetaData::KabResultSetMetaData(KabConnection* _pConnection)
-+ : m_pConnection(_pConnection),
-+ m_aKabFields()
-+{
-+}
-+// -------------------------------------------------------------------------
-+KabResultSetMetaData::~KabResultSetMetaData()
-+{
-+}
-+// -------------------------------------------------------------------------
-+void KabResultSetMetaData::setKabFields(const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(SQLException)
-+{
-+ OSQLColumns::Vector::const_iterator aIter;
-+ static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name"));
-+
-+ for (aIter = xColumns->get().begin(); aIter != xColumns->get().end(); ++aIter)
-+ {
-+ ::rtl::OUString aFieldName;
-+ sal_uInt32 nFieldNumber;
-+
-+ (*aIter)->getPropertyValue(aName) >>= aFieldName;
-+ nFieldNumber = findKabField(aFieldName);
-+ m_aKabFields.push_back(nFieldNumber);
-+ }
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::getColumnDisplaySize(sal_Int32 column) throw(SQLException, RuntimeException)
-+{
-+ return m_aKabFields[column - 1] < KAB_DATA_FIELDS? 20: 50;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::getColumnType(sal_Int32 column) throw(SQLException, RuntimeException)
-+{
-+ return m_aKabFields[column - 1] == KAB_FIELD_REVISION? DataType::TIMESTAMP: DataType::CHAR;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::getColumnCount() throw(SQLException, RuntimeException)
-+{
-+ return m_aKabFields.size();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isCaseSensitive(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getSchemaName(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnName(sal_Int32 column) throw(SQLException, RuntimeException)
-+{
-+ sal_uInt32 nFieldNumber = m_aKabFields[column - 1];
-+ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-+ TQString aQtName;
-+
-+ switch (nFieldNumber)
-+ {
-+ case KAB_FIELD_REVISION:
-+ aQtName = KABC::Addressee::revisionLabel();
-+ break;
-+ default:
-+ aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->label();
-+ }
-+ ::rtl::OUString aName((const sal_Unicode *) aQtName.ucs2());
-+
-+ return aName;
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getTableName(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return KabDatabaseMetaData::getAddressBookTableName();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getCatalogName(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnTypeName(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnLabel(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnServiceName(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return ::rtl::OUString();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isCurrency(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isAutoIncrement(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isSigned(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::getPrecision(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return 0;
-+}
-+// -----------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::getScale(sal_Int32) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
-+{
-+ return 0;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabResultSetMetaData::isNullable(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return (sal_Int32) sal_True;
-+// TDE address book currently does not use NULL values.
-+// But it might do it someday
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isSearchable(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isReadOnly(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_True;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isDefinitelyWritable(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabResultSetMetaData::isWritable(sal_Int32) throw(SQLException, RuntimeException)
-+{
-+ return sal_False;
-+}
-+// -------------------------------------------------------------------------
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KResultSetMetaData.hxx b/connectivity/source/drivers/tdeab/KResultSetMetaData.hxx
-new file mode 100644
-index 0000000..8a04fc0
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KResultSetMetaData.hxx
-@@ -0,0 +1,95 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-+#define _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-+
-+#include "KConnection.hxx"
-+#include <connectivity/CommonTools.hxx>
-+#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-+#include <cppuhelper/implbase1.hxx>
-+#include <rtl/ref.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ /*
-+ ** KabResultSetMetaData
-+ */
-+ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XResultSetMetaData> KabResultSetMetaData_BASE;
-+
-+ class KabResultSetMetaData : public KabResultSetMetaData_BASE
-+ {
-+ KabConnection* m_pConnection;
-+ ::std::vector<sal_Int32> m_aKabFields; // for each selected column, contains the number
-+ // of the corresponding KAddressBook field
-+
-+ protected:
-+ virtual ~KabResultSetMetaData();
-+
-+ public:
-+ KabResultSetMetaData(KabConnection* _pConnection);
-+
-+ // avoid ambigous cast error from the compiler
-+ inline operator ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > () throw()
-+ { return this; }
-+
-+ void setKabFields(
-+ const ::rtl::Reference<connectivity::OSQLColumns> &xColumns) throw(::com::sun::star::sdbc::SQLException);
-+ inline sal_uInt32 fieldAtColumn(sal_Int32 columnIndex) const
-+ { return m_aKabFields[columnIndex - 1]; }
-+
-+ virtual sal_Int32 SAL_CALL getColumnCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isAutoIncrement( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isCaseSensitive( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isSearchable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isCurrency( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL isNullable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isSigned( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getColumnDisplaySize( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getColumnLabel( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getColumnName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getSchemaName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getPrecision( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getScale( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getTableName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getCatalogName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getColumnType( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getColumnTypeName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isReadOnly( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL isDefinitelyWritable( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getColumnServiceName( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_RESULTSETMETADATA_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KServices.cxx b/connectivity/source/drivers/tdeab/KServices.cxx
-new file mode 100644
-index 0000000..a82b756
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KServices.cxx
-@@ -0,0 +1,180 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KDriver.hxx"
-+#include <cppuhelper/factory.hxx>
-+#include <osl/diagnose.h>
-+
-+using namespace connectivity::kab;
-+using ::rtl::OUString;
-+using ::com::sun::star::uno::Reference;
-+using ::com::sun::star::uno::Sequence;
-+using ::com::sun::star::registry::XRegistryKey;
-+using ::com::sun::star::lang::XSingleServiceFactory;
-+using ::com::sun::star::lang::XMultiServiceFactory;
-+
-+typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
-+ (
-+ const Reference< XMultiServiceFactory > & rServiceManager,
-+ const OUString & rComponentName,
-+ ::cppu::ComponentInstantiation pCreateFunction,
-+ const Sequence< OUString > & rServiceNames,
-+ rtl_ModuleCount* _pTemp
-+ );
-+
-+//***************************************************************************************
-+//
-+// The following C Api must be provided!
-+// It consists in three functions that must be exported by the module
-+//
-+
-+//---------------------------------------------------------------------------------------
-+void REGISTER_PROVIDER(
-+ const OUString& aServiceImplName,
-+ const Sequence< OUString>& Services,
-+ const Reference< ::com::sun::star::registry::XRegistryKey > & xKey)
-+{
-+ OUString aMainKeyName;
-+ aMainKeyName = OUString::createFromAscii("/");
-+ aMainKeyName += aServiceImplName;
-+ aMainKeyName += OUString::createFromAscii("/UNO/SERVICES");
-+
-+ Reference< ::com::sun::star::registry::XRegistryKey > xNewKey( xKey->createKey(aMainKeyName) );
-+ OSL_ENSURE(xNewKey.is(), "KAB::component_writeInfo : could not create a registry key !");
-+
-+ for (sal_Int32 i=0; i<Services.getLength(); ++i)
-+ xNewKey->createKey(Services[i]);
-+}
-+
-+
-+//---------------------------------------------------------------------------------------
-+struct ProviderRequest
-+{
-+ Reference< XSingleServiceFactory > xRet;
-+ Reference< XMultiServiceFactory > const xServiceManager;
-+ OUString const sImplementationName;
-+
-+ ProviderRequest(
-+ void* pServiceManager,
-+ sal_Char const* pImplementationName
-+ )
-+ : xServiceManager(reinterpret_cast<XMultiServiceFactory*>(pServiceManager))
-+ , sImplementationName(OUString::createFromAscii(pImplementationName))
-+ {
-+ }
-+
-+ inline
-+ sal_Bool CREATE_PROVIDER(
-+ const OUString& Implname,
-+ const Sequence< OUString > & Services,
-+ ::cppu::ComponentInstantiation Factory,
-+ createFactoryFunc creator
-+ )
-+ {
-+ if (!xRet.is() && (Implname == sImplementationName))
-+ try
-+ {
-+ xRet = creator( xServiceManager, sImplementationName,Factory, Services,0);
-+ }
-+ catch(...)
-+ {
-+ }
-+ return xRet.is();
-+ }
-+
-+ void* getProvider() const { return xRet.get(); }
-+};
-+
-+//---------------------------------------------------------------------------------------
-+
-+extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
-+ const sal_Char **ppEnvTypeName,
-+ uno_Environment **
-+ )
-+{
-+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-+}
-+
-+//---------------------------------------------------------------------------------------
-+extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-+ void*,
-+ void* pRegistryKey
-+ )
-+{
-+ if (pRegistryKey)
-+ try
-+ {
-+ Reference< ::com::sun::star::registry::XRegistryKey > xKey(reinterpret_cast< ::com::sun::star::registry::XRegistryKey*>(pRegistryKey));
-+
-+ REGISTER_PROVIDER(
-+ KabDriver::getImplementationName_Static(),
-+ KabDriver::getSupportedServiceNames_Static(), xKey);
-+
-+ return sal_True;
-+ }
-+ catch (::com::sun::star::registry::InvalidRegistryException& )
-+ {
-+ OSL_ENSURE(sal_False, "KAB::component_writeInfo : could not create a registry key ! ## InvalidRegistryException !");
-+ }
-+
-+ return sal_False;
-+}
-+
-+//---------------------------------------------------------------------------------------
-+extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(
-+ const sal_Char* pImplementationName,
-+ void* pServiceManager,
-+ void*)
-+{
-+ void* pRet = 0;
-+ if (pServiceManager)
-+ {
-+ ProviderRequest aReq(pServiceManager,pImplementationName);
-+
-+ aReq.CREATE_PROVIDER(
-+ KabDriver::getImplementationName_Static(),
-+ KabDriver::getSupportedServiceNames_Static(),
-+ &KabDriver::Create,
-+ ::cppu::createSingleFactory)
-+ ;
-+
-+ if (aReq.xRet.is())
-+ aReq.xRet->acquire();
-+
-+ pRet = aReq.getProvider();
-+ }
-+
-+ return pRet;
-+};
-+
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KStatement.cxx b/connectivity/source/drivers/tdeab/KStatement.cxx
-new file mode 100644
-index 0000000..1301349
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KStatement.cxx
-@@ -0,0 +1,588 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KStatement.hxx"
-+#include "KConnection.hxx"
-+#include "KDriver.hxx"
-+#include "KResultSet.hxx"
-+#include "KResultSetMetaData.hxx"
-+#include "kcondition.hxx"
-+#include "korder.hxx"
-+#include "TConnection.hxx"
-+#include <connectivity/dbexception.hxx>
-+#include "resource/tdeab_res.hrc"
-+#include "resource/sharedresources.hxx"
-+
-+
-+#if OSL_DEBUG_LEVEL > 0
-+# define OUtoCStr( x ) ( ::rtl::OUStringToOString ( (x), RTL_TEXTENCODING_ASCII_US).getStr())
-+#else /* OSL_DEBUG_LEVEL */
-+# define OUtoCStr( x ) ("dummy")
-+#endif /* OSL_DEBUG_LEVEL */
-+
-+using namespace connectivity::kab;
-+using namespace com::sun::star::uno;
-+using namespace com::sun::star::lang;
-+using namespace com::sun::star::beans;
-+using namespace com::sun::star::sdbc;
-+using namespace com::sun::star::sdbcx;
-+using namespace com::sun::star::container;
-+using namespace com::sun::star::io;
-+using namespace com::sun::star::util;
-+
-+namespace
-+{
-+ void lcl_throwError(sal_uInt16 _nErrorId)
-+ {
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceString(_nErrorId) );
-+ ::dbtools::throwGenericSQLException(sError,NULL);
-+ }
-+}
-+
-+IMPLEMENT_SERVICE_INFO(KabStatement, "com.sun.star.sdbc.drivers.KabStatement", "com.sun.star.sdbc.Statement");
-+//------------------------------------------------------------------------------
-+KabCommonStatement::KabCommonStatement(KabConnection* _pConnection )
-+ : KabCommonStatement_BASE(m_aMutex),
-+ OPropertySetHelper(KabCommonStatement_BASE::rBHelper),
-+ m_aParser(_pConnection->getDriver()->getMSFactory()),
-+ m_aSQLIterator(_pConnection, _pConnection->createCatalog()->getTables(), m_aParser, NULL ),
-+ m_pParseTree(NULL),
-+ m_pConnection(_pConnection),
-+ rBHelper(KabCommonStatement_BASE::rBHelper)
-+{
-+ m_pConnection->acquire();
-+}
-+// -----------------------------------------------------------------------------
-+KabCommonStatement::~KabCommonStatement()
-+{
-+}
-+// -----------------------------------------------------------------------------
-+void KabCommonStatement::disposing()
-+{
-+ KabCommonStatement_BASE::disposing();
-+}
-+// -----------------------------------------------------------------------------
-+void KabCommonStatement::resetParameters() const throw(::com::sun::star::sdbc::SQLException)
-+{
-+ lcl_throwError(STR_PARA_ONLY_PREPARED);
-+}
-+// -----------------------------------------------------------------------------
-+void KabCommonStatement::getNextParameter(::rtl::OUString &) const throw(::com::sun::star::sdbc::SQLException)
-+{
-+ lcl_throwError(STR_PARA_ONLY_PREPARED);
-+}
-+// -----------------------------------------------------------------------------
-+KabCondition *KabCommonStatement::analyseWhereClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-+{
-+ if (pParseNode->count() == 3)
-+ {
-+ const OSQLParseNode *pLeft = pParseNode->getChild(0),
-+ *pMiddle = pParseNode->getChild(1),
-+ *pRight = pParseNode->getChild(2);
-+
-+ // WHERE ( ... ) ?
-+ if (SQL_ISPUNCTUATION(pLeft, "(") && SQL_ISPUNCTUATION(pRight, ")"))
-+ {
-+ return analyseWhereClause(pMiddle);
-+ }
-+ else if (SQL_ISRULE(pParseNode, comparison_predicate))
-+ {
-+ if (pLeft->isToken() && pRight->isToken())
-+ {
-+ switch (pMiddle->getNodeType())
-+ {
-+ case SQL_NODE_EQUAL:
-+ // WHERE 0 = 1
-+ return new KabConditionConstant(pLeft->getTokenValue() == pRight->getTokenValue());
-+
-+ case SQL_NODE_NOTEQUAL:
-+ // WHERE 0 <> 1
-+ // (might not be correct SQL... don't care, handling anyway)
-+ return new KabConditionConstant(pLeft->getTokenValue() != pRight->getTokenValue());
-+
-+ default:
-+ break;
-+ }
-+ }
-+ else if (SQL_ISRULE(pLeft, column_ref))
-+ {
-+ ::rtl::OUString sColumnName,
-+ sTableRange;
-+
-+ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-+
-+ if (pRight->isToken() || SQL_ISRULE(pRight, parameter))
-+ {
-+ ::rtl::OUString sMatchString;
-+
-+ if (pRight->isToken()) // WHERE Name = 'Doe'
-+ sMatchString = pRight->getTokenValue();
-+ else if (SQL_ISRULE(pRight, parameter)) // WHERE Name = ?
-+ getNextParameter(sMatchString);
-+
-+ switch (pMiddle->getNodeType())
-+ {
-+ case SQL_NODE_EQUAL:
-+ // WHERE Name = 'Smith'
-+ return new KabConditionEqual(sColumnName, sMatchString);
-+
-+ case SQL_NODE_NOTEQUAL:
-+ // WHERE Name <> 'Jones'
-+ return new KabConditionDifferent(sColumnName, sMatchString);
-+
-+ default:
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ else if (SQL_ISRULE(pParseNode, search_condition))
-+ {
-+ if (SQL_ISTOKEN(pMiddle, OR))
-+ {
-+ // WHERE Name = 'Smith' OR Name = 'Jones'
-+ return new KabConditionOr(
-+ analyseWhereClause(pLeft),
-+ analyseWhereClause(pRight));
-+ }
-+ }
-+ else if (SQL_ISRULE(pParseNode, boolean_term))
-+ {
-+ if (SQL_ISTOKEN(pMiddle, AND))
-+ {
-+ // WHERE Name = 'Smith' AND "Given Name" = 'Peter'
-+ return new KabConditionAnd(
-+ analyseWhereClause(pLeft),
-+ analyseWhereClause(pRight));
-+ }
-+ }
-+ }
-+ else if (SQL_ISRULE(pParseNode, test_for_null) || SQL_ISRULE(pParseNode, like_predicate))
-+ {
-+ const OSQLParseNode *pLeft = pParseNode->getChild(0);
-+ const OSQLParseNode* pPart2 = pParseNode->getChild(1);
-+ const OSQLParseNode *pMiddleLeft = pPart2->getChild(0),
-+ *pMiddleRight = pPart2->getChild(1),
-+ *pRight = pPart2->getChild(2);
-+
-+ if (SQL_ISRULE(pParseNode, test_for_null))
-+ {
-+ if (SQL_ISRULE(pLeft, column_ref) &&
-+ SQL_ISTOKEN(pMiddleLeft, IS) &&
-+ SQL_ISTOKEN(pRight, NULL))
-+ {
-+ ::rtl::OUString sColumnName,
-+ sTableRange;
-+
-+ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-+
-+ if (SQL_ISTOKEN(pMiddleRight, NOT))
-+ {
-+ // WHERE "Mobile Phone" IS NOT NULL
-+ return new KabConditionNotNull(sColumnName);
-+ }
-+ else
-+ {
-+ // WHERE "Mobile Phone" IS NULL
-+ return new KabConditionNull(sColumnName);
-+ }
-+ }
-+ }
-+ else if (SQL_ISRULE(pParseNode, like_predicate))
-+ {
-+ if (SQL_ISRULE(pLeft, column_ref))
-+ {
-+ ::rtl::OUString sColumnName,
-+ sTableRange;
-+
-+ m_aSQLIterator.getColumnRange(pLeft, sColumnName, sTableRange);
-+
-+ if (pMiddleRight->isToken() || SQL_ISRULE(pMiddleRight, parameter))
-+ {
-+ ::rtl::OUString sMatchString;
-+
-+ if (pMiddleRight->isToken()) // WHERE Name LIKE 'Sm%'
-+ sMatchString = pMiddleRight->getTokenValue();
-+ else if (SQL_ISRULE(pMiddleRight, parameter)) // WHERE Name LIKE ?
-+ getNextParameter(sMatchString);
-+
-+ return new KabConditionSimilar(sColumnName, sMatchString);
-+ }
-+ }
-+ }
-+ }
-+
-+ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-+
-+ // Unreachable:
-+ OSL_ASSERT(false);
-+ return 0;
-+}
-+// -----------------------------------------------------------------------------
-+KabOrder *KabCommonStatement::analyseOrderByClause(const OSQLParseNode *pParseNode) const throw(SQLException)
-+{
-+ if (SQL_ISRULE(pParseNode, ordering_spec_commalist))
-+ {
-+ KabComplexOrder *list = new KabComplexOrder();
-+ sal_uInt32 n = pParseNode->count();
-+
-+ // Iterate through the ordering columns
-+ for (sal_uInt32 i = 0; i < n; i++)
-+ {
-+ list->addOrder
-+ (analyseOrderByClause(pParseNode->getChild(i)));
-+ }
-+
-+ return list;
-+ }
-+ else if (SQL_ISRULE(pParseNode, ordering_spec))
-+ {
-+ if (pParseNode->count() == 2)
-+ {
-+ OSQLParseNode* pColumnRef = pParseNode->getChild(0);
-+ OSQLParseNode* pAscendingDescending = pParseNode->getChild(1);
-+
-+ if (SQL_ISRULE(pColumnRef, column_ref))
-+ {
-+ if (pColumnRef->count() == 3)
-+ pColumnRef = pColumnRef->getChild(2);
-+
-+ if (pColumnRef->count() == 1)
-+ {
-+ ::rtl::OUString sColumnName =
-+ pColumnRef->getChild(0)->getTokenValue();
-+ sal_Bool bAscending =
-+ SQL_ISTOKEN(pAscendingDescending, DESC)?
-+ sal_False:
-+ sal_True;
-+
-+ return new KabSimpleOrder(sColumnName, bAscending);
-+ }
-+ }
-+ }
-+ }
-+ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-+ // Unreachable:
-+ OSL_ASSERT(false);
-+ return 0;
-+}
-+//------------------------------------------------------------------------------
-+sal_Bool KabCommonStatement::isTableKnown(KabResultSet *pResult) const
-+{
-+ // can handle requests like SELECT * FROM addresses addresses
-+ // but cannot handle requests like SELECT * FROM addresses persons
-+ if (m_aSQLIterator.getTables().size() != 1)
-+ return sal_False;
-+
-+ if (m_aSQLIterator.getTables().begin()->first != pResult->getMetaData()->getTableName(0))
-+ return sal_False;
-+
-+ return sal_True;
-+}
-+//------------------------------------------------------------------------------
-+void KabCommonStatement::setKabFields(KabResultSet *pResult) const throw(SQLException)
-+{
-+ ::rtl::Reference<connectivity::OSQLColumns> xColumns; // selected columns
-+ KabResultSetMetaData *pMeta; // meta information - holds the list of KAddressBook fields
-+
-+ xColumns = m_aSQLIterator.getSelectColumns();
-+ if (!xColumns.is())
-+ {
-+ lcl_throwError(STR_INVALID_COLUMN_SELECTION);
-+ }
-+ pMeta = static_cast<KabResultSetMetaData *>(pResult->getMetaData().get());
-+ pMeta->setKabFields(xColumns);
-+}
-+// -------------------------------------------------------------------------
-+void KabCommonStatement::selectAddressees(KabResultSet *pResult) const throw(SQLException)
-+{
-+ const OSQLParseNode *pParseNode;
-+ KabCondition *pCondition;
-+
-+ pParseNode = m_aSQLIterator.getWhereTree();
-+ if (pParseNode != NULL)
-+ {
-+ if (SQL_ISRULE(pParseNode, where_clause))
-+ {
-+ resetParameters();
-+ pParseNode = pParseNode->getChild(1);
-+ pCondition = analyseWhereClause(pParseNode);
-+ if (pCondition->isAlwaysTrue())
-+ pResult->allKabAddressees();
-+ else if (!pCondition->isAlwaysFalse())
-+ pResult->someKabAddressees(pCondition);
-+ delete pCondition;
-+ return;
-+ }
-+ }
-+
-+ // no WHERE clause: get all rows
-+ pResult->allKabAddressees();
-+}
-+// -------------------------------------------------------------------------
-+void KabCommonStatement::sortAddressees(KabResultSet *pResult) const throw(SQLException)
-+{
-+ const OSQLParseNode *pParseNode;
-+ KabOrder *pOrder;
-+
-+ pParseNode = m_aSQLIterator.getOrderTree();
-+ if (pParseNode != NULL)
-+ {
-+ if (SQL_ISRULE(pParseNode, opt_order_by_clause))
-+ {
-+ pParseNode = pParseNode->getChild(2);
-+ pOrder = analyseOrderByClause(pParseNode);
-+ pResult->sortKabAddressees(pOrder);
-+ delete pOrder;
-+ }
-+ }
-+}
-+//-----------------------------------------------------------------------------
-+Any SAL_CALL KabCommonStatement::queryInterface( const Type & rType ) throw(RuntimeException)
-+{
-+ Any aRet = KabCommonStatement_BASE::queryInterface(rType);
-+ if (!aRet.hasValue())
-+ aRet = OPropertySetHelper::queryInterface(rType);
-+ return aRet;
-+}
-+// -------------------------------------------------------------------------
-+Sequence< Type > SAL_CALL KabCommonStatement::getTypes( ) throw(RuntimeException)
-+{
-+ ::cppu::OTypeCollection aTypes( ::getCppuType( (const Reference< XMultiPropertySet > *)0 ),
-+ ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
-+ ::getCppuType( (const Reference< XPropertySet > *)0 ));
-+
-+ return comphelper::concatSequences(aTypes.getTypes(),KabCommonStatement_BASE::getTypes());
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabCommonStatement::cancel( ) throw(RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+ // cancel the current sql statement
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabCommonStatement::close( ) throw(SQLException, RuntimeException)
-+{
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ }
-+ dispose();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool SAL_CALL KabCommonStatement::execute(
-+ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ Reference< XResultSet > xRS = executeQuery(sql);
-+
-+ return xRS.is();
-+}
-+// -------------------------------------------------------------------------
-+Reference< XResultSet > SAL_CALL KabCommonStatement::executeQuery(
-+ const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+OSL_TRACE("TDE Address book - SQL Request: %s", OUtoCStr(sql));
-+
-+ KabResultSet* pResult = new KabResultSet(this);
-+ Reference< XResultSet > xRS = pResult;
-+ ::rtl::OUString aErr;
-+
-+ m_pParseTree = m_aParser.parseTree(aErr, sql);
-+ if (m_pParseTree == NULL)
-+ throw SQLException(aErr, *this, aErr, 0, Any());
-+
-+ m_aSQLIterator.setParseTree(m_pParseTree);
-+ m_aSQLIterator.traverseAll();
-+ switch (m_aSQLIterator.getStatementType())
-+ {
-+ case SQL_STATEMENT_SELECT:
-+ if (isTableKnown(pResult)) // FROM which table ?
-+ {
-+ setKabFields(pResult); // SELECT which columns ?
-+ selectAddressees(pResult); // WHERE which condition ?
-+ sortAddressees(pResult); // ORDER BY which columns ?
-+// To be continued: DISTINCT
-+// etc...
-+ }
-+ break;
-+
-+ default:
-+// To be continued: UPDATE
-+// DELETE
-+// etc...
-+ lcl_throwError(STR_QUERY_TOO_COMPLEX);
-+ }
-+
-+ return xRS;
-+}
-+// -------------------------------------------------------------------------
-+Reference< XConnection > SAL_CALL KabCommonStatement::getConnection( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ // just return our connection here
-+ return (Reference< XConnection >) m_pConnection;
-+}
-+// -------------------------------------------------------------------------
-+sal_Int32 SAL_CALL KabCommonStatement::executeUpdate( const ::rtl::OUString& ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ // the return values gives information about how many rows are affected by executing the sql statement
-+ return 0;
-+}
-+// -------------------------------------------------------------------------
-+Any SAL_CALL KabCommonStatement::getWarnings( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ return makeAny(m_aLastWarning);
-+}
-+// -------------------------------------------------------------------------
-+void SAL_CALL KabCommonStatement::clearWarnings( ) throw(SQLException, RuntimeException)
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ checkDisposed(KabCommonStatement_BASE::rBHelper.bDisposed);
-+
-+ m_aLastWarning = SQLWarning();
-+}
-+// -------------------------------------------------------------------------
-+::cppu::IPropertyArrayHelper* KabCommonStatement::createArrayHelper( ) const
-+{
-+ // this properties are defined by the service statement
-+ // they must be in alphabetic order
-+ Sequence< Property > aProps(10);
-+ Property* pProperties = aProps.getArray();
-+ sal_Int32 nPos = 0;
-+ DECL_PROP0(CURSORNAME, ::rtl::OUString);
-+ DECL_BOOL_PROP0(ESCAPEPROCESSING);
-+ DECL_PROP0(FETCHDIRECTION,sal_Int32);
-+ DECL_PROP0(FETCHSIZE, sal_Int32);
-+ DECL_PROP0(MAXFIELDSIZE,sal_Int32);
-+ DECL_PROP0(MAXROWS, sal_Int32);
-+ DECL_PROP0(QUERYTIMEOUT,sal_Int32);
-+ DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
-+ DECL_PROP0(RESULTSETTYPE,sal_Int32);
-+ DECL_BOOL_PROP0(USEBOOKMARKS);
-+
-+ return new ::cppu::OPropertyArrayHelper(aProps);
-+}
-+// -------------------------------------------------------------------------
-+::cppu::IPropertyArrayHelper & KabCommonStatement::getInfoHelper()
-+{
-+ return *const_cast<KabCommonStatement*>(this)->getArrayHelper();
-+}
-+// -------------------------------------------------------------------------
-+sal_Bool KabCommonStatement::convertFastPropertyValue(
-+ Any &,
-+ Any &,
-+ sal_Int32,
-+ const Any&) throw (::com::sun::star::lang::IllegalArgumentException)
-+{
-+ sal_Bool bConverted = sal_False;
-+ // here we have to try to convert
-+ return bConverted;
-+}
-+// -------------------------------------------------------------------------
-+void KabCommonStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any&) throw (Exception)
-+{
-+ // set the value to whatever is nescessary
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_QUERYTIMEOUT:
-+ case PROPERTY_ID_MAXFIELDSIZE:
-+ case PROPERTY_ID_MAXROWS:
-+ case PROPERTY_ID_CURSORNAME:
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ case PROPERTY_ID_FETCHSIZE:
-+ case PROPERTY_ID_ESCAPEPROCESSING:
-+ case PROPERTY_ID_USEBOOKMARKS:
-+ default:
-+ ;
-+ }
-+}
-+// -------------------------------------------------------------------------
-+void KabCommonStatement::getFastPropertyValue(Any&,sal_Int32 nHandle) const
-+{
-+ switch (nHandle)
-+ {
-+ case PROPERTY_ID_QUERYTIMEOUT:
-+ case PROPERTY_ID_MAXFIELDSIZE:
-+ case PROPERTY_ID_MAXROWS:
-+ case PROPERTY_ID_CURSORNAME:
-+ case PROPERTY_ID_RESULTSETCONCURRENCY:
-+ case PROPERTY_ID_RESULTSETTYPE:
-+ case PROPERTY_ID_FETCHDIRECTION:
-+ case PROPERTY_ID_FETCHSIZE:
-+ case PROPERTY_ID_ESCAPEPROCESSING:
-+ case PROPERTY_ID_USEBOOKMARKS:
-+ default:
-+ ;
-+ }
-+}
-+// -----------------------------------------------------------------------------
-+void SAL_CALL KabCommonStatement::acquire() throw()
-+{
-+ KabCommonStatement_BASE::acquire();
-+}
-+// -----------------------------------------------------------------------------
-+void SAL_CALL KabCommonStatement::release() throw()
-+{
-+ KabCommonStatement_BASE::release();
-+}
-+// -----------------------------------------------------------------------------
-+Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL KabCommonStatement::getPropertySetInfo( ) throw(RuntimeException)
-+{
-+ return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-+}
-+// -----------------------------------------------------------------------------
-+KabStatement::KabStatement(KabConnection* _pConnection)
-+ : KabStatement_BASE(_pConnection)
-+{
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KStatement.hxx b/connectivity/source/drivers/tdeab/KStatement.hxx
-new file mode 100644
-index 0000000..c5f6564
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KStatement.hxx
-@@ -0,0 +1,174 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_STATEMENT_HXX_
-+#define _CONNECTIVITY_KAB_STATEMENT_HXX_
-+
-+#include "KConnection.hxx"
-+#include <list>
-+#include "connectivity/sqliterator.hxx"
-+#include "connectivity/sqlparse.hxx"
-+#include <com/sun/star/sdbc/XStatement.hpp>
-+#include <com/sun/star/util/XCancellable.hpp>
-+#include <cppuhelper/compbase4.hxx>
-+#include <cppuhelper/implbase1.hxx>
-+#include <comphelper/proparrhlp.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ typedef ::cppu::WeakComponentImplHelper4< ::com::sun::star::sdbc::XStatement,
-+ ::com::sun::star::sdbc::XWarningsSupplier,
-+ ::com::sun::star::util::XCancellable,
-+ ::com::sun::star::sdbc::XCloseable> KabCommonStatement_BASE;
-+
-+ //**************************************************************
-+ // Class KabCommonStatement
-+ // is a base class for the normal statement and for the prepared statement
-+ //**************************************************************
-+ class KabCommonStatement : public comphelper::OBaseMutex,
-+ public KabCommonStatement_BASE,
-+ public ::cppu::OPropertySetHelper,
-+ public comphelper::OPropertyArrayUsageHelper<KabCommonStatement>
-+
-+ {
-+ ::com::sun::star::sdbc::SQLWarning m_aLastWarning;
-+
-+ protected:
-+ ::std::list< ::rtl::OUString> m_aBatchList;
-+ connectivity::OSQLParser m_aParser;
-+ connectivity::OSQLParseTreeIterator m_aSQLIterator;
-+ connectivity::OSQLParseNode* m_pParseTree;
-+ KabConnection* m_pConnection; // The owning Connection object
-+
-+ protected:
-+ class KabCondition *analyseWhereClause(
-+ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-+ class KabOrder *analyseOrderByClause(
-+ const OSQLParseNode *pParseNode) const throw(::com::sun::star::sdbc::SQLException);
-+ sal_Bool isTableKnown(class KabResultSet *pResult) const;
-+ void setKabFields(class KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-+ void selectAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-+ void sortAddressees(KabResultSet *pResult) const throw(::com::sun::star::sdbc::SQLException);
-+
-+ // OPropertyArrayUsageHelper
-+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
-+
-+ // OPropertySetHelper
-+ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
-+ ::com::sun::star::uno::Any & rConvertedValue,
-+ ::com::sun::star::uno::Any & rOldValue,
-+ sal_Int32 nHandle,
-+ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::lang::IllegalArgumentException);
-+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
-+ sal_Int32 nHandle,
-+ const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-+ virtual void SAL_CALL getFastPropertyValue(
-+ ::com::sun::star::uno::Any& rValue,
-+ sal_Int32 nHandle) const;
-+
-+ virtual void resetParameters() const throw(::com::sun::star::sdbc::SQLException);
-+ virtual void getNextParameter(::rtl::OUString &rParameter) const throw(::com::sun::star::sdbc::SQLException);
-+ virtual ~KabCommonStatement();
-+
-+ public:
-+ ::cppu::OBroadcastHelper& rBHelper;
-+
-+ KabCommonStatement(KabConnection *_pConnection);
-+ using KabCommonStatement_BASE::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
-+
-+ // OComponentHelper
-+ virtual void SAL_CALL disposing();
-+
-+ // XInterface
-+ virtual void SAL_CALL release() throw();
-+ virtual void SAL_CALL acquire() throw();
-+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
-+ const ::com::sun::star::uno::Type & rType
-+ ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XTypeProvider
-+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(
-+ ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XPropertySet
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(
-+ ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XStatement
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(
-+ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL executeUpdate(
-+ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL execute(
-+ const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection(
-+ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XWarningsSupplier
-+ virtual ::com::sun::star::uno::Any SAL_CALL getWarnings(
-+ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL clearWarnings(
-+ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XCancellable
-+ virtual void SAL_CALL cancel(
-+ ) throw(::com::sun::star::uno::RuntimeException);
-+
-+ // XCloseable
-+ virtual void SAL_CALL close(
-+ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-+
-+ // other methods
-+ inline KabConnection* getOwnConnection() const { return m_pConnection; }
-+ };
-+
-+ //**************************************************************
-+ // Class KabStatement
-+ //**************************************************************
-+ typedef ::cppu::ImplInheritanceHelper1<
-+ KabCommonStatement, ::com::sun::star::lang::XServiceInfo > KabStatement_BASE;
-+
-+ class KabStatement : public KabStatement_BASE
-+ {
-+ protected:
-+ virtual ~KabStatement() { }
-+
-+ public:
-+ KabStatement(KabConnection* _pConnection);
-+ DECLARE_SERVICE_INFO();
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_STATEMENT_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KTable.cxx b/connectivity/source/drivers/tdeab/KTable.cxx
-new file mode 100644
-index 0000000..6103ce9
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KTable.cxx
-@@ -0,0 +1,100 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KTable.hxx"
-+#include "KTables.hxx"
-+#include "KColumns.hxx"
-+#include "KCatalog.hxx"
-+
-+using namespace connectivity::kab;
-+using namespace connectivity;
-+using namespace ::comphelper;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::beans;
-+using namespace ::com::sun::star::sdbcx;
-+using namespace ::com::sun::star::sdbc;
-+using namespace ::com::sun::star::container;
-+using namespace ::com::sun::star::lang;
-+
-+// -------------------------------------------------------------------------
-+KabTable::KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection)
-+ : KabTable_TYPEDEF(_pTables, sal_True),
-+ m_pConnection(_pConnection)
-+{
-+ construct();
-+}
-+// -------------------------------------------------------------------------
-+KabTable::KabTable( sdbcx::OCollection* _pTables,
-+ KabConnection* _pConnection,
-+ const ::rtl::OUString& _Name,
-+ const ::rtl::OUString& _Type,
-+ const ::rtl::OUString& _Description ,
-+ const ::rtl::OUString& _SchemaName,
-+ const ::rtl::OUString& _CatalogName
-+ ) : KabTable_TYPEDEF(_pTables,sal_True,
-+ _Name,
-+ _Type,
-+ _Description,
-+ _SchemaName,
-+ _CatalogName),
-+ m_pConnection(_pConnection)
-+{
-+ construct();
-+}
-+// -------------------------------------------------------------------------
-+void KabTable::refreshColumns()
-+{
-+ TStringVector aVector;
-+
-+ if (!isNew())
-+ {
-+ Reference< XResultSet > xResult = m_pConnection->getMetaData()->getColumns(
-+ Any(),
-+ m_SchemaName,
-+ m_Name,
-+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%")));
-+
-+ if (xResult.is())
-+ {
-+ Reference< XRow > xRow(xResult, UNO_QUERY);
-+ while (xResult->next())
-+ aVector.push_back(xRow->getString(4));
-+ }
-+ }
-+
-+ if (m_pColumns)
-+ m_pColumns->reFill(aVector);
-+ else
-+ m_pColumns = new KabColumns(this,m_aMutex,aVector);
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KTable.hxx b/connectivity/source/drivers/tdeab/KTable.hxx
-new file mode 100644
-index 0000000..608cf18
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KTable.hxx
-@@ -0,0 +1,72 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_TABLE_HXX_
-+#define _CONNECTIVITY_KAB_TABLE_HXX_
-+
-+#include "KConnection.hxx"
-+#include "connectivity/sdbcx/VTable.hxx"
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ typedef connectivity::sdbcx::OTable KabTable_TYPEDEF;
-+
-+ ::rtl::OUString getTypeString(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xColProp);
-+
-+ class KabTable : public KabTable_TYPEDEF
-+ {
-+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-+ KabConnection* m_pConnection;
-+
-+ public:
-+ KabTable( sdbcx::OCollection* _pTables, KabConnection* _pConnection);
-+ KabTable( sdbcx::OCollection* _pTables,
-+ KabConnection* _pConnection,
-+ const ::rtl::OUString& _Name,
-+ const ::rtl::OUString& _Type,
-+ const ::rtl::OUString& _Description = ::rtl::OUString(),
-+ const ::rtl::OUString& _SchemaName = ::rtl::OUString(),
-+ const ::rtl::OUString& _CatalogName = ::rtl::OUString()
-+ );
-+
-+ KabConnection* getConnection() { return m_pConnection;}
-+
-+ virtual void refreshColumns();
-+
-+ ::rtl::OUString getTableName() const { return m_Name; }
-+ ::rtl::OUString getSchema() const { return m_SchemaName; }
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_TABLE_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KTables.cxx b/connectivity/source/drivers/tdeab/KTables.cxx
-new file mode 100644
-index 0000000..f63aaa9
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KTables.cxx
-@@ -0,0 +1,94 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "KTables.hxx"
-+#include "KTable.hxx"
-+#include "KCatalog.hxx"
-+#include "KConnection.hxx"
-+#include <comphelper/types.hxx>
-+
-+using namespace connectivity::kab;
-+using namespace connectivity;
-+using namespace ::comphelper;
-+using namespace ::cppu;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::beans;
-+using namespace ::com::sun::star::sdbcx;
-+using namespace ::com::sun::star::sdbc;
-+using namespace ::com::sun::star::container;
-+using namespace ::com::sun::star::lang;
-+
-+sdbcx::ObjectType KabTables::createObject(const ::rtl::OUString& _rName)
-+{
-+ ::rtl::OUString aName,aSchema;
-+ aSchema = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-+ aName = _rName;
-+
-+ Sequence< ::rtl::OUString > aTypes(1);
-+ aTypes[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("%"));
-+ ::rtl::OUString sEmpty;
-+
-+ Reference< XResultSet > xResult = m_xMetaData->getTables(Any(), aSchema, aName, aTypes);
-+
-+ sdbcx::ObjectType xRet = NULL;
-+ if (xResult.is())
-+ {
-+ Reference< XRow > xRow(xResult, UNO_QUERY);
-+ if (xResult->next()) // there can be only one table with this name
-+ {
-+ KabTable* pRet = new KabTable(
-+ this,
-+ static_cast<KabCatalog&>(m_rParent).getConnection(),
-+ aName,
-+ xRow->getString(4),
-+ xRow->getString(5),
-+ sEmpty);
-+ xRet = pRet;
-+ }
-+ }
-+ ::comphelper::disposeComponent(xResult);
-+
-+ return xRet;
-+}
-+// -------------------------------------------------------------------------
-+void KabTables::impl_refresh( ) throw(RuntimeException)
-+{
-+ static_cast<KabCatalog&>(m_rParent).refreshTables();
-+}
-+// -------------------------------------------------------------------------
-+void KabTables::disposing(void)
-+{
-+m_xMetaData.clear();
-+ OCollection::disposing();
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/KTables.hxx b/connectivity/source/drivers/tdeab/KTables.hxx
-new file mode 100644
-index 0000000..8c1c036
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/KTables.hxx
-@@ -0,0 +1,65 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_TABLES_HXX_
-+#define _CONNECTIVITY_KAB_TABLES_HXX_
-+
-+#include "connectivity/sdbcx/VCollection.hxx"
-+#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ class KabTables : public sdbcx::OCollection
-+ {
-+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-+
-+ protected:
-+ virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-+ virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-+
-+ public:
-+ KabTables(
-+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rMetaData,
-+ ::cppu::OWeakObject& _rParent,
-+ ::osl::Mutex& _rMutex,
-+ const TStringVector &_rVector)
-+ : sdbcx::OCollection(_rParent,sal_True,_rMutex,_rVector),
-+ m_xMetaData(_rMetaData)
-+ { }
-+
-+ virtual void SAL_CALL disposing(void);
-+ };
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_TABLES_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/TDEInit.cxx b/connectivity/source/drivers/tdeab/TDEInit.cxx
-new file mode 100644
-index 0000000..375b158
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/TDEInit.cxx
-@@ -0,0 +1,158 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+#include "TDEInit.h"
-+#include <osl/diagnose.h>
-+#include <osl/process.h>
-+#include <shell/tde_headers.h>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ // ===============================================================
-+ // = TDEInit
-+ // ===============================================================
-+ class TDEInit
-+ {
-+ private:
-+ /// TDE application if we own it
-+ static KApplication* s_pKApplication;
-+ static bool s_bDidInsertCatalogue;
-+
-+ public:
-+ static void Init();
-+ static void Shutdown();
-+ };
-+
-+ // ---------------------------------------------------------------
-+ KApplication* TDEInit::s_pKApplication = NULL;
-+ bool TDEInit::s_bDidInsertCatalogue = false;
-+
-+ // ---------------------------------------------------------------
-+ void TDEInit::Init()
-+ {
-+ // TODO: All this is not thread-safe
-+
-+ // we create a TDE application only if it is not already done
-+ if (KApplication::kApplication() == NULL)
-+ {
-+ OSL_ENSURE(s_pKApplication == NULL, "TDEInit::Init: inconsistency in the application pointers!");
-+
-+ char *kabargs[1] = {(char*)"libkab1"};
-+ KCmdLineArgs::init(1, kabargs, "KAddressBook", *kabargs, "Address Book driver", KAB_DRIVER_VERSION);
-+
-+ s_pKApplication = new KApplication(false, false);
-+ }
-+
-+ // set language
-+ rtl_Locale *pProcessLocale;
-+ osl_getProcessLocale(&pProcessLocale);
-+ // sal_Unicode and TQChar are (currently) both 16 bits characters
-+ TQString aLanguage(
-+ (const TQChar *) pProcessLocale->Language->buffer,
-+ (int) pProcessLocale->Language->length);
-+ KGlobal::locale()->setLanguage(aLanguage);
-+
-+ // load TDE address book's localized messages
-+ KGlobal::locale()->insertCatalogue("kaddressbook");
-+ s_bDidInsertCatalogue = true;
-+ }
-+
-+ // ---------------------------------------------------------------
-+ void TDEInit::Shutdown()
-+ {
-+ if ( s_bDidInsertCatalogue )
-+ // this guard is necessary, since TDE 3.3 seems to crash if we remove a catalogue
-+ // which we did not previously insert
-+ KGlobal::locale()->removeCatalogue("kaddressbook");
-+
-+ if ( s_pKApplication != NULL )
-+ {
-+ delete s_pKApplication;
-+ s_pKApplication = NULL;
-+ }
-+ }
-+ }
-+}
-+
-+// =======================================================================
-+namespace
-+{
-+ double normalizeVersion( unsigned int major, unsigned int minor )
-+ {
-+ return major + 1.0 * minor / 1000;
-+ }
-+}
-+
-+// -----------------------------------------------------------------------
-+extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL initKApplication()
-+{
-+ ::connectivity::kab::TDEInit::Init();
-+}
-+
-+// -----------------------------------------------------------------------
-+extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL shutdownKApplication()
-+{
-+ ::connectivity::kab::TDEInit::Shutdown();
-+}
-+// -----------------------------------------------------------------------
-+/** checks whether the TDE version on the system we're running at is supported
-+ by the driver
-+
-+ Has to be called before any other code from this library, in particular,
-+ it has to be called before initKApplication()
-+
-+ If this function returns <code>0</code>, then no other code from this library
-+ has to be called, else the results are unpredictable.
-+
-+ @return
-+ <ul><li><code>0</code> if the TDE version is supportednon</li>
-+ <li>a negative value if the version is too old</li>
-+ <li>a positive value if the version is too new to know whether it works with this driver</li>
-+ </ul>
-+
-+ #i60062# / 2006-01-06 / frank.schoenheit@sun.com
-+*/
-+extern "C" SAL_DLLPUBLIC_EXPORT int SAL_CALL matchTDEVersion()
-+{
-+ double nMinVersion = normalizeVersion( MIN_TDE_VERSION_MAJOR, MIN_TDE_VERSION_MINOR );
-+ double nCurVersion = normalizeVersion( ::KDE::versionMajor(), ::KDE::versionMinor() );
-+ double nMaxVersion = normalizeVersion( MAX_TDE_VERSION_MAJOR, MAX_TDE_VERSION_MINOR );
-+
-+ if ( nCurVersion < nMinVersion )
-+ return -1;
-+ if ( nCurVersion > nMaxVersion )
-+ return 1;
-+
-+ return 0;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/TDEInit.h b/connectivity/source/drivers/tdeab/TDEInit.h
-new file mode 100644
-index 0000000..350502d
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/TDEInit.h
-@@ -0,0 +1,47 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef CONNECTIVITY_KAB_TDEINIT_H
-+#define CONNECTIVITY_KAB_TDEINIT_H
-+
-+// the address book driver's version
-+#define KAB_DRIVER_VERSION "0.2"
-+#define KAB_DRIVER_VERSION_MAJOR 0
-+#define KAB_DRIVER_VERSION_MINOR 2
-+
-+// the minimum TDE version which is required at runtime
-+#define MIN_TDE_VERSION_MAJOR 3
-+#define MIN_TDE_VERSION_MINOR 2
-+
-+#define MAX_TDE_VERSION_MAJOR 3
-+#define MAX_TDE_VERSION_MINOR 6
-+
-+
-+#endif // CONNECTIVITY_KAB_TDEINIT_H
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/exports.dxp b/connectivity/source/drivers/tdeab/exports.dxp
-new file mode 100644
-index 0000000..9630d7e
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/exports.dxp
-@@ -0,0 +1,3 @@
-+component_getImplementationEnvironment
-+component_writeInfo
-+component_getFactory
-diff --git a/connectivity/source/drivers/tdeab/kcondition.cxx b/connectivity/source/drivers/tdeab/kcondition.cxx
-new file mode 100644
-index 0000000..57d2745
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/kcondition.cxx
-@@ -0,0 +1,233 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "kcondition.hxx"
-+#include "kfields.hxx"
-+#include "connectivity/CommonTools.hxx"
-+
-+using namespace ::connectivity::kab;
-+using namespace ::com::sun::star::sdbc;
-+// -----------------------------------------------------------------------------
-+KabCondition::~KabCondition()
-+{
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionConstant::KabConditionConstant(const sal_Bool bValue)
-+ : KabCondition(),
-+ m_bValue(bValue)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionConstant::isAlwaysTrue() const
-+{
-+ return m_bValue;
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionConstant::isAlwaysFalse() const
-+{
-+ return !m_bValue;
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionConstant::eval(const ::KABC::Addressee &) const
-+{
-+ return m_bValue;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionColumn::KabConditionColumn(const ::rtl::OUString &sColumnName) throw(SQLException)
-+ : KabCondition(),
-+ m_nFieldNumber(findKabField(sColumnName))
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionColumn::isAlwaysTrue() const
-+{
-+ // Sometimes true, sometimes false
-+ return sal_False;
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionColumn::isAlwaysFalse() const
-+{
-+ // Sometimes true, sometimes false
-+ return sal_False;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionNull::KabConditionNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-+ : KabConditionColumn(sColumnName)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionNull::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-+
-+ return aQtName.isNull();
-+// TDE address book currently does not use NULL values.
-+// But it might do it someday
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionNotNull::KabConditionNotNull(const ::rtl::OUString &sColumnName) throw(SQLException)
-+ : KabConditionColumn(sColumnName)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionNotNull::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-+
-+ return !aQtName.isNull();
-+// TDE address book currently does not use NULL values.
-+// But it might do it someday
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionCompare::KabConditionCompare(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-+ : KabConditionColumn(sColumnName),
-+ m_sMatchString(sMatchString)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionEqual::KabConditionEqual(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-+ : KabConditionCompare(sColumnName, sMatchString)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionEqual::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-+// Timestamps should not be compared according to their string value
-+// The syntax for such queries should be like
-+// {ts '2004-03-29 12:55:00.000000'}
-+// They should also support operators like '<' or '>='
-+
-+ if (aQtName.isNull()) return sal_False;
-+
-+ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-+ return sValue == m_sMatchString;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionDifferent::KabConditionDifferent(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-+ : KabConditionCompare(sColumnName, sMatchString)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionDifferent::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-+
-+ if (aQtName.isNull()) return sal_False;
-+
-+ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-+ return sValue != m_sMatchString;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionSimilar::KabConditionSimilar(const ::rtl::OUString &sColumnName, const ::rtl::OUString &sMatchString) throw(SQLException)
-+ : KabConditionCompare(sColumnName, sMatchString)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionSimilar::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ TQString aQtName = valueOfKabField(aAddressee, m_nFieldNumber);
-+
-+ if (aQtName.isNull()) return sal_False;
-+
-+ ::rtl::OUString sValue((const sal_Unicode *) aQtName.ucs2());
-+ return match(m_sMatchString, sValue, '\0');
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionBoolean::KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight)
-+ : KabCondition(),
-+ m_pLeft(pLeft),
-+ m_pRight(pRight)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionBoolean::~KabConditionBoolean()
-+{
-+ delete m_pLeft;
-+ delete m_pRight;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionOr::KabConditionOr(KabCondition *pLeft, KabCondition *pRight)
-+ : KabConditionBoolean(pLeft, pRight)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionOr::isAlwaysTrue() const
-+{
-+ return m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue();
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionOr::isAlwaysFalse() const
-+{
-+ return m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse();
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionOr::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ // We avoid evaluating terms as much as we can
-+ if (m_pLeft->isAlwaysTrue() || m_pRight->isAlwaysTrue()) return sal_True;
-+ if (m_pLeft->isAlwaysFalse() && m_pRight->isAlwaysFalse()) return sal_False;
-+
-+ if (m_pLeft->eval(aAddressee)) return sal_True;
-+ if (m_pRight->eval(aAddressee)) return sal_True;
-+
-+ return sal_False;
-+}
-+// -----------------------------------------------------------------------------
-+KabConditionAnd::KabConditionAnd(KabCondition *pLeft, KabCondition *pRight)
-+ : KabConditionBoolean(pLeft, pRight)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionAnd::isAlwaysTrue() const
-+{
-+ return m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue();
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionAnd::isAlwaysFalse() const
-+{
-+ return m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse();
-+}
-+// -----------------------------------------------------------------------------
-+sal_Bool KabConditionAnd::eval(const ::KABC::Addressee &aAddressee) const
-+{
-+ // We avoid evaluating terms as much as we can
-+ if (m_pLeft->isAlwaysFalse() || m_pRight->isAlwaysFalse()) return sal_False;
-+ if (m_pLeft->isAlwaysTrue() && m_pRight->isAlwaysTrue()) return sal_True;
-+
-+ if (!m_pLeft->eval(aAddressee)) return sal_False;
-+ if (!m_pRight->eval(aAddressee)) return sal_False;
-+
-+ return sal_True;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/kcondition.hxx b/connectivity/source/drivers/tdeab/kcondition.hxx
-new file mode 100644
-index 0000000..a8b729f
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/kcondition.hxx
-@@ -0,0 +1,164 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_CONDITION_HXX_
-+#define _CONNECTIVITY_KAB_CONDITION_HXX_
-+
-+#include <comphelper/types.hxx>
-+#include <shell/tde_headers.h>
-+#include <connectivity/dbexception.hxx>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+// -----------------------------------------------------------------------------
-+class KabCondition
-+{
-+ public:
-+ virtual ~KabCondition();
-+ virtual sal_Bool isAlwaysTrue() const = 0;
-+ virtual sal_Bool isAlwaysFalse() const = 0;
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const = 0;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionConstant : public KabCondition
-+{
-+ protected:
-+ sal_Bool m_bValue;
-+
-+ public:
-+ KabConditionConstant(const sal_Bool bValue);
-+ virtual sal_Bool isAlwaysTrue() const;
-+ virtual sal_Bool isAlwaysFalse() const;
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionColumn : public KabCondition
-+{
-+ protected:
-+ sal_Int32 m_nFieldNumber;
-+
-+ TQString value(const ::KABC::Addressee &aAddressee) const;
-+
-+ public:
-+ KabConditionColumn(
-+ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool isAlwaysTrue() const;
-+ virtual sal_Bool isAlwaysFalse() const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionNull : public KabConditionColumn
-+{
-+ public:
-+ KabConditionNull(
-+ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionNotNull : public KabConditionColumn
-+{
-+ public:
-+ KabConditionNotNull(
-+ const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionCompare : public KabConditionColumn
-+{
-+ protected:
-+ const ::rtl::OUString m_sMatchString;
-+
-+ public:
-+ KabConditionCompare(
-+ const ::rtl::OUString &sColumnName,
-+ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionEqual : public KabConditionCompare
-+{
-+ public:
-+ KabConditionEqual(
-+ const ::rtl::OUString &sColumnName,
-+ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionDifferent : public KabConditionCompare
-+{
-+ public:
-+ KabConditionDifferent(
-+ const ::rtl::OUString &sColumnName,
-+ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionSimilar : public KabConditionCompare
-+{
-+ public:
-+ KabConditionSimilar(
-+ const ::rtl::OUString &sColumnName,
-+ const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionBoolean : public KabCondition
-+{
-+ protected:
-+ KabCondition *m_pLeft, *m_pRight;
-+
-+ public:
-+ KabConditionBoolean(KabCondition *pLeft, KabCondition *pRight);
-+ virtual ~KabConditionBoolean();
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionOr : public KabConditionBoolean
-+{
-+ public:
-+ KabConditionOr(KabCondition *pLeft, KabCondition *pRight);
-+ virtual sal_Bool isAlwaysTrue() const;
-+ virtual sal_Bool isAlwaysFalse() const;
-+ virtual sal_Bool eval(const ::KABC::Addressee &aAddressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+class KabConditionAnd : public KabConditionBoolean
-+{
-+ public:
-+ KabConditionAnd(KabCondition *pLeft, KabCondition *pRight);
-+ virtual sal_Bool isAlwaysTrue() const;
-+ virtual sal_Bool isAlwaysFalse() const;
-+ virtual sal_Bool eval(const ::KABC::Addressee &addressee) const;
-+};
-+// -----------------------------------------------------------------------------
-+ }
-+}
-+
-+#endif // _CONNECTIVITY_KAB_CONDITION_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/kfields.cxx b/connectivity/source/drivers/tdeab/kfields.cxx
-new file mode 100644
-index 0000000..2d375d7
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/kfields.cxx
-@@ -0,0 +1,98 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "kfields.hxx"
-+#include "resource/common_res.hrc"
-+#include "resource/sharedresources.hxx"
-+
-+using namespace ::connectivity::kab;
-+using namespace ::com::sun::star::sdbc;
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+// -----------------------------------------------------------------------------
-+// return the value of a TDE address book field, given an addressee and a field number
-+TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber)
-+{
-+ switch (nFieldNumber)
-+ {
-+ case KAB_FIELD_REVISION:
-+ return aAddressee.revision().toString("yyyy-MM-dd hh:mm:ss");
-+ default:
-+ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-+ return aFields[nFieldNumber - KAB_DATA_FIELDS]->value(aAddressee);
-+ }
-+}
-+// ------------------------------------------------------------------------------
-+// search the TDE address book field number of a given column name
-+sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(SQLException)
-+{
-+ TQString aQtName;
-+ ::rtl::OUString aName;
-+
-+ aQtName = KABC::Addressee::revisionLabel();
-+ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-+ if (columnName == aName)
-+ return KAB_FIELD_REVISION;
-+
-+ ::KABC::Field::List aFields = ::KABC::Field::allFields();
-+ ::KABC::Field::List::iterator aField;
-+ sal_uInt32 nResult;
-+
-+ for ( aField = aFields.begin(), nResult = KAB_DATA_FIELDS;
-+ aField != aFields.end();
-+ ++aField, ++nResult)
-+ {
-+ aQtName = (*aField)->label();
-+ aName = ::rtl::OUString((const sal_Unicode *) aQtName.ucs2());
-+
-+ if (columnName == aName)
-+ return nResult;
-+ }
-+
-+ ::connectivity::SharedResources aResources;
-+ const ::rtl::OUString sError( aResources.getResourceStringWithSubstitution(
-+ STR_INVALID_COLUMNNAME,
-+ "$columnname$",columnName
-+ ) );
-+ ::dbtools::throwGenericSQLException(sError,NULL);
-+ // Unreachable:
-+ OSL_ASSERT(false);
-+ return 0;
-+}
-+// ------------------------------------------------------------------------------
-+ }
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/kfields.hxx b/connectivity/source/drivers/tdeab/kfields.hxx
-new file mode 100644
-index 0000000..2c5c63b
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/kfields.hxx
-@@ -0,0 +1,51 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_FIELDS_HXX_
-+#define _CONNECTIVITY_KAB_FIELDS_HXX_
-+
-+#include <shell/tde_headers.h>
-+#include <connectivity/dbexception.hxx>
-+#include <rtl/ustring.hxx>
-+
-+#define KAB_FIELD_REVISION 0
-+#define KAB_DATA_FIELDS 1
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ TQString valueOfKabField(const ::KABC::Addressee &aAddressee, sal_Int32 nFieldNumber);
-+ sal_uInt32 findKabField(const ::rtl::OUString& columnName) throw(::com::sun::star::sdbc::SQLException);
-+ }
-+}
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/korder.cxx b/connectivity/source/drivers/tdeab/korder.cxx
-new file mode 100644
-index 0000000..994c41f
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/korder.cxx
-@@ -0,0 +1,92 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_connectivity.hxx"
-+
-+#include "korder.hxx"
-+#include "kfields.hxx"
-+
-+using namespace ::connectivity::kab;
-+
-+KabOrder::~KabOrder()
-+{
-+}
-+// -----------------------------------------------------------------------------
-+KabSimpleOrder::KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending)
-+ : KabOrder(),
-+ m_nFieldNumber(findKabField(sColumnName)),
-+ m_bAscending(bAscending)
-+{
-+}
-+// -----------------------------------------------------------------------------
-+sal_Int32 KabSimpleOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-+{
-+ sal_Int32 result;
-+
-+ result = TQString::compare(
-+ valueOfKabField(aAddressee1, m_nFieldNumber),
-+ valueOfKabField(aAddressee2, m_nFieldNumber));
-+// Timestamps should be compared differently than with their string value
-+
-+ if (!m_bAscending) result = -result;
-+
-+ return result;
-+}
-+// -----------------------------------------------------------------------------
-+KabComplexOrder::KabComplexOrder()
-+ : KabOrder(),
-+ m_aOrders()
-+{
-+}
-+// -----------------------------------------------------------------------------
-+KabComplexOrder::~KabComplexOrder()
-+{
-+ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-+ delete m_aOrders[i];
-+}
-+// -----------------------------------------------------------------------------
-+void KabComplexOrder::addOrder(KabOrder *pOrder)
-+{
-+ m_aOrders.push_back(pOrder);
-+}
-+// -----------------------------------------------------------------------------
-+sal_Int32 KabComplexOrder::compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const
-+{
-+ for (sal_uInt32 i = 0; i < m_aOrders.size(); i++)
-+ {
-+ const KabOrder *pOrder = m_aOrders[i];
-+ sal_Int32 result = pOrder->compare(aAddressee1, aAddressee2);
-+
-+ if (result) return result;
-+ }
-+ return 0;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/korder.hxx b/connectivity/source/drivers/tdeab/korder.hxx
-new file mode 100644
-index 0000000..8e62b79
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/korder.hxx
-@@ -0,0 +1,78 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _CONNECTIVITY_KAB_ORDER_HXX_
-+#define _CONNECTIVITY_KAB_ORDER_HXX_
-+
-+#include "rtl/ustring.hxx"
-+#include <shell/tde_headers.h>
-+
-+#include <vector>
-+
-+namespace connectivity
-+{
-+ namespace kab
-+ {
-+ class KabOrder
-+ {
-+ public:
-+ virtual ~KabOrder();
-+
-+ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const = 0;
-+ };
-+
-+ class KabSimpleOrder : public KabOrder
-+ {
-+ sal_Int32 m_nFieldNumber;
-+ sal_Bool m_bAscending;
-+
-+ TQString value(const ::KABC::Addressee &aAddressee) const;
-+ public:
-+ KabSimpleOrder(::rtl::OUString &sColumnName, sal_Bool bAscending);
-+
-+ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-+ };
-+
-+ class KabComplexOrder : public KabOrder
-+ {
-+ ::std::vector<KabOrder *> m_aOrders;
-+
-+ public:
-+ KabComplexOrder();
-+ virtual ~KabComplexOrder();
-+
-+ void addOrder(KabOrder *pOrder);
-+ virtual sal_Int32 compare(const ::KABC::Addressee &aAddressee1, const ::KABC::Addressee &aAddressee2) const;
-+ };
-+ }
-+}
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/connectivity/source/drivers/tdeab/makefile.mk b/connectivity/source/drivers/tdeab/makefile.mk
-new file mode 100644
-index 0000000..cde838a
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/makefile.mk
-@@ -0,0 +1,139 @@
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2000, 2010 Oracle and/or its affiliates.
-+# Copyright 2011 Timothy Pearson
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+
-+PRJ=..$/..$/..
-+PRJINC=..$/..
-+PRJNAME=connectivity
-+TARGET=tdeab
-+TARGET2=$(TARGET)drv
-+
-+ENABLE_EXCEPTIONS=TRUE
-+VISIBILITY_HIDDEN=TRUE
-+
-+# --- Settings ----------------------------------
-+
-+.INCLUDE : $(PRJ)$/makefile.pmk
-+.INCLUDE : $(PRJ)$/version.mk
-+
-+.IF "$(GUI)" == "UNX"
-+.IF "$(ENABLE_TDEAB)" == "TRUE"
-+
-+CFLAGS+=$(TDE_CFLAGS)
-+
-+.IF "$(TDE_ROOT)"!=""
-+EXTRALIBPATHS+=-L$(TDE_ROOT)$/lib
-+.ENDIF
-+
-+# === TDEAB base library ==========================
-+
-+# --- Files -------------------------------------
-+
-+SLOFILES= \
-+ $(SLO)$/KDriver.obj \
-+ $(SLO)$/KServices.obj
-+
-+DEPOBJFILES= \
-+ $(SLO2FILES)
-+
-+# --- Library -----------------------------------
-+
-+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
-+
-+SHL1TARGET= $(TARGET)$(TDEAB_MAJOR)
-+SHL1OBJS=$(SLOFILES)
-+SHL1STDLIBS=\
-+ $(CPPULIB) \
-+ $(CPPUHELPERLIB) \
-+ $(DBTOOLSLIB) \
-+ $(SALLIB) \
-+ $(SALHELPERLIB)
-+
-+SHL1DEPN=
-+SHL1IMPLIB= i$(TARGET)
-+
-+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
-+
-+DEF1NAME= $(SHL1TARGET)
-+
-+# === TDEAB impl library ==========================
-+
-+# --- Files -------------------------------------
-+
-+SLO2FILES=\
-+ $(SLO)$/KColumns.obj \
-+ $(SLO)$/KTable.obj \
-+ $(SLO)$/KTables.obj \
-+ $(SLO)$/KCatalog.obj \
-+ $(SLO)$/KResultSet.obj \
-+ $(SLO)$/KStatement.obj \
-+ $(SLO)$/KPreparedStatement.obj \
-+ $(SLO)$/KDatabaseMetaData.obj \
-+ $(SLO)$/KConnection.obj \
-+ $(SLO)$/KResultSetMetaData.obj \
-+ $(SLO)$/kcondition.obj \
-+ $(SLO)$/korder.obj \
-+ $(SLO)$/kfields.obj \
-+ $(SLO)$/TDEInit.obj
-+
-+TDEAB_LIB=$(TDE_LIBS) -lkabc
-+
-+# --- Library -----------------------------------
-+
-+SHL2VERSIONMAP=$(TARGET2).map
-+
-+SHL2TARGET= $(TARGET2)$(TDEAB_MAJOR)
-+SHL2OBJS=$(SLO2FILES)
-+SHL2LINKFLAGS+=$(TDEAB_LIB)
-+SHL2STDLIBS=\
-+ $(CPPULIB) \
-+ $(CPPUHELPERLIB) \
-+ $(SALLIB) \
-+ $(SALHELPERLIB) \
-+ $(DBTOOLSLIB) \
-+ $(COMPHELPERLIB)
-+
-+SHL2DEPN=
-+SHL2IMPLIB= i$(TARGET2)
-+
-+SHL2DEF= $(MISC)$/$(SHL2TARGET).def
-+
-+DEF2NAME= $(SHL2TARGET)
-+
-+# --- Targets -----------------------------------
-+.ELSE # "$(ENABLE_TDEAB)" == "TRUE"
-+dummy:
-+ @echo TDE Addressbook disabled - nothing to build
-+.ENDIF
-+
-+.ELSE # "$(GUI)" == "UNX"
-+dummy:
-+ @echo "Nothing to build for GUI $(GUI)"
-+.ENDIF
-+
-+.INCLUDE : $(PRJ)$/target.pmk
-+
-diff --git a/connectivity/source/drivers/tdeab/tdeab.xcu b/connectivity/source/drivers/tdeab/tdeab.xcu
-new file mode 100644
-index 0000000..63b2761
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/tdeab.xcu
-@@ -0,0 +1,47 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!--***********************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************ -->
-+<oor:component-data oor:name="Drivers" oor:package="org.openoffice.Office.DataAccess" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-+ <node oor:name="Installed">
-+ <node oor:name="sdbc:address:kab" oor:op="replace">
-+ <prop oor:name="Driver">
-+ <value>com.sun.star.comp.sdbc.kab.Driver</value>
-+ </prop>
-+ <prop oor:name="DriverTypeDisplayName" oor:type="xs:string">
-+ <value xml:lang="en-US">TDE Address Book</value>
-+ </prop>
-+ <node oor:name="Features">
-+ <node oor:name="EscapeDateTime" oor:op="replace">
-+ <prop oor:name="Value" oor:type="xs:boolean">
-+ <value>true</value>
-+ </prop>
-+ </node>
-+ </node>
-+ </node>
-+ </node>
-+</oor:component-data>
-diff --git a/connectivity/source/drivers/tdeab/tdeab.xml b/connectivity/source/drivers/tdeab/tdeab.xml
-new file mode 100644
-index 0000000..4deb1d1
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/tdeab.xml
-@@ -0,0 +1,77 @@
-+<?xml version='1.0' encoding="UTF-8"?>
-+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//W3C//DTD HTML 3.2//EN" "module-description.dtd">
-+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-+ <module-name> kab1 </module-name>
-+ <component-description>
-+ <Author>Eric Bischoff</Author>
-+ <Name>com.sun.star.comp.sdbc.kab.Driver</Name>
-+ <description>This library implements the database driver for TDE address book formats.</description>
-+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-+ <language>c++</language>
-+ <status value="final"/>
-+ <supported-service>com.sun.star.sdbc.Driver</supported-service>
-+ <service-dependency> ... </service-dependency>
-+ </component-description>
-+ <project-build-dependency> cppuhelper </project-build-dependency>
-+ <project-build-dependency> cppu </project-build-dependency>
-+ <project-build-dependency> sal </project-build-dependency>
-+
-+ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-+ <runtime-module-dependency> cppu1 </runtime-module-dependency>
-+ <runtime-module-dependency> sal1 </runtime-module-dependency>
-+
-+ <type> com.sun.star.registry.XRegistryKey </type>
-+ <type> com.sun.star.util.XCancellable </type>
-+ <type> com.sun.star.util.XNumberFormatter </type>
-+ <type> com.sun.star.uno.TypeClass </type>
-+ <type> com.sun.star.uno.XWeak </type>
-+ <type> com.sun.star.uno.XAggregation </type>
-+ <type> com.sun.star.uno.XComponentContext </type>
-+ <type> com.sun.star.beans.PropertyAttribute </type>
-+ <type> com.sun.star.beans.XPropertyState </type>
-+ <type> com.sun.star.beans.XPropertySet </type>
-+ <type> com.sun.star.beans.PropertyValue </type>
-+ <type> com.sun.star.beans.XMultiPropertySet </type>
-+ <type> com.sun.star.beans.XFastPropertySet </type>
-+ <type> com.sun.star.lang.XSingleServiceFactory </type>
-+ <type> com.sun.star.lang.XTypeProvider </type>
-+ <type> com.sun.star.lang.XSingleComponentFactory </type>
-+ <type> com.sun.star.lang.EventObject </type>
-+ <type> com.sun.star.lang.XComponent </type>
-+ <type> com.sun.star.lang.IllegalArgumentException </type>
-+ <type> com.sun.star.lang.DisposedException </type>
-+ <type> com.sun.star.lang.XMultiServiceFactory </type>
-+ <type> com.sun.star.lang.XServiceInfo </type>
-+ <type> com.sun.star.lang.XUnoTunnel </type>
-+ <type> com.sun.star.java.XJavaThreadRegister_11 </type>
-+ <type> com.sun.star.java.XJavaVM </type>
-+ <type> com.sun.star.sdbc.FetchDirection </type>
-+ <type> com.sun.star.sdbc.XConnection </type>
-+ <type> com.sun.star.sdbc.XStatement </type>
-+ <type> com.sun.star.sdbc.XResultSet </type>
-+ <type> com.sun.star.sdbc.XResultSetMetaDataSupplier</type>
-+ <type> com.sun.star.sdbc.XColumnLocate </type>
-+ <type> com.sun.star.sdbc.XResultSetUpdate </type>
-+ <type> com.sun.star.sdbc.XWarningsSupplier </type>
-+ <type> com.sun.star.sdbc.XRowUpdate </type>
-+ <type> com.sun.star.sdbc.XMultipleResults </type>
-+ <type> com.sun.star.sdbc.XBatchExecution </type>
-+ <type> com.sun.star.sdbc.XPreparedBatchExecution </type>
-+ <type> com.sun.star.sdbc.XParameters </type>
-+ <type> com.sun.star.sdbc.XOutParameters </type>
-+ <type> com.sun.star.sdbc.DriverPropertyInfo </type>
-+ <type> com.sun.star.sdbc.SQLWarning </type>
-+ <type> com.sun.star.sdbc.XRow </type>
-+ <type> com.sun.star.sdbc.ColumnSearch </type>
-+ <type> com.sun.star.sdbc.ColumnValue </type>
-+ <type> com.sun.star.sdbc.DataType </type>
-+ <type> com.sun.star.sdbc.XDriver </type>
-+ <type> com.sun.star.sdbc.TransactionIsolation </type>
-+ <type> com.sun.star.sdbc.ResultSetType </type>
-+ <type> com.sun.star.sdbc.ResultSetConcurrency </type>
-+ <type> com.sun.star.sdbcx.XRowLocate </type>
-+ <type> com.sun.star.sdbcx.XDeleteRows </type>
-+ <type> com.sun.star.sdbcx.CompareBookmark </type>
-+ <type> com.sun.star.sdb.XColumnUpdate </type>
-+ <type> com.sun.star.sdb.XColumn </type>
-+</module-description>
-diff --git a/connectivity/source/drivers/tdeab/tdeabdrv.map b/connectivity/source/drivers/tdeab/tdeabdrv.map
-new file mode 100644
-index 0000000..2c828d8
---- /dev/null
-+++ b/connectivity/source/drivers/tdeab/tdeabdrv.map
-@@ -0,0 +1,9 @@
-+UDK_3_0_0 {
-+ global:
-+ createKabConnection;
-+ initKApplication;
-+ shutdownKApplication;
-+ matchTDEVersion;
-+ local:
-+ *;
-+};
-diff --git a/connectivity/source/inc/resource/tdeab_res.hrc b/connectivity/source/inc/resource/tdeab_res.hrc
-new file mode 100644
-index 0000000..ff6a7b2
---- /dev/null
-+++ b/connectivity/source/inc/resource/tdeab_res.hrc
-@@ -0,0 +1,44 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef CONNECTIVITY_RESOURCE_KAB_HRC
-+#define CONNECTIVITY_RESOURCE_KAB_HRC
-+
-+#include "resource/conn_shared_res.hrc"
-+#include "resource/common_res.hrc"
-+// ============================================================================
-+// = the tdeab driver's resource strings
-+// ============================================================================
-+
-+#define STR_NO_TDE_INST ( STR_KAB_BASE + 0 )
-+#define STR_TDE_VERSION_TOO_OLD ( STR_KAB_BASE + 1 )
-+#define STR_TDE_VERSION_TOO_NEW ( STR_KAB_BASE + 2 )
-+#define STR_TDE_VERSION_TOO_NEW_WORK_AROUND ( STR_KAB_BASE + 3 )
-+
-+#endif // CONNECTIVITY_RESOURCE_KAB_HRC
-+
-diff --git a/connectivity/version.mk b/connectivity/version.mk
-index fd2235c..9ff6151 100755
---- a/connectivity/version.mk
-+++ b/connectivity/version.mk
-@@ -101,6 +101,16 @@ KAB_MINOR=0
- # the micro
- KAB_MICRO=0
-
-+# ----------------------------Tdeab settings-------------------------------------#
-+# target
-+TDEAB_TARGET=tdeab
-+
-+# the major
-+TDEAB_MAJOR=1
-+# the minor
-+TDEAB_MINOR=0
-+# the micro
-+TDEAB_MICRO=0
-
- # ----------------------------Macab settings-------------------------------------#
- # target
-diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
-index 94d8a4a..1113ab0 100644
---- a/cui/Library_cui.mk
-+++ b/cui/Library_cui.mk
-@@ -41,6 +41,7 @@ $(eval $(call gb_Library_set_include,cui,\
- $(eval $(call gb_Library_add_defs,cui,\
- $(if $(filter TRUE,$(ENABLE_GTK)),-DENABLE_GTK) \
- $(if $(filter TRUE,$(ENABLE_KDE)),-DENABLE_KDE) \
-+ $(if $(filter TRUE,$(ENABLE_TDE)),-DENABLE_TDE) \
- $(if $(filter TRUE,$(ENABLE_KDE4)),-DENABLE_KDE4) \
- ))
-
-diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
-index e08dcc7..8237c02 100644
---- a/cui/source/options/optgdlg.cxx
-+++ b/cui/source/options/optgdlg.cxx
-@@ -153,6 +153,14 @@ namespace
- return rtl::OUString();
- #endif
- }
-+ else if ( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-+ {
-+ #ifdef ENABLE_TDE
-+ return ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.TDEFilePicker" );
-+ #else
-+ return rtl::OUString();
-+ #endif
-+ }
- #if defined WNT
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.dialogs.SystemFilePicker") );
- #elif (defined MACOSX && defined QUARTZ)
-diff --git a/desktop/Pagein_common.mk b/desktop/Pagein_common.mk
-index 3b0330c..e119474 100644
---- a/desktop/Pagein_common.mk
-+++ b/desktop/Pagein_common.mk
-@@ -46,6 +46,7 @@ $(eval $(call desktop_Pagein_add_libs,common,\
- vclplug_gen \
- $(if $(findstring TRUE,$(ENABLE_GTK)),vclplug_gtk) \
- $(if $(findstring TRUE,$(ENABLE_KDE)),vclplug_kde) \
-+ $(if $(findstring TRUE,$(ENABLE_TDE)),vclplug_tde) \
- basegfx \
- sot \
- xcr \
-diff --git a/fpicker/prj/build.lst b/fpicker/prj/build.lst
-index 114a301..b4f0898f 100644
---- a/fpicker/prj/build.lst
-+++ b/fpicker/prj/build.lst
-@@ -7,8 +7,10 @@ fp fpicker\source\unx\gnome nmake - u fp_gnome_filepicker fp_inc NULL
- fp fpicker\source\unx\kde4 nmake - u fp_kde4_filepicker fp_inc NULL
- fp fpicker\source\unx\kde_unx nmake - u fp_unx_common fp_inc NULL
- fp fpicker\source\unx\kde nmake - u fp_unx_kde_filepicker fp_inc NULL
-+fp fpicker\source\unx\tde_unx nmake - u fp_unx_tdecommon fp_inc NULL
-+fp fpicker\source\unx\tde nmake - u fp_unx_tde_filepicker fp_inc NULL
- fp fpicker\source\aqua nmake - u fp_macosx_filepicker NULL
- fp fpicker\source\win32\filepicker nmake - w fp_win32_filepicker fp_inc NULL
- fp fpicker\source\win32\folderpicker nmake - w fp_win32_folderpicker fp_inc NULL
- fp fpicker\source\win32\misc nmake - w fp_win32_misc fp_win32_filepicker.w fp_win32_folderpicker.w fp_inc NULL
--fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-+fp fpicker\util nmake - all fp_util fp_gnome_filepicker.u fp_unx_common.u fp_unx_kde_filepicker.u fp_unx_tdecommon.u fp_unx_tde_filepicker.u fp_win32_filepicker.w fp_win32_misc.w fp_win32_folderpicker.w NULL
-diff --git a/fpicker/prj/d.lst b/fpicker/prj/d.lst
-index 71ec565..bef8b71 100644
---- a/fpicker/prj/d.lst
-+++ b/fpicker/prj/d.lst
-@@ -5,6 +5,7 @@ mkdir: %COMMON_DEST%\bin\hid
- ..\%__SRC%\bin\f*.res %_DEST%\bin\
- ..\%__SRC%\bin\f*.dll %_DEST%\bin\
- ..\%__SRC%\bin\kdefilepicker %_DEST%\bin\kdefilepicker
-+..\%__SRC%\bin\tdefilepicker %_DEST%\bin\tdefilepicker
- ..\%__SRC%\lib\f*.so %_DEST%\lib\
- ..\%__SRC%\lib\*.dylib %_DEST%\lib\*.dylib
-
-diff --git a/fpicker/source/generic/fpicker.cxx b/fpicker/source/generic/fpicker.cxx
-index 1444fde..fa5b2ec 100644
---- a/fpicker/source/generic/fpicker.cxx
-+++ b/fpicker/source/generic/fpicker.cxx
-@@ -65,6 +65,8 @@ static OUString FilePicker_getSystemPickerServiceName()
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFilePicker"));
- else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde4"))
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDE4FilePicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFilePicker"));
- else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFilePicker"));
- else
-@@ -141,6 +143,8 @@ static OUString FolderPicker_getSystemPickerServiceName()
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.GtkFolderPicker"));
- else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde"))
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFolderPicker"));
-+ else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("tde"))
-+ return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.TDEFolderPicker"));
- else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx"))
- return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFolderPicker"));
- #endif
-diff --git a/fpicker/source/unx/kde/makefile.mk b/fpicker/source/unx/kde/makefile.mk
-index 1548d7b..768c946 100644
---- a/fpicker/source/unx/kde/makefile.mk
-+++ b/fpicker/source/unx/kde/makefile.mk
-@@ -29,8 +29,8 @@ PRJ=..$/..$/..
-
- PRJNAME=fpicker
- TARGET=kdefilepicker
--LIBTARGET=NO
- ENABLE_EXCEPTIONS=TRUE
-+LIBTARGET=NO
- EXTERNAL_WARNINGS_NOT_ERRORS=TRUE
-
- # --- Settings -----------------------------------------------------
-@@ -63,7 +63,7 @@ SLOFILES =\
-
- APP1TARGET=$(TARGET)
- APP1OBJS=$(SLOFILES)
--APP1RPATH=OOO
-+APP1RPATH=BRAND
- APP1LINKFLAGS=$(KDE_LIBS) -lkio -lX11
- APP1STDLIBS=$(SALLIB)
-
-diff --git a/fpicker/source/unx/tde/makefile.mk b/fpicker/source/unx/tde/makefile.mk
-new file mode 100644
-index 0000000..26d7979
---- /dev/null
-+++ b/fpicker/source/unx/tde/makefile.mk
-@@ -0,0 +1,78 @@
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2010 Novell, Inc.
-+# Copyright 2011 Timothy Pearson
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+
-+PRJ=..$/..$/..
-+
-+PRJNAME=fpicker
-+TARGET=tdefilepicker
-+ENABLE_EXCEPTIONS=TRUE
-+LIBTARGET=NO
-+EXTERNAL_WARNINGS_NOT_ERRORS=TRUE
-+
-+# --- Settings -----------------------------------------------------
-+
-+.INCLUDE : settings.mk
-+
-+# ------------------------------------------------------------------
-+
-+.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-+
-+dummy:
-+ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-+
-+.ELSE # we build for TDE
-+
-+CFLAGS+= $(TDE_CFLAGS)
-+
-+.IF "$(COM)" == "GCC"
-+CFLAGSCXX+=-Wno-shadow
-+.ENDIF
-+
-+# --- Files --------------------------------------------------------
-+
-+SLOFILES =\
-+ $(SLO)$/tdecommandthread.obj \
-+ $(SLO)$/tdefilepicker.obj \
-+ $(SLO)$/tdefilepicker.moc.obj \
-+ $(SLO)$/tdefpmain.obj \
-+ $(SLO)$/tdemodalityfilter.obj
-+
-+APP1TARGET=$(TARGET)
-+APP1OBJS=$(SLOFILES)
-+APP1RPATH=OOO
-+APP1LINKFLAGS=$(TDE_LIBS) -lkio -lX11
-+APP1STDLIBS=$(SALLIB)
-+
-+.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-+
-+# --- Targets ------------------------------------------------------
-+
-+.INCLUDE : target.mk
-+
-+$(MISC)$/tdefilepicker.moc.cxx : tdefilepicker.hxx
-+ $(MOC) $< -o $@
-diff --git a/fpicker/source/unx/tde/tdecommandthread.cxx b/fpicker/source/unx/tde/tdecommandthread.cxx
-new file mode 100644
-index 0000000..8da50d2
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdecommandthread.cxx
-@@ -0,0 +1,183 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <cstddef>
-+
-+#include <tdecommandthread.hxx>
-+
-+#include <tqstringlist.h>
-+
-+#include <kapplication.h>
-+
-+#if OSL_DEBUG_LEVEL > 1
-+#include <iostream>
-+#endif
-+
-+//////////////////////////////////////////////////////////////////////////
-+// CommandEvent
-+//////////////////////////////////////////////////////////////////////////
-+
-+TDECommandEvent::TDECommandEvent( const TQString &qCommand, TQStringList *pStringList )
-+ : TQCustomEvent( TypeId, pStringList ),
-+ m_eCommand( Unknown )
-+{
-+ struct {
-+ const char *pName;
-+ CommandEventType eType;
-+ } *pIdx, pMapping[] =
-+ {
-+ { "appendControl", AppendControl },
-+ { "enableControl", EnableControl },
-+ { "getValue", GetValue },
-+ { "setValue", SetValue },
-+ { "appendFilter", AppendFilter },
-+ { "appendFilterGroup", AppendFilterGroup },
-+ { "getCurrentFilter", GetCurrentFilter },
-+ { "setCurrentFilter", SetCurrentFilter },
-+ { "getDirectory", GetDirectory },
-+ { "setDirectory", SetDirectory },
-+ { "getFiles", GetFiles },
-+ { "setTitle", SetTitle },
-+ { "setType", SetType },
-+ { "setDefaultName", SetDefaultName },
-+ { "setMultiSelection", SetMultiSelection },
-+ { "exec", Exec },
-+ { 0, Unknown }
-+ };
-+
-+ for ( pIdx = pMapping; pIdx->pName && qCommand != pIdx->pName; ++pIdx )
-+ ;
-+
-+ m_eCommand = pIdx->eType;
-+}
-+
-+//////////////////////////////////////////////////////////////////////////
-+// CommandThread
-+//////////////////////////////////////////////////////////////////////////
-+
-+TDECommandThread::TDECommandThread( TQWidget *pObject )
-+ : m_pObject( pObject )
-+{
-+}
-+
-+TDECommandThread::~TDECommandThread()
-+{
-+}
-+
-+void TDECommandThread::run()
-+{
-+ TQTextIStream qStream( stdin );
-+ qStream.setEncoding( TQTextStream::UnicodeUTF8 );
-+
-+ TQString qLine;
-+ bool bQuit = false;
-+ while ( !bQuit && !qStream.atEnd() )
-+ {
-+ qLine = qStream.readLine();
-+ handleCommand( qLine, bQuit );
-+ }
-+}
-+
-+void TDECommandThread::handleCommand( const TQString &rString, bool &bQuit )
-+{
-+ TQMutexLocker qMutexLocker( &m_aMutex );
-+
-+#if OSL_DEBUG_LEVEL > 1
-+ ::std::cerr << "tdefilepicker received: " << rString.latin1() << ::std::endl;
-+#endif
-+
-+ bQuit = false;
-+ TQStringList *pTokens = tokenize( rString );
-+
-+ if ( !pTokens )
-+ return;
-+ if ( pTokens->empty() )
-+ {
-+ delete pTokens, pTokens = NULL;
-+ return;
-+ }
-+
-+ TQString qCommand = pTokens->front();
-+ pTokens->pop_front();
-+
-+ if ( qCommand == "exit" )
-+ {
-+ bQuit = true;
-+ kapp->exit();
-+ kapp->wakeUpGuiThread();
-+ _exit(0); // FIXME This prevents a SIGABRT on some systems Why?
-+ }
-+ else
-+ kapp->postEvent( m_pObject, new TDECommandEvent( qCommand, pTokens ) );
-+}
-+
-+TQStringList* TDECommandThread::tokenize( const TQString &rString )
-+{
-+ // Commands look like:
-+ // command arg1 arg2 arg3 ...
-+ // Args may be enclosed in '"', if they contain spaces.
-+
-+ TQStringList *pList = new TQStringList();
-+
-+ TQString qBuffer;
-+ qBuffer.reserve( 1024 );
-+
-+ const TQChar *pUnicode = rString.unicode();
-+ const TQChar *pEnd = pUnicode + rString.length();
-+ bool bQuoted = false;
-+
-+ for ( ; pUnicode != pEnd; ++pUnicode )
-+ {
-+ if ( *pUnicode == '\\' )
-+ {
-+ ++pUnicode;
-+ if ( pUnicode != pEnd )
-+ {
-+ if ( *pUnicode == 'n' )
-+ qBuffer.append( '\n' );
-+ else
-+ qBuffer.append( *pUnicode );
-+ }
-+ }
-+ else if ( *pUnicode == '"' )
-+ bQuoted = !bQuoted;
-+ else if ( *pUnicode == ' ' && !bQuoted )
-+ {
-+ pList->push_back( qBuffer );
-+ qBuffer.setLength( 0 );
-+ }
-+ else
-+ qBuffer.append( *pUnicode );
-+ }
-+ pList->push_back( qBuffer );
-+
-+ return pList;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdecommandthread.hxx b/fpicker/source/unx/tde/tdecommandthread.hxx
-new file mode 100644
-index 0000000..8697de9
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdecommandthread.hxx
-@@ -0,0 +1,98 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _TDECOMMANDTHREAD_HXX_
-+#define _TDECOMMANDTHREAD_HXX_
-+
-+#include <tqevent.h>
-+#include <tqmutex.h>
-+#include <tqthread.h>
-+
-+class TDECommandEvent : public TQCustomEvent
-+{
-+public:
-+ enum CommandEventType {
-+ Unknown = 0,
-+
-+ AppendControl,
-+ EnableControl,
-+ GetValue,
-+ SetValue,
-+
-+ AppendFilter,
-+ AppendFilterGroup,
-+ UpdateFilters,
-+ GetCurrentFilter,
-+ SetCurrentFilter,
-+
-+ GetDirectory,
-+ SetDirectory,
-+
-+ GetFiles,
-+
-+ SetTitle,
-+ SetType,
-+ SetDefaultName,
-+ SetMultiSelection,
-+
-+ Exec
-+ };
-+ static const TQEvent::Type TypeId = (TQEvent::Type) ( (int) TQEvent::User + 42 /*random magic value*/ );
-+
-+protected:
-+ CommandEventType m_eCommand;
-+
-+public:
-+ TDECommandEvent( const TQString &qCommand, TQStringList *pStringList );
-+
-+ CommandEventType command() const { return m_eCommand; }
-+ TQStringList* stringList() { return static_cast< TQStringList* >( data() ); }
-+};
-+
-+class TDECommandThread : public TQThread
-+{
-+protected:
-+ TQObject *m_pObject;
-+
-+ TQMutex m_aMutex;
-+
-+public:
-+ TDECommandThread( TQWidget *pObject );
-+ virtual ~TDECommandThread();
-+
-+ virtual void run();
-+
-+protected:
-+ void handleCommand( const TQString &rString, bool &bQuit );
-+ TQStringList* tokenize( const TQString &rString );
-+};
-+
-+#endif // _TDECOMMANDTHREAD_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdefilepicker.cxx b/fpicker/source/unx/tde/tdefilepicker.cxx
-new file mode 100644
-index 0000000..46ab20d
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdefilepicker.cxx
-@@ -0,0 +1,735 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <cstddef>
-+
-+#include <tdecommandthread.hxx>
-+#include <tdefilepicker.hxx>
-+
-+#include <tqcheckbox.h>
-+#include <tqcombobox.h>
-+#include <tqgrid.h>
-+#include <tqhbox.h>
-+#include <tqlabel.h>
-+#include <tqlayout.h>
-+#include <tqobjectlist.h>
-+#include <tqpushbutton.h>
-+#include <tqregexp.h>
-+#include <tqvbox.h>
-+
-+#ifdef TQT_NO_EMIT
-+#define emit
-+#endif
-+
-+#include <kdeversion.h>
-+#include <kdiroperator.h>
-+#include <kfiledialog.h>
-+#include <kfilefiltercombo.h>
-+#include <kio/netaccess.h>
-+#include <klocale.h>
-+#include <kmessagebox.h>
-+#include <ktempfile.h>
-+
-+#include <algorithm>
-+#include <iostream>
-+
-+//////////////////////////////////////////////////////////////////////////
-+// TDEFileDialog
-+//////////////////////////////////////////////////////////////////////////
-+
-+TDEFileDialog::TDEFileDialog( const TQString &startDir, const TQString &filter,
-+ TQWidget *parent, const char *name )
-+ : KFileDialog( startDir, filter, parent, name, true, m_pCustomWidget = new TQVBox() ),
-+ m_pCombosAndButtons( new TQHBox( m_pCustomWidget ) ),
-+ m_pLabels( new TQVBox( m_pCombosAndButtons ) ),
-+ m_pComboBoxes( new TQVBox( m_pCombosAndButtons ) ),
-+ m_pPushButtons( new TQVBox( m_pCombosAndButtons ) ),
-+ m_pCheckBoxes( new TQGrid( 2, m_pCustomWidget ) ),
-+ m_bIsSave( false ),
-+ m_bIsExecuting( false ),
-+ m_bCanNotifySelection( true )
-+{
-+ connect( this, TQT_SIGNAL( fileHighlighted( const TQString & ) ),
-+ this, TQT_SLOT( fileHighlightedCommand( const TQString & ) ) );
-+
-+ connect( this, TQT_SIGNAL( selectionChanged() ),
-+ this, TQT_SLOT( selectionChangedCommand() ) );
-+
-+ m_pCustomWidget->setSpacing( KDialog::spacingHint() );
-+ m_pCombosAndButtons->setSpacing( KDialog::spacingHint() );
-+
-+ updateCustomWidgetLayout();
-+}
-+
-+TDEFileDialog::~TDEFileDialog()
-+{
-+}
-+
-+void TDEFileDialog::resizeEvent( TQResizeEvent *pEvent )
-+{
-+ KFileDialog::resizeEvent( pEvent );
-+
-+ updateCustomWidgetLayout();
-+}
-+
-+void TDEFileDialog::showEvent( TQShowEvent *pEvent )
-+{
-+ KFileDialog::showEvent( pEvent );
-+
-+ updateCustomWidgetLayout();
-+}
-+
-+void TDEFileDialog::updateCustomWidgetLayout()
-+{
-+ TQPoint qReferencePoint = filterWidget->mapTo( this, TQPoint( 0, 0 ) );
-+ TQPoint qCustomPoint = m_pCustomWidget->mapTo( this, TQPoint( 0, 0 ) );
-+
-+ int nLeft = qReferencePoint.x() - qCustomPoint.x();
-+ int nRight = m_pCustomWidget->width() - filterWidget->width() - nLeft;
-+
-+ nLeft -= KDialog::spacingHint();
-+ nRight -= KDialog::spacingHint();
-+ m_pLabels->setFixedWidth( ( nLeft > 0 )? nLeft: 80 );
-+ // FIXME The following call sets the width of m_pPushButtons all right,
-+ // but it also increases the width of m_pComboBoxes rapidly. Can we do
-+ // anything about it?
-+ m_pPushButtons->setFixedWidth( ( nRight > 0 )? nRight: 100 );
-+}
-+
-+void TDEFileDialog::customEvent( TQCustomEvent *pEvent )
-+{
-+ if ( pEvent && pEvent->type() == TDECommandEvent::TypeId )
-+ {
-+ TDECommandEvent *pCommandEvent = static_cast< TDECommandEvent* >( pEvent );
-+ TQStringList *pStringList = pCommandEvent->stringList();
-+
-+ int nListSize = -1;
-+ if ( pStringList )
-+ nListSize = pStringList->size();
-+
-+ switch ( pCommandEvent->command() )
-+ {
-+ case TDECommandEvent::AppendControl:
-+ if ( nListSize >= 3 )
-+ {
-+ appendControl( (*pStringList)[0], (*pStringList)[1], (*pStringList)[2] );
-+ }
-+ break;
-+ case TDECommandEvent::EnableControl:
-+ if ( nListSize >= 2 )
-+ {
-+ enableControl( (*pStringList)[0], (*pStringList)[1] );
-+ }
-+ break;
-+ case TDECommandEvent::GetValue:
-+ if ( nListSize >= 2 )
-+ {
-+ getValue( (*pStringList)[0], (*pStringList)[1] );
-+ }
-+ break;
-+ case TDECommandEvent::SetValue:
-+ if ( nListSize >= 2 )
-+ {
-+ TQStringList qStringList = (*pStringList);
-+ qStringList.pop_front();
-+ qStringList.pop_front();
-+
-+ setValue( (*pStringList)[0], (*pStringList)[1], qStringList );
-+ }
-+ break;
-+ case TDECommandEvent::AppendFilter:
-+ if ( nListSize >= 2 )
-+ {
-+ appendFilter( (*pStringList)[0], (*pStringList)[1] );
-+
-+ // update the filters widget
-+ setFilter( filters() );
-+ }
-+ break;
-+ case TDECommandEvent::AppendFilterGroup:
-+ if ( nListSize >= 1 )
-+ {
-+ TQStringList::const_iterator it = pStringList->begin();
-+ ++it; // We ignore the filter group name
-+
-+ while ( it != pStringList->end() )
-+ {
-+ TQString qTitle = *it;
-+ ++it;
-+ if ( it != pStringList->end() )
-+ {
-+ appendFilter( qTitle, (*it) );
-+ ++it;
-+ }
-+ }
-+
-+ // update the filters widget
-+ setFilter( filters() );
-+ }
-+ break;
-+ case TDECommandEvent::GetCurrentFilter:
-+ {
-+ TQString qCurrentFilter = filterWidget->currentText();
-+ sendCommand( "currentFilter " + escapeString( qCurrentFilter ) );
-+ }
-+ break;
-+ case TDECommandEvent::SetCurrentFilter:
-+ if ( nListSize >= 1 )
-+ {
-+ static_cast< TDEFileFilterComboHack* >( filterWidget )->setCurrentFilter( pStringList->front() );
-+ }
-+ break;
-+ case TDECommandEvent::GetDirectory:
-+ {
-+ TQString qDirectory = baseURL().url();
-+ if ( qDirectory.startsWith( "file:/" ) && qDirectory.mid( 6, 1 ) != "/" )
-+ qDirectory.replace( "file:/", "file:///" );
-+ sendCommand( "currentDirectory " + escapeString( qDirectory ) );
-+ }
-+ break;
-+ case TDECommandEvent::SetDirectory:
-+ if ( nListSize >= 1 )
-+ {
-+ setURL( pStringList->front() );
-+ }
-+ break;
-+ case TDECommandEvent::GetFiles:
-+ {
-+ TQString qString;
-+ qString.reserve( 1024 );
-+
-+ qString.append( "files" );
-+
-+ if ( result() == TQDialog::Accepted )
-+ {
-+ KURL::List qList( selectedURLs() );
-+ for ( KURL::List::const_iterator it = qList.begin(); it != qList.end(); ++it )
-+ appendURL( qString, (*it) );
-+ }
-+ else
-+ {
-+ // we have to return the selected files anyway
-+ const KFileItemList *pItems = ops->selectedItems();
-+ for ( KFileItemListIterator it( *pItems ); it.current(); ++it )
-+ appendURL( qString, (*it)->url() );
-+ }
-+
-+ sendCommand( qString );
-+ setCanNotifySelection( true );
-+ }
-+ break;
-+ case TDECommandEvent::SetTitle:
-+ if ( nListSize >= 1 )
-+ {
-+ setCaption( pStringList->front() );
-+ }
-+ break;
-+ case TDECommandEvent::SetType:
-+ if ( nListSize >= 1 )
-+ {
-+ TQString qType( pStringList->front() );
-+ if ( qType == "open" )
-+ {
-+ setIsSave( false );
-+ setCaption( i18n( "Open" ) );
-+ }
-+ else if ( qType == "save" )
-+ {
-+ setIsSave( true );
-+ setCaption( i18n( "Save As" ) );
-+ }
-+ }
-+ break;
-+ case TDECommandEvent::SetDefaultName:
-+ if ( nListSize >= 1 )
-+ {
-+ setKeepLocation( true );
-+ setSelection( pStringList->front() );
-+ }
-+ break;
-+ case TDECommandEvent::SetMultiSelection:
-+ if ( nListSize >= 1 )
-+ {
-+ if ( pStringList->front() == "true" )
-+ setMode( KFile::Files );
-+ else
-+ setMode( KFile::File );
-+ }
-+ break;
-+ case TDECommandEvent::Exec:
-+ {
-+ filterWidget->setEditable( false );
-+ setIsExecuting( true );
-+ bool bCanExit = false;
-+ do {
-+ setCanNotifySelection( true );
-+ exec();
-+
-+ KURL qLocalSelectedURL = mostLocalURL( selectedURL() );
-+ TQString qProtocol( qLocalSelectedURL.protocol() );
-+
-+ if ( isSave() && result() == TQDialog::Accepted )
-+ {
-+ if ( qProtocol == "file" )
-+ {
-+ TQString qFileName( addExtension( qLocalSelectedURL.path() ) );
-+ bCanExit =
-+ !QFile::exists( qFileName ) ||
-+ ( KMessageBox::warningYesNo( 0,
-+ i18n( "A file named \"%1\" already exists. "
-+ "Are you sure you want to overwrite it?" ).arg( qFileName ),
-+ i18n( "Overwrite File?" ),
-+ i18n( "Overwrite" ), KStdGuiItem::cancel() ) == KMessageBox::Yes );
-+ }
-+ else if ( !isSupportedProtocol( qProtocol ) )
-+ {
-+ KMessageBox::sorry( 0,
-+ i18n( "Saving using protocol \"%1\" is not supported." ).arg( qProtocol ) );
-+ bCanExit = false;
-+ }
-+ else
-+ bCanExit = true;
-+ }
-+ else if ( !isSave() && result() == TQDialog::Accepted && !isSupportedProtocol( qProtocol ) )
-+ {
-+ KMessageBox::information( 0,
-+ i18n( "Protocol \"%1\" is supported only partially. "
-+ "Local copy of the file will be created." ).arg( qProtocol ) );
-+ bCanExit = true;
-+ }
-+ else
-+ bCanExit = true;
-+ } while ( !bCanExit );
-+ setIsExecuting( false );
-+
-+ if ( result() == TQDialog::Accepted )
-+ sendCommand( "accept" );
-+ else
-+ sendCommand( "reject" );
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ // FIXME Some cleanup of pEvent? delete something, etc.?
-+ }
-+}
-+
-+void TDEFileDialog::appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle )
-+{
-+ TQString qLabel( rTitle );
-+ qLabel.replace( '~', '&' );
-+
-+ if ( rType == "checkbox" )
-+ {
-+ TQCheckBox *pCheckBox = new TQCheckBox( qLabel, m_pCheckBoxes, rId.utf8() );
-+
-+ pCheckBox->setEnabled( true );
-+ pCheckBox->setChecked( false );
-+ }
-+ else if ( rType == "listbox" )
-+ {
-+ TQLabel *pComboLabel = new TQLabel( qLabel, m_pLabels );
-+ TQComboBox *pComboBox = new TQComboBox( m_pComboBoxes, rId.utf8() );
-+
-+ pComboLabel->setBuddy( pComboBox );
-+ pComboBox->setEnabled( true );
-+ }
-+ else if ( rType == "pushbutton" )
-+ {
-+ TQPushButton *pPushButton = new TQPushButton( qLabel, m_pPushButtons, rId.utf8() );
-+ pPushButton->setEnabled( true );
-+ }
-+}
-+
-+TQWidget* TDEFileDialog::findControl( const TQString &rId ) const
-+{
-+ TQObjectList *pList = m_pCustomWidget->queryList();
-+ TQCString qName( rId.utf8() );
-+ TQObjectList::const_iterator it = pList->begin();
-+
-+ for ( ; it != pList->end() && qName != (*it)->name(); ++it )
-+ ;
-+
-+ TQWidget *pWidget = NULL;
-+ if ( it != pList->end() )
-+ pWidget = static_cast< TQWidget* >( *it );
-+
-+ delete pList;
-+
-+ return pWidget;
-+}
-+
-+void TDEFileDialog::enableControl( const TQString &rId, const TQString &rValue )
-+{
-+ TQWidget *pWidget = findControl( rId );
-+
-+ if ( pWidget )
-+ pWidget->setEnabled( rValue.lower() == "true" );
-+}
-+
-+void TDEFileDialog::getValue( const TQString &rId, const TQString &rAction )
-+{
-+ TQWidget *pWidget = findControl( rId );
-+ TQString qString;
-+ qString.reserve( 1024 );
-+ qString.append( "value" );
-+
-+ if ( pWidget )
-+ {
-+ TQCString qClassName = pWidget->className();
-+ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-+ {
-+ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-+
-+ if ( pCheckBox->isChecked() )
-+ qString.append( " bool true" );
-+ else
-+ qString.append( " bool false" );
-+ }
-+ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-+ {
-+ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-+ if ( rAction == "getItems" )
-+ {
-+ qString.append( " stringList" );
-+ for ( int nIdx = 0; nIdx < pComboBox->count(); ++nIdx )
-+ {
-+ qString.append( ' ' );
-+ appendEscaped( qString, pComboBox->text( nIdx ) );
-+ }
-+ }
-+ else if ( rAction == "getSelectedItem" )
-+ {
-+ qString.append( " string " );
-+ appendEscaped( qString, pComboBox->currentText() );
-+ }
-+ else if ( rAction == "getSelectedItemIndex" )
-+ {
-+ qString.append( " int " );
-+ qString.append( TQString().setNum( pComboBox->currentItem() ) );
-+ }
-+ // TODO getHelpURL
-+ }
-+ // TODO push button
-+ }
-+
-+ sendCommand( qString );
-+}
-+
-+void TDEFileDialog::setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue )
-+{
-+ TQWidget *pWidget = findControl( rId );
-+
-+ if ( pWidget )
-+ {
-+ TQCString qClassName = pWidget->className();
-+ if ( qClassName == TQCHECKBOX_OBJECT_NAME_STRING )
-+ {
-+ TQCheckBox *pCheckBox = static_cast< TQCheckBox* >( pWidget );
-+
-+ bool bValue = ( !rValue.isEmpty() ) && ( rValue.front().lower() == "true" );
-+ pCheckBox->setChecked( bValue );
-+ }
-+ else if ( qClassName == TQCOMBOBOX_OBJECT_NAME_STRING )
-+ {
-+ TQComboBox *pComboBox = static_cast< TQComboBox* >( pWidget );
-+ if ( rAction == "addItem" )
-+ {
-+ if ( !rValue.isEmpty() )
-+ pComboBox->insertItem( rValue.front() );
-+ }
-+ else if ( rAction == "addItems" )
-+ {
-+ pComboBox->insertStringList( rValue );
-+ }
-+ else if ( rAction == "deleteItem" )
-+ {
-+ if ( !rValue.isEmpty() )
-+ pComboBox->removeItem( rValue.front().toInt() );
-+ }
-+ else if ( rAction == "deleteItems" )
-+ {
-+ pComboBox->clear();
-+ }
-+ else if ( rAction == "setSelectedItem" )
-+ {
-+ if ( !rValue.isEmpty() )
-+ pComboBox->setCurrentItem( rValue.front().toInt() );
-+ }
-+ // FIXME setHelpURL is ignored
-+ }
-+ // TODO push button
-+ }
-+}
-+
-+void TDEFileDialog::appendFilter( const TQString &rTitle, const TQString &rFilter )
-+{
-+ // Filters are separated by ';'
-+ TQString qFilter( rFilter );
-+ qFilter.replace( TQChar( ';' ), TQChar( ' ' ) ).replace( "*.*", "*" );
-+
-+ // Workaround for too wide <All formats> (*.bmp;...) entry
-+ TQString qTitle( rTitle );
-+ qTitle.replace( TQRegExp( "^<([^>]*)> \\(.*" ), "<\\1>" );
-+
-+ m_aFilters.push_back( qMakePair( qTitle, qFilter ) );
-+}
-+
-+TQString TDEFileDialog::filters() const
-+{
-+ TQString qString, qTmp;
-+ bool bFirstFilter = true;
-+
-+ for ( FilterList::const_iterator it = m_aFilters.begin(); it != m_aFilters.end(); ++it )
-+ {
-+ if ( bFirstFilter )
-+ bFirstFilter = false;
-+ else
-+ qString.append( '\n' );
-+
-+ qString.append( (*it).second );
-+ qString.append( '|' );
-+
-+ qTmp = (*it).first;
-+ qString.append( qTmp.replace( '/', "\\/" ) );
-+ }
-+
-+ return qString;
-+}
-+
-+TQString TDEFileDialog::addExtension( const TQString &rFileName ) const
-+{
-+ if ( !isSave() )
-+ return rFileName;
-+
-+ TQString qExtension;
-+
-+ TQWidget *pExtensionWidget = findControl( "100" ); // CHECKBOX_AUTOEXTENSION
-+ TQCheckBox *pExtensionCB = pExtensionWidget? static_cast< TQCheckBox* >( pExtensionWidget->qt_cast( TQCHECKBOX_OBJECT_NAME_STRING ) ): NULL;
-+ if ( pExtensionCB && pExtensionCB->isChecked() )
-+ {
-+ // FIXME: qFilter can be a MIME; we ignore it now...
-+ TQStringList qFilterList = TQStringList::split( " ", currentFilter() );
-+ for ( TQStringList::const_iterator it = qFilterList.begin();
-+ qExtension.isEmpty() && it != qFilterList.end();
-+ ++it )
-+ {
-+ int nUnwanted = (*it).findRev( '*' );
-+ if ( nUnwanted < 0 )
-+ nUnwanted = (*it).findRev( '?' );
-+ else
-+ nUnwanted = ::std::max( nUnwanted, (*it).find( '?', nUnwanted ) );
-+
-+ int nIdx = (*it).find( '.', ::std::max( nUnwanted, 0 ) );
-+ if ( nIdx >= 0 )
-+ qExtension = (*it).mid( nIdx ).lower();
-+ }
-+ }
-+
-+ if ( qExtension.isEmpty() || qExtension == "." || rFileName.endsWith( qExtension ) )
-+ return rFileName;
-+ else
-+ return rFileName + qExtension;
-+}
-+
-+bool TDEFileDialog::isSupportedProtocol( const TQString &rProtocol ) const
-+{
-+ // TODO Get this information directly from OOo
-+ const char * pOOoProtocols[] = { "", "smb", "ftp", "http", "file", "mailto",
-+ "vnd.sun.star.webdav", "news", "private", "vnd.sun.star.help",
-+ "https", "slot", "macro", "javascript", "imap", "pop3", "data",
-+ "cid", "out", "vnd.sun.star.wfs", "vnd.sun.star.hier", "vim",
-+ ".uno", ".component", "vnd.sun.star.pkg", "ldap", "db",
-+ "vnd.sun.star.cmd", "vnd.sun.star.script", "vnd.sun.star.odma",
-+ "telnet",
-+ NULL };
-+
-+ for ( const char **pIndex = pOOoProtocols; *pIndex != NULL; ++pIndex )
-+ {
-+ if ( rProtocol == *pIndex )
-+ return true;
-+ }
-+
-+ // TODO gnome-vfs bits here
-+
-+ return false;
-+}
-+
-+KURL TDEFileDialog::mostLocalURL( const KURL &rURL ) const
-+{
-+#if KDE_IS_VERSION(3,5,0)
-+ KURL qMostLocalURL( KIO::NetAccess::mostLocalURL( rURL, const_cast<TDEFileDialog*>( this ) ) );
-+ if ( qMostLocalURL.isLocalFile() )
-+ return qMostLocalURL;
-+ else
-+ {
-+ // Terrible hack to get even non-existing media:// files right
-+ qMostLocalURL.cd( ".." );
-+ KURL qMostLocalPath( KIO::NetAccess::mostLocalURL( qMostLocalURL, const_cast<TDEFileDialog*>( this ) ) );
-+ if ( qMostLocalPath.isLocalFile() )
-+ {
-+ qMostLocalPath.addPath( rURL.fileName() );
-+ return qMostLocalPath;
-+ }
-+ }
-+#endif
-+
-+ return rURL;
-+}
-+
-+TQString TDEFileDialog::localCopy( const TQString &rFileName ) const
-+{
-+ // 106 == MIB enum for UTF-8
-+ KURL qLocalURL = mostLocalURL( KURL( rFileName, 106 ) );
-+ if ( qLocalURL.isLocalFile() )
-+ return qLocalURL.url();
-+
-+ int nExtensionPos = rFileName.findRev( '/' );
-+ if ( nExtensionPos >= 0 )
-+ nExtensionPos = rFileName.find( '.', nExtensionPos );
-+ else
-+ nExtensionPos = rFileName.find( '.' );
-+
-+ KTempFile qTempFile( TQString::null, ( nExtensionPos < 0 )? TQString(): rFileName.mid( nExtensionPos ) );
-+ KURL qDestURL;
-+ qDestURL.setPath( qTempFile.name() );
-+
-+ if ( !KIO::NetAccess::file_copy( rFileName, qDestURL, 0600, true, false, NULL ) )
-+ {
-+ KMessageBox::error( 0, KIO::NetAccess::lastErrorString() );
-+ return TQString::null;
-+ }
-+
-+ return qDestURL.url();
-+}
-+
-+void TDEFileDialog::fileHighlightedCommand( const TQString & )
-+{
-+ if ( canNotifySelection() )
-+ {
-+ sendCommand( "fileSelectionChanged" );
-+ setCanNotifySelection( false );
-+ }
-+}
-+
-+void TDEFileDialog::selectionChangedCommand()
-+{
-+ if ( canNotifySelection() )
-+ {
-+ sendCommand( "fileSelectionChanged" );
-+ setCanNotifySelection( false );
-+ }
-+}
-+
-+void TDEFileDialog::sendCommand( const TQString &rCommand )
-+{
-+#if OSL_DEBUG_LEVEL > 1
-+ ::std::cerr << "tdefilepicker sent: " << rCommand.latin1() << ::std::endl;
-+#endif
-+
-+ //m_aOutputStream << rCommand << endl;
-+ ::std::cout << rCommand.utf8() << ::std::endl;
-+}
-+
-+void TDEFileDialog::appendURL( TQString &rBuffer, const KURL &rURL )
-+{
-+ // From Martin Kretzschmar:
-+ // file:///path/to/test%E0.odt is not a valid URL from OOo's point of
-+ // view. (?Most modern parts of?) OOo assume(s) that the URL contains only
-+ // ASCII characters (which test%E0.odt does) and is UTF-8 after unescaping
-+ // (which file:///path/test%E0.odt is not).
-+ // Cf. the comment in sal/inc/osl/file.h.
-+ // 106 == MIB enum for UTF-8
-+ TQString qUrlStr = addExtension( rURL.url( 0, 106 ) );
-+
-+ if ( !isExecuting() && !isSupportedProtocol( rURL.protocol() ) )
-+ qUrlStr = localCopy( qUrlStr );
-+
-+ if ( qUrlStr.startsWith( "file:/" ) && qUrlStr.mid( 6, 1 ) != "/" )
-+ qUrlStr.replace( "file:/", "file:///" );
-+
-+ rBuffer.append( " " );
-+ if ( !qUrlStr.isEmpty() )
-+ appendEscaped( rBuffer, qUrlStr );
-+}
-+
-+void TDEFileDialog::appendEscaped( TQString &rBuffer, const TQString &rString )
-+{
-+ const TQChar *pUnicode = rString.unicode();
-+ const TQChar *pEnd = pUnicode + rString.length();
-+
-+ rBuffer.append( '"' );
-+ for ( ; pUnicode != pEnd; ++pUnicode )
-+ {
-+ if ( *pUnicode == '\\' )
-+ rBuffer.append( "\\\\" );
-+ else if ( *pUnicode == '"' )
-+ rBuffer.append( "\\\"" );
-+ else if ( *pUnicode == '\n' )
-+ rBuffer.append( "\\\n" );
-+ else
-+ rBuffer.append( *pUnicode );
-+ }
-+ rBuffer.append( '"' );
-+}
-+
-+TQString TDEFileDialog::escapeString( const TQString &rString )
-+{
-+ TQString qString;
-+ qString.reserve( 2*rString.length() + 2 ); // every char escaped + quotes
-+
-+ appendEscaped( qString, rString );
-+
-+ return qString;
-+}
-+
-+
-+void TDEFileFilterComboHack::setCurrentFilter( const TQString& filter )
-+{
-+ setCurrentText( filter );
-+ filterChanged();
-+
-+ // Workaround for 'Filter name (*.blah)' vs. 'Filter name'
-+ if ( currentText() != text( currentItem() ) )
-+ {
-+ int nItem = 0;
-+ for ( ; nItem < count() && !text( nItem ).startsWith( filter ); ++nItem );
-+
-+ if ( nItem < count() )
-+ setCurrentItem( nItem );
-+ else
-+ setCurrentItem( 0 );
-+
-+ filterChanged();
-+ }
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdefilepicker.hxx b/fpicker/source/unx/tde/tdefilepicker.hxx
-new file mode 100644
-index 0000000..f411db5
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdefilepicker.hxx
-@@ -0,0 +1,128 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _TDEFILEPICKER_HXX_
-+#define _TDEFILEPICKER_HXX_
-+
-+#include <cstddef>
-+
-+#include <kfiledialog.h>
-+#include <kfilefiltercombo.h>
-+
-+class TQGrid;
-+class TQHBox;
-+class TQVBox;
-+
-+class TDEFileDialog : public KFileDialog
-+{
-+ Q_OBJECT
-+
-+protected:
-+ typedef TQPair< TQString, TQString > FilterEntry;
-+ typedef TQValueList< FilterEntry > FilterList;
-+
-+ TQVBox *m_pCustomWidget;
-+ TQHBox *m_pCombosAndButtons;
-+
-+ TQVBox *m_pLabels;
-+ TQVBox *m_pComboBoxes;
-+ TQVBox *m_pPushButtons;
-+
-+ TQGrid *m_pCheckBoxes;
-+
-+ FilterList m_aFilters;
-+
-+ /** Are we a "Save As" dialog?
-+ *
-+ * We cannot use KFileDialog::setOperationMode() here, because then
-+ * it automatically adds an "Automatically select filename extension"
-+ * check box, and completely destroys the dialog's layout
-+ * (custom list boxes are under this check box, which looks ugly).
-+ */
-+ bool m_bIsSave;
-+ bool m_bIsExecuting;
-+
-+ bool m_bCanNotifySelection;
-+
-+public:
-+ TDEFileDialog( const TQString &startDir, const TQString &filter,
-+ TQWidget *parent, const char *name );
-+ virtual ~TDEFileDialog();
-+
-+protected:
-+ virtual void resizeEvent( TQResizeEvent *pEvent );
-+ virtual void showEvent( TQShowEvent *pEvent );
-+ void updateCustomWidgetLayout();
-+
-+ virtual void customEvent( TQCustomEvent *pEvent );
-+
-+protected:
-+ void appendControl( const TQString &rId, const TQString &rType, const TQString &rTitle );
-+ TQWidget* findControl( const TQString &rId ) const;
-+ void enableControl( const TQString &rId, const TQString &rValue );
-+ void getValue( const TQString &rId, const TQString &rAction );
-+ void setValue( const TQString &rId, const TQString &rAction, const TQStringList &rValue );
-+
-+ void appendFilter( const TQString &rTitle, const TQString &rFilter );
-+ TQString filters() const;
-+ TQString addExtension( const TQString &rFileName ) const;
-+
-+ void setIsSave( bool bIsSave ) { m_bIsSave = bIsSave; }
-+ bool isSave( void ) const { return m_bIsSave; }
-+
-+ void setIsExecuting( bool bIsExecuting ) { m_bIsExecuting = bIsExecuting; }
-+ bool isExecuting( void ) const { return m_bIsExecuting; }
-+
-+ bool isSupportedProtocol( const TQString &rProtocol ) const;
-+ KURL mostLocalURL( const KURL &rURL ) const;
-+ TQString localCopy( const TQString &rFileName ) const;
-+
-+ void setCanNotifySelection( bool bCanNotifySelection ) { m_bCanNotifySelection = bCanNotifySelection; }
-+ bool canNotifySelection( void ) const { return m_bCanNotifySelection; }
-+
-+protected slots:
-+ void fileHighlightedCommand( const TQString & );
-+ void selectionChangedCommand();
-+
-+protected:
-+ void sendCommand( const TQString &rCommand );
-+ void appendURL( TQString &rBuffer, const KURL &rURL );
-+ void appendEscaped( TQString &rBuffer, const TQString &rString );
-+ TQString escapeString( const TQString &rString );
-+};
-+
-+class TDEFileFilterComboHack : public KFileFilterCombo
-+{
-+public:
-+ void setCurrentFilter( const TQString& filter );
-+};
-+
-+#endif // _TDEFILEPICKER_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdefpmain.cxx b/fpicker/source/unx/tde/tdefpmain.cxx
-new file mode 100644
-index 0000000..eb20aa3
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdefpmain.cxx
-@@ -0,0 +1,95 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <cstddef>
-+
-+#include <tdemodalityfilter.hxx>
-+#include <tdefilepicker.hxx>
-+#include <tdecommandthread.hxx>
-+
-+#include <kaboutdata.h>
-+#include <kapplication.h>
-+#include <kcmdlineargs.h>
-+
-+#include <iostream>
-+#include <stdlib.h>
-+
-+//////////////////////////////////////////////////////////////////////////
-+// Main
-+//////////////////////////////////////////////////////////////////////////
-+
-+static KCmdLineOptions sOptions[] =
-+{
-+ { "winid <argument>", I18N_NOOP("Window ID to which is the fpicker modal"), "0" },
-+ KCmdLineLastOption
-+};
-+
-+int main( int argc, char* argv[] )
-+{
-+ // we fake the name of the application to have "OpenOffice.org" in the
-+ // title
-+ KAboutData qAboutData( "tdefilepicker", I18N_NOOP( "OpenOffice.org" ),
-+ "0.1", I18N_NOOP( "tdefilepicker is an implementation of the TDE file dialog for OpenOffice.org." ),
-+ KAboutData::License_LGPL,
-+ "(c) 2004, Jan Holesovsky" );
-+ qAboutData.addAuthor( "Jan Holesovsky", I18N_NOOP("Original author and current maintainer"), "kendy@openoffice.org" );
-+
-+ // Let the user see that this does something...
-+ ::std::cerr << "tdefilepicker, an implementation of TDE file dialog for OOo." << ::std::endl
-+ << "Type 'exit' and press Enter to finish." << ::std::endl;
-+
-+ KCmdLineArgs::addCmdLineOptions( sOptions );
-+ KCmdLineArgs::init( argc, argv, &qAboutData );
-+
-+ KLocale::setMainCatalogue( "kdialog" );
-+
-+ KApplication kApplication;
-+
-+ // Setup the modality
-+ KCmdLineArgs *pArgs = KCmdLineArgs::parsedArgs();
-+ long nWinId = atol( pArgs->getOption( "winid" ) );
-+ pArgs->clear();
-+
-+ TDEModalityFilter qModalityFilter( nWinId );
-+
-+ TDEFileDialog aFileDialog( NULL, TQString(), NULL, "tdefiledialog" );
-+
-+ TDECommandThread qCommandThread( &aFileDialog );
-+ qCommandThread.start();
-+
-+ kApplication.exec();
-+
-+ qCommandThread.wait();
-+
-+ ::std::cout << "exited" << ::std::endl;
-+
-+ return 0;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdemodalityfilter.cxx b/fpicker/source/unx/tde/tdemodalityfilter.cxx
-new file mode 100644
-index 0000000..6ced314
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdemodalityfilter.cxx
-@@ -0,0 +1,70 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <cstddef>
-+
-+#include <tdemodalityfilter.hxx>
-+
-+#include <kapplication.h>
-+#include <kdialogbase.h>
-+
-+#include <netwm.h>
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+//////////////////////////////////////////////////////////////////////////
-+// Modality filter
-+//////////////////////////////////////////////////////////////////////////
-+
-+TDEModalityFilter::TDEModalityFilter( WId nWinId )
-+ : m_nWinId( nWinId )
-+{
-+ kapp->installEventFilter( this );
-+}
-+
-+TDEModalityFilter::~TDEModalityFilter()
-+{
-+ kapp->removeEventFilter( this );
-+}
-+
-+bool TDEModalityFilter::eventFilter( TQObject *pObject, TQEvent *pEvent )
-+{
-+ if ( pObject->isWidgetType() && pEvent->type() == TQEvent::Show )
-+ {
-+ KDialogBase* pDlg = ::qt_cast< KDialogBase* >( pObject );
-+ if ( pDlg != NULL && m_nWinId != 0 )
-+ {
-+ XSetTransientForHint( qt_xdisplay(), pDlg->winId(), m_nWinId );
-+ m_nWinId = 0;
-+ }
-+ }
-+ return false;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde/tdemodalityfilter.hxx b/fpicker/source/unx/tde/tdemodalityfilter.hxx
-new file mode 100644
-index 0000000..b00f9a3
---- /dev/null
-+++ b/fpicker/source/unx/tde/tdemodalityfilter.hxx
-@@ -0,0 +1,49 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _TDEMODALITYFILTER_HXX_
-+#define _TDEMODALITYFILTER_HXX_
-+
-+#include <tqobject.h>
-+
-+class TDEModalityFilter : public TQObject
-+{
-+private:
-+ WId m_nWinId;
-+
-+public:
-+ TDEModalityFilter( WId nWinId );
-+ virtual ~TDEModalityFilter();
-+
-+ virtual bool eventFilter( TQObject *pObject, TQEvent *pEvent );
-+};
-+
-+#endif // _TDEMODALITYFILTER_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/FPServiceInfo.hxx b/fpicker/source/unx/tde_unx/FPServiceInfo.hxx
-new file mode 100644
-index 0000000..2dcbe6d
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/FPServiceInfo.hxx
-@@ -0,0 +1,48 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _FPSERVICEINFO_HXX_
-+#define _FPSERVICEINFO_HXX_
-+
-+// the service names
-+#define FILE_PICKER_SERVICE_NAME "com.sun.star.ui.dialogs.TDEFilePicker"
-+
-+// the implementation names
-+#define FILE_PICKER_IMPL_NAME "com.sun.star.ui.dialogs.UnxFilePicker"
-+
-+// the registry key names
-+// a key under which this service will be registered,
-+// Format: -> "/ImplName/UNO/SERVICES/ServiceName"
-+// <Implementation-Name></UNO/SERVICES/><Service-Name>
-+#define FILE_PICKER_REGKEY_NAME "/com.sun.star.ui.dialogs.UnxFilePicker/UNO/SERVICES/com.sun.star.ui.dialogs.TDEFilePicker"
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxCommandThread.cxx b/fpicker/source/unx/tde_unx/UnxCommandThread.cxx
-new file mode 100644
-index 0000000..e6ae0bb
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxCommandThread.cxx
-@@ -0,0 +1,315 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <UnxCommandThread.hxx>
-+#include <UnxNotifyThread.hxx>
-+
-+#include <rtl/ustring.hxx>
-+#include <rtl/ustrbuf.hxx>
-+
-+#include <unistd.h>
-+#include <string.h>
-+#include <iostream>
-+
-+using namespace ::com::sun::star;
-+
-+//////////////////////////////////////////////////////////////////////////
-+// UnxFilePickerCommandThread
-+//////////////////////////////////////////////////////////////////////////
-+
-+UnxFilePickerCommandThread::UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD )
-+ : m_pNotifyThread( pNotifyThread ),
-+ m_nReadFD( nReadFD )
-+{
-+}
-+
-+UnxFilePickerCommandThread::~UnxFilePickerCommandThread()
-+{
-+}
-+
-+sal_Bool SAL_CALL UnxFilePickerCommandThread::result()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_aResult;
-+}
-+
-+::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getCurrentFilter()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_aGetCurrentFilter;
-+}
-+
-+::rtl::OUString SAL_CALL UnxFilePickerCommandThread::getDirectory()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_aGetDirectory;
-+}
-+
-+uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::getFiles()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ sal_Int32 nSize = m_aGetFiles.size();
-+ uno::Sequence< ::rtl::OUString > aFiles( ( nSize > 1 )? nSize + 1: nSize );
-+
-+ if ( nSize == 1 )
-+ aFiles[0] = m_aGetFiles.front();
-+ else if ( nSize > 1 )
-+ {
-+ // First entry in the sequence must be the dirname, the others are the
-+ // filenames, so we have to rearrange the list...
-+
-+ ::rtl::OUString aFront = m_aGetFiles.front();
-+ sal_Int32 nLastSlash = aFront.lastIndexOf( '/' );
-+
-+ aFiles[0] = ( nLastSlash >= 0 )? aFront.copy( 0, nLastSlash ): ::rtl::OUString();
-+ ++nLastSlash;
-+
-+ sal_Int32 nIdx = 1;
-+ for ( ::std::list< ::rtl::OUString >::const_iterator it = m_aGetFiles.begin();
-+ it != m_aGetFiles.end(); ++it, ++nIdx )
-+ {
-+ sal_Int32 nLength = (*it).getLength() - nLastSlash;
-+ aFiles[nIdx] = ( nLength >= 0 )? (*it).copy( nLastSlash, nLength ): ::rtl::OUString();
-+ }
-+ }
-+
-+ return aFiles;
-+}
-+
-+uno::Any SAL_CALL UnxFilePickerCommandThread::getValue()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_aGetValue;
-+}
-+
-+void SAL_CALL UnxFilePickerCommandThread::run()
-+{
-+ if ( m_nReadFD < 0 )
-+ return;
-+
-+ sal_Int32 nBufferSize = 1024; // 1 is for testing, 1024 for real use
-+ sal_Char *pBuffer = new sal_Char[nBufferSize];
-+ sal_Char *pBufferEnd = pBuffer + nBufferSize;
-+
-+ sal_Char *pWhereToRead = pBuffer;
-+ sal_Char *pEntryBegin = pBuffer;
-+ sal_Int32 nBytesRead = 0;
-+ sal_Bool bShouldExit = sal_False;
-+ while ( !bShouldExit && ( nBytesRead = read( m_nReadFD, pWhereToRead, pBufferEnd - pWhereToRead ) ) > 0 )
-+ {
-+ sal_Bool bFoundNL = sal_False;
-+ sal_Char *pWhereToReadEnd = pWhereToRead + nBytesRead;
-+ sal_Char *pEntryEnd = pWhereToRead;
-+ do {
-+ for ( ; pEntryEnd < pWhereToReadEnd && *pEntryEnd != '\n'; ++pEntryEnd )
-+ ;
-+
-+ if ( pEntryEnd < pWhereToReadEnd )
-+ {
-+ bFoundNL = sal_True;
-+ *pEntryEnd = 0;
-+
-+ if ( strcmp( pEntryBegin, "exited" ) == 0 )
-+ bShouldExit = sal_True;
-+ else
-+ handleCommand( ::rtl::OUString( pEntryBegin, pEntryEnd - pEntryBegin, RTL_TEXTENCODING_UTF8 )/*, bQuit*/ );
-+
-+ pEntryBegin = pEntryEnd + 1;
-+ }
-+ } while ( pEntryEnd < pWhereToReadEnd );
-+
-+ if ( bFoundNL )
-+ {
-+ if ( pEntryBegin < pBufferEnd )
-+ memmove( pBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-+ }
-+ else
-+ {
-+ // enlarge the buffer size
-+ nBufferSize *= 2;
-+ sal_Char *pNewBuffer = new sal_Char[nBufferSize];
-+ if ( pEntryBegin < pBufferEnd )
-+ memmove( pNewBuffer, pEntryBegin, pWhereToReadEnd - pEntryBegin );
-+
-+ delete[] pBuffer;
-+ pBuffer = pNewBuffer;
-+ pBufferEnd = pBuffer + nBufferSize;
-+ }
-+
-+ pWhereToRead = pBuffer + ( pWhereToReadEnd - pEntryBegin );
-+ pEntryBegin = pBuffer;
-+ }
-+}
-+
-+void SAL_CALL UnxFilePickerCommandThread::handleCommand( const ::rtl::OUString &rCommand )
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+#if OSL_DEBUG_LEVEL > 0
-+ ::std::cerr << "UnxFilePicker received: \"" <<
-+ OUStringToOString( rCommand, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-+#endif
-+
-+ ::std::list< ::rtl::OUString > aList = tokenize( rCommand );
-+
-+ if ( aList.size() == 0 )
-+ return;
-+
-+ ::rtl::OUString aCommandName = aList.front();
-+ aList.pop_front();
-+
-+ if ( aCommandName.equalsAscii( "accept" ) )
-+ {
-+ m_aResult = sal_True;
-+ m_aExecCondition.set();
-+ }
-+ else if ( aCommandName.equalsAscii( "reject" ) )
-+ {
-+ m_aResult = sal_False;
-+ m_aExecCondition.set();
-+ }
-+ else if ( aCommandName.equalsAscii( "fileSelectionChanged" ) )
-+ {
-+ if ( m_pNotifyThread )
-+ m_pNotifyThread->fileSelectionChanged();
-+ }
-+ else if ( aCommandName.equalsAscii( "files" ) )
-+ {
-+ m_aGetFiles = aList;
-+ m_aGetFilesCondition.set();
-+ }
-+ else if ( aCommandName.equalsAscii( "value" ) )
-+ {
-+ ::rtl::OUString aType;
-+ if ( !aList.empty() )
-+ {
-+ aType = aList.front();
-+ aList.pop_front();
-+ }
-+
-+ if ( aType.equalsAscii( "bool" ) )
-+ {
-+ sal_Bool bValue = !aList.empty() && aList.front().equalsIgnoreAsciiCaseAscii( "true" );
-+
-+ m_aGetValue <<= bValue;
-+ m_aGetValueCondition.set();
-+ }
-+ else if ( aType.equalsAscii( "int" ) )
-+ {
-+ sal_Int32 nValue = 0;
-+ if ( !aList.empty() )
-+ nValue = aList.front().toInt32();
-+
-+ m_aGetValue <<= nValue;
-+ m_aGetValueCondition.set();
-+ }
-+ else if ( aType.equalsAscii( "string" ) )
-+ {
-+ ::rtl::OUString aValue;
-+ if ( !aList.empty() )
-+ aValue = aList.front();
-+
-+ m_aGetValue <<= aValue;
-+ m_aGetValueCondition.set();
-+ }
-+ else if ( aType.equalsAscii( "stringList" ) )
-+ {
-+ uno::Sequence< ::rtl::OUString > aSequence( aList.size() );
-+ sal_Int32 nIdx = 0;
-+ for ( ::std::list< ::rtl::OUString >::const_iterator it = aList.begin(); it != aList.end(); ++it, ++nIdx )
-+ aSequence[nIdx] = (*it);
-+
-+ m_aGetValue <<= aSequence;
-+ m_aGetValueCondition.set();
-+ }
-+ else
-+ {
-+ m_aGetValue = uno::Any();
-+ m_aGetValueCondition.set();
-+ }
-+ }
-+ else if ( aCommandName.equalsAscii( "currentFilter" ) )
-+ {
-+ m_aGetCurrentFilter = aList.empty()? ::rtl::OUString(): aList.front();
-+ m_aGetCurrentFilterCondition.set();
-+ }
-+ else if ( aCommandName.equalsAscii( "currentDirectory" ) )
-+ {
-+ m_aGetDirectory = aList.empty()? ::rtl::OUString(): aList.front();
-+ m_aGetDirectoryCondition.set();
-+ }
-+ else
-+ {
-+#if OSL_DEBUG_LEVEL > 0
-+ ::std::cerr << "Unrecognized command: "
-+ << OUStringToOString( aCommandName, RTL_TEXTENCODING_ASCII_US ).getStr() << "\"" << ::std::endl;
-+#endif
-+ }
-+}
-+
-+::std::list< ::rtl::OUString > SAL_CALL UnxFilePickerCommandThread::tokenize( const ::rtl::OUString &rCommand )
-+{
-+ ::std::list< ::rtl::OUString > aList;
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ const sal_Unicode *pUnicode = rCommand.getStr();
-+ const sal_Unicode *pEnd = pUnicode + rCommand.getLength();
-+ sal_Bool bQuoted = sal_False;
-+
-+ for ( ; pUnicode != pEnd; ++pUnicode )
-+ {
-+ if ( *pUnicode == '\\' )
-+ {
-+ ++pUnicode;
-+ if ( pUnicode != pEnd )
-+ {
-+ if ( *pUnicode == 'n' )
-+ aBuffer.appendAscii( "\n", 1 );
-+ else
-+ aBuffer.append( *pUnicode );
-+ }
-+ }
-+ else if ( *pUnicode == '"' )
-+ bQuoted = !bQuoted;
-+ else if ( *pUnicode == ' ' && !bQuoted )
-+ aList.push_back( aBuffer.makeStringAndClear() );
-+ else
-+ aBuffer.append( *pUnicode );
-+ }
-+ aList.push_back( aBuffer.makeStringAndClear() );
-+
-+ return aList;
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxCommandThread.hxx b/fpicker/source/unx/tde_unx/UnxCommandThread.hxx
-new file mode 100644
-index 0000000..41b82bd
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxCommandThread.hxx
-@@ -0,0 +1,136 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _UNXCOMMANDTHREAD_HXX_
-+#define _UNXCOMMANDTHREAD_HXX_
-+
-+#include <com/sun/star/uno/Any.hxx>
-+#include <com/sun/star/uno/Sequence.hxx>
-+
-+#include <osl/conditn.hxx>
-+#include <osl/mutex.hxx>
-+#include <osl/thread.hxx>
-+#include <rtl/ustring.hxx>
-+
-+#include <vcl/svapp.hxx>
-+
-+#include <list>
-+
-+class UnxFilePickerNotifyThread;
-+
-+/** Synchronization for the 'thread-less' version of the fpicker.
-+
-+ Something like osl::Condition, but calls Application::Yield() while in
-+ wait().
-+*/
-+class YieldingCondition
-+{
-+ ::osl::Mutex m_aMutex;
-+ bool m_bValue;
-+
-+ bool get()
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ return m_bValue;
-+ }
-+
-+public:
-+ YieldingCondition() { reset(); }
-+
-+ void reset()
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ m_bValue = false;
-+ }
-+
-+ void set()
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+ m_bValue = true;
-+ }
-+
-+ void wait()
-+ {
-+ while ( !get() )
-+ Application::Yield();
-+ }
-+};
-+
-+class UnxFilePickerCommandThread : public ::osl::Thread
-+{
-+protected:
-+ UnxFilePickerNotifyThread *m_pNotifyThread;
-+ int m_nReadFD;
-+
-+ ::osl::Mutex m_aMutex;
-+
-+ YieldingCondition m_aExecCondition;
-+ sal_Bool m_aResult;
-+
-+ ::osl::Condition m_aGetCurrentFilterCondition;
-+ ::rtl::OUString m_aGetCurrentFilter;
-+
-+ ::osl::Condition m_aGetDirectoryCondition;
-+ ::rtl::OUString m_aGetDirectory;
-+
-+ ::osl::Condition m_aGetFilesCondition;
-+ ::std::list< ::rtl::OUString > m_aGetFiles;
-+
-+ ::osl::Condition m_aGetValueCondition;
-+ ::com::sun::star::uno::Any m_aGetValue;
-+
-+public:
-+ UnxFilePickerCommandThread( UnxFilePickerNotifyThread *pNotifyThread, int nReadFD );
-+ ~UnxFilePickerCommandThread();
-+
-+ YieldingCondition& SAL_CALL execCondition() { return m_aExecCondition; }
-+ sal_Bool SAL_CALL result();
-+
-+ ::osl::Condition& SAL_CALL getCurrentFilterCondition() { return m_aGetCurrentFilterCondition; }
-+ ::rtl::OUString SAL_CALL getCurrentFilter();
-+
-+ ::osl::Condition& SAL_CALL getDirectoryCondition() { return m_aGetDirectoryCondition; }
-+ ::rtl::OUString SAL_CALL getDirectory();
-+
-+ ::osl::Condition& SAL_CALL getFilesCondition() { return m_aGetFilesCondition; }
-+ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles();
-+
-+ ::osl::Condition& SAL_CALL getValueCondition() { return m_aGetValueCondition; }
-+ ::com::sun::star::uno::Any SAL_CALL getValue();
-+
-+protected:
-+ virtual void SAL_CALL run();
-+
-+ virtual void SAL_CALL handleCommand( const ::rtl::OUString &rCommand/*, sal_Bool &rQuit*/ );
-+ ::std::list< ::rtl::OUString > SAL_CALL tokenize( const ::rtl::OUString &rCommand );
-+};
-+
-+#endif // _UNXCOMMANDTHREAD_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxFPentry.cxx b/fpicker/source/unx/tde_unx/UnxFPentry.cxx
-new file mode 100644
-index 0000000..bd4582d
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxFPentry.cxx
-@@ -0,0 +1,112 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <com/sun/star/container/XSet.hpp>
-+
-+#include <cppuhelper/factory.hxx>
-+#include <osl/diagnose.h>
-+
-+#include "UnxFilePicker.hxx"
-+#include "FPServiceInfo.hxx"
-+
-+using namespace ::rtl;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::container;
-+using namespace ::com::sun::star::lang;
-+using namespace ::com::sun::star::registry;
-+using namespace ::cppu;
-+using ::com::sun::star::ui::dialogs::XFilePicker;
-+
-+//////////////////////////////////////////////////////////////////////////
-+//
-+//////////////////////////////////////////////////////////////////////////
-+
-+static Reference< XInterface > SAL_CALL createInstance( const Reference< XMultiServiceFactory >& rServiceManager )
-+{
-+ return Reference< XInterface >(
-+ static_cast< XFilePicker* >( new UnxFilePicker( rServiceManager ) ) );
-+}
-+
-+extern "C"
-+{
-+
-+sal_Bool SAL_CALL component_writeInfo( void* /*pServiceManager*/, void* pRegistryKey )
-+{
-+ sal_Bool bRetVal = sal_True;
-+
-+ if ( pRegistryKey )
-+ {
-+ try
-+ {
-+ Reference< XRegistryKey > pXNewKey( static_cast< XRegistryKey* >( pRegistryKey ) );
-+ pXNewKey->createKey( OUString(RTL_CONSTASCII_USTRINGPARAM( FILE_PICKER_REGKEY_NAME ) ));
-+ }
-+ catch( InvalidRegistryException& )
-+ {
-+ OSL_FAIL( "InvalidRegistryException caught" );
-+ bRetVal = sal_False;
-+ }
-+ }
-+
-+ return bRetVal;
-+}
-+
-+//////////////////////////////////////////////////////////////////////////
-+//
-+//////////////////////////////////////////////////////////////////////////
-+
-+SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char* pImplName, uno_Interface* pSrvManager, uno_Interface* /*pRegistryKey*/ )
-+{
-+ void* pRet = 0;
-+
-+ if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, FILE_PICKER_IMPL_NAME ) ) )
-+// if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, FILE_PICKER_SERVICE_NAME ) ) )
-+ {
-+ Sequence< OUString > aSNS( 1 );
-+ aSNS.getArray( )[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( FILE_PICKER_SERVICE_NAME ));
-+
-+ Reference< XSingleServiceFactory > xFactory ( createSingleFactory(
-+ reinterpret_cast< XMultiServiceFactory* > ( pSrvManager ),
-+ OUString::createFromAscii( pImplName ),
-+ createInstance,
-+ aSNS ) );
-+ if ( xFactory.is() )
-+ {
-+ xFactory->acquire();
-+ pRet = xFactory.get();
-+ }
-+ }
-+
-+ return pRet;
-+}
-+
-+} // extern "C"
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxFilePicker.cxx b/fpicker/source/unx/tde_unx/UnxFilePicker.cxx
-new file mode 100644
-index 0000000..c2a5ca8
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxFilePicker.cxx
-@@ -0,0 +1,932 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <com/sun/star/lang/DisposedException.hpp>
-+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-+#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
-+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
-+#include <com/sun/star/ui/dialogs/ControlActions.hpp>
-+
-+#include <FPServiceInfo.hxx>
-+
-+#include <cppuhelper/interfacecontainer.h>
-+#include <osl/diagnose.h>
-+#include <rtl/ustring.hxx>
-+#include <rtl/ustrbuf.hxx>
-+#include <tools/resmgr.hxx>
-+
-+#include <svtools/svtools.hrc>
-+#include <UnxFilePicker.hxx>
-+#include <UnxCommandThread.hxx>
-+#include <UnxNotifyThread.hxx>
-+
-+#include <vcl/svapp.hxx>
-+#include <vcl/sysdata.hxx>
-+#include <vcl/syswin.hxx>
-+#include <vcl/window.hxx>
-+
-+#include <sys/wait.h>
-+#include <unistd.h>
-+#include <fcntl.h>
-+#include <stdio.h>
-+
-+#include <iostream>
-+
-+using namespace ::com::sun::star;
-+
-+using namespace ::com::sun::star::ui::dialogs;
-+using namespace ::com::sun::star::ui::dialogs::TemplateDescription;
-+
-+//////////////////////////////////////////////////////////////////////////
-+// helper functions
-+//////////////////////////////////////////////////////////////////////////
-+
-+namespace
-+{
-+ // controling event notifications
-+ const bool STARTUP_SUSPENDED = true;
-+ const bool STARTUP_ALIVE = false;
-+
-+ uno::Sequence<rtl::OUString> SAL_CALL FilePicker_getSupportedServiceNames()
-+ {
-+ uno::Sequence<rtl::OUString> aRet(3);
-+ aRet[0] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.FilePicker");
-+ aRet[1] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.SystemFilePicker");
-+ aRet[2] = rtl::OUString::createFromAscii("com.sun.star.ui.dialogs.TDEFilePicker");
-+ return aRet;
-+ }
-+}
-+
-+//////////////////////////////////////////////////////////////////////////
-+// UnxFilePicker
-+//////////////////////////////////////////////////////////////////////////
-+
-+UnxFilePicker::UnxFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr )
-+ : cppu::WeakComponentImplHelper8<
-+ XFilterManager,
-+ XFilterGroupManager,
-+ XFilePickerControlAccess,
-+ XFilePickerNotifier,
-+// TODO XFilePreview,
-+ lang::XInitialization,
-+ util::XCancellable,
-+ lang::XEventListener,
-+ lang::XServiceInfo>( m_rbHelperMtx ),
-+ m_xServiceMgr( xServiceMgr ),
-+ m_nFilePickerPid( -1 ),
-+ m_nFilePickerWrite( -1 ),
-+ m_nFilePickerRead( -1 ),
-+ m_pNotifyThread( NULL ),
-+ m_pCommandThread( NULL ),
-+ m_pResMgr( CREATEVERSIONRESMGR( fps_office ) )
-+{
-+}
-+
-+UnxFilePicker::~UnxFilePicker()
-+{
-+ if ( m_nFilePickerPid > 0 )
-+ {
-+ sendCommand( ::rtl::OUString::createFromAscii( "exit" ) );
-+ waitpid( m_nFilePickerPid, NULL, 0 );
-+ }
-+
-+ if ( m_pCommandThread )
-+ {
-+ m_pCommandThread->join();
-+
-+ delete m_pCommandThread, m_pCommandThread = NULL;
-+ }
-+
-+ if ( m_pNotifyThread )
-+ {
-+ m_pNotifyThread->exit();
-+
-+ m_pNotifyThread->join();
-+
-+ delete m_pNotifyThread, m_pNotifyThread = NULL;
-+ }
-+
-+ if ( m_nFilePickerWrite >= 0 )
-+ close( m_nFilePickerWrite );
-+
-+ if ( m_nFilePickerRead >= 0 )
-+ close( m_nFilePickerRead );
-+
-+ delete m_pResMgr, m_pResMgr = NULL;
-+}
-+
-+void SAL_CALL UnxFilePicker::addFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-+ throw( uno::RuntimeException )
-+{
-+ OSL_ASSERT( m_pNotifyThread );
-+ osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_pNotifyThread->addFilePickerListener( xListener );
-+}
-+
-+void SAL_CALL UnxFilePicker::removeFilePickerListener( const uno::Reference<XFilePickerListener>& xListener )
-+ throw( uno::RuntimeException )
-+{
-+ OSL_ASSERT( m_pNotifyThread );
-+ osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_pNotifyThread->removeFilePickerListener( xListener );
-+}
-+
-+void SAL_CALL UnxFilePicker::setTitle( const rtl::OUString &rTitle )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setTitle " );
-+ appendEscaped( aBuffer, rTitle );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+sal_Int16 SAL_CALL UnxFilePicker::execute()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+
-+ // this is _not_ an osl::Condition, see i#93366
-+ m_pCommandThread->execCondition().reset();
-+
-+ sendCommand( ::rtl::OUString::createFromAscii( "exec" ) );
-+
-+ m_pCommandThread->execCondition().wait();
-+
-+ return m_pCommandThread->result();
-+}
-+
-+void SAL_CALL UnxFilePicker::setMultiSelectionMode( sal_Bool bMode )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUString aString = bMode?
-+ ::rtl::OUString::createFromAscii( "setMultiSelection true" ):
-+ ::rtl::OUString::createFromAscii( "setMultiSelection false" );
-+
-+ sendCommand( aString );
-+}
-+
-+void SAL_CALL UnxFilePicker::setDefaultName( const ::rtl::OUString &rName )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setDefaultName " );
-+ appendEscaped( aBuffer, rName );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+void SAL_CALL UnxFilePicker::setDisplayDirectory( const rtl::OUString &rDirectory )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setDirectory " );
-+ appendEscaped( aBuffer, rDirectory );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+rtl::OUString SAL_CALL UnxFilePicker::getDisplayDirectory()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ sendCommand( ::rtl::OUString::createFromAscii( "getDirectory" ),
-+ m_pCommandThread->getDirectoryCondition() );
-+
-+ return m_pCommandThread->getDirectory();
-+}
-+
-+uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getFiles()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ sendCommand( ::rtl::OUString::createFromAscii( "getFiles" ),
-+ m_pCommandThread->getFilesCondition() );
-+
-+ return m_pCommandThread->getFiles();
-+}
-+
-+void SAL_CALL UnxFilePicker::appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter )
-+ throw( lang::IllegalArgumentException, uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "appendFilter " );
-+ appendEscaped( aBuffer, rTitle );
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, rFilter );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+void SAL_CALL UnxFilePicker::setCurrentFilter( const rtl::OUString &rTitle )
-+ throw( lang::IllegalArgumentException, uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setCurrentFilter " );
-+ appendEscaped( aBuffer, rTitle );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+rtl::OUString SAL_CALL UnxFilePicker::getCurrentFilter()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ sendCommand( ::rtl::OUString::createFromAscii( "getCurrentFilter" ),
-+ m_pCommandThread->getCurrentFilterCondition() );
-+
-+ return m_pCommandThread->getCurrentFilter();
-+}
-+
-+void SAL_CALL UnxFilePicker::appendFilterGroup( const rtl::OUString &rGroupTitle, const uno::Sequence<beans::StringPair> &rFilters )
-+ throw( lang::IllegalArgumentException, uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "appendFilterGroup " );
-+ appendEscaped( aBuffer, rGroupTitle );
-+
-+ for ( sal_Int32 i = 0; i < rFilters.getLength(); ++i )
-+ {
-+ beans::StringPair aPair = rFilters[i];
-+
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, aPair.First );
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, aPair.Second );
-+ }
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+void SAL_CALL UnxFilePicker::setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const uno::Any &rValue )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUString aType;
-+ ::rtl::OUString aAction;
-+ sal_Int32 nTitleId;
-+
-+ if ( controlIdInfo( nControlId, aType, nTitleId ) && controlActionInfo( nControlAction, aAction ) )
-+ {
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setValue " );
-+ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-+ aBuffer.appendAscii( " ", 1 );
-+ aBuffer.append( aAction );
-+
-+ if ( aType.equalsAscii( "checkbox" ) )
-+ {
-+ sal_Bool bControlValue;
-+ if ( ( rValue >>= bControlValue ) && bControlValue )
-+ aBuffer.appendAscii( " true" );
-+ else
-+ aBuffer.appendAscii( " false" );
-+ }
-+ else if ( aType.equalsAscii( "listbox" ) )
-+ {
-+ switch ( nControlAction )
-+ {
-+ case ControlActions::ADD_ITEM:
-+ case ControlActions::SET_HELP_URL:
-+ {
-+ ::rtl::OUString aString;
-+ if ( rValue >>= aString )
-+ {
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, aString );
-+ }
-+ }
-+ break;
-+
-+ case ControlActions::ADD_ITEMS:
-+ {
-+ uno::Sequence< ::rtl::OUString > aSequence;
-+ if ( rValue >>= aSequence )
-+ {
-+ for ( sal_Int32 nIdx = 0; nIdx < aSequence.getLength(); ++nIdx )
-+ {
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, aSequence[nIdx] );
-+ }
-+
-+ }
-+ }
-+ break;
-+
-+ case ControlActions::DELETE_ITEM:
-+ case ControlActions::SET_SELECT_ITEM:
-+ {
-+ sal_Int32 nInt;
-+ if ( rValue >>= nInt )
-+ {
-+ aBuffer.appendAscii( " ", 1 );
-+ aBuffer.append( nInt );
-+ }
-+ }
-+ break;
-+
-+ default:
-+ // nothing
-+ break;
-+ }
-+ }
-+ // TODO else if push button...
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+ }
-+}
-+
-+uno::Any SAL_CALL UnxFilePicker::getValue( sal_Int16 nControlId, sal_Int16 nControlAction )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUString aAction;
-+
-+ if ( controlActionInfo( nControlAction, aAction ) )
-+ {
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "getValue " );
-+ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-+ aBuffer.appendAscii( " ", 1 );
-+ aBuffer.append( aAction );
-+
-+ sendCommand( aBuffer.makeStringAndClear(),
-+ m_pCommandThread->getValueCondition() );
-+
-+ return m_pCommandThread->getValue();
-+ }
-+
-+ return uno::Any();
-+}
-+
-+void SAL_CALL UnxFilePicker::enableControl( sal_Int16 nControlId, sal_Bool bEnable )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "enableControl " );
-+ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-+ aBuffer.appendAscii( bEnable? " true": " false" );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+void SAL_CALL UnxFilePicker::setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "setLabel " );
-+ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, rLabel );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+}
-+
-+rtl::OUString SAL_CALL UnxFilePicker::getLabel(sal_Int16 /*nControlId*/)
-+ throw ( uno::RuntimeException )
-+{
-+ // FIXME getLabel() is not yet implemented
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ // TODO return m_pImpl->getLabel(nControlId);
-+ return ::rtl::OUString();
-+}
-+
-+/* TODO
-+uno::Sequence<sal_Int16> SAL_CALL UnxFilePicker::getSupportedImageFormats()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->getSupportedImageFormats();
-+}
-+
-+sal_Int32 SAL_CALL UnxFilePicker::getTargetColorDepth()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->getTargetColorDepth();
-+}
-+
-+sal_Int32 SAL_CALL UnxFilePicker::getAvailableWidth()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->getAvailableWidth();
-+}
-+
-+sal_Int32 SAL_CALL UnxFilePicker::getAvailableHeight()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->getAvailableHeight();
-+}
-+
-+void SAL_CALL UnxFilePicker::setImage( sal_Int16 aImageFormat, const uno::Any &rImage )
-+ throw( lang::IllegalArgumentException, uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_pImpl->setImage( aImageFormat, aImage );
-+}
-+
-+sal_Bool SAL_CALL UnxFilePicker::setShowState( sal_Bool bShowState )
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->setShowState( bShowState );
-+}
-+
-+sal_Bool SAL_CALL UnxFilePicker::getShowState()
-+ throw( uno::RuntimeException )
-+{
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ return m_pImpl->getShowState();
-+}
-+*/
-+
-+void SAL_CALL UnxFilePicker::initialize( const uno::Sequence<uno::Any> &rArguments )
-+ throw( uno::Exception, uno::RuntimeException )
-+{
-+ initFilePicker();
-+
-+ // parameter checking
-+ uno::Any aAny;
-+ if ( 0 == rArguments.getLength( ) )
-+ throw lang::IllegalArgumentException(
-+ rtl::OUString::createFromAscii( "no arguments" ),
-+ static_cast< XFilePicker* >( this ), 1 );
-+
-+ aAny = rArguments[0];
-+
-+ if ( ( aAny.getValueType() != ::getCppuType( (sal_Int16*)0 ) ) && ( aAny.getValueType() != ::getCppuType( (sal_Int8*)0 ) ) )
-+ throw lang::IllegalArgumentException(
-+ rtl::OUString::createFromAscii( "invalid argument type" ),
-+ static_cast< XFilePicker* >( this ), 1 );
-+
-+ sal_Int16 templateId = -1;
-+ aAny >>= templateId;
-+
-+ ::rtl::OUString aTypeOpen = ::rtl::OUString::createFromAscii( "setType \"open\"" );
-+ ::rtl::OUString aTypeSaveAs = ::rtl::OUString::createFromAscii( "setType \"save\"" );
-+
-+ switch ( templateId )
-+ {
-+ case FILEOPEN_SIMPLE:
-+ sendCommand( aTypeOpen );
-+ break;
-+
-+ case FILESAVE_SIMPLE:
-+ sendCommand( aTypeSaveAs );
-+ break;
-+
-+ case FILESAVE_AUTOEXTENSION_PASSWORD:
-+ sendCommand( aTypeSaveAs );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-+ break;
-+
-+ case FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS:
-+ sendCommand( aTypeSaveAs );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS );
-+ break;
-+
-+ case FILESAVE_AUTOEXTENSION_SELECTION:
-+ sendCommand( aTypeSaveAs );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_SELECTION );
-+ break;
-+
-+ case FILESAVE_AUTOEXTENSION_TEMPLATE:
-+ sendCommand( aTypeSaveAs );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_TEMPLATE );
-+ break;
-+
-+ case FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE:
-+ sendCommand( aTypeOpen );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE );
-+ break;
-+
-+ case FILEOPEN_PLAY:
-+ sendCommand( aTypeOpen );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::PUSHBUTTON_PLAY );
-+ break;
-+
-+ case FILEOPEN_READONLY_VERSION:
-+ sendCommand( aTypeOpen );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_READONLY );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::LISTBOX_VERSION );
-+ break;
-+
-+ case FILEOPEN_LINK_PREVIEW:
-+ sendCommand( aTypeOpen );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_LINK );
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_PREVIEW );
-+ break;
-+
-+ case FILESAVE_AUTOEXTENSION:
-+ sendCommand( aTypeSaveAs );
-+
-+ sendAppendControlCommand( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
-+ break;
-+
-+ default:
-+ throw lang::IllegalArgumentException(
-+ rtl::OUString::createFromAscii( "Unknown template" ),
-+ static_cast< XFilePicker* >( this ),
-+ 1 );
-+ }
-+}
-+
-+void SAL_CALL UnxFilePicker::cancel()
-+ throw ( uno::RuntimeException )
-+{
-+ // FIXME cancel() is not implemented
-+ checkFilePicker();
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ // TODO m_pImpl->cancel();
-+}
-+
-+void SAL_CALL UnxFilePicker::disposing( const lang::EventObject &rEvent )
-+ throw( uno::RuntimeException )
-+{
-+ uno::Reference<XFilePickerListener> xFilePickerListener( rEvent.Source, uno::UNO_QUERY );
-+
-+ if ( xFilePickerListener.is() )
-+ removeFilePickerListener( xFilePickerListener );
-+}
-+
-+rtl::OUString SAL_CALL UnxFilePicker::getImplementationName()
-+ throw( uno::RuntimeException )
-+{
-+ return rtl::OUString::createFromAscii( FILE_PICKER_IMPL_NAME );
-+}
-+
-+sal_Bool SAL_CALL UnxFilePicker::supportsService( const rtl::OUString& ServiceName )
-+ throw( uno::RuntimeException )
-+{
-+ uno::Sequence< ::rtl::OUString > SupportedServicesNames = FilePicker_getSupportedServiceNames();
-+
-+ for ( sal_Int32 n = SupportedServicesNames.getLength(); n--; )
-+ {
-+ if ( SupportedServicesNames[n].compareTo( ServiceName ) == 0 )
-+ return sal_True;
-+ }
-+
-+ return sal_False;
-+}
-+
-+uno::Sequence< ::rtl::OUString > SAL_CALL UnxFilePicker::getSupportedServiceNames()
-+ throw( uno::RuntimeException )
-+{
-+ return FilePicker_getSupportedServiceNames();
-+}
-+
-+void UnxFilePicker::initFilePicker()
-+{
-+ int aFiledesStdin[2], aFiledesStdout[2];
-+ if ( pipe( aFiledesStdin ) < 0 || pipe( aFiledesStdout ) < 0 )
-+ return;
-+
-+ m_nFilePickerPid = fork();
-+ if ( m_nFilePickerPid < 0 )
-+ return;
-+
-+ if ( m_nFilePickerPid == 0 )
-+ {
-+ // Child...
-+ close( aFiledesStdin[1] ); // write end of the pipe
-+ dup2( aFiledesStdin[0], 0 );
-+ close( aFiledesStdin[0] );
-+
-+ close( aFiledesStdout[0] ); // read end of the pipe
-+ dup2( aFiledesStdout[1], 1 );
-+ close( aFiledesStdout[1] );
-+
-+#if OSL_DEBUG_LEVEL == 0
-+ int nRedirect = open( "/dev/null", O_WRONLY );
-+ if( nRedirect != -1 )
-+ {
-+ dup2( nRedirect, 2 );
-+ }
-+#endif
-+
-+ // The executable name
-+ char pFname[1024]; snprintf(pFname, sizeof pFname, "%s/%s", getenv("OLDPWD"), "tdefilepicker");
-+
-+ // ID of the main window
-+ const int nIdLen = 20;
-+ char pWinId[nIdLen] = "0";
-+
-+ // TODO pass here the real parent (not possible for system dialogs
-+ // yet), and default to GetDefDialogParent() only when the real parent
-+ // is NULL
-+ Window *pParentWin = Application::GetDefDialogParent();
-+ if ( pParentWin )
-+ {
-+ const SystemEnvData* pSysData = ((SystemWindow *)pParentWin)->GetSystemData();
-+ if ( pSysData )
-+ {
-+ snprintf( pWinId, nIdLen, "%ld", pSysData->aWindow ); // unx only
-+ pWinId[nIdLen-1] = 0;
-+ }
-+ }
-+
-+ // Execute the fpicker implementation
-+ execlp( pFname, pFname, "--winid", pWinId, NULL );
-+
-+ // Error, finish the child
-+ exit( -1 );
-+ }
-+
-+ // Parent continues
-+ close( aFiledesStdin[0] );
-+ m_nFilePickerWrite = aFiledesStdin[1];
-+
-+ close( aFiledesStdout[1] );
-+ m_nFilePickerRead = aFiledesStdout[0];
-+
-+ // Create the notify thread
-+ if ( !m_pNotifyThread )
-+ m_pNotifyThread = new UnxFilePickerNotifyThread( this );
-+
-+ // Create the command thread
-+ if ( !m_pCommandThread )
-+ m_pCommandThread = new UnxFilePickerCommandThread( m_pNotifyThread, m_nFilePickerRead );
-+
-+ // Start the threads
-+ m_pNotifyThread->create();
-+ m_pCommandThread->create();
-+
-+ return;
-+}
-+
-+void UnxFilePicker::checkFilePicker() throw( ::com::sun::star::uno::RuntimeException )
-+{
-+ if ( m_nFilePickerPid > 0 )
-+ {
-+ // TODO check if external file picker is runnning
-+ }
-+ else
-+ {
-+ throw uno::RuntimeException(
-+ ::rtl::OUString::createFromAscii( "the external file picker does not run" ),
-+ *this );
-+ }
-+}
-+
-+void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand )
-+{
-+ if ( m_nFilePickerWrite < 0 )
-+ return;
-+
-+ ::rtl::OString aUtfString = OUStringToOString( rCommand + ::rtl::OUString::createFromAscii( "\n" ), RTL_TEXTENCODING_UTF8 );
-+
-+#if OSL_DEBUG_LEVEL > 0
-+ ::std::cerr << "UnxFilePicker sent: \"" << aUtfString.getStr() << "\"" << ::std::endl;
-+#endif
-+
-+ write( m_nFilePickerWrite, aUtfString.getStr(), aUtfString.getLength() );
-+}
-+
-+void UnxFilePicker::sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition )
-+{
-+ rCondition.reset();
-+
-+ sendCommand( rCommand );
-+
-+ rCondition.wait();
-+}
-+
-+void UnxFilePicker::appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString )
-+{
-+ const sal_Unicode *pUnicode = rString.getStr();
-+ const sal_Unicode *pEnd = pUnicode + rString.getLength();
-+
-+ rBuffer.appendAscii( "\"" , 1 );
-+
-+ for ( ; pUnicode != pEnd; ++pUnicode )
-+ {
-+ if ( *pUnicode == '\\' )
-+ rBuffer.appendAscii( "\\\\", 2 );
-+ else if ( *pUnicode == '"' )
-+ rBuffer.appendAscii( "\\\"", 2 );
-+ else if ( *pUnicode == '\n' )
-+ rBuffer.appendAscii( "\\n", 2 );
-+ else
-+ rBuffer.append( *pUnicode );
-+ }
-+
-+ rBuffer.appendAscii( "\"", 1 );
-+}
-+
-+sal_Bool UnxFilePicker::controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId )
-+{
-+ typedef struct {
-+ sal_Int16 nId;
-+ const ::rtl::OUString *pType;
-+ sal_Int32 nTitle;
-+ } ElementToName;
-+
-+ const ::rtl::OUString aCheckBox( RTL_CONSTASCII_USTRINGPARAM( "checkbox" ) );
-+ const ::rtl::OUString aControl( RTL_CONSTASCII_USTRINGPARAM( "control" ) );
-+ const ::rtl::OUString aEdit( RTL_CONSTASCII_USTRINGPARAM( "edit" ) );
-+ const ::rtl::OUString aLabel( RTL_CONSTASCII_USTRINGPARAM( "label" ) );
-+ const ::rtl::OUString aListBox( RTL_CONSTASCII_USTRINGPARAM( "listbox" ) );
-+ const ::rtl::OUString aPushButton( RTL_CONSTASCII_USTRINGPARAM( "pushbutton" ) );
-+
-+ const ElementToName *pPtr;
-+ const ElementToName pArray[] =
-+ {
-+ { CommonFilePickerElementIds::PUSHBUTTON_OK, &aPushButton, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::PUSHBUTTON_CANCEL, &aPushButton, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::LISTBOX_FILTER, &aListBox, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::CONTROL_FILEVIEW, &aControl, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::EDIT_FILEURL, &aEdit, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::LISTBOX_FILTER_LABEL, &aLabel, 0/*FIXME?*/ },
-+ { CommonFilePickerElementIds::EDIT_FILEURL_LABEL, &aLabel, 0/*FIXME?*/ },
-+
-+ { ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &aCheckBox, STR_SVT_FILEPICKER_AUTO_EXTENSION },
-+ { ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, &aCheckBox, STR_SVT_FILEPICKER_PASSWORD },
-+ { ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS, &aCheckBox, STR_SVT_FILEPICKER_FILTER_OPTIONS },
-+ { ExtendedFilePickerElementIds::CHECKBOX_READONLY, &aCheckBox, STR_SVT_FILEPICKER_READONLY },
-+ { ExtendedFilePickerElementIds::CHECKBOX_LINK, &aCheckBox, STR_SVT_FILEPICKER_INSERT_AS_LINK },
-+ { ExtendedFilePickerElementIds::CHECKBOX_PREVIEW, &aCheckBox, STR_SVT_FILEPICKER_SHOW_PREVIEW },
-+ { ExtendedFilePickerElementIds::PUSHBUTTON_PLAY, &aPushButton, STR_SVT_FILEPICKER_PLAY },
-+ { ExtendedFilePickerElementIds::LISTBOX_VERSION, &aListBox, STR_SVT_FILEPICKER_VERSION },
-+ { ExtendedFilePickerElementIds::LISTBOX_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_TEMPLATES },
-+ { ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE, &aListBox, STR_SVT_FILEPICKER_IMAGE_TEMPLATE },
-+ { ExtendedFilePickerElementIds::CHECKBOX_SELECTION, &aCheckBox, STR_SVT_FILEPICKER_SELECTION },
-+ { 0, 0, 0 }
-+ };
-+
-+ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlId ); ++pPtr )
-+ ;
-+
-+ if ( pPtr->nId == nControlId )
-+ {
-+ rType = *(pPtr->pType);
-+ rTitleId = pPtr->nTitle;
-+
-+ return sal_True;
-+ }
-+
-+ return sal_False;
-+}
-+
-+sal_Bool UnxFilePicker::controlActionInfo( sal_Int16 nControlAction, ::rtl::OUString &rType )
-+{
-+ typedef struct {
-+ sal_Int16 nId;
-+ const ::rtl::OUString pType;
-+ } ElementToName;
-+
-+ const ElementToName *pPtr;
-+ const ElementToName pArray[] =
-+ {
-+ { ControlActions::ADD_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItem" ) ) },
-+ { ControlActions::ADD_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "addItems" ) ) },
-+ { ControlActions::DELETE_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItem" ) ) },
-+ { ControlActions::DELETE_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "deleteItems" ) ) },
-+ { ControlActions::SET_SELECT_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setSelectedItem" ) ) },
-+ { ControlActions::GET_ITEMS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getItems" ) ) },
-+ { ControlActions::GET_SELECTED_ITEM, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItem" ) ) },
-+ { ControlActions::GET_SELECTED_ITEM_INDEX, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getSelectedItemIndex" ) ) },
-+ { ControlActions::SET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setHelpURL" ) ) },
-+ { ControlActions::GET_HELP_URL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getHelpURL" ) ) },
-+ { 0, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "noAction" ) ) }
-+ };
-+
-+ for ( pPtr = pArray; pPtr->nId && ( pPtr->nId != nControlAction ); ++pPtr )
-+ ;
-+
-+ rType = pPtr->pType;
-+
-+ return sal_True;
-+}
-+
-+void UnxFilePicker::sendAppendControlCommand( sal_Int16 nControlId )
-+{
-+ ::rtl::OUString aType;
-+ sal_Int32 nTitleId;
-+
-+ if ( controlIdInfo( nControlId, aType, nTitleId ) )
-+ {
-+ ::rtl::OUStringBuffer aBuffer( 1024 );
-+
-+ aBuffer.appendAscii( "appendControl " );
-+ aBuffer.append( static_cast< sal_Int32 >( nControlId ) );
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, aType );
-+ aBuffer.appendAscii( " ", 1 );
-+ appendEscaped( aBuffer, m_pResMgr? String( ResId( nTitleId, *m_pResMgr ) ): String() );
-+
-+ sendCommand( aBuffer.makeStringAndClear() );
-+ }
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxFilePicker.hxx b/fpicker/source/unx/tde_unx/UnxFilePicker.hxx
-new file mode 100644
-index 0000000..4e0b526
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxFilePicker.hxx
-@@ -0,0 +1,178 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _UNXFILEPICKER_HXX_
-+#define _UNXFILEPICKER_HXX_
-+
-+#include <cppuhelper/compbase8.hxx>
-+#include <osl/conditn.hxx>
-+#include <osl/mutex.hxx>
-+#include <rtl/ustrbuf.hxx>
-+
-+#include <com/sun/star/lang/XInitialization.hpp>
-+#include <com/sun/star/lang/XServiceInfo.hpp>
-+#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
-+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
-+#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
-+#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
-+#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
-+#include <com/sun/star/util/XCancellable.hpp>
-+
-+#include <list>
-+
-+class UnxFilePickerCommandThread;
-+class UnxFilePickerNotifyThread;
-+class ResMgr;
-+
-+class UnxFilePickerDummy
-+{
-+protected:
-+ osl::Mutex m_aMutex;
-+ osl::Mutex m_rbHelperMtx;
-+};
-+
-+class UnxFilePicker :
-+ public UnxFilePickerDummy,
-+ public cppu::WeakComponentImplHelper8<
-+ ::com::sun::star::ui::dialogs::XFilterManager,
-+ ::com::sun::star::ui::dialogs::XFilterGroupManager,
-+ ::com::sun::star::ui::dialogs::XFilePickerControlAccess,
-+ ::com::sun::star::ui::dialogs::XFilePickerNotifier,
-+// TODO ::com::sun::star::ui::dialogs::XFilePreview,
-+ ::com::sun::star::lang::XInitialization,
-+ ::com::sun::star::util::XCancellable,
-+ ::com::sun::star::lang::XEventListener,
-+ ::com::sun::star::lang::XServiceInfo >
-+{
-+protected:
-+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr; // to instanciate own services
-+
-+ pid_t m_nFilePickerPid;
-+ int m_nFilePickerWrite; // (tde|...)filepicker gets it as stdin
-+ int m_nFilePickerRead; // (tde|...)filepicker gets it as stdout
-+
-+ UnxFilePickerNotifyThread *m_pNotifyThread;
-+ UnxFilePickerCommandThread *m_pCommandThread;
-+
-+ ResMgr *m_pResMgr;
-+
-+public:
-+ UnxFilePicker( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceMgr );
-+ virtual ~UnxFilePicker();
-+
-+ // XFilePickerNotifier
-+
-+ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XExecutableDialog functions
-+
-+ virtual void SAL_CALL setTitle( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual sal_Int16 SAL_CALL execute() throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XFilePicker functions
-+
-+ virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL setDefaultName( const ::rtl::OUString &rName ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString &rDirectory ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual ::rtl::OUString SAL_CALL getDisplayDirectory() throw( ::com::sun::star::uno::RuntimeException );
-+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles() throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XFilterManager functions
-+
-+ virtual void SAL_CALL appendFilter( const ::rtl::OUString &rTitle, const ::rtl::OUString &rFilter ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString &rTitle ) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-+ virtual ::rtl::OUString SAL_CALL getCurrentFilter() throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XFilterGroupManager functions
-+
-+ virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString &rGroupTitle, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair > &rFilters ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-+
-+ // XFilePickerControlAccess functions
-+
-+ virtual void SAL_CALL setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const ::com::sun::star::uno::Any &rValue ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 nControlId, sal_Int16 nControlAction ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL enableControl( sal_Int16 nControlId, sal_Bool bEnable ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL setLabel( sal_Int16 nControlId, const ::rtl::OUString &rLabel ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId ) throw (::com::sun::star::uno::RuntimeException);
-+
-+ /* TODO XFilePreview
-+
-+ virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getTargetColorDepth( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getAvailableWidth( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual sal_Int32 SAL_CALL getAvailableHeight( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const ::com::sun::star::uno::Any &rImage ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual sal_Bool SAL_CALL getShowState( ) throw (::com::sun::star::uno::RuntimeException);
-+ */
-+
-+ // XInitialization
-+
-+ virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > &rArguments ) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException );
-+
-+ // XCancellable
-+
-+ virtual void SAL_CALL cancel( ) throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XEventListener
-+
-+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject &rEvent ) throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // XServiceInfo
-+
-+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
-+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString &rServiceName ) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException );
-+
-+private:
-+ // prevent copy and assignment
-+ UnxFilePicker( const UnxFilePicker& );
-+ UnxFilePicker& operator=( const UnxFilePicker& );
-+
-+protected:
-+ void initFilePicker();
-+ void checkFilePicker() throw( ::com::sun::star::uno::RuntimeException );
-+
-+ // Async sendCommand
-+ void sendCommand( const ::rtl::OUString &rCommand );
-+ // Synchronized sendCommand
-+ void sendCommand( const ::rtl::OUString &rCommand, ::osl::Condition &rCondition );
-+ void appendEscaped( ::rtl::OUStringBuffer &rBuffer, const ::rtl::OUString &rString );
-+
-+private:
-+ sal_Bool controlIdInfo( sal_Int16 nControlId, ::rtl::OUString &rType, sal_Int32 &rTitleId );
-+ sal_Bool controlActionInfo( sal_Int16 nControlId, ::rtl::OUString &rType );
-+ void sendAppendControlCommand( sal_Int16 nControlId );
-+};
-+
-+#endif // _UNXFILEPICKER_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxNotifyThread.cxx b/fpicker/source/unx/tde_unx/UnxNotifyThread.cxx
-new file mode 100644
-index 0000000..3bc96b1
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxNotifyThread.cxx
-@@ -0,0 +1,116 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include <UnxNotifyThread.hxx>
-+#include <UnxFilePicker.hxx>
-+
-+using namespace ::com::sun::star;
-+
-+//////////////////////////////////////////////////////////////////////////
-+// UnxFilePickerNotifyThread
-+//////////////////////////////////////////////////////////////////////////
-+
-+UnxFilePickerNotifyThread::UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker )
-+ : m_pUnxFilePicker( pUnxFilePicker ),
-+ m_bExit( sal_False ),
-+ m_eNotifyType( Nothing ),
-+ m_nControlId( 0 )
-+{
-+}
-+
-+void SAL_CALL UnxFilePickerNotifyThread::addFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-+ throw( uno::RuntimeException )
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_xListener = xListener;
-+}
-+
-+void SAL_CALL UnxFilePickerNotifyThread::removeFilePickerListener( const uno::Reference< ui::dialogs::XFilePickerListener >& xListener )
-+ throw( uno::RuntimeException )
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_xListener.clear();
-+}
-+
-+void SAL_CALL UnxFilePickerNotifyThread::exit()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_bExit = sal_True;
-+
-+ m_aExitCondition.reset();
-+ m_aNotifyCondition.set();
-+
-+ m_aExitCondition.wait();
-+}
-+
-+void SAL_CALL UnxFilePickerNotifyThread::fileSelectionChanged()
-+{
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ m_eNotifyType = FileSelectionChanged;
-+ m_nControlId = 0;
-+
-+ m_aNotifyCondition.set();
-+}
-+
-+void SAL_CALL UnxFilePickerNotifyThread::run()
-+{
-+ do {
-+ m_aNotifyCondition.reset();
-+ m_aNotifyCondition.wait();
-+
-+ if ( m_xListener.is() && m_pUnxFilePicker )
-+ {
-+ ::osl::MutexGuard aGuard( m_aMutex );
-+
-+ ui::dialogs::FilePickerEvent aEvent( *m_pUnxFilePicker, m_nControlId );
-+
-+ switch ( m_eNotifyType )
-+ {
-+ case FileSelectionChanged:
-+ m_xListener->fileSelectionChanged( aEvent );
-+ break;
-+
-+ // TODO More to come...
-+
-+ default:
-+ // nothing
-+ break;
-+ }
-+ }
-+ } while ( !m_bExit );
-+
-+ m_aExitCondition.set();
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/UnxNotifyThread.hxx b/fpicker/source/unx/tde_unx/UnxNotifyThread.hxx
-new file mode 100644
-index 0000000..9f5d1a5
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/UnxNotifyThread.hxx
-@@ -0,0 +1,90 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2010 Novell, Inc.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _UNXNOTIFYTHREAD_HXX_
-+#define _UNXNOTIFYTHREAD_HXX_
-+
-+#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp>
-+#include <com/sun/star/uno/Reference.hxx>
-+
-+#include <osl/conditn.hxx>
-+#include <osl/mutex.hxx>
-+#include <osl/thread.hxx>
-+
-+class UnxFilePicker;
-+
-+class UnxFilePickerNotifyThread : public ::osl::Thread
-+{
-+protected:
-+ enum NotifyType
-+ {
-+ Nothing = 0,
-+ FileSelectionChanged
-+ // TODO More to come...
-+ };
-+
-+ UnxFilePicker *m_pUnxFilePicker;
-+
-+ ::osl::Mutex m_aMutex;
-+
-+ ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener > m_xListener;
-+
-+ sal_Bool m_bExit;
-+ ::osl::Condition m_aExitCondition;
-+
-+ NotifyType m_eNotifyType;
-+ ::osl::Condition m_aNotifyCondition;
-+ sal_Int16 m_nControlId;
-+
-+public:
-+ UnxFilePickerNotifyThread( UnxFilePicker *pUnxFilePicker );
-+
-+ virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-+ throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener )
-+ throw( ::com::sun::star::uno::RuntimeException );
-+
-+ void SAL_CALL exit();
-+
-+ void SAL_CALL fileSelectionChanged();
-+ /* TODO
-+ void SAL_CALL directoryChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-+ rtl::OUString SAL_CALL helpRequested( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ) const;
-+ void SAL_CALL controlStateChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
-+ void SAL_CALL dialogSizeChanged( );
-+ */
-+
-+protected:
-+ virtual void SAL_CALL run();
-+};
-+
-+#endif // _UNXNOTIFYTHREAD_HXX_
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/fpicker/source/unx/tde_unx/fps_tde.component b/fpicker/source/unx/tde_unx/fps_tde.component
-new file mode 100644
-index 0000000..e7a201d
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/fps_tde.component
-@@ -0,0 +1,35 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!--**********************************************************************
-+*
-+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+*
-+* Copyright 2000, 2010 Oracle and/or its affiliates.
-+* Copyright 2011 Timothy Pearson
-+*
-+* OpenOffice.org - a multi-platform office productivity suite
-+*
-+* This file is part of OpenOffice.org.
-+*
-+* OpenOffice.org is free software: you can redistribute it and/or modify
-+* it under the terms of the GNU Lesser General Public License version 3
-+* only, as published by the Free Software Foundation.
-+*
-+* OpenOffice.org 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 version 3 for more details
-+* (a copy is included in the LICENSE file that accompanied this code).
-+*
-+* You should have received a copy of the GNU Lesser General Public License
-+* version 3 along with OpenOffice.org. If not, see
-+* <http://www.openoffice.org/license.html>
-+* for a copy of the LGPLv3 License.
-+*
-+**********************************************************************-->
-+
-+<component loader="com.sun.star.loader.SharedLibrary"
-+ xmlns="http://openoffice.org/2010/uno-components">
-+ <implementation name="com.sun.star.ui.dialogs.UnxFilePicker">
-+ <service name="com.sun.star.ui.dialogs.TDEFilePicker"/>
-+ </implementation>
-+</component>
-diff --git a/fpicker/source/unx/tde_unx/fps_tde.xml b/fpicker/source/unx/tde_unx/fps_tde.xml
-new file mode 100644
-index 0000000..fc1ed68
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/fps_tde.xml
-@@ -0,0 +1,51 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
-+ <module-name>fps_tde</module-name>
-+ <component-description>
-+ <author> Jan Holesovsky </author>
-+ <name> com.sun.star.comp.ui.dialogs.FilePicker </name>
-+ <description>
-+ The TDE implementation of the FilePicker service.
-+ </description>
-+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
-+ <language> c++ </language>
-+ <status value="beta"/>
-+ <supported-service> com.sun.star.ui.dialogs.FilePicker </supported-service>
-+ <service-dependency>...</service-dependency>
-+ <type> com.sun.star.ui.dialogs.XExecutableDialog </type>
-+ <type> com.sun.star.ui.dialogs.XFilePicker </type>
-+ <type> com.sun.star.ui.dialogs.XFilterManager </type>
-+ <type> com.sun.star.ui.dialogs.XFilterGroupManager </type>
-+ <type> com.sun.star.ui.dialogs.XFilePickerListener </type>
-+ <type> com.sun.star.ui.dialogs.ExecutableDialogException </type>
-+ <type> com.sun.star.ui.dialogs.XFilePickerNotifier </type>
-+ <type> com.sun.star.ui.dialogs.XFilePickerControlAccess </type>
-+ <type> com.sun.star.ui.dialogs.XFilePreview </type>
-+ <type> com.sun.star.ui.dialogs.ExtendedFilePickerElementIds </type>
-+ <type> com.sun.star.ui.dialogs.ExecutableDialogResults </type>
-+ <type> com.sun.star.ui.dialogs.FilePickerEvent </type>
-+ <type> com.sun.star.ui.dialogs.CommonFilePickerElementIds </type>
-+ <type> com.sun.star.ui.dialogs.ListboxControlActions </type>
-+ <type> com.sun.star.ui.dialogs.TemplateDescription </type>
-+ <type> com.sun.star.ui.dialogs.FilePreviewImageFormats </type>
-+ <type> com.sun.star.util.XCancellable </type>
-+ <type> com.sun.star.lang.XComponent </type>
-+ <type> com.sun.star.lang.XMultiServiceFactory </type>
-+ <type> com.sun.star.lang.XSingleServiceFactory </type>
-+ <type> com.sun.star.lang.XServiceInfo </type>
-+ <type> com.sun.star.lang.XTypeProvider </type>
-+ <type> com.sun.star.lang.IllegalArgumentException </type>
-+ <type> com.sun.star.uno.TypeClass </type>
-+ <type> com.sun.star.uno.XWeak </type>
-+ <type> com.sun.star.uno.XAggregation </type>
-+ <type> com.sun.star.registry.XRegistryKey </type>
-+ <type> com.sun.star.container.XSet </type>
-+ </component-description>
-+ <project-build-dependency> cppuhelper </project-build-dependency>
-+ <project-build-dependency> cppu </project-build-dependency>
-+ <project-build-dependency> sal </project-build-dependency>
-+ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
-+ <runtime-module-dependency> cppu2 </runtime-module-dependency>
-+ <runtime-module-dependency> sal2 </runtime-module-dependency>
-+</module-description>
-diff --git a/fpicker/source/unx/tde_unx/makefile.mk b/fpicker/source/unx/tde_unx/makefile.mk
-new file mode 100644
-index 0000000..196c948
---- /dev/null
-+++ b/fpicker/source/unx/tde_unx/makefile.mk
-@@ -0,0 +1,86 @@
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2000, 2010 Oracle and/or its affiliates.
-+# Copyright 2010 Novell, Inc.
-+# Copyright 2011 Timothy Pearson
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+
-+PRJ=..$/..$/..
-+
-+PRJNAME=fpicker
-+TARGET=fps_tde.uno
-+LIBTARGET=NO
-+ENABLE_EXCEPTIONS=TRUE
-+
-+# --- Settings -----------------------------------------------------
-+
-+.INCLUDE : settings.mk
-+DLLPRE=
-+
-+# ------------------------------------------------------------------
-+
-+# Currently just TDE is supported...
-+.IF "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-+
-+dummy:
-+ @echo "Nothing to build. GUIBASE == $(GUIBASE), ENABLE_TDE is not set"
-+
-+.ELSE # we build for TDE
-+
-+# --- Files --------------------------------------------------------
-+
-+SLOFILES =\
-+ $(SLO)$/UnxCommandThread.obj \
-+ $(SLO)$/UnxFilePicker.obj \
-+ $(SLO)$/UnxNotifyThread.obj \
-+ $(SLO)$/UnxFPentry.obj
-+
-+SHL1NOCHECK=TRUE
-+SHL1TARGET=fps_tde.uno
-+SHL1STDLIBS=$(CPPULIB)\
-+ $(CPPUHELPERLIB)\
-+ $(SALLIB)\
-+ $(VCLLIB)\
-+ $(TOOLSLIB)
-+
-+SHL1OBJS=$(SLOFILES)
-+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-+
-+DEF1NAME=$(SHL1TARGET)
-+DEF1VERSIONMAP=$(SOLARENV)/src/component.map
-+
-+.ENDIF # "$(GUIBASE)" != "unx" || "$(ENABLE_TDE)" != "TRUE"
-+
-+# --- Targets ------------------------------------------------------
-+
-+.INCLUDE : target.mk
-+
-+ALLTAR : $(MISC)/fps_tde.component
-+
-+$(MISC)/fps_tde.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
-+ fps_tde.component
-+ $(XSLTPROC) --nonet --stringparam uri \
-+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
-+ $(SOLARENV)/bin/createcomponent.xslt fps_tde.component
-diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
-index b983928..a47e9c6 100644
---- a/postprocess/packcomponents/makefile.mk
-+++ b/postprocess/packcomponents/makefile.mk
-@@ -235,6 +235,10 @@ my_components += kab1
- my_components += kdebe1
- .END
-
-+.IF "$(ENABLE_TDE)" != ""
-+my_components += tdebe1
-+.END
-+
- .IF "$(ENABLE_KDE4)" != ""
- my_components += kde4be1
- .END
-@@ -354,6 +358,10 @@ my_components += fps_gnome
- my_components += fps_kde4
- .END
-
-+.IF "$(ENABLE_TDE)" != ""
-+my_components += fps_tde
-+.END
-+
- .IF "$(OS)" != "WNT"
- my_components += cmdmail
- .END
-diff --git a/postprocess/packregistry/makefile.mk b/postprocess/packregistry/makefile.mk
-index d82c9ef..a3a6de4 100644
---- a/postprocess/packregistry/makefile.mk
-+++ b/postprocess/packregistry/makefile.mk
-@@ -328,6 +328,9 @@ MY_FILES_main += \
- .IF "$(ENABLE_KAB)" == "TRUE"
- MY_FILES_main += $(MY_MOD)/DataAccess/kab.xcu
- .END
-+.IF "$(ENABLE_TDEAB)" == "TRUE"
-+MY_FILES_main += $(MY_MOD)/DataAccess/tdeab.xcu
-+.END
- .IF "$(SYSTEM_MOZILLA)" != "YES" && "$(WITH_MOZILLA)" != "NO" && \
- "$(OS)" != "MACOSX"
- .IF "$(OS)" == "WNT"
-diff --git a/scp2/prj/build.lst b/scp2/prj/build.lst
-index f225c3e..41be4f3 100644
---- a/scp2/prj/build.lst
-+++ b/scp2/prj/build.lst
-@@ -14,6 +14,7 @@ cp scp2\source\graphicfilter nmake - all cp_graphicfilter cp_langm
- cp scp2\source\impress nmake - all cp_impress cp_langmacros cp_langtemplates NULL
- cp scp2\source\javafilter nmake - all cp_javafilter cp_langmacros cp_langtemplates NULL
- cp scp2\source\kde nmake - all cp_kde cp_langmacros cp_langtemplates NULL
-+cp scp2\source\tde nmake - all cp_tde cp_langmacros cp_langtemplates NULL
- cp scp2\source\layout nmake - all cp_layout cp_langmacros NULL
- cp scp2\source\math nmake - all cp_math cp_langmacros cp_langtemplates NULL
- cp scp2\source\ooo nmake - all cp_ooo cp_langmacros cp_langtemplates NULL
-@@ -27,4 +28,4 @@ cp scp2\source\xsltfilter nmake - all cp_xsltfilter cp_langmacr
- cp scp2\source\winexplorerext nmake - all cp_winexplorerext cp_langmacros cp_langtemplates NULL
- cp scp2\source\onlineupdate nmake - all cp_update cp_langmacros cp_langtemplates NULL
- cp scp2\source\accessories nmake - all cp_accessories cp_langmacros NULL
--cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-+cp scp2\util nmake - all cp_util cp_activex cp_binfilter cp_calc cp_canvas cp_crashrep cp_draw cp_extensions cp_gnome cp_graphicfilter cp_impress cp_javafilter cp_kde cp_tde cp_layout cp_math cp_ooo cp_python cp_quickstart cp_testtool cp_writer cp_base cp_xsltfilter cp_winexplorerext cp_sdkoo cp_update cp_accessories NULL
-diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
-index d83d6cf..fe378e1 100644
---- a/scp2/source/ooo/file_library_ooo.scp
-+++ b/scp2/source/ooo/file_library_ooo.scp
-@@ -425,6 +425,24 @@ End
-
- #endif
-
-+#ifdef ENABLE_TDEAB
-+File gid_File_Lib_Tdeab_1
-+ TXT_FILE_BODY;
-+ Styles = (PACKED,UNO_COMPONENT);
-+ RegistryID = gid_Starregistry_Services_Rdb;
-+ Dir = SCP2_OOO_BIN_DIR;
-+ Name = STRING(CONCAT2(libtdeab1,UNXSUFFIX));
-+End
-+
-+File gid_File_Lib_Tdeab_Drv_1
-+ TXT_FILE_BODY;
-+ Styles = (PACKED);
-+ Dir = SCP2_OOO_BIN_DIR;
-+ Name = STRING(CONCAT2(libtdeabdrv1,UNXSUFFIX));
-+End
-+
-+#endif
-+
- #ifdef MACOSX
- File gid_File_Lib_Macab_1
- TXT_FILE_BODY;
-@@ -525,6 +543,23 @@ File gid_File_Bin_KdeFilePicker
- End
- #endif
- #endif
-+#ifdef ENABLE_TDE
-+#ifndef MACOSX
-+File gid_File_Lib_Fps_Tde
-+ TXT_FILE_BODY;
-+ Styles = (PACKED);
-+ Dir = SCP2_OOO_BIN_DIR;
-+ Name = SPECIAL_COMPONENT_LIB_NAME(fps_tde.uno);
-+End
-+File gid_File_Bin_TdeFilePicker
-+ BIN_FILE_BODY;
-+ Styles = (PACKED);
-+ Dir = gid_Brand_Dir_Program;
-+ Name = "tdefilepicker";
-+End
-+#endif
-+#endif
-+
- #endif
-
- #ifdef QUARTZ
-@@ -992,6 +1027,17 @@ File gid_File_Lib_Vclplug_Kde4
- End
- #endif
- #endif
-+#ifdef ENABLE_TDE
-+#ifndef MACOSX
-+File gid_File_Lib_Vclplug_Tde
-+ Name = LIBNAME(vclplug_tde);
-+ TXT_FILE_BODY;
-+ Styles = (PACKED);
-+ Dir = SCP2_OOO_BIN_DIR;
-+End
-+#endif
-+#endif
-+
- #endif
-
- #if defined(QUARTZ)
-diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
-index 34ed8a9..5291d0d 100644
---- a/scp2/source/ooo/file_ooo.scp
-+++ b/scp2/source/ooo/file_ooo.scp
-@@ -169,6 +169,13 @@ File gid_File_Bin_Kde_Open_Url
- Styles = (PACKED);
- End
-
-+File gid_File_Bin_Tde_Open_Url
-+ BIN_FILE_BODY;
-+ Dir = gid_Brand_Dir_Program;
-+ Name = "tde-open-url";
-+ Styles = (PACKED);
-+End
-+
- File gid_File_Bin_Cde_Open_Url
- BIN_FILE_BODY;
- Dir = gid_Brand_Dir_Program;
-diff --git a/scp2/source/ooo/makefile.mk b/scp2/source/ooo/makefile.mk
-index ce2ab52..0b8d12b 100644
---- a/scp2/source/ooo/makefile.mk
-+++ b/scp2/source/ooo/makefile.mk
-@@ -84,6 +84,14 @@ SCPDEFS+=-DENABLE_KDE4
- SCPDEFS+=-DENABLE_KAB
- .ENDIF
-
-+.IF "$(ENABLE_TDE)" != ""
-+SCPDEFS+=-DENABLE_TDE
-+.ENDIF
-+
-+.IF "$(ENABLE_TDEAB)" != ""
-+SCPDEFS+=-DENABLE_TDEAB
-+.ENDIF
-+
- .IF "$(ENABLE_EVOAB2)" != ""
- SCPDEFS+=-DENABLE_EVOAB2
- .ENDIF
-diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
-index 20d9b16..fce92ce 100644
---- a/scp2/source/ooo/module_hidden_ooo.scp
-+++ b/scp2/source/ooo/module_hidden_ooo.scp
-@@ -84,6 +84,7 @@ Module gid_Module_Root_Files_2
- Styles = (HIDDEN_ROOT);
- Files = (gid_File_Bin_Cde_Open_Url,
- gid_File_Bin_Kde_Open_Url,
-+ gid_File_Bin_Tde_Open_Url,
- gid_File_Bin_Open_Url,
- gid_File_Bin_Pagein,
- gid_File_Bin_Pluginapp,
-@@ -277,6 +278,7 @@ Module gid_Module_Root_Files_4
- gid_File_Lib_Vclplug_Gen,
- gid_File_Lib_Vclplug_Kde,
- gid_File_Lib_Vclplug_Kde4,
-+ gid_File_Lib_Vclplug_Tde,
- gid_File_Lib_Vclplug_Svp,
- gid_File_Lib_Basctl,
- gid_File_Lib_CanvasTools,
-@@ -348,6 +350,8 @@ Module gid_Module_Root_Files_5
- gid_File_Lib_Emboleobj,
- gid_File_Lib_Kab_1,
- gid_File_Lib_Kab_Drv_1,
-+ gid_File_Lib_Tdeab_1,
-+ gid_File_Lib_Tdeab_Drv_1,
- gid_File_Lib_Macab_1,
- gid_File_Lib_Macab_Drv_1,
- gid_File_Lib_Evtatt,
-diff --git a/scp2/source/tde/file_tde.scp b/scp2/source/tde/file_tde.scp
-new file mode 100644
-index 0000000..6387a57
---- /dev/null
-+++ b/scp2/source/tde/file_tde.scp
-@@ -0,0 +1,37 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+#include "macros.inc"
-+
-+#ifdef ENABLE_TDE
-+File gid_File_Lib_Tdebe
-+ TXT_FILE_BODY;
-+ Styles = (PACKED);
-+ Dir = SCP2_OOO_BIN_DIR;
-+ Name = STRING(CONCAT2(tdebe1.uno,UNXSUFFIX));
-+End
-+#endif
-diff --git a/scp2/source/tde/makefile.mk b/scp2/source/tde/makefile.mk
-new file mode 100644
-index 0000000..78d5728
---- /dev/null
-+++ b/scp2/source/tde/makefile.mk
-@@ -0,0 +1,59 @@
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2000, 2010 Oracle and/or its affiliates.
-+# Copyright 2011 Timothy Pearson
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+
-+PRJ=..$/..
-+
-+PRJPCH=
-+
-+PRJNAME=scp2
-+TARGET=tde
-+TARGETTYPE=CUI
-+
-+# --- Settings -----------------------------------------------------
-+
-+.INCLUDE : settings.mk
-+
-+SCP_PRODUCT_TYPE=osl
-+
-+.IF "$(ENABLE_TDE)" == "TRUE"
-+
-+.IF "$(ENABLE_TDE)" != ""
-+SCPDEFS+=-DENABLE_TDE
-+.ENDIF
-+
-+PARFILES = \
-+ module_tde.par \
-+ file_tde.par
-+
-+ULFFILES= \
-+ module_tde.ulf
-+.ENDIF
-+
-+# --- File ---------------------------------------------------------
-+
-+.INCLUDE : target.mk
-diff --git a/scp2/source/tde/module_tde.scp b/scp2/source/tde/module_tde.scp
-new file mode 100644
-index 0000000..9fdfecd
---- /dev/null
-+++ b/scp2/source/tde/module_tde.scp
-@@ -0,0 +1,45 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#include "macros.inc"
-+
-+#if defined( ENABLE_TDE )
-+Module gid_Module_Optional_Tde
-+ ParentID = gid_Module_Optional;
-+ Default = YES;
-+ PackageInfo = "packinfo_office.txt";
-+ MOD_NAME_DESC(MODULE_OPTIONAL_TDE);
-+ Styles = (DONTSHOWINUSERINSTALL);
-+ Files = (
-+#ifdef ENABLE_TDE
-+ gid_File_Lib_Tdebe
-+#endif // ENABLE_TDE
-+ );
-+End
-+#endif
-+
-diff --git a/scp2/source/tde/module_tde.ulf b/scp2/source/tde/module_tde.ulf
-new file mode 100644
-index 0000000..e55735f
---- /dev/null
-+++ b/scp2/source/tde/module_tde.ulf
-@@ -0,0 +1,34 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+[STR_NAME_MODULE_OPTIONAL_TDE]
-+en-US = "TDE Integration"
-+
-+[STR_DESC_MODULE_OPTIONAL_TDE]
-+en-US = "System integration of %PRODUCTNAME %PRODUCTVERSION into TDE."
-+
-diff --git a/scp2/util/makefile.mk b/scp2/util/makefile.mk
-index 1d6d694..c59e04c 100644
---- a/scp2/util/makefile.mk
-+++ b/scp2/util/makefile.mk
-@@ -200,6 +200,12 @@ SCP1FILES += \
- module_kde.par \
- file_kde.par
- .ENDIF
-+
-+.IF "$(ENABLE_TDE)" == "TRUE"
-+SCP1FILES += \
-+ module_tde.par \
-+ file_tde.par
-+.ENDIF
- .ENDIF
-
- .IF "$(ENABLE_CRASHDUMP)" != ""
-diff --git a/set_soenv.in b/set_soenv.in
-index dc2d996..e0d7c39 100755
---- a/set_soenv.in
-+++ b/set_soenv.in
-@@ -1546,6 +1546,10 @@ ToFile( "KDE_GLIB_CFLAGS", "@KDE_GLIB_CFLAGS@", "e" );
- ToFile( "KDE_GLIB_LIBS", "@KDE_GLIB_LIBS@", "e" );
- ToFile( "KDE_HAVE_GLIB", "@KDE_HAVE_GLIB@", "e" );
- ToFile( "ENABLE_KAB", "@ENABLE_KAB@", "e" );
-+ToFile( "ENABLE_TDE", "@ENABLE_TDE@", "e" );
-+ToFile( "TDE_CFLAGS", "@TDE_CFLAGS@", "e" );
-+ToFile( "TDE_LIBS", "@TDE_LIBS@", "e" );
-+ToFile( "ENABLE_TDEAB", "@ENABLE_TDEAB@", "e" );
- ToFile( "PSPRINT", "TRUE", "e" );
- ToFile( "MKDEPENDSOLVER", "TRUE", "e" );
- ToFile( "nodep", "@nodep@", "e" );
-diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
-index 63bb1fe..c5bb1d1 100644
---- a/setup_native/source/packinfo/packinfo_office.txt
-+++ b/setup_native/source/packinfo/packinfo_office.txt
-@@ -48,6 +48,21 @@ packageversion = "%OOOPACKAGEVERSION"
- End
-
- Start
-+module = "gid_Module_Optional_Tde"
-+solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-tde-integration"
-+solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-+packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-tde-integration"
-+freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-+requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-+copyright = "1999-2009 by OpenOffice.org"
-+solariscopyright = "solariscopyrightfile"
-+vendor = "The Document Foundation"
-+description = "TDE integration module for LibreOffice %OOOBASEVERSION"
-+destpath = "/opt"
-+packageversion = "%OOOPACKAGEVERSION"
-+End
-+
-+Start
- module = "gid_Module_Root"
- # script = "shellscripts_core01.txt"
- solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01"
-diff --git a/shell/inc/tde_headers.h b/shell/inc/tde_headers.h
-new file mode 100644
-index 0000000..91f59f9
---- /dev/null
-+++ b/shell/inc/tde_headers.h
-@@ -0,0 +1,98 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef INCLUDED_VCL_TDE_HEADERS_H
-+#define INCLUDED_VCL_TDE_HEADERS_H
-+
-+/* ********* Suppress warnings if needed */
-+#include "sal/config.h"
-+
-+#if defined __GNUC__
-+#pragma GCC system_header
-+#endif
-+
-+
-+/* ********* Hack, but needed because of conflicting types... */
-+#define Region QtXRegion
-+
-+
-+/* ********* TQt headers */
-+#include <tqaccessible.h>
-+#include <tqcheckbox.h>
-+#include <tqcombobox.h>
-+#include <tqfont.h>
-+#include <tqframe.h>
-+#include <tqlineedit.h>
-+#include <tqlistview.h>
-+#include <tqmainwindow.h>
-+#include <tqmenudata.h>
-+#include <tqpaintdevice.h>
-+#include <tqpainter.h>
-+#include <tqpushbutton.h>
-+#include <tqradiobutton.h>
-+#include <tqrangecontrol.h>
-+#include <tqstring.h>
-+#include <tqtabbar.h>
-+#include <tqtabwidget.h>
-+#include <tqtoolbar.h>
-+#include <tqtoolbutton.h>
-+#include <tqwidget.h>
-+#include <tqprogressbar.h>
-+
-+/* ********* See hack on top of this file */
-+#undef Region
-+
-+
-+/* ********* TDE base headers */
-+#include <kaboutdata.h>
-+#include <kapplication.h>
-+#include <kcmdlineargs.h>
-+#include <kconfig.h>
-+#include <kdeversion.h>
-+#include <kemailsettings.h>
-+#include <kglobal.h>
-+#include <kglobalsettings.h>
-+#include <klocale.h>
-+#include <kmainwindow.h>
-+#include <kmenubar.h>
-+#include <kprotocolmanager.h>
-+#include <kstartupinfo.h>
-+#include <kstyle.h>
-+
-+
-+/* ********* TDE address book connectivity headers */
-+#include <kabc/addressbook.h>
-+#include <kabc/addressee.h>
-+#include <kabc/field.h>
-+#include <kabc/stdaddressbook.h>
-+
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/shell/prj/build.lst b/shell/prj/build.lst
-index 6dc5270..700c989 100644
---- a/shell/prj/build.lst
-+++ b/shell/prj/build.lst
-@@ -25,5 +25,6 @@ sl shell\source\backends\macbe nmake - u sl_backends_m
- sl shell\source\backends\gconfbe nmake - u sl_backends_gconfbe sl_inc NULL
- sl shell\source\backends\kdebe nmake - u sl_backends_kdebe sl_inc NULL
- sl shell\source\backends\kde4be nmake - u sl_backends_kde4be sl_inc NULL
-+sl shell\source\backends\tdebe nmake - u sl_backends_tdebe sl_inc NULL
- sl shell\source\backends\desktopbe nmake - u sl_backends_desktopbe sl_inc NULL
- sl shell\source\win32\shlxthandler\ooofilt nmake - w sl_win32_shlxthandler_ooofilt sl_win32_zipfile.w sl_win32_ooofilereader.w sl_win32_shlxthandler_util.w sl_all sl_inc NULL
-diff --git a/shell/prj/d.lst b/shell/prj/d.lst
-index 62dfa80..7665b62 100644
---- a/shell/prj/d.lst
-+++ b/shell/prj/d.lst
-@@ -15,6 +15,7 @@
- ..\%__SRC%\bin\open-url %_DEST%\bin\open-url
- ..\%__SRC%\bin\cde-open-url %_DEST%\bin\cde-open-url
- ..\%__SRC%\bin\kde-open-url %_DEST%\bin\kde-open-url
-+..\%__SRC%\bin\tde-open-url %_DEST%\bin\tde-open-url
- ..\%__SRC%\bin\gnome-open-url %_DEST%\bin\gnome-open-url
- ..\%__SRC%\bin\gnome-open-url.bin %_DEST%\bin\gnome-open-url.bin
- ..\%__SRC%\bin\senddoc %_DEST%\bin\senddoc
-@@ -27,7 +28,9 @@
- ..\%__SRC%\misc\gconfbe1.component %_DEST%\xml\gconfbe1.component
- ..\%__SRC%\misc\kde4be1.component %_DEST%\xml\kde4be1.component
- ..\%__SRC%\misc\kdebe1.component %_DEST%\xml\kdebe1.component
-+..\%__SRC%\misc\tdebe1.component %_DEST%\xml\tdebe1.component
- ..\inc\kde_headers.h %_DEST%\inc\shell\kde_headers.h
-+..\inc\tde_headers.h %_DEST%\inc\shell\tde_headers.h
- ..\%__SRC%\misc\localebe1.component %_DEST%\xml\localebe1.component
- ..\%__SRC%\misc\macbe1.component %_DEST%\xml\macbe1.component
- ..\%__SRC%\misc\smplmail.component %_DEST%\xml\smplmail.component
-diff --git a/shell/source/backends/tdebe/makefile.mk b/shell/source/backends/tdebe/makefile.mk
-new file mode 100644
-index 0000000..5243da4
---- /dev/null
-+++ b/shell/source/backends/tdebe/makefile.mk
-@@ -0,0 +1,88 @@
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2000, 2010 Oracle and/or its affiliates.
-+# Copyright 2011 Timothy Pearson
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+PRJ=..$/..$/..
-+
-+PRJNAME=shell
-+TARGET=tdebe
-+
-+LIBTARGET=NO
-+ENABLE_EXCEPTIONS=TRUE
-+VISIBILITY_HIDDEN=TRUE
-+
-+# --- Settings ---
-+
-+.INCLUDE : settings.mk
-+
-+# For some of the included external TDE headers, GCC complains about shadowed
-+# symbols in instantiated template code only at the end of a compilation unit,
-+# so the only solution is to disable that warning here:
-+.IF "$(COM)" == "GCC"
-+CFLAGSCXX+=-Wno-shadow
-+.ENDIF
-+
-+# no "lib" prefix
-+DLLPRE =
-+
-+.IF "$(ENABLE_TDE)" == "TRUE"
-+
-+CFLAGS+=$(TDE_CFLAGS)
-+
-+# --- Files ---
-+
-+SLOFILES=\
-+ $(SLO)$/tdeaccess.obj \
-+ $(SLO)$/tdebackend.obj
-+
-+SHL1NOCHECK=TRUE
-+SHL1TARGET=$(TARGET)1.uno
-+SHL1OBJS=$(SLOFILES)
-+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-+
-+SHL1IMPLIB=i$(SHL1TARGET)
-+SHL1LINKFLAGS+=$(TDE_LIBS) -lkio
-+SHL1STDLIBS= \
-+ $(CPPUHELPERLIB) \
-+ $(CPPULIB) \
-+ $(SALLIB)
-+
-+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-+DEF1NAME=$(SHL1TARGET)
-+
-+.ENDIF # "$(ENABLE_TDE)" == "TRUE"
-+
-+# --- Targets ---
-+
-+.INCLUDE : target.mk
-+
-+ALLTAR : $(MISC)/tdebe1.component
-+
-+$(MISC)/tdebe1.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
-+ tdebe1.component
-+ $(XSLTPROC) --nonet --stringparam uri \
-+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
-+ $(SOLARENV)/bin/createcomponent.xslt tdebe1.component
-diff --git a/shell/source/backends/tdebe/tdeaccess.cxx b/shell/source/backends/tdebe/tdeaccess.cxx
-new file mode 100644
-index 0000000..1dbd64f
---- /dev/null
-+++ b/shell/source/backends/tdebe/tdeaccess.cxx
-@@ -0,0 +1,319 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+*
-+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+*
-+* Copyright 2000, 2010 Oracle and/or its affiliates.
-+* Copyright 2011 Timothy Pearson
-+*
-+* OpenOffice.org - a multi-platform office productivity suite
-+*
-+* This file is part of OpenOffice.org.
-+*
-+* OpenOffice.org is free software: you can redistribute it and/or modify
-+* it under the terms of the GNU Lesser General Public License version 3
-+* only, as published by the Free Software Foundation.
-+*
-+* OpenOffice.org 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 version 3 for more details
-+* (a copy is included in the LICENSE file that accompanied this code).
-+*
-+* You should have received a copy of the GNU Lesser General Public License
-+* version 3 along with OpenOffice.org. If not, see
-+* <http://www.openoffice.org/license.html>
-+* for a copy of the LGPLv3 License.
-+*
-+************************************************************************/
-+
-+#include "precompiled_shell.hxx"
-+#include "sal/config.h"
-+
-+#include "com/sun/star/uno/Any.hxx"
-+#include "cppu/unotype.hxx"
-+#include "osl/diagnose.h"
-+#include "osl/file.h"
-+#include "rtl/string.h"
-+#include "rtl/ustring.hxx"
-+
-+#include "tde_headers.h"
-+
-+#include "tdeaccess.hxx"
-+
-+#define SPACE ' '
-+#define COMMA ','
-+#define SEMI_COLON ';'
-+
-+namespace tdeaccess {
-+
-+namespace {
-+
-+namespace css = com::sun::star ;
-+namespace uno = css::uno ;
-+
-+}
-+
-+css::beans::Optional< css::uno::Any > getValue(rtl::OUString const & id) {
-+ if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ExternalMailer"))) {
-+ KEMailSettings aEmailSettings;
-+ TQString aClientProgram;
-+ ::rtl::OUString sClientProgram;
-+
-+ aClientProgram = aEmailSettings.getSetting( KEMailSettings::ClientProgram );
-+ if ( aClientProgram.isEmpty() )
-+ aClientProgram = "kmail";
-+ else
-+ aClientProgram = aClientProgram.section(SPACE, 0, 0);
-+ sClientProgram = (const sal_Unicode *) aClientProgram.ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sClientProgram ) );
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")))
-+ {
-+ TQFont aFixedFont;
-+ short nFontHeight;
-+
-+ aFixedFont = KGlobalSettings::fixedFont();
-+ nFontHeight = aFixedFont.pointSize();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( nFontHeight ) );
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")))
-+ {
-+ TQFont aFixedFont;
-+ TQString aFontName;
-+ :: rtl::OUString sFontName;
-+
-+ aFixedFont = KGlobalSettings::fixedFont();
-+ aFontName = aFixedFont.family();
-+ sFontName = (const sal_Unicode *) aFontName.ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sFontName ) );
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")))
-+ {
-+ /* does not make much sense without an accessibility bridge */
-+ sal_Bool ATToolSupport = sal_False;
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( rtl::OUString::valueOf( ATToolSupport ) ) );
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")))
-+ {
-+ TQString aDocumentsDir( KGlobalSettings::documentPath() );
-+ rtl::OUString sDocumentsDir;
-+ rtl::OUString sDocumentsURL;
-+ if ( aDocumentsDir.endsWith(TQChar('/')) )
-+ aDocumentsDir.truncate ( aDocumentsDir.length() - 1 );
-+ sDocumentsDir = (const sal_Unicode *) aDocumentsDir.ucs2();
-+ osl_getFileURLFromSystemPath( sDocumentsDir.pData, &sDocumentsURL.pData );
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sDocumentsURL ) );
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")))
-+ {
-+ TQString aFTPProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aFTPProxy.isEmpty() )
-+ {
-+ KURL aProxy(aFTPProxy);
-+ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sProxy ) );
-+ }
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")))
-+ {
-+ TQString aFTPProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aFTPProxy = KProtocolManager::proxyFor( "FTP" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aFTPProxy = KProtocolManager::proxyForURL( "ftp://ftp.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aFTPProxy.isEmpty() )
-+ {
-+ KURL aProxy(aFTPProxy);
-+ sal_Int32 nPort = aProxy.port();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( nPort ) );
-+ }
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")))
-+ {
-+ TQString aHTTPProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aHTTPProxy.isEmpty() )
-+ {
-+ KURL aProxy(aHTTPProxy);
-+ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sProxy ) );
-+ }
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")))
-+ {
-+ TQString aHTTPProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aHTTPProxy = KProtocolManager::proxyFor( "HTTP" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aHTTPProxy = KProtocolManager::proxyForURL( "http://http.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aHTTPProxy.isEmpty() )
-+ {
-+ KURL aProxy(aHTTPProxy);
-+ sal_Int32 nPort = aProxy.port();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( nPort ) );
-+ }
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")))
-+ {
-+ TQString aHTTPSProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aHTTPSProxy.isEmpty() )
-+ {
-+ KURL aProxy(aHTTPSProxy);
-+ ::rtl::OUString sProxy = (const sal_Unicode *) aProxy.host().ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sProxy ) );
-+ }
-+ } else if (id.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")))
-+ {
-+ TQString aHTTPSProxy;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ aHTTPSProxy = KProtocolManager::proxyFor( "HTTPS" );
-+ break;
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+// In such cases, the proxy address is not stored in TDE, but determined dynamically.
-+// The proxy address may depend on the requested address, on the time of the day, on the speed of the wind...
-+// The best we can do here is to ask the current value for a given address.
-+ aHTTPSProxy = KProtocolManager::proxyForURL( "https://https.openoffice.org" );
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aHTTPSProxy.isEmpty() )
-+ {
-+ KURL aProxy(aHTTPSProxy);
-+ sal_Int32 nPort = aProxy.port();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( nPort ) );
-+ }
-+ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy"))) {
-+ TQString aNoProxyFor;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+ aNoProxyFor = KProtocolManager::noProxyFor();
-+ break;
-+ default: // No proxy is used
-+ break;
-+ }
-+ if ( !aNoProxyFor.isEmpty() )
-+ {
-+ ::rtl::OUString sNoProxyFor;
-+
-+ aNoProxyFor = aNoProxyFor.replace( COMMA, SEMI_COLON );
-+ sNoProxyFor = (const sal_Unicode *) aNoProxyFor.ucs2();
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( sNoProxyFor ) );
-+ }
-+ } else if (id.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ooInetProxyType"))) {
-+ int nProxyType;
-+ switch ( KProtocolManager::proxyType() )
-+ {
-+ case KProtocolManager::ManualProxy: // Proxies are manually configured
-+ case KProtocolManager::PACProxy: // A proxy configuration URL has been given
-+ case KProtocolManager::WPADProxy: // A proxy should be automatically discovered
-+ case KProtocolManager::EnvVarProxy: // Use the proxy values set through environment variables
-+ nProxyType = 1;
-+ break;
-+ default: // No proxy is used
-+ nProxyType = 0;
-+ }
-+ return css::beans::Optional< css::uno::Any >(
-+ true, uno::makeAny( (sal_Int32) nProxyType ) );
-+ } else {
-+ OSL_ASSERT(false); // this cannot happen
-+ }
-+ return css::beans::Optional< css::uno::Any >();
-+}
-+
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/shell/source/backends/tdebe/tdeaccess.hxx b/shell/source/backends/tdebe/tdeaccess.hxx
-new file mode 100644
-index 0000000..5029c12
---- /dev/null
-+++ b/shell/source/backends/tdebe/tdeaccess.hxx
-@@ -0,0 +1,51 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+*
-+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+*
-+* Copyright 2000, 2010 Oracle and/or its affiliates.
-+* Copyright 2011 Timothy Pearson
-+*
-+* OpenOffice.org - a multi-platform office productivity suite
-+*
-+* This file is part of OpenOffice.org.
-+*
-+* OpenOffice.org is free software: you can redistribute it and/or modify
-+* it under the terms of the GNU Lesser General Public License version 3
-+* only, as published by the Free Software Foundation.
-+*
-+* OpenOffice.org 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 version 3 for more details
-+* (a copy is included in the LICENSE file that accompanied this code).
-+*
-+* You should have received a copy of the GNU Lesser General Public License
-+* version 3 along with OpenOffice.org. If not, see
-+* <http://www.openoffice.org/license.html>
-+* for a copy of the LGPLv3 License.
-+*
-+************************************************************************/
-+
-+#ifndef INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-+#define INCLUDED_SHELL_SOURCE_BACKENDS_TDEBE_TDEACCESS_HXX
-+
-+#include "sal/config.h"
-+
-+#include "com/sun/star/beans/Optional.hpp"
-+
-+namespace com { namespace sun { namespace star { namespace uno {
-+ class Any;
-+} } } }
-+namespace rtl { class OUString; }
-+
-+namespace tdeaccess {
-+
-+com::sun::star::beans::Optional< com::sun::star::uno::Any > getValue(
-+ rtl::OUString const & id);
-+
-+}
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/shell/source/backends/tdebe/tdebackend.cxx b/shell/source/backends/tdebe/tdebackend.cxx
-new file mode 100644
-index 0000000..19eaa60
---- /dev/null
-+++ b/shell/source/backends/tdebe/tdebackend.cxx
-@@ -0,0 +1,262 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+*
-+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+*
-+* Copyright 2000, 2010 Oracle and/or its affiliates.
-+* Copyright 2011 Timothy Pearson
-+*
-+* OpenOffice.org - a multi-platform office productivity suite
-+*
-+* This file is part of OpenOffice.org.
-+*
-+* OpenOffice.org is free software: you can redistribute it and/or modify
-+* it under the terms of the GNU Lesser General Public License version 3
-+* only, as published by the Free Software Foundation.
-+*
-+* OpenOffice.org 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 version 3 for more details
-+* (a copy is included in the LICENSE file that accompanied this code).
-+*
-+* You should have received a copy of the GNU Lesser General Public License
-+* version 3 along with OpenOffice.org. If not, see
-+* <http://www.openoffice.org/license.html>
-+* for a copy of the LGPLv3 License.
-+*
-+************************************************************************/
-+
-+#include "precompiled_shell.hxx"
-+#include "sal/config.h"
-+
-+#include "boost/noncopyable.hpp"
-+#include "com/sun/star/beans/Optional.hpp"
-+#include "com/sun/star/beans/PropertyVetoException.hpp"
-+#include "com/sun/star/beans/UnknownPropertyException.hpp"
-+#include "com/sun/star/beans/XPropertyChangeListener.hpp"
-+#include "com/sun/star/beans/XPropertySet.hpp"
-+#include "com/sun/star/beans/XPropertySetInfo.hpp"
-+#include "com/sun/star/beans/XVetoableChangeListener.hpp"
-+#include "com/sun/star/lang/IllegalArgumentException.hpp"
-+#include "com/sun/star/lang/WrappedTargetException.hpp"
-+#include "com/sun/star/lang/XMultiComponentFactory.hpp"
-+#include "com/sun/star/lang/XServiceInfo.hpp"
-+#include "com/sun/star/lang/WrappedTargetException.hpp"
-+#include "com/sun/star/uno/Any.hxx"
-+#include "com/sun/star/uno/Reference.hxx"
-+#include "com/sun/star/uno/RuntimeException.hpp"
-+#include "com/sun/star/uno/Sequence.hxx"
-+#include "com/sun/star/uno/XComponentContext.hpp"
-+#include "com/sun/star/uno/XCurrentContext.hpp"
-+#include "cppuhelper/factory.hxx"
-+#include "cppuhelper/implbase2.hxx"
-+#include "cppuhelper/implementationentry.hxx"
-+#include "cppuhelper/weak.hxx"
-+#include "rtl/string.h"
-+#include "rtl/ustring.h"
-+#include "rtl/ustring.hxx"
-+#include "sal/types.h"
-+#include "uno/current_context.hxx"
-+#include "uno/lbnames.h"
-+
-+#include "tde_headers.h"
-+
-+#include "tdeaccess.hxx"
-+
-+namespace {
-+
-+namespace css = com::sun::star;
-+
-+rtl::OUString SAL_CALL getServiceImplementationName() {
-+ return rtl::OUString(
-+ RTL_CONSTASCII_USTRINGPARAM(
-+ "com.sun.star.comp.configuration.backend.TDEBackend"));
-+}
-+
-+css::uno::Sequence< rtl::OUString > SAL_CALL getServiceSupportedServiceNames() {
-+ rtl::OUString name(
-+ RTL_CONSTASCII_USTRINGPARAM(
-+ "com.sun.star.configuration.backend.TDEBackend"));
-+ return css::uno::Sequence< rtl::OUString >(&name, 1);
-+}
-+
-+class Service:
-+ public cppu::WeakImplHelper2<
-+ css::lang::XServiceInfo, css::beans::XPropertySet >,
-+ private boost::noncopyable
-+{
-+public:
-+ Service();
-+
-+private:
-+ virtual ~Service() {}
-+
-+ virtual rtl::OUString SAL_CALL getImplementationName()
-+ throw (css::uno::RuntimeException)
-+ { return getServiceImplementationName(); }
-+
-+ virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName)
-+ throw (css::uno::RuntimeException)
-+ { return ServiceName == getSupportedServiceNames()[0]; }
-+
-+ virtual css::uno::Sequence< rtl::OUString > SAL_CALL
-+ getSupportedServiceNames() throw (css::uno::RuntimeException)
-+ { return getServiceSupportedServiceNames(); }
-+
-+ virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
-+ getPropertySetInfo() throw (css::uno::RuntimeException)
-+ { return css::uno::Reference< css::beans::XPropertySetInfo >(); }
-+
-+ virtual void SAL_CALL setPropertyValue(
-+ rtl::OUString const &, css::uno::Any const &)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::beans::PropertyVetoException,
-+ css::lang::IllegalArgumentException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException);
-+
-+ virtual css::uno::Any SAL_CALL getPropertyValue(
-+ rtl::OUString const & PropertyName)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException);
-+
-+ virtual void SAL_CALL addPropertyChangeListener(
-+ rtl::OUString const &,
-+ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException)
-+ {}
-+
-+ virtual void SAL_CALL removePropertyChangeListener(
-+ rtl::OUString const &,
-+ css::uno::Reference< css::beans::XPropertyChangeListener > const &)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException)
-+ {}
-+
-+ virtual void SAL_CALL addVetoableChangeListener(
-+ rtl::OUString const &,
-+ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException)
-+ {}
-+
-+ virtual void SAL_CALL removeVetoableChangeListener(
-+ rtl::OUString const &,
-+ css::uno::Reference< css::beans::XVetoableChangeListener > const &)
-+ throw (
-+ css::beans::UnknownPropertyException,
-+ css::lang::WrappedTargetException, css::uno::RuntimeException)
-+ {}
-+
-+ bool enabled_;
-+};
-+
-+Service::Service(): enabled_(false) {
-+ css::uno::Reference< css::uno::XCurrentContext > context(
-+ css::uno::getCurrentContext());
-+ if (context.is()) {
-+ rtl::OUString desktop;
-+ context->getValueByName(
-+ rtl::OUString(
-+ RTL_CONSTASCII_USTRINGPARAM("system.desktop-environment"))) >>=
-+ desktop;
-+ enabled_ = desktop.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("TDE")) &&
-+ KApplication::kApplication() != 0;
-+ }
-+}
-+
-+void Service::setPropertyValue(rtl::OUString const &, css::uno::Any const &)
-+ throw (
-+ css::beans::UnknownPropertyException, css::beans::PropertyVetoException,
-+ css::lang::IllegalArgumentException, css::lang::WrappedTargetException,
-+ css::uno::RuntimeException)
-+{
-+ throw css::lang::IllegalArgumentException(
-+ rtl::OUString(
-+ RTL_CONSTASCII_USTRINGPARAM("setPropertyValue not supported")),
-+ static_cast< cppu::OWeakObject * >(this), -1);
-+}
-+
-+css::uno::Any Service::getPropertyValue(rtl::OUString const & PropertyName)
-+ throw (
-+ css::beans::UnknownPropertyException, css::lang::WrappedTargetException,
-+ css::uno::RuntimeException)
-+{
-+ if (PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ExternalMailer")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("SourceViewFontName")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("WorkPathVariable")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy")) ||
-+ PropertyName.equalsAsciiL(
-+ RTL_CONSTASCII_STRINGPARAM("ooInetProxyType")))
-+ {
-+ return css::uno::makeAny(
-+ enabled_
-+ ? tdeaccess::getValue(PropertyName)
-+ : css::beans::Optional< css::uno::Any >());
-+ }
-+ throw css::beans::UnknownPropertyException(
-+ PropertyName, static_cast< cppu::OWeakObject * >(this));
-+}
-+
-+css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(
-+ css::uno::Reference< css::uno::XComponentContext > const &)
-+{
-+ return static_cast< cppu::OWeakObject * >(new Service);
-+}
-+
-+static cppu::ImplementationEntry const services[] = {
-+ { &createInstance, &getServiceImplementationName,
-+ &getServiceSupportedServiceNames, &cppu::createSingleComponentFactory, 0,
-+ 0 },
-+ { 0, 0, 0, 0, 0, 0 }
-+};
-+
-+}
-+
-+extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
-+ char const * pImplName, void * pServiceManager, void * pRegistryKey)
-+{
-+ return cppu::component_getFactoryHelper(
-+ pImplName, pServiceManager, pRegistryKey, services);
-+}
-+
-+extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
-+component_getImplementationEnvironment(
-+ char const ** ppEnvTypeName, uno_Environment **)
-+{
-+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-+}
-+
-+extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
-+ void * pServiceManager, void * pRegistryKey)
-+{
-+ return component_writeInfoHelper(pServiceManager, pRegistryKey, services);
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/shell/source/backends/tdebe/tdebe1.component b/shell/source/backends/tdebe/tdebe1.component
-new file mode 100755
-index 0000000..9eb7ca2
---- /dev/null
-+++ b/shell/source/backends/tdebe/tdebe1.component
-@@ -0,0 +1,35 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!--**********************************************************************
-+*
-+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+*
-+* Copyright 2000, 2010 Oracle and/or its affiliates.
-+* Copyright 2011 Timothy Pearson
-+*
-+* OpenOffice.org - a multi-platform office productivity suite
-+*
-+* This file is part of OpenOffice.org.
-+*
-+* OpenOffice.org is free software: you can redistribute it and/or modify
-+* it under the terms of the GNU Lesser General Public License version 3
-+* only, as published by the Free Software Foundation.
-+*
-+* OpenOffice.org 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 version 3 for more details
-+* (a copy is included in the LICENSE file that accompanied this code).
-+*
-+* You should have received a copy of the GNU Lesser General Public License
-+* version 3 along with OpenOffice.org. If not, see
-+* <http://www.openoffice.org/license.html>
-+* for a copy of the LGPLv3 License.
-+*
-+**********************************************************************-->
-+
-+<component loader="com.sun.star.loader.SharedLibrary"
-+ xmlns="http://openoffice.org/2010/uno-components">
-+ <implementation name="com.sun.star.comp.configuration.backend.TDEBackend">
-+ <service name="com.sun.star.configuration.backend.TDEBackend"/>
-+ </implementation>
-+</component>
-diff --git a/shell/source/unix/misc/makefile.mk b/shell/source/unix/misc/makefile.mk
-index 840f372..df4efa8 100644
---- a/shell/source/unix/misc/makefile.mk
-+++ b/shell/source/unix/misc/makefile.mk
-@@ -45,7 +45,8 @@ SCRIPTFILES = \
- $(BIN)$/open-url \
- $(BIN)$/cde-open-url \
- $(BIN)$/gnome-open-url \
-- $(BIN)$/kde-open-url
-+ $(BIN)$/kde-open-url \
-+ $(BIN)$/tde-open-url
-
- APP1TARGET = gnome-open-url.bin
- APP1OBJS = \
-diff --git a/shell/source/unix/misc/tde-open-url.sh b/shell/source/unix/misc/tde-open-url.sh
-new file mode 100644
-index 0000000..fa05bde
---- /dev/null
-+++ b/shell/source/unix/misc/tde-open-url.sh
-@@ -0,0 +1,10 @@
-+#!/bin/sh
-+
-+# special handling for mailto: uris
-+if echo $1 | grep '^mailto:' > /dev/null; then
-+ kmailservice "$1" &
-+else
-+ kfmclient openURL "$1" &
-+fi
-+
-+exit 0
-diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
-index 4ff643a..d871b05 100644
---- a/solenv/gbuild/gbuild.mk
-+++ b/solenv/gbuild/gbuild.mk
-@@ -268,6 +268,10 @@ ifneq ($(strip $(ENABLE_KDE)),)
- gb_GLOBALDEFS += -DENABLE_KDE
- endif
-
-+ifneq ($(strip $(ENABLE_TDE)),)
-+gb_GLOBALDEFS += -DENABLE_TDE
-+endif
-+
- ifneq ($(strip $(ENABLE_KDE4)),)
- gb_GLOBALDEFS += -DENABLE_KDE4
- endif
-diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
-index 74ed8d5..d6ce918 100644
---- a/solenv/inc/unx.mk
-+++ b/solenv/inc/unx.mk
-@@ -179,4 +179,13 @@ SOLARLIB+=-L$(KDE_ROOT)/lib64
- .ENDIF # "$(KDE_ROOT)"!=""
- .ENDIF # "$(ENABLE_KDE)" != ""
-
-+# enable building/linking TDE-dependent code in both OOo and SO build environment
-+.IF "$(ENABLE_TDE)" != ""
-+.IF "$(TDE_ROOT)"!=""
-+TDE_CFLAGS:=-I$(TDE_ROOT)/include -I/usr/include/tqt -DQT_CLEAN_NAMESPACE
-+TDE_LIBS:=-lkdeui -lkdecore -ltqt -lqt-mt
-+SOLARLIB+=-L$(TDE_ROOT)/lib
-+.ENDIF # "$(TDE_ROOT)"!=""
-+.ENDIF # "$(ENABLE_TDE)" != ""
-+
- OOO_LIBRARY_PATH_VAR *= LD_LIBRARY_PATH
-diff --git a/toolkit/source/layout/core/dialogbuttonhbox.cxx b/toolkit/source/layout/core/dialogbuttonhbox.cxx
-index 9c19306..741fc1c 100644
---- a/toolkit/source/layout/core/dialogbuttonhbox.cxx
-+++ b/toolkit/source/layout/core/dialogbuttonhbox.cxx
-@@ -48,6 +48,8 @@ DialogButtonHBox::Ordering const DialogButtonHBox::DEFAULT_ORDERING =
- DialogButtonHBox::WINDOWS;
- #elif defined( ENABLE_KDE )
- DialogButtonHBox::KDE;
-+#elif defined( ENABLE_TDE )
-+DialogButtonHBox::TDE;
- #else /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
- DialogButtonHBox::GNOME;
- #endif /* !MACOSX && !SAL_W32 && !ENABLE_KDE */
-@@ -75,6 +77,8 @@ DialogButtonHBox::setOrdering( rtl::OUString const& ordering )
- mnOrdering = GNOME;
- else if ( ordering.equalsIgnoreAsciiCaseAscii( "KDE" ) )
- mnOrdering = KDE;
-+ else if ( ordering.equalsIgnoreAsciiCaseAscii( "TDE" ) )
-+ mnOrdering = TDE;
- else if ( ordering.equalsIgnoreAsciiCaseAscii( "MacOS" ) )
- mnOrdering = MACOS;
- else if ( ordering.equalsIgnoreAsciiCaseAscii( "Windows" ) )
-@@ -135,6 +139,8 @@ DialogButtonHBox::orderChildren()
- macosOrdering();
- else if ( mnOrdering == KDE )
- kdeOrdering();
-+ else if ( mnOrdering == TDE )
-+ tdeOrdering();
- else if ( 1 || mnOrdering == GNOME )
- gnomeOrdering();
- }
-@@ -229,6 +235,30 @@ DialogButtonHBox::kdeOrdering()
- }
-
- void
-+DialogButtonHBox::tdeOrdering()
-+{
-+ std::list< Box_Base::ChildData * > ordered;
-+ if ( mpHelp )
-+ ordered.push_back( mpHelp );
-+ if ( mpReset )
-+ ordered.push_back( mpReset );
-+ if ( mpFlow && ( mpHelp || mpReset ) )
-+ ordered.push_back( mpFlow );
-+ ordered.insert( ordered.end(), maOther.begin(), maOther.end() );
-+ if ( mpAction )
-+ ordered.push_back( mpAction );
-+ if ( mpAffirmative )
-+ ordered.push_back( mpAffirmative );
-+ if ( mpApply )
-+ ordered.push_back( mpApply );
-+ if ( mpAlternate )
-+ ordered.push_back( mpAlternate );
-+ if ( mpCancel )
-+ ordered.push_back( mpCancel );
-+ maChildren = ordered;
-+}
-+
-+void
- DialogButtonHBox::macosOrdering()
- {
- std::list< Box_Base::ChildData * > ordered;
-diff --git a/toolkit/source/layout/core/dialogbuttonhbox.hxx b/toolkit/source/layout/core/dialogbuttonhbox.hxx
-index aead7fc..67845a1 100644
---- a/toolkit/source/layout/core/dialogbuttonhbox.hxx
-+++ b/toolkit/source/layout/core/dialogbuttonhbox.hxx
-@@ -45,11 +45,12 @@ public:
- void SAL_CALL removeChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) throw ( css::uno::RuntimeException );
-
- private:
-- enum Ordering { PLATFORM, GNOME, KDE, MACOS, WINDOWS };
-+ enum Ordering { PLATFORM, GNOME, KDE, TDE, MACOS, WINDOWS };
-
- void orderChildren();
- void gnomeOrdering();
- void kdeOrdering();
-+ void tdeOrdering();
- void macosOrdering();
- void windowsOrdering();
-
-diff --git a/vcl/Library_vclplug_kde.mk b/vcl/Library_vclplug_kde.mk
-index 19c42e0..014a96e 100644
---- a/vcl/Library_vclplug_kde.mk
-+++ b/vcl/Library_vclplug_kde.mk
-@@ -4,6 +4,7 @@
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
- # Copyright 2000, 2010 Oracle and/or its affiliates.
-+# Copyright 2011 Timothy Pearson
- #
- # OpenOffice.org - a multi-platform office productivity suite
- #
-@@ -26,9 +27,9 @@
- #
- #*************************************************************************
-
--$(eval $(call gb_Library_Library,vclplug_kde))
-+$(eval $(call gb_Library_Library,vclplug_tde))
-
--$(eval $(call gb_Library_set_include,vclplug_kde,\
-+$(eval $(call gb_Library_set_include,vclplug_tde,\
- $$(INCLUDE) \
- -I$(SRCDIR)/vcl/inc \
- -I$(SRCDIR)/vcl/inc/pch \
-@@ -36,25 +37,25 @@ $(eval $(call gb_Library_set_include,vclplug_kde,\
- -I$(OUTDIR)/inc \
- ))
-
--$(eval $(call gb_Library_set_include,vclplug_kde,\
-+$(eval $(call gb_Library_set_include,vclplug_tde,\
- $$(INCLUDE) \
-- $$(KDE_CFLAGS) \
-+ $$(TDE_CFLAGS) \
- ))
-
--$(eval $(call gb_Library_add_defs,vclplug_kde,\
-- -DVCLPLUG_KDE_IMPLEMENTATION \
-+$(eval $(call gb_Library_add_defs,vclplug_tde,\
-+ -DVCLPLUG_TDE_IMPLEMENTATION \
- ))
-
--$(eval $(call gb_Library_add_api,vclplug_kde,\
-+$(eval $(call gb_Library_add_api,vclplug_tde,\
- offapi \
- udkapi \
- ))
-
--$(eval $(call gb_Library_add_libs,vclplug_kde,\
-- $$(KDE_LIBS) \
-+$(eval $(call gb_Library_add_libs,vclplug_tde,\
-+ $$(TDE_LIBS) \
- ))
-
--$(eval $(call gb_Library_add_linked_libs,vclplug_kde,\
-+$(eval $(call gb_Library_add_linked_libs,vclplug_tde,\
- vclplug_gen \
- vcl \
- tl \
-@@ -76,18 +77,18 @@ $(eval $(call gb_Library_add_linked_libs,vclplug_kde,\
- ICE \
- ))
-
--$(eval $(call gb_Library_use_externals,vclplug_kde,\
-+$(eval $(call gb_Library_use_externals,vclplug_tde,\
- icule \
- icuuc \
- ))
-
--$(eval $(call gb_Library_add_exception_objects,vclplug_kde,\
-- vcl/unx/kde/kdedata \
-- vcl/unx/kde/salnativewidgets-kde \
-+$(eval $(call gb_Library_add_exception_objects,vclplug_tde,\
-+ vcl/unx/tde/tdedata \
-+ vcl/unx/tde/salnativewidgets-tde \
- ))
-
- ifeq ($(OS),LINUX)
--$(eval $(call gb_Library_add_linked_libs,vclplug_kde,\
-+$(eval $(call gb_Library_add_linked_libs,vclplug_tde,\
- dl \
- m \
- pthread \
-diff --git a/vcl/Library_vclplug_tde.mk b/vcl/Library_vclplug_tde.mk
-new file mode 100644
-index 0000000..9a324a8
---- /dev/null
-+++ b/vcl/Library_vclplug_tde.mk
-@@ -0,0 +1,96 @@
-+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-+#*************************************************************************
-+#
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# Copyright 2000, 2010 Oracle and/or its affiliates.
-+#
-+# OpenOffice.org - a multi-platform office productivity suite
-+#
-+# This file is part of OpenOffice.org.
-+#
-+# OpenOffice.org is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU Lesser General Public License version 3
-+# only, as published by the Free Software Foundation.
-+#
-+# OpenOffice.org 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 version 3 for more details
-+# (a copy is included in the LICENSE file that accompanied this code).
-+#
-+# You should have received a copy of the GNU Lesser General Public License
-+# version 3 along with OpenOffice.org. If not, see
-+# <http://www.openoffice.org/license.html>
-+# for a copy of the LGPLv3 License.
-+#
-+#*************************************************************************
-+
-+$(eval $(call gb_Library_Library,vclplug_tde))
-+
-+$(eval $(call gb_Library_set_include,vclplug_tde,\
-+ $$(INCLUDE) \
-+ -I$(SRCDIR)/vcl/inc \
-+ -I$(SRCDIR)/vcl/inc/pch \
-+ -I$(SRCDIR)/solenv/inc \
-+ -I$(OUTDIR)/inc \
-+))
-+
-+$(eval $(call gb_Library_set_include,vclplug_tde,\
-+ $$(INCLUDE) \
-+ $$(TDE_CFLAGS) \
-+))
-+
-+$(eval $(call gb_Library_add_defs,vclplug_tde,\
-+ -DVCLPLUG_TDE_IMPLEMENTATION \
-+))
-+
-+$(eval $(call gb_Library_add_api,vclplug_tde,\
-+ offapi \
-+ udkapi \
-+))
-+
-+$(eval $(call gb_Library_add_libs,vclplug_tde,\
-+ $$(TDE_LIBS) \
-+))
-+
-+$(eval $(call gb_Library_add_linked_libs,vclplug_tde,\
-+ vclplug_gen \
-+ vcl \
-+ tl \
-+ utl \
-+ sot \
-+ ucbhelper \
-+ basegfx \
-+ comphelper \
-+ cppuhelper \
-+ i18nisolang1 \
-+ i18npaper \
-+ i18nutil \
-+ jvmaccess \
-+ cppu \
-+ sal \
-+ X11 \
-+ Xext \
-+ SM \
-+ ICE \
-+))
-+
-+$(eval $(call gb_Library_use_externals,vclplug_tde,\
-+ icule \
-+ icuuc \
-+))
-+
-+$(eval $(call gb_Library_add_exception_objects,vclplug_tde,\
-+ vcl/unx/tde/tdedata \
-+ vcl/unx/tde/salnativewidgets-tde \
-+))
-+
-+ifeq ($(OS),LINUX)
-+$(eval $(call gb_Library_add_linked_libs,vclplug_tde,\
-+ dl \
-+ m \
-+ pthread \
-+))
-+endif
-+# vim: set noet sw=4 ts=4:
-diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
-index 0a91f87..1de0022 100644
---- a/vcl/Module_vcl.mk
-+++ b/vcl/Module_vcl.mk
-@@ -59,6 +59,11 @@ $(eval $(call gb_Module_add_targets,vcl,\
- Library_vclplug_kde \
- ))
- endif
-+ifneq ($(ENABLE_TDE),)
-+$(eval $(call gb_Module_add_targets,vcl,\
-+ Library_vclplug_tde \
-+))
-+endif
- ifneq ($(ENABLE_KDE4),)
- $(eval $(call gb_Module_add_targets,vcl,\
- Library_vclplug_kde4 \
-diff --git a/vcl/inc/generic/gendata.hxx b/vcl/inc/generic/gendata.hxx
-index c52e891..e5b7b25 100644
---- a/vcl/inc/generic/gendata.hxx
-+++ b/vcl/inc/generic/gendata.hxx
-@@ -38,7 +38,7 @@ class SalGenericDisplay;
- class SalDisplay;
- class GtkSalDisplay;
- enum SalGenericDataType { SAL_DATA_GTK, SAL_DATA_GTK3,
-- SAL_DATA_KDE3, SAL_DATA_KDE4,
-+ SAL_DATA_KDE3, SAL_DATA_TDE, SAL_DATA_KDE4,
- SAL_DATA_UNX, SAL_DATA_SVP };
-
- class VCL_DLLPUBLIC SalGenericData : public SalData
-diff --git a/vcl/inc/unx/desktops.hxx b/vcl/inc/unx/desktops.hxx
-index de4ebb8..1d29c7d 100644
---- a/vcl/inc/unx/desktops.hxx
-+++ b/vcl/inc/unx/desktops.hxx
-@@ -34,6 +34,7 @@ enum DesktopType {
- DESKTOP_UNKNOWN, // unknown desktop, simple WM, etc.
- DESKTOP_GNOME,
- DESKTOP_KDE,
-+ DESKTOP_TDE,
- DESKTOP_KDE4,
- DESKTOP_CDE
- }; // keep in sync with desktop_strings[] in salplug.cxx
-diff --git a/vcl/inc/unx/tde/tde_headers.h b/vcl/inc/unx/tde/tde_headers.h
-new file mode 100644
-index 0000000..9c9f008
---- /dev/null
-+++ b/vcl/inc/unx/tde/tde_headers.h
-@@ -0,0 +1,98 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef INCLUDED_VCL_TDE_HEADERS_H
-+#define INCLUDED_VCL_TDE_HEADERS_H
-+
-+/* ********* Suppress warnings if needed */
-+#include "sal/config.h"
-+
-+#include <cstddef>
-+
-+#if defined __GNUC__
-+#pragma GCC system_header
-+#endif
-+
-+
-+/* ********* Hack, but needed because of conflicting types... */
-+#define Region TQtXRegion
-+
-+
-+/* ********* TQt headers */
-+#include <tqaccessible.h>
-+#include <tqcheckbox.h>
-+#include <tqcombobox.h>
-+#include <tqfont.h>
-+#include <tqframe.h>
-+#include <tqlineedit.h>
-+#include <tqlistview.h>
-+#include <tqmainwindow.h>
-+#include <tqmenudata.h>
-+#include <tqpaintdevice.h>
-+#include <tqpainter.h>
-+#include <tqpushbutton.h>
-+#include <tqradiobutton.h>
-+#include <tqrangecontrol.h>
-+#include <tqstring.h>
-+#include <tqtabbar.h>
-+#include <tqtabwidget.h>
-+#include <tqtoolbar.h>
-+#include <tqtoolbutton.h>
-+#include <tqwidget.h>
-+#include <tqprogressbar.h>
-+
-+/* ********* See hack on top of this file */
-+#undef Region
-+
-+
-+/* ********* TDE base headers */
-+#include <kaboutdata.h>
-+#include <kapplication.h>
-+#include <kcmdlineargs.h>
-+#include <kconfig.h>
-+#include <kdeversion.h>
-+#include <kemailsettings.h>
-+#include <kglobal.h>
-+#include <kglobalsettings.h>
-+#include <klocale.h>
-+#include <kmainwindow.h>
-+#include <kmenubar.h>
-+#include <kprotocolmanager.h>
-+#include <kstartupinfo.h>
-+#include <kstyle.h>
-+
-+
-+/* ********* TDE address book connectivity headers */
-+#include <kabc/addressbook.h>
-+#include <kabc/addressee.h>
-+#include <kabc/field.h>
-+#include <kabc/stdaddressbook.h>
-+
-+#endif
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/vcl/inc/unx/tde/tdedata.hxx b/vcl/inc/unx/tde/tdedata.hxx
-new file mode 100644
-index 0000000..fccdb49
---- /dev/null
-+++ b/vcl/inc/unx/tde/tdedata.hxx
-@@ -0,0 +1,114 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+#ifndef _VCL_TDEDATA_HXX
-+#define _VCL_TDEDATA_HXX
-+
-+#include <unx/saldisp.hxx>
-+#include <unx/saldata.hxx>
-+#include <unx/salframe.h>
-+
-+class TDEData : public X11SalData
-+{
-+public:
-+ TDEData( SalInstance *pInstance ) : X11SalData( SAL_DATA_TDE, pInstance ) {}
-+ virtual ~TDEData();
-+
-+ virtual void Init();
-+ virtual void initNWF();
-+ virtual void deInitNWF();
-+};
-+
-+class SalTDEDisplay : public SalX11Display
-+{
-+public:
-+ SalTDEDisplay( Display* pDisp );
-+ virtual ~SalTDEDisplay();
-+};
-+
-+class TDESalFrame : public X11SalFrame
-+{
-+ static const int nMaxGraphics = 2;
-+
-+ struct GraphicsHolder
-+ {
-+ X11SalGraphics* pGraphics;
-+ bool bInUse;
-+ GraphicsHolder()
-+ : pGraphics( NULL ),
-+ bInUse( false )
-+ {}
-+ ~GraphicsHolder();
-+ };
-+ GraphicsHolder m_aGraphics[ nMaxGraphics ];
-+
-+public:
-+ TDESalFrame( SalFrame* pParent, sal_uLong );
-+ virtual ~TDESalFrame();
-+
-+ virtual SalGraphics* GetGraphics();
-+ virtual void ReleaseGraphics( SalGraphics *pGraphics );
-+ virtual void updateGraphics( bool bClear );
-+ virtual void UpdateSettings( AllSettings& rSettings );
-+ virtual void Show( sal_Bool bVisible, sal_Bool bNoActivate );
-+};
-+
-+class TDESalInstance : public X11SalInstance
-+{
-+public:
-+ TDESalInstance( SalYieldMutex* pMutex )
-+ : X11SalInstance( pMutex ) {}
-+ virtual ~TDESalInstance() {}
-+ virtual SalFrame* CreateFrame( SalFrame* pParent, sal_uLong nStyle );
-+};
-+
-+class TDEXLib : public SalXLib
-+{
-+ bool m_bStartupDone;
-+ void* m_pApplication;
-+ char** m_pFreeCmdLineArgs;
-+ char** m_pAppCmdLineArgs;
-+ int m_nFakeCmdLineArgs;
-+public:
-+ TDEXLib() : SalXLib(),
-+ m_bStartupDone( false ),
-+ m_pApplication( NULL ),
-+ m_pFreeCmdLineArgs( NULL ),
-+ m_pAppCmdLineArgs( NULL ),
-+ m_nFakeCmdLineArgs( 0 )
-+ {}
-+ virtual ~TDEXLib();
-+ virtual void Init();
-+
-+ void doStartup();
-+};
-+
-+#endif // _VCL_TDEDATA_HXX
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/vcl/inc/vclpluginapi.h b/vcl/inc/vclpluginapi.h
-index 462943b..ae4123e 100644
---- a/vcl/inc/vclpluginapi.h
-+++ b/vcl/inc/vclpluginapi.h
-@@ -50,6 +50,12 @@
- #define VCLPLUG_KDE_PUBLIC SAL_DLLPUBLIC_IMPORT
- #endif
-
-+#if defined VCLPLUG_TDE_IMPLEMENTATION
-+#define VCLPLUG_TDE_PUBLIC SAL_DLLPUBLIC_EXPORT
-+#else
-+#define VCLPLUG_TDE_PUBLIC SAL_DLLPUBLIC_IMPORT
-+#endif
-+
- #if defined VCLPLUG_KDE4_IMPLEMENTATION
- #define VCLPLUG_KDE4_PUBLIC SAL_DLLPUBLIC_EXPORT
- #else
-diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
-index 1795d5a..62ebffd 100644
---- a/vcl/source/app/settings.cxx
-+++ b/vcl/source/app/settings.cxx
-@@ -831,6 +831,8 @@ sal_uLong StyleSettings::GetAutoSymbolsStyle() const
- nRet = STYLE_SYMBOLS_CRYSTAL;
- else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "kde4" ) )
- nRet = STYLE_SYMBOLS_OXYGEN;
-+ else if( rDesktopEnvironment.equalsIgnoreAsciiCaseAscii( "tde" ) )
-+ nRet = STYLE_SYMBOLS_CRYSTAL;
- }
-
- // falback to any existing style
-diff --git a/vcl/unx/generic/desktopdetect/desktopdetector.cxx b/vcl/unx/generic/desktopdetect/desktopdetector.cxx
-index 12ea4fc..2b9e2c9 100644
---- a/vcl/unx/generic/desktopdetect/desktopdetector.cxx
-+++ b/vcl/unx/generic/desktopdetect/desktopdetector.cxx
-@@ -210,6 +210,15 @@ static bool is_kde_desktop( Display* pDisplay )
- return false;
- }
-
-+static bool is_tde_desktop( Display* pDisplay )
-+{
-+ if ( NULL != getenv( "TDE_FULL_SESSION" ) )
-+ {
-+ return true;
-+ }
-+ return false;
-+}
-+
- static bool is_kde4_desktop( Display* pDisplay )
- {
- if ( NULL != getenv( "KDE_FULL_SESSION" ) )
-@@ -238,6 +247,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment()
- {
- OString aOver( pOverride );
-
-+ if ( aOver.equalsIgnoreAsciiCase( "tde" ) )
-+ return DESKTOP_TDE;
- if ( aOver.equalsIgnoreAsciiCase( "kde4" ) )
- return DESKTOP_KDE4;
- if ( aOver.equalsIgnoreAsciiCase( "gnome" ) )
-@@ -301,7 +312,9 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment()
-
- XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler );
-
-- if ( is_kde4_desktop( pDisplay ) )
-+ if ( is_tde_desktop( pDisplay ) )
-+ ret = DESKTOP_TDE;
-+ else if ( is_kde4_desktop( pDisplay ) )
- ret = DESKTOP_KDE4;
- else if ( is_gnome_desktop( pDisplay ) )
- ret = DESKTOP_GNOME;
-diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
-index 90f0d3e..875a9fb 100644
---- a/vcl/unx/generic/plugadapt/salplug.cxx
-+++ b/vcl/unx/generic/plugadapt/salplug.cxx
-@@ -148,7 +148,12 @@ static SalInstance* autodetect_plugin()
- {
- static const char* pKDEFallbackList[] =
- {
-- "kde4", "kde", "gtk3", "gtk", "gen", 0
-+ "kde4", "kde", "tde", "gtk3", "gtk", "gen", 0
-+ };
-+
-+ static const char* pTDEFallbackList[] =
-+ {
-+ "tde", "gtk3", "gtk", "gen", 0
- };
-
- static const char* pStandardFallbackList[] =
-@@ -177,6 +182,8 @@ static SalInstance* autodetect_plugin()
- }
- else if( desktop == DESKTOP_KDE4 )
- pList = pKDEFallbackList;
-+ else if( desktop == DESKTOP_TDE )
-+ pList = pTDEFallbackList;
-
- SalInstance* pInst = NULL;
- while( pList[nListEntry] && pInst == NULL )
-@@ -224,7 +231,7 @@ SalInstance *CreateSalInstance()
- pInst = autodetect_plugin();
-
- // fallback, try everything
-- const char* pPlugin[] = { "gtk3", "gtk", "kde4", "kde", "gen", 0 };
-+ const char* pPlugin[] = { "gtk3", "gtk", "kde4", "kde", "tde", "gen", 0 };
-
- for ( int i = 0; !pInst && pPlugin[ i ]; ++i )
- pInst = tryInstance( OUString::createFromAscii( pPlugin[ i ] ) );
-@@ -279,7 +286,7 @@ void SalAbort( const XubString& rErrorText, bool bDumpCore )
- _exit(1);
- }
-
--static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "KDE4" };
-+static const char * desktop_strings[] = { "none", "unknown", "GNOME", "KDE", "TDE", "KDE4" };
-
- const OUString& SalGetDesktopEnvironment()
- {
-diff --git a/vcl/unx/tde/salnativewidgets-tde.cxx b/vcl/unx/tde/salnativewidgets-tde.cxx
-new file mode 100644
-index 0000000..7c173cc
---- /dev/null
-+++ b/vcl/unx/tde/salnativewidgets-tde.cxx
-@@ -0,0 +1,2119 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_vcl.hxx"
-+
-+#define _SV_SALNATIVEWIDGETS_TDE_CXX
-+#include <shell/tde_headers.h>
-+
-+#include <unx/salunx.h>
-+#include <unx/saldata.hxx>
-+#include <unx/saldisp.hxx>
-+#include <unx/salgdi.h>
-+#include <unx/tde/tdedata.hxx>
-+
-+#include <vcl/settings.hxx>
-+#include <vcl/fontmanager.hxx>
-+#include <vcl/vclenum.hxx>
-+#include <rtl/ustrbuf.hxx>
-+
-+#define USHORT unsigned short
-+#define BYTE unsigned char
-+
-+using namespace ::rtl;
-+
-+/** Cached native widgets.
-+
-+ A class which caches and paints the native widgets.
-+*/
-+class WidgetPainter
-+{
-+ protected:
-+ /** Cached push button.
-+
-+ It is necessary for the TQStyle::drawControl(). The buttons are created
-+ on demand and they are still hidden (no TQWidget::show() is called).
-+ */
-+ TQPushButton *m_pPushButton;
-+
-+ /** Cached radio button.
-+
-+ @see m_pPushButton
-+ */
-+ TQRadioButton *m_pRadioButton;
-+
-+ /** Cached check box.
-+
-+ @see m_pPushButton
-+ */
-+ TQCheckBox *m_pCheckBox;
-+
-+ /** Cached combo box.
-+
-+ @see m_pPushButton
-+ */
-+ TQComboBox *m_pComboBox;
-+
-+ /** Cached editable combo box.
-+
-+ Needed, because some styles do not like dynamic changes
-+ (TQComboBox::setEditable()).
-+
-+ @see m_pPushButton
-+ */
-+ TQComboBox *m_pEditableComboBox;
-+
-+ /** Cached line edit box.
-+
-+ @see m_pPushButton
-+ */
-+ TQLineEdit *m_pLineEdit;
-+
-+ /** Cached spin box.
-+
-+ @see m_pPushButton
-+ */
-+ TQSpinWidget *m_pSpinWidget;
-+
-+ /** Cached spin box'es line edit.
-+
-+ @see m_pPushButton
-+ */
-+ TQLineEdit *m_pSpinEdit;
-+
-+ /** Cached tab.
-+
-+ Left, middle, right tab and a tab which is alone.
-+
-+ @see m_pPushButton
-+ */
-+ TQTab *m_pTabLeft, *m_pTabMiddle, *m_pTabRight, *m_pTabAlone;
-+
-+ /** Cached tab bar's parent widget.
-+
-+ Needed, because the Qt windows style checks for the availability
-+ of tab bar's parent. We cannot use m_pTabWidget, because
-+ TabWidget::setTabBar() and TabWidget::tabBar() methods are
-+ protected.
-+
-+ @see m_pPushButton, m_pTabWidget
-+ */
-+ TQWidget *m_pTabBarParent;
-+
-+ /** Cached tab bar widget.
-+
-+ @see m_pPushButton
-+ */
-+ TQTabBar *m_pTabBar;
-+
-+ /** Cached tab widget.
-+
-+ We need it to draw the tab page. It cannot be used to draw the
-+ tabs themselves, because the drawing has to be tweaked a little
-+ due to not enough information from VCL.
-+
-+ @see m_pPushButton, m_pTabBarParent
-+ */
-+ TQTabWidget *m_pTabWidget;
-+
-+ /** Cached list view.
-+
-+ @see m_pPushButton
-+ */
-+ TQListView *m_pListView;
-+
-+ /** Cached scroll bar.
-+
-+ @see m_pPushButton
-+ */
-+ TQScrollBar *m_pScrollBar;
-+
-+ /** Cached dock area. Needed for proper functionality of tool bars.
-+
-+ @see m_pPushButton
-+ */
-+ TQMainWindow *m_pMainWindow;
-+
-+ /** Cached tool bar.
-+
-+ @see m_pPushButton
-+ */
-+ TQToolBar *m_pToolBarHoriz, *m_pToolBarVert;
-+
-+ /** Cached tool button.
-+
-+ @see m_pPushButton
-+ */
-+ TQToolButton *m_pToolButton;
-+
-+ /** Cached menu bar.
-+
-+ @see m_pPushButton
-+ */
-+ TQMenuBar *m_pMenuBar;
-+
-+ /** Identifiers of menu bar items.
-+ */
-+ int m_nMenuBarEnabledItem, m_nMenuBarDisabledItem;
-+
-+ /** Cached popup menu.
-+
-+ @see m_pPushButton
-+ */
-+ TQPopupMenu *m_pPopupMenu;
-+
-+ /** Identifiers of popup menu items.
-+ */
-+ int m_nPopupMenuEnabledItem, m_nPopupMenuDisabledItem;
-+
-+ /** cached progress bar
-+ */
-+ TQProgressBar *m_pProgressBar;
-+
-+ // TODO other widgets
-+
-+ public:
-+ /** Implicit constructor.
-+
-+ It creates an empty WidgetPainter with all the cached widgets initialized
-+ to NULL. The widgets are created on demand and they are still hidden
-+ (no TQWidget::show()), because they are needed just as a parameter for
-+ TQStyle::drawControl().
-+
-+ @see m_pPushButton
-+ */
-+ WidgetPainter( void );
-+
-+ /** Destructor.
-+
-+ Destruct all the cached widgets.
-+ */
-+ virtual ~WidgetPainter( void );
-+
-+ /** Paints the specified widget to the X window.
-+
-+ Use X calls to bitblt (bit block transfer) the widget qWidget to
-+ the window specified by drawable with the style defined by nStyle.
-+
-+ @param qWidget
-+ A pointer to the cached widget.
-+
-+ @param nState
-+ The state of the control (focused, on/off, ...)
-+
-+ @param aValue
-+ The value (true/false, ...)
-+
-+ @param dpy
-+ The display to be used by the X calls.
-+
-+ @param drawable
-+ The destination X window.
-+
-+ @param gc
-+ The graphics context.
-+ */
-+ sal_Bool drawStyledWidget( TQWidget *pWidget,
-+ ControlState nState, const ImplControlValue& aValue,
-+ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-+ ControlPart nPart = PART_ENTIRE_CONTROL );
-+
-+ /** 'Get' method for push button.
-+
-+ The method returns the cached push button. It is constructed if it
-+ does not exist. It has NULL as a parent and it stays hidden, but it
-+ is necessary for the drawStyledWidget() method.
-+
-+ @return valid push button.
-+ */
-+ TQPushButton *pushButton( const Rectangle& rControlRegion, sal_Bool bDefault );
-+
-+ /** 'Get' method for radio button.
-+
-+ @see pushButton()
-+ */
-+ TQRadioButton *radioButton( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for check box.
-+
-+ @see pushButton()
-+ */
-+ TQCheckBox *checkBox( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for combo box.
-+
-+ It returns m_pComboBox or m_pEditableComboBox according to
-+ bEditable.
-+
-+ @see pushButton(), m_pEditableComboBox
-+ */
-+ TQComboBox *comboBox( const Rectangle& rControlRegion, sal_Bool bEditable );
-+
-+ /** 'Get' method for line edit box.
-+
-+ @see pushButton()
-+ */
-+ TQLineEdit *lineEdit( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for spin box.
-+
-+ @see pushButton()
-+ */
-+ TQSpinWidget *spinWidget( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for tab bar.
-+
-+ @see pushButton()
-+ */
-+ TQTabBar *tabBar( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for tab widget.
-+
-+ @see pushButton()
-+ */
-+ TQTabWidget *tabWidget( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for list view.
-+
-+ @see pushButton()
-+ */
-+ TQListView *listView( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for scroll bar.
-+
-+ @see pushButton()
-+ */
-+ TQScrollBar *scrollBar( const Rectangle& rControlRegion,
-+ sal_Bool bHorizontal, const ImplControlValue& aValue );
-+
-+ /** 'Get' method for tool bar.
-+
-+ @see pushButton()
-+ */
-+ TQToolBar *toolBar( const Rectangle& rControlRegion, sal_Bool bHorizontal );
-+
-+ /** 'Get' method for tool button.
-+
-+ @see pushButton()
-+ */
-+ TQToolButton *toolButton( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for menu bar.
-+
-+ @see pushButton()
-+ */
-+ TQMenuBar *menuBar( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for popup menu.
-+
-+ @see pushButton()
-+ */
-+ TQPopupMenu *popupMenu( const Rectangle& rControlRegion );
-+
-+ /** 'Get' method for progress bar
-+
-+ @see pushButton()
-+ */
-+ TQProgressBar *progressBar( const Rectangle& rControlRegion );
-+
-+ // TODO other widgets
-+
-+ protected:
-+ /** Style conversion function.
-+
-+ Conversion function between VCL ControlState together with
-+ ImplControlValue and Qt state flags.
-+
-+ @param nState
-+ State of the widget (default, focused, ...) as defined in Native
-+ Widget Framework.
-+
-+ @param aValue
-+ Value held by the widget (on, off, ...)
-+ */
-+ TQStyle::SFlags vclStateValue2SFlags( ControlState nState, const ImplControlValue& aValue );
-+
-+ public:
-+ /** Convert VCL Rectangle to TQRect.
-+
-+ @param rControlRegion
-+ The region to convert.
-+
-+ @return
-+ The bounding box of the region.
-+ */
-+ static TQRect region2TQRect( const Rectangle& rControlRegion );
-+};
-+
-+WidgetPainter::WidgetPainter( void )
-+ : m_pPushButton( NULL ),
-+ m_pRadioButton( NULL ),
-+ m_pCheckBox( NULL ),
-+ m_pComboBox( NULL ),
-+ m_pEditableComboBox( NULL ),
-+ m_pLineEdit( NULL ),
-+ m_pSpinWidget( NULL ),
-+ m_pSpinEdit( NULL ),
-+ m_pTabLeft( NULL ),
-+ m_pTabMiddle( NULL ),
-+ m_pTabRight( NULL ),
-+ m_pTabAlone( NULL ),
-+ m_pTabBarParent( NULL ),
-+ m_pTabBar( NULL ),
-+ m_pTabWidget( NULL ),
-+ m_pListView( NULL ),
-+ m_pScrollBar( NULL ),
-+ m_pMainWindow( NULL ),
-+ m_pToolBarHoriz( NULL ),
-+ m_pToolBarVert( NULL ),
-+ m_pToolButton( NULL ),
-+ m_pMenuBar( NULL ),
-+ m_pPopupMenu( NULL ),
-+ m_pProgressBar( NULL )
-+{
-+}
-+
-+WidgetPainter::~WidgetPainter( void )
-+{
-+ delete m_pPushButton, m_pPushButton = NULL;
-+ delete m_pRadioButton, m_pRadioButton = NULL;
-+ delete m_pCheckBox, m_pCheckBox = NULL;
-+ delete m_pComboBox, m_pComboBox = NULL;
-+ delete m_pEditableComboBox, m_pEditableComboBox = NULL;
-+ delete m_pLineEdit, m_pLineEdit = NULL;
-+ delete m_pSpinWidget, m_pSpinWidget = NULL;
-+ m_pSpinEdit = NULL; // Deleted in m_pSpinWidget's destructor
-+ delete m_pTabAlone, m_pTabAlone = NULL;
-+ delete m_pTabBarParent, m_pTabBarParent = NULL;
-+ m_pTabBar = NULL; // Deleted in m_pTabBarParent's destructor
-+ m_pTabLeft = NULL;
-+ m_pTabMiddle = NULL;
-+ m_pTabRight = NULL;
-+ delete m_pTabWidget, m_pTabWidget = NULL;
-+ delete m_pListView, m_pListView = NULL;
-+ delete m_pScrollBar, m_pScrollBar = NULL;
-+ delete m_pToolBarHoriz, m_pToolBarHoriz = NULL;
-+ delete m_pToolBarVert, m_pToolBarVert = NULL;
-+ delete m_pMainWindow, m_pMainWindow = NULL;
-+ delete m_pToolButton, m_pToolButton = NULL;
-+ delete m_pMenuBar, m_pMenuBar = NULL;
-+ delete m_pPopupMenu, m_pPopupMenu = NULL;
-+ delete m_pProgressBar, m_pProgressBar = NULL;
-+}
-+
-+sal_Bool WidgetPainter::drawStyledWidget( TQWidget *pWidget,
-+ ControlState nState, const ImplControlValue& aValue,
-+ Display *dpy, XLIB_Window drawable, int nScreen, int nDepth, GC gc,
-+ ControlPart nPart )
-+{
-+ if ( !pWidget )
-+ return FALSE;
-+
-+ // Normalize the widget
-+ TQPoint qWidgetPos( pWidget->pos() );
-+ pWidget->move( 0, 0 );
-+
-+ // Enable/disable the widget
-+ pWidget->setEnabled( nState & CTRL_STATE_ENABLED );
-+
-+ // Create pixmap to paint to
-+ TQPixmap qPixmap( pWidget->width(), pWidget->height() );
-+ TQPainter qPainter( &qPixmap );
-+ TQRect qRect( 0, 0, pWidget->width(), pWidget->height() );
-+
-+ // Use the background of the widget
-+ qPixmap.fill( pWidget, TQPoint(0, 0) );
-+
-+ // Convert the flags
-+ TQStyle::SFlags nStyle = vclStateValue2SFlags( nState, aValue );
-+
-+ // Store the widget class
-+ const char *pClassName = pWidget->className();
-+
-+ // Draw the widget to the pixmap
-+ if ( strcmp( TQPUSHBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ // Workaround for the Platinum style.
-+ // Platinum takes the state directly from the widget, not from SFlags.
-+ TQPushButton *pPushButton = static_cast<TQPushButton *>( pWidget->qt_cast( TQPUSHBUTTON_OBJECT_NAME_STRING ) );
-+ if ( pPushButton )
-+ {
-+ pPushButton->setDown ( nStyle & TQStyle::Style_Down );
-+ pPushButton->setOn ( nStyle & TQStyle::Style_On );
-+ pPushButton->setEnabled( nStyle & TQStyle::Style_Enabled );
-+ }
-+
-+ kapp->style().drawControl( TQStyle::CE_PushButton,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else if ( strcmp( TQRADIOBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ // Bitblt from the screen, because the radio buttons are usually not
-+ // rectangular, and there could be a bitmap under them
-+ GC aTmpGC = XCreateGC( dpy, qPixmap.handle(), 0, NULL );
-+ X11SalGraphics::CopyScreenArea( dpy,
-+ drawable, nScreen, nDepth,
-+ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-+ aTmpGC,
-+ qWidgetPos.x(), qWidgetPos.y(), qRect.width(), qRect.height(),
-+ 0, 0 );
-+ XFreeGC( dpy, aTmpGC );
-+
-+ kapp->style().drawControl( TQStyle::CE_RadioButton,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else if ( strcmp( TQCHECKBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ kapp->style().drawControl( TQStyle::CE_CheckBox,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else if ( strcmp( TQCOMBOBOX_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ kapp->style().drawComplexControl( TQStyle::CC_ComboBox,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+
-+ // Editable combo box uses the background of the associated edit box
-+ TQComboBox *pComboBox = static_cast<TQComboBox *>( pWidget->qt_cast( TQCOMBOBOX_OBJECT_NAME_STRING ) );
-+ if ( pComboBox && pComboBox->editable() && pComboBox->lineEdit() )
-+ {
-+ TQColorGroup::ColorRole eColorRole = ( pComboBox->isEnabled() )?
-+ TQColorGroup::Base: TQColorGroup::Background;
-+ qPainter.fillRect(
-+ kapp->style().querySubControlMetrics( TQStyle::CC_ComboBox,
-+ pComboBox, TQStyle::SC_ComboBoxEditField ),
-+ pComboBox->lineEdit()->colorGroup().brush( eColorRole ) );
-+ }
-+ }
-+ else if ( strcmp( TQLINEEDIT_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ kapp->style().drawPrimitive( TQStyle::PE_PanelLineEdit,
-+ &qPainter, qRect,
-+ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-+ }
-+ else if ( strcmp( TQSPINWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ const SpinbuttonValue *pValue = static_cast<const SpinbuttonValue *> ( &aValue );
-+
-+ // Is any of the buttons pressed?
-+ TQStyle::SCFlags eActive = TQStyle::SC_None;
-+ if ( pValue )
-+ {
-+ if ( pValue->mnUpperState & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_SpinWidgetUp;
-+ else if ( pValue->mnLowerState & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_SpinWidgetDown;
-+
-+ // Update the enable/disable state of the widget
-+ if ( ( nState & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnUpperState & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnLowerState & CTRL_STATE_ENABLED ) )
-+ {
-+ pWidget->setEnabled( true );
-+ nStyle |= TQStyle::Style_Enabled;
-+ }
-+ else
-+ pWidget->setEnabled( false );
-+
-+ // Mouse-over effect
-+ if ( (pValue->mnUpperState & CTRL_STATE_ROLLOVER) ||
-+ (pValue->mnLowerState & CTRL_STATE_ROLLOVER) )
-+ nStyle |= TQStyle::Style_MouseOver;
-+ }
-+
-+ // Spin widget uses the background of the associated edit box
-+ TQSpinWidget *pSpinWidget = static_cast<TQSpinWidget *>( pWidget->qt_cast( TQSPINWIDGET_OBJECT_NAME_STRING ) );
-+ if ( pSpinWidget && pSpinWidget->editWidget() )
-+ {
-+ TQColorGroup::ColorRole eColorRole = ( pSpinWidget->isEnabled() )?
-+ TQColorGroup::Base: TQColorGroup::Background;
-+ qPainter.fillRect(
-+ kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-+ pSpinWidget, TQStyle::SC_SpinWidgetEditField ),
-+ pSpinWidget->editWidget()->colorGroup().brush( eColorRole ) );
-+ }
-+
-+ // Adjust the frame (needed for Motif Plus style)
-+ TQRect qFrameRect = kapp->style().querySubControlMetrics( TQStyle::CC_SpinWidget,
-+ pWidget, TQStyle::SC_SpinWidgetFrame );
-+
-+ kapp->style().drawComplexControl( TQStyle::CC_SpinWidget,
-+ &qPainter, pWidget, qFrameRect,
-+ pWidget->colorGroup(), nStyle,
-+ TQStyle::SC_All, eActive );
-+ }
-+ else if ( strcmp( TQTABBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ const TabitemValue *pValue = static_cast<const TabitemValue *> ( &aValue );
-+
-+ TQTab *pTab = NULL;
-+ if ( pValue )
-+ {
-+ if ( ( pValue->isFirst() || pValue->isLeftAligned() ) && ( pValue->isLast() || pValue->isRightAligned() ) )
-+ pTab = m_pTabAlone;
-+ else if ( pValue->isFirst() || pValue->isLeftAligned() )
-+ pTab = m_pTabLeft;
-+ else if ( pValue->isLast() || pValue->isRightAligned() )
-+ pTab = m_pTabRight;
-+ else
-+ pTab = m_pTabMiddle;
-+ }
-+ if ( !pTab )
-+ return FALSE;
-+
-+ pTab->setRect( qRect );
-+
-+ kapp->style().drawControl( TQStyle::CE_TabBarTab,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle,
-+ TQStyleOption( pTab ) );
-+ }
-+ else if ( strcmp( TQTABWIDGET_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ kapp->style().drawPrimitive( TQStyle::PE_PanelTabWidget,
-+ &qPainter, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else if ( strcmp( TQLISTVIEW_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ kapp->style().drawPrimitive( TQStyle::PE_Panel,
-+ &qPainter, qRect,
-+ pWidget->colorGroup(), nStyle | TQStyle::Style_Sunken );
-+ }
-+ else if ( strcmp( TQSCROLLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-+
-+ TQStyle::SCFlags eActive = TQStyle::SC_None;
-+ if ( pValue )
-+ {
-+ // Workaround for Style_MouseOver-aware themes.
-+ // Quite ugly, but I do not know about a better solution.
-+ const char *pStyleName = kapp->style().className();
-+ if ( strcmp( "QMotifPlusStyle", pStyleName ) == 0 )
-+ {
-+ nStyle |= TQStyle::Style_MouseOver;
-+ if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-+ eActive = TQStyle::SC_ScrollBarSlider;
-+ }
-+ else if ( strcmp( "QSGIStyle", pStyleName ) == 0 )
-+ {
-+ nStyle |= TQStyle::Style_MouseOver;
-+ if ( pValue->mnButton1State & CTRL_STATE_ROLLOVER )
-+ eActive = TQStyle::SC_ScrollBarSubLine;
-+ else if ( pValue->mnButton2State & CTRL_STATE_ROLLOVER )
-+ eActive = TQStyle::SC_ScrollBarAddLine;
-+ else if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
-+ eActive = TQStyle::SC_ScrollBarSlider;
-+ }
-+
-+ if ( pValue->mnButton1State & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_ScrollBarSubLine;
-+ else if ( pValue->mnButton2State & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_ScrollBarAddLine;
-+ else if ( pValue->mnThumbState & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_ScrollBarSlider;
-+ else if ( pValue->mnPage1State & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_ScrollBarSubPage;
-+ else if ( pValue->mnPage2State & CTRL_STATE_PRESSED )
-+ eActive = TQStyle::SC_ScrollBarAddPage;
-+
-+ // Update the enable/disable state of the widget
-+ if ( ( nState & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnButton1State & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnButton2State & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnThumbState & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnPage1State & CTRL_STATE_ENABLED ) ||
-+ ( pValue->mnPage2State & CTRL_STATE_ENABLED ) )
-+ {
-+ pWidget->setEnabled( true );
-+ nStyle |= TQStyle::Style_Enabled;
-+ }
-+ else
-+ pWidget->setEnabled( false );
-+ }
-+
-+ // Is it a horizontal scroll bar?
-+ TQScrollBar *pScrollBar = static_cast<TQScrollBar *> ( pWidget->qt_cast( TQSCROLLBAR_OBJECT_NAME_STRING ) );
-+ TQStyle::StyleFlags eHoriz = TQStyle::Style_Default;
-+ if ( pScrollBar && pScrollBar->orientation() == Qt::Horizontal )
-+ eHoriz = TQStyle::Style_Horizontal;
-+
-+ kapp->style().drawComplexControl( TQStyle::CC_ScrollBar,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle | eHoriz,
-+ TQStyle::SC_All, eActive );
-+ }
-+ else if ( strcmp( TQTOOLBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ TQToolBar *pToolBar = static_cast< TQToolBar * >( pWidget->qt_cast( TQTOOLBAR_OBJECT_NAME_STRING ) );
-+ bool bIsHorizontal = false;
-+ if ( pToolBar && pToolBar->orientation() == Qt::Horizontal )
-+ {
-+ nStyle |= TQStyle::Style_Horizontal;
-+ bIsHorizontal = true;
-+ }
-+
-+ kapp->style().drawControl( TQStyle::CE_DockWindowEmptyArea,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+
-+ kapp->style().drawPrimitive( TQStyle::PE_PanelDockWindow,
-+ &qPainter, qRect, pWidget->colorGroup(), nStyle );
-+
-+ if ( nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT )
-+ {
-+ const ToolbarValue *pValue = static_cast< const ToolbarValue * >( &aValue );
-+
-+ TQRect qThumbRect = region2TQRect( pValue->maGripRect );
-+ qThumbRect.moveBy( -qWidgetPos.x(), -qWidgetPos.y() );
-+ if ( bIsHorizontal )
-+ qThumbRect.addCoords( 0, 2, 0, -3 ); // make the thumb a bit nicer
-+ else
-+ qThumbRect.addCoords( 2, 0, -3, 0 ); // make the thumb a bit nicer
-+
-+ if ( kapp->style().inherits( "HighColorStyle" ) ||
-+ kapp->style().inherits( "HighContrastStyle" ) ||
-+ kapp->style().inherits( "KeramikStyle" ) ||
-+ kapp->style().inherits( "KThemeStyle" ) ||
-+ kapp->style().inherits( "ThinKeramikStyle" ) )
-+ {
-+ // Workaround for the workaround in KStyle::drawPrimitive()
-+ KStyle *pStyle = static_cast< KStyle * >( &kapp->style() );
-+ pStyle->drawKStylePrimitive( KStyle::KPE_ToolBarHandle,
-+ &qPainter, pToolBar, qThumbRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else
-+ kapp->style().drawPrimitive( TQStyle::PE_DockWindowHandle,
-+ &qPainter, qThumbRect, pWidget->colorGroup(), nStyle );
-+ }
-+ }
-+ else if ( strcmp( TQTOOLBUTTON_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ if( (nStyle & TQStyle::Style_MouseOver) )
-+ nStyle &= ~TQStyle::Style_Off;
-+ kapp->style().drawComplexControl( TQStyle::CC_ToolButton,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle,
-+ TQStyle::SC_ToolButton );
-+ }
-+ else if ( strcmp( TQMENUBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ if ( nPart == PART_ENTIRE_CONTROL )
-+ {
-+ kapp->style().drawControl( TQStyle::CE_MenuBarEmptyArea,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else if ( nPart == PART_MENU_ITEM )
-+ {
-+ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nMenuBarEnabledItem: m_nMenuBarDisabledItem;
-+ TQMenuItem *pMenuItem = static_cast<TQMenuBar*>( pWidget )->findItem( nMenuItem );
-+
-+ if ( nStyle & TQStyle::Style_Selected )
-+ nStyle |= TQStyle::Style_Active | TQStyle::Style_Down | TQStyle::Style_HasFocus;
-+
-+ kapp->style().drawControl( TQStyle::CE_MenuBarItem,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle,
-+ TQStyleOption( pMenuItem ) );
-+ }
-+ }
-+ else if ( strcmp( TQPOPUPMENU_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ int nMenuItem = ( nStyle & TQStyle::Style_Enabled )? m_nPopupMenuEnabledItem: m_nPopupMenuDisabledItem;
-+ TQMenuItem *pMenuItem = static_cast<TQPopupMenu*>( pWidget )->findItem( nMenuItem );
-+
-+ if ( nStyle & TQStyle::Style_Selected )
-+ nStyle |= TQStyle::Style_Active;
-+
-+ kapp->style().drawControl( TQStyle::CE_PopupMenuItem,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle,
-+ TQStyleOption( pMenuItem, 0, 0 ) );
-+ }
-+ else if ( strcmp( TQPROGRESSBAR_OBJECT_NAME_STRING, pClassName ) == 0 )
-+ {
-+ long nProgressWidth = aValue.getNumericVal();
-+ TQProgressBar* pProgress = static_cast<TQProgressBar*>(pWidget);
-+ pProgress->setProgress( nProgressWidth, qRect.width() );
-+
-+ kapp->style().drawControl( TQStyle::CE_ProgressBarGroove,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ kapp->style().drawControl( TQStyle::CE_ProgressBarContents,
-+ &qPainter, pWidget, qRect,
-+ pWidget->colorGroup(), nStyle );
-+ }
-+ else
-+ return FALSE;
-+
-+ // Bitblt it to the screen
-+ X11SalGraphics::CopyScreenArea( dpy,
-+ qPixmap.handle(), qPixmap.x11Screen(), qPixmap.x11Depth(),
-+ drawable, nScreen, nDepth,
-+ gc,
-+ 0, 0, qRect.width(), qRect.height(),
-+ qWidgetPos.x(), qWidgetPos.y() );
-+
-+ // Restore widget's position
-+ pWidget->move( qWidgetPos );
-+
-+ return TRUE;
-+}
-+
-+TQPushButton *WidgetPainter::pushButton( const Rectangle& rControlRegion,
-+ sal_Bool bDefault )
-+{
-+ if ( !m_pPushButton )
-+ m_pPushButton = new TQPushButton( NULL, "push_button" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ // Workaround for broken styles which do not add
-+ // TQStyle::PM_ButtonDefaultIndicator to the size of the default button
-+ // (for example Keramik)
-+ // FIXME Fix Keramik style to be consistant with Qt built-in styles. Aargh!
-+ if ( bDefault )
-+ {
-+ TQSize qContentsSize( 50, 50 );
-+ m_pPushButton->setDefault( false );
-+ TQSize qNormalSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-+ m_pPushButton, qContentsSize );
-+ m_pPushButton->setDefault( true );
-+ TQSize qDefSize = kapp->style().sizeFromContents( TQStyle::CT_PushButton,
-+ m_pPushButton, qContentsSize );
-+
-+ int nIndicatorSize = kapp->style().pixelMetric(
-+ TQStyle::PM_ButtonDefaultIndicator, m_pPushButton );
-+ if ( qNormalSize.width() == qDefSize.width() )
-+ qRect.addCoords( nIndicatorSize, 0, -nIndicatorSize, 0 );
-+ if ( qNormalSize.height() == qDefSize.height() )
-+ qRect.addCoords( 0, nIndicatorSize, 0, -nIndicatorSize );
-+ }
-+
-+ m_pPushButton->move( qRect.topLeft() );
-+ m_pPushButton->resize( qRect.size() );
-+ m_pPushButton->setDefault( bDefault );
-+
-+ return m_pPushButton;
-+}
-+
-+TQRadioButton *WidgetPainter::radioButton( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pRadioButton )
-+ m_pRadioButton = new TQRadioButton( NULL, "radio_button" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ // Workaround for broken themes which do not honor the given size.
-+ // Quite ugly, but I do not know about a better solution.
-+ const char *pStyleName = kapp->style().className();
-+ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-+ {
-+ TQRect qOldRect( qRect );
-+
-+ qRect.setWidth( kapp->style().pixelMetric(
-+ TQStyle::PM_ExclusiveIndicatorWidth, m_pRadioButton ) );
-+ qRect.setHeight( kapp->style().pixelMetric(
-+ TQStyle::PM_ExclusiveIndicatorHeight, m_pRadioButton ) );
-+
-+ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-+ ( qOldRect.height() - qRect.height() ) / 2 );
-+ }
-+
-+ m_pRadioButton->move( qRect.topLeft() );
-+ m_pRadioButton->resize( qRect.size() );
-+
-+ return m_pRadioButton;
-+}
-+
-+TQCheckBox *WidgetPainter::checkBox( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pCheckBox )
-+ m_pCheckBox = new TQCheckBox( NULL, "check_box" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ // Workaround for broken themes which do not honor the given size.
-+ // Quite ugly, but I do not know about a better solution.
-+ const char *pStyleName = kapp->style().className();
-+ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
-+ {
-+ TQRect qOldRect( qRect );
-+
-+ qRect.setWidth( kapp->style().pixelMetric(
-+ TQStyle::PM_IndicatorWidth, m_pCheckBox ) );
-+ qRect.setHeight( kapp->style().pixelMetric(
-+ TQStyle::PM_IndicatorHeight, m_pCheckBox ) );
-+
-+ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
-+ ( qOldRect.height() - qRect.height() ) / 2 );
-+ }
-+
-+ m_pCheckBox->move( qRect.topLeft() );
-+ m_pCheckBox->resize( qRect.size() );
-+
-+ return m_pCheckBox;
-+}
-+
-+TQComboBox *WidgetPainter::comboBox( const Rectangle& rControlRegion,
-+ sal_Bool bEditable )
-+{
-+ TQComboBox *pComboBox = NULL;
-+ if ( bEditable )
-+ {
-+ if ( !m_pEditableComboBox )
-+ m_pEditableComboBox = new TQComboBox( true, NULL, "combo_box_edit" );
-+ pComboBox = m_pEditableComboBox;
-+ }
-+ else
-+ {
-+ if ( !m_pComboBox )
-+ m_pComboBox = new TQComboBox( false, NULL, "combo_box" );
-+ pComboBox = m_pComboBox;
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ pComboBox->move( qRect.topLeft() );
-+ pComboBox->resize( qRect.size() );
-+
-+ return pComboBox;
-+}
-+
-+TQLineEdit *WidgetPainter::lineEdit( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pLineEdit )
-+ m_pLineEdit = new TQLineEdit( NULL, "line_edit" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pLineEdit->move( qRect.topLeft() );
-+ m_pLineEdit->resize( qRect.size() );
-+
-+ return m_pLineEdit;
-+}
-+
-+TQSpinWidget *WidgetPainter::spinWidget( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pSpinWidget )
-+ {
-+ m_pSpinWidget = new TQSpinWidget( NULL, "spin_widget" );
-+
-+ m_pSpinEdit = new TQLineEdit( NULL, "line_edit_spin" );
-+ m_pSpinWidget->setEditWidget( m_pSpinEdit );
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pSpinWidget->move( qRect.topLeft() );
-+ m_pSpinWidget->resize( qRect.size() );
-+ m_pSpinWidget->arrange();
-+
-+ return m_pSpinWidget;
-+}
-+
-+TQTabBar *WidgetPainter::tabBar( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pTabBar )
-+ {
-+ if ( !m_pTabBarParent )
-+ m_pTabBarParent = new TQWidget( NULL, "tab_bar_parent" );
-+
-+ m_pTabBar = new TQTabBar( m_pTabBarParent, "tab_bar" );
-+
-+ m_pTabLeft = new TQTab();
-+ m_pTabMiddle = new TQTab();
-+ m_pTabRight = new TQTab();
-+ m_pTabAlone = new TQTab();
-+
-+ m_pTabBar->addTab( m_pTabLeft );
-+ m_pTabBar->addTab( m_pTabMiddle );
-+ m_pTabBar->addTab( m_pTabRight );
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pTabBar->move( qRect.topLeft() );
-+ m_pTabBar->resize( qRect.size() );
-+
-+ m_pTabBar->setShape( TQTabBar::RoundedAbove );
-+
-+ return m_pTabBar;
-+}
-+
-+TQTabWidget *WidgetPainter::tabWidget( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pTabWidget )
-+ m_pTabWidget = new TQTabWidget( NULL, "tab_widget" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+ --qRect.rTop();
-+
-+ m_pTabWidget->move( qRect.topLeft() );
-+ m_pTabWidget->resize( qRect.size() );
-+
-+ return m_pTabWidget;
-+}
-+
-+TQListView *WidgetPainter::listView( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pListView )
-+ m_pListView = new TQListView( NULL, "list_view" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pListView->move( qRect.topLeft() );
-+ m_pListView->resize( qRect.size() );
-+
-+ return m_pListView;
-+}
-+
-+TQScrollBar *WidgetPainter::scrollBar( const Rectangle& rControlRegion,
-+ sal_Bool bHorizontal, const ImplControlValue& aValue )
-+{
-+ if ( !m_pScrollBar )
-+ {
-+ m_pScrollBar = new TQScrollBar( NULL, "scroll_bar" );
-+ m_pScrollBar->setTracking( false );
-+ m_pScrollBar->setLineStep( 1 );
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pScrollBar->move( qRect.topLeft() );
-+ m_pScrollBar->resize( qRect.size() );
-+ m_pScrollBar->setOrientation( bHorizontal? Qt::Horizontal: Qt::Vertical );
-+
-+ const ScrollbarValue *pValue = static_cast<const ScrollbarValue *> ( &aValue );
-+ if ( pValue )
-+ {
-+ m_pScrollBar->setMinValue( pValue->mnMin );
-+ m_pScrollBar->setMaxValue( pValue->mnMax - pValue->mnVisibleSize );
-+ m_pScrollBar->setValue( pValue->mnCur );
-+ m_pScrollBar->setPageStep( pValue->mnVisibleSize );
-+ }
-+
-+ return m_pScrollBar;
-+}
-+
-+TQToolBar *WidgetPainter::toolBar( const Rectangle& rControlRegion, sal_Bool bHorizontal )
-+{
-+ if ( !m_pMainWindow )
-+ m_pMainWindow = new TQMainWindow( NULL, "main_window" );
-+
-+ TQToolBar *pToolBar;
-+ if ( bHorizontal )
-+ {
-+ if ( !m_pToolBarHoriz )
-+ {
-+ m_pToolBarHoriz = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-+ m_pMainWindow->moveDockWindow( m_pToolBarHoriz, Qt::DockTop );
-+ }
-+ pToolBar = m_pToolBarHoriz;
-+ }
-+ else
-+ {
-+ if ( !m_pToolBarVert )
-+ {
-+ m_pToolBarVert = new TQToolBar( m_pMainWindow, "tool_bar_horiz" );
-+ m_pMainWindow->moveDockWindow( m_pToolBarVert, Qt::DockLeft );
-+ }
-+ pToolBar = m_pToolBarVert;
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ pToolBar->move( qRect.topLeft() );
-+ pToolBar->resize( qRect.size() );
-+
-+ return pToolBar;
-+}
-+
-+TQToolButton *WidgetPainter::toolButton( const Rectangle& rControlRegion)
-+{
-+ if ( !m_pToolButton )
-+ m_pToolButton = new TQToolButton( NULL, "tool_button" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pToolButton->move( qRect.topLeft() );
-+ m_pToolButton->resize( qRect.size() );
-+
-+ return m_pToolButton;
-+}
-+
-+TQMenuBar *WidgetPainter::menuBar( const Rectangle& rControlRegion)
-+{
-+ if ( !m_pMenuBar )
-+ {
-+ m_pMenuBar = new TQMenuBar( NULL, "menu_bar" );
-+
-+ m_nMenuBarEnabledItem = m_pMenuBar->insertItem( "" );
-+ m_nMenuBarDisabledItem = m_pMenuBar->insertItem( "" );
-+
-+ m_pMenuBar->setItemEnabled( m_nMenuBarEnabledItem, true );
-+ m_pMenuBar->setItemEnabled( m_nMenuBarDisabledItem, false );
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pMenuBar->move( qRect.topLeft() );
-+ m_pMenuBar->resize( qRect.size() );
-+
-+ return m_pMenuBar;
-+}
-+
-+TQPopupMenu *WidgetPainter::popupMenu( const Rectangle& rControlRegion)
-+{
-+ if ( !m_pPopupMenu )
-+ {
-+ m_pPopupMenu = new TQPopupMenu( NULL, "popup_menu" );
-+
-+ m_nPopupMenuEnabledItem = m_pPopupMenu->insertItem( "" );
-+ m_nPopupMenuDisabledItem = m_pPopupMenu->insertItem( "" );
-+
-+ m_pPopupMenu->setItemEnabled( m_nPopupMenuEnabledItem, true );
-+ m_pPopupMenu->setItemEnabled( m_nPopupMenuDisabledItem, false );
-+ }
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pPopupMenu->move( qRect.topLeft() );
-+ m_pPopupMenu->resize( qRect.size() );
-+
-+ return m_pPopupMenu;
-+}
-+
-+TQProgressBar *WidgetPainter::progressBar( const Rectangle& rControlRegion )
-+{
-+ if ( !m_pProgressBar )
-+ m_pProgressBar = new TQProgressBar( NULL, "progress_bar" );
-+
-+ TQRect qRect = region2TQRect( rControlRegion );
-+
-+ m_pProgressBar->move( qRect.topLeft() );
-+ m_pProgressBar->resize( qRect.size() );
-+
-+ return m_pProgressBar;
-+}
-+
-+TQStyle::SFlags WidgetPainter::vclStateValue2SFlags( ControlState nState,
-+ const ImplControlValue& aValue )
-+{
-+ TQStyle::SFlags nStyle =
-+ ( (nState & CTRL_STATE_DEFAULT)? TQStyle::Style_ButtonDefault: TQStyle::Style_Default ) |
-+ ( (nState & CTRL_STATE_ENABLED)? TQStyle::Style_Enabled: TQStyle::Style_Default ) |
-+ ( (nState & CTRL_STATE_FOCUSED)? TQStyle::Style_HasFocus: TQStyle::Style_Default ) |
-+ ( (nState & CTRL_STATE_PRESSED)? TQStyle::Style_Down: TQStyle::Style_Raised ) |
-+ ( (nState & CTRL_STATE_SELECTED)? TQStyle::Style_Selected : TQStyle::Style_Default ) |
-+ ( (nState & CTRL_STATE_ROLLOVER)? TQStyle::Style_MouseOver: TQStyle::Style_Default );
-+ //TODO ( (nState & CTRL_STATE_HIDDEN)? TQStyle::Style_: TQStyle::Style_Default ) |
-+
-+ switch ( aValue.getTristateVal() )
-+ {
-+ case BUTTONVALUE_ON: nStyle |= TQStyle::Style_On; break;
-+ case BUTTONVALUE_OFF: nStyle |= TQStyle::Style_Off; break;
-+ case BUTTONVALUE_MIXED: nStyle |= TQStyle::Style_NoChange; break;
-+ default: break;
-+ }
-+
-+ return nStyle;
-+}
-+
-+TQRect WidgetPainter::region2TQRect( const Rectangle& rControlRegion )
-+{
-+ return TQRect( TQPoint( rControlRegion.Left(), rControlRegion.Top() ),
-+ TQPoint( rControlRegion.Right(), rControlRegion.Bottom() ) );
-+}
-+
-+/** Instance of WidgetPainter.
-+
-+ It is used to paint the widgets requested by NWF.
-+*/
-+static WidgetPainter *pWidgetPainter;
-+
-+class TDESalGraphics : public X11SalGraphics
-+{
-+ public:
-+ TDESalGraphics() {}
-+ virtual ~TDESalGraphics() {}
-+ virtual sal_Bool IsNativeControlSupported( ControlType nType, ControlPart nPart );
-+ virtual sal_Bool hitTestNativeControl( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, const Point& aPos,
-+ sal_Bool& rIsInside );
-+ virtual sal_Bool drawNativeControl( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, ControlState nState,
-+ const ImplControlValue& aValue,
-+ const OUString& aCaption );
-+ virtual sal_Bool drawNativeControlText( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, ControlState nState,
-+ const ImplControlValue& aValue,
-+ const OUString& aCaption );
-+ virtual sal_Bool getNativeControlRegion( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, ControlState nState,
-+ const ImplControlValue& aValue,
-+ const OUString& aCaption,
-+ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion );
-+};
-+
-+/** What widgets can be drawn the native way.
-+
-+ @param nType
-+ Type of the widget.
-+
-+ @param nPart
-+ Specification of the widget's part if it consists of more than one.
-+
-+ @return TRUE if the platform supports native drawing of the widget nType
-+ defined by nPart.
-+*/
-+sal_Bool TDESalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart )
-+{
-+ return
-+ ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-+ ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
-+ ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) ) ||
-+ ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-+ ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-+ ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_WINDOW || nPart == HAS_BACKGROUND_TEXTURE ) ) ||
-+ ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
-+ // no CTRL_SPINBUTTONS for TDE
-+ ( (nType == CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) ) ||
-+ ( (nType == CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) ) ||
-+ // no CTRL_TAB_BODY for TDE
-+ ( (nType == CTRL_SCROLLBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) ) ||
-+ ( (nType == CTRL_SCROLLBAR) && (nPart == HAS_THREE_BUTTONS) ) || // TODO small optimization is possible here: return this only if the style really has 3 buttons
-+ // CTRL_GROUPBOX not supported
-+ // CTRL_FIXEDLINE not supported
-+ // CTRL_FIXEDBORDER not supported
-+ ( (nType == CTRL_TOOLBAR) && (nPart == PART_ENTIRE_CONTROL ||
-+ nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT ||
-+ nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT ||
-+ nPart == PART_BUTTON) ) ||
-+ ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-+ ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) ) ||
-+ ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-+ ;
-+}
-+
-+
-+/** Test whether the position is in the native widget.
-+
-+ If the return value is TRUE, bIsInside contains information whether
-+ aPos was or was not inside the native widget specified by the
-+ nType/nPart combination.
-+*/
-+sal_Bool TDESalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, const Point& rPos,
-+ sal_Bool& rIsInside )
-+{
-+ if ( nType == CTRL_SCROLLBAR )
-+ {
-+ // make position relative to rControlRegion
-+ Point aPos = rPos - rControlRegion.TopLeft();
-+ rIsInside = FALSE;
-+
-+ sal_Bool bHorizontal = ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT );
-+
-+ TQScrollBar *pScrollBar = pWidgetPainter->scrollBar( rControlRegion,
-+ bHorizontal, ImplControlValue() );
-+ TQRect qRectSubLine = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubLine );
-+ TQRect qRectAddLine = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarAddLine );
-+
-+ // There are 2 buttons on the right/bottom side of the scrollbar
-+ sal_Bool bTwoSubButtons = FALSE;
-+
-+ // It is a Platinum style scroll bar
-+ sal_Bool bPlatinumStyle = FALSE;
-+
-+ // Workaround for Platinum and 3 button style scroll bars.
-+ // It makes the right/down button bigger.
-+ if ( bHorizontal )
-+ {
-+ qRectAddLine.setLeft( kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pScrollBar,
-+ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-+ if ( qRectAddLine.width() > qRectSubLine.width() )
-+ bTwoSubButtons = TRUE;
-+ if ( qRectSubLine.left() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).left() )
-+ bPlatinumStyle = TRUE;
-+ }
-+ else
-+ {
-+ qRectAddLine.setTop( kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pScrollBar,
-+ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-+ if ( qRectAddLine.height() > qRectSubLine.height() )
-+ bTwoSubButtons = TRUE;
-+ if ( qRectSubLine.top() > kapp->style().querySubControlMetrics( TQStyle::CC_ScrollBar, pScrollBar, TQStyle::SC_ScrollBarSubPage ).top() )
-+ bPlatinumStyle = TRUE;
-+ }
-+
-+ switch ( nPart )
-+ {
-+ case PART_BUTTON_LEFT:
-+ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-+ rIsInside = TRUE;
-+ else if ( bTwoSubButtons )
-+ {
-+ qRectAddLine.setWidth( qRectAddLine.width() / 2 );
-+ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-+ }
-+ break;
-+
-+ case PART_BUTTON_UP:
-+ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
-+ rIsInside = TRUE;
-+ else if ( bTwoSubButtons )
-+ {
-+ qRectAddLine.setHeight( qRectAddLine.height() / 2 );
-+ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-+ }
-+ break;
-+
-+ case PART_BUTTON_RIGHT:
-+ if ( bTwoSubButtons )
-+ qRectAddLine.setLeft( qRectAddLine.left() + qRectAddLine.width() / 2 );
-+
-+ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-+ break;
-+
-+ case PART_BUTTON_DOWN:
-+ if ( bTwoSubButtons )
-+ qRectAddLine.setTop( qRectAddLine.top() + qRectAddLine.height() / 2 );
-+
-+ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
-+ break;
-+
-+ // cases PART_TRACK_HORZ_AREA and PART_TRACK_VERT_AREA
-+ default:
-+ return FALSE;
-+ }
-+
-+ return TRUE;
-+ }
-+
-+ return FALSE;
-+}
-+
-+
-+/** Draw the requested control described by nPart/nState.
-+
-+ @param rControlRegion
-+ The bounding region of the complete control in VCL frame coordinates.
-+
-+ @param aValue
-+ An optional value (tristate/numerical/string).
-+
-+ @param aCaption
-+ A caption or title string (like button text etc.)
-+*/
-+sal_Bool TDESalGraphics::drawNativeControl( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, ControlState nState,
-+ const ImplControlValue& aValue,
-+ const OUString& )
-+{
-+ sal_Bool bReturn = FALSE;
-+
-+ Display *dpy = GetXDisplay();
-+ XLIB_Window drawable = GetDrawable();
-+ GC gc = SelectPen(); //SelectFont(); // GC with current clipping region set
-+
-+ if ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->pushButton( rControlRegion, (nState & CTRL_STATE_DEFAULT) ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->radioButton( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->checkBox( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->comboBox( rControlRegion, TRUE ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->lineEdit( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->comboBox( rControlRegion, FALSE ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_WINDOW) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->listView( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->spinWidget( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType==CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->tabBar( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType==CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->tabWidget( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_SCROLLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->scrollBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ, aValue ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT || nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->toolBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_THUMB_VERT ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-+ }
-+ else if ( (nType == CTRL_TOOLBAR) && (nPart == PART_BUTTON) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->toolButton( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-+ }
-+ else if ( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->menuBar( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc, nPart );
-+ }
-+ else if ( (nType == CTRL_MENU_POPUP) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_MENU_ITEM) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->popupMenu( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+ else if ( (nType == CTRL_PROGRESS) && (nPart == PART_ENTIRE_CONTROL) )
-+ {
-+ bReturn = pWidgetPainter->drawStyledWidget(
-+ pWidgetPainter->progressBar( rControlRegion ),
-+ nState, aValue,
-+ dpy, drawable, GetScreenNumber(), GetVisual().GetDepth(), gc );
-+ }
-+
-+ return bReturn;
-+}
-+
-+
-+/** Draw text on the widget.
-+
-+ OPTIONAL. Draws the requested text for the control described by nPart/nState.
-+ Used if text is not drawn by DrawNativeControl().
-+
-+ @param rControlRegion
-+ The bounding region of the complete control in VCL frame coordinates.
-+
-+ @param aValue
-+ An optional value (tristate/numerical/string)
-+
-+ @param aCaption
-+ A caption or title string (like button text etc.)
-+*/
-+sal_Bool TDESalGraphics::drawNativeControlText( ControlType, ControlPart,
-+ const Rectangle&, ControlState,
-+ const ImplControlValue&,
-+ const OUString& )
-+{
-+ return FALSE;
-+}
-+
-+/** Check if the bounding regions match.
-+
-+ If the return value is TRUE, rNativeBoundingRegion
-+ contains the true bounding region covered by the control
-+ including any adornment, while rNativeContentRegion contains the area
-+ within the control that can be safely drawn into without drawing over
-+ the borders of the control.
-+
-+ @param rControlRegion
-+ The bounding region of the control in VCL frame coordinates.
-+
-+ @param aValue
-+ An optional value (tristate/numerical/string)
-+
-+ @param aCaption
-+ A caption or title string (like button text etc.)
-+*/
-+sal_Bool TDESalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart,
-+ const Rectangle& rControlRegion, ControlState nState,
-+ const ImplControlValue&,
-+ const OUString&,
-+ Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion )
-+{
-+ sal_Bool bReturn = FALSE;
-+ TQRect qBoundingRect = WidgetPainter::region2TQRect( rControlRegion );
-+ TQRect qRect;
-+
-+ TQWidget *pWidget = NULL;
-+ switch ( nType )
-+ {
-+ // Metrics of the push button
-+ case CTRL_PUSHBUTTON:
-+ pWidget = pWidgetPainter->pushButton( rControlRegion, ( nState & CTRL_STATE_DEFAULT ) );
-+
-+ switch ( nPart )
-+ {
-+ case PART_ENTIRE_CONTROL:
-+ qRect = qBoundingRect;
-+
-+ if ( nState & CTRL_STATE_DEFAULT )
-+ {
-+ int nIndicatorSize = kapp->style().pixelMetric(
-+ TQStyle::PM_ButtonDefaultIndicator, pWidget );
-+ qBoundingRect.addCoords( -nIndicatorSize, -nIndicatorSize,
-+ nIndicatorSize, nIndicatorSize );
-+ bReturn = TRUE;
-+ }
-+ break;
-+ }
-+ break;
-+
-+ // Metrics of the radio button
-+ case CTRL_RADIOBUTTON:
-+ pWidget = pWidgetPainter->radioButton( rControlRegion );
-+
-+ if ( nPart == PART_ENTIRE_CONTROL )
-+ {
-+ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorWidth, pWidget ) );
-+ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorHeight, pWidget ) );
-+
-+ bReturn = TRUE;
-+ }
-+ break;
-+
-+ // Metrics of the check box
-+ case CTRL_CHECKBOX:
-+ pWidget = pWidgetPainter->checkBox( rControlRegion );
-+
-+ if ( nPart == PART_ENTIRE_CONTROL )
-+ {
-+ qRect.setWidth( kapp->style().pixelMetric( TQStyle::PM_IndicatorWidth, pWidget ) );
-+ qRect.setHeight( kapp->style().pixelMetric( TQStyle::PM_IndicatorHeight, pWidget ) );
-+
-+ bReturn = TRUE;
-+ }
-+ break;
-+
-+ // Metrics of the combo box
-+ case CTRL_COMBOBOX:
-+ case CTRL_LISTBOX:
-+ pWidget = pWidgetPainter->comboBox( rControlRegion, ( nType == CTRL_COMBOBOX ) );
-+ switch ( nPart )
-+ {
-+ case PART_BUTTON_DOWN:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxArrow );
-+ qRect.setLeft( kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ComboBox, pWidget,
-+ TQStyle::SC_ComboBoxEditField ).right() + 1 );
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+ bReturn = TRUE;
-+ break;
-+
-+ case PART_SUB_EDIT:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ComboBox, pWidget, TQStyle::SC_ComboBoxEditField );
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+ bReturn = TRUE;
-+ break;
-+ }
-+ break;
-+
-+ // Metrics of the spin box
-+ case CTRL_SPINBOX:
-+ pWidget = pWidgetPainter->spinWidget( rControlRegion );
-+ switch ( nPart )
-+ {
-+ case PART_BUTTON_UP:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetUp );
-+ bReturn = TRUE;
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+ break;
-+
-+ case PART_BUTTON_DOWN:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetDown );
-+ bReturn = TRUE;
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+ break;
-+
-+ case PART_SUB_EDIT:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_SpinWidget, pWidget, TQStyle::SC_SpinWidgetEditField );
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+ bReturn = TRUE;
-+ break;
-+ }
-+ break;
-+
-+ // Metrics of the scroll bar
-+ case CTRL_SCROLLBAR:
-+ pWidget = pWidgetPainter->scrollBar( rControlRegion,
-+ ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT ),
-+ ImplControlValue() );
-+ switch ( nPart )
-+ {
-+ case PART_BUTTON_LEFT:
-+ case PART_BUTTON_UP:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarSubLine );
-+
-+ // Workaround for Platinum style scroll bars. It makes the
-+ // left/up button invisible.
-+ if ( nPart == PART_BUTTON_LEFT )
-+ {
-+ if ( qRect.left() > kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget,
-+ TQStyle::SC_ScrollBarSubPage ).left() )
-+ {
-+ qRect.setLeft( 0 );
-+ qRect.setRight( 0 );
-+ }
-+ }
-+ else
-+ {
-+ if ( qRect.top() > kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget,
-+ TQStyle::SC_ScrollBarSubPage ).top() )
-+ {
-+ qRect.setTop( 0 );
-+ qRect.setBottom( 0 );
-+ }
-+ }
-+
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+
-+ bReturn = TRUE;
-+ break;
-+
-+ case PART_BUTTON_RIGHT:
-+ case PART_BUTTON_DOWN:
-+ qRect = kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget, TQStyle::SC_ScrollBarAddLine );
-+
-+ // Workaround for Platinum and 3 button style scroll bars.
-+ // It makes the right/down button bigger.
-+ if ( nPart == PART_BUTTON_RIGHT )
-+ qRect.setLeft( kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget,
-+ TQStyle::SC_ScrollBarAddPage ).right() + 1 );
-+ else
-+ qRect.setTop( kapp->style().querySubControlMetrics(
-+ TQStyle::CC_ScrollBar, pWidget,
-+ TQStyle::SC_ScrollBarAddPage ).bottom() + 1 );
-+
-+ qRect.moveBy( qBoundingRect.left(), qBoundingRect.top() );
-+
-+ bReturn = TRUE;
-+ break;
-+ }
-+ break;
-+ }
-+
-+ // Fill rNativeBoundingRegion and rNativeContentRegion
-+ if ( bReturn )
-+ {
-+ // Bounding region
-+ Point aBPoint( qBoundingRect.x(), qBoundingRect.y() );
-+ Size aBSize( qBoundingRect.width(), qBoundingRect.height() );
-+ rNativeBoundingRegion = Rectangle( aBPoint, aBSize );
-+
-+ // Region of the content
-+ Point aPoint( qRect.x(), qRect.y() );
-+ Size aSize( qRect.width(), qRect.height() );
-+ rNativeContentRegion = Rectangle( aPoint, aSize );
-+ }
-+
-+ return bReturn;
-+}
-+
-+// -----------------------------------------------------------------------
-+// TDESalFrame implementation
-+// -----------------------------------------------------------------------
-+
-+TDESalFrame::TDESalFrame( SalFrame* pParent, sal_uLong nStyle ) :
-+ X11SalFrame( pParent, nStyle )
-+{
-+}
-+
-+void TDESalFrame::Show( sal_Bool bVisible, sal_Bool bNoActivate )
-+{
-+ if ( !GetParent() && ! (GetStyle() & SAL_FRAME_STYLE_INTRO) )
-+ {
-+ TDEXLib* pXLib = static_cast<TDEXLib*>(GetDisplay()->GetXLib());
-+ pXLib->doStartup();
-+ }
-+ X11SalFrame::Show( bVisible, bNoActivate );
-+}
-+
-+/** Helper function to convert colors.
-+*/
-+static Color toColor( const TQColor &rColor )
-+{
-+ return Color( rColor.red(), rColor.green(), rColor.blue() );
-+}
-+
-+/** Helper function to read untranslated text entry from KConfig configuration repository.
-+*/
-+static OUString readEntryUntranslated( KConfig *pConfig, const char *pKey )
-+{
-+ return OUString::createFromAscii( pConfig->readEntryUntranslated( pKey ).ascii() );
-+}
-+
-+/** Helper function to read color from KConfig configuration repository.
-+*/
-+static Color readColor( KConfig *pConfig, const char *pKey )
-+{
-+ return toColor( pConfig->readColorEntry( pKey ) );
-+}
-+
-+/** Helper function to add information to Font from TQFont.
-+
-+ Mostly grabbed from the Gtk+ vclplug (salnativewidgets-gtk.cxx).
-+*/
-+static Font toFont( const TQFont &rTQFont, const ::com::sun::star::lang::Locale& rLocale )
-+{
-+ psp::FastPrintFontInfo aInfo;
-+ TQFontInfo qFontInfo( rTQFont );
-+
-+ // set family name
-+ aInfo.m_aFamilyName = String( rTQFont.family().utf8(), RTL_TEXTENCODING_UTF8 );
-+
-+ // set italic
-+ aInfo.m_eItalic = ( qFontInfo.italic()? ITALIC_NORMAL: ITALIC_NONE );
-+
-+ // set weight
-+ int nWeight = qFontInfo.weight();
-+ if ( nWeight <= TQFont::Light )
-+ aInfo.m_eWeight = WEIGHT_LIGHT;
-+ else if ( nWeight <= TQFont::Normal )
-+ aInfo.m_eWeight = WEIGHT_NORMAL;
-+ else if ( nWeight <= TQFont::DemiBold )
-+ aInfo.m_eWeight = WEIGHT_SEMIBOLD;
-+ else if ( nWeight <= TQFont::Bold )
-+ aInfo.m_eWeight = WEIGHT_BOLD;
-+ else
-+ aInfo.m_eWeight = WEIGHT_ULTRABOLD;
-+
-+ // set width
-+ int nStretch = rTQFont.stretch();
-+ if ( nStretch <= TQFont::UltraCondensed )
-+ aInfo.m_eWidth = WIDTH_ULTRA_CONDENSED;
-+ else if ( nStretch <= TQFont::ExtraCondensed )
-+ aInfo.m_eWidth = WIDTH_EXTRA_CONDENSED;
-+ else if ( nStretch <= TQFont::Condensed )
-+ aInfo.m_eWidth = WIDTH_CONDENSED;
-+ else if ( nStretch <= TQFont::SemiCondensed )
-+ aInfo.m_eWidth = WIDTH_SEMI_CONDENSED;
-+ else if ( nStretch <= TQFont::Unstretched )
-+ aInfo.m_eWidth = WIDTH_NORMAL;
-+ else if ( nStretch <= TQFont::SemiExpanded )
-+ aInfo.m_eWidth = WIDTH_SEMI_EXPANDED;
-+ else if ( nStretch <= TQFont::Expanded )
-+ aInfo.m_eWidth = WIDTH_EXPANDED;
-+ else if ( nStretch <= TQFont::ExtraExpanded )
-+ aInfo.m_eWidth = WIDTH_EXTRA_EXPANDED;
-+ else
-+ aInfo.m_eWidth = WIDTH_ULTRA_EXPANDED;
-+
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "font name BEFORE system match: \"%s\"\n", OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-+#endif
-+
-+ // match font to e.g. resolve "Sans"
-+ psp::PrintFontManager::get().matchFont( aInfo, rLocale );
-+
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "font match %s, name AFTER: \"%s\"\n",
-+ aInfo.m_nID != 0 ? "succeeded" : "failed",
-+ OUStringToOString( aInfo.m_aFamilyName, RTL_TEXTENCODING_ISO_8859_1 ).getStr() );
-+#endif
-+
-+ // font height
-+ int nPointHeight = qFontInfo.pointSize();
-+ if ( nPointHeight <= 0 )
-+ nPointHeight = rTQFont.pointSize();
-+
-+ // Create the font
-+ Font aFont( aInfo.m_aFamilyName, Size( 0, nPointHeight ) );
-+ if( aInfo.m_eWeight != WEIGHT_DONTKNOW )
-+ aFont.SetWeight( aInfo.m_eWeight );
-+ if( aInfo.m_eWidth != WIDTH_DONTKNOW )
-+ aFont.SetWidthType( aInfo.m_eWidth );
-+ if( aInfo.m_eItalic != ITALIC_DONTKNOW )
-+ aFont.SetItalic( aInfo.m_eItalic );
-+ if( aInfo.m_ePitch != PITCH_DONTKNOW )
-+ aFont.SetPitch( aInfo.m_ePitch );
-+
-+ return aFont;
-+}
-+
-+/** Implementation of TDE integration's main method.
-+*/
-+void TDESalFrame::UpdateSettings( AllSettings& rSettings )
-+{
-+ StyleSettings aStyleSettings( rSettings.GetStyleSettings() );
-+ bool bSetTitleFont = false;
-+
-+ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_LARGE );
-+
-+ // WM settings
-+ KConfig *pConfig = KGlobal::config();
-+ if ( pConfig )
-+ {
-+ pConfig->setGroup( "WM" );
-+ const char *pKey;
-+
-+ pKey = "activeBackground";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetActiveColor( readColor( pConfig, pKey ) );
-+
-+ pKey = "activeBlend";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetActiveColor2( readColor( pConfig, pKey ) );
-+
-+ pKey = "inactiveBackground";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetDeactiveColor( readColor( pConfig, pKey ) );
-+
-+ pKey = "inactiveBlend";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetDeactiveColor2( readColor( pConfig, pKey ) );
-+
-+ pKey = "inactiveForeground";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetDeactiveTextColor( readColor( pConfig, pKey ) );
-+
-+ pKey = "activeForeground";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetActiveTextColor( readColor( pConfig, pKey ) );
-+
-+ pKey = "titleFont";
-+ if ( pConfig->hasKey( pKey ) )
-+ {
-+ Font aFont = toFont( pConfig->readFontEntry( pKey ), rSettings.GetUILocale() );
-+ aStyleSettings.SetTitleFont( aFont );
-+ bSetTitleFont = true;
-+ }
-+
-+ pConfig->setGroup( "Icons" );
-+
-+ pKey = "Theme";
-+ if ( pConfig->hasKey( pKey ) )
-+ aStyleSettings.SetPreferredSymbolsStyleName( readEntryUntranslated( pConfig, pKey ) );
-+ }
-+
-+ // General settings
-+ TQColorGroup qColorGroup = kapp->palette().active();
-+
-+ Color aFore = toColor( qColorGroup.foreground() );
-+ Color aBack = toColor( qColorGroup.background() );
-+ Color aText = toColor( qColorGroup.text() );
-+ Color aBase = toColor( qColorGroup.base() );
-+
-+ // Foreground
-+ aStyleSettings.SetRadioCheckTextColor( aFore );
-+ aStyleSettings.SetLabelTextColor( aFore );
-+ aStyleSettings.SetInfoTextColor( aFore );
-+ aStyleSettings.SetDialogTextColor( aFore );
-+ aStyleSettings.SetGroupTextColor( aFore );
-+
-+ // Text
-+ aStyleSettings.SetFieldTextColor( aText );
-+ aStyleSettings.SetFieldRolloverTextColor( aText );
-+ aStyleSettings.SetWindowTextColor( aText );
-+ aStyleSettings.SetHelpTextColor( aText );
-+
-+ // Base
-+ aStyleSettings.SetFieldColor( aBase );
-+ aStyleSettings.SetHelpColor( aBase );
-+ aStyleSettings.SetWindowColor( aBase );
-+ aStyleSettings.SetActiveTabColor( aBase );
-+
-+ // Buttons
-+ aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
-+ aStyleSettings.SetButtonRolloverTextColor( toColor( qColorGroup.buttonText() ) );
-+
-+ // Disable color
-+ aStyleSettings.SetDisableColor( toColor( qColorGroup.mid() ) );
-+
-+ // Workspace
-+ aStyleSettings.SetWorkspaceColor( toColor( qColorGroup.mid() ) );
-+
-+ // Background
-+ aStyleSettings.Set3DColors( aBack );
-+ aStyleSettings.SetFaceColor( aBack );
-+ aStyleSettings.SetInactiveTabColor( aBack );
-+ aStyleSettings.SetDialogColor( aBack );
-+ if( aBack == COL_LIGHTGRAY )
-+ aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );
-+ else
-+ {
-+ Color aColor2 = aStyleSettings.GetLightColor();
-+ aStyleSettings.
-+ SetCheckedColor( Color( (BYTE)(((USHORT)aBack.GetRed()+(USHORT)aColor2.GetRed())/2),
-+ (BYTE)(((USHORT)aBack.GetGreen()+(USHORT)aColor2.GetGreen())/2),
-+ (BYTE)(((USHORT)aBack.GetBlue()+(USHORT)aColor2.GetBlue())/2)
-+ ) );
-+ }
-+
-+ // Selection
-+ aStyleSettings.SetHighlightColor( toColor( qColorGroup.highlight() ) );
-+ aStyleSettings.SetHighlightTextColor( toColor( qColorGroup.highlightedText() ) );
-+
-+ // Font
-+ Font aFont = toFont( kapp->font(), rSettings.GetUILocale() );
-+
-+ aStyleSettings.SetAppFont( aFont );
-+ aStyleSettings.SetHelpFont( aFont );
-+ aStyleSettings.SetMenuFont( aFont ); // will be changed according to pMenuBar
-+ aStyleSettings.SetToolFont( aFont ); // will be changed according to pToolBar
-+ aStyleSettings.SetLabelFont( aFont );
-+ aStyleSettings.SetInfoFont( aFont );
-+ aStyleSettings.SetRadioCheckFont( aFont );
-+ aStyleSettings.SetPushButtonFont( aFont );
-+ aStyleSettings.SetFieldFont( aFont );
-+ aStyleSettings.SetIconFont( aFont );
-+ aStyleSettings.SetGroupFont( aFont );
-+
-+ aFont.SetWeight( WEIGHT_BOLD );
-+ if( !bSetTitleFont )
-+ aStyleSettings.SetTitleFont( aFont );
-+ aStyleSettings.SetFloatTitleFont( aFont );
-+
-+ int flash_time = TQApplication::cursorFlashTime();
-+ aStyleSettings.SetCursorBlinkTime( flash_time != 0 ? flash_time/2 : STYLE_CURSOR_NOBLINKTIME );
-+
-+ KMainWindow qMainWindow;
-+ qMainWindow.createGUI( "/dev/null" ); // hack
-+
-+ // Menu
-+ aStyleSettings.SetSkipDisabledInMenus( TRUE );
-+ KMenuBar *pMenuBar = qMainWindow.menuBar();
-+ if ( pMenuBar )
-+ {
-+ // Color
-+ TQColorGroup qMenuCG = pMenuBar->colorGroup();
-+
-+ // Menu text and background color, theme specific
-+ Color aMenuFore = toColor( qMenuCG.foreground() );
-+ Color aMenuBack = toColor( qMenuCG.background() );
-+ if ( kapp->style().inherits( "LightStyleV2" ) ||
-+ kapp->style().inherits( "LightStyleV3" ) ||
-+ ( kapp->style().inherits( "QMotifStyle" ) && !kapp->style().inherits( "QSGIStyle" ) ) ||
-+ kapp->style().inherits( "QWindowsStyle" ) )
-+ {
-+ aMenuFore = toColor( qMenuCG.buttonText() );
-+ aMenuBack = toColor( qMenuCG.button() );
-+ }
-+
-+ aStyleSettings.SetMenuTextColor( aMenuFore );
-+ aStyleSettings.SetMenuBarTextColor( aMenuFore );
-+ aStyleSettings.SetMenuColor( aMenuBack );
-+ aStyleSettings.SetMenuBarColor( aMenuBack );
-+
-+ aStyleSettings.SetMenuHighlightColor( toColor ( qMenuCG.highlight() ) );
-+
-+ // Menu items higlight text color, theme specific
-+ if ( kapp->style().inherits( "HighContrastStyle" ) ||
-+ kapp->style().inherits( "KeramikStyle" ) ||
-+ kapp->style().inherits( "QWindowsStyle" ) ||
-+ kapp->style().inherits( "ThinKeramikStyle" ) ||
-+ kapp->style().inherits( "PlastikStyle" ) )
-+ {
-+ aStyleSettings.SetMenuHighlightTextColor( toColor ( qMenuCG.highlightedText() ) );
-+ }
-+ else
-+ aStyleSettings.SetMenuHighlightTextColor( aMenuFore );
-+
-+ // set special menubar higlight text color
-+ if ( kapp->style().inherits( "HighContrastStyle" ) )
-+ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = toColor( qMenuCG.highlightedText() );
-+ else
-+ ImplGetSVData()->maNWFData.maMenuBarHighlightTextColor = aMenuFore;
-+
-+ // Font
-+ aFont = toFont( pMenuBar->font(), rSettings.GetUILocale() );
-+ aStyleSettings.SetMenuFont( aFont );
-+ }
-+
-+ // Tool bar
-+ KToolBar *pToolBar = qMainWindow.toolBar();
-+ if ( pToolBar )
-+ {
-+ aFont = toFont( pToolBar->font(), rSettings.GetUILocale() );
-+ aStyleSettings.SetToolFont( aFont );
-+ }
-+
-+ // Scroll bar size
-+ aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( TQStyle::PM_ScrollBarExtent ) );
-+
-+ rSettings.SetStyleSettings( aStyleSettings );
-+}
-+
-+SalGraphics* TDESalFrame::GetGraphics()
-+{
-+ if( GetWindow() )
-+ {
-+ for( int i = 0; i < nMaxGraphics; i++ )
-+ {
-+ if( ! m_aGraphics[i].bInUse )
-+ {
-+ m_aGraphics[i].bInUse = true;
-+ if( ! m_aGraphics[i].pGraphics )
-+ {
-+ m_aGraphics[i].pGraphics = new TDESalGraphics();
-+ m_aGraphics[i].pGraphics->Init( this, GetWindow(), GetScreenNumber() );
-+ }
-+ return m_aGraphics[i].pGraphics;
-+ }
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+void TDESalFrame::ReleaseGraphics( SalGraphics *pGraphics )
-+{
-+ for( int i = 0; i < nMaxGraphics; i++ )
-+ {
-+ if( m_aGraphics[i].pGraphics == pGraphics )
-+ {
-+ m_aGraphics[i].bInUse = false;
-+ break;
-+ }
-+ }
-+}
-+
-+void TDESalFrame::updateGraphics( bool bClear )
-+{
-+ Drawable aDrawable = bClear ? None : GetWindow();
-+ for( int i = 0; i < nMaxGraphics; i++ )
-+ {
-+ if( m_aGraphics[i].bInUse )
-+ m_aGraphics[i].pGraphics->SetDrawable( aDrawable, GetScreenNumber() );
-+ }
-+}
-+
-+TDESalFrame::~TDESalFrame()
-+{
-+}
-+
-+TDESalFrame::GraphicsHolder::~GraphicsHolder()
-+{
-+ delete pGraphics;
-+}
-+
-+// -----------------------------------------------------------------------
-+// TDESalInstance implementation
-+// -----------------------------------------------------------------------
-+
-+SalFrame *
-+TDESalInstance::CreateFrame( SalFrame *pParent, sal_uLong nStyle )
-+{
-+ return new TDESalFrame( pParent, nStyle );
-+}
-+
-+// -----------------------------------------------------------------------
-+// TDESalData pieces
-+// -----------------------------------------------------------------------
-+
-+// Create the widget painter so we have some control over
-+// the destruction sequence, so Qt doesn't die in action.
-+
-+void TDEData::initNWF()
-+{
-+ ImplSVData *pSVData = ImplGetSVData();
-+ // draw toolbars on separate lines
-+ pSVData->maNWFData.mbDockingAreaSeparateTB = true;
-+
-+ pWidgetPainter = new WidgetPainter();
-+}
-+
-+void TDEData::deInitNWF()
-+{
-+ delete pWidgetPainter;
-+ pWidgetPainter = NULL;
-+
-+ // We have to destroy the style early
-+ kapp->setStyle( NULL );
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-diff --git a/vcl/unx/tde/tdedata.cxx b/vcl/unx/tde/tdedata.cxx
-new file mode 100644
-index 0000000..adeb628
---- /dev/null
-+++ b/vcl/unx/tde/tdedata.cxx
-@@ -0,0 +1,267 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2000, 2010 Oracle and/or its affiliates.
-+ * Copyright 2011 Timothy Pearson
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org 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 version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_vcl.hxx"
-+
-+#define _SV_SALDATA_CXX
-+#include <unx/tde/tde_headers.h>
-+
-+#include <unistd.h>
-+#include <fcntl.h>
-+
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <limits.h>
-+#include <errno.h>
-+#include <poll.h>
-+#ifdef FREEBSD
-+#include <sys/types.h>
-+#include <sys/time.h>
-+#include <unistd.h>
-+#endif
-+
-+#include <osl/thread.h>
-+#include <osl/process.h>
-+#include <osl/module.h>
-+#include <osl/mutex.hxx>
-+
-+#include <tools/debug.hxx>
-+
-+#include "unx/tde/tdedata.hxx"
-+#include "unx/i18n_im.hxx"
-+#include "unx/i18n_xkb.hxx"
-+
-+#include "vclpluginapi.h"
-+
-+/* #i59042# override KApplications method for session management
-+ * since it will interfere badly with our own.
-+ */
-+class VCLTDEApplication : public KApplication
-+{
-+ public:
-+ VCLTDEApplication() : KApplication() {}
-+
-+ virtual void commitData(QSessionManager &sm);
-+};
-+
-+void VCLTDEApplication::commitData(QSessionManager&)
-+{
-+}
-+
-+/***************************************************************************
-+ * class SalTDEDisplay *
-+ ***************************************************************************/
-+
-+SalTDEDisplay::SalTDEDisplay( Display* pDisp )
-+ : SalX11Display( pDisp )
-+{
-+}
-+
-+SalTDEDisplay::~SalTDEDisplay()
-+{
-+ // in case never a frame opened
-+ static_cast<TDEXLib*>(GetXLib())->doStartup();
-+ // clean up own members
-+ doDestruct();
-+ // prevent SalDisplay from closing KApplication's display
-+ pDisp_ = NULL;
-+}
-+
-+/***************************************************************************
-+ * class TDEXLib *
-+ ***************************************************************************/
-+
-+TDEXLib::~TDEXLib()
-+{
-+ // on 64 bit linux using libXRandr.so.2 will crash in
-+ // XCloseDisplay when freeing extension data
-+ // no known work around, therefor currently leak. Hopefully
-+ // this does not make problems since we're shutting down anyway
-+ // should we ever get a real tde plugin that uses the TDE event loop
-+ // we should use tde's method to signal screen changes similar
-+ // to the gtk plugin
-+ #if ! defined USE_RANDR || ! (defined LINUX && defined X86_64)
-+ // properly deinitialize KApplication
-+ delete (VCLTDEApplication*)m_pApplication;
-+ #endif
-+ // free the faked cmdline arguments no longer needed by KApplication
-+ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-+ free( m_pFreeCmdLineArgs[i] );
-+ delete [] m_pFreeCmdLineArgs;
-+ delete [] m_pAppCmdLineArgs;
-+}
-+
-+void TDEXLib::Init()
-+{
-+ SalI18N_InputMethod* pInputMethod = new SalI18N_InputMethod;
-+ pInputMethod->SetLocale();
-+ XrmInitialize();
-+
-+ KAboutData *kAboutData = new KAboutData( "LibreOffice",
-+ I18N_NOOP( "LibreOffice" ),
-+ "1.1.0",
-+ I18N_NOOP( "LibreOffice with TDE Native Widget Support." ),
-+ KAboutData::License_LGPL,
-+ "(c) 2003, 2004 Novell, Inc\n(c) 2010 Timothy Pearson",
-+ I18N_NOOP( "LibreOffice is an office suite.\n" ),
-+ "http://libreoffice.org",
-+ "libreoffice@lists.freedesktop.org");
-+ kAboutData->addAuthor( "Jan Holesovsky",
-+ I18N_NOOP( "Original author and maintainer of the TDE NWF." ),
-+ "kendy@artax.karlin.mff.cuni.cz",
-+ "http://artax.karlin.mff.cuni.cz/~kendy" );
-+
-+ m_nFakeCmdLineArgs = 1;
-+ sal_uInt16 nIdx;
-+ int nParams = osl_getCommandArgCount();
-+ rtl::OString aDisplay;
-+ rtl::OUString aParam, aBin;
-+
-+ for ( nIdx = 0; nIdx < nParams; ++nIdx )
-+ {
-+ osl_getCommandArg( nIdx, &aParam.pData );
-+ if ( !m_pFreeCmdLineArgs && aParam.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-display" ) ) && nIdx + 1 < nParams )
-+ {
-+ osl_getCommandArg( nIdx + 1, &aParam.pData );
-+ aDisplay = rtl::OUStringToOString( aParam, osl_getThreadTextEncoding() );
-+
-+ m_nFakeCmdLineArgs = 3;
-+ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-+ m_pFreeCmdLineArgs[ 1 ] = strdup( "-display" );
-+ m_pFreeCmdLineArgs[ 2 ] = strdup( aDisplay.getStr() );
-+ }
-+ }
-+ if ( !m_pFreeCmdLineArgs )
-+ m_pFreeCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-+
-+ osl_getExecutableFile( &aParam.pData );
-+ osl_getSystemPathFromFileURL( aParam.pData, &aBin.pData );
-+ rtl::OString aExec = rtl::OUStringToOString( aBin, osl_getThreadTextEncoding() );
-+ m_pFreeCmdLineArgs[0] = strdup( aExec.getStr() );
-+
-+ // make a copy of the string list for freeing it since
-+ // KApplication manipulates the pointers inside the argument vector
-+ // note: KApplication bad !
-+ m_pAppCmdLineArgs = new char*[ m_nFakeCmdLineArgs ];
-+ for( int i = 0; i < m_nFakeCmdLineArgs; i++ )
-+ m_pAppCmdLineArgs[i] = m_pFreeCmdLineArgs[i];
-+
-+ KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData );
-+
-+ KApplication::disableAutoDcopRegistration();
-+ m_pApplication = new VCLTDEApplication();
-+ kapp->disableSessionManagement();
-+
-+ Display* pDisp = QPaintDevice::x11AppDisplay();
-+
-+ SalX11Display *pSalDisplay = new SalTDEDisplay( pDisp );
-+
-+ pInputMethod->CreateMethod( pDisp );
-+ pSalDisplay->SetupInput( pInputMethod );
-+}
-+
-+void TDEXLib::doStartup()
-+{
-+ if( ! m_bStartupDone )
-+ {
-+ KStartupInfo::appStarted();
-+ m_bStartupDone = true;
-+ #if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "called KStartupInfo::appStarted()\n" );
-+ #endif
-+ }
-+}
-+
-+/**********************************************************************
-+ * class TDEData *
-+ **********************************************************************/
-+
-+TDEData::~TDEData()
-+{
-+}
-+
-+void TDEData::Init()
-+{
-+ pXLib_ = new TDEXLib();
-+ pXLib_->Init();
-+}
-+
-+/**********************************************************************
-+ * plugin entry point *
-+ **********************************************************************/
-+
-+extern "C" {
-+ VCLPLUG_TDE_PUBLIC SalInstance* create_SalInstance( oslModule )
-+ {
-+ /* #i92121# workaround deadlocks in the X11 implementation
-+ */
-+ static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" );
-+ /* #i90094#
-+ from now on we know that an X connection will be
-+ established, so protect X against itself
-+ */
-+ if( ! ( pNoXInitThreads && *pNoXInitThreads ) )
-+ XInitThreads();
-+
-+ rtl::OString aVersion( qVersion() );
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "qt version string is \"%s\"\n", aVersion.getStr() );
-+#endif
-+ sal_Int32 nIndex = 0, nMajor = 0, nMinor = 0, nMicro = 0;
-+ nMajor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-+ if( nIndex > 0 )
-+ nMinor = aVersion.getToken( 0, '.', nIndex ).toInt32();
-+ if( nIndex > 0 )
-+ nMicro = aVersion.getToken( 0, '.', nIndex ).toInt32();
-+ if( nMajor != 3 || nMinor < 2 || (nMinor == 2 && nMicro < 2) )
-+ {
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "unsuitable qt version %d.%d.%d\n", (int)nMajor, (int)nMinor, (int)nMicro );
-+#endif
-+ return NULL;
-+ }
-+
-+ TDESalInstance* pInstance = new TDESalInstance( new SalYieldMutex() );
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "created TDESalInstance 0x%p\n", pInstance );
-+#endif
-+
-+ // initialize SalData
-+ TDEData *pSalData = new TDEData( pInstance );
-+ pSalData->Init();
-+ pInstance->SetLib( pSalData->GetLib() );
-+ pSalData->initNWF();
-+
-+ return pInstance;
-+ }
-+}
-+
-+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/scripts b/scripts
new file mode 160000
+Subproject b0a915240f92352cf9675146940d045f76ee774
diff --git a/scripts/README b/scripts/README
deleted file mode 100644
index 2f1f6175e..000000000
--- a/scripts/README
+++ /dev/null
@@ -1,2 +0,0 @@
-All useful GIT helper scripts should go here
-This includes scripts useful to the TDE developers for pushing batch changes, etc.
diff --git a/scripts/commit_all_submodules b/scripts/commit_all_submodules
deleted file mode 100755
index c754640e7..000000000
--- a/scripts/commit_all_submodules
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-if [[ ! -e .git ]] ||
- [[ -z "`git rev-parse --git-dir 2>/dev/null`" ]]; then
- echo "This script can only be run from a top level git directory. Exiting..."
- exit 1
-fi
-
-branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
-if [[ -z "$branch" ]] ||
- [[ -z "`git rev-parse --symbolic-full-name --remotes=\"*/$branch\"`" ]]; then
- echo "There is not active upstream branch. Exiting..."
- exit 1
-fi
-
-echo "Preparing $PWD for development use"
-if [[ $1 == "" ]]; then
- gituser=`sed -n "/^\[remote \"origin\"\]/,/url/s/\turl = http:\/\/\([^@]*\)@.*/\1/p" <\`git rev-parse --git-dir\`/config | grep -v "\(anonymous\|system\)"`
-else
- gituser=$1
-fi
-
-if [[ $gituser == "" ]]; then
- read -p "Enter your TDE GIT username []: " -e gituser
-fi
-
-if [[ $gituser == "" ]]; then
- gituser="anonymous"
-fi
-
-read -p "Enter your commit message []: " -e commitmessage
-
-git submodule foreach "git commit -a -m \"$commitmessage\" || true"
-git submodule foreach "sed -i \"s/system@scm\.trinitydesktop\.org/$gituser@scm\.trinitydesktop\.org/g\" \`git rev-parse --git-dir\`/config"
-git submodule foreach "git pull &&\
- [[ \"\`git rev-parse HEAD\`\" == \"\`git rev-parse origin/$branch\`\" ]] ||\
- git push origin HEAD"
-RETCODE=$?
-if [[ $RETCODE != 0 ]]; then
- echo "Something went wrong"
- exit 1
-fi
-
-git commit -a -m "$commitmessage" || true
-sed -i "s/system@scm\.trinitydesktop\.org/$gituser@scm\.trinitydesktop\.org/g" `git rev-parse --git-dir`/config
-git pull &&\
- [[ "`git rev-parse HEAD`" == "`git rev-parse origin/$branch`" ]] ||\
- git push origin HEAD || true
diff --git a/scripts/switch_all_submodules_to_head_and_clean b/scripts/switch_all_submodules_to_head_and_clean
deleted file mode 100755
index 631381272..000000000
--- a/scripts/switch_all_submodules_to_head_and_clean
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash
-
-if [[ ! -e .git ]] ||
- [[ -z "`git rev-parse --git-dir 2>/dev/null`" ]]; then
- echo "This script can only be run from a top level git directory. Exiting..."
- exit 1
-fi
-
-branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
-if [[ -z "$branch" ]] ||
- [[ -z "`git rev-parse --symbolic-full-name --remotes=\"*/$branch\"`" ]]; then
- echo "There is not active upstream branch. Exiting..."
- exit 1
-fi
-
-echo "Preparing $PWD for development use"
-if [[ $1 == "" ]]; then
- gituser=`sed -n "/^\[remote \"origin\"\]/,/url/s/\turl = http:\/\/\([^@]*\)@.*/\1/p" <\`git rev-parse --git-dir\`/config | grep -v "\(anonymous\|system\)"`
-else
- gituser=$1
-fi
-
-if [[ $gituser == "" ]]; then
- read -p "Enter your TDE GIT username []: " -e gituser
-fi
-
-if [[ $gituser == "" ]]; then
- gituser="anonymous"
-fi
-
-THISSCRIPT=$(readlink -f $0)
-
-if [[ ! -e "$THISSCRIPT" ]]; then
- echo "Unable to find myself! Exiting..."
- exit 1
-fi
-
-if [[ ! -z "`git status --porcelain`" ]]; then
- git reset --hard HEAD
- git clean -dxff
-fi
-git pull
-if [[ ! -z "`git status --porcelain`" ]]; then
- git reset --hard HEAD
- git clean -dxff
-fi
-
-if [[ -e .gitmodules ]]; then
- if [[ $gituser == "anonymous" ]]; then
- sed -i 's/system@//g' .gitmodules
- else
- sed -i "s/system@/$gituser@/g" .gitmodules
- fi
-
- git submodule init
- git submodule update
- git submodule foreach "git checkout $branch && $THISSCRIPT $gituser"
-
- git checkout -- .gitmodules
-fi
diff --git a/scripts/update_all_submodules b/scripts/update_all_submodules
deleted file mode 100755
index 498dceff0..000000000
--- a/scripts/update_all_submodules
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-
-if [[ -e /var/lock/update-tde-git-submodules ]]; then
- echo "TDE GIT submodules are currently being updated"
- echo "If this is not the case, please remove the lockfile /var/lock/update-tde-git-submodules"
- exit 0
-fi
-
-if [[ ! -e .git ]] ||
- [[ -z "`git rev-parse --git-dir 2>/dev/null`" ]]; then
- echo "Current directory does not contain a .git folder. Exiting..."
- exit 1
-fi
-
-branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
-if [[ -z "$branch" ]] ||
- [[ -z "`git rev-parse --symbolic-full-name --remotes=\"*/$branch\"`" ]]; then
- echo "There is not active upstream branch. Exiting..."
- exit 1
-fi
-
-touch /var/lock/update-tde-git-submodules
-
-PARENTDIR=$PWD
-echo "Working in $PARENTDIR"
-git pull
-if [[ ! -z "`git status --porcelain`" ]]; then
- git reset --hard HEAD
- git clean -dxff
-fi
-
-exec 3< submodules
-while read <&3
-do
- cd $PARENTDIR
- DIR2UPDATE=$REPLY
- if [[ $DIR2UPDATE != "" ]]; then
- echo "Attempting to reset submodule $DIR2UPDATE"
- cd $PARENTDIR/$DIR2UPDATE/..
- cd `git rev-parse --show-toplevel`
- if [[ -z "`grep \"^Updated: $PWD$\" /var/lock/update-tde-git-submodules`" ]]; then
- echo "Updated: $PWD" >>/var/lock/update-tde-git-submodules
- git submodule init
- git submodule update
- fi
- cd $PARENTDIR/$DIR2UPDATE
- if [[ ! -z "`git status --porcelain`" ]]; then
- git reset --hard HEAD
- git clean -dxff
- fi
- git checkout $branch
- git pull
- cd ..
- cd `git rev-parse --show-toplevel`
- echo "Committing changes to $PWD"
- if [[ ! -z "`git status --porcelain $PARENTDIR/$DIR2UPDATE`" ]]; then
- git add $PARENTDIR/$DIR2UPDATE
- git commit $PARENTDIR/$DIR2UPDATE -m "Reset submodule $DIR2UPDATE to latest HEAD"
- fi
- if [[ "`git rev-parse HEAD`" != "`git rev-parse origin/$branch`" ]]; then
- git push origin HEAD
- fi
- fi
-done
-exec 3>&-
-
-# Let the disk subsystem recover
-sleep 60
-
-rm /var/lock/update-tde-git-submodules
diff --git a/submodules b/submodules
index 69cb0cac3..1c6048775 100644
--- a/submodules
+++ b/submodules
@@ -1,3 +1,4 @@
+scripts
main/common/admin
main/common/cmake
@@ -359,3 +360,4 @@ main/tdevelop/parts/appwizard/common/admin
main/tdewebdev
main/tdewebdev/admin
main/tdewebdev/cmake
+main/thirdparty