diff options
author | Tor Lillqvist <tml@collabora.com> | 2014-04-28 18:01:11 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2014-04-28 18:40:16 +0300 |
commit | d2f9e1a165314ad9e8588b1d44b3ff0a455ef7f6 (patch) | |
tree | 373b690e5e61a9c269d80fda0d12e5169aff33fc /sw | |
parent | 739a5bcd2b9e0eada33fb69c5e582b65dfa9ae79 (diff) |
More --disable-database-connectivity work
Bypass various database field and mail-merge functionality in the case
of !HAVE_FEATURE_DBCONNECTIVITY.
Now TiledLibreOffice builds and runs.
Change-Id: I9aa167413f426fe28d44dd063dc661f468ddc847
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/doc/doc.cxx | 6 | ||||
-rw-r--r-- | sw/source/core/doc/docfld.cxx | 76 | ||||
-rw-r--r-- | sw/source/core/uibase/uno/unofreg.cxx | 4 | ||||
-rw-r--r-- | sw/source/core/unocore/unofield.cxx | 5 |
4 files changed, 74 insertions, 17 deletions
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index 623a5468cf8f..6b338c194348 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + #include <doc.hxx> #include <DocumentSettingManager.hxx> #include <UndoManager.hxx> @@ -318,7 +320,9 @@ void SwDoc::ChgDBData(const SwDBData& rNewData) maDBData = rNewData; SetModified(); } +#if HAVE_FEATURE_DBCONNECTIVITY GetSysFldType(RES_DBNAMEFLD)->UpdateFlds(); +#endif } bool SwDoc::SplitNode( const SwPosition &rPos, bool bChkTableStart ) @@ -686,7 +690,7 @@ SwFlyFrmFmt* SwDoc::InsertOLE(const SwPaM &rRg, const OUString& rObjName, SwFieldType *SwDoc::GetSysFldType( const sal_uInt16 eWhich ) const { for( sal_uInt16 i = 0; i < INIT_FLDTYPES; ++i ) - if( eWhich == (*mpFldTypes)[i]->Which() ) + if( (*mpFldTypes)[i] && eWhich == (*mpFldTypes)[i]->Which() ) return (*mpFldTypes)[i]; return 0; } diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx index fafb7137ea07..6468d26add42 100644 --- a/sw/source/core/doc/docfld.cxx +++ b/sw/source/core/doc/docfld.cxx @@ -95,7 +95,8 @@ SwFieldType* SwDoc::InsertFldType(const SwFieldType &rFldTyp) const ::utl::TransliterationWrapper& rSCmp = GetAppCmpStrIgnore(); OUString sFldNm( rFldTyp.GetName() ); for( ; i < nSize; ++i ) - if( nFldWhich == (*mpFldTypes)[i]->Which() && + if( (*mpFldTypes)[i] && + nFldWhich == (*mpFldTypes)[i]->Which() && rSCmp.isEqual( sFldNm, (*mpFldTypes)[i]->GetName() )) return (*mpFldTypes)[i]; } @@ -103,13 +104,15 @@ SwFieldType* SwDoc::InsertFldType(const SwFieldType &rFldTyp) case RES_AUTHORITY: for( ; i < nSize; ++i ) - if( nFldWhich == (*mpFldTypes)[i]->Which() ) + if( (*mpFldTypes)[i] && + nFldWhich == (*mpFldTypes)[i]->Which() ) return (*mpFldTypes)[i]; break; default: for( i = 0; i < nSize; ++i ) - if( nFldWhich == (*mpFldTypes)[i]->Which() ) + if( (*mpFldTypes)[i] && + nFldWhich == (*mpFldTypes)[i]->Which() ) return (*mpFldTypes)[i]; } @@ -164,7 +167,8 @@ void SwDoc::InsDeletedFldType( SwFieldType& rFldTyp ) SwFieldType* pFnd; for( ; i < nSize; ++i ) - if( nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() && + if( (*mpFldTypes)[i] && + nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() && rSCmp.isEqual( rFldNm, pFnd->GetName() ) ) { // find new name @@ -172,7 +176,8 @@ void SwDoc::InsDeletedFldType( SwFieldType& rFldTyp ) do { OUString sSrch = rFldNm + OUString::number( nNum ); for( i = INIT_FLDTYPES; i < nSize; ++i ) - if( nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() && + if( (*mpFldTypes)[i] && + nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() && rSCmp.isEqual( sSrch, pFnd->GetName() ) ) break; @@ -210,7 +215,7 @@ void SwDoc::RemoveFldType(sal_uInt16 nFld) * Dependent fields present -> ErrRaise */ sal_uInt16 nSize = mpFldTypes->size(); - if(nFld < nSize) + if(nFld < nSize && (*mpFldTypes)[nFld]) { SwFieldType* pTmp = (*mpFldTypes)[nFld]; @@ -283,6 +288,9 @@ SwFieldType* SwDoc::GetFldType( SwFieldType* pRet = 0; for( ; i < nSize; ++i ) { + if( !(*mpFldTypes)[i] ) + continue; + SwFieldType* pFldType = (*mpFldTypes)[i]; OUString aFldName( pFldType->GetName() ); @@ -307,6 +315,9 @@ void SwDoc::UpdateFlds( SfxPoolItem *pNewHt, bool bCloseDB ) for( sal_uInt16 i=0; i < mpFldTypes->size(); ++i) { + if( !(*mpFldTypes)[i] ) + continue; + switch( (*mpFldTypes)[i]->Which() ) { // Update table fields second to last @@ -364,13 +375,15 @@ void SwDoc::UpdateUsrFlds() SwCalc* pCalc = 0; const SwFieldType* pFldType; for( sal_uInt16 i = INIT_FLDTYPES; i < mpFldTypes->size(); ++i ) - if( RES_USERFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) + { + if( (*mpFldTypes)[i] && + RES_USERFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) { if( !pCalc ) pCalc = new SwCalc( *this ); ((SwUserFieldType*)pFldType)->GetValue( *pCalc ); } - + } if( pCalc ) { delete pCalc; @@ -383,8 +396,11 @@ void SwDoc::UpdateRefFlds( SfxPoolItem* pHt ) { SwFieldType* pFldType; for( sal_uInt16 i = 0; i < mpFldTypes->size(); ++i ) - if( RES_GETREFFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) + { + if( (*mpFldTypes)[i] && + RES_GETREFFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) pFldType->ModifyNotification( 0, pHt ); + } } /// @note For simplicity assume that all field types have updatable contents so @@ -393,6 +409,9 @@ bool SwDoc::containsUpdatableFields() { for (sal_uInt16 i = 0; i < mpFldTypes->size(); ++i) { + if( !(*mpFldTypes)[i] ) + continue; + SwFieldType* pFldType = (*mpFldTypes)[i]; SwIterator<SwFmtFld,SwFieldType> aIter(*pFldType); if (aIter.First()) @@ -410,7 +429,8 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) for (sal_uInt16 i = 0; i < mpFldTypes->size(); ++i) { - if( RES_TABLEFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) + if( (*mpFldTypes)[i] && + RES_TABLEFLD == ( pFldType = (*mpFldTypes)[i] )->Which() ) { SwTableFmlUpdate* pUpdtFld = 0; if( pHt && RES_TABLEFML_UPDATE == pHt->Which() ) @@ -659,6 +679,9 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt ) { SwFieldType* pFldType; for( sal_uInt16 i = 0; i < INIT_FLDTYPES; ++i ) + { + if( !(*mpFldTypes)[i] ) + continue; switch( ( pFldType = (*mpFldTypes)[ i ] )->Which() ) { case RES_PAGENUMBERFLD: @@ -671,6 +694,7 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt ) pFldType->ModifyNotification( 0, 0 ); break; } + } SetNewFldLst(true); } @@ -678,8 +702,12 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt ) void SwDoc::GCFieldTypes() { for( sal_uInt16 n = mpFldTypes->size(); n > INIT_FLDTYPES; ) - if( !(*mpFldTypes)[ --n ]->GetDepends() ) + { + if( !(*mpFldTypes)[--n] ) + continue; + if( !(*mpFldTypes)[n]->GetDepends() ) RemoveFldType( n ); + } } void SwDoc::LockExpFlds() @@ -1252,7 +1280,11 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds ) const SwFieldType* pFldType; // process separately: for( n = mpFldTypes->size(); n; ) - switch( ( pFldType = (*mpFldTypes)[ --n ] )->Which() ) + { + if( !(*mpFldTypes)[--n] ) + continue; + + switch( ( pFldType = (*mpFldTypes)[n] )->Which() ) { case RES_USERFLD: { @@ -1274,6 +1306,7 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds ) ((SwSetExpFieldType*)pFldType)->SetOutlineChgNd( 0 ); break; } + } } // The array is filled with all fields; start calculation. @@ -1596,7 +1629,11 @@ void SwDoc::_InitFieldTypes() // is being called by the CTOR mpFldTypes->push_back( new SwPageNumberFieldType ); mpFldTypes->push_back( new SwAuthorFieldType ); mpFldTypes->push_back( new SwFileNameFieldType(this) ); +#if HAVE_FEATURE_DBCONNECTIVITY mpFldTypes->push_back( new SwDBNameFieldType(this) ); +#else + mpFldTypes->push_back( NULL ); +#endif mpFldTypes->push_back( new SwGetExpFieldType(this) ); mpFldTypes->push_back( new SwGetRefFieldType( this ) ); mpFldTypes->push_back( new SwHiddenTxtFieldType ); @@ -1611,6 +1648,10 @@ void SwDoc::_InitFieldTypes() // is being called by the CTOR mpFldTypes->push_back( new SwDBNextSetFieldType ); mpFldTypes->push_back( new SwDBNumSetFieldType ); mpFldTypes->push_back( new SwDBSetNumberFieldType ); +#else + mpFldTypes->push_back( NULL ); + mpFldTypes->push_back( NULL ); + mpFldTypes->push_back( NULL ); #endif mpFldTypes->push_back( new SwTemplNameFieldType(this) ); mpFldTypes->push_back( new SwTemplNameFieldType(this) ); @@ -1657,6 +1698,9 @@ const SwDBData& SwDoc::GetDBDesc() const sal_uInt16 nSize = mpFldTypes->size(); for(sal_uInt16 i = 0; i < nSize && maDBData.sDataSource.isEmpty(); ++i) { + if( !(*mpFldTypes)[i] ) + continue; + SwFieldType& rFldType = *((*mpFldTypes)[i]); sal_uInt16 nWhich = rFldType.Which(); if(IsUsed(rFldType)) @@ -1923,8 +1967,8 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames, switch( pFld->GetTyp()->Which() ) { - case RES_DBFLD: #if HAVE_FEATURE_DBCONNECTIVITY + case RES_DBFLD: if( IsNameInArray( rOldNames, lcl_DBDataToString(((SwDBField*)pFld)->GetDBData()))) { SwDBFieldType* pOldTyp = (SwDBFieldType*)pFld->GetTyp(); @@ -1940,7 +1984,6 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames, bExpand = true; } -#endif break; case RES_DBSETNUMBERFLD: @@ -1961,6 +2004,7 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames, ((SwDBNameInfField*)pFld)->SetDBData(aNewDBData); bExpand = true; } +#endif // no break; case RES_HIDDENTXTFLD: case RES_HIDDENPARAFLD: @@ -2203,7 +2247,7 @@ void SwDoc::ChangeAuthorityData( const SwAuthEntry* pNewData ) for( sal_uInt16 i = INIT_FLDTYPES; i < nSize; ++i ) { SwFieldType* pFldType = (*mpFldTypes)[i]; - if( RES_AUTHORITY == pFldType->Which() ) + if( pFldType && RES_AUTHORITY == pFldType->Which() ) { SwAuthorityFieldType* pAuthType = (SwAuthorityFieldType*)pFldType; pAuthType->ChangeEntryContent(pNewData); @@ -2691,6 +2735,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld, ModifyNotification( 0, pDstFmtFld ); break; +#if HAVE_FEATURE_DBCONNECTIVITY case RES_DBNAMEFLD: case RES_DBNEXTSETFLD: case RES_DBNUMSETFLD: @@ -2701,7 +2746,6 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld, break; case RES_DBFLD: -#if HAVE_FEATURE_DBCONNECTIVITY { // JP 10.02.96: call ChgValue, so that the style change sets the // ContentString correctly diff --git a/sw/source/core/uibase/uno/unofreg.cxx b/sw/source/core/uibase/uno/unofreg.cxx index 77b6f90a9e2f..985e3ee1c94e 100644 --- a/sw/source/core/uibase/uno/unofreg.cxx +++ b/sw/source/core/uibase/uno/unofreg.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + #include "SwXFilterOptions.hxx" #include "unofreg.hxx" #include <sal/types.h> @@ -204,6 +206,7 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL sw_component_getFactory( SwXModule_createInstance, SwXModule_getSupportedServiceNames() ); } +#if HAVE_FEATURE_DBCONNECTIVITY else if( SwXMailMerge_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) ) { @@ -212,6 +215,7 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL sw_component_getFactory( SwXMailMerge_createInstance, SwXMailMerge_getSupportedServiceNames() ); } +#endif else if( SwXFilterOptions::getImplementationName_Static().equalsAsciiL( pImplName, nImplNameLen ) ) { diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx index 8b4a0dc1cfd3..a469f635e561 100644 --- a/sw/source/core/unocore/unofield.cxx +++ b/sw/source/core/unocore/unofield.cxx @@ -2774,6 +2774,9 @@ uno::Sequence< OUString > SwXTextFieldMasters::getElementNames(void) std::vector<OUString> aFldNames; for( size_t i = 0; i < nCount; ++i ) { + if (!(*pFldTypes)[i]) + continue; + SwFieldType& rFldType = *((*pFldTypes)[i]); OUString sFldName; @@ -2979,6 +2982,8 @@ SwXFieldEnumeration::SwXFieldEnumeration(SwDoc & rDoc) sal_uInt16 nCount = pFldTypes->size(); for(sal_uInt16 nType = 0; nType < nCount; ++nType) { + if( !(*pFldTypes)[nType] ) + continue; const SwFieldType *pCurType = (*pFldTypes)[nType]; SwIterator<SwFmtFld,SwFieldType> aIter( *pCurType ); const SwFmtFld* pCurFldFmt = aIter.First(); |