diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2008-12-10 13:41:25 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2008-12-10 13:41:25 +0000 |
commit | e1aeaf7c2efa44d40c2a26b48b0e4ff53c76312e (patch) | |
tree | 6035ad2bfed79bb4b9bb247b16385abacc8703cc | |
parent | 30854377eeac2b96b8270ac82a865eb5909d10aa (diff) |
CWS-TOOLING: integrate CWS dba31f
2008-12-10 14:16:09 +0100 oj r265185 : #i96658# remove is
2008-12-10 08:46:07 +0100 oj r265147 : remove duplicate ids
2008-12-10 08:35:02 +0100 oj r265146 : #i96658# remove is
2008-12-09 11:44:35 +0100 oj r265072 : use of tools::StringresourceList
2008-12-09 11:43:41 +0100 oj r265071 : new class to read string elements from a Resource
2008-12-09 11:41:56 +0100 oj r265070 : export StringListResource
2008-12-09 11:38:17 +0100 oj r265068 : change string ; to more string objects
2008-12-08 12:11:43 +0100 oj r264985 : change default-license-id to lic-en-US
2008-12-05 12:06:09 +0100 oj r264896 : disable check to uncheck
2008-12-04 08:58:50 +0100 oj r264814 : #i96517,i96520,i96522# d&d, background, state fixed
2008-12-04 08:53:29 +0100 oj r264813 : #i96434# use document ui name from filter
2008-12-04 08:41:06 +0100 oj r264812 : #i96434# use document ui name from filter
2008-12-02 13:48:49 +0100 lla r264697 : #i96526# extra string for default otr wasn't found
2008-11-28 11:46:31 +0100 oj r264536 : move toolbar and resize add field dlg
2008-11-28 08:38:22 +0100 oj r264526 : load string resources
2008-11-27 19:28:52 +0100 oj r264520 : unsigned
2008-11-27 19:10:19 +0100 oj r264517 : move class into unnamed namespace
2008-11-27 18:33:38 +0100 oj r264514 : wrong param
2008-11-27 16:52:39 +0100 oj r264510 : #i96622# wrong string replacement
2008-11-27 16:46:03 +0100 oj r264509 : remove unused var
2008-11-27 13:37:16 +0100 oj r264484 : #i96432# notify only when not in special mode of the page
2008-11-27 13:16:47 +0100 oj r264479 : #i95224# accept alias in group by
2008-11-27 12:35:19 +0100 oj r264477 : #i95416# always show localized strings in the start marker
2008-11-27 09:49:29 +0100 oj r264455 : #i93460# set split pos
2008-11-27 09:05:27 +0100 oj r264447 : #i96453# use extension from mimetype / mediatype
2008-11-26 16:24:43 +0100 oj r264416 : #i96520# #i96522# #i96519# some changes at the add field dialog
2008-11-26 16:20:27 +0100 oj r264414 : #i93420# prevent to register a none system file url
2008-11-26 16:19:02 +0100 oj r264413 : #i96522# new class to paste multiple objects
2008-11-26 10:06:12 +0100 oj r264349 : #i96191# introduce new error message and check if type was defined aand should not be changed
2008-11-26 10:06:12 +0100 oj r264348 : #i96191# throw error when decimal is to big
2008-11-25 12:08:59 +0100 oj r264281 : #i96431# correct state for align and move
2008-11-25 11:54:47 +0100 oj r264280 : #i96428# when new bind to first table
2008-11-25 11:49:55 +0100 oj r264279 : #i96434# add report output format to inspection
2008-11-25 11:49:05 +0100 oj r264278 : #i96434# add report output format to inspection
2008-11-24 10:46:23 +0100 oj r264215 : #i96458# size width for controls
2008-11-24 09:28:56 +0100 oj r264199 : #i96459# mark detail section when nothing is selected
2008-11-20 12:02:35 +0100 oj r264038 : #i96191# fix check for prec
2008-11-20 08:06:32 +0100 oj r264026 : #i90949# patch MID function
2008-11-11 13:14:58 +0100 oj r263555 : #i96086# apply patch
2008-11-11 11:34:46 +0100 oj r263549 : #i94128# correct height of section when controls moved outside
2008-11-11 07:52:08 +0100 oj r263544 : #i94729# fix string with ; as sep
2008-11-11 07:45:27 +0100 oj r263543 : #i95222# export chart title style
2008-11-11 07:43:37 +0100 oj r263542 : #i92541# fix line height
-rw-r--r-- | connectivity/source/drivers/ado/AConnection.cxx | 47 | ||||
-rw-r--r-- | connectivity/source/drivers/dbase/DTable.cxx | 72 | ||||
-rw-r--r-- | connectivity/source/drivers/jdbc/JConnection.cxx | 2 | ||||
-rw-r--r-- | connectivity/source/inc/resource/adabas_res.hrc | 5 | ||||
-rw-r--r-- | connectivity/source/inc/resource/ado_res.hrc | 1 | ||||
-rw-r--r-- | connectivity/source/inc/resource/sharedresources.hxx | 14 | ||||
-rw-r--r-- | connectivity/source/parse/sqlnode.cxx | 2 | ||||
-rw-r--r-- | connectivity/source/resource/conn_shared_res.src | 9 | ||||
-rw-r--r-- | connectivity/source/resource/sharedresources.cxx | 12 | ||||
-rw-r--r-- | svx/inc/svx/dbaexchange.hxx | 33 | ||||
-rw-r--r-- | svx/inc/svx/dialogs.hrc | 4 | ||||
-rw-r--r-- | svx/source/dialog/doclinkdialog.cxx | 10 | ||||
-rw-r--r-- | svx/source/dialog/doclinkdialog.src | 5 | ||||
-rw-r--r-- | svx/source/fmcomp/dbaexchange.cxx | 75 | ||||
-rw-r--r-- | svx/source/form/fmvwimp.cxx | 8 |
15 files changed, 221 insertions, 78 deletions
diff --git a/connectivity/source/drivers/ado/AConnection.cxx b/connectivity/source/drivers/ado/AConnection.cxx index 9fc74f8427..4193a6985f 100644 --- a/connectivity/source/drivers/ado/AConnection.cxx +++ b/connectivity/source/drivers/ado/AConnection.cxx @@ -44,7 +44,7 @@ #include <cppuhelper/typeprovider.hxx> #include "connectivity/dbexception.hxx" #include <osl/file.hxx> - +#include "resource/ado_res.hrc" using namespace dbtools; using namespace connectivity::ado; @@ -135,30 +135,37 @@ void OConnection::construct(const ::rtl::OUString& url,const Sequence< PropertyV else if(!pIter->Name.compareToAscii("password")) pIter->Value >>= aPWD; } - - if(m_pAdoConnection) + try { - if(m_pAdoConnection->Open(aDSN,aUID,aPWD,adConnectUnspecified)) - m_pAdoConnection->PutCommandTimeout(nTimeout); + if(m_pAdoConnection) + { + if(m_pAdoConnection->Open(aDSN,aUID,aPWD,adConnectUnspecified)) + m_pAdoConnection->PutCommandTimeout(nTimeout); + else + ADOS::ThrowException(*m_pAdoConnection,*this); + if(m_pAdoConnection->get_State() != adStateOpen) + throwGenericSQLException( STR_NO_CONNECTION,*this ); + + WpADOProperties aProps = m_pAdoConnection->get_Properties(); + if(aProps.IsValid()) + { + OTools::putValue(aProps,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Jet OLEDB:ODBC Parsing")),sal_True); + OLEVariant aVar(OTools::getValue(aProps,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Jet OLEDB:Engine Type")))); + if(!aVar.isNull() && !aVar.isEmpty()) + m_nEngineType = aVar; + } + buildTypeInfo(); + //bErg = TRUE; + } else - ADOS::ThrowException(*m_pAdoConnection,*this); - if(m_pAdoConnection->get_State() != adStateOpen) ::dbtools::throwFunctionSequenceException(*this); - WpADOProperties aProps = m_pAdoConnection->get_Properties(); - if(aProps.IsValid()) - { - OTools::putValue(aProps,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Jet OLEDB:ODBC Parsing")),sal_True); - OLEVariant aVar(OTools::getValue(aProps,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Jet OLEDB:Engine Type")))); - if(!aVar.isNull() && !aVar.isEmpty()) - m_nEngineType = aVar; - } - buildTypeInfo(); - //bErg = TRUE; } - else - ::dbtools::throwFunctionSequenceException(*this); - + catch(const Exception ) + { + osl_decrementInterlockedCount( &m_refCount ); + throw; + } osl_decrementInterlockedCount( &m_refCount ); } //----------------------------------------------------------------------------- diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index 53d71a9702..4fc12a971d 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -638,7 +638,9 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s sal_Size nByteOffset = 1; // Felder: OSQLColumns::const_iterator aIter = _rCols.begin(); - for (sal_Size i = 1; aIter != _rCols.end() && nByteOffset <= m_nBufferSize && i < _rRow->size();++aIter, i++) + OSQLColumns::const_iterator aEnd = _rCols.end(); + const sal_Size nCount = _rRow->size(); + for (sal_Size i = 1; aIter != aEnd && nByteOffset <= m_nBufferSize && i < nCount;++aIter, i++) { // Laengen je nach Datentyp: sal_Int32 nLen = 0; @@ -689,10 +691,11 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s String aStr(pData,(xub_StrLen)nLen,m_eEncoding); aStr.EraseTrailingChars(); - if (!aStr.Len()) // keine StringLaenge, dann NULL + if ( aStr.Len() ) + *(*_rRow)[i] = ::rtl::OUString(aStr); + else// keine StringLaenge, dann NULL (*_rRow)[i]->setNull(); - else - *(*_rRow)[i]= ORowSetValue(aStr); + pData[nLen] = cLast; } else @@ -724,11 +727,11 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s (*_rRow)[i]->setNull(); break; } - sal_uInt16 nYear = (sal_uInt16)aStr.Copy( 0, 4 ).ToInt32(); - sal_uInt16 nMonth = (sal_uInt16)aStr.Copy( 4, 2 ).ToInt32(); - sal_uInt16 nDay = (sal_uInt16)aStr.Copy( 6, 2 ).ToInt32(); + const sal_uInt16 nYear = (sal_uInt16)aStr.Copy( 0, 4 ).ToInt32(); + const sal_uInt16 nMonth = (sal_uInt16)aStr.Copy( 4, 2 ).ToInt32(); + const sal_uInt16 nDay = (sal_uInt16)aStr.Copy( 6, 2 ).ToInt32(); - ::com::sun::star::util::Date aDate(nDay,nMonth,nYear); + const ::com::sun::star::util::Date aDate(nDay,nMonth,nYear); *(*_rRow)[i] = aDate; } break; @@ -744,7 +747,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s case 'T': case 'Y': case 'J': b = TRUE; break; - default: b = sal_False; break; + default: b = FALSE; break; } *(*_rRow)[i] = b; // pVal->setDouble(b); @@ -752,7 +755,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s break; case DataType::LONGVARCHAR: { - long nBlockNo = aStr.ToInt32(); // Blocknummer lesen + const long nBlockNo = aStr.ToInt32(); // Blocknummer lesen if (nBlockNo > 0 && m_pMemoStream) // Daten aus Memo-Datei lesen, nur wenn { if ( !ReadMemo(nBlockNo, (*_rRow)[i]->get()) ) @@ -1469,7 +1472,6 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const } } - const sal_Int32 nRealPrecision = nLen; switch (nType) { case DataType::DATE: nLen = 8; break; @@ -1480,7 +1482,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const case DataType::LONGVARCHAR: nLen = 10; break; default: break; - } + } // switch (nType) sal_Int32 nPos = i; if(_xCols != xColumns) @@ -1525,8 +1527,6 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const pIndex->Insert(m_nFilePos,*rRow[nPos]); } - - char* pData = (char *)(m_pBuffer + nByteOffset); if (rRow[nPos]->getValue().isNull()) { @@ -1537,9 +1537,6 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const } sal_Bool bHadError = sal_False; - sal_Int32 nErrorCode = 1000; - ::rtl::OUString sSQLState = ::dbtools::getStandardSQLState( SQL_GENERAL_ERROR ); - Any aSQLError; try { switch (nType) @@ -1566,41 +1563,33 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const { memset(pData,' ',nLen); // Zuruecksetzen auf NULL - double n = rRow[nPos]->getValue(); + const double n = rRow[nPos]->getValue(); // ein const_cast, da GetFormatPrecision am SvNumberFormat nicht const ist, obwohl es das eigentlich // sein koennte und muesste const ByteString aDefaultValue( ::rtl::math::doubleToString( n, rtl_math_StringFormat_F, nScale, '.', NULL, 0)); - sal_Int32 nRealLen = aDefaultValue.Len(); - BOOL bValidLength = nRealLen <= nLen; + BOOL bValidLength = aDefaultValue.Len() <= nLen; if ( bValidLength ) { - nRealLen -= nScale; - if ( nScale ) // for '.' - --nRealLen; - if ( n < 0.0 ) // for the sign '-' - --nRealLen; - - bValidLength = nRealLen <= nRealPrecision; - if ( bValidLength ) - { - strncpy(pData,aDefaultValue.GetBuffer(),nLen); - // write the resulting double back - *rRow[nPos] = toDouble(aDefaultValue); - } // if ( nRealLen < nRealPrecision ) + strncpy(pData,aDefaultValue.GetBuffer(),nLen); + // write the resulting double back + *rRow[nPos] = toDouble(aDefaultValue); } - if (!bValidLength) + else { m_pColumns->getByIndex(i) >>= xCol; OSL_ENSURE(xCol.is(),"ODbaseTable::UpdateBuffer column is null!"); xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME)) >>= aColName; + ::std::list< ::std::pair<const sal_Char* , ::rtl::OUString > > aStringToSubstitutes; + aStringToSubstitutes.push_back(::std::pair<const sal_Char* , ::rtl::OUString >("$columnname$", aColName)); + aStringToSubstitutes.push_back(::std::pair<const sal_Char* , ::rtl::OUString >("$precision$", String::CreateFromInt32(nLen))); + aStringToSubstitutes.push_back(::std::pair<const sal_Char* , ::rtl::OUString >("$scale$", String::CreateFromInt32(nScale))); + aStringToSubstitutes.push_back(::std::pair<const sal_Char* , ::rtl::OUString >("$value$", ::rtl::OStringToOUString(aDefaultValue,RTL_TEXTENCODING_UTF8))); const ::rtl::OUString sError( getConnection()->getResources().getResourceStringWithSubstitution( - STR_INVALID_COLUMN_DECIMAL_VALUE, - "$columnname$", aColName, - "$precision$", String::CreateFromInt32(nRealPrecision), - "$scale$", String::CreateFromInt32(nScale) + STR_INVALID_COLUMN_DECIMAL_VALUE + ,aStringToSubstitutes ) ); ::dbtools::throwGenericSQLException( sError, *this ); } @@ -1644,12 +1633,9 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const break; } } - catch( SQLException& e ) + catch( SQLException& ) { - aSQLError = ::cppu::getCaughtException(); - bHadError = sal_True; - nErrorCode = e.ErrorCode; - sSQLState = e.SQLState; + throw; } catch ( Exception& ) { bHadError = sal_True; } diff --git a/connectivity/source/drivers/jdbc/JConnection.cxx b/connectivity/source/drivers/jdbc/JConnection.cxx index e180db8e19..09172cbb8e 100644 --- a/connectivity/source/drivers/jdbc/JConnection.cxx +++ b/connectivity/source/drivers/jdbc/JConnection.cxx @@ -880,7 +880,7 @@ namespace { ::rtl::OUString sError1( _aResource.getResourceStringWithSubstitution( STR_NO_CLASSNAME, - "$class$", _rDriverClass + "$classname$", _rDriverClass ) ); if ( _rDriverClassPath.getLength() ) { diff --git a/connectivity/source/inc/resource/adabas_res.hrc b/connectivity/source/inc/resource/adabas_res.hrc index 86a19d9cf9..d8956e6f46 100644 --- a/connectivity/source/inc/resource/adabas_res.hrc +++ b/connectivity/source/inc/resource/adabas_res.hrc @@ -40,11 +40,6 @@ #define STR_NO_DISK_SPACE ( STR_ADABAS_BASE + 1 ) #define STR_COMMAND_NOT_FOUND ( STR_ADABAS_BASE + 2 ) #define STR_DATABASE_NEEDS_CONVERTING ( STR_ADABAS_BASE + 3 ) -#define STR_INVALID_KEY_DESCRIPTOR_ERROR ( STR_ADABAS_BASE + 4 ) -#define STR_INVALID_TABLE_DESCRIPTOR_ERROR ( STR_ADABAS_BASE + 5 ) -#define STR_INVALID_USER_DESCRIPTOR_ERROR ( STR_ADABAS_BASE + 6 ) -#define STR_INVALID_VIEW_DESCRIPTOR_ERROR ( STR_ADABAS_BASE + 7 ) -#define STR_VIEW_NO_COMMAND_ERROR ( STR_ADABAS_BASE + 8 ) #define STR_USER_NO_DELETE ( STR_ADABAS_BASE + 9 ) #endif // CONNECTIVITY_RESOURCE_ADABAS_HRC diff --git a/connectivity/source/inc/resource/ado_res.hrc b/connectivity/source/inc/resource/ado_res.hrc index 2647c14f10..d24afa3829 100644 --- a/connectivity/source/inc/resource/ado_res.hrc +++ b/connectivity/source/inc/resource/ado_res.hrc @@ -46,6 +46,7 @@ #define STR_INVALID_VIEW_DESCRIPTOR_ERROR ( STR_ADO_BASE + 7 ) #define STR_VIEW_NO_COMMAND_ERROR ( STR_ADO_BASE + 8 ) #define STR_TYPE_NOT_CONVERT ( STR_ADO_BASE + 9 ) +#define STR_NO_CONNECTION ( STR_ADO_BASE + 10 ) #endif // CONNECTIVITY_RESOURCE_ADO_HRC diff --git a/connectivity/source/inc/resource/sharedresources.hxx b/connectivity/source/inc/resource/sharedresources.hxx index 0799ffa1da..ff9ea0e023 100644 --- a/connectivity/source/inc/resource/sharedresources.hxx +++ b/connectivity/source/inc/resource/sharedresources.hxx @@ -35,6 +35,7 @@ /** === end UNO includes === **/ #include <rtl/ustring.hxx> +#include <list> //........................................................................ namespace connectivity @@ -142,6 +143,19 @@ namespace connectivity const sal_Char* _pAsciiPatternToReplace3, const ::rtl::OUString& _rStringToSubstitute3 ) const; + + /** loads a string from the shared resource file, and replaces a given ASCII pattern with a given string + + @param _nResId + the resource ID of the string to load + @param _aStringToSubstitutes + A list of substitutions. + + @return + the string from the resource file, with applied string substitution + */ + ::rtl::OUString getResourceStringWithSubstitution( ResourceId _nResId, + const ::std::list< ::std::pair<const sal_Char* , ::rtl::OUString > > _aStringToSubstitutes) const; }; //........................................................................ diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index 824aed42e0..ddccee7ee1 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -1920,7 +1920,7 @@ void OSQLParseNode::negateSearchCondition(OSQLParseNode*& pSearchCondition,sal_B } // row_value_constructor comparison row_value_constructor // row_value_constructor comparison any_all_some subquery - else if(bNegate && SQL_ISRULE(pSearchCondition,comparison_predicate) || SQL_ISRULE(pSearchCondition,all_or_any_predicate)) + else if(bNegate && (SQL_ISRULE(pSearchCondition,comparison_predicate) || SQL_ISRULE(pSearchCondition,all_or_any_predicate))) { OSQLParseNode* pComparison = pSearchCondition->getChild(1); OSQLParseNode* pNewComparison = NULL; diff --git a/connectivity/source/resource/conn_shared_res.src b/connectivity/source/resource/conn_shared_res.src index de65d9459b..3e3a9e3675 100644 --- a/connectivity/source/resource/conn_shared_res.src +++ b/connectivity/source/resource/conn_shared_res.src @@ -372,6 +372,11 @@ String STR_VIEW_NO_COMMAND_ERROR Text [ en-US ] = "Could not create view: no command object."; }; +String STR_NO_CONNECTION +{ + Text [ en-US ] = "The connection could not be created. May be the nescessary data provider is not installed."; +}; + // dbase String STR_COULD_NOT_DELETE_INDEX { @@ -430,7 +435,7 @@ String STR_DUPLICATE_VALUE_IN_COLUMN String STR_INVALID_COLUMN_DECIMAL_VALUE { - Text [ en-US ] = "The '$columnname$' column has been defined as a \"Decimal\" type, the max. length is $precision$ characters (with $scale$ decimal places).\n\nThe specified value is longer than the number of digits allowed."; + Text [ en-US ] = "The '$columnname$' column has been defined as a \"Decimal\" type, the max. length is $precision$ characters (with $scale$ decimal places).\n\nThe specified value \"$value$ is longer than the number of digits allowed."; }; String STR_COLUMN_NOT_ALTERABLE @@ -497,7 +502,7 @@ String STR_ROW_ALREADY_DELETED }; String STR_QUERY_MORE_TABLES { - Text [ en-US ] = "The query can not be executed. It is contains more then one table."; + Text [ en-US ] = "The query can not be executed. It contains more than one table."; }; String STR_QUERY_NO_TABLE { diff --git a/connectivity/source/resource/sharedresources.cxx b/connectivity/source/resource/sharedresources.cxx index 58560ce531..7d2a5a0002 100644 --- a/connectivity/source/resource/sharedresources.cxx +++ b/connectivity/source/resource/sharedresources.cxx @@ -226,6 +226,18 @@ namespace connectivity OSL_VERIFY( lcl_substitute( sString, _pAsciiPatternToReplace3, _rStringToSubstitute3 ) ); return sString; } + //-------------------------------------------------------------------- + ::rtl::OUString SharedResources::getResourceStringWithSubstitution( ResourceId _nResId, + const ::std::list< ::std::pair<const sal_Char* , ::rtl::OUString > > _aStringToSubstitutes) const + { + ::rtl::OUString sString( SharedResources_Impl::getInstance().getResourceString( _nResId ) ); + ::std::list< ::std::pair<const sal_Char* , ::rtl::OUString > >::const_iterator aIter = _aStringToSubstitutes.begin(); + ::std::list< ::std::pair<const sal_Char* , ::rtl::OUString > >::const_iterator aEnd = _aStringToSubstitutes.end(); + for(;aIter != aEnd; ++aIter) + OSL_VERIFY( lcl_substitute( sString, aIter->first, aIter->second ) ); + + return sString; + } //........................................................................ } // namespace connectivity diff --git a/svx/inc/svx/dbaexchange.hxx b/svx/inc/svx/dbaexchange.hxx index 0fc626f741..8d097e0971 100644 --- a/svx/inc/svx/dbaexchange.hxx +++ b/svx/inc/svx/dbaexchange.hxx @@ -261,6 +261,39 @@ namespace svx ,const ::rtl::OUString& _sActiveCommand); }; + //==================================================================== + //= OMultiColumnTransferable + //==================================================================== + /** class for transfering multiple columns + */ + class SVX_DLLPUBLIC OMultiColumnTransferable : public TransferableHelper + { + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_aDescriptors; + + public: + OMultiColumnTransferable(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _aDescriptors); + + void push_back(ODataAccessDescriptor& _aDescriptor); + + /** checks whether or not an object descriptor can be extracted from the data flavor vector given + @param _rFlavors + available flavors + @param _nFormats + formats to accept + */ + static sal_Bool canExtractDescriptor(const DataFlavorExVector& _rFlavors); + + /** extracts a object descriptor from the transferable given + */ + static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > extractDescriptor(const TransferableDataHelper& _rData); + + protected: + virtual void AddSupportedFormats(); + virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); + virtual void ObjectReleased(); + static sal_uInt32 getDescriptorFormatId(); + }; + //........................................................................ } // namespace svx //........................................................................ diff --git a/svx/inc/svx/dialogs.hrc b/svx/inc/svx/dialogs.hrc index 93b63cebe0..f50bf95a7f 100644 --- a/svx/inc/svx/dialogs.hrc +++ b/svx/inc/svx/dialogs.hrc @@ -1364,8 +1364,10 @@ #define RID_SVXSTR_YESTOALL (RID_SVX_START + 1166) //added for issue73355 #define RID_SVXSTR_SELMODE_BLK (RID_SVX_START + 1167) +#define STR_LINKEDDOC_NO_SYSTEM_FILE (RID_SVX_START + 1168) // pb: next free string resource id -#define RID_SVXSTR_NEXTFREE (RID_SVX_START + 1168) + +#define RID_SVXSTR_NEXTFREE (RID_SVX_START + 1169) // ---------------------------------------------------------------------------- diff --git a/svx/source/dialog/doclinkdialog.cxx b/svx/source/dialog/doclinkdialog.cxx index 70e557c7b8..d4dc239aaa 100644 --- a/svx/source/dialog/doclinkdialog.cxx +++ b/svx/source/dialog/doclinkdialog.cxx @@ -147,6 +147,16 @@ namespace svx aError.Execute(); return 0L; } // if (!bFileExists) + INetURLObject aURL( sURL ); + if ( aURL.GetProtocol() != INET_PROT_FILE ) + { + String sMsg = String(SVX_RES(STR_LINKEDDOC_NO_SYSTEM_FILE)); + sMsg.SearchAndReplaceAscii("$file$", m_aURL.GetText()); + ErrorBox aError(this, WB_OK , sMsg); + aError.Execute(); + return 0L; + } + String sCurrentText = m_aName.GetText(); if ( m_aNameValidator.IsSet() ) { diff --git a/svx/source/dialog/doclinkdialog.src b/svx/source/dialog/doclinkdialog.src index 0b2ef3df65..29a72695d7 100644 --- a/svx/source/dialog/doclinkdialog.src +++ b/svx/source/dialog/doclinkdialog.src @@ -137,6 +137,11 @@ String STR_LINKEDDOC_DOESNOTEXIST Text [ en-US ] = "The file\n$file$\ndoes not exist."; }; +String STR_LINKEDDOC_NO_SYSTEM_FILE +{ + Text [ en-US ] = "The file\n$file$\ndoes not exist in the local file system."; +}; + String STR_NAME_CONFLICT { Text [ en-US ] = "The name '$file$' is already used for another database.\nPlease choose a different name."; diff --git a/svx/source/fmcomp/dbaexchange.cxx b/svx/source/fmcomp/dbaexchange.cxx index 66c5a84c62..bfc819f113 100644 --- a/svx/source/fmcomp/dbaexchange.cxx +++ b/svx/source/fmcomp/dbaexchange.cxx @@ -688,6 +688,81 @@ namespace svx m_sCompatibleObjectDescription += sSeparator; } + //-------------------------------------------------------------------- + OMultiColumnTransferable::OMultiColumnTransferable(const Sequence< PropertyValue >& _aDescriptors) : m_aDescriptors(_aDescriptors) + { + } + //-------------------------------------------------------------------- + sal_uInt32 OMultiColumnTransferable::getDescriptorFormatId() + { + static sal_uInt32 s_nFormat = (sal_uInt32)-1; + if ((sal_uInt32)-1 == s_nFormat) + { + s_nFormat = SotExchange::RegisterFormatName(String::CreateFromAscii("application/x-openoffice;windows_formatname=\"dbaccess.MultipleColumnDescriptorTransfer\"")); + OSL_ENSURE((sal_uInt32)-1 != s_nFormat, "OColumnTransferable::getDescriptorFormatId: bad exchange id!"); + } + return s_nFormat; + } + //-------------------------------------------------------------------- + void OMultiColumnTransferable::AddSupportedFormats() + { + AddFormat(getDescriptorFormatId()); + } + //-------------------------------------------------------------------- + void OMultiColumnTransferable::push_back(ODataAccessDescriptor& _aDescriptor) + { + const sal_Int32 nCount = m_aDescriptors.getLength(); + m_aDescriptors.realloc(nCount+1); + m_aDescriptors[nCount].Value <<= _aDescriptor.createPropertyValueSequence(); + } + //-------------------------------------------------------------------- + sal_Bool OMultiColumnTransferable::GetData( const DataFlavor& _rFlavor ) + { + const sal_uInt32 nFormatId = SotExchange::GetFormat(_rFlavor); + if (nFormatId == getDescriptorFormatId()) + { + return SetAny( makeAny( m_aDescriptors ), _rFlavor ); + } + + return sal_False; + } + + //-------------------------------------------------------------------- + sal_Bool OMultiColumnTransferable::canExtractDescriptor(const DataFlavorExVector& _rFlavors) + { + DataFlavorExVector::const_iterator aCheck = _rFlavors.begin(); + for ( ; + aCheck != _rFlavors.end() && getDescriptorFormatId() == aCheck->mnSotId; + ++aCheck + ) + ; + + return aCheck == _rFlavors.end(); + } + + //-------------------------------------------------------------------- + Sequence< PropertyValue > OMultiColumnTransferable::extractDescriptor(const TransferableDataHelper& _rData) + { + Sequence< PropertyValue > aList; + if (_rData.HasFormat(getDescriptorFormatId())) + { + // extract the any from the transferable + DataFlavor aFlavor; +#if OSL_DEBUG_LEVEL > 0 + sal_Bool bSuccess = +#endif + SotExchange::GetFormatDataFlavor(getDescriptorFormatId(), aFlavor); + OSL_ENSURE(bSuccess, "OColumnTransferable::extractColumnDescriptor: invalid data format (no flavor)!"); + + _rData.GetAny(aFlavor) >>= aList; + } // if (_rData.HasFormat(getDescriptorFormatId())) + return aList; + } + // ----------------------------------------------------------------------------- + void OMultiColumnTransferable::ObjectReleased() + { + m_aDescriptors.realloc(0); + } //........................................................................ } // namespace svx diff --git a/svx/source/form/fmvwimp.cxx b/svx/source/form/fmvwimp.cxx index f09a2c68c1..4710df4822 100644 --- a/svx/source/form/fmvwimp.cxx +++ b/svx/source/form/fmvwimp.cxx @@ -1491,16 +1491,14 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext& MapMode eTargetMode( _rOutDev.GetMapMode() ), eSourceMode( MAP_100TH_MM ); - // Textbreite ist mindestens 5cm + // Textbreite ist mindestens 4cm // Texthoehe immer halber cm - ::Size aDefTxtSize(3000, 500); + ::Size aDefTxtSize(4000, 500); ::Size aDefSize(4000, 500); ::Size aDefImageSize(4000, 4000); - // Abstand zwischen Text und Control - ::Size aDelta(500, 0); ::Size aRealSize = _rOutDev.LogicToLogic(aTextSize, eTargetMode, eSourceMode); - aRealSize.Width() = std::max(aRealSize.Width(), aDefTxtSize.Width()) + aDelta.Width(); + aRealSize.Width() = std::max(aRealSize.Width(), aDefTxtSize.Width()); aRealSize.Height()= aDefSize.Height(); // je nach Skalierung des Zieldevices muss die Groesse noch normiert werden (#53523#) |