Tag: cws_src680_oj14
User: oj      
Date: 2006/07/04 01:23:47

Modified:
   dba/dbaccess/source/ui/tabledesign/TableController.cxx

Log:
 RESYNC: (1.100-1.104); FILE MERGED

File Changes:

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

File [changed]: TableController.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/tabledesign/TableController.cxx?r1=1.99.4.2&r2=1.99.4.3
Delta lines:  +42 -44
---------------------
--- TableController.cxx 20 Mar 2006 14:06:30 -0000      1.99.4.2
+++ TableController.cxx 4 Jul 2006 08:23:44 -0000       1.99.4.3
@@ -141,9 +141,6 @@
 #ifndef DBAUI_TABLEEDITORCONTROL_HXX
 #include "TEditControl.hxx"
 #endif
-#ifndef DBAUI_TABLEDESCRIPTIONWINDOW_HXX
-#include "TableDescWin.hxx"
-#endif
 #ifndef _DBAUI_SQLMESSAGE_HXX_
 #include "sqlmessage.hxx"
 #endif
@@ -159,6 +156,7 @@
 #ifndef DBAUI_TOOLS_HXX
 #include "UITools.hxx"
 #endif
+#include <boost/mem_fn.hpp>
 
 extern "C" void SAL_CALL createRegistryInfo_OTableControl()
 {
@@ -195,9 +193,9 @@
                }
        }
        
//------------------------------------------------------------------------------
-       struct OTableRowCompare : public ::std::binary_function< OTableRow*, 
::rtl::OUString, bool>
+       struct OTableRowCompare : public ::std::binary_function<  
::boost::shared_ptr<OTableRow> , ::rtl::OUString, bool>
        {
-               bool operator() (const OTableRow* lhs, const ::rtl::OUString& 
rhs) const 
+               bool operator() (const  ::boost::shared_ptr<OTableRow>  lhs, 
const ::rtl::OUString& rhs) const 
                {
                        OFieldDescription* pField = lhs->GetActFieldDescr();
                        return pField && pField->GetName() == rhs;
@@ -239,9 +237,9 @@
 // 
-----------------------------------------------------------------------------
 OTableController::OTableController(const Reference< XMultiServiceFactory >& 
_rM) : OTableController_BASE(_rM)
        ,m_sTypeNames(ModuleRes(STR_TABLEDESIGN_DBFIELDTYPES))
-       ,m_bNew(sal_True)
        ,m_pTypeInfo()
        ,m_bAllowAutoIncrementValue(sal_False)
+       ,m_bNew(sal_True)
 {
     DBG_CTOR(OTableController,NULL);
 
@@ -280,9 +278,7 @@
        OTableController_BASE::disposing();
        m_pView         = NULL;
 
-       ::std::vector<OTableRow*>::iterator aIter = m_vRowList.begin();
-       for(;aIter != m_vRowList.end();++aIter)
-               delete *aIter;
+    m_vRowList.clear();
 }
 // 
-----------------------------------------------------------------------------
 FeatureState OTableController::GetState(sal_uInt16 _nId) const
@@ -303,7 +299,8 @@
                        aReturn.bEnabled = isModified();
                        if ( aReturn.bEnabled )
                        {
-                               ::std::vector<OTableRow*>::const_iterator aIter 
= 
::std::find_if(m_vRowList.begin(),m_vRowList.end(),::std::mem_fun(&OTableRow::isValid));
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::const_iterator aIter = ::std::find_if(m_vRowList.begin(),m_vRowList.end(),
+                    ::boost::mem_fn(&OTableRow::isValid));
                                aReturn.bEnabled = aIter != m_vRowList.end();
                        }
                        break;
@@ -311,7 +308,8 @@
                        aReturn.bEnabled = isConnected() && isEditable();
                        if ( aReturn.bEnabled )
                        {
-                               ::std::vector<OTableRow*>::const_iterator aIter 
= 
::std::find_if(m_vRowList.begin(),m_vRowList.end(),::std::mem_fun(&OTableRow::isValid));
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::const_iterator aIter = ::std::find_if(m_vRowList.begin(),m_vRowList.end(),
+                    ::boost::mem_fn(&OTableRow::isValid));
                                aReturn.bEnabled = aIter != m_vRowList.end();
                        }
                        break;
@@ -334,7 +332,8 @@
                                );
                        if ( aReturn.bEnabled )
                        {
-                               ::std::vector<OTableRow*>::const_iterator aIter 
= 
::std::find_if(m_vRowList.begin(),m_vRowList.end(),::std::mem_fun(&OTableRow::isValid));
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::const_iterator aIter = ::std::find_if(m_vRowList.begin(),m_vRowList.end(),
+                    ::boost::mem_fn(&OTableRow::isValid));
                                aReturn.bEnabled = aIter != m_vRowList.end();
                        }
                        break;
@@ -681,17 +680,20 @@
        return sal_True;
 }
 // 
-----------------------------------------------------------------------------
-sal_Bool SAL_CALL OTableController::suspend(sal_Bool _bSuspend) throw( 
RuntimeException )
+sal_Bool SAL_CALL OTableController::suspend(sal_Bool /*_bSuspend*/) throw( 
RuntimeException )
 {
        if ( getBroadcastHelper().bInDispose || getBroadcastHelper().bDisposed )
                return sal_True;
 
        vos::OGuard aSolarGuard( Application::GetSolarMutex() );
        ::osl::MutexGuard aGuard(m_aMutex);
+    if ( getView() && getView()->IsInModalMode() )
+        return sal_False;
        sal_Bool bCheck = sal_True;
        if ( isModified() )
        {
-               ::std::vector<OTableRow*>::iterator aIter = 
::std::find_if(m_vRowList.begin(),m_vRowList.end(),::std::mem_fun(&OTableRow::isValid));
+               ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aIter 
= ::std::find_if(m_vRowList.begin(),m_vRowList.end(),
+            ::boost::mem_fn(&OTableRow::isValid));
                if ( aIter != m_vRowList.end() )
                {
                        QueryBox aQry(getView(), 
ModuleRes(TABLE_DESIGN_SAVEMODIFIED));
@@ -835,8 +837,8 @@
                Reference<XAppend> xAppend(xColumns,UNO_QUERY);
                OSL_ENSURE(xAppend.is(),"No XAppend Interface!");
 
-               ::std::vector<OTableRow*>::iterator aIter = m_vRowList.begin();
-               ::std::vector<OTableRow*>::iterator aEnd = m_vRowList.end();
+               ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aIter 
= m_vRowList.begin();
+               ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aEnd 
= m_vRowList.end();
                for(;aIter != aEnd;++aIter)
                {
                        OSL_ENSURE(*aIter,"OTableRow is null!");
@@ -912,12 +914,9 @@
 {
        //////////////////////////////////////////////////////////////////////
        // Wenn Datenstruktur bereits vorhanden, Struktur leeren
-       ::std::vector<OTableRow*>::iterator aIter = m_vRowList.begin();
-       for(;aIter != m_vRowList.end();++aIter)
-               delete *aIter;
        m_vRowList.clear();
 
-       OTableRow* pTabEdRow = NULL;
+       ::boost::shared_ptr<OTableRow>  pTabEdRow;
        Reference< XDatabaseMetaData> xMetaData = getMetaData( );
        //////////////////////////////////////////////////////////////////////
        // Datenstruktur mit Daten aus DatenDefinitionsObjekt fuellen
@@ -974,7 +973,7 @@
                        
if(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_ALIGN))
                                xColumn->getPropertyValue(PROPERTY_ALIGN)       
        >>= nAlign;
 
-                       pTabEdRow = new OTableRow();
+                       pTabEdRow.reset(new OTableRow());
                        pTabEdRow->SetReadOnly(!bIsAlterAllowed);
                        // search for type
                        sal_Bool bForce;
@@ -1015,12 +1014,12 @@
 
                        for(;pKeyBegin != pKeyEnd;++pKeyBegin)
                        {
-                               ::std::vector<OTableRow*>::iterator aIter = 
m_vRowList.begin();
-                               for(;aIter != m_vRowList.end();++aIter)
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::iterator rowIter = m_vRowList.begin();
+                for(;rowIter != m_vRowList.end();++rowIter)
                                {
-                                       
if((*aIter)->GetActFieldDescr()->GetName() == *pKeyBegin)
+                                       
if((*rowIter)->GetActFieldDescr()->GetName() == *pKeyBegin)
                                        {
-                                               
(*aIter)->SetPrimaryKey(sal_True);
+                                               
(*rowIter)->SetPrimaryKey(sal_True);
                                                break;
                                        }
                                }
@@ -1040,7 +1039,7 @@
        bool bReadRow = !isAddAllowed();
        for(sal_Int32 i=m_vRowList.size(); i<128; i++ )
        {
-               pTabEdRow = new OTableRow();
+               pTabEdRow.reset(new OTableRow());
                pTabEdRow->SetReadOnly(bReadRow);
                m_vRowList.push_back( pTabEdRow);
        }
@@ -1090,17 +1089,15 @@
        Reference< XDatabaseMetaData> xMetaData = getMetaData( );
 
        ::comphelper::UStringMixEqual bCase(xMetaData.is() ? 
xMetaData->supportsMixedCaseQuotedIdentifiers() : sal_True);
-       ::std::vector<OTableRow*>::const_iterator aIter = m_vRowList.begin();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = 
m_vRowList.begin();
        for(;aIter != m_vRowList.end();++aIter)
        {
                OFieldDescription* pFieldDesc = (*aIter)->GetActFieldDescr();
                if (pFieldDesc && pFieldDesc->GetName().getLength())
                {
                        bFoundPKey |=  (*aIter)->IsPrimaryKey();
-                       sal_uInt16 nErrorRes = sal_uInt16(-1);
-                       sal_uInt16 nFieldPos = sal_uInt16(-1);
                        // first check for duplicate names
-                       ::std::vector<OTableRow*>::const_iterator aIter2 = 
aIter+1;
+                       ::std::vector< ::boost::shared_ptr<OTableRow> 
>::const_iterator aIter2 = aIter+1;
                        for(;aIter2 != m_vRowList.end();++aIter2)
                        {
                                OFieldDescription* pCompareDesc = 
(*aIter2)->GetActFieldDescr();
@@ -1128,7 +1125,7 @@
 
                        if (nReturn == RET_YES)
                        {
-                               OTableRow* pNewRow = new OTableRow();
+                               ::boost::shared_ptr<OTableRow>  pNewRow(new 
OTableRow());
                                TOTypeInfoSP pTypeInfo = 
::dbaui::queryPrimaryKeyType(m_aTypeInfo);
                                
                                if ( pTypeInfo.get() )
@@ -1158,15 +1155,17 @@
 // 
-----------------------------------------------------------------------------
 void OTableController::alterColumns()
 {
-       Reference<XColumnsSupplier> xColSup(m_xTable,UNO_QUERY);
+       Reference<XColumnsSupplier> xColSup(m_xTable,UNO_QUERY_THROW);
        OSL_ENSURE(xColSup.is(),"What happen here?!");
 
        Reference<XNameAccess> xColumns = xColSup->getColumns();
-       Reference<XIndexAccess> xIdxColumns(xColumns,UNO_QUERY);
+       Reference<XIndexAccess> xIdxColumns(xColumns,UNO_QUERY_THROW);
        OSL_ENSURE(xColumns.is(),"No columns");
+    if ( !xColumns.is() )
+        return;
        Reference<XAlterTable> xAlter(m_xTable,UNO_QUERY);      // can be null
 
-       sal_Int32 nColumnCount = xColumns->getElementNames().getLength();
+       sal_Int32 nColumnCount = xIdxColumns->getCount();
        Reference<XDrop> xDrop(xColumns,UNO_QUERY);                     // can 
be null
        Reference<XAppend> xAppend(xColumns,UNO_QUERY);         // can be null
        Reference<XDataDescriptorFactory> xColumnFactory(xColumns,UNO_QUERY); 
// can be null
@@ -1178,8 +1177,8 @@
 
 
        ::std::map< ::rtl::OUString,sal_Bool,::comphelper::UStringMixLess> 
aColumns(xMetaData.is() ? (xMetaData->supportsMixedCaseQuotedIdentifiers() ? 
true : false): sal_True);
-       ::std::vector<OTableRow*>::iterator aIter = m_vRowList.begin();
-       ::std::vector<OTableRow*>::iterator aEnd = m_vRowList.end();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aIter = 
m_vRowList.begin();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aEnd = 
m_vRowList.end();
        // first look for columns where something other than the name changed
        for(sal_Int32 nPos = 0;aIter != aEnd;++aIter,++nPos)
        {
@@ -1377,7 +1376,6 @@
                                                continue;
                                        }
                                }
-                               Reference<XDrop> xDrop(xColumns,UNO_QUERY);
                                xDrop->dropByName(*pIter);
                        }
                }
@@ -1488,8 +1486,8 @@
                                xKeyColumns = NULL;
                                Reference<XDrop> xDrop(xKeys,UNO_QUERY);
                                xDrop->dropByIndex(i); // delete the key
-                               ::std::vector<OTableRow*>::iterator aIter = 
m_vRowList.begin();
-                               ::std::vector<OTableRow*>::iterator aEnd = 
m_vRowList.end();
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::iterator aIter = m_vRowList.begin();
+                               ::std::vector< ::boost::shared_ptr<OTableRow> 
>::iterator aEnd = m_vRowList.end();
                                for(;aIter != aEnd;++aIter)
                                {
                                        OSL_ENSURE(*aIter,"OTableRow is null!");
@@ -1534,7 +1532,7 @@
                                setEditable( xMeta.is() && !xMeta->isReadOnly() 
&& (isAlterAllowed() || isDropAllowed() || isAddAllowed()) );
                                if(!isEditable())
                                {
-                                       ::std::vector<OTableRow*>::iterator 
aIter = m_vRowList.begin();
+                                       ::std::vector< 
::boost::shared_ptr<OTableRow> >::iterator aIter = m_vRowList.begin();
                                        for(; aIter != m_vRowList.end(); 
++aIter)
                                                (*aIter)->SetReadOnly(sal_True);
                                }
@@ -1586,7 +1584,7 @@
 {
        sal_Bool bAlterAllowed  = isAlterAllowed();
        sal_Bool bAddAllowed    = isAddAllowed();
-       ::std::vector<OTableRow*>::iterator aIter = m_vRowList.begin();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::iterator aIter = 
m_vRowList.begin();
        for(;aIter != m_vRowList.end();++aIter)
        {
                OSL_ENSURE(*aIter,"OTableRow is null!");
@@ -1610,7 +1608,7 @@
 
        ::comphelper::UStringMixEqual bCase(xMetaData.is() ? 
xMetaData->supportsMixedCaseQuotedIdentifiers() : sal_True);
 
-       ::std::vector<OTableRow*>::const_iterator aIter = m_vRowList.begin();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = 
m_vRowList.begin();
        for(sal_Int32 i=0;aIter != m_vRowList.end();++aIter)
        {
                OFieldDescription* pFieldDesc = (*aIter)->GetActFieldDescr();
@@ -1665,8 +1663,8 @@
 sal_Int32 OTableController::getFirstEmptyRowPosition() const
 {
        sal_Int32 nRet = -1;
-       ::std::vector<OTableRow*>::const_iterator aIter = m_vRowList.begin();
-       ::std::vector<OTableRow*>::const_iterator aEnd = m_vRowList.end();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = 
m_vRowList.begin();
+       ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aEnd = 
m_vRowList.end();
        for(;aIter != aEnd;++aIter)
        {
                if ( !*aIter || !(*aIter)->GetActFieldDescr() || 
!(*aIter)->GetActFieldDescr()->GetName().getLength() )




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

Reply via email to