Tag: cws_src680_dba205b
User: oj      
Date: 2006/07/31 05:00:37

Modified:
   dba/dbaccess/source/ui/app/AppControllerDnD.cxx

Log:
 #i67016# copy column settings of a query

File Changes:

Directory: /dba/dbaccess/source/ui/app/
=======================================

File [changed]: AppControllerDnD.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/app/AppControllerDnD.cxx?r1=1.16.20.1&r2=1.16.20.2
Delta lines:  +46 -3
--------------------
--- AppControllerDnD.cxx        31 Jul 2006 10:00:35 -0000      1.16.20.1
+++ AppControllerDnD.cxx        31 Jul 2006 12:00:34 -0000      1.16.20.2
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: AppControllerDnD.cxx,v $
  *
- *  $Revision: 1.16.20.1 $
+ *  $Revision: 1.16.20.2 $
  *
- *  last change: $Author: oj $ $Date: 2006/07/31 10:00:35 $
+ *  last change: $Author: oj $ $Date: 2006/07/31 12:00:34 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -45,6 +45,15 @@
 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
 #include "dbustrings.hrc"
 #endif
+#ifndef _COM_SUN_STAR_SDBCX_XDATADESCRIPTORFACTORY_HPP_
+#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XAPPEND_HPP_
+#include <com/sun/star/sdbcx/XAppend.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
 #ifndef _COM_SUN_STAR_SDB_XSINGLESELECTQUERYCOMPOSER_HPP_
 #include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
 #endif
@@ -735,6 +744,7 @@
                                // read all nescessary data
 
                                ::rtl::OUString sCommand;
+                               sal_Bool bEscapeProcessing = sal_True;
 
                                _rPasteData[daCommand] >>= sCommand;
                                if ( _rPasteData.has(daEscapeProcessing) )
@@ -830,9 +840,42 @@
                                if (xNewQuery.is())
                                {
                                        // initialize
+                                       if ( xQuery.is() )
                     ::comphelper::copyProperties(xQuery,xNewQuery);
+                                       else
+                                       {
+                        
xNewQuery->setPropertyValue(PROPERTY_COMMAND,makeAny(sCommand));
+                        
xNewQuery->setPropertyValue(PROPERTY_USE_ESCAPE_PROCESSING,makeAny(bEscapeProcessing));
+                    }
                                        // insert
                                        xDestQueries->insertByName( 
sTargetName, makeAny(xNewQuery) );
+                    xNewQuery.set(xDestQueries->getByName( 
sTargetName),UNO_QUERY);
+                    if ( xQuery.is() && xNewQuery.is() )
+                    {
+                        Reference<XColumnsSupplier> 
xSrcColSup(xQuery,UNO_QUERY);
+                        Reference<XColumnsSupplier> 
xDstColSup(xNewQuery,UNO_QUERY);
+                        if ( xSrcColSup.is() && xDstColSup.is() )
+                           {
+                                   Reference<XNameAccess> xSrcNameAccess = 
xSrcColSup->getColumns();
+                            Reference<XNameAccess> xDstNameAccess = 
xDstColSup->getColumns();
+                            Reference<XDataDescriptorFactory> 
xFac(xDstNameAccess,UNO_QUERY);
+                            Reference<XAppend> xAppend(xFac,UNO_QUERY);
+                                   if ( xSrcNameAccess.is() && 
xDstNameAccess.is() && xSrcNameAccess->hasElements() && xAppend.is() )
+                            {
+                                Reference<XPropertySet> 
xDstProp(xFac->createDataDescriptor());
+                                
+                                Sequence< ::rtl::OUString> aSeq = 
xSrcNameAccess->getElementNames();
+                                           const ::rtl::OUString* pIter = 
aSeq.getConstArray();
+                                           const ::rtl::OUString* pEnd   = 
pIter + aSeq.getLength();
+                                           for( ; pIter != pEnd ; ++pIter)
+                                           {
+                                                   Reference<XPropertySet> 
xSrcProp(xSrcNameAccess->getByName(*pIter),UNO_QUERY);
+                                    
::comphelper::copyProperties(xSrcProp,xDstProp);
+                                    xAppend->appendByDescriptor(xDstProp);
+                                }
+                            }
+                        }
+                                       }
                                }
                        }
                        else




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to