shell/Package_scripts_kde.mk | 6 + shell/source/unix/misc/kde4-open-url.sh | 22 ++++++ sw/inc/dbmgr.hxx | 2 sw/source/core/fields/dbfld.cxx | 4 - sw/source/core/fields/docufld.cxx | 3 sw/source/uibase/dbui/dbmgr.cxx | 104 ++++++++++++++++---------------- 6 files changed, 86 insertions(+), 55 deletions(-)
New commits: commit f7db2461292be3e23f5b3af47e488eaa8105d8db Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Nov 26 13:35:42 2014 +0100 Add kde4-open-url script Adds a KDE4 specific URL processing script. Change-Id: I0116fa95f076a5772e88c616e93de542fe4fe4e4 diff --git a/shell/Package_scripts_kde.mk b/shell/Package_scripts_kde.mk index c5e4978..162bcc5 100644 --- a/shell/Package_scripts_kde.mk +++ b/shell/Package_scripts_kde.mk @@ -9,6 +9,12 @@ $(eval $(call gb_Package_Package,shell_scripts_kde,$(SRCDIR)/shell/source/unix/misc)) +ifeq ($(ENABLE_KDE),TRUE) $(eval $(call gb_Package_add_file,shell_scripts_kde,$(LIBO_BIN_FOLDER)/kde-open-url,kde-open-url.sh)) +endif + +ifeq ($(ENABLE_KDE4),TRUE) +$(eval $(call gb_Package_add_file,shell_scripts_kde,$(LIBO_BIN_FOLDER)/kde4-open-url,kde4-open-url.sh)) +endif # vim: set shiftwidth=4 tabstop=4 noexpandtab: diff --git a/shell/source/unix/misc/kde4-open-url.sh b/shell/source/unix/misc/kde4-open-url.sh new file mode 100755 index 0000000..e5b8125 --- /dev/null +++ b/shell/source/unix/misc/kde4-open-url.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# + +# use kde-open or xdg-open if available, falling back to our own open-url +kde-open "$1" 2>/dev/null || xdg-open "$1" 2>/dev/null || `dirname "$0"`/open-url "$1" 2>/dev/null +exit 0 commit 585bcac8eaa27396ea749a7bdb66abf62fc60335 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Oct 29 16:04:47 2014 +0100 MM: don't read column content twice to fill SwCalc Currently we fill the SwCalc dict twice via lcl_GetColumnCnt and GetMergeColumnCnt. This also drops the unused nFmt argument from GetMergeColumnCnt. Change-Id: I2f7fd1578353e919209002c0c3040adc14b08528 diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx index b79cda0..aa6117b 100644 --- a/sw/inc/dbmgr.hxx +++ b/sw/inc/dbmgr.hxx @@ -311,7 +311,7 @@ public: void CloseAll(bool bIncludingMerge = true); bool GetMergeColumnCnt(const OUString& rColumnName, sal_uInt16 nLanguage, - OUString &rResult, double *pNumber, sal_uInt32 *pFormat); + OUString &rResult, double *pNumber); bool FillCalcWithMergeData(SvNumberFormatter *pDocFormatter, sal_uInt16 nLanguage, bool asString, SwCalc &aCalc); bool ToNextMergeRecord(); diff --git a/sw/source/core/fields/dbfld.cxx b/sw/source/core/fields/dbfld.cxx index fb724d2..c81dec1 100644 --- a/sw/source/core/fields/dbfld.cxx +++ b/sw/source/core/fields/dbfld.cxx @@ -322,13 +322,13 @@ void SwDBField::Evaluate() if(!pMgr || !pMgr->IsDataSourceOpen(aTmpData.sDataSource, aTmpData.sCommand, true)) return ; - sal_uInt32 nFmt; + sal_uInt32 nFmt = 0; // search corresponding column name OUString aColNm( static_cast<SwDBFieldType*>(GetTyp())->GetColumnName() ); SvNumberFormatter* pDocFormatter = GetDoc()->GetNumberFormatter(); - pMgr->GetMergeColumnCnt(aColNm, GetLanguage(), aContent, &nValue, &nFmt); + pMgr->GetMergeColumnCnt(aColNm, GetLanguage(), aContent, &nValue); if( !( nSubType & nsSwExtendedSubType::SUB_OWN_FMT ) ) SetFormat( nFmt = pMgr->GetColumnFmt( aTmpData.sDataSource, aTmpData.sCommand, aColNm, pDocFormatter, GetLanguage() )); diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx index 3e02a32..2a74a43 100644 --- a/sw/source/core/fields/docufld.cxx +++ b/sw/source/core/fields/docufld.cxx @@ -1381,9 +1381,8 @@ void SwHiddenTxtField::Evaluate(SwDoc* pDoc) sDataTableOrQuery, false)) { double fNumber; - sal_uInt32 nTmpFormat; pMgr->GetMergeColumnCnt(GetColumnName( sTmpName ), - GetLanguage(), aContent, &fNumber, &nTmpFormat ); + GetLanguage(), aContent, &fNumber ); bValid = true; } else if( !sDBName.isEmpty() && !sDataSource.isEmpty() && diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index fc79e80..3b085cc 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -276,8 +276,27 @@ static bool lcl_MoveAbsolute(SwDSParam* pParam, long nAbsPos) return bRet; } -static bool lcl_GetColumnCnt(SwDSParam* pParam, - const OUString& rColumnName, long nLanguage, OUString& rResult, double* pNumber) +static void lcl_GetColumnCnt(SwDSParam *pParam, + const uno::Reference< XPropertySet > &rColumnProps, + long nLanguage, OUString &rResult, double* pNumber) +{ + SwDBFormatData aFormatData; + if(!pParam->xFormatter.is()) + { + uno::Reference<XDataSource> xSource = SwDBManager::getDataSourceAsParent( + pParam->xConnection,pParam->sDataSource); + lcl_InitNumberFormatter(*pParam, xSource ); + } + aFormatData.aNullDate = pParam->aNullDate; + aFormatData.xFormatter = pParam->xFormatter; + + aFormatData.aLocale = LanguageTag( (LanguageType)nLanguage ).getLocale(); + + rResult = SwDBManager::GetDBField( rColumnProps, aFormatData, pNumber); +} + +static bool lcl_GetColumnCnt(SwDSParam* pParam, const OUString& rColumnName, + long nLanguage, OUString& rResult, double* pNumber) { uno::Reference< XColumnsSupplier > xColsSupp( pParam->xResultSet, UNO_QUERY ); uno::Reference<XNameAccess> xCols; @@ -293,20 +312,7 @@ static bool lcl_GetColumnCnt(SwDSParam* pParam, Any aCol = xCols->getByName(rColumnName); uno::Reference< XPropertySet > xColumnProps; aCol >>= xColumnProps; - - SwDBFormatData aFormatData; - if(!pParam->xFormatter.is()) - { - uno::Reference<XDataSource> xSource = SwDBManager::getDataSourceAsParent( - pParam->xConnection,pParam->sDataSource); - lcl_InitNumberFormatter(*pParam, xSource ); - } - aFormatData.aNullDate = pParam->aNullDate; - aFormatData.xFormatter = pParam->xFormatter; - - aFormatData.aLocale = LanguageTag( (LanguageType)nLanguage ).getLocale(); - - rResult = SwDBManager::GetDBField( xColumnProps, aFormatData, pNumber); + lcl_GetColumnCnt( pParam, xColumnProps, nLanguage, rResult, pNumber ); return true; }; @@ -1867,7 +1873,7 @@ bool SwDBManager::GetColumnCnt(const OUString& rSourceName, const OUString& rTab // reads the column data at the current position bool SwDBManager::GetMergeColumnCnt(const OUString& rColumnName, sal_uInt16 nLanguage, - OUString &rResult, double *pNumber, sal_uInt32 * /*pFormat*/) + OUString &rResult, double *pNumber) { if(!pImpl->pMergeData || !pImpl->pMergeData->xResultSet.is() || pImpl->pMergeData->bAfterSelection ) { @@ -1912,46 +1918,44 @@ bool SwDBManager::FillCalcWithMergeData( SvNumberFormatter *pDocFormatter, continue; } + // get the column type + sal_Int32 nColumnType = DataType::SQLNULL; + Any aCol = xCols->getByName( pColNames[nCol] ); + uno::Reference<XPropertySet> xColumnProps; + aCol >>= xColumnProps; + Any aType = xColumnProps->getPropertyValue( "Type" ); + aType >>= nColumnType; double aNumber = DBL_MAX; - if( lcl_GetColumnCnt(pImpl->pMergeData, rColName, nLanguage, aString, &aNumber) ) + + lcl_GetColumnCnt( pImpl->pMergeData, xColumnProps, nLanguage, aString, &aNumber ); + + sal_uInt32 nFmt = GetColumnFmt( pImpl->pMergeData->sDataSource, + pImpl->pMergeData->sCommand, + pColNames[nCol], pDocFormatter, nLanguage ); + // aNumber is overwritten by SwDBField::FormatValue, so store initial status + bool colIsNumber = aNumber != DBL_MAX; + bool bValidValue = SwDBField::FormatValue( pDocFormatter, aString, nFmt, + aNumber, nColumnType, NULL ); + if( colIsNumber ) { - // get the column type - sal_Int32 nColumnType = DataType::SQLNULL; - Any aCol = xCols->getByName( pColNames[nCol] ); - uno::Reference<XPropertySet> xCol; - aCol >>= xCol; - Any aType = xCol->getPropertyValue( "Type" ); - aType >>= nColumnType; - - sal_uInt32 nFmt; - if( !GetMergeColumnCnt(pColNames[nCol], nLanguage, aString, &aNumber, &nFmt) ) - continue; - - // aNumber is overwritten by SwDBField::FormatValue, so store initial status - bool colIsNumber = aNumber != DBL_MAX; - bool bValidValue = SwDBField::FormatValue( pDocFormatter, aString, nFmt, - aNumber, nColumnType, NULL ); - if( colIsNumber ) - { - if( bValidValue ) - { - SwSbxValue aValue; - if( !asString ) - aValue.PutDouble( aNumber ); - else - aValue.PutString( aString ); - SAL_INFO( "sw.dbmgr", "'" << pColNames[nCol] << "': " << aNumber << " / " << aString ); - rCalc.VarChange( pColNames[nCol], aValue ); - } - } - else + if( bValidValue ) { SwSbxValue aValue; - aValue.PutString( aString ); - SAL_INFO( "sw.dbmgr", "'" << pColNames[nCol] << "': " << aString ); + if( !asString ) + aValue.PutDouble( aNumber ); + else + aValue.PutString( aString ); + SAL_INFO( "sw.dbmgr", "'" << pColNames[nCol] << "': " << aNumber << " / " << aString ); rCalc.VarChange( pColNames[nCol], aValue ); } } + else + { + SwSbxValue aValue; + aValue.PutString( aString ); + SAL_INFO( "sw.dbmgr", "'" << pColNames[nCol] << "': " << aString ); + rCalc.VarChange( pColNames[nCol], aValue ); + } } return bExistsNextRecord; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits