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]
