summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatteo Casalin <matteo.casalin@yahoo.com>2013-08-24 17:29:44 +0200
committerMichael Stahl <mstahl@redhat.com>2013-08-25 15:12:47 +0000
commite19804aabac1e6beae444bc9d8918b8fc78868cd (patch)
treecfa20d333818947ce27ea9c8d442b3dfb5f90bce
parent9be8cc68cda77b22259bb418b5577918ba891362 (diff)
String to OUString and some cleanup
Change-Id: I78790a84fc86bd852899aebbaff526c7cec224cf Reviewed-on: https://gerrit.libreoffice.org/5618 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sw/source/filter/ww8/attributeoutputbase.hxx3
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx42
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.hxx2
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx98
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx2
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx7
-rw-r--r--sw/source/filter/ww8/ww8attributeoutput.hxx2
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+1<sMark.getLength() ?
+ sMark.copy(nPos+1).replaceAll(" ", "") :
+ OUString());
// #i21465# Only interested in outline references
- if ( sRefType.EqualsAscii( pMarkToOutline ) )
+ if ( sRefType.equalsAscii( pMarkToOutline ) )
{
- String sLink = sMark.Copy(0, nPos);
+ OUString sLink = sMark.copy(0, nPos);
SwImplBookmarksIter bkmkIterEnd = GetExport().maImplicitBookmarks.end();
for ( SwImplBookmarksIter aIter = GetExport().maImplicitBookmarks.begin(); aIter != bkmkIterEnd; ++aIter )
{
- String bkmkName = aIter->first;
-
- 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;