From e19804aabac1e6beae444bc9d8918b8fc78868cd Mon Sep 17 00:00:00 2001 From: Matteo Casalin Date: Sat, 24 Aug 2013 17:29:44 +0200 Subject: String to OUString and some cleanup Change-Id: I78790a84fc86bd852899aebbaff526c7cec224cf Reviewed-on: https://gerrit.libreoffice.org/5618 Reviewed-by: Michael Stahl Tested-by: Michael Stahl --- sw/source/filter/ww8/attributeoutputbase.hxx | 3 +- sw/source/filter/ww8/docxattributeoutput.cxx | 42 +++++------- sw/source/filter/ww8/docxattributeoutput.hxx | 2 +- sw/source/filter/ww8/wrtw8nds.cxx | 98 ++++++++++++---------------- sw/source/filter/ww8/wrtww8.hxx | 2 +- sw/source/filter/ww8/ww8atr.cxx | 7 +- sw/source/filter/ww8/ww8attributeoutput.hxx | 2 +- 7 files changed, 66 insertions(+), 90 deletions(-) diff --git a/sw/source/filter/ww8/attributeoutputbase.hxx b/sw/source/filter/ww8/attributeoutputbase.hxx index cadce5a67f7a..c415d3c93e85 100644 --- a/sw/source/filter/ww8/attributeoutputbase.hxx +++ b/sw/source/filter/ww8/attributeoutputbase.hxx @@ -118,6 +118,7 @@ class SwNumRule; class wwFont; class String; +namespace rtl { class OUString; } class MSWordExportBase; @@ -574,7 +575,7 @@ protected: virtual bool DropdownField( const SwField* pFld ) = 0; virtual bool PlaceholderField( const SwField* pFld ) = 0; - virtual bool AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark ); + virtual bool AnalyzeURL( const OUString& rUrl, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ); ww8::GridColsPtr GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 8188fd6339ef..5fa97132d180 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1260,48 +1260,38 @@ void DocxAttributeOutput::EndRuby() m_pSerializer->endElementNS( XML_w, XML_ruby ); } -bool DocxAttributeOutput::AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark ) +bool DocxAttributeOutput::AnalyzeURL( const OUString& rUrl, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ) { bool bBookMarkOnly = AttributeOutputBase::AnalyzeURL( rUrl, rTarget, pLinkURL, pMark ); - String sURL = *pLinkURL; - String sMark = *pMark; - - bool bOutputField = sMark.Len(); - - if ( bOutputField ) + if ( !pMark->isEmpty() ) { + OUString sURL = *pLinkURL; + if ( bBookMarkOnly ) sURL = FieldString( ww::eHYPERLINK ); else - { - String sFld( FieldString( ww::eHYPERLINK ) ); - sFld.AppendAscii( "\"" ); - sURL.Insert( sFld, 0 ); - sURL += '\"'; - } + sURL = FieldString( ww::eHYPERLINK ) + "\"" + sURL + "\""; - if ( sMark.Len() ) - ( ( sURL.AppendAscii( " \\l \"" ) ) += sMark ) += '\"'; + sURL += " \\l \"" + *pMark + "\""; - if ( rTarget.Len() ) - ( sURL.AppendAscii( " \\n " ) ) += rTarget; - } + if ( !rTarget.isEmpty() ) + sURL += " \\n " + rTarget; - *pLinkURL = sURL; - *pMark = sMark; + *pLinkURL = sURL; + } return bBookMarkOnly; } bool DocxAttributeOutput::StartURL( const String& rUrl, const String& rTarget ) { - String sMark; - String sUrl; + OUString sMark; + OUString sUrl; bool bBookmarkOnly = AnalyzeURL( rUrl, rTarget, &sUrl, &sMark ); - if ( sMark.Len() && !bBookmarkOnly ) + if ( !sMark.isEmpty() && !bBookmarkOnly ) { m_rExport.OutputField( NULL, ww::eHYPERLINK, sUrl ); } @@ -1312,17 +1302,15 @@ bool DocxAttributeOutput::StartURL( const String& rUrl, const String& rTarget ) if ( !bBookmarkOnly ) { - OUString osUrl( sUrl ); - OString sId = OUStringToOString( GetExport().GetFilter().addRelation( m_pSerializer->getOutputStream(), "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", - osUrl, true ), RTL_TEXTENCODING_UTF8 ); + sUrl, true ), RTL_TEXTENCODING_UTF8 ); m_pHyperlinkAttrList->add( FSNS( XML_r, XML_id), sId.getStr()); } else m_pHyperlinkAttrList->add( FSNS( XML_w, XML_anchor ), - OUStringToOString( OUString( sMark ), RTL_TEXTENCODING_UTF8 ).getStr( ) ); + OUStringToOString( sMark, RTL_TEXTENCODING_UTF8 ).getStr( ) ); OUString sTarget( rTarget ); if ( !sTarget.isEmpty() ) diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index e02eaaed8ddf..a6c4532f36ce 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -578,7 +578,7 @@ protected: virtual bool DropdownField( const SwField* pFld ); virtual bool PlaceholderField( const SwField* pFld ); - virtual bool AnalyzeURL( const String& rURL, const String& rTarget, String* pLinkURL, String* pMark ); + virtual bool AnalyzeURL( const OUString& rURL, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ); /// Reference to the export, where to get the data from DocxExport &m_rExport; diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 7af0c2ee3e4f..4664938de76d 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -749,84 +749,73 @@ String &TruncateBookmark( String &rRet ) return rRet; } -bool AttributeOutputBase::AnalyzeURL( const String& rUrl, const String& /*rTarget*/, String* pLinkURL, String* pMark ) +bool AttributeOutputBase::AnalyzeURL( const OUString& rUrl, const OUString& /*rTarget*/, OUString* pLinkURL, OUString* pMark ) { bool bBookMarkOnly = false; - INetURLObject aURL( rUrl ); - String sMark; - String sURL; + OUString sMark; + OUString sURL; - if ( rUrl.Len() > 1 && rUrl.GetChar(0) == INET_MARK_TOKEN ) + if ( rUrl.getLength() > 1 && rUrl[0] == INET_MARK_TOKEN ) { - sMark = BookmarkToWriter( rUrl.Copy(1) ); + sMark = BookmarkToWriter( rUrl.copy(1) ); - xub_StrLen nPos = sMark.SearchBackward( cMarkSeparator ); + const sal_Int32 nPos = sMark.lastIndexOf( cMarkSeparator ); - String sRefType(comphelper::string::remove(sMark.Copy(nPos+1), ' ')); + const OUString sRefType(nPos>=0 && nPos+1first; - - if ( bkmkName == sLink ) + if ( aIter->first == sLink ) { - sMark = String( "_toc" ); - sMark += OUString::number( aIter->second ); + sMark = "_toc" + OUString::number( aIter->second ); } } } } else { + INetURLObject aURL( rUrl ); sURL = aURL.GetURLNoMark( INetURLObject::DECODE_UNAMBIGUOUS ); sMark = aURL.GetMark( INetURLObject::DECODE_UNAMBIGUOUS ); - } - if ( sMark.Len() && !sURL.Len() ) + if ( !sMark.isEmpty() && sURL.isEmpty() ) bBookMarkOnly = true; - - *pMark = sMark; *pLinkURL = sURL; return bBookMarkOnly; } -bool WW8AttributeOutput::AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark ) +bool WW8AttributeOutput::AnalyzeURL( const OUString& rUrl, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ) { bool bBookMarkOnly = AttributeOutputBase::AnalyzeURL( rUrl, rTarget, pLinkURL, pMark ); - String sURL = *pLinkURL; - String sMark = *pMark; + OUString sURL = *pLinkURL; - if ( sURL.Len() ) + if ( !sURL.isEmpty() ) sURL = URIHelper::simpleNormalizedMakeRelative( m_rWW8Export.GetWriter().GetBaseURL(), sURL ); if ( bBookMarkOnly ) sURL = FieldString( ww::eHYPERLINK ); else - { - String sFld( FieldString( ww::eHYPERLINK ) ); - sFld.AppendAscii( "\"" ); - sURL.Insert( sFld, 0 ); - sURL += '\"'; - } + sURL = FieldString( ww::eHYPERLINK ) + "\"" + sURL + "\""; - if ( sMark.Len() ) - ( ( sURL.AppendAscii( " \\l \"" ) ) += sMark ) += '\"'; + if ( !pMark->isEmpty() ) + sURL += " \\l \"" + *pMark + "\""; - if ( rTarget.Len() ) - ( sURL.AppendAscii( " \\n " ) ) += rTarget; + if ( !rTarget.isEmpty() ) + sURL += " \\n " + rTarget; *pLinkURL = sURL; - *pMark = sMark; return bBookMarkOnly; } @@ -838,8 +827,8 @@ bool WW8AttributeOutput::StartURL( const String &rUrl, const String &rTarget ) return false; INetURLObject aURL( rUrl ); - String sURL; - String sMark; + OUString sURL; + OUString sMark; bool bBookMarkOnly = AnalyzeURL( rUrl, rTarget, &sURL, &sMark ); @@ -895,7 +884,7 @@ bool WW8AttributeOutput::StartURL( const String &rUrl, const String &rTarget ) m_rWW8Export.pDataStrm->Write( aURLData1, sizeof( aURLData1 ) ); /* Write HFD Structure */ sal_uInt8 nAnchor = 0x00; - if ( sMark.Len() ) + if ( !sMark.isEmpty() ) nAnchor = 0x08; m_rWW8Export.pDataStrm->Write( &nAnchor, 1 ); // HFDBits m_rWW8Export.pDataStrm->Write( MAGIC_A, sizeof(MAGIC_A) ); //clsid @@ -905,7 +894,7 @@ bool WW8AttributeOutput::StartURL( const String &rUrl, const String &rTarget ) sal_uInt32 nFlag = bBookMarkOnly ? 0 : 0x01; if ( bAbsolute ) nFlag |= 0x02; - if ( sMark.Len() ) + if ( !sMark.isEmpty() ) nFlag |= 0x08; SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, nFlag ); @@ -928,37 +917,36 @@ bool WW8AttributeOutput::StartURL( const String &rUrl, const String &rTarget ) // save the links to files as relative sURL = URIHelper::simpleNormalizedMakeRelative( m_rWW8Export.GetWriter().GetBaseURL(), sURL ); - if ( eProto == INET_PROT_FILE && sURL.EqualsAscii( "/", 0, 1 ) ) + if ( eProto == INET_PROT_FILE && sURL.startsWith( "/" ) ) sURL = aURL.PathToFileName(); // special case for the absolute windows names // (convert '/c:/foo/bar.doc' into 'c:\foo\bar.doc') - sal_Unicode aDrive = ( sURL.Len() > 1 )? sURL.GetChar( 1 ): 0; - if ( sURL.EqualsAscii( "/", 0, 1 ) && - ( ( aDrive >= 'A' && aDrive <= 'Z' ) || ( aDrive >= 'a' && aDrive <= 'z' ) ) && - sURL.EqualsAscii( ":", 2, 1 ) ) + if (sURL.getLength()>=3) { - sURL.Erase( 0, 1 ); - sURL.SearchAndReplaceAll( '/', '\\' ); + const sal_Unicode aDrive = sURL[1]; + if ( sURL[0]=='/' && sURL[2]==':' && + ( (aDrive>='A' && aDrive<='Z' ) || (aDrive>='a' && aDrive<='z') ) ) + { + sURL = sURL.copy(1).replaceAll("/", "\\"); + } } // n#261623 convert smb notation to '\\' const char pSmb[] = "smb://"; - if ( eProto == INET_PROT_SMB && - sURL.EqualsAscii( pSmb, 0, sizeof( pSmb ) - 1 ) ) + if ( eProto == INET_PROT_SMB && sURL.startsWith( pSmb ) ) { - sURL.Erase( 0, sizeof( pSmb ) - 3 ); - sURL.SearchAndReplaceAll( '/', '\\' ); + sURL = sURL.copy( sizeof(pSmb)-3 ).replaceAll( "/", "\\" ); } m_rWW8Export.pDataStrm->Write( MAGIC_C, sizeof(MAGIC_C) ); - SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, sURL.Len()+1 ); + SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, sURL.getLength()+1 ); SwWW8Writer::WriteString8( *m_rWW8Export.pDataStrm, sURL, true, RTL_TEXTENCODING_MS_1252 ); m_rWW8Export.pDataStrm->Write( MAGIC_D, sizeof( MAGIC_D ) ); - SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2*sURL.Len() + 6 ); - SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2*sURL.Len() ); + SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2*sURL.getLength() + 6 ); + SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2*sURL.getLength() ); SwWW8Writer::WriteShort( *m_rWW8Export.pDataStrm, 3 ); SwWW8Writer::WriteString16( *m_rWW8Export.pDataStrm, sURL, false ); } @@ -974,13 +962,13 @@ bool WW8AttributeOutput::StartURL( const String &rUrl, const String &rTarget ) }; m_rWW8Export.pDataStrm->Write( MAGIC_B, sizeof(MAGIC_B) ); - SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2 * ( sURL.Len() + 1 ) ); + SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, 2 * ( sURL.getLength() + 1 ) ); SwWW8Writer::WriteString16( *m_rWW8Export.pDataStrm, sURL, true ); } - if ( sMark.Len() ) + if ( !sMark.isEmpty() ) { - SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, sMark.Len()+1 ); + SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, sMark.getLength()+1 ); SwWW8Writer::WriteString16( *m_rWW8Export.pDataStrm, sMark, true ); } SwWW8Writer::WriteLong( *m_rWW8Export.pDataStrm, nDataStt, diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx index 01d32c28e219..b082755a57c7 100644 --- a/sw/source/filter/ww8/wrtww8.hxx +++ b/sw/source/filter/ww8/wrtww8.hxx @@ -1546,7 +1546,7 @@ public: sal_Int16 GetWordFirstLineOffset(const SwNumFmt &rFmt); // A bit of a bag on the side for now -String FieldString(ww::eField eIndex); +OUString FieldString(ww::eField eIndex); String BookmarkToWord(const String &rBookmark); class WW8SHDLong diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 2133eb55cac0..188b99589073 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -2401,12 +2401,11 @@ void WW8Export::WritePostItBegin( ww::bytes* pOut ) pChpPlc->AppendFkpEntry( Strm().Tell(), static_cast< short >(pArr - aArr), aArr ); } -String FieldString(ww::eField eIndex) +OUString FieldString(ww::eField eIndex) { - String sRet(OUString(" ")); if (const char *pField = ww::GetEnglishFieldName(eIndex)) - sRet.InsertAscii(pField, 1); - return sRet; + return " " + OUString::createFromAscii(pField) + " "; + return OUString(" "); } void WW8AttributeOutput::HiddenField( const SwField& rFld ) diff --git a/sw/source/filter/ww8/ww8attributeoutput.hxx b/sw/source/filter/ww8/ww8attributeoutput.hxx index 97419ba51a03..3ffb2aa051a3 100644 --- a/sw/source/filter/ww8/ww8attributeoutput.hxx +++ b/sw/source/filter/ww8/ww8attributeoutput.hxx @@ -396,7 +396,7 @@ protected: virtual bool DropdownField( const SwField* pFld ); virtual bool PlaceholderField( const SwField* pFld ); - virtual bool AnalyzeURL( const String& rURL, const String& rTarget, String* pLinkURL, String* pMark ); + virtual bool AnalyzeURL( const OUString& rURL, const OUString& rTarget, OUString* pLinkURL, OUString* pMark ); /// Reference to the export, where to get the data from WW8Export &m_rWW8Export; -- cgit