Tag: cws_src680_dba30 User: fs Date: 06/05/08 04:28:56 Modified: /dba/dbaccess/source/ui/tabledesign/ TableController.cxx
Log: RESYNC: (1.101-1.103); 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.16.5&r2=1.99.16.6 Delta lines: +37 -33 --------------------- --- TableController.cxx 20 Apr 2006 06:53:35 -0000 1.99.16.5 +++ TableController.cxx 8 May 2006 11:28:53 -0000 1.99.16.6 @@ -156,6 +156,7 @@ #ifndef DBAUI_TOOLS_HXX #include "UITools.hxx" #endif +#include <boost/mem_fn.hpp> #ifndef _CPPUHELPER_EXC_HLP_HXX_ #include <cppuhelper/exc_hlp.hxx> @@ -196,9 +197,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; @@ -281,9 +282,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 @@ -304,7 +303,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; @@ -312,7 +312,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; @@ -335,7 +336,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; @@ -707,10 +709,13 @@ 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)); @@ -854,8 +859,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!"); @@ -931,12 +936,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 @@ -993,7 +995,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; @@ -1034,7 +1036,7 @@ for(;pKeyBegin != pKeyEnd;++pKeyBegin) { - ::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) { if((*aIter)->GetActFieldDescr()->GetName() == *pKeyBegin) @@ -1059,7 +1061,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); } @@ -1109,7 +1111,7 @@ 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(); @@ -1119,7 +1121,7 @@ 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(); @@ -1147,7 +1149,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() ) @@ -1177,15 +1179,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 @@ -1197,8 +1201,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) { @@ -1521,8 +1525,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!"); @@ -1567,7 +1571,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); } @@ -1619,7 +1623,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!"); @@ -1643,7 +1647,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(); @@ -1698,8 +1702,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]
