Kaydet (Commit) 4245454d authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in SdrPowerPointImport

Change-Id: I9a8d1669cbd94f73dc75e4b7339910f8201e06aa
Reviewed-on: https://gerrit.libreoffice.org/50695Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 05a195ff
......@@ -1498,9 +1498,9 @@ SdrPowerPointImport::SdrPowerPointImport( PowerPointImportParam& rParam, const O
// TODO:: PPT_PST_TxPFStyleAtom
// read SlidePersists
m_pMasterPages = new PptSlidePersistList;
m_pSlidePages = new PptSlidePersistList;
m_pNotePages = new PptSlidePersistList;
m_pMasterPages.reset( new PptSlidePersistList );
m_pSlidePages.reset( new PptSlidePersistList );
m_pNotePages.reset( new PptSlidePersistList );
// now always creating the handout page, it will be the first in our masterpage list
std::unique_ptr<PptSlidePersistEntry> pE(new PptSlidePersistEntry);
......@@ -1655,13 +1655,9 @@ SdrPowerPointImport::SdrPowerPointImport( PowerPointImportParam& rParam, const O
SdrPowerPointImport::~SdrPowerPointImport()
{
for (SdHyperlinkEntry* i : aHyperList) {
delete i;
}
aHyperList.clear();
delete m_pMasterPages;
delete m_pSlidePages;
delete m_pNotePages;
m_pMasterPages.reset();
m_pSlidePages.reset();
m_pNotePages.reset();
}
bool PPTConvertOCXControls::ReadOCXStream( tools::SvRef<SotStorage>& rSrc,
......@@ -2196,11 +2192,11 @@ bool SdrPowerPointImport::ReadFontCollection()
PptSlidePersistList* SdrPowerPointImport::GetPageList(PptPageKind ePageKind) const
{
if ( ePageKind == PPT_MASTERPAGE )
return m_pMasterPages;
return m_pMasterPages.get();
if ( ePageKind == PPT_SLIDEPAGE )
return m_pSlidePages;
return m_pSlidePages.get();
if ( ePageKind == PPT_NOTEPAGE )
return m_pNotePages;
return m_pNotePages.get();
return nullptr;
}
......@@ -6874,9 +6870,9 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
{
PptInteractiveInfoAtom aInteractiveInfoAtom;
ReadPptInteractiveInfoAtom( rIn, aInteractiveInfoAtom );
for (SdHyperlinkEntry* pHyperlink : rSdrPowerPointImport.aHyperList)
for (SdHyperlinkEntry& rHyperlink : rSdrPowerPointImport.aHyperList)
{
if ( pHyperlink->nIndex == aInteractiveInfoAtom.nExHyperlinkId )
if ( rHyperlink.nIndex == aInteractiveInfoAtom.nExHyperlinkId )
{
if (!aTextHd.SeekToEndOfRecord(rIn))
{
......@@ -6898,11 +6894,11 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
xEntry.reset(new PPTFieldEntry);
xEntry->nPos = static_cast<sal_uInt16>(nStartPos);
xEntry->nTextRangeEnd = static_cast<sal_uInt16>(nEndPos);
OUString aTarget( pHyperlink->aTarget );
if ( !pHyperlink->aConvSubString.isEmpty() )
OUString aTarget( rHyperlink.aTarget );
if ( !rHyperlink.aConvSubString.isEmpty() )
{
aTarget += "#";
aTarget += pHyperlink->aConvSubString;
aTarget += rHyperlink.aConvSubString;
}
xEntry->xField1.reset(new SvxFieldItem( SvxURLField( aTarget, OUString(), SvxURLFormat::Repr ), EE_FEATURE_FIELD ));
}
......
......@@ -558,7 +558,7 @@ protected:
bool bOk;
PptUserEditAtom aUserEditAtom;
PptColorSchemeAtom aPageColors;
::std::vector< SdHyperlinkEntry* > aHyperList;
::std::vector< SdHyperlinkEntry > aHyperList;
std::unique_ptr<sal_uInt32[]>
pPersistPtr;
sal_uInt32 nPersistPtrCnt;
......@@ -566,9 +566,9 @@ protected:
const PPTStyleSheet* pPPTStyleSheet; // this is the current stylesheet;
const PPTStyleSheet* pDefaultSheet; // this is a sheet we are using if no masterpage can be found, but that should
// never happen just preventing a crash
PptSlidePersistList* m_pMasterPages;
PptSlidePersistList* m_pSlidePages;
PptSlidePersistList* m_pNotePages;
std::unique_ptr<PptSlidePersistList> m_pMasterPages;
std::unique_ptr<PptSlidePersistList> m_pSlidePages;
std::unique_ptr<PptSlidePersistList> m_pNotePages;
sal_uInt16 nAktPageNum;
sal_uLong nDocStreamPos;
sal_uInt16 nPageColorsNum;
......
......@@ -393,41 +393,40 @@ bool ImplSdPPTImport::Import()
nPropCount /= 6; // 6 properties per hyperlink
SdHyperlinkEntry* pHyperlink = nullptr;
SdHyperlinkEntry aHyperlink;
for ( i = 0; i < nPropCount; i++ )
{
pHyperlink = new SdHyperlinkEntry;
pHyperlink->nIndex = 0;
aHyperlink.nIndex = 0;
aPropItem.ReadUInt32( nType );
if ( nType != VT_I4 )
break;
aPropItem.ReadInt32( pHyperlink->nPrivate1 )
aPropItem.ReadInt32( aHyperlink.nPrivate1 )
.ReadUInt32( nType );
if ( nType != VT_I4 )
break;
aPropItem.ReadInt32( pHyperlink->nPrivate2 )
aPropItem.ReadInt32( aHyperlink.nPrivate2 )
.ReadUInt32( nType );
if ( nType != VT_I4 )
break;
aPropItem.ReadInt32( pHyperlink->nPrivate3 )
aPropItem.ReadInt32( aHyperlink.nPrivate3 )
.ReadUInt32( nType );
if ( nType != VT_I4 )
break;
aPropItem.ReadInt32( pHyperlink->nInfo );
if ( !aPropItem.Read( pHyperlink->aTarget ) )
aPropItem.ReadInt32( aHyperlink.nInfo );
if ( !aPropItem.Read( aHyperlink.aTarget ) )
break;
// Convert '\\' notation to 'smb://'
INetURLObject aUrl( pHyperlink->aTarget, INetProtocol::File );
pHyperlink->aTarget = aUrl.GetMainURL( INetURLObject::DecodeMechanism::NONE );
INetURLObject aUrl( aHyperlink.aTarget, INetProtocol::File );
aHyperlink.aTarget = aUrl.GetMainURL( INetURLObject::DecodeMechanism::NONE );
if ( !aPropItem.Read( pHyperlink->aSubAdress ) )
if ( !aPropItem.Read( aHyperlink.aSubAdress ) )
break;
if ( !pHyperlink->aSubAdress.isEmpty() ) // get the converted subaddress
if ( !aHyperlink.aSubAdress.isEmpty() ) // get the converted subaddress
{
sal_uInt32 nPageNumber = 0;
OUString aString( pHyperlink->aSubAdress );
OUString aString( aHyperlink.aSubAdress );
OString aStringAry[ 3 ];
size_t nTokenCount = 0;
sal_Int32 nPos = 0;
......@@ -497,23 +496,21 @@ bool ImplSdPPTImport::Import()
if ( bDocInternalSubAddress )
{
if ( nPageNumber < maSlideNameList.size() )
pHyperlink->aConvSubString = maSlideNameList[ nPageNumber ];
if ( pHyperlink->aConvSubString.isEmpty() )
aHyperlink.aConvSubString = maSlideNameList[ nPageNumber ];
if ( aHyperlink.aConvSubString.isEmpty() )
{
pHyperlink->aConvSubString = SdResId( STR_PAGE ) + " " + ( mpDoc->CreatePageNumValue( static_cast<sal_uInt16>(nPageNumber) + 1 ) );
aHyperlink.aConvSubString = SdResId( STR_PAGE ) + " " + ( mpDoc->CreatePageNumValue( static_cast<sal_uInt16>(nPageNumber) + 1 ) );
}
} else {
// if sub address is given but not internal, use it as it is
if ( pHyperlink->aConvSubString.isEmpty() )
if ( aHyperlink.aConvSubString.isEmpty() )
{
pHyperlink->aConvSubString = aString;
aHyperlink.aConvSubString = aString;
}
}
}
aHyperList.push_back( pHyperlink );
aHyperList.push_back( aHyperlink );
}
if ( i != nPropCount )
delete pHyperlink;
}
}
}
......@@ -532,7 +529,7 @@ bool ImplSdPPTImport::Import()
if ( SeekToRec( rStCtrl, PPT_PST_ExObjList, maDocHd.GetRecEndFilePos(), &aHyperHd ) )
{
sal_uInt32 nExObjHyperListLen = aHyperHd.GetRecEndFilePos();
for (SdHyperlinkEntry* pPtr : aHyperList)
for (SdHyperlinkEntry & entry : aHyperList)
{
DffRecordHeader aHyperE;
if ( !SeekToRec( rStCtrl, PPT_PST_ExHyperlink, nExObjHyperListLen, &aHyperE ) )
......@@ -540,7 +537,7 @@ bool ImplSdPPTImport::Import()
if ( !SeekToRec( rStCtrl, PPT_PST_ExHyperlinkAtom, nExObjHyperListLen ) )
break;
rStCtrl.SeekRel( 8 );
rStCtrl.ReadUInt32( pPtr->nIndex );
rStCtrl.ReadUInt32( entry.nIndex );
if (!aHyperE.SeekToEndOfRecord(rStCtrl))
break;
}
......@@ -2111,9 +2108,9 @@ void ImplSdPPTImport::FillSdAnimationInfo( SdAnimationInfo* pInfo, PptInteractiv
case 0x04 :
{
SdHyperlinkEntry* pPtr = nullptr;
for (SdHyperlinkEntry* pEntry : aHyperList) {
if ( pEntry->nIndex == pIAtom->nExHyperlinkId ) {
pPtr = pEntry;
for (SdHyperlinkEntry & entry : aHyperList) {
if ( entry.nIndex == pIAtom->nExHyperlinkId ) {
pPtr = &entry;
break;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment