[ooo-build-commit] .: patches/dev300

Muthu Subramanian sumuthu at kemper.freedesktop.org
Tue Jul 20 00:23:26 PDT 2010


 patches/dev300/apply                       |    4 
 patches/dev300/ooxml-sc-brk.diff           |   13 ++
 patches/dev300/ooxml-sc-docpropsimp.diff   |   96 ++++++++++++++++
 patches/dev300/ooxml-sc-page-date-imp.diff |  174 +++++++++++++++++++++++++++++
 patches/dev300/ooxml-sc-paneexport.diff    |   21 +++
 5 files changed, 308 insertions(+)

New commits:
commit 70f2a99a04384ea53bd4d9fcd9266357456b7620
Author: Muthu Subramanian K <sumuthu at novell.com>
Date:   Tue Jul 20 12:48:07 2010 +0530

    OOXML Updates. import: docprops & page-date and paneexp.
    
    * patches/dev300/apply:
    * patches/dev300/ooxml-sc-brk.diff:
    * patches/dev300/ooxml-sc-docpropsimp.diff:
    * patches/dev300/ooxml-sc-page-date-imp.diff:
    * patches/dev300/ooxml-sc-paneexport.diff:

diff --git a/patches/dev300/apply b/patches/dev300/apply
index 61e077b..71f5a65 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3043,7 +3043,11 @@ ooxml-filters.diff, cbosdo
 ooxml-filters-calc.diff, muthusuba
 ooxml-sc-page-date.diff, muthusuba
 ooxml-schema.diff, muthusuba
+ooxml-sc-paneexport.diff, muthusuba
 desktop-cmd-bulk-conversion.diff, flr-muthusuba
+ooxml-sc-docpropsimp.diff, muthusuba
+ooxml-sc-page-date-imp.diff, muthusuba
+ooxml-sc-brk.diff, muthusuba
 
 # depends on pptx-autoplay-fix.diff
 ooxml-autoplay-fix.diff, tml
diff --git a/patches/dev300/ooxml-sc-brk.diff b/patches/dev300/ooxml-sc-brk.diff
new file mode 100644
index 0000000..7eebdab
--- /dev/null
+++ b/patches/dev300/ooxml-sc-brk.diff
@@ -0,0 +1,13 @@
+--- oox/source/xls/worksheetfragment.cxx	2010-07-16 21:21:27.000000000 +0530
++++ oox/source/xls/worksheetfragment.cxx	2010-07-19 14:46:13.000000000 +0530
+@@ -570,8 +570,8 @@ void OoxWorksheetFragment::importBrk( co
+ {
+     PageBreakModel aModel;
+     aModel.mnColRow = rAttribs.getInteger( XML_id, 0 );
+-    aModel.mnMin    = rAttribs.getInteger( XML_id, 0 );
+-    aModel.mnMax    = rAttribs.getInteger( XML_id, 0 );
++    aModel.mnMin    = rAttribs.getInteger( XML_min, aModel.mnColRow );
++    aModel.mnMax    = rAttribs.getInteger( XML_max, aModel.mnColRow );
+     aModel.mbManual = rAttribs.getBool( XML_man, false );
+     setPageBreak( aModel, bRowBreak );
+ }
diff --git a/patches/dev300/ooxml-sc-docpropsimp.diff b/patches/dev300/ooxml-sc-docpropsimp.diff
new file mode 100644
index 0000000..8433ef3
--- /dev/null
+++ b/patches/dev300/ooxml-sc-docpropsimp.diff
@@ -0,0 +1,96 @@
+--- oox/inc/oox/core/xmlfilterbase.hxx	2010-05-11 19:14:26.000000000 +0530
++++ oox/inc/oox/core/xmlfilterbase.hxx	2010-07-14 13:40:19.000000000 +0530
+@@ -224,6 +224,8 @@ public:
+         @return *this
+      */
+     XmlFilterBase& exportDocumentProperties( ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentProperties > xProperties );
++    
++    void importDocumentProperties() throw();
+ 
+ protected:
+     virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >
+--- oox/source/core/xmlfilterbase.cxx	2010-05-11 19:14:26.000000000 +0530
++++ oox/source/core/xmlfilterbase.cxx	2010-07-14 13:40:30.000000000 +0530
+@@ -88,6 +88,22 @@ using ::sax_fastparser::FastSerializerHe
+ using ::sax_fastparser::FSHelperPtr;
+ using namespace ::com::sun::star;
+ 
++
++#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
++#include <com/sun/star/document/XOOXMLDocumentPropertiesImporter.hpp>
++#include <com/sun/star/beans/XPropertySet.hpp>
++#include <comphelper/processfactory.hxx>
++#include <comphelper/mediadescriptor.hxx>
++#include <oox/core/filterdetect.hxx>
++#include <comphelper/storagehelper.hxx>
++
++using ::com::sun::star::uno::XComponentContext;
++using ::com::sun::star::document::XOOXMLDocumentPropertiesImporter;
++using ::com::sun::star::document::XDocumentPropertiesSupplier;
++using ::com::sun::star::beans::XPropertySet;
++using ::com::sun::star::lang::XComponent;
++
++
+ namespace oox {
+ namespace core {
+ 
+@@ -114,6 +130,22 @@ XmlFilterBaseImpl::XmlFilterBaseImpl() :
+ }
+ 
+ // ============================================================================
++static Reference< XComponentContext > lcl_getComponentContext(Reference< XMultiServiceFactory > aFactory)
++{
++    Reference< XComponentContext > xContext;
++    try
++    {
++        Reference< XPropertySet > xFactProp( aFactory, UNO_QUERY );
++        if( xFactProp.is() )
++            xFactProp->getPropertyValue( OUString::createFromAscii("DefaultContext") ) >>= xContext;
++    }
++    catch( Exception& )
++    {}
++
++    return xContext;
++}
++
++// ============================================================================
+ 
+ namespace 
+ { 
+@@ -187,6 +219,25 @@ XmlFilterBase::~XmlFilterBase()
+ 
+ // ----------------------------------------------------------------------------
+ 
++void XmlFilterBase::importDocumentProperties() throw()
++{
++    Reference< XMultiServiceFactory > xFactory( getGlobalFactory(), UNO_QUERY );
++    MediaDescriptor aMediaDesc( getMediaDescriptor() );
++    Reference< XInputStream > xInputStream;
++    ::oox::core::FilterDetect aDetector( xFactory );
++    xInputStream = aDetector.extractUnencryptedPackage( aMediaDesc );
++    Reference< XComponent > xModel( getModel(), UNO_QUERY );
++    Reference< XComponentContext > xContext = lcl_getComponentContext(getGlobalFactory());
++    Reference< XStorage > xDocumentStorage (
++            ::comphelper::OStorageHelper::GetStorageOfFormatFromInputStream( OFOPXML_STORAGE_FORMAT_STRING, xInputStream ) );
++    Reference< XInterface > xTemp = xContext->getServiceManager()->createInstanceWithContext(
++            ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.OOXMLDocumentPropertiesImporter")),
++            xContext);
++    Reference< XOOXMLDocumentPropertiesImporter > xImporter( xTemp, UNO_QUERY );
++    Reference< XDocumentPropertiesSupplier > xPropSupplier( xModel, UNO_QUERY);
++    xImporter->importProperties( xDocumentStorage, xPropSupplier->getDocumentProperties() );
++}
++
+ OUString XmlFilterBase::getFragmentPathFromFirstType( const OUString& rType )
+ {
+     // importRelations() caches the relations map for subsequence calls
+--- oox/source/xls/excelfilter.cxx	2010-07-16 21:21:27.000000000 +0530
++++ oox/source/xls/excelfilter.cxx	2010-07-17 09:13:49.000000000 +0530
+@@ -131,6 +131,8 @@ bool ExcelFilter::importDocument() throw
+         WorkbookHelperRoot aHelper( *this );
+         bRet = aHelper.isValid() && importFragment( new OoxWorkbookFragment( aHelper, aWorkbookPath ) );
+     }
++    if( bRet )
++        importDocumentProperties();
+     return bRet;
+ }
+ 
diff --git a/patches/dev300/ooxml-sc-page-date-imp.diff b/patches/dev300/ooxml-sc-page-date-imp.diff
new file mode 100644
index 0000000..b514fb8
--- /dev/null
+++ b/patches/dev300/ooxml-sc-page-date-imp.diff
@@ -0,0 +1,174 @@
+--- oox/util/makefile.mk	2010-06-03 03:22:23.000000000 +0530
++++ oox/util/makefile.mk	2010-07-16 13:39:27.000000000 +0530
+@@ -77,6 +77,7 @@ SHL1STDLIBS= \
+         $(SVLLIB)		\
+         $(UNOTOOLSLIB)		\
+         $(MSFILTERLIB)	\
++        $(XMLOFFLIB)    \
+         $(TOOLSLIB)
+ 
+ # link openssl, copied this bit from ucb/source/ucp/webdav/makefile.mk
+--- oox/inc/oox/xls/pagesettings.hxx	2010-06-03 03:22:23.000000000 +0530
++++ oox/inc/oox/xls/pagesettings.hxx	2010-07-15 17:18:24.000000000 +0530
+@@ -58,6 +58,8 @@ struct PageSettingsModel
+     double              mfHeaderMargin;         /// Margin between top edge of page and begin of header.
+     double              mfFooterMargin;         /// Margin between end of footer and bottom edge of page.
+     sal_Int32           mnPaperSize;            /// Paper size (enumeration).
++    sal_Int32           mnPaperWidth;           /// Paper width in twips
++    sal_Int32           mnPaperHeight;          /// Paper height in twips
+     sal_Int32           mnCopies;               /// Number of copies to print.
+     sal_Int32           mnScale;                /// Page scale (zoom in percent).
+     sal_Int32           mnFirstPage;            /// First page number.
+--- oox/source/xls/pagesettings.cxx	2010-06-03 03:22:23.000000000 +0530
++++ oox/source/xls/pagesettings.cxx	2010-07-16 19:52:02.000000000 +0530
+@@ -49,6 +49,8 @@
+ #include "oox/xls/excelhandlers.hxx"
+ #include "oox/xls/stylesbuffer.hxx"
+ #include "oox/xls/unitconverter.hxx"
++#include "tools/mapunit.hxx"
++#include "xmloff/xmluconv.hxx"
+ 
+ using ::rtl::OString;
+ using ::rtl::OStringBuffer;
+@@ -129,6 +131,8 @@ PageSettingsModel::PageSettingsModel() :
+     mfHeaderMargin( OOX_MARGIN_DEFAULT_HF ),
+     mfFooterMargin( OOX_MARGIN_DEFAULT_HF ),
+     mnPaperSize( 1 ),
++    mnPaperWidth( 0 ),
++    mnPaperHeight( 0 ),
+     mnCopies( 1 ),
+     mnScale( 100 ),
+     mnFirstPage( 1 ),
+@@ -187,8 +191,13 @@ void PageSettings::importPageMargins( co
+ 
+ void PageSettings::importPageSetup( const Relations& rRelations, const AttributeList& rAttribs )
+ {
++    OUString aStr;
+     maModel.maBinSettPath   = rRelations.getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+     maModel.mnPaperSize     = rAttribs.getInteger( XML_paperSize, 1 );
++    aStr                    = rAttribs.getString ( XML_paperWidth, OUString() );
++    SvXMLUnitConverter::convertMeasure( maModel.mnPaperWidth, aStr, MAP_100TH_MM );
++    aStr                    = rAttribs.getString ( XML_paperHeight, OUString() );
++    SvXMLUnitConverter::convertMeasure( maModel.mnPaperHeight, aStr, MAP_100TH_MM );
+     maModel.mnCopies        = rAttribs.getInteger( XML_copies, 1 );
+     maModel.mnScale         = rAttribs.getInteger( XML_scale, 100 );
+     maModel.mnFirstPage     = rAttribs.getInteger( XML_firstPageNumber, 1 );
+@@ -208,8 +217,13 @@ void PageSettings::importPageSetup( cons
+ 
+ void PageSettings::importChartPageSetup( const Relations& rRelations, const AttributeList& rAttribs )
+ {
++    OUString aStr;
+     maModel.maBinSettPath   = rRelations.getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+     maModel.mnPaperSize     = rAttribs.getInteger( XML_paperSize, 1 );
++    aStr                    = rAttribs.getString ( XML_paperWidth, OUString() );
++    SvXMLUnitConverter::convertMeasure( maModel.mnPaperWidth, aStr, MAP_100TH_MM );
++    aStr                    = rAttribs.getString ( XML_paperHeight, OUString() );
++    SvXMLUnitConverter::convertMeasure( maModel.mnPaperHeight, aStr, MAP_100TH_MM );
+     maModel.mnCopies        = rAttribs.getInteger( XML_copies, 1 );
+     maModel.mnFirstPage     = rAttribs.getInteger( XML_firstPageNumber, 1 );
+     maModel.mnHorPrintRes   = rAttribs.getInteger( XML_horizontalDpi, 600 );
+@@ -1141,13 +1155,29 @@ void PageSettingsConverter::writePageSet
+         bLandscape = bChartSheet;
+ 
+     // paper size
+-    if( rModel.mbValidSettings && (0 < rModel.mnPaperSize) && (rModel.mnPaperSize < static_cast< sal_Int32 >( STATIC_ARRAY_SIZE( spPaperSizeTable ) )) )
++    if( !rModel.mbValidSettings )
+     {
+-        const ApiPaperSize& rPaperSize = spPaperSizeTable[ rModel.mnPaperSize ];
+-        Size aSize( rPaperSize.mnWidth, rPaperSize.mnHeight );
+-        if( bLandscape )
+-            ::std::swap( aSize.Width, aSize.Height );
+-        rPropSet.setProperty( PROP_Size, aSize );
++        Size aSize;
++        bool bValid = false;
++
++        if( (0 < rModel.mnPaperSize) && (rModel.mnPaperSize < static_cast< sal_Int32 >( STATIC_ARRAY_SIZE( spPaperSizeTable ) )) )
++        {
++            const ApiPaperSize& rPaperSize = spPaperSizeTable[ rModel.mnPaperSize ];
++            aSize = Size( rPaperSize.mnWidth, rPaperSize.mnHeight );
++            bValid = true;
++        }
++        if( rModel.mnPaperWidth > 0 && rModel.mnPaperHeight > 0 )
++        {
++            aSize = Size( rModel.mnPaperWidth, rModel.mnPaperHeight );
++            bValid = true;
++        }
++
++        if( bValid )
++        {
++            if( bLandscape )
++                ::std::swap( aSize.Width, aSize.Height );
++            rPropSet.setProperty( PROP_Size, aSize );
++        }
+     }
+ 
+     // header/footer
+--- oox/inc/oox/xls/workbooksettings.hxx	2010-05-11 19:09:37.000000000 +0530
++++ oox/inc/oox/xls/workbooksettings.hxx	2010-07-14 16:07:06.000000000 +0530
+@@ -57,6 +57,7 @@ struct WorkbookSettingsModel
+     sal_Int32           mnUpdateLinksMode;      /// Specifies how external links are updated.
+     sal_Int32           mnDefaultThemeVer;      /// Default theme version.
+     bool                mbDateMode1904;         /// True = null date is 1904-01-01.
++    bool                mbDateCompatibility;    /// False = null date is 1899-12-30.
+     bool                mbSaveExtLinkValues;    /// True = save cached cell values for external links.
+ 
+     explicit            WorkbookSettingsModel();
+@@ -148,7 +149,7 @@ public:
+ 
+ private:
+     /** Updates date mode and unit converter nulldate. */
+-    void                setDateMode( bool bDateMode1904 );
++    void                setDateMode( bool bDateMode1904, bool bDateCompatibility=true );
+ 
+ private:
+     FileSharingModel    maFileSharing;
+--- oox/source/xls/workbooksettings.cxx	2010-05-11 19:14:03.000000000 +0530
++++ oox/source/xls/workbooksettings.cxx	2010-07-14 16:17:16.000000000 +0530
+@@ -35,6 +35,7 @@
+ #include "oox/helper/propertyset.hxx"
+ #include "oox/helper/recordinputstream.hxx"
+ #include "oox/core/filterbase.hxx"
++#include "oox/core/xmlfilterbase.hxx"
+ #include "oox/xls/biffinputstream.hxx"
+ #include "oox/xls/unitconverter.hxx"
+ 
+@@ -136,7 +141,7 @@ void WorkbookSettings::importWorkbookPr(
+     maBookSettings.mnUpdateLinksMode   = rAttribs.getToken( XML_updateLinks, XML_userSet );
+     maBookSettings.mnDefaultThemeVer   = rAttribs.getInteger( XML_defaultThemeVersion, -1 );
+     maBookSettings.mbSaveExtLinkValues = rAttribs.getBool( XML_saveExternalLinkValues, true );
+-    setDateMode( rAttribs.getBool( XML_date1904, false ) );
++    setDateMode( rAttribs.getBool( XML_date1904, false ), rAttribs.getBool( XML_dateCompatibility, true ) );
+ }
+ 
+ void WorkbookSettings::importCalcPr( const AttributeList& rAttribs )
+@@ -341,13 +346,27 @@ sal_Int16 WorkbookSettings::getApiShowOb
+ 
+ Date WorkbookSettings::getNullDate() const
+ {
+-    static const Date saDate1900( 30, 12, 1899 ), saDate1904( 1, 1, 1904 );
++    static const Date saDate1900                 ( 30, 12, 1899 );
++    static const Date saDate1904                 ( 1, 1, 1904 );
++    static const Date saDateBackCompatibility1900( 31, 12, 1899 );
++
++    if( getOoxFilter().getVersion() == oox::core::ISOIEC_29500_2008 )
++    {
++        if( !maBookSettings.mbDateCompatibility )
++            return saDate1900;
++
++        return maBookSettings.mbDateMode1904 ? saDate1904 : 
++                                               saDateBackCompatibility1900;
++    }
++    
+     return maBookSettings.mbDateMode1904 ? saDate1904 : saDate1900;
+ }
+ 
+-void WorkbookSettings::setDateMode( bool bDateMode1904 )
++void WorkbookSettings::setDateMode( bool bDateMode1904, bool bDateCompatibility )
+ {
+-    maBookSettings.mbDateMode1904 = bDateMode1904;
++    maBookSettings.mbDateMode1904      = bDateMode1904;
++    maBookSettings.mbDateCompatibility = bDateCompatibility;
++
+     getUnitConverter().finalizeNullDate( getNullDate() );
+ }
+ 
diff --git a/patches/dev300/ooxml-sc-paneexport.diff b/patches/dev300/ooxml-sc-paneexport.diff
new file mode 100644
index 0000000..e85710f
--- /dev/null
+++ b/patches/dev300/ooxml-sc-paneexport.diff
@@ -0,0 +1,21 @@
+--- sc/source/filter/excel/xestream.cxx	2010-06-03 15:44:46.000000000 +0530
++++ sc/source/filter/excel/xestream.cxx	2010-07-06 19:10:49.000000000 +0530
+@@ -47,6 +47,7 @@
+ #include "compiler.hxx"
+ 
+ #include <../../ui/inc/docsh.hxx>
++#include <../../ui/inc/viewdata.hxx>
+ #include <excdoc.hxx>
+ 
+ #include <oox/core/tokens.hxx>
+@@ -1146,6 +1148,10 @@ bool XclExpXmlStream::exportDocument() t
+             {
+                 pShell->SetError( nError, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
+             }
+ #endif
++    // Get the viewsettings before processing
++    if( pShell->GetViewData() )
++        pShell->GetViewData()->WriteExtOptions( mpRoot->GetExtDocOptions() );
++ 
+     OUString const workbook = CREATE_OUSTRING( "xl/workbook.xml" );
+     PushStream( CreateOutputStream( workbook, workbook,


More information about the ooo-build-commit mailing list