[ooo-build-commit] Branch 'ooo/master' - dbaccess/source reportdesign/source

Jan Holesovsky kendy at kemper.freedesktop.org
Mon Jul 6 17:01:58 PDT 2009


 dbaccess/source/core/api/SingleSelectQueryComposer.cxx |   56 +++++++++++------
 dbaccess/source/core/inc/SingleSelectQueryComposer.hxx |    4 -
 dbaccess/source/filter/xml/xmlExport.cxx               |    6 +
 dbaccess/source/ui/browser/brwctrlr.cxx                |   13 +--
 dbaccess/source/ui/control/dbtreelistbox.cxx           |   41 +++++++++++-
 dbaccess/source/ui/inc/WCPage.hxx                      |   10 ++-
 dbaccess/source/ui/inc/WCopyTable.hxx                  |    3 
 dbaccess/source/ui/inc/dbu_misc.hrc                    |    5 -
 dbaccess/source/ui/misc/DExport.cxx                    |    1 
 dbaccess/source/ui/misc/RtfReader.cxx                  |    7 +-
 dbaccess/source/ui/misc/WCPage.cxx                     |   10 ++-
 dbaccess/source/ui/misc/WCopyTable.cxx                 |    1 
 dbaccess/source/ui/misc/WizardPages.hrc                |    1 
 dbaccess/source/ui/misc/WizardPages.src                |   23 +++---
 dbaccess/source/ui/uno/copytablewizard.cxx             |   19 +++++
 reportdesign/source/filter/xml/xmlExport.cxx           |    7 +-
 reportdesign/source/ui/report/DesignView.cxx           |    4 -
 reportdesign/source/ui/report/ReportController.cxx     |   16 +++-
 18 files changed, 164 insertions(+), 63 deletions(-)

New commits:
commit d0685c00bee21991354644a506c5f7476b3c07a0
Author: Vladimir Glazounov <vg at openoffice.org>
Date:   Mon Jul 6 09:00:26 2009 +0000

    CWS-TOOLING: integrate CWS dba32d
    2009-06-30 08:58:13 +0200 fs  r273488 : merging latest changes from CWS dba32c
    2009-06-29 11:40:42 +0200 oj  r273459 : #i101652# fix token handling
    2009-06-26 09:27:30 +0200 oj  r273394 : #i101994# wrong condition checked
    2009-06-22 12:09:04 +0200 fs  r273210 : merging latest changes from CWS dba32c
    2009-06-18 11:01:06 +0200 fs  r273108 : merge latest changes from CWS dba32c
    2009-06-17 14:19:33 +0200 oj  r273072 : handle images at the correct position
    2009-06-17 13:37:19 +0200 oj  r273067 : compile error
    2009-06-17 13:35:58 +0200 oj  r273066 : #i102201# handle images
    2009-06-17 13:27:21 +0200 oj  r273065 : #i80917# disable checkbox for internal copy
    2009-06-17 13:25:38 +0200 oj  r273064 : #i80917# disable checkbox for internal copy
    2009-06-15 12:59:16 +0200 fs  r272978 : merging latest changes from CWS dba32c
    2009-06-15 10:45:58 +0200 fs  r272967 : CWS-TOOLING: rebase CWS dba32d to trunk at 272827 (milestone: DEV300:m50)
    2009-06-15 08:41:05 +0200 fs  r272960 : merging changes from CWS dba32c (resulting from rebasing dba32c to m50)
    2009-06-03 12:22:32 +0200 fs  r272554 : merging latest changes from CWS dba32c
    2009-06-03 11:11:27 +0200 fs  r272549 : #i100818# special treatment for DataAwareness not needed anymore
    2009-06-03 11:07:01 +0200 fs  r272548 : #i10000# removed package declaration
    2009-06-03 09:21:03 +0200 oj  r272537 : #i93465# save window states
    2009-06-03 08:56:25 +0200 oj  r272535 : solve compiler warnings
    2009-06-03 08:55:02 +0200 oj  r272534 : #i102295# export shapes i the first cell
    2009-06-03 07:35:18 +0200 oj  r272533 : #i101994# check for - and + prefix
    2009-06-03 06:51:38 +0200 oj  r272531 : #i101463# use uncomposed table name
    2009-06-03 06:33:06 +0200 oj  r272530 : #i102019# word corrected
    2009-06-02 14:58:28 +0200 fs  r272507 : #i102443# call initializeParser from LoadFinished
    2009-06-02 14:30:10 +0200 oj  r272504 : #i102019# introduce static ints
    2009-06-02 13:51:02 +0200 oj  r272501 : #i102439# wrong method used
    2009-06-02 13:44:09 +0200 fs  r272500 : #i102440# when tampering with Order/GroupBy, reset the cached columns
    2009-06-02 10:53:01 +0200 fs  r272487 : #i102234# preserve the original filter when using a 0=1 filter
    2009-06-02 10:21:21 +0200 oj  r272486 : #i100535# handle time values as float
    2009-06-02 10:19:07 +0200 fs  r272485 : merging latest changes from CWS dba32c
    2009-05-29 16:00:15 +0200 fs  r272467 : merging latest changes from dba32c
    2009-05-29 15:31:25 +0200 fs  r272462 : merging latest changes from dba32c
    2009-05-29 10:58:03 +0200 oj  r272438 : #101135# export embedded-text
    2009-05-29 08:17:57 +0200 oj  r272431 : #i80917# make attribute not optional
    2009-05-29 08:17:32 +0200 oj  r272430 : remoe unused token
    2009-05-29 07:17:15 +0200 oj  r272429 : #i80917# make attribute not optional
    2009-05-28 12:48:14 +0200 oj  r272401 : #i102201# insert images in context menu
    2009-05-28 12:47:44 +0200 oj  r272400 : #i80917# add new attribute to handle first line
    2009-05-28 12:16:12 +0200 oj  r272397 : #i96134# add / to path when it doesn't exist
    2009-05-28 12:11:08 +0200 oj  r272390 : #i80917# add new attribute to handle first line
    2009-05-28 11:33:35 +0200 oj  r272388 : #i101652# add new checkbox to handle header line as column names
    2009-05-28 11:30:15 +0200 oj  r272387 : #i101652# add localize
    2009-05-28 11:15:53 +0200 oj  r272386 : merge from dba32c
    2009-05-28 09:08:25 +0200 fs  r272378 : merged a build fix from CWS dba32c

diff --git a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
index 0101072..7549126 100644
--- a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
+++ b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
@@ -579,8 +579,13 @@ void OSingleSelectQueryComposer::setSingleAdditiveClause( SQLPart _ePart, const
 
     // set the query
     setQuery_Impl(aSql.makeStringAndClear());
-    // parameters may also have changed
-    clearParametersCollection();
+
+    // clear column collections which (might) have changed
+    clearColumns( ParameterColumns );
+    if ( _ePart == Order )
+        clearColumns( OrderColumns );
+    if ( _ePart == Group )
+        clearColumns( GroupByColumns );
 
     // also, since the "additive filter" change, we need to rebuild our "additive" statement
     aSql = m_aPureSelectSQL;
@@ -676,26 +681,42 @@ Reference< XNameAccess > SAL_CALL OSingleSelectQueryComposer::getColumns(  ) thr
         bCase = m_xMetaData->supportsMixedCaseQuotedIdentifiers();
         aSelectColumns = m_aSqlIterator.getSelectColumns();
 
-        ::rtl::OUString sSql = m_aPureSelectSQL;
-        sSql += STR_WHERE;
-        sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" 0 = 1 "));
-        ::rtl::OUString sGroupBy = getSQLPart(Group,m_aSqlIterator,sal_True);
+        ::rtl::OUStringBuffer aSQL;
+        aSQL.append( m_aPureSelectSQL );
+        aSQL.append( STR_WHERE );
+
+        // preserve the original WHERE clause
+        // #i102234# / 2009-06-02 / frank.schoenheit at sun.com
+        ::rtl::OUString sOriginalWhereClause = getSQLPart( Where, m_aSqlIterator, sal_False );
+        if ( sOriginalWhereClause.getLength() )
+        {
+            aSQL.appendAscii( " ( 0 = 1 ) AND ( " );
+            aSQL.append( sOriginalWhereClause );
+            aSQL.appendAscii( " ) " );
+        }
+        else
+        {
+            aSQL.appendAscii( " ( 0 = 1 ) " );
+        }
+
+        ::rtl::OUString sGroupBy = getSQLPart( Group, m_aSqlIterator, sal_True );
         if ( sGroupBy.getLength() )
-            sSql += sGroupBy;
+            aSQL.append( sGroupBy );
 
+        ::rtl::OUString sSQL( aSQL.makeStringAndClear() );
         // normalize the statement so that it doesn't contain any application-level features anymore
         ::rtl::OUString sError;
-        const ::std::auto_ptr< OSQLParseNode > pStatementTree( m_aSqlParser.parseTree( sError, sSql, false ) );
+        const ::std::auto_ptr< OSQLParseNode > pStatementTree( m_aSqlParser.parseTree( sError, sSQL, false ) );
         DBG_ASSERT( pStatementTree.get(), "OSingleSelectQueryComposer::getColumns: could not parse the column retrieval statement!" );
         if ( pStatementTree.get() )
-            if ( !pStatementTree->parseNodeToExecutableStatement( sSql, m_xConnection, m_aSqlParser, NULL ) )
+            if ( !pStatementTree->parseNodeToExecutableStatement( sSQL, m_xConnection, m_aSqlParser, NULL ) )
                 break;
 
         Reference< XResultSetMetaData > xResultSetMeta;
         Reference< XResultSetMetaDataSupplier > xResMetaDataSup;
         try
         {
-            xPreparedStatement.set( m_xConnection->prepareStatement( sSql ), UNO_QUERY_THROW );
+            xPreparedStatement.set( m_xConnection->prepareStatement( sSQL ), UNO_QUERY_THROW );
             xResMetaDataSup.set( xPreparedStatement, UNO_QUERY_THROW );
             xResultSetMeta.set( xResMetaDataSup->getMetaData(), UNO_QUERY_THROW );
         }
@@ -707,7 +728,7 @@ Reference< XNameAccess > SAL_CALL OSingleSelectQueryComposer::getColumns(  ) thr
             Reference< XPropertySet > xStatementProps( xStatement, UNO_QUERY_THROW );
             try { xStatementProps->setPropertyValue( PROPERTY_ESCAPE_PROCESSING, makeAny( sal_False ) ); }
             catch ( const Exception& ) { DBG_UNHANDLED_EXCEPTION(); }
-            xResMetaDataSup.set( xStatement->executeQuery( sSql ), UNO_QUERY_THROW );
+            xResMetaDataSup.set( xStatement->executeQuery( sSQL ), UNO_QUERY_THROW );
             xResultSetMeta.set( xResMetaDataSup->getMetaData(), UNO_QUERY_THROW );
         }
 
@@ -1243,14 +1264,15 @@ Reference< XIndexAccess > SAL_CALL OSingleSelectQueryComposer::getParameters(  )
     return m_aCurrentColumns[ParameterColumns];
 }
 // -----------------------------------------------------------------------------
-void OSingleSelectQueryComposer::clearParametersCollection()
+void OSingleSelectQueryComposer::clearColumns( const EColumnType _eType )
 {
-    RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OSingleSelectQueryComposer::clearParametersCollection" );
-    if ( m_aCurrentColumns[ParameterColumns] )
+    RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OSingleSelectQueryComposer::clearColumns" );
+    OPrivateColumns* pColumns = m_aCurrentColumns[ _eType ];
+    if ( pColumns != NULL )
     {
-        m_aCurrentColumns[ParameterColumns]->disposing();
-        m_aColumnsCollection.push_back(m_aCurrentColumns[ParameterColumns]);
-        m_aCurrentColumns[ParameterColumns] = NULL;
+        pColumns->disposing();
+        m_aColumnsCollection.push_back( pColumns );
+        m_aCurrentColumns[ _eType ] = NULL;
     }
 }
 // -----------------------------------------------------------------------------
diff --git a/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx b/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx
index 19b9913..0943b6a 100644
--- a/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx
+++ b/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx
@@ -160,8 +160,8 @@ namespace dbaccess
         sal_Int32 getPredicateType(::connectivity::OSQLParseNode * _pPredicate) const;
         // clears all Columns,Parameters and tables and insert it to their vectors
         void clearCurrentCollections();
-        // clear only the parameter columns
-        void clearParametersCollection();
+        // clears the columns collection given by EColumnType
+        void clearColumns( const EColumnType _eType );
 
         /** retrieves a particular part of a statement
             @param _rIterator
diff --git a/dbaccess/source/filter/xml/xmlExport.cxx b/dbaccess/source/filter/xml/xmlExport.cxx
index 0e6fc48..f671ae2 100644
--- a/dbaccess/source/filter/xml/xmlExport.cxx
+++ b/dbaccess/source/filter/xml/xmlExport.cxx
@@ -629,7 +629,11 @@ void ODBExport::exportConnectionData()
                 if ( sOrigUrl == sFileName )
                 {
                     ::svt::OFileNotation aTransformer( sFileName );
-                    AddAttribute(XML_NAMESPACE_XLINK,XML_HREF,GetRelativeReference(aTransformer.get( ::svt::OFileNotation::N_URL )));
+                    ::rtl::OUStringBuffer sURL( aTransformer.get( ::svt::OFileNotation::N_URL ) );
+                    if ( sURL.charAt(sURL.getLength()-1) != '/' )
+                        sURL.append(sal_Unicode('/'));
+
+                    AddAttribute(XML_NAMESPACE_XLINK,XML_HREF,GetRelativeReference(sURL.makeStringAndClear()));
                 } // if ( sOrigUrl == sFileName )
                 else
                     AddAttribute(XML_NAMESPACE_XLINK,XML_HREF,sOrigUrl);
diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx
index b2187bf..ec55448 100644
--- a/dbaccess/source/ui/browser/brwctrlr.cxx
+++ b/dbaccess/source/ui/browser/brwctrlr.cxx
@@ -1068,13 +1068,11 @@ void SbaXDataBrowserController::propertyChange(const PropertyChangeEvent& evt) t
     // the filter or the sort criterias have changed ? -> update our parser
     if (evt.PropertyName.equals(PROPERTY_ACTIVECOMMAND))
     {
-        initializeParser();
         if (m_xParser.is())
             DO_SAFE( m_xParser->setElementaryQuery(::comphelper::getString(evt.NewValue)), "SbaXDataBrowserController::propertyChange : could not forward the new query to my parser !" );
     }
     else if (evt.PropertyName.equals(PROPERTY_FILTER))
     {
-        initializeParser();
         if ( m_xParser.is() && m_xParser->getFilter() != ::comphelper::getString(evt.NewValue))
         {
             DO_SAFE( m_xParser->setFilter(::comphelper::getString(evt.NewValue)), "SbaXDataBrowserController::propertyChange : could not forward the new filter to my parser !" );
@@ -1083,7 +1081,6 @@ void SbaXDataBrowserController::propertyChange(const PropertyChangeEvent& evt) t
     }
     else if (evt.PropertyName.equals(PROPERTY_HAVING_CLAUSE))
     {
-        initializeParser();
         if ( m_xParser.is() && m_xParser->getHavingClause() != ::comphelper::getString(evt.NewValue))
         {
             DO_SAFE( m_xParser->setHavingClause(::comphelper::getString(evt.NewValue)), "SbaXDataBrowserController::propertyChange : could not forward the new filter to my parser !" );
@@ -1092,7 +1089,6 @@ void SbaXDataBrowserController::propertyChange(const PropertyChangeEvent& evt) t
     }
     else if (evt.PropertyName.equals(PROPERTY_ORDER))
     {
-        initializeParser();
         if ( m_xParser.is() && m_xParser->getOrder() != ::comphelper::getString(evt.NewValue))
         {
             DO_SAFE( m_xParser->setOrder(::comphelper::getString(evt.NewValue)), "SbaXDataBrowserController::propertyChange : could not forward the new order to my parser !" );
@@ -1790,7 +1786,6 @@ void SbaXDataBrowserController::ExecuteFilterSortCrit(sal_Bool bFilter)
 
     Reference< XPropertySet >  xFormSet(getRowSet(), UNO_QUERY);
 
-    initializeParser();
     const ::rtl::OUString sOldVal = bFilter ? m_xParser->getFilter() : m_xParser->getOrder();
     const ::rtl::OUString sOldHaving = m_xParser->getHavingClause();
     try
@@ -2035,7 +2030,6 @@ void SbaXDataBrowserController::Execute(sal_uInt16 nId, const Sequence< Property
             if (!xField.is())
                 break;
 
-            initializeParser();
             const ::rtl::OUString sOldSort = m_xParser->getOrder();
             sal_Bool bParserSuccess = sal_False;
             HANDLE_SQL_ERRORS(
@@ -2066,7 +2060,6 @@ void SbaXDataBrowserController::Execute(sal_uInt16 nId, const Sequence< Property
             sal_Bool bHaving = sal_False;
             ::rtl::OUString sName;
             xField->getPropertyValue(PROPERTY_NAME) >>= sName;
-            initializeParser();
             Reference< XColumnsSupplier > xColumnsSupplier(m_xParser, UNO_QUERY);
             Reference< ::com::sun::star::container::XNameAccess >  xCols = xColumnsSupplier.is() ? xColumnsSupplier->getColumns() : Reference< ::com::sun::star::container::XNameAccess > ();
             if ( xCols.is() && xCols->hasByName(sName) )
@@ -2576,6 +2569,9 @@ void SbaXDataBrowserController::LoadFinished(sal_Bool /*bWasSynch*/)
         getBrowserView()->getGridControl()->setDesignMode(sal_False);
 
         // -------------------------------
+        initializeParser();
+
+        // -------------------------------
         InvalidateAll();
 
         m_aAsyncGetCellFocus.Call();
@@ -2611,7 +2607,7 @@ void SbaXDataBrowserController::initializeParser() const
         }
         catch(Exception&)
         {
-            DBG_WARNING("SbaXDataBrowserController::initializeParser: something went wrong while creating the parser !");
+            DBG_UNHANDLED_EXCEPTION();
             m_xParser = NULL;
             // no further handling, we ignore the error
         }
@@ -2717,7 +2713,6 @@ sal_Bool SbaXDataBrowserController::isValidCursor() const
         bIsValid = ::cppu::any2bool(xProp->getPropertyValue(PROPERTY_ISNEW));
         if ( !bIsValid )
         {
-            initializeParser();
             bIsValid = m_xParser.is();
         }
     } // if ( !bIsValid )
diff --git a/dbaccess/source/ui/control/dbtreelistbox.cxx b/dbaccess/source/ui/control/dbtreelistbox.cxx
index 18fc3e2..52886cf 100644
--- a/dbaccess/source/ui/control/dbtreelistbox.cxx
+++ b/dbaccess/source/ui/control/dbtreelistbox.cxx
@@ -56,6 +56,7 @@
 #ifndef _COM_SUN_STAR_UI_XCONTEXTMENUINTERCEPTOR_HPP_
 #include <com/sun/star/ui/XContextMenuInterceptor.hpp>
 #endif
+#include <com/sun/star/frame/XFrame.hpp>
 #ifndef _COM_SUN_STAR_UTIL_URL_HPP_
 #include <com/sun/star/util/URL.hpp>
 #endif
@@ -80,7 +81,8 @@
 #ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
 #include <toolkit/helper/vclunohelper.hxx>
 #endif
-
+#include <framework/imageproducer.hxx>
+#include <vcl/svapp.hxx>
 #include <memory>
 
 // .........................................................................
@@ -88,6 +90,7 @@ namespace dbaui
 {
 // .........................................................................
 
+using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::beans;
 using namespace ::com::sun::star::lang;
@@ -546,9 +549,9 @@ namespace
             {
                 lcl_adjustMenuItemIDs( *pPopup, _rCommandController );
                 continue;
-            }
+            } // if ( pPopup )
 
-            USHORT nCommandId = _rCommandController.registerCommandURL( aCommand );
+            const USHORT nCommandId = _rCommandController.registerCommandURL( aCommand );
             _rMenu.InsertItem( nCommandId, _rMenu.GetItemText( nId ), _rMenu.GetItemImage( nId ),
                 _rMenu.GetItemBits( nId ), pos );
 
@@ -562,6 +565,34 @@ namespace
             _rMenu.RemoveItem( pos+1 );
         }
     }
+    void lcl_insertMenuItemImages( Menu& _rMenu, IController& _rCommandController )
+    {
+        const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+        const BOOL bHiContrast = rSettings.GetMenuColor().IsDark();
+        uno::Reference< frame::XController > xController = _rCommandController.getXController();
+        uno::Reference< frame::XFrame> xFrame;
+        if ( xController.is() )
+            xFrame = xController->getFrame();
+        USHORT nCount = _rMenu.GetItemCount();
+        for ( USHORT pos = 0; pos < nCount; ++pos )
+        {
+            // do not adjust separators
+            if ( _rMenu.GetItemType( pos ) == MENUITEM_SEPARATOR )
+                continue;
+
+            USHORT nId = _rMenu.GetItemId(pos);
+            String aCommand = _rMenu.GetItemCommand( nId );
+            PopupMenu* pPopup = _rMenu.GetPopupMenu( nId );
+            if ( pPopup )
+            {
+                lcl_insertMenuItemImages( *pPopup, _rCommandController );
+                continue;
+            } // if ( pPopup )
+
+            if ( xFrame.is() )
+                _rMenu.SetItemImage(nId,framework::GetImageFromURL(xFrame,aCommand,FALSE,bHiContrast));
+        }
+    }
     // =========================================================================
     // = SelectionSupplier
     // =========================================================================
@@ -629,6 +660,8 @@ PopupMenu* DBTreeListBox::CreateContextMenu( void )
     pContextMenu.reset( m_pContextMenuProvider->getContextMenu( *this ) );
     // disable what is not available currently
     lcl_enableEntries( pContextMenu.get(), m_pContextMenuProvider->getCommandController() );
+    // set images
+    lcl_insertMenuItemImages( *pContextMenu, m_pContextMenuProvider->getCommandController() );
     // allow context menu interception
     ::cppu::OInterfaceContainerHelper* pInterceptors = m_pContextMenuProvider->getContextMenuInterceptors();
     if ( !pInterceptors || !pInterceptors->getLength() )
@@ -695,7 +728,7 @@ PopupMenu* DBTreeListBox::CreateContextMenu( void )
         // the interceptors only know command URLs, but our menus primarily work
         // with IDs -> we need to translate the commands to IDs
         lcl_adjustMenuItemIDs( *pModifiedMenu, m_pContextMenuProvider->getCommandController() );
-    }
+    } // if ( bModifiedMenu )
 
     return pContextMenu.release();
 }
diff --git a/dbaccess/source/ui/inc/WCPage.hxx b/dbaccess/source/ui/inc/WCPage.hxx
index a8e59ac..b81ec48 100644
--- a/dbaccess/source/ui/inc/WCPage.hxx
+++ b/dbaccess/source/ui/inc/WCPage.hxx
@@ -66,6 +66,7 @@ namespace dbaui
         RadioButton								m_aRB_Def;
         RadioButton								m_aRB_View;
         RadioButton								m_aRB_AppendData;
+        CheckBox								m_aCB_UseHeaderLine;
         CheckBox								m_aCB_PrimaryColumn;
         FixedText								m_aFT_KeyName;
         Edit									m_edKeyName;
@@ -75,6 +76,7 @@ namespace dbaui
         OWizNormalExtend*						m_pPage3;
 
         BOOL									m_bPKeyAllowed;
+        BOOL                                    m_bUseHeaderAllowed;
 
 
         DECL_LINK( AppendDataClickHdl, Button* );
@@ -99,13 +101,19 @@ namespace dbaui
         inline BOOL IsOptionDef()			const { return m_aRB_Def.IsChecked(); }
         inline BOOL IsOptionAppendData()	const { return m_aRB_AppendData.IsChecked(); }
         inline BOOL IsOptionView()			const { return m_aRB_View.IsChecked(); }
+        inline BOOL UseHeaderLine()			const { return m_aCB_UseHeaderLine.IsChecked(); }
         String      GetKeyName()            const { return m_edKeyName.GetText(); }
 
         void setCreateStyleAction();
-        void disallowViews()
+        inline void disallowViews()
         {
             m_aRB_View.Disable();
         }
+        inline void disallowUseHeaderLine()
+        {
+            m_bUseHeaderAllowed = FALSE;
+            m_aCB_UseHeaderLine.Disable();
+        }
 
         void setCreatePrimaryKey( bool _bDoCreate, const ::rtl::OUString& _rSuggestedName );
     };
diff --git a/dbaccess/source/ui/inc/WCopyTable.hxx b/dbaccess/source/ui/inc/WCopyTable.hxx
index 3a1a21a..c8ede11 100644
--- a/dbaccess/source/ui/inc/WCopyTable.hxx
+++ b/dbaccess/source/ui/inc/WCopyTable.hxx
@@ -314,6 +314,7 @@ namespace dbaui
         sal_Int16                       m_nOperation;
         Wizard_Button_Style	            m_ePressed;
         sal_Bool			            m_bCreatePrimaryKeyColumn;
+        sal_Bool                        m_bUseHeaderLine;
 
     private:
         DECL_LINK( ImplPrevHdl	, PushButton* );
@@ -373,6 +374,8 @@ namespace dbaui
         // when not the value is COLUMN_POSITION_NOT_FOUND == (sal_uInt32)-1
         ODatabaseExport::TPositions	GetColumnPositions()	const { return m_vColumnPos; }
         ::std::vector<sal_Int32>	GetColumnTypes()		const { return m_vColumnTypes; }
+        sal_Bool                    UseHeaderLine()         const { return m_bUseHeaderLine; }
+        void                        setUseHeaderLine(sal_Bool _bUseHeaderLine) { m_bUseHeaderLine = _bUseHeaderLine; }
 
         void insertColumn(sal_Int32 _nPos,OFieldDescription* _pField);
 
diff --git a/dbaccess/source/ui/inc/dbu_misc.hrc b/dbaccess/source/ui/inc/dbu_misc.hrc
index 9a3185a..8cd9b5a 100644
--- a/dbaccess/source/ui/inc/dbu_misc.hrc
+++ b/dbaccess/source/ui/inc/dbu_misc.hrc
@@ -34,9 +34,8 @@
 #include "dbu_resource.hrc"
 #endif
 
-
-#define STR_HTML_TITLE						RID_STR_MISC_START
-#define STR_RTF_TITLE						RID_STR_MISC_START +  1
+// free
+// free
 #define STR_WIZ_COLUMN_SELECT_TITEL			RID_STR_MISC_START +  2
 #define STR_WIZ_TYPE_SELECT_TITEL			RID_STR_MISC_START +  3
 #define STR_WIZ_PKEY_ALREADY_DEFINED		RID_STR_MISC_START +  4
diff --git a/dbaccess/source/ui/misc/DExport.cxx b/dbaccess/source/ui/misc/DExport.cxx
index 48f1174..b8a93d6 100644
--- a/dbaccess/source/ui/misc/DExport.cxx
+++ b/dbaccess/source/ui/misc/DExport.cxx
@@ -732,6 +732,7 @@ sal_Bool ODatabaseExport::executeWizard(const ::rtl::OUString& _rTableName,const
                         m_bIsAutoIncrement	= aWizard.shouldCreatePrimaryKey();
                         m_vColumns			= aWizard.GetColumnPositions();
                         m_vColumnTypes		= aWizard.GetColumnTypes();
+                        m_bAppendFirstLine	= !aWizard.UseHeaderLine();
                     }
                     break;
                 default:
diff --git a/dbaccess/source/ui/misc/RtfReader.cxx b/dbaccess/source/ui/misc/RtfReader.cxx
index b9dc322..94af6b9 100644
--- a/dbaccess/source/ui/misc/RtfReader.cxx
+++ b/dbaccess/source/ui/misc/RtfReader.cxx
@@ -163,16 +163,17 @@ void ORTFReader::NextToken( int nToken )
                 break;
             case RTF_TROWD:
                 {
-                    sal_uInt32 nTell = rInput.Tell(); // verändert vielleicht die Position des Streams
                     bool bInsertRow = true;
                     if ( !m_xTable.is() ) // erste Zeile als Header verwenden
                     {
+                        sal_uInt32 nTell = rInput.Tell(); // verändert vielleicht die Position des Streams
+
                         m_bError = !CreateTable(nToken);
                         bInsertRow = m_bAppendFirstLine;
                         if ( m_bAppendFirstLine )
                         {
                             rInput.Seek(nTell);
-                            bInsertRow = true;
+                            rInput.ResetError();
                         }
                     }
                     if ( bInsertRow && !m_bError)
@@ -333,7 +334,7 @@ sal_Bool ORTFReader::CreateTable(int nToken)
                 break;
         }
     }
-    while((nTmpToken2 = GetNextToken()) != RTF_ROW && eState != SVPAR_ERROR && eState != SVPAR_ACCEPTED);
+    while((nTmpToken2 = GetNextToken()) != RTF_TROWD && eState != SVPAR_ERROR && eState != SVPAR_ACCEPTED);
 
     sal_Bool bOk = !m_vDestVector.empty();
     if(bOk)
diff --git a/dbaccess/source/ui/misc/WCPage.cxx b/dbaccess/source/ui/misc/WCPage.cxx
index 2846bb0..a907c33 100644
--- a/dbaccess/source/ui/misc/WCPage.cxx
+++ b/dbaccess/source/ui/misc/WCPage.cxx
@@ -111,12 +111,14 @@ OCopyTable::OCopyTable( Window * pParent )
     ,m_aRB_DefData(			this, ModuleRes( RB_DEFDATA			) )
     ,m_aRB_Def(				this, ModuleRes( RB_DEF				) )
     ,m_aRB_View(			this, ModuleRes( RB_VIEW			) )
-    ,m_aRB_AppendData(		this, ModuleRes( RB_APPENDDATA		) )
+    ,m_aRB_AppendData(	    this, ModuleRes( RB_APPENDDATA	    ) )
+    ,m_aCB_UseHeaderLine(	this, ModuleRes( CB_USEHEADERLINE	) )
     ,m_aCB_PrimaryColumn(	this, ModuleRes( CB_PRIMARY_COLUMN	) )
     ,m_aFT_KeyName(			this, ModuleRes( FT_KEYNAME			) )
     ,m_edKeyName(			this, ModuleRes( ET_KEYNAME			) )
     ,m_pPage2(NULL)
     ,m_pPage3(NULL)
+    ,m_bUseHeaderAllowed(TRUE)
 {
     DBG_CTOR(OCopyTable,NULL);
 
@@ -127,6 +129,7 @@ OCopyTable::OCopyTable( Window * pParent )
         if ( !m_pParent->supportsViews() )
             m_aRB_View.Disable();
 
+        m_aCB_UseHeaderLine.Check(TRUE);
         m_bPKeyAllowed = m_pParent->supportsPrimaryKey();
 
         m_aCB_PrimaryColumn.Enable(m_bPKeyAllowed);
@@ -187,6 +190,7 @@ IMPL_LINK( OCopyTable, RadioChangeHdl, Button*, pButton )
     m_aFT_KeyName.Enable(bKey && m_aCB_PrimaryColumn.IsChecked());
     m_edKeyName.Enable(bKey && m_aCB_PrimaryColumn.IsChecked());
     m_aCB_PrimaryColumn.Enable(bKey);
+    m_aCB_UseHeaderLine.Enable(m_bUseHeaderAllowed && IsOptionDefData());
 
     // set typ what to do
     if( IsOptionDefData() )
@@ -211,7 +215,8 @@ sal_Bool OCopyTable::LeavePage()
 {
     DBG_CHKTHIS(OCopyTable,NULL);
     m_pParent->m_bCreatePrimaryKeyColumn	= (m_bPKeyAllowed && m_aCB_PrimaryColumn.IsEnabled()) ? m_aCB_PrimaryColumn.IsChecked() : sal_False;
-    m_pParent->m_aKeyName				= m_pParent->m_bCreatePrimaryKeyColumn ? m_edKeyName.GetText() : String();
+    m_pParent->m_aKeyName				    = m_pParent->m_bCreatePrimaryKeyColumn ? m_edKeyName.GetText() : String();
+    m_pParent->setUseHeaderLine( m_aCB_UseHeaderLine.IsChecked() );
 
     // first check if the table already exists in the database
     if(	m_pParent->getOperation() != CopyTableOperation::AppendData )
@@ -296,6 +301,7 @@ void OCopyTable::ActivatePage()
     m_pParent->GetOKButton().Enable( TRUE );
     m_nOldOperation = m_pParent->getOperation();
     m_edTableName.GrabFocus();
+    m_aCB_UseHeaderLine.Check(m_pParent->UseHeaderLine());
 }
 //------------------------------------------------------------------------
 String OCopyTable::GetTitle() const 
diff --git a/dbaccess/source/ui/misc/WCopyTable.cxx b/dbaccess/source/ui/misc/WCopyTable.cxx
index 7184088..79ac595 100644
--- a/dbaccess/source/ui/misc/WCopyTable.cxx
+++ b/dbaccess/source/ui/misc/WCopyTable.cxx
@@ -633,6 +633,7 @@ OCopyTableWizard::OCopyTableWizard( Window * pParent, const ::rtl::OUString& _rD
         bAllowViews = false;
 
     OCopyTable* pPage1( new OCopyTable( this ) );
+    pPage1->disallowUseHeaderLine();
     if ( !bAllowViews )
         pPage1->disallowViews();
     pPage1->setCreateStyleAction();
diff --git a/dbaccess/source/ui/misc/WizardPages.hrc b/dbaccess/source/ui/misc/WizardPages.hrc
index 94df8d8..774999d 100644
--- a/dbaccess/source/ui/misc/WizardPages.hrc
+++ b/dbaccess/source/ui/misc/WizardPages.hrc
@@ -72,6 +72,7 @@
 #define RB_VIEW					3
 #define RB_APPENDDATA			4
 #define CB_PRIMARY_COLUMN		5
+#define CB_USEHEADERLINE        6
 
 #define CONTROL_CONTAINER		1
 // controls
diff --git a/dbaccess/source/ui/misc/WizardPages.src b/dbaccess/source/ui/misc/WizardPages.src
index c7c511c..dbcfeee 100644
--- a/dbaccess/source/ui/misc/WizardPages.src
+++ b/dbaccess/source/ui/misc/WizardPages.src
@@ -48,16 +48,6 @@
 #define BUTTON_SIZE_X	 50
 #define BUTTON_SIZE_Y	 14
 
-String STR_HTML_TITLE
-{
-    Text [ en-US ] = "Copy HTML table" ;
-};
-
-String STR_RTF_TITLE
-{
-    Text [ en-US ] = "Copy RTF table" ;
-};
-
 String STR_WIZ_COLUMN_SELECT_TITEL
 {
     Text [ en-US ] = "Apply columns";
@@ -523,22 +513,29 @@ TabPage TAB_WIZ_COPYTABLE
         Text [ en-US ] = "Append ~data" ;
     };
 
-    CheckBox CB_PRIMARY_COLUMN
+    CheckBox CB_USEHEADERLINE
     {
         Pos                 = MAP_APPFONT ( 12, 93 ) ;
+        Size				= MAP_APPFONT ( WINDOW_SIZE_X - 18, 10 ) ;
+        Text [ en-US ] = "Use first ~line as column names" ;
+    };
+
+    CheckBox CB_PRIMARY_COLUMN
+    {
+        Pos                 = MAP_APPFONT ( 12, 107 ) ;
         Size				= MAP_APPFONT ( 90 , 10 ) ;
         Text [ en-US ] = "Crea~te primary key";
     };
     FixedText FT_KEYNAME
     {
-        Pos                 = MAP_APPFONT ( 21 , 108 ) ;
+        Pos                 = MAP_APPFONT ( 21 , 122 ) ;
         Size                = MAP_APPFONT ( 39 , 8 ) ;
         Text [ en-US ] = "Name";
     };
 
     Edit ET_KEYNAME
     {
-        Pos                 = MAP_APPFONT ( 80, 106 ) ;
+        Pos                 = MAP_APPFONT ( 80, 120 ) ;
         Size				= MAP_APPFONT ( 65 , 12 ) ;
         TabStop				= TRUE ;
         Border				= TRUE ;
diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx b/dbaccess/source/ui/uno/copytablewizard.cxx
index 1efac16..eaf7c45 100644
--- a/dbaccess/source/ui/uno/copytablewizard.cxx
+++ b/dbaccess/source/ui/uno/copytablewizard.cxx
@@ -171,6 +171,8 @@ namespace dbaui
         virtual void SAL_CALL setDestinationTableName( const ::rtl::OUString& _destinationTableName ) throw (RuntimeException);
         virtual Optional< ::rtl::OUString > SAL_CALL getCreatePrimaryKey() throw (RuntimeException);
         virtual void SAL_CALL setCreatePrimaryKey( const Optional< ::rtl::OUString >& _newPrimaryKey ) throw (IllegalArgumentException, RuntimeException);
+        virtual sal_Bool SAL_CALL getUseHeaderLineAsColumnNames() throw (RuntimeException);
+        virtual void SAL_CALL setUseHeaderLineAsColumnNames( sal_Bool _bUseHeaderLineAsColumnNames ) throw (RuntimeException);
         virtual void SAL_CALL addCopyTableListener( const Reference< XCopyTableListener >& Listener ) throw (RuntimeException);
         virtual void SAL_CALL removeCopyTableListener( const Reference< XCopyTableListener >& Listener ) throw (RuntimeException);
 
@@ -331,6 +333,7 @@ private:
         sal_Int16                       m_nOperation;
         ::rtl::OUString                 m_sDestinationTable;
         Optional< ::rtl::OUString >     m_aPrimaryKeyName;
+        sal_Bool                        m_bUseHeaderLineAsColumnNames;
 
         // source
         SharedConnection                m_xSourceConnection;
@@ -381,6 +384,7 @@ CopyTableWizard::CopyTableWizard( const Reference< XMultiServiceFactory >& _rxOR
     ,m_nOperation( CopyTableOperation::CopyDefinitionAndData )
     ,m_sDestinationTable()
     ,m_aPrimaryKeyName( sal_False, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ID" ) ))
+    ,m_bUseHeaderLineAsColumnNames( sal_True )
     ,m_xSourceConnection()
     ,m_nCommandType( CommandType::COMMAND )
     ,m_pSourceObject()
@@ -522,7 +526,18 @@ void SAL_CALL CopyTableWizard::setCreatePrimaryKey( const Optional< ::rtl::OUStr
 
     m_aPrimaryKeyName = _newPrimaryKey;
 }
-
+// -----------------------------------------------------------------------------
+sal_Bool SAL_CALL CopyTableWizard::getUseHeaderLineAsColumnNames() throw (RuntimeException)
+{
+    CopyTableAccessGuard aGuard( *this );
+    return m_bUseHeaderLineAsColumnNames;
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL CopyTableWizard::setUseHeaderLineAsColumnNames( sal_Bool _bUseHeaderLineAsColumnNames ) throw (RuntimeException)
+{
+    CopyTableAccessGuard aGuard( *this );
+    m_bUseHeaderLineAsColumnNames = _bUseHeaderLineAsColumnNames;
+}
 //--------------------------------------------------------------------
 void SAL_CALL CopyTableWizard::addCopyTableListener( const Reference< XCopyTableListener >& _rxListener ) throw (RuntimeException)
 {
@@ -589,6 +604,7 @@ void CopyTableWizard::impl_attributesToDialog_nothrow( OCopyTableWizard& _rDialo
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "uno", "Ocke.Janssen at sun.com", "CopyTableWizard::impl_attributesToDialog_nothrow" );
     // primary key column
     _rDialog.setCreatePrimaryKey( m_aPrimaryKeyName.IsPresent, m_aPrimaryKeyName.Value );
+    _rDialog.setUseHeaderLine(m_bUseHeaderLineAsColumnNames);
 
     // everything else was passed at construction time already
 }
@@ -606,6 +622,7 @@ void CopyTableWizard::impl_dialogToAttributes_nothrow( const OCopyTableWizard& _
     m_sDestinationTable = _rDialog.getName();
 
     m_nOperation = _rDialog.getOperation();
+    m_bUseHeaderLineAsColumnNames = _rDialog.UseHeaderLine();
 }
 
 //-------------------------------------------------------------------------
diff --git a/reportdesign/source/filter/xml/xmlExport.cxx b/reportdesign/source/filter/xml/xmlExport.cxx
index 670d657..6e2e6ce 100644
--- a/reportdesign/source/filter/xml/xmlExport.cxx
+++ b/reportdesign/source/filter/xml/xmlExport.cxx
@@ -996,6 +996,11 @@ void ORptExport::exportContainer(const Reference< XSection>& _xSection)
                                     exportSection(xSection);
                             }
                         }
+                    } // if ( aColIter->xElement.is() )
+                    else if ( !bShapeHandled )
+                    {
+                        bShapeHandled = true;
+                        exportShapes(_xSection);
                     }
                     aColIter = aColIter + (aColIter->nColSpan - 1);
                 } 
@@ -1617,7 +1622,7 @@ void ORptExport::exportShapes(const Reference< XSection>& _xSection,bool _bAddPa
         {
             ::std::auto_ptr<SvXMLElementExport> pSubDocument;
             uno::Reference< frame::XModel> xModel(xShape->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Model"))),uno::UNO_QUERY);
-            if ( xModel.is() ) // special handlingfor chart object
+            if ( xModel.is() ) // special handling for chart object
             {
                 pSubDocument.reset(new SvXMLElementExport(*this,XML_NAMESPACE_REPORT, XML_SUB_DOCUMENT, sal_False, sal_False));
                 exportMasterDetailFields(xShape.get());
diff --git a/reportdesign/source/ui/report/DesignView.cxx b/reportdesign/source/ui/report/DesignView.cxx
index 04a98c3..414aedb 100644
--- a/reportdesign/source/ui/report/DesignView.cxx
+++ b/reportdesign/source/ui/report/DesignView.cxx
@@ -207,7 +207,7 @@ ODesignView::~ODesignView()
     if ( m_pAddField )
     {
         SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromInt32( UID_RPT_RPT_APP_VIEW ) );
-        aDlgOpt.SetWindowState( ::rtl::OUString::createFromAscii( m_pAddField->GetWindowState((WINDOWSTATE_MASK_X | WINDOWSTATE_MASK_Y | WINDOWSTATE_MASK_STATE | WINDOWSTATE_MASK_MINIMIZED)).GetBuffer() ) );
+        aDlgOpt.SetWindowState( ::rtl::OUString::createFromAscii( m_pAddField->GetWindowState(WINDOWSTATE_MASK_ALL).GetBuffer() ) );
         notifySystemWindow(this,m_pAddField,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
         ::std::auto_ptr<Window> aTemp2(m_pAddField);
         m_pAddField = NULL;
@@ -215,7 +215,7 @@ ODesignView::~ODesignView()
     if ( m_pReportExplorer )
     {
         SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromInt32( RID_NAVIGATOR ) );
-        aDlgOpt.SetWindowState( ::rtl::OUString::createFromAscii( m_pReportExplorer->GetWindowState((WINDOWSTATE_MASK_X | WINDOWSTATE_MASK_Y | WINDOWSTATE_MASK_STATE | WINDOWSTATE_MASK_MINIMIZED)).GetBuffer() ) );
+        aDlgOpt.SetWindowState( ::rtl::OUString::createFromAscii( m_pReportExplorer->GetWindowState(WINDOWSTATE_MASK_ALL).GetBuffer() ) );
         notifySystemWindow(this,m_pReportExplorer,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
         ::std::auto_ptr<Window> aTemp2(m_pReportExplorer);
         m_pReportExplorer = NULL;
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index 60c3e24..ad92805 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -53,8 +53,7 @@
 #include "AddField.hxx"
 #include <toolkit/helper/vclunohelper.hxx>
 #include "DateTime.hxx"
-#include <svtools/syslocale.hxx>
-#include <vcl/svapp.hxx>
+
 #include <sfx2/filedlghelper.hxx>
 #include <tools/string.hxx>
 #include <tools/diagnose_ex.h>
@@ -104,6 +103,7 @@
 #include <com/sun/star/sdbc/SQLWarning.hpp>
 #include <com/sun/star/beans/PropertyAttribute.hpp>
 
+#include <vcl/svapp.hxx>
 #include <vcl/msgbox.hxx>
 #include <vcl/waitobj.hxx>
 
@@ -142,6 +142,8 @@
 #include <svtools/itemset.hxx>
 #include <svtools/aeitem.hxx> //CHINA001
 #include <svtools/cliplistener.hxx>
+#include <svtools/syslocale.hxx>
+#include <svtools/viewoptions.hxx>
 
 #include <vos/mutex.hxx>
 #include "PropertyForward.hxx"
@@ -341,8 +343,11 @@ void OReportController::disposing()
         m_pClipbordNotifier->AddRemoveListener( getView(), sal_False );
         m_pClipbordNotifier->release();
         m_pClipbordNotifier = NULL;
-    }
+    } // if ( getView() && m_pClipbordNotifier )
+    if ( m_pGroupsFloater )
     {
+        SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromInt32( RID_GROUPS_SORTING ) );
+        aDlgOpt.SetWindowState( ::rtl::OUString::createFromAscii( m_pGroupsFloater->GetWindowState(WINDOWSTATE_MASK_ALL).GetBuffer() ) );
         ::std::auto_ptr<FloatingWindow> aTemp(m_pGroupsFloater);
         m_pGroupsFloater = NULL;
     }
@@ -2558,6 +2563,9 @@ void OReportController::openSortingAndGroupingDialog()
     if ( !m_pGroupsFloater )
     {
         m_pGroupsFloater = new OGroupsSortingDialog(getView(),!isEditable(),this);
+        SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromInt32( RID_GROUPS_SORTING ) );
+        if ( aDlgOpt.Exists() )
+            m_pGroupsFloater->SetWindowState( ByteString( aDlgOpt.GetWindowState().getStr(), RTL_TEXTENCODING_ASCII_US ) );
         m_pGroupsFloater->AddEventListener(LINK(this,OReportController,EventLstHdl));
     }
     else if ( isUiVisible() )
@@ -3280,7 +3288,7 @@ void OReportController::createDateTime(const Sequence< PropertyValue >& _aArgs)
     sal_Bool bTime = aMap.getUnpackedValueOrDefault(PROPERTY_TIME_STATE,sal_False);
     if ( bTime )
     {
-        sFunction = ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("NOW()"));
+        sFunction = ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("TIMEVALUE(NOW())"));
         aMap[PROPERTY_FORMATKEY] <<= aMap.getUnpackedValueOrDefault(PROPERTY_FORMATKEYTIME,sal_Int32(0));
         createControl(aMap.getAsConstPropertyValueList(),xSection,sFunction);
     }


More information about the ooo-build-commit mailing list