[Libreoffice-commits] .: Branch 'feature/mork' - 42 commits - android/experimental basic/inc basic/source bridges/inc bridges/source configure.in distro-configs/LibreOfficeAndroidX86.conf dtrans/source embedserv/source extensions/Module_extensions.mk filter/source g i18npool/source icu/icu4c-android.patch icu/icu4c-build.patch idlc/source o3tl/inc openldap/makefile.mk sal/android sal/Library_sal_textenc.mk sal/util sc/inc sc/qa sc/source sfx2/inc sfx2/source shell/source solenv/gbuild solenv/gdb solenv/inc starmath/source sw/CppunitTest_sw_filters_test.mk sw/CppunitTest_sw_subsequent_odfexport.mk sw/CppunitTest_sw_subsequent_odfimport.mk sw/Module_sw.mk sw/qa sw/source tools/source tubes/inc tubes/Library_tubes.mk tubes/source xmerge/source

Fridrich Strba fridrich at kemper.freedesktop.org
Sat Jul 21 06:36:37 PDT 2012


 android/experimental/LibreOffice4Android/Makefile              |   21 -
 basic/inc/basic/sbmod.hxx                                      |    4 
 basic/inc/basic/sbobjmod.hxx                                   |   10 
 basic/inc/basic/sbstar.hxx                                     |    2 
 basic/inc/basic/sbstdobj.hxx                                   |    8 
 basic/inc/basic/sbx.hxx                                        |    6 
 basic/inc/basic/sbxfac.hxx                                     |    4 
 basic/inc/basic/sbxobj.hxx                                     |    4 
 basic/source/classes/sb.cxx                                    |   64 +---
 basic/source/classes/sbunoobj.cxx                              |   24 -
 basic/source/classes/sbxmod.cxx                                |   14 
 basic/source/inc/sbintern.hxx                                  |    4 
 basic/source/inc/sbunoobj.hxx                                  |   14 
 basic/source/inc/stdobj.hxx                                    |    2 
 basic/source/runtime/stdobj.cxx                                |    4 
 basic/source/runtime/stdobj1.cxx                               |   13 
 basic/source/sbx/sbxarray.cxx                                  |    2 
 basic/source/sbx/sbxbase.cxx                                   |   10 
 basic/source/sbx/sbxcoll.cxx                                   |    2 
 basic/source/sbx/sbxobj.cxx                                    |    4 
 basic/source/sbx/sbxstr.cxx                                    |    3 
 bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx           |    2 
 bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk            |    3 
 configure.in                                                   |   29 +-
 distro-configs/LibreOfficeAndroidX86.conf                      |   26 +
 dtrans/source/win32/dtobj/XTDataObject.cxx                     |   10 
 embedserv/source/inprocserv/dllentry.cxx                       |    6 
 extensions/Module_extensions.mk                                |    7 
 filter/source/svg/presentation_engine.js                       |  134 +++++++--
 g                                                              |    2 
 i18npool/source/localedata/data/de_AT.xml                      |    1 
 i18npool/source/localedata/data/de_CH.xml                      |    1 
 i18npool/source/localedata/data/de_LI.xml                      |    1 
 i18npool/source/localedata/data/de_LU.xml                      |    1 
 i18npool/source/localedata/data/list-dateacceptancepattern.awk |   97 +++++-
 icu/icu4c-android.patch                                        |    4 
 icu/icu4c-build.patch                                          |    2 
 idlc/source/idlccompile.cxx                                    |    1 
 o3tl/inc/o3tl/sorted_vector.hxx                                |   22 -
 openldap/makefile.mk                                           |    4 
 sal/Library_sal_textenc.mk                                     |    2 
 sal/android/lo-bootstrap.c                                     |   30 +-
 sal/util/sal_textenc/saltextenc.map                            |   40 --
 sc/inc/orcus/csv_parser.hpp                                    |    3 
 sc/qa/unit/data/contentCSV/conditionalFormatting.csv           |    4 
 sc/qa/unit/data/contentCSV/information-functions.csv           |   32 +-
 sc/qa/unit/data/contentCSV/logical-functions.csv               |    8 
 sc/qa/unit/data/contentCSV/mathematical-functions.csv          |   26 -
 sc/qa/unit/data/contentCSV/numberFormat.csv                    |   10 
 sc/qa/unit/data/contentCSV/spreadsheet-functions.csv           |    8 
 sc/qa/unit/helper/qahelper.hxx                                 |    1 
 sc/qa/unit/subsequent_filters-test.cxx                         |    2 
 sc/qa/unit/ucalc.cxx                                           |  142 ++++++++++
 sc/source/core/data/column2.cxx                                |   11 
 sc/source/core/tool/scmatrix.cxx                               |   11 
 sc/source/filter/xml/XMLStylesImportHelper.cxx                 |   16 -
 sc/source/filter/xml/XMLStylesImportHelper.hxx                 |    1 
 sc/source/filter/xml/xmlcelli.cxx                              |    3 
 sc/source/filter/xml/xmlimprt.cxx                              |    3 
 sc/source/ui/collab/contacts.cxx                               |    8 
 sc/source/ui/collab/sendfunc.cxx                               |   82 -----
 sc/source/ui/collab/sendfunc.hxx                               |    1 
 sc/source/ui/src/scfuncs.src                                   |    2 
 sfx2/inc/templatedlg.hxx                                       |    2 
 sfx2/source/doc/templatedlg.cxx                                |    9 
 sfx2/source/doc/templatedlg.src                                |   10 
 shell/source/win32/shlxthandler/ooofilt/ooofilt.cxx            |   36 --
 shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx        |    3 
 shell/source/win32/shlxthandler/shlxthdl.cxx                   |    3 
 solenv/gbuild/platform/ANDROID_INTEL_GCC.mk                    |  104 +++++++
 solenv/gdb/libreoffice/sw.py                                   |   24 +
 solenv/inc/unx.mk                                              |    4 
 solenv/inc/unxandr.mk                                          |    4 
 starmath/source/visitors.cxx                                   |    6 
 sw/CppunitTest_sw_filters_test.mk                              |    3 
 sw/CppunitTest_sw_subsequent_odfexport.mk                      |   98 ++++++
 sw/CppunitTest_sw_subsequent_odfimport.mk                      |    2 
 sw/Module_sw.mk                                                |    1 
 sw/qa/extras/odfexport/data/fdo38244.odt                       |binary
 sw/qa/extras/odfexport/odfexport.cxx                           |   95 ++++++
 sw/source/core/doc/docbm.cxx                                   |    2 
 sw/source/core/doc/docedt.cxx                                  |   24 -
 sw/source/core/txtnode/modeltoviewhelper.cxx                   |    4 
 sw/source/core/unocore/unofield.cxx                            |    6 
 tools/source/fsys/wntmsc.cxx                                   |    5 
 tubes/Library_tubes.mk                                         |    4 
 tubes/inc/tubes/manager.hxx                                    |    4 
 tubes/source/manager.cxx                                       |   45 ++-
 xmerge/source/activesync/XMergeFactory.cpp                     |    6 
 xmerge/source/activesync/XMergeSync.cpp                        |    6 
 90 files changed, 1015 insertions(+), 513 deletions(-)

New commits:
commit f5914d886b7722250c81679ccda0878130cc05bc
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Sat Jul 21 07:21:11 2012 -0500

    suppress distracting message in ./g on some platform
    
    we use perl to determine the absolute path of argument thought to be
    fiels. but sometime they are not file at all and that call 'fail'.
    The code is meant to deal with such case, but
    on some platform that produce a scary message on stderr in the
    middle of the build log.
    This hide these messages.
    
    Change-Id: I52d43e0b26847ab091d76fd446a05c4d84836a77

diff --git a/g b/g
index 7ec3bda..902f3ac 100755
--- a/g
+++ b/g
@@ -233,7 +233,7 @@ while shift ; do
             FILESNUM=$(($FILESNUM+1))
         else
             # make the paths absolute
-            FILES[$FILESNUM]=$(perl -e 'use Cwd "abs_path"; print abs_path(shift);' "$PARAM")
+            FILES[$FILESNUM]=$(perl -e 'use Cwd "abs_path"; print abs_path(shift);' "$PARAM" 2>/dev/null)
             if [ -z "${FILES[$FILESNUM]}" -o ! -e "${FILES[$FILESNUM]}" ] ; then
                 # it is probably not a file, but a tag name, or something
                 FILES[$FILESNUM]="$PARAM"
commit 50f52f97ab4489482f057257e94dcdaace4b07c3
Author: Ivan Timofeev <timofeev.i.s at gmail.com>
Date:   Sat Jul 21 12:37:19 2012 +0400

    fdo#38887: SmNodeToTextVisitor: use braces for nested scripts
    
    Though it is unclear why everything is wrapped into SmExpressionNode. But still
    it is so, the patch will work.
    
    Change-Id: Ib62f1a148c737ad110f659f73181ed51e02b8594

diff --git a/starmath/source/visitors.cxx b/starmath/source/visitors.cxx
index 2722e4e..9c27970 100644
--- a/starmath/source/visitors.cxx
+++ b/starmath/source/visitors.cxx
@@ -2504,6 +2504,12 @@ void SmNodeToTextVisitor::Visit( SmLineNode* pNode )
 void SmNodeToTextVisitor::Visit( SmExpressionNode* pNode )
 {
     bool bracketsNeeded = pNode->GetNumSubNodes() != 1 || pNode->GetSubNode(0)->GetType() == NBINHOR;
+    // nested subsups
+    bracketsNeeded |=
+        pNode->GetParent()->GetType() == NSUBSUP &&
+        pNode->GetNumSubNodes() == 1 &&
+        pNode->GetSubNode(0)->GetType() == NSUBSUP;
+
     if (bracketsNeeded) {
         Append( "{ " );
     }
commit f39f7dd2d156205a4d9ba9080595551ee3e26c65
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Sat Jul 21 03:03:42 2012 -0500

    Use correct date/datetime format for formula cells and value cells.
    
    Change-Id: I37816eba909caa71aca95c5181daeea1751b6c5a

diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index e619d10..21c2d14 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -260,6 +260,8 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
     {
         if (nCellType == util::NumberFormat::TEXT)
             bFormulaTextResult = true;
+        if(nCellType == util::NumberFormat::DATETIME)
+            nCellType = util::NumberFormat::UNDEFINED;
     }
     rXMLImport.GetStylesImportHelper()->SetAttributes(pStyleName, pCurrencySymbol, nCellType);
 }
commit 13dd806d107fa3e13877fa5d1724db06416331d8
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Fri Jul 20 18:20:54 2012 -0500

    Revert "Distinguish between DATE and DATETIME formats in ODS import"
    
    This reverts commit 4e5c55afee36d02bdfe4c0fb09e3b42e9eadb6c5.

diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 26d01aa..e619d10 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -876,7 +876,6 @@ void ScXMLTableRowCellContext::AddTextAndValueCells( const ScAddress& rCellPos,
                             case util::NumberFormat::PERCENT:
                             case util::NumberFormat::CURRENCY:
                             case util::NumberFormat::TIME:
-                            case util::NumberFormat::DATE:
                             case util::NumberFormat::DATETIME:
                             case util::NumberFormat::LOGICAL:
                             {
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index 831176c..c3e3cd7 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -1979,8 +1979,7 @@ ScXMLImport::ScXMLImport(
         { XML_FLOAT,        util::NumberFormat::NUMBER },
         { XML_STRING,       util::NumberFormat::TEXT },
         { XML_TIME,         util::NumberFormat::TIME },
-        { XML_DATE,         util::NumberFormat::DATE },
-        { XML_DATE_TIME,    util::NumberFormat::DATETIME },
+        { XML_DATE,         util::NumberFormat::DATETIME },
         { XML_PERCENTAGE,   util::NumberFormat::PERCENT },
         { XML_CURRENCY,     util::NumberFormat::CURRENCY },
         { XML_BOOLEAN,      util::NumberFormat::LOGICAL }
commit 98a3f6a6230ea6c5f55bf7a033b63bc7834039cc
Author: Daniel Bankston <daniel.e.bankston at gmail.com>
Date:   Fri Jul 20 18:17:24 2012 -0500

    Revert "Fix cause of osl warning"
    
    This reverts commit 59b32886a48954f9dad96b3329d172ac73aaa065.

diff --git a/sc/source/filter/xml/XMLStylesImportHelper.cxx b/sc/source/filter/xml/XMLStylesImportHelper.cxx
index 2f54d6b..438ac0e 100644
--- a/sc/source/filter/xml/XMLStylesImportHelper.cxx
+++ b/sc/source/filter/xml/XMLStylesImportHelper.cxx
@@ -85,13 +85,6 @@ void ScMyStyleRanges::AddRange(const ScRange& rRange,
             mpTimeList->addRange(rRange);
         }
         break;
-        case util::NumberFormat::DATE:
-        {
-            if (!mpDateList)
-                mpDateList.reset(new ScSimpleRangeList);
-            mpDateList->addRange(rRange);
-        }
-        break;
         case util::NumberFormat::DATETIME:
         {
             if (!mpDateTimeList)
@@ -159,8 +152,6 @@ void ScMyStyleRanges::InsertCol(const sal_Int32 nCol, const sal_Int32 nTab, ScDo
         mpNumberList->insertCol(static_cast<SCCOL>(nCol), static_cast<SCTAB>(nTab));
     if (mpTimeList)
         mpTimeList->insertCol(static_cast<SCCOL>(nCol), static_cast<SCTAB>(nTab));
-    if (mpDateList)
-        mpDateList->insertCol(static_cast<SCCOL>(nCol), static_cast<SCTAB>(nTab));
     if (mpDateTimeList)
         mpDateTimeList->insertCol(static_cast<SCCOL>(nCol), static_cast<SCTAB>(nTab));
     if (mpPercentList)
@@ -214,13 +205,6 @@ void ScMyStyleRanges::SetStylesToRanges(const rtl::OUString* pStyleName, ScXMLIm
         SetStylesToRanges(aList, pStyleName, util::NumberFormat::TIME, NULL, rImport);
         mpTimeList->clear();
     }
-    if (mpDateList)
-    {
-        list<ScRange> aList;
-        mpDateList->getRangeList(aList);
-        SetStylesToRanges(aList, pStyleName, util::NumberFormat::DATE, NULL, rImport);
-        mpDateList->clear();
-    }
     if (mpDateTimeList)
     {
         list<ScRange> aList;
diff --git a/sc/source/filter/xml/XMLStylesImportHelper.hxx b/sc/source/filter/xml/XMLStylesImportHelper.hxx
index 87765f3..6a988d0 100644
--- a/sc/source/filter/xml/XMLStylesImportHelper.hxx
+++ b/sc/source/filter/xml/XMLStylesImportHelper.hxx
@@ -97,7 +97,6 @@ class ScMyStyleRanges : public SvRefBase
     ::boost::shared_ptr<ScSimpleRangeList> mpTextList;
     ::boost::shared_ptr<ScSimpleRangeList> mpNumberList;
     ::boost::shared_ptr<ScSimpleRangeList> mpTimeList;
-    ::boost::shared_ptr<ScSimpleRangeList> mpDateList;
     ::boost::shared_ptr<ScSimpleRangeList> mpDateTimeList;
     ::boost::shared_ptr<ScSimpleRangeList> mpPercentList;
     ::boost::shared_ptr<ScSimpleRangeList> mpLogicalList;
commit 666c8808ffefc495bf57c5c1e74a56945a52a6b8
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Jul 20 23:31:06 2012 -0400

    It's much faster to pass value array in one go than individually.
    
    Change-Id: Iaf58915ab5c56ef5707f3a90a308c8b57cdc4fe9

diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx
index d0d3fce..ccf786c 100644
--- a/sc/source/core/tool/scmatrix.cxx
+++ b/sc/source/core/tool/scmatrix.cxx
@@ -38,6 +38,8 @@
 
 #include <math.h>
 
+#include <vector>
+
 #include <mdds/multi_type_matrix.hpp>
 #include <mdds/multi_type_vector_types.hpp>
 #include <mdds/multi_type_vector_trait.hpp>
@@ -856,9 +858,12 @@ void ScMatrixImpl::FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2,
 {
     if (ValidColRow( nC1, nR1) && ValidColRow( nC2, nR2))
     {
-        for (SCSIZE i = nR1; i <= nR2; ++i)
-            for (SCSIZE j = nC1; j <= nC2; ++j)
-                maMat.set(i, j, fVal);
+        for (SCSIZE j = nC1; j <= nC2; ++j)
+        {
+            // Passing value array is much faster.
+            std::vector<double> aVals(nR2-nR1+1, fVal);
+            maMat.set(nR1, j, aVals.begin(), aVals.end());
+        }
     }
     else
     {
commit 0c44cbd67305923c06329c18e0b0cb1e146df447
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jul 16 21:55:20 2012 -0430

    Display correct view when searching and position online view below box.
    
    Change-Id: Ib58a48c3cbd8aaba38f053bf0a646d6c267f7909

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 9017f09..4add070 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -604,7 +604,7 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, SearchUpdateHdl)
     {
         mpSearchView->Clear();
         mpSearchView->Show();
-        maView->Hide();
+        mpCurView->Hide();
     }
 
     rtl::OUString aKeyword = mpSearchEdit->GetText();
@@ -634,7 +634,7 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, SearchUpdateHdl)
     else
     {
         mpSearchView->Hide();
-        maView->Show();
+        mpCurView->Show();
     }
 
     return 0;
@@ -741,6 +741,7 @@ void SfxTemplateManagerDlg::OnTemplateSearch ()
 
     SetSizePixel(aWinSize);
     maView->SetPosPixel(aPos);
+    mpOnlineView->SetPosPixel(aPos);
     mpSearchView->SetPosPixel(aPos);
     maButtonClose.SetPosPixel(aClosePos);
 
@@ -748,7 +749,7 @@ void SfxTemplateManagerDlg::OnTemplateSearch ()
     if (bVisible)
     {
         mpSearchView->Hide();
-        maView->Show();
+        mpCurView->Show();
     }
 
     mpSearchEdit->Show(!bVisible);
commit cc07ced20bd1536f977636524a596e9494dd9181
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jul 16 18:44:07 2012 -0430

    Make command names shorter.
    
    Change-Id: I2e258ad84aafd17121f86bdc8b8b1aa24b24e709

diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 44a48e4..cb73de0 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -177,7 +177,7 @@ ModelessDialog DLG_TEMPLATE_MANAGER
             ToolBoxItem
             {
                 Identifier = TBI_TEMPLATE_CREATE;
-                Text [ en-US ] = "Create a template" ;
+                Text [ en-US ] = "Create" ;
 
                 ItemImage = Image
                 {
@@ -188,19 +188,19 @@ ModelessDialog DLG_TEMPLATE_MANAGER
             ToolBoxItem
             {
                 Identifier = TBI_TEMPLATE_LOCAL;
-                Text [ en-US ] = "Local Templates";
+                Text [ en-US ] = "Local";
             };
 
             ToolBoxItem
             {
                 Identifier = TBI_TEMPLATE_ONLINE;
-                Text [ en-US ] = "Online Templates";
+                Text [ en-US ] = "Online";
             };
 
             ToolBoxItem
             {
                 Identifier = TBI_TEMPLATE_IMPORT ;
-                Text [ en-US ] = "Import a template" ;
+                Text [ en-US ] = "Import" ;
 
                 ItemImage = Image
                 {
commit 1bf6a159f9df8cbc2fa8c4136624f15632a6498e
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Jul 15 12:16:02 2012 -0430

    Make TemplateDialog modeless.
    
    Change-Id: I71f923112e932b9cbee9f084581b7a5cdd878510

diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 47e6f9b..23fd9a4 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -31,7 +31,7 @@ namespace com {
     }   }   }
 }
 
-class SfxTemplateManagerDlg : public ModalDialog
+class SfxTemplateManagerDlg : public ModelessDialog
 {
 public:
 
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 05d333b..9017f09 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -84,7 +84,7 @@ private:
 };
 
 SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
-    : ModalDialog(parent, SfxResId(DLG_TEMPLATE_MANAGER)),
+    : ModelessDialog(parent, SfxResId(DLG_TEMPLATE_MANAGER)),
       aButtonAll(this,SfxResId(BTN_SELECT_ALL)),
       aButtonDocs(this,SfxResId(BTN_SELECT_DOCS)),
       aButtonPresents(this,SfxResId(BTN_SELECT_PRESENTATIONS)),
diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src
index 2681200..44a48e4 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -45,7 +45,7 @@ String STR_INPUT_NEW
     Text [ en-US ] = "Enter folder name:";
 };
 
-ModalDialog DLG_TEMPLATE_MANAGER
+ModelessDialog DLG_TEMPLATE_MANAGER
 {
     HelpId = CMD_SID_TEMPLATE_MANAGER;
     OutputSize = TRUE;
commit da1ebe8affdf9f42ccbb8b8e8e1307bb4bc9a8e9
Author: Eike Rathke <erack at redhat.com>
Date:   Sat Jul 21 01:47:39 2012 +0200

    print full inheritance
    
    Change-Id: Ia53fcbde6b3ff4d38b477069a1f956c9aef84f78

diff --git a/i18npool/source/localedata/data/list-dateacceptancepattern.awk b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
index b272905..1d47814 100644
--- a/i18npool/source/localedata/data/list-dateacceptancepattern.awk
+++ b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
@@ -80,7 +80,7 @@ END {
         for (i in LocaleList)
         {
             if (LocaleList[i][offinherit] && LocaleList[i][offpatterns])
-                print LocaleList[i][offlocale] " = " LocaleList[i][offinherit] "    "
+                print getInheritance( LocaleList[i][offlocale], LocaleList[i][offlocale]) "    "
         }
         print "\n<p>"
     }
@@ -89,7 +89,7 @@ END {
         for (i in LocaleList)
         {
             if (LocaleList[i][offinherit] && LocaleList[i][offpatterns])
-                print LocaleList[i][offlocale] " = " LocaleList[i][offinherit]
+                print getInheritance( LocaleList[i][offlocale], LocaleList[i][offlocale])
         }
         print "\n"
     }
@@ -105,7 +105,7 @@ END {
         for (i in LocaleList)
         {
             if (!LocaleList[i][offpatterns])
-                print LocaleList[i][offlocale] "    "
+                print getInheritance( LocaleList[i][offlocale], LocaleList[i][offlocale]) "    "
         }
     }
     else
@@ -113,13 +113,13 @@ END {
         for (i in LocaleList)
         {
             if (!LocaleList[i][offpatterns])
-                print LocaleList[i][offlocale]
+                print getInheritance( LocaleList[i][offlocale], LocaleList[i][offlocale])
         }
     }
 }
 
 
-function endFile() {
+function endFile(       locale ) {
     locale =  getLocale( file)
     LocaleList[locale][offlocale] = locale
     LocaleList[locale][offpatterns] = patterns
@@ -172,4 +172,11 @@ function fillAllInherited(      i ) {
     }
 }
 
+
+function getInheritance( str, locale ) {
+    if (LocaleList[locale][offinherit])
+        str = getInheritance( str " = " LocaleList[locale][offinherit], LocaleList[locale][offinherit])
+    return str
+}
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
commit 7cede30f2fbe2b1c8a61c6a3a25f8bc66e71175a
Author: Eike Rathke <erack at redhat.com>
Date:   Sat Jul 21 01:07:54 2012 +0200

    make this extensible and do not omit inherited without patterns
    
    Change-Id: I97a554169637740aab4282b303a32f476f294e2f

diff --git a/i18npool/source/localedata/data/list-dateacceptancepattern.awk b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
index 87ddfdc..b272905 100644
--- a/i18npool/source/localedata/data/list-dateacceptancepattern.awk
+++ b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
@@ -23,7 +23,9 @@ BEGIN {
         --ARGC
     }
     file = ""
-    nopatterns = 0
+    offlocale = 0
+    offpatterns = 1
+    offinherit = 2
     inheritedcount = 0
     if (html)
         print "<p>"
@@ -58,6 +60,11 @@ file != FILENAME {
 END {
     if (file)
         endFile()
+
+    PROCINFO["sorted_in"] = "@ind_str_asc"
+
+    fillAllInherited()
+
     if (html)
     {
         print "</ul>"
@@ -70,19 +77,19 @@ END {
     if (html)
     {
         print "<br>"
-        for (i=0; i<inheritedcount; ++i)
+        for (i in LocaleList)
         {
-            if (LocaleHasPatterns[InheritedList[i][1]])
-                print InheritedList[i][0] " = " InheritedList[i][1] "    "
+            if (LocaleList[i][offinherit] && LocaleList[i][offpatterns])
+                print LocaleList[i][offlocale] " = " LocaleList[i][offinherit] "    "
         }
         print "\n<p>"
     }
     else
     {
-        for (i=0; i<inheritedcount; ++i)
+        for (i in LocaleList)
         {
-            if (LocaleHasPatterns[InheritedList[i][1]])
-                print InheritedList[i][0] " = " InheritedList[i][1]
+            if (LocaleList[i][offinherit] && LocaleList[i][offpatterns])
+                print LocaleList[i][offlocale] " = " LocaleList[i][offinherit]
         }
         print "\n"
     }
@@ -95,16 +102,18 @@ END {
         print "<p>"
     if (html)
     {
-        for (i=0; i<nopatterns; ++i)
+        for (i in LocaleList)
         {
-            print NoPatternList[i] "    "
+            if (!LocaleList[i][offpatterns])
+                print LocaleList[i][offlocale] "    "
         }
     }
     else
     {
-        for (i=0; i<nopatterns; ++i)
+        for (i in LocaleList)
         {
-            print NoPatternList[i]
+            if (!LocaleList[i][offpatterns])
+                print LocaleList[i][offlocale]
         }
     }
 }
@@ -112,7 +121,8 @@ END {
 
 function endFile() {
     locale =  getLocale( file)
-    LocaleHasPatterns[locale] = patterns
+    LocaleList[locale][offlocale] = locale
+    LocaleList[locale][offpatterns] = patterns
     if (patterns)
     {
         if (html)
@@ -135,21 +145,31 @@ function endFile() {
         }
     }
     else if (inherited)
-    {
-        InheritedList[inheritedcount][0] = locale
-        InheritedList[inheritedcount][1] = inherited
-        ++inheritedcount
-    }
-    else
-        NoPatternList[nopatterns++] = locale
+        LocaleList[locale][offinherit] = inherited
 }
 
 
-function getLocale( file, tmp ) {
+function getLocale( file,       tmp ) {
     tmp = file
     gsub( /.*\//, "", tmp )
     gsub( /\.xml/, "", tmp )
     return tmp
 }
 
+
+function fillInherited( locale ) {
+    if (!LocaleList[locale][offpatterns] && LocaleList[locale][offinherit])
+        LocaleList[locale][offpatterns] = fillInherited( LocaleList[locale][offinherit])
+    return LocaleList[locale][offpatterns]
+}
+
+
+function fillAllInherited(      i ) {
+    for (i in LocaleList)
+    {
+        if (!LocaleList[i][offpatterns] && LocaleList[i][offinherit])
+            LocaleList[i][offpatterns] = fillInherited( LocaleList[i][offinherit])
+    }
+}
+
 # vim:set shiftwidth=4 softtabstop=4 expandtab:
commit 460adf565a16720b333d9461376b317ae51a4e80
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 23:46:00 2012 +0200

    second test for ScDocument::FindAreaPos
    
    Change-Id: I215a33d6a1e38ad3edcb92e160e90f7d04db08f1

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 6a479f0..8753a40 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -216,6 +216,7 @@ public:
     void testCopyPasteFormulasExternalDoc();
 
     void testFindAreaPosRowDown();
+    void testFindAreaPosColRight();
 
     CPPUNIT_TEST_SUITE(Test);
 #if 0
@@ -262,6 +263,7 @@ public:
     CPPUNIT_TEST(testCopyPasteFormulasExternalDoc);
 #endif
     CPPUNIT_TEST(testFindAreaPosRowDown);
+    CPPUNIT_TEST(testFindAreaPosColRight);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -4593,7 +4595,7 @@ void Test::testCopyPasteFormulasExternalDoc()
 void Test::testFindAreaPosRowDown()
 {
     const char* aData[][2] = {
-        { "", "" },
+        { "", "1" },
         { "1", "" },
         { "1", "1" },
         { "", "1" },
@@ -4660,6 +4662,71 @@ void Test::testFindAreaPosRowDown()
     pDoc->DeleteTab(0);
 }
 
+void Test::testFindAreaPosColRight()
+{
+    const char* aData[][7] = {
+        { "", "1", "1", "", "1", "1", "1" },
+        { "", "", "1", "1", "1", "", "1" }, };
+
+    ScDocument* pDoc = m_xDocShRef->GetDocument();
+    rtl::OUString aTabName1("test1");
+    pDoc->InsertTab(0, aTabName1);
+    clearRange( pDoc, ScRange(0, 0, 0, 7, SAL_N_ELEMENTS(aData), 0));
+    ScAddress aPos(0,0,0);
+    ScRange aDataRange = insertRangeData( pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    CPPUNIT_ASSERT_MESSAGE("failed to insert range data at correct position", aDataRange.aStart == aPos);
+
+    pDoc->SetColHidden(4,4,0,true);
+    bool bHidden = pDoc->ColHidden(4,0);
+    CPPUNIT_ASSERT(bHidden);
+
+    SCCOL nCol = 0;
+    SCROW nRow = 0;
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(1), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(2), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), nRow);
+    // BUG! This returns right now 4 because FindAreaPos does
+    // not yet work correctly with hidden rows
+    //CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(5), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(6), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(MAXCOL), nCol);
+
+    nCol = 2;
+    nRow = 1;
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), nRow);
+    // BUG! This returns right now 4 because FindAreaPos does
+    // not yet work correctly with hidden rows
+    //CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(3), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 1, 0);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(6), nCol);
+
+    pDoc->DeleteTab(0);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 }
commit 25bb1ac37350c5a30a3f1c4112dfbb86997af47f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 22:59:10 2012 +0200

    first test for ScDocument::FindAreaPos
    
    This is the first step into fixing the cursor navigation.
    ScDocument::FindAreaPos contains still bugs in the handling of hidden
    rows and hidden columns. This test checks only problems with rows and
    moving downwards.
    
    Change-Id: I204064a96a1abdb8ab5f46e395f8f7c391fb4824

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 79cda88..6a479f0 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -215,7 +215,10 @@ public:
     void testCopyPasteFormulas();
     void testCopyPasteFormulasExternalDoc();
 
+    void testFindAreaPosRowDown();
+
     CPPUNIT_TEST_SUITE(Test);
+#if 0
     CPPUNIT_TEST(testCollator);
     CPPUNIT_TEST(testInput);
     CPPUNIT_TEST(testCellFunctions);
@@ -257,6 +260,8 @@ public:
     CPPUNIT_TEST(testAutoFill);
     CPPUNIT_TEST(testCopyPasteFormulas);
     CPPUNIT_TEST(testCopyPasteFormulasExternalDoc);
+#endif
+    CPPUNIT_TEST(testFindAreaPosRowDown);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -4585,6 +4590,76 @@ void Test::testCopyPasteFormulasExternalDoc()
     CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("=$ExtSheet2.$B$2"));
 }
 
+void Test::testFindAreaPosRowDown()
+{
+    const char* aData[][2] = {
+        { "", "" },
+        { "1", "" },
+        { "1", "1" },
+        { "", "1" },
+        { "1", "1" },
+        { "1", "" },
+        { "1", "1" }, };
+
+    ScDocument* pDoc = m_xDocShRef->GetDocument();
+    rtl::OUString aTabName1("test1");
+    pDoc->InsertTab(0, aTabName1);
+    clearRange( pDoc, ScRange(0, 0, 0, 1, SAL_N_ELEMENTS(aData), 0));
+    ScAddress aPos(0,0,0);
+    ScRange aDataRange = insertRangeData( pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    CPPUNIT_ASSERT_MESSAGE("failed to insert range data at correct position", aDataRange.aStart == aPos);
+
+    pDoc->SetRowHidden(4,4,0,true);
+    bool bHidden = pDoc->RowHidden(4,0);
+    CPPUNIT_ASSERT(bHidden);
+
+    SCCOL nCol = 0;
+    SCROW nRow = 0;
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(2), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    // BUG! This returns right now 4 because FindAreaPos does
+    // not yet work correctly with hidden rows
+    //CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(5), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(6), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(MAXROW), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), nCol);
+
+    nCol = 1;
+    nRow = 2;
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    // BUG! This returns right now 4 because FindAreaPos does
+    // not yet work correctly with hidden rows
+    //CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(3), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(1), nCol);
+
+    pDoc->FindAreaPos(nCol, nRow, 0, 0, 1);
+
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(6), nRow);
+    CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(1), nCol);
+
+    pDoc->DeleteTab(0);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 }
commit f3a37e507840ed72c9bcbdad11f65b378c7f406b
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 20 23:19:31 2012 +0200

    include locales inheriting patterns
    
    Change-Id: I06f4578f6d681064a8e41e4bef45a7034b7b5a64

diff --git a/i18npool/source/localedata/data/list-dateacceptancepattern.awk b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
index b1ad115..87ddfdc 100644
--- a/i18npool/source/localedata/data/list-dateacceptancepattern.awk
+++ b/i18npool/source/localedata/data/list-dateacceptancepattern.awk
@@ -8,8 +8,11 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # Usage: gawk -f list-dateacceptancepattern.awk *.xml [--html]
-# Outputs two lists of locales, one with DateAcceptancePattern elements
-# defined, and one where none are defined.
+#
+# Outputs three lists of locales, one with DateAcceptancePattern elements
+# defined, one with inherited LC_FORMAT elements and thus date patterns, and
+# one where no DateAcceptancePattern are defined.
+#
 # If --html is given as the last parameter, format output suitable for
 # inclusion in HTML.
 
@@ -21,6 +24,7 @@ BEGIN {
     }
     file = ""
     nopatterns = 0
+    inheritedcount = 0
     if (html)
         print "<p>"
     else
@@ -36,7 +40,7 @@ file != FILENAME {
         endFile()
     file = FILENAME
     patterns = 0
-    noFormatCode = 1
+    inherited = ""
 }
 
 /<DateAcceptancePattern>/ {
@@ -44,10 +48,10 @@ file != FILENAME {
     pattern[patterns++] = a[3]
 }
 
-# No FormatCode element means inherited LC_FORMAT ref=...
-# hence pattern inherited as well.
-/<FormatCode>/ {
-    noFormatCode = 0
+# pattern inherited as well
+/<LC_FORMAT[^>]* ref="[^>"]+"[^>]*>/ {
+    split( $0, a, /.* ref="|"/ )
+    inherited = a[2]
 }
 
 
@@ -61,6 +65,28 @@ END {
     }
     else
         print "\n"
+
+    print "Locales inheriting patterns:"
+    if (html)
+    {
+        print "<br>"
+        for (i=0; i<inheritedcount; ++i)
+        {
+            if (LocaleHasPatterns[InheritedList[i][1]])
+                print InheritedList[i][0] " = " InheritedList[i][1] "    "
+        }
+        print "\n<p>"
+    }
+    else
+    {
+        for (i=0; i<inheritedcount; ++i)
+        {
+            if (LocaleHasPatterns[InheritedList[i][1]])
+                print InheritedList[i][0] " = " InheritedList[i][1]
+        }
+        print "\n"
+    }
+
     print "Locales without explicit DateAcceptancePattern elements:"
     if (html)
         print "<br>"
@@ -85,11 +111,13 @@ END {
 
 
 function endFile() {
+    locale =  getLocale( file)
+    LocaleHasPatterns[locale] = patterns
     if (patterns)
     {
         if (html)
         {
-            print "  <li> " getLocale( file) ":"
+            print "  <li> " locale ":"
             print "  <ul>"
             for ( i=0; i<patterns; ++i )
             {
@@ -99,15 +127,21 @@ function endFile() {
         }
         else
         {
-            print getLocale( file) ":"
+            print locale ":"
             for ( i=0; i<patterns; ++i )
             {
                 print "    " pattern[i]
             }
         }
     }
-    else if (!noFormatCode)
-        NoPatternList[nopatterns++] = getLocale( file)
+    else if (inherited)
+    {
+        InheritedList[inheritedcount][0] = locale
+        InheritedList[inheritedcount][1] = inherited
+        ++inheritedcount
+    }
+    else
+        NoPatternList[nopatterns++] = locale
 }
 
 
commit 6ad53eba4c506063aefaa6a5dfb719c8304bfecb
Author: Matúš Kukan <matus.kukan at gmail.com>
Date:   Fri Jul 20 22:12:19 2012 +0200

    tubes: use SAL_WARN SAL_LOG
    
    Change-Id: Ic0c291183c63bb5c4a0a7e54f80c3c8f23349a3d

diff --git a/tubes/source/manager.cxx b/tubes/source/manager.cxx
index f6642f2..768492b 100644
--- a/tubes/source/manager.cxx
+++ b/tubes/source/manager.cxx
@@ -183,8 +183,7 @@ bool TeleManager::hasWaitingConference()
 // FIXME this is exported only because of ScDocFuncDemo
 SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
 {
-    fprintf( stderr, "incoming file '%s'\n",
-             rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
+    SAL_INFO( "tubes", "TeleManager_fileReceived: incoming file: " << rStr );
 
     css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
         ::comphelper::getProcessServiceFactory();
@@ -202,8 +201,7 @@ SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
     }
     catch ( const css::uno::Exception& e )
     {
-        fprintf( stderr, "exception when loading '%s' !\n",
-                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+        SAL_WARN( "tubes", "TeleManager_fileReceived: exception when loading: " << e.Message );
     }
 }
 
commit 4a93c5a88b51b91512f35c1d860c5e4ab3fe5b1a
Author: Matúš Kukan <matus.kukan at gmail.com>
Date:   Fri Jul 20 15:35:27 2012 +0200

    tubes: remove unused parameters
    
    Change-Id: Ia1c683f5b9245d1673a610901636921619f47406

diff --git a/tubes/source/manager.cxx b/tubes/source/manager.cxx
index e43612c..f6642f2 100644
--- a/tubes/source/manager.cxx
+++ b/tubes/source/manager.cxx
@@ -135,7 +135,7 @@ void TeleManager::DBusChannelHandler(
             SAL_INFO( "tubes", "accepting");
             aAccepted = true;
 
-            TeleConference* pConference = new TeleConference( pManager, pAccount, TP_DBUS_TUBE_CHANNEL( pChannel ), createUuid() );
+            TeleConference* pConference = new TeleConference( pManager, pAccount, TP_DBUS_TUBE_CHANNEL( pChannel ) );
             pConference->acceptTube();
             pManager->addConference( pConference );
         }
@@ -207,10 +207,8 @@ SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
     }
 }
 
-void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel *, gpointer pUserData)
+void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel *, gpointer )
 {
-    TeleManager* pManager = reinterpret_cast<TeleManager*>(pUserData);
-
     SAL_INFO( "tubes", "TeleManager::TransferDone: hooray!");
     GFile *gfile = empathy_ft_handler_get_gfile( handler);
     char *uri = g_file_get_uri( gfile);
@@ -538,7 +536,7 @@ bool TeleManager::registerClients()
             getFullClientName().getStr(),                   // name
             TRUE,                                           // uniquify to get a different bus name to the main client, above
             TeleManager_FileTransferHandler,                // callback
-            this,                                           // user_data
+            this,                                           // user_data, unused
             NULL                                            // destroy
             );
     tp_base_client_take_handler_filter( pImpl->mpFileTransferClient,
commit 8263e40a29cc0582e621fdc8cb2e37fad61236d7
Author: Matúš Kukan <matus.kukan at gmail.com>
Date:   Fri Jul 20 15:17:44 2012 +0200

    tubes: clean up commented out code, headers
    
    Change-Id: I5962fb38d2320199e9c45c6f339131755f817960

diff --git a/tubes/inc/tubes/manager.hxx b/tubes/inc/tubes/manager.hxx
index 21ee3c3..f495c24 100644
--- a/tubes/inc/tubes/manager.hxx
+++ b/tubes/inc/tubes/manager.hxx
@@ -39,7 +39,6 @@
 #include <rtl/ref.hxx>
 #include <tools/link.hxx>
 #include <telepathy-glib/telepathy-glib.h>
-#include <map>
 
 // For testing purposes, we might need more in future.
 #define LIBO_TUBES_DBUS_INTERFACE "org.libreoffice.calc"
diff --git a/tubes/source/manager.cxx b/tubes/source/manager.cxx
index c7ef062..e43612c 100644
--- a/tubes/source/manager.cxx
+++ b/tubes/source/manager.cxx
@@ -28,24 +28,17 @@
 
 #include "tubes/manager.hxx"
 #include "tubes/constants.h"
-#include <rtl/strbuf.hxx>
-#include <rtl/uuid.h>
-#include <osl/mutex.hxx>
-#include <cstring>
 
-// new file send/recv fun ...
 #include <com/sun/star/uno/Sequence.hxx>
-#include <unotools/tempfile.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <com/sun/star/frame/XLoadable.hpp>
 #include <com/sun/star/frame/XComponentLoader.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/document/XDocumentRecovery.hpp>
 #include <com/sun/star/util/XCloseable.hpp>
+#include <comphelper/processfactory.hxx>
+#include <osl/mutex.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/uuid.h>
+#include <map>
 
 namespace css = ::com::sun::star;
 
@@ -193,42 +186,10 @@ SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
     fprintf( stderr, "incoming file '%s'\n",
              rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
 
-    // using the frame::XLoadable interface fails with a DoubleInitializationException
-/*    css::uno::Sequence < css::beans::PropertyValue > aLoadArgs(5);
-    aLoadArgs[0].Name = rtl::OUString( "URL" );
-    aLoadArgs[0].Value <<= rpStr;
-    aLoadArgs[1].Name = rtl::OUString( "FilterName" );
-    aLoadArgs[1].Value <<= rtl::OUString( "calc8" );
-    aLoadArgs[2].Name = rtl::OUString( "Referer" );
-    aLoadArgs[2].Value <<= rtl::OUString( "" );
-    // no interaction handler ?
-    aLoadArgs[3].Name = rtl::OUString( "MacroExecutionMode" );
-    aLoadArgs[3].Value <<= sal_Int32( 3 );
-    aLoadArgs[4].Name = rtl::OUString( "UpdateDocMode" );
-    aLoadArgs[4].Value <<= sal_Int32( 2 );
-    try
-    {
-        css::uno::Reference < css::frame::XLoadable > xLoad(
-                rDocShell.GetBaseModel(), css::uno::UNO_QUERY_THROW );
-        xLoad->load( aLoadArgs );
-    }
-    catch ( css::uno::Exception& e )
-    {
-        fprintf( stderr, "exception when loading '%s' !\n",
-                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
-                 } */
-// #2 - tried out the SfxAutoReloadTimer_Impl - shove stuff at the SID_RELOAD slot ...
-
-// #3 - can we use the framework/inc/services/frame.hxx 's "sTargetFrameName"
-// magic to load into our current frame ? ... :-)
-
     css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
         ::comphelper::getProcessServiceFactory();
 
     css::uno::Sequence < css::beans::PropertyValue > args(0);
-// FIXME: should this be hidden before it is synched & ready ? ...
-//    args[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
-//    args[0].Value <<= sal_True;
     try
     {
         css::uno::Reference < css::frame::XComponentLoader > xLoader(
@@ -239,7 +200,7 @@ SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
                 xLoader->loadComponentFromURL( rStr, "_blank", 0, args ),
                 css::uno::UNO_QUERY_THROW );
     }
-    catch ( css::uno::Exception& e )
+    catch ( const css::uno::Exception& e )
     {
         fprintf( stderr, "exception when loading '%s' !\n",
                  rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
commit 0c6184f8616f9ed254bdde12842b06be0552d11f
Author: Matúš Kukan <matus.kukan at gmail.com>
Date:   Fri Jul 20 15:05:33 2012 +0200

    tubes: move ScDocFuncRecv::fileReceived to TeleManager_fileReceived
    
    Change-Id: Ie2ab2c2d545f6fcbdc21171868c99b1756c90792

diff --git a/sc/source/ui/collab/contacts.cxx b/sc/source/ui/collab/contacts.cxx
index c2cc8b6..02240d9 100644
--- a/sc/source/ui/collab/contacts.cxx
+++ b/sc/source/ui/collab/contacts.cxx
@@ -91,14 +91,6 @@ class TubeContacts : public ModelessDialog
         {
             fprintf( stderr, "Could not register client handlers.\n" );
         }
-        else
-        {
-            // FIXME: These signals should not be bind to a document specific code.
-
-            // Receiving file is not related to any document.
-            mpManager->sigFileReceived.connect( boost::bind(
-                        &ScDocFuncRecv::fileReceived, mpSender->GetReceiver(), _1 ) );
-        }
     }
 
     void StartBuddySession()
diff --git a/sc/source/ui/collab/sendfunc.cxx b/sc/source/ui/collab/sendfunc.cxx
index 4b3d1c9..d30b393 100644
--- a/sc/source/ui/collab/sendfunc.cxx
+++ b/sc/source/ui/collab/sendfunc.cxx
@@ -28,7 +28,6 @@
 
 #include "sal/config.h"
 
-#include <tubes/warnings_guard_boost_signals2.hpp>
 #include <vector>
 
 #include "cell.hxx"
@@ -39,24 +38,18 @@
 #include <tubes/manager.hxx>
 #include <tubes/conference.hxx>
 #include <tubes/contact-list.hxx>
-#include <tubes/constants.h>
 
-// new file send/recv fun ...
 #include <com/sun/star/uno/Sequence.hxx>
 #include <unotools/tempfile.hxx>
 #include <unotools/localfilehelper.hxx>
 #include <comphelper/mediadescriptor.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <com/sun/star/frame/XLoadable.hpp>
-#include <com/sun/star/frame/XComponentLoader.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/document/XDocumentRecovery.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
 
 namespace css = ::com::sun::star;
 
+// FIXME: this is only meant for demo I think
+extern void TeleManager_fileReceived( const OUString& );
+
 // FIXME: really ScDocFunc should be an abstract base
 ScDocFuncRecv::ScDocFuncRecv( ScDocFuncDirect *pChain )
     : mpChain( pChain )
@@ -115,64 +108,6 @@ void ScDocFuncRecv::packetReceived( TelePacket &rPacket )
     RecvMessage( aString );
 }
 
-void ScDocFuncRecv::fileReceived( const rtl::OUString &rStr )
-{
-    fprintf( stderr, "incoming file '%s'\n",
-             rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
-
-    // using the frame::XLoadable interface fails with a DoubleInitializationException
-/*    css::uno::Sequence < css::beans::PropertyValue > aLoadArgs(5);
-    aLoadArgs[0].Name = rtl::OUString( "URL" );
-    aLoadArgs[0].Value <<= rpStr;
-    aLoadArgs[1].Name = rtl::OUString( "FilterName" );
-    aLoadArgs[1].Value <<= rtl::OUString( "calc8" );
-    aLoadArgs[2].Name = rtl::OUString( "Referer" );
-    aLoadArgs[2].Value <<= rtl::OUString( "" );
-    // no interaction handler ?
-    aLoadArgs[3].Name = rtl::OUString( "MacroExecutionMode" );
-    aLoadArgs[3].Value <<= sal_Int32( 3 );
-    aLoadArgs[4].Name = rtl::OUString( "UpdateDocMode" );
-    aLoadArgs[4].Value <<= sal_Int32( 2 );
-    try
-    {
-        css::uno::Reference < css::frame::XLoadable > xLoad(
-                rDocShell.GetBaseModel(), css::uno::UNO_QUERY_THROW );
-        xLoad->load( aLoadArgs );
-    }
-    catch ( css::uno::Exception& e )
-    {
-        fprintf( stderr, "exception when loading '%s' !\n",
-                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
-                 } */
-// #2 - tried out the SfxAutoReloadTimer_Impl - shove stuff at the SID_RELOAD slot ...
-
-// #3 - can we use the framework/inc/services/frame.hxx 's "sTargetFrameName"
-// magic to load into our current frame ? ... :-)
-
-    css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
-        ::comphelper::getProcessServiceFactory();
-
-    css::uno::Sequence < css::beans::PropertyValue > args(0);
-// FIXME: should this be hidden before it is synched & ready ? ...
-//    args[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
-//    args[0].Value <<= sal_True;
-    try
-    {
-        css::uno::Reference < css::frame::XComponentLoader > xLoader(
-                ::comphelper::getProcessServiceFactory()->createInstance(
-                        "com.sun.star.frame.Desktop" ),
-                        css::uno::UNO_QUERY_THROW );
-        css::uno::Reference < css::util::XCloseable > xDoc(
-                xLoader->loadComponentFromURL( rStr, "_blank", 0, args ),
-                css::uno::UNO_QUERY_THROW );
-    }
-    catch ( css::uno::Exception& e )
-    {
-        fprintf( stderr, "exception when loading '%s' !\n",
-                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
-    }
-}
-
 /*
  * Provides a local bus that doesn't require an IM channel for
  * quick demoing, export INTERCEPT=demo # to enable.
@@ -202,15 +137,6 @@ class ScDocFuncDemo : public ScDocFuncRecv
                  = aCopy.begin(); i != aCopy.end(); ++i)
             (*i)->RecvMessage(rString);
     }
-
-    virtual void fileReceived( const rtl::OUString &rStr )
-    {
-        // FIXME: Lifecycle nightmare
-        std::vector< boost::shared_ptr<ScDocFuncRecv> > aCopy( maClients );
-        for (std::vector< boost::shared_ptr<ScDocFuncRecv> >::iterator i
-                 = aCopy.begin(); i != aCopy.end(); ++i)
-            (*i)->fileReceived( rStr );
-    }
 };
 
 extern "C"
@@ -262,7 +188,7 @@ void ScDocFuncSend::SendFile( const rtl::OUString &sUuid )
     if (mpConference)
         mpConference->sendFile( aFileURL, file_sent_cb, NULL );
     else
-        mpDirect->fileReceived( aFileURL );
+        TeleManager_fileReceived( aFileURL );
 
     // FIXME: unlink the file after send ...
 }
diff --git a/sc/source/ui/collab/sendfunc.hxx b/sc/source/ui/collab/sendfunc.hxx
index f9c2bcf..dde1dae 100644
--- a/sc/source/ui/collab/sendfunc.hxx
+++ b/sc/source/ui/collab/sendfunc.hxx
@@ -219,7 +219,6 @@ public:
 
     void packetReceived( TelePacket &rPacket );
 
-    virtual void fileReceived( const rtl::OUString &rStr );
     virtual void RecvMessage( const rtl::OString &rString );
 };
 
diff --git a/tubes/Library_tubes.mk b/tubes/Library_tubes.mk
index 2c385d3..a08760c 100644
--- a/tubes/Library_tubes.mk
+++ b/tubes/Library_tubes.mk
@@ -32,12 +32,16 @@ $(eval $(call gb_Library_set_include,tubes,\
 	$$(INCLUDE) \
 ))
 
+$(eval $(call gb_Library_use_sdk_api,tubes))
+
 $(eval $(call gb_Library_add_defs,tubes,\
 	-DTUBES_DLLIMPLEMENTATION \
 ))
 
 $(eval $(call gb_Library_use_libraries,tubes,\
 	$(gb_STDLIBS) \
+	comphelper \
+	cppu \
 	sal \
 	salhelper \
 ))
diff --git a/tubes/inc/tubes/manager.hxx b/tubes/inc/tubes/manager.hxx
index 9f16891..21ee3c3 100644
--- a/tubes/inc/tubes/manager.hxx
+++ b/tubes/inc/tubes/manager.hxx
@@ -39,7 +39,6 @@
 #include <rtl/ref.hxx>
 #include <tools/link.hxx>
 #include <telepathy-glib/telepathy-glib.h>
-#include <tubes/warnings_guard_boost_signals2.hpp>
 #include <map>
 
 // For testing purposes, we might need more in future.
@@ -140,8 +139,6 @@ public:
 
     void                    disconnect();
 
-    boost::signals2::signal<void ( const rtl::OUString &localUri )> sigFileReceived;
-
     /// Only for use with MainLoopFlusher
     GMainLoop*              getMainLoop() const;
 
diff --git a/tubes/source/manager.cxx b/tubes/source/manager.cxx
index 4f6a6a8..c7ef062 100644
--- a/tubes/source/manager.cxx
+++ b/tubes/source/manager.cxx
@@ -33,6 +33,21 @@
 #include <osl/mutex.hxx>
 #include <cstring>
 
+// new file send/recv fun ...
+#include <com/sun/star/uno/Sequence.hxx>
+#include <unotools/tempfile.hxx>
+#include <unotools/localfilehelper.hxx>
+#include <comphelper/mediadescriptor.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
+#include <com/sun/star/frame/XLoadable.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/document/XDocumentRecovery.hpp>
+#include <com/sun/star/util/XCloseable.hpp>
+
+namespace css = ::com::sun::star;
 
 #if defined SAL_LOG_INFO
 namespace
@@ -172,6 +187,65 @@ bool TeleManager::hasWaitingConference()
     return !pImpl->msCurrentUUID.isEmpty();
 }
 
+// FIXME this is exported only because of ScDocFuncDemo
+SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
+{
+    fprintf( stderr, "incoming file '%s'\n",
+             rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
+
+    // using the frame::XLoadable interface fails with a DoubleInitializationException
+/*    css::uno::Sequence < css::beans::PropertyValue > aLoadArgs(5);
+    aLoadArgs[0].Name = rtl::OUString( "URL" );
+    aLoadArgs[0].Value <<= rpStr;
+    aLoadArgs[1].Name = rtl::OUString( "FilterName" );
+    aLoadArgs[1].Value <<= rtl::OUString( "calc8" );
+    aLoadArgs[2].Name = rtl::OUString( "Referer" );
+    aLoadArgs[2].Value <<= rtl::OUString( "" );
+    // no interaction handler ?
+    aLoadArgs[3].Name = rtl::OUString( "MacroExecutionMode" );
+    aLoadArgs[3].Value <<= sal_Int32( 3 );
+    aLoadArgs[4].Name = rtl::OUString( "UpdateDocMode" );
+    aLoadArgs[4].Value <<= sal_Int32( 2 );
+    try
+    {
+        css::uno::Reference < css::frame::XLoadable > xLoad(
+                rDocShell.GetBaseModel(), css::uno::UNO_QUERY_THROW );
+        xLoad->load( aLoadArgs );
+    }
+    catch ( css::uno::Exception& e )
+    {
+        fprintf( stderr, "exception when loading '%s' !\n",
+                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+                 } */
+// #2 - tried out the SfxAutoReloadTimer_Impl - shove stuff at the SID_RELOAD slot ...
+
+// #3 - can we use the framework/inc/services/frame.hxx 's "sTargetFrameName"
+// magic to load into our current frame ? ... :-)
+
+    css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
+        ::comphelper::getProcessServiceFactory();
+
+    css::uno::Sequence < css::beans::PropertyValue > args(0);
+// FIXME: should this be hidden before it is synched & ready ? ...
+//    args[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
+//    args[0].Value <<= sal_True;
+    try
+    {
+        css::uno::Reference < css::frame::XComponentLoader > xLoader(
+                ::comphelper::getProcessServiceFactory()->createInstance(
+                        "com.sun.star.frame.Desktop" ),
+                        css::uno::UNO_QUERY_THROW );
+        css::uno::Reference < css::util::XCloseable > xDoc(
+                xLoader->loadComponentFromURL( rStr, "_blank", 0, args ),
+                css::uno::UNO_QUERY_THROW );
+    }
+    catch ( css::uno::Exception& e )
+    {
+        fprintf( stderr, "exception when loading '%s' !\n",
+                 rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+    }
+}
+
 void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel *, gpointer pUserData)
 {
     TeleManager* pManager = reinterpret_cast<TeleManager*>(pUserData);
@@ -187,7 +261,7 @@ void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel
     OString sUuid( OUStringToOString( aUri.copy( first + 1, last - first - 1),
                 RTL_TEXTENCODING_UTF8));
     pImpl->msCurrentUUID = sUuid;
-    pManager->sigFileReceived( aUri );
+    TeleManager_fileReceived( aUri );
 
     g_object_unref( handler);
 }
commit 0e944d30929575e5243fb0f37e9560f3269185cf
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 20:57:43 2012 +0200

    adapt csv parser, don't trim whitespaces
    
    Change-Id: Iff43b5971bbbd2fd31e7dac5e99f2c94c5d75f4c

diff --git a/sc/qa/unit/data/contentCSV/conditionalFormatting.csv b/sc/qa/unit/data/contentCSV/conditionalFormatting.csv
index 6b43e46..ac8d212 100644
--- a/sc/qa/unit/data/contentCSV/conditionalFormatting.csv
+++ b/sc/qa/unit/data/contentCSV/conditionalFormatting.csv
@@ -1,2 +1,2 @@
--$2,$0, 1 1/5, 1.23E+004
-05:35, 0.00 USD, 1500%, 01/02/00
+-$2,$0,1 1/5,1.23E+004
+05:35,0.00 USD,1500%,01/02/00
diff --git a/sc/qa/unit/data/contentCSV/information-functions.csv b/sc/qa/unit/data/contentCSV/information-functions.csv
index e332b8f..660c910 100644
--- a/sc/qa/unit/data/contentCSV/information-functions.csv
+++ b/sc/qa/unit/data/contentCSV/information-functions.csv
@@ -1,18 +1,18 @@
-27, 1, 4, $E$1, $Logical.$A$1, 4, b, v, l
+27,1,4,$E$1,$Logical.$A$1,4,b,v,l
 6
-"=CELL(""ROW"",AA1)", "=ADDRESS(2,3)"
-FALSE, TRUE, FALSE
-FALSE, TRUE, FALSE, TRUE
-TRUE, FALSE, TRUE, TRUE
-1, 0, 0, 1
-TRUE, FALSE, FALSE
-FALSE, FALSE, FALSE, TRUE
-TRUE, FALSE, FALSE, FALSE
-TRUE, TRUE, FALSE
-TRUE, FALSE, TRUE
-1, 0, 0, 1, 0
-TRUE, TRUE, FALSE, FALSE, FALSE, FALSE
-FALSE, TRUE, FALSE, TRUE
-0, 1, 42, 0
+"=CELL(""ROW"",AA1)","=ADDRESS(2,3)"
+FALSE,TRUE,FALSE
+FALSE,TRUE,FALSE,TRUE
+TRUE,FALSE,TRUE,TRUE
+1,0,0,1
+TRUE,FALSE,FALSE
+FALSE,FALSE,FALSE,TRUE
+TRUE,FALSE,FALSE,FALSE
+TRUE,TRUE,FALSE
+TRUE,FALSE,TRUE
+1,0,0,1,0
+TRUE,TRUE,FALSE,FALSE,FALSE,FALSE
+FALSE,TRUE,FALSE,TRUE
+0,1,42,0
 #N/A
-1, 2, 8, 64, 16
+1,2,8,64,16
diff --git a/sc/qa/unit/data/contentCSV/logical-functions.csv b/sc/qa/unit/data/contentCSV/logical-functions.csv
index 2223baf..fd348f7 100644
--- a/sc/qa/unit/data/contentCSV/logical-functions.csv
+++ b/sc/qa/unit/data/contentCSV/logical-functions.csv
@@ -1,6 +1,6 @@
-FALSE, FALSE, FALSE, TRUE, FALSE
+FALSE,FALSE,FALSE,TRUE,FALSE
 FALSE
-TRUE, FALSE
-TRUE, FALSE
-FALSE, TRUE, TRUE, TRUE, TRUE
+TRUE,FALSE
+TRUE,FALSE
+FALSE,TRUE,TRUE,TRUE,TRUE
 TRUE
diff --git a/sc/qa/unit/data/contentCSV/mathematical-functions.csv b/sc/qa/unit/data/contentCSV/mathematical-functions.csv
index cebf207..639bc2e 100644
--- a/sc/qa/unit/data/contentCSV/mathematical-functions.csv
+++ b/sc/qa/unit/data/contentCSV/mathematical-functions.csv
@@ -1,20 +1,20 @@
-0, 1, 10
-0.5, 0, 1
-0, Err:502
-0.5, 0.75, 0.25
+0,1,10
+0.5,0,1
+0,Err:502
+0.5,0.75,0.25
 3.1415926536
 1,1,3,-3,-5,5
 0,2,12,-4,-6,4
-4, Err:502, Err:502
-14, Err:502
-10, Err:502
-3, 48
-48, 3
-0.7071067812, "0.00"
-0.7071067812, -1
+4,Err:502,Err:502
+14,Err:502
+10,Err:502
+3,48
+48,3
+0.7071067812,"0.00"
+0.7071067812,-1
 8
 12
 5
-"1.2", "1", "0", "1000"
-2, 4, Err:502
+"1.2","1","0","1000"
+2,4,Err:502
 
diff --git a/sc/qa/unit/data/contentCSV/numberFormat.csv b/sc/qa/unit/data/contentCSV/numberFormat.csv
index 8120173..001d70f 100644
--- a/sc/qa/unit/data/contentCSV/numberFormat.csv
+++ b/sc/qa/unit/data/contentCSV/numberFormat.csv
@@ -1,6 +1,6 @@
-2.00, -3.00
-40.10%, -22%
-"$12,345.00", "-$1,234.00"
-2.59E+005, -2.35E+03
+2.00,-3.00
+40.10%,-22%
+"$12,345.00","-$1,234.00"
+2.59E+005,-2.35E+03
 25 31/82
-FALSE, TRUE
+FALSE,TRUE
diff --git a/sc/qa/unit/data/contentCSV/spreadsheet-functions.csv b/sc/qa/unit/data/contentCSV/spreadsheet-functions.csv
index 83a33b2..6dbc97a 100644
--- a/sc/qa/unit/data/contentCSV/spreadsheet-functions.csv
+++ b/sc/qa/unit/data/contentCSV/spreadsheet-functions.csv
@@ -1,4 +1,4 @@
-$C$2, $A$1, Sheet.B$2, Sheet!R2C2
-2, 4, 4, 5, 6, 15, 15, 6, 9
-1, 3, 4, 4, 2, 2
-2, 4, 7, 8, 4
+$C$2,$A$1,Sheet.B$2,Sheet!R2C2
+2,4,4,5,6,15,15,6,9
+1,3,4,4,2,2
+2,4,7,8,4
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index 0974e70..e29415c 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -78,6 +78,7 @@ void testFile(rtl::OUString& aFileName, ScDocument* pDoc, SCTAB nTab, StringType
     aConfig.delimiters.push_back(',');
     aConfig.delimiters.push_back(';');
     aConfig.text_qualifier = '"';
+    aConfig.trim_cell_value = false;
 
 
     std::string aContent;
commit 1982693f0d86da16ff0a0342542f3c62ed2deb6e
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 20:57:24 2012 +0200

    enable the csv import test
    
    Change-Id: I15d5a66bbd6daf91f01bc6c075978aea83e04b9d

diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
index 6688e0f..23b298f 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -165,9 +165,7 @@ public:
     CPPUNIT_TEST(testMergedCellsODS);
     CPPUNIT_TEST(testRepeatedColumnsODS);
     CPPUNIT_TEST(testDataValidityODS);
-#if 0
     CPPUNIT_TEST(testBrokenQuotesCSV);
-#endif
     CPPUNIT_TEST(testSharedFormulaXLSX);
     CPPUNIT_TEST(testCellValueXLSX);
     CPPUNIT_TEST(testControlImport);
commit 36599c9615c90031d9bdd796c18ffef9ccbfb38a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 20:55:12 2012 +0200

    don't trim whitespaces in csv parser if not requested
    
    Change-Id: Icf8cfec3093651661c0a2b477e955bbc0fac93fe

diff --git a/sc/inc/orcus/csv_parser.hpp b/sc/inc/orcus/csv_parser.hpp
index 77f8a3c..d1bb596 100644
--- a/sc/inc/orcus/csv_parser.hpp
+++ b/sc/inc/orcus/csv_parser.hpp
@@ -196,7 +196,8 @@ void csv_parser<_Handler>::row()
 
         assert(is_delim(c));
         next();
-        skip_blanks();
+        if(m_config.trim_cell_value)
+            skip_blanks();
     }
 }
 
commit 3bd7a77ecc16c7c1377225d1c11ba0fdaeae0c6e
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Jul 20 18:57:22 2012 +0200

    cache calls to size
    
    Change-Id: I7bb009e1250111f1c05c421ecfb5b62a75ab88d0

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 57a4e87..dba0fc6 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1317,22 +1317,23 @@ void ScColumn::FindDataAreaPos(SCROW& rRow, long nMovY) const
     if (bThere && maItems[nIndex].pCell->IsBlank())
         bThere = false;
 
+    size_t nLastIndex = maItems.size() - 1;
     if (bThere)
     {
         SCROW nLast = rRow;
         SCSIZE nOldIndex = nIndex;
         if (bForward)
         {
-            if (nIndex<maItems.size()-1)
+            if (nIndex<nLastIndex)
             {
                 ++nIndex;
-                while (nIndex<maItems.size()-1 && maItems[nIndex].nRow==nLast+1
+                while (nIndex<nLastIndex && maItems[nIndex].nRow==nLast+1
                                         && !maItems[nIndex].pCell->IsBlank())
                 {
                     ++nIndex;
                     ++nLast;
                 }
-                if (nIndex==maItems.size()-1)
+                if (nIndex==nLastIndex)
                     if (maItems[nIndex].nRow==nLast+1 && !maItems[nIndex].pCell->IsBlank())
                         ++nLast;
             }
@@ -1366,9 +1367,9 @@ void ScColumn::FindDataAreaPos(SCROW& rRow, long nMovY) const
     {
         if (bForward)
         {
-            while (nIndex<maItems.size() && maItems[nIndex].pCell->IsBlank())
+            while (nIndex<nLastIndex+1 && maItems[nIndex].pCell->IsBlank())
                 ++nIndex;
-            if (nIndex<maItems.size())
+            if (nIndex<nLastIndex+1)
                 rRow = maItems[nIndex].nRow;
             else
                 rRow = MAXROW;
commit 658d68a6a9fb574dca7b897998f95bb6121af6e9
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jul 20 19:27:44 2012 +0200

    idlc: do not use -I., deps need absolute paths
    
    (regression from 63c508e3e86a140e35161c45d2be97779746f6cb)
    
    Change-Id: I03ae2cf6fdb229e26d33ef4611a1495590f90df7

diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx
index 5e3d689..68cf263 100644
--- a/idlc/source/idlccompile.cxx
+++ b/idlc/source/idlccompile.cxx
@@ -244,7 +244,6 @@ sal_Int32 compileFile(const OString * pathname)
     lCppArgs.push_back("-DIDL");
     lCppArgs.push_back("-C");
     lCppArgs.push_back("-zI");
-    lCppArgs.push_back("-I.");
 
     OStringBuffer cppArgs(256);
     Options* pOptions = idlc()->getOptions();
commit b0624ee36bd6f0f211d9a483b6f3f1b83d66fead
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Fri Jul 20 18:25:06 2012 +0200

    SwXTextField::attachToRange: avoid unnecessary dynamic_cast
    
    Change-Id: I76aab7b0405db206fa03e03021ac872fc435eec2

diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 1b14610..957cb6b 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -1766,12 +1766,8 @@ void SwXTextField::attachToRange(
                     // The fieldmark always has a (generated) name.
                     pPostItField->SetName(pFieldmark->GetName());
                 else
-                {
                     // The field has a name already, use it.
-                    sw::mark::MarkBase* pMarkBase = dynamic_cast<sw::mark::MarkBase*>(pFieldmark);
-                    if (pMarkBase)
-                        pMarkBase->SetName(pPostItField->GetName());
-                }
+                    pMarksAccess->renameMark(pFieldmark, pPostItField->GetName());
 
                 // Make sure we always insert the field at the end
                 SwPaM aEnd(*aPam.End(), *aPam.End());
commit 0e25ffab731d79d6ab6cfd1b5a409f84ae8e65d6
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Fri Jul 20 18:17:42 2012 +0200

    SwDoc::DeleteRangeImplImpl: don't touch fieldmarks when undo is not available
    
    Change-Id: Ia7fa4510a874a518c8bff3614a38425ee7802ad8

diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 5ae2ab6..f1dedb3 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -1642,8 +1642,8 @@ bool SwDoc::DeleteRangeImplImpl(SwPaM & rPam)
         }
     }
 
-    // Delete fieldmarks before postits.
-    if (pStt->nNode == pEnd->nNode && (pEnd->nContent.GetIndex() - pStt->nContent.GetIndex()) == 1)
+    // Delete fieldmarks before postits, but let's leave them alone during import.
+    if (GetIDocumentUndoRedo().DoesUndo() && pStt->nNode == pEnd->nNode && (pEnd->nContent.GetIndex() - pStt->nContent.GetIndex()) == 1)
     {
         SwTxtNode* pTxtNd = rPam.Start()->nNode.GetNode().GetTxtNode();
         xub_StrLen nIndex = rPam.Start()->nContent.GetIndex();
commit f9130bd2bfefeb79bc94f05498ca18896dca9b8c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 20 16:55:02 2012 +0100

    fix probable cut-and-paste build error
    
    Change-Id: I71a3ea0fd548bb6dcaf2df823fa3d63026b1b3dc

diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk
index 205f860..dba2d30 100644
--- a/extensions/Module_extensions.mk
+++ b/extensions/Module_extensions.mk
@@ -38,7 +38,7 @@ $(eval $(call gb_Module_add_targets,extensions,\
 ))
 
 ifneq ($(filter-out IOS ANDROID,$(OS)),)
-$(eval $(call gb_Module_add_targets,shell,\
+$(eval $(call gb_Module_add_targets,extensions,\
 	Library_ldapbe2 \
 ))
 endif
commit 5f73d3fe71aa0af9527bcd88509397f54484ccb7
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 20 17:51:39 2012 +0200

    fdo#52240 added abbreviated date acceptance patterns for [de-{AT,CH,LI,LU}]
    
    Change-Id: I589cedcd2db0208b03d1e28babbb493912f20c78

diff --git a/i18npool/source/localedata/data/de_AT.xml b/i18npool/source/localedata/data/de_AT.xml
index de57ea9..d657cc5 100644
--- a/i18npool/source/localedata/data/de_AT.xml
+++ b/i18npool/source/localedata/data/de_AT.xml
@@ -52,6 +52,7 @@
     <MeasurementSystem>metric</MeasurementSystem>
   </LC_CTYPE>
   <LC_FORMAT>
+    <DateAcceptancePattern>D.M.</DateAcceptancePattern>
     <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
       <FormatCode>Standard</FormatCode>
     </FormatElement>
diff --git a/i18npool/source/localedata/data/de_CH.xml b/i18npool/source/localedata/data/de_CH.xml
index 494eb69..245e57b 100644
--- a/i18npool/source/localedata/data/de_CH.xml
+++ b/i18npool/source/localedata/data/de_CH.xml
@@ -55,6 +55,7 @@
     <MeasurementSystem>metric</MeasurementSystem>
   </LC_CTYPE>
   <LC_FORMAT>
+    <DateAcceptancePattern>D.M.</DateAcceptancePattern>
     <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
       <FormatCode>Standard</FormatCode>
     </FormatElement>
diff --git a/i18npool/source/localedata/data/de_LI.xml b/i18npool/source/localedata/data/de_LI.xml
index 5be436a..f927431 100644
--- a/i18npool/source/localedata/data/de_LI.xml
+++ b/i18npool/source/localedata/data/de_LI.xml
@@ -52,6 +52,7 @@
     <MeasurementSystem>metric</MeasurementSystem>
   </LC_CTYPE>
   <LC_FORMAT>
+    <DateAcceptancePattern>D.M.</DateAcceptancePattern>
     <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
       <FormatCode>Standard</FormatCode>
     </FormatElement>
diff --git a/i18npool/source/localedata/data/de_LU.xml b/i18npool/source/localedata/data/de_LU.xml
index edbb008..78c85bb 100644
--- a/i18npool/source/localedata/data/de_LU.xml
+++ b/i18npool/source/localedata/data/de_LU.xml
@@ -52,6 +52,7 @@
     <MeasurementSystem>metric</MeasurementSystem>
   </LC_CTYPE>
   <LC_FORMAT>
+    <DateAcceptancePattern>D.M.</DateAcceptancePattern>
     <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
       <FormatCode>Standard</FormatCode>
     </FormatElement>
commit 538d0d857ff0241df210fa5021e3afbe8250414b
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Mon Jul 16 17:40:25 2012 +0100

    android: x86 porting work.

diff --git a/android/experimental/LibreOffice4Android/Makefile b/android/experimental/LibreOffice4Android/Makefile
index d2c5f8e..da87ca7 100644
--- a/android/experimental/LibreOffice4Android/Makefile
+++ b/android/experimental/LibreOffice4Android/Makefile
@@ -16,8 +16,13 @@ APP_PACKAGE=org.libreoffice
 # code are very much self-contained pre-packaged thingies.
 APP_DATA_PATH=/data/data/$(APP_PACKAGE)
 
-SODEST=libs/armeabi-v7a
-OBJLOCAL=obj/local/armeabi-v7a
+ifeq ($(CPU),I)
+ABI_PATH=x86
+else
+ABI_PATH=armeabi-v7a
+endif
+SODEST=libs/$(ABI_PATH)
+OBJLOCAL=obj/local/$(ABI_PATH)
 
 define COPYSO
 cp $(1) $(SODEST)$(if $(2),/$(2)) && $(STRIP) --strip-debug $(SODEST)$(if $(2),/$(2),/$(notdir $(1))) && \
@@ -34,10 +39,10 @@ all: build-ant
 
 properties:
 	echo sdk.dir=$(ANDROID_SDK_HOME) >local.properties
-	echo sdk.dir=$(ANDROID_SDK_HOME) >../../Bootstrap/local.properties 
+	echo sdk.dir=$(ANDROID_SDK_HOME) >../../Bootstrap/local.properties
 
-copy-stuff: 
-# First always clean 
+copy-stuff:
+# First always clean
 	rm -rf libs $(OBJLOCAL)
 	mkdir -p $(SODEST) $(OBJLOCAL)
 #
@@ -134,7 +139,7 @@ copy-stuff:
 	done
 #
 # Then the shared GNU C++ library
-	$(call COPYSO,$(ANDROID_NDK_HOME)/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so)
+	$(call COPYSO,$(ANDROID_NDK_HOME)/sources/cxx-stl/gnu-libstdc++/libs/$(ABI_PATH)/libgnustl_shared.so)
 #
 # Then other "assets". Let the directory structure under assets mimic
 # that under solver for now.
@@ -234,7 +239,7 @@ copy-stuff:
 # Then gdbserver and gdb.setup so that we can debug with ndk-gdb.
 #
 	cp $(ANDROID_NDK_HOME)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver $(SODEST)
-	echo set solib-search-path ./obj/local/armeabi-v7a >$(SODEST)/gdb.setup
+	echo set solib-search-path ./obj/local/$(ABI_PATH) >$(SODEST)/gdb.setup
 
 build-ant: copy-stuff properties
 #
@@ -269,4 +274,4 @@ run:
 
 clean: properties
 	$(ANT) clean
-	rm -rf assets libs $(SODEST) $(OBJLOCAL)
+	rm -rf assets libs obj
diff --git a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
index c21fb76..bc43fb4 100644
--- a/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
+++ b/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx
@@ -39,7 +39,7 @@
 
 /*See: http://people.redhat.com/drepper/selinux-mem.html*/
 #if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \
-    || defined(NETBSD) || defined(DRAGONFLY)
+    || defined(NETBSD) || defined(DRAGONFLY) || defined (ANDROID)
 #define USE_DOUBLE_MMAP
 #endif
 
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
index c814132..e48bfce 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
@@ -42,7 +42,8 @@ ENABLE_EXCEPTIONS=TRUE
     "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCOPENBSDIgcc3" || \
     "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCFREEBSDIgcc3" || \
     "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCNETBSDIgcc3" || \
-    "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCDRAGONFLYIgcc3"
+    "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCDRAGONFLYIgcc3" || \
+    "$(COM)$(OS)$(CPU)$(COMNAME)" == "GCCANDROIDIgcc3" || \
 
 # In case someone enabled the non-standard -fomit-frame-pointer which does not
 # work with the .cxx sources in this directory:
diff --git a/configure.in b/configure.in
index b41fa09..980a2fb 100644
--- a/configure.in
+++ b/configure.in
@@ -129,18 +129,25 @@ ANDROID_ARCH=
 ANDROID_NDK_HOME=
 if test -n "$with_android_ndk"; then
    ANDROID_NDK_HOME=$with_android_ndk
+
    # Set up a lot of pre-canned defaults
    # What if the NDK at some point starts including several toolchains for different
    # gcc versions (like some 3rd-party improved NDK builds already do)?
    # Then the use of a wildcard below will break.
-   ANDROID_ABI_PREBUILT_BIN=`echo $ANDROID_NDK_HOME/toolchains/$with_android_arch-linux*/prebuilt/*/bin`
+   if test "$with_android_arch" = "arm"; then
+        ANDROID_ABI_PREBUILT_BIN=`echo $ANDROID_NDK_HOME/toolchains/$with_android_arch-linux*/prebuilt/*/bin`
+        android_gcc_prefix=arm-linux-androideabi
+   else
+        ANDROID_ABI_PREBUILT_BIN=`echo $ANDROID_NDK_HOME/toolchains/$with_android_arch-*/prebuilt/*/bin`
+        android_gcc_prefix=i686-android-linux
+   fi
 
    test -z "$SYSBASE" && export SYSBASE=$ANDROID_NDK_HOME/platforms/android-9/arch-$with_android_arch
-   test -z "$AR" && AR=$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-ar
-   test -z "$NM" && NM=$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-nm
-   test -z "$OBJDUMP" && OBJDUMP=$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-objdump
-   test -z "$RANLIB" && RANLIB=$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-ranlib
-   test -z "$STRIP" && STRIP=$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-strip
+   test -z "$AR" && AR=$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-ar
+   test -z "$NM" && NM=$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-nm
+   test -z "$OBJDUMP" && OBJDUMP=$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-objdump
+   test -z "$RANLIB" && RANLIB=$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-ranlib
+   test -z "$STRIP" && STRIP=$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-strip
 
    if test "$with_android_arch" = "arm"; then
       ANDROIDCFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8 --sysroot $ANDROID_NDK_HOME/platforms/android-9/arch-arm -L$ANDROID_NDK_HOME/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a"
@@ -149,8 +156,8 @@ if test -n "$with_android_ndk"; then
       ANDROIDCFLAGS="-march=atom --sysroot $ANDROID_NDK_HOME/platforms/android-9/arch-x86 -L$ANDROID_NDK_HOME/sources/cxx-stl/gnu-libstdc++/libs/x86"
       ANDROIDCXXFLAGS="$ANDROIDCFLAGS -I $ANDROID_NDK_HOME/sources/cxx-stl/gnu-libstdc++/include -I$ANDROID_NDK_HOME/sources/cxx-stl/gnu-libstdc++/libs/x86/include"
    fi
-   test -z "$CC" && CC="$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-gcc $ANDROIDCFLAGS"
-   test -z "$CXX" && CXX="$ANDROID_ABI_PREBUILT_BIN/$with_android_arch-linux-androideabi-g++ $ANDROIDCXXFLAGS"
+   test -z "$CC" && CC="$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-gcc $ANDROIDCFLAGS"
+   test -z "$CXX" && CXX="$ANDROID_ABI_PREBUILT_BIN/$android_gcc_prefix-g++ $ANDROIDCXXFLAGS"
    ANDROID_ARCH=$with_android_arch
 fi
 AC_SUBST(ANDROID_ARCH)
@@ -3318,6 +3325,12 @@ linux-androideabi*)
         RTL_ARCH=ARM_EABI
         OUTPATH=unxandr
         ;;
+    i*86)
+        CPU=I
+        CPUNAME=INTEL
+        RTL_ARCH=x86
+        OUTPATH=unxandri
+        ;;
     *)
         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
         ;;
diff --git a/distro-configs/LibreOfficeAndroidX86.conf b/distro-configs/LibreOfficeAndroidX86.conf
new file mode 100644
index 0000000..58bac85
--- /dev/null
+++ b/distro-configs/LibreOfficeAndroidX86.conf
@@ -0,0 +1,26 @@
+--host=i686-linux-androideabi
+--with-android-arch=x86
+--disable-cairo-canvas
+--disable-cups
+--disable-ext-pdfimport
+--disable-ext-presenter-console
+--disable-ext-presenter-minimizer
+--disable-ext-report-builder
+--disable-gconf
+--disable-gnome-vfs
+--disable-gstreamer
+--disable-lockdown
+--disable-mozilla
+--disable-odk
+--disable-opengl
+--disable-postgresql-sdbc
+--disable-python
+--disable-randr
+--disable-randr-link
+--disable-systray
+--disable-xmlsec
+--enable-mergelibs
+--enable-python=internal
+--without-junit
+--without-ppds
+--without-stlport
diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk
index 49b015e..205f860 100644
--- a/extensions/Module_extensions.mk
+++ b/extensions/Module_extensions.mk
@@ -32,12 +32,17 @@ $(eval $(call gb_Module_add_targets,extensions,\
 	AllLangResTarget_scn \
 	AllLangResTarget_upd \
 	Library_abp \
-	Library_ldapbe2 \
 	Library_log \
 	Library_res \
 	Library_scn \
 ))
 
+ifneq ($(filter-out IOS ANDROID,$(OS)),)
+$(eval $(call gb_Module_add_targets,shell,\
+	Library_ldapbe2 \
+))
+endif
+
 ifneq (,$(filter DBCONNECTIVITY,$(BUILD_TYPE)))
 $(eval $(call gb_Module_add_targets,extensions,\
 	AllLangResTarget_bib \
diff --git a/icu/icu4c-android.patch b/icu/icu4c-android.patch
index dea0e0a..1eb910a 100644
--- a/icu/icu4c-android.patch
+++ b/icu/icu4c-android.patch
@@ -24,8 +24,8 @@
  # Check to see if genccode can generate simple assembly.
  GENCCODE_ASSEMBLY=
  case "${host}" in
-+*-*-linux-androideabi)
-+    GENCCODE_ASSEMBLY="-a gcc-android"
++arm-*-linux-androideabi)
++    GENCCODE_ASSEMBLY="-a gcc-android-arm"
 +    ;;
  *-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu)
      if test "$GCC" = yes; then
diff --git a/icu/icu4c-build.patch b/icu/icu4c-build.patch
index 6ab5ea3..75c4139 100644
--- a/icu/icu4c-build.patch
+++ b/icu/icu4c-build.patch
@@ -15,7 +15,7 @@
  
          ".long ","",HEX_0X
      },
-+    {"gcc-android",
++    {"gcc-android-arm",
 +	"\t.arch armv5te\n"
 +	"\t.fpu softvfp\n"
 +	"\t.eabi_attribute 20, 1\n"
diff --git a/openldap/makefile.mk b/openldap/makefile.mk
index 018c67e..e12587a 100644
--- a/openldap/makefile.mk
+++ b/openldap/makefile.mk
@@ -21,9 +21,9 @@ all:
 	@echo "Therefore the version provided here does not need to be built in addition."
 .ENDIF
 
-.IF "$(OS)"=="WNT"
+.IF "$(OS)"=="WNT" || "$(OS)"=="ANDROID" || "$(OS)"=="IOS"
 all:
-	@echo "Openldap is not needed on Windows."
+	@echo "Openldap is not needed on Windows, Android or iOS."
 .ENDIF
 
 # --- Files --------------------------------------------------------
diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c
index 677ff1c..e764879 100644
--- a/sal/android/lo-bootstrap.c
+++ b/sal/android/lo-bootstrap.c
@@ -1235,6 +1235,8 @@ lo_dlcall_argc_argv(void *function,
     return result;
 }
 
+#ifndef X86
+
 /* There is a bug in std::type_info::operator== and
  * std::type_info::before() in libgnustl_shared.so in NDK r7 at
  * least. They compare the type name pointers instead of comparing the
@@ -1407,6 +1409,21 @@ patch_libgnustl_shared(void)
           &replacement_method_before_arm);
 }
 
+// static native void patch_libgnustl_shared();
+
+__attribute__ ((visibility("default")))
+void
+Java_org_libreoffice_android_Bootstrap_patch_1libgnustl_1shared(JNIEnv* env,
+                                                                jobject clazz)
+{
+    (void) env;
+    (void) clazz;
+
+    patch_libgnustl_shared();
+}
+
+#endif // not X86
+
 #define UNPACK_TREE "/assets/unpack"
 
 static int
@@ -1520,19 +1537,6 @@ extract_files(const char *prefix)
     lo_apk_closedir(tree);
 }
 
-// static native void patch_libgnustl_shared();
-
-__attribute__ ((visibility("default")))
-void
-Java_org_libreoffice_android_Bootstrap_patch_1libgnustl_1shared(JNIEnv* env,
-                                                                jobject clazz)
-{
-    (void) env;
-    (void) clazz;
-
-    patch_libgnustl_shared();
-}
-
 // static native void extract_files();
 
 __attribute__ ((visibility("default")))
diff --git a/solenv/gbuild/platform/ANDROID_INTEL_GCC.mk b/solenv/gbuild/platform/ANDROID_INTEL_GCC.mk
new file mode 100644
index 0000000..28afab6
--- /dev/null
+++ b/solenv/gbuild/platform/ANDROID_INTEL_GCC.mk
@@ -0,0 +1,104 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2010 Red Hat, Inc., Caolán McNamara <caolanm at redhat.com>
+#  (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+#please make generic modifications to unxgcc.mk or linux.mk
+gb_CPUDEFS += -DX86
+gb_COMPILERDEFAULTOPTFLAGS := -Os
+gb_CXXFLAGS += -fno-omit-frame-pointer
+gb_CFLAGS += -fno-omit-frame-pointer
+
+include $(GBUILDDIR)/platform/unxgcc.mk
+
+# Link almost everything with -lgnustl_shared
+gb_STDLIBS := \
+	gnustl_shared
+
+gb_Library_PLAINLIBS_NONE := \
+	android \
+	gnustl_shared \
+
+# No unit testing can be run
+gb_CppunitTest_CPPTESTPRECOMMAND := :
+
+# Re-define this from unxgcc.mk with some small but important
+# changes. Just temporarily done this way, shm_get promised to
+# eventually enable this to be done this in some more elegant and less
+# redundant fashion.
+
+gb_LinkTarget_LDFLAGS += \
+    -Wl,-z,defs \
+	-Wl,--as-needed \
+	-Wl,--no-add-needed
+
+define gb_LinkTarget__command_dynamiclink
+$(call gb_Helper_abbreviate_dirs,\
+	mkdir -p $(dir $(1)) && \
+	$(gb_CXX) \
+		-shared \
+		$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+		$(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \
+		$(subst \d,$$,$(RPATH)) \
+		$(T_LDFLAGS) \
+		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+		$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+		$(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
+		$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
+		$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+		$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
+		-Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
+		$(LIBS) \
+		$(patsubst lib%.a,-l%,$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))))) \
+		-o $(1))
+endef
+
+# Prefix UNO library filenames with "lib"
+gb_Library_FILENAMES := \
+	$(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
+	$(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+	$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+	$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+	$(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+	$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+	$(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_UNOEXT)) \
+	$(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_UNOEXT)) \
+	$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+
+# No DT_RPATH or DT_RUNPATH support in the Bionic dynamic linker so
+# don't bother generating such.
+
+define gb_Library_get_rpath
+endef
+
+define gb_Executable_get_rpath
+endef
+
+gb_LinkTarget_LDFLAGS := $(subst -Wl$(COMMA)-rpath-link$(COMMA)$(SYSBASE)/lib:$(SYSBASE)/usr/lib,,$(gb_LinkTarget_LDFLAGS))
+
+gb_Library__set_soversion_script_platform = 
+
+# vim: set noet sw=4:
diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
index fa304d9..619c2e8 100644
--- a/solenv/inc/unx.mk
+++ b/solenv/inc/unx.mk
@@ -95,6 +95,10 @@
 .INCLUDE : unxandr.mk
 .ENDIF
 
+.IF "$(COM)$(OS)$(CPU)" == "GCCANDROIDI"
+.INCLUDE : unxandr.mk
+.ENDIF
+
 .IF "$(COM)$(OS)$(CPU)" == "GCCLINUXA"
 .INCLUDE : unxlnga.mk
 .ENDIF
diff --git a/solenv/inc/unxandr.mk b/solenv/inc/unxandr.mk
index f9408b9..5065aa1 100644
--- a/solenv/inc/unxandr.mk
+++ b/solenv/inc/unxandr.mk
@@ -29,7 +29,11 @@
 
 CDEFAULTOPT=-Os
 .INCLUDE : unxgcc.mk
+.IF "$(CPU)" == "I"
+CDEFS+=-DX86
+.ELSE
 CDEFS+=-DARM32
+.ENDIF
 CFLAGS+=-fno-omit-frame-pointer
 
 # Override some macros set by unxgcc.mk
diff --git a/sw/CppunitTest_sw_filters_test.mk b/sw/CppunitTest_sw_filters_test.mk
index 3b6bcec..1b573ab 100644
--- a/sw/CppunitTest_sw_filters_test.mk
+++ b/sw/CppunitTest_sw_filters_test.mk
@@ -90,8 +90,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_filters_test,\
     ucb/source/core/ucb1 \
     ucb/source/ucp/file/ucpfile1 \
     unoxml/source/service/unoxml \
-	$(if $(filter DESKTOP,$(BUILD_TYPE)), \
-	    xmlhelp/util/ucpchelp1) \
+	$(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \
 ))
 
 $(eval $(call gb_CppunitTest_use_configuration,sw_filters_test))
diff --git a/sw/CppunitTest_sw_subsequent_odfimport.mk b/sw/CppunitTest_sw_subsequent_odfimport.mk
index 006610e..84ee9f7 100644
--- a/sw/CppunitTest_sw_subsequent_odfimport.mk
+++ b/sw/CppunitTest_sw_subsequent_odfimport.mk
@@ -83,7 +83,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_subsequent_odfimport,\
     ucb/source/ucp/file/ucpfile1 \
     unotools/util/utl \
     unoxml/source/service/unoxml \
-    xmlhelp/util/ucpchelp1 \
+	$(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \
 ))
 
 $(eval $(call gb_CppunitTest_use_configuration,sw_subsequent_odfimport))
commit 74f5749e35630e6e07e49fd4020890e9a2065965
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 20 13:55:07 2012 +0100

    behind (hinter) -> after
    
    Change-Id: I3bc9ca4e20bfaa5d14fbd5bbbb827444071b19ad

diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx
index 945e1a2..7f33324 100644
--- a/sw/source/core/txtnode/modeltoviewhelper.cxx
+++ b/sw/source/core/txtnode/modeltoviewhelper.cxx
@@ -31,7 +31,7 @@ sal_uInt32 ConvertToViewPosition( const ConversionMap* pMap, sal_uInt32 nModelPo
     if ( !pMap )
         return nRet;
 
-    // Search for entry behind nPos:
+    // Search for entry after nPos:
     ConversionMap::const_iterator aIter;
     for ( aIter = pMap->begin(); aIter != pMap->end(); ++aIter )
     {
@@ -60,7 +60,7 @@ ModelPosition ConvertToModelPosition( const ConversionMap* pMap, sal_uInt32 nVie
     if ( !pMap )
         return aRet;
 
-    // Search for entry behind nPos:
+    // Search for entry after nPos:
     ConversionMap::const_iterator aIter;
     for ( aIter = pMap->begin(); aIter != pMap->end(); ++aIter )
     {
commit 387e743d95a3abb21511e845ee98d55aae3cbdcd
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 20 11:00:48 2012 +0100

    very suspicious combination of used SbxValues and unused aRes
    
    Looks like a regression from 4d949990ef1438fcae98262519c6af2b47e5ccf5 where for
    every other case we did...
    
    -    XubString aRes;
    +    ::rtl::OUString aRes;
         aTmp.eType = SbxSTRING;
    -    aTmp.pString = &aRes;
    +    aTmp.pOUString = &aRes;
    
    while for this case we did only...
    
         SbxValues aTmp;
         XubString aRes;
         aTmp.eType = SbxSTRING;
    -    aTmp.pString = &aRes;
    
    Change-Id: I106cfbcc0fc0b27a9adcbb243d0d69c65b167005

diff --git a/basic/source/sbx/sbxstr.cxx b/basic/source/sbx/sbxstr.cxx
index abab0ee..9576afe 100644
--- a/basic/source/sbx/sbxstr.cxx
+++ b/basic/source/sbx/sbxstr.cxx
@@ -134,8 +134,9 @@
     if( ( p->eType & (~SbxBYREF) ) == SbxDOUBLE )
     {
         SbxValues aTmp;
-        XubString aRes;
+        rtl::OUString aRes;
         aTmp.eType = SbxSTRING;
+        aTmp.pOUString = &aRes;
         if( p->eType == SbxDOUBLE )
             ImpPutDouble( &aTmp, p->nDouble, sal_True );    // true = bCoreString
         else
commit ce005f061518ce3f7357b29310e444063a52c632
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 20 09:54:40 2012 +0100

    XubString->rtl::OUString
    
    Change-Id: I584ff580e3c8eee401f07c858ecbd63e5b0bf980

diff --git a/basic/inc/basic/sbmod.hxx b/basic/inc/basic/sbmod.hxx
index 25d83a1..f981211 100644
--- a/basic/inc/basic/sbmod.hxx
+++ b/basic/inc/basic/sbmod.hxx
@@ -99,7 +99,7 @@ public:
     virtual void    SetParent( SbxObject* );
     virtual void    Clear();
 
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 
     virtual const String&   GetSource() const;
     const ::rtl::OUString&  GetSource32() const;
@@ -164,7 +164,7 @@ public:
     ~SbClassModuleObject();
 
     // Overridden to support NameAccess etc.
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 
     virtual void SFX_NOTIFY( SfxBroadcaster&, const TypeId&, const SfxHint& rHint, const TypeId& );
 
diff --git a/basic/inc/basic/sbobjmod.hxx b/basic/inc/basic/sbobjmod.hxx
index 1e37280..d1f1c0f 100644
--- a/basic/inc/basic/sbobjmod.hxx
+++ b/basic/inc/basic/sbobjmod.hxx
@@ -41,7 +41,7 @@ protected:
 public:
     TYPEINFO();
     SbObjModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsVbaCompatible );
-    virtual SbxVariable* Find( const XubString& rName, SbxClassType t );
+    virtual SbxVariable* Find( const rtl::OUString& rName, SbxClassType t );
 
     virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
                              const SfxHint& rHint, const TypeId& rHintType );
@@ -68,7 +68,7 @@ public:
     TYPEINFO();
     SbUserFormModule( const String& rName, const com::sun::star::script::ModuleInfo& mInfo, bool bIsVBACompat );
     virtual ~SbUserFormModule();
-    virtual SbxVariable* Find( const XubString& rName, SbxClassType t );
+    virtual SbxVariable* Find( const rtl::OUString& rName, SbxClassType t );
     void ResetApiObj( bool bTriggerTerminateEvent = true );
     void Unload();
     void Load();
@@ -94,11 +94,11 @@ class BASIC_DLLPUBLIC SbUserFormModuleInstance : public SbUserFormModule
     SbUserFormModule* m_pParentModule;
 
 public:
-    SbUserFormModuleInstance( SbUserFormModule* pParentModule, const String& rName,
+    SbUserFormModuleInstance( SbUserFormModule* pParentModule, const rtl::OUString& rName,
         const com::sun::star::script::ModuleInfo& mInfo, bool bIsVBACompat );
 
-    virtual sal_Bool IsClass( const String& ) const;
-    virtual SbxVariable* Find( const XubString& rName, SbxClassType t );
+    virtual sal_Bool IsClass( const rtl::OUString& ) const;
+    virtual SbxVariable* Find( const rtl::OUString& rName, SbxClassType t );
 };
 
 
diff --git a/basic/inc/basic/sbstar.hxx b/basic/inc/basic/sbstar.hxx
index 96a9c39..1b0cd71 100644
--- a/basic/inc/basic/sbstar.hxx
+++ b/basic/inc/basic/sbstar.hxx
@@ -126,7 +126,7 @@ public:
     static String   GetErrorMsg();
     static xub_StrLen GetErl();
 
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
     virtual sal_Bool Call( const String&, SbxArray* = NULL );
 
     SbxArray*       GetModules() { return pModules; }
diff --git a/basic/inc/basic/sbstdobj.hxx b/basic/inc/basic/sbstdobj.hxx
index 6b29559..c9befbe 100644
--- a/basic/inc/basic/sbstdobj.hxx
+++ b/basic/inc/basic/sbstdobj.hxx
@@ -36,7 +36,7 @@ class BASIC_DLLPUBLIC SbStdFactory : public SbxFactory
 public:
     SbStdFactory();
 
-    virtual SbxObject*  CreateObject( const String& rClassName );
+    virtual SbxObject*  CreateObject( const rtl::OUString& rClassName );
 };
 
 //--------------------
@@ -59,7 +59,7 @@ public:
     TYPEINFO();
 
     SbStdPicture();
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 
     Graphic GetGraphic() const { return aGraphic; }
     void    SetGraphic( const Graphic& rGrf ) { aGraphic = rGrf; }
@@ -93,7 +93,7 @@ public:
     TYPEINFO();
 
     SbStdFont();
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 
     void    SetBold( sal_Bool bB ) { bBold = bB; }
     sal_Bool    IsBold() const { return bBold; }
@@ -131,7 +131,7 @@ public:
     TYPEINFO();
 
     SbStdClipboard();
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 };
 
 #endif
diff --git a/basic/inc/basic/sbx.hxx b/basic/inc/basic/sbx.hxx
index 51e47c7..04b46de 100644
--- a/basic/inc/basic/sbx.hxx
+++ b/basic/inc/basic/sbx.hxx
@@ -88,7 +88,7 @@ public:
     SbxInfo();
     SbxInfo( const String&, sal_uInt32 );
 
-    void                AddParam( const String&, SbxDataType, sal_uInt16=SBX_READ );
+    void                AddParam( const rtl::OUString&, SbxDataType, sal_uInt16=SBX_READ );
     const SbxParamInfo* GetParam( sal_uInt16 n ) const; // index starts with 1!
     const String&       GetComment() const              { return aComment; }
     const String&       GetHelpFile() const             { return aHelpFile; }
@@ -182,7 +182,7 @@ public:
     const String& GetAlias( sal_uInt16 );
     void PutAlias( const String&, sal_uInt16 );
     SbxVariable* FindUserData( sal_uInt32 nUserData );
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
 
     // Additional methods for 32-bit indices
     sal_uInt32 Count32() const;
@@ -274,7 +274,7 @@ public:
     SbxCollection( const SbxCollection& );
     SbxCollection& operator=( const SbxCollection& );
     virtual SbxVariable* FindUserData( sal_uInt32 nUserData );
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
     virtual void Clear();
 };
 
diff --git a/basic/inc/basic/sbxfac.hxx b/basic/inc/basic/sbxfac.hxx
index af73df0..e36cbe6 100644
--- a/basic/inc/basic/sbxfac.hxx
+++ b/basic/inc/basic/sbxfac.hxx
@@ -21,11 +21,11 @@
 #define __SBX_SBX_FACTORY_HXX
 
 #include <basic/sbxdef.hxx>
+#include <rtl/ustring.hxx>
 #include "basicdllapi.h"
 
 class SbxBase;
 class SbxObject;
-class String;
 
 class BASIC_DLLPUBLIC SbxFactory
 {
@@ -35,7 +35,7 @@ public:
     SbxFactory( sal_Bool bLast=sal_False )  { bHandleLast = bLast; }
     sal_Bool IsHandleLast( void )       { return bHandleLast; }
     virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
-    virtual SbxObject* CreateObject( const String& );
+    virtual SbxObject* CreateObject( const rtl::OUString& );
 };
 
 #endif
diff --git a/basic/inc/basic/sbxobj.hxx b/basic/inc/basic/sbxobj.hxx
index 9a0c4c3..e65f71b 100644
--- a/basic/inc/basic/sbxobj.hxx
+++ b/basic/inc/basic/sbxobj.hxx
@@ -56,7 +56,7 @@ public:
     virtual SbxClassType GetClass() const;
     virtual void Clear();
 
-    virtual sal_Bool  IsClass( const String& ) const;
+    virtual sal_Bool  IsClass( const rtl::OUString& ) const;
     const String& GetClassName() const { return aClassName; }
     void          SetClassName( const String &rNew ) { aClassName = rNew; }
     // Default-Property
@@ -64,7 +64,7 @@ public:
     void SetDfltProperty( const String& r );
     // Search for an element
     virtual SbxVariable* FindUserData( sal_uInt32 nUserData );
-    virtual SbxVariable* Find( const String&, SbxClassType );
+    virtual SbxVariable* Find( const rtl::OUString&, SbxClassType );
     SbxVariable* FindQualified( const String&, SbxClassType );
     // Quick-Call-Interface for Methods
     virtual sal_Bool Call( const String&, SbxArray* = NULL );
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 49f35e5..8535808 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -404,24 +404,15 @@ SbxBase* SbiFactory::Create( sal_uInt16 nSbxId, sal_uInt32 nCreator )
     return NULL;
 }
 
-SbxObject* SbiFactory::CreateObject( const String& rClass )
+SbxObject* SbiFactory::CreateObject( const rtl::OUString& rClass )
 {
-    if( rClass.EqualsIgnoreCaseAscii( "StarBASIC" ) )
+    if( rClass.equalsIgnoreAsciiCase( "StarBASIC" ) )
         return new StarBASIC( NULL );
-    else
-    if( rClass.EqualsIgnoreCaseAscii( "StarBASICModule" ) )
-    {
-        String aEmpty;
-        return new SbModule( aEmpty );
-    }
-    else
-    if( rClass.EqualsIgnoreCaseAscii( "Collection" ) )
-    {
-        String aCollectionName( RTL_CONSTASCII_USTRINGPARAM("Collection") );
-        return new BasicCollection( aCollectionName );
-    }
-    else
-    if( rClass.EqualsIgnoreCaseAscii( "FileSystemObject" ) )
+    else if( rClass.equalsIgnoreAsciiCase( "StarBASICModule" ) )
+        return new SbModule( rtl::OUString() );
+    else if( rClass.equalsIgnoreAsciiCase( "Collection" ) )
+        return new BasicCollection( rtl::OUString("Collection"));
+    else if( rClass.equalsIgnoreAsciiCase( "FileSystemObject" ) )
     {
         try
         {
@@ -431,7 +422,8 @@ SbxObject* SbiFactory::CreateObject( const String& rClass )
             return new SbUnoObject( aServiceName, uno::makeAny( xInterface ) );
         }
         catch(const Exception& )
-        {}
+        {
+        }
     }
 
     return NULL;
@@ -443,7 +435,7 @@ class SbOLEFactory : public SbxFactory
 {
 public:
     virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
-    virtual SbxObject* CreateObject( const String& );
+    virtual SbxObject* CreateObject( const rtl::OUString& );
 };
 
 SbxBase* SbOLEFactory::Create( sal_uInt16, sal_uInt32 )
@@ -454,7 +446,7 @@ SbxBase* SbOLEFactory::Create( sal_uInt16, sal_uInt32 )
 
 SbUnoObject* createOLEObject_Impl( const ::rtl::OUString& aType );  // sbunoobj.cxx
 
-SbxObject* SbOLEFactory::CreateObject( const String& rClassName )
+SbxObject* SbOLEFactory::CreateObject( const rtl::OUString& rClassName )
 {
     SbxObject* pRet = createOLEObject_Impl( rClassName );
     return pRet;
@@ -468,7 +460,7 @@ class SbFormFactory : public SbxFactory
 {
 public:
     virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
-    virtual SbxObject* CreateObject( const String& );
+    virtual SbxObject* CreateObject( const rtl::OUString& );
 };
 
 SbxBase* SbFormFactory::Create( sal_uInt16, sal_uInt32 )
@@ -477,7 +469,7 @@ SbxBase* SbFormFactory::Create( sal_uInt16, sal_uInt32 )
     return NULL;
 }
 
-SbxObject* SbFormFactory::CreateObject( const String& rClassName )
+SbxObject* SbFormFactory::CreateObject( const rtl::OUString& rClassName )
 {
     if( SbModule* pMod = GetSbData()->pMod )
     {
@@ -571,7 +563,7 @@ class SbTypeFactory : public SbxFactory
 {
 public:
     virtual SbxBase* Create( sal_uInt16 nSbxId, sal_uInt32 = SBXCR_SBX );
-    virtual SbxObject* CreateObject( const String& );
+    virtual SbxObject* CreateObject( const rtl::OUString& );
 };
 
 SbxBase* SbTypeFactory::Create( sal_uInt16, sal_uInt32 )
@@ -580,7 +572,7 @@ SbxBase* SbTypeFactory::Create( sal_uInt16, sal_uInt32 )
     return NULL;
 }
 
-SbxObject* SbTypeFactory::CreateObject( const String& rClassName )
+SbxObject* SbTypeFactory::CreateObject( const rtl::OUString& rClassName )
 {
     SbxObject* pRet = NULL;
     SbModule* pMod = GetSbData()->pMod;
@@ -767,7 +759,7 @@ void SbClassModuleObject::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType
     handleProcedureProperties( rBC, rHint );
 }
 
-SbxVariable* SbClassModuleObject::Find( const XubString& rName, SbxClassType t )
+SbxVariable* SbClassModuleObject::Find( const rtl::OUString& rName, SbxClassType t )
 {
     SbxVariable* pRes = SbxObject::Find( rName, t );
     if( pRes )
@@ -863,7 +855,7 @@ SbxBase* SbClassFactory::Create( sal_uInt16, sal_uInt32 )
     return NULL;
 }
 
-SbxObject* SbClassFactory::CreateObject( const String& rClassName )
+SbxObject* SbClassFactory::CreateObject( const rtl::OUString& rClassName )
 {
     SbxObjectRef xToUseClassModules = xClassModules;
 
@@ -1270,7 +1262,7 @@ void StarBASIC::DeInitAllModules( void )
 // method and a module with the given name is found the search continues
 // for entrypoint "Main".
 // If this fails again a conventional search over objects is performend.
-SbxVariable* StarBASIC::Find( const String& rName, SbxClassType t )
+SbxVariable* StarBASIC::Find( const rtl::OUString& rName, SbxClassType t )
 {
     static String aMainStr( RTL_CONSTASCII_USTRINGPARAM("Main") );
 
@@ -1282,7 +1274,7 @@ SbxVariable* StarBASIC::Find( const String& rName, SbxClassType t )
     {
         if( t == SbxCLASS_DONTCARE || t == SbxCLASS_OBJECT )
         {
-            if( rName.EqualsIgnoreCaseAscii( RTLNAME ) )
+            if( rName.equalsIgnoreAsciiCase( RTLNAME ) )
                 pRes = pRtl;
         }
         if( !pRes )
@@ -1901,7 +1893,7 @@ static sal_uInt16 nCountHash = 0, nAddHash, nItemHash, nRemoveHash;
 SbxInfoRef BasicCollection::xAddInfo = NULL;
 SbxInfoRef BasicCollection::xItemInfo = NULL;
 
-BasicCollection::BasicCollection( const XubString& rClass )
+BasicCollection::BasicCollection( const rtl::OUString& rClass )
              : SbxObject( rClass )
 {
     if( !nCountHash )
@@ -1955,7 +1947,7 @@ void BasicCollection::Initialize()
     }
 }
 
-SbxVariable* BasicCollection::Find( const XubString& rName, SbxClassType t )
+SbxVariable* BasicCollection::Find( const rtl::OUString& rName, SbxClassType t )
 {
     SbxVariable* pFind = SbxObject::Find( rName, t );
     return pFind;
@@ -1973,20 +1965,20 @@ void BasicCollection::SFX_NOTIFY( SfxBroadcaster& rCst, const TypeId& rId1,
         sal_Bool bRequestInfo = sal_Bool( nId == SBX_HINT_INFOWANTED );
         SbxVariable* pVar = p->GetVar();
         SbxArray* pArg = pVar->GetParameters();
-        XubString aVarName( pVar->GetName() );
+        rtl::OUString aVarName( pVar->GetName() );
         if( bRead || bWrite )
         {
             if( pVar->GetHashCode() == nCountHash
-                  && aVarName.EqualsIgnoreCaseAscii( pCountStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pCountStr ) )
                 pVar->PutLong( xItemArray->Count32() );
             else if( pVar->GetHashCode() == nAddHash
-                  && aVarName.EqualsIgnoreCaseAscii( pAddStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pAddStr ) )
                 CollAdd( pArg );
             else if( pVar->GetHashCode() == nItemHash
-                  && aVarName.EqualsIgnoreCaseAscii( pItemStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pItemStr ) )
                 CollItem( pArg );
             else if( pVar->GetHashCode() == nRemoveHash
-                  && aVarName.EqualsIgnoreCaseAscii( pRemoveStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pRemoveStr ) )
                 CollRemove( pArg );
             else
                 SbxObject::SFX_NOTIFY( rCst, rId1, rHint, rId2 );
@@ -1995,10 +1987,10 @@ void BasicCollection::SFX_NOTIFY( SfxBroadcaster& rCst, const TypeId& rId1,
         else if ( bRequestInfo )
         {
             if( pVar->GetHashCode() == nAddHash
-                  && aVarName.EqualsIgnoreCaseAscii( pAddStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pAddStr ) )
                 pVar->SetInfo( xAddInfo );
             else if( pVar->GetHashCode() == nItemHash
-                  && aVarName.EqualsIgnoreCaseAscii( pItemStr ) )
+                  && aVarName.equalsIgnoreAsciiCaseAscii( pItemStr ) )
                 pVar->SetInfo( xItemInfo );
         }
     }
diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx
index 54b0804..4a8a8f7 100644
--- a/basic/source/classes/sbunoobj.cxx
+++ b/basic/source/classes/sbunoobj.cxx
@@ -2657,7 +2657,7 @@ SbUnoProperty::~SbUnoProperty()
 {}
 
 
-SbxVariable* SbUnoObject::Find( const String& rName, SbxClassType t )
+SbxVariable* SbUnoObject::Find( const rtl::OUString& rName, SbxClassType t )
 {
     static Reference< XIdlMethod > xDummyMethod;
     static Property aDummyProp;
@@ -2802,9 +2802,9 @@ SbxVariable* SbUnoObject::Find( const String& rName, SbxClassType t )
 
     if( !pRes )
     {
-        if( rName.EqualsIgnoreCaseAscii( ID_DBG_SUPPORTEDINTERFACES ) ||
-            rName.EqualsIgnoreCaseAscii( ID_DBG_PROPERTIES ) ||
-            rName.EqualsIgnoreCaseAscii( ID_DBG_METHODS ) )
+        if( rName.equalsIgnoreAsciiCase(ID_DBG_SUPPORTEDINTERFACES) ||
+            rName.equalsIgnoreAsciiCase(ID_DBG_PROPERTIES) ||
+            rName.equalsIgnoreAsciiCase(ID_DBG_METHODS) )
         {
             // Create
             implCreateDbgProperties();
@@ -2949,7 +2949,7 @@ SbxBase* SbUnoFactory::Create( sal_uInt16, sal_uInt32 )
     return NULL;
 }
 
-SbxObject* SbUnoFactory::CreateObject( const String& rClassName )
+SbxObject* SbUnoFactory::CreateObject( const rtl::OUString& rClassName )
 {
     return Impl_CreateUnoStruct( rClassName );
 }
@@ -3413,10 +3413,8 @@ SbUnoClass* findUnoClass( const ::rtl::OUString& rName )
     return pUnoClass;
 }
 
-SbxVariable* SbUnoClass::Find( const XubString& rName, SbxClassType t )

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list