sw/source/ui/index/cntex.cxx | 22 +++++----- sw/source/ui/index/cnttab.cxx | 76 ++++++++++++++---------------------- sw/source/ui/misc/glossary.cxx | 6 +- sw/source/uibase/inc/glossary.hxx | 2 sw/source/uibase/inc/swuicnttab.hxx | 17 ++++---- 5 files changed, 56 insertions(+), 67 deletions(-)
New commits: commit 47220de23b44aacf2bf3a1eff592972c3d1da2fc Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jul 26 16:39:41 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Jul 30 08:21:19 2018 +0200 loplugin:useuniqueptr in SwGlossaryDlg Change-Id: I46df74af9eae2cedc7121d6454e92faf03321c63 Reviewed-on: https://gerrit.libreoffice.org/58240 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index a7badfffdfea..386377e6c476 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -247,7 +247,7 @@ SwGlossaryDlg::~SwGlossaryDlg() void SwGlossaryDlg::dispose() { m_pCategoryBox->Clear(); - delete pExampleFrame; + pExampleFrame.reset(); m_pInsertTipCB.clear(); m_pNameED.clear(); m_pShortNameLbl.clear(); @@ -1067,8 +1067,8 @@ void SwGlossaryDlg::ShowPreview() if (!pExampleFrame) { Link<SwOneExampleFrame&,void> aLink(LINK(this, SwGlossaryDlg, PreviewLoadedHdl)); - pExampleFrame = new SwOneExampleFrame( *m_pExampleWIN, - EX_SHOW_ONLINE_LAYOUT, &aLink ); + pExampleFrame.reset(new SwOneExampleFrame( *m_pExampleWIN, + EX_SHOW_ONLINE_LAYOUT, &aLink )); } ShowAutoText(::GetCurrGlosGroup(), m_pShortNameEdit->GetText()); diff --git a/sw/source/uibase/inc/glossary.hxx b/sw/source/uibase/inc/glossary.hxx index d6bf120c5290..9b6e0b17dc28 100644 --- a/sw/source/uibase/inc/glossary.hxx +++ b/sw/source/uibase/inc/glossary.hxx @@ -106,7 +106,7 @@ class SwGlossaryDlg : public SvxStandardDialog OUString sReadonlyPath; css::uno::Reference< css::text::XAutoTextContainer2 > m_xAutoText; - SwOneExampleFrame* pExampleFrame; + std::unique_ptr<SwOneExampleFrame> pExampleFrame; SwGlossaryHdl* pGlossaryHdl; commit c14b9ccc3d274644a721398edc7e336b5463cf81 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jul 26 16:37:13 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Jul 30 08:21:10 2018 +0200 loplugin:useuniqueptr in SwMultiTOXTabDialog and use a std::vector and a custom struct for storing stuff instead of a rrays and a separate count field Change-Id: Ic1063ed0bfdc06f83a01d18503ccf6f9503f5b9d Reviewed-on: https://gerrit.libreoffice.org/58239 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/ui/index/cntex.cxx b/sw/source/ui/index/cntex.cxx index 358bfb6e0094..5d796bcbda59 100644 --- a/sw/source/ui/index/cntex.cxx +++ b/sw/source/ui/index/cntex.cxx @@ -114,7 +114,7 @@ IMPL_LINK_NOARG(SwMultiTOXTabDialog, CreateExample_Hdl, SwOneExampleFrame&, void { OUString sTmp = "IndexSection_" + OUString::number(i); uno::Any aSection = xSections->getByName( sTmp ); - aSection >>= m_pxIndexSectionsArray[i]->xContainerSection; + aSection >>= m_vTypeData[i].m_pxIndexSections->xContainerSection; } uno::Reference< text::XDocumentIndexesSupplier > xIdxSupp(xModel, uno::UNO_QUERY); uno::Reference< container::XIndexAccess > xIdxs = xIdxSupp->getDocumentIndexes(); @@ -154,17 +154,17 @@ void SwMultiTOXTabDialog::CreateOrUpdateExample( "com.sun.star.text.Bibliography" }; - OSL_ENSURE(m_pxIndexSectionsArray[nTOXIndex] && - m_pxIndexSectionsArray[nTOXIndex]->xContainerSection.is(), + OSL_ENSURE(m_vTypeData[nTOXIndex].m_pxIndexSections && + m_vTypeData[nTOXIndex].m_pxIndexSections->xContainerSection.is(), "Section not created"); uno::Reference< frame::XModel > & xModel = m_pExampleFrame->GetModel(); bool bInitialCreate = true; - if(!m_pxIndexSectionsArray[nTOXIndex]->xDocumentIndex.is()) + if(!m_vTypeData[nTOXIndex].m_pxIndexSections->xDocumentIndex.is()) { bInitialCreate = true; - if(!m_pxIndexSectionsArray[nTOXIndex]->xContainerSection.is()) + if(!m_vTypeData[nTOXIndex].m_pxIndexSections->xContainerSection.is()) throw uno::RuntimeException(); - uno::Reference< text::XTextRange > xAnchor = m_pxIndexSectionsArray[nTOXIndex]->xContainerSection->getAnchor(); + uno::Reference< text::XTextRange > xAnchor = m_vTypeData[nTOXIndex].m_pxIndexSections->xContainerSection->getAnchor(); xAnchor = xAnchor->getStart(); uno::Reference< text::XTextCursor > xCursor = xAnchor->getText()->createTextCursorByRange(xAnchor); @@ -172,21 +172,21 @@ void SwMultiTOXTabDialog::CreateOrUpdateExample( OUString sIndexTypeName(OUString::createFromAscii( IndexServiceNames[ nTOXIndex <= TOX_AUTHORITIES ? nTOXIndex : TOX_USER] )); - m_pxIndexSectionsArray[nTOXIndex]->xDocumentIndex.set(xFact->createInstance(sIndexTypeName), uno::UNO_QUERY); - uno::Reference< text::XTextContent > xContent(m_pxIndexSectionsArray[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY); + m_vTypeData[nTOXIndex].m_pxIndexSections->xDocumentIndex.set(xFact->createInstance(sIndexTypeName), uno::UNO_QUERY); + uno::Reference< text::XTextContent > xContent(m_vTypeData[nTOXIndex].m_pxIndexSections->xDocumentIndex, uno::UNO_QUERY); uno::Reference< text::XTextRange > xRg(xCursor, uno::UNO_QUERY); xCursor->getText()->insertTextContent(xRg, xContent, false); } for(sal_uInt16 i = 0 ; i <= TOX_AUTHORITIES; i++) { - uno::Reference< beans::XPropertySet > xSectPr(m_pxIndexSectionsArray[i]->xContainerSection, uno::UNO_QUERY); + uno::Reference< beans::XPropertySet > xSectPr(m_vTypeData[i].m_pxIndexSections->xContainerSection, uno::UNO_QUERY); if(xSectPr.is()) { xSectPr->setPropertyValue(UNO_NAME_IS_VISIBLE, makeAny(i == nTOXIndex)); } } // set properties - uno::Reference< beans::XPropertySet > xIdxProps(m_pxIndexSectionsArray[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY); + uno::Reference< beans::XPropertySet > xIdxProps(m_vTypeData[nTOXIndex].m_pxIndexSections->xDocumentIndex, uno::UNO_QUERY); uno::Reference< beans::XPropertySetInfo > xInfo = xIdxProps->getPropertySetInfo(); SwTOXDescription& rDesc = GetTOXDescription(m_eCurrentTOXType); SwTOIOptions nIdxOptions = rDesc.GetIndexOptions(); @@ -398,7 +398,7 @@ void SwMultiTOXTabDialog::CreateOrUpdateExample( pForm->GetTemplate(i + nOffset)); } } - m_pxIndexSectionsArray[nTOXIndex]->xDocumentIndex->update(); + m_vTypeData[nTOXIndex].m_pxIndexSections->xDocumentIndex->update(); } catch (const Exception&) diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index c24579c5ccc1..48517308463e 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -237,21 +237,16 @@ SwMultiTOXTabDialog::SwMultiTOXTabDialog(vcl::Window* pParent, const SfxItemSet& m_eCurrentTOXType.nIndex = 0; const sal_uInt16 nUserTypeCount = m_rWrtShell.GetTOXTypeCount(TOX_USER); - m_nTypeCount = nUserTypeCount + 6; - m_pFormArray = new SwForm*[m_nTypeCount]; - m_pDescriptionArray = new SwTOXDescription*[m_nTypeCount]; - m_pxIndexSectionsArray = new SwIndexSections_Impl*[m_nTypeCount]; + m_vTypeData.resize(nUserTypeCount + 6); //the standard user index is on position TOX_USER //all user indexes follow after position TOX_AUTHORITIES if(pCurTOX) { m_bEditTOX = true; } - for(int i = m_nTypeCount - 1; i > -1; i--) + for(int i = m_vTypeData.size() - 1; i > -1; i--) { - m_pFormArray[i] = nullptr; - m_pDescriptionArray[i] = nullptr; - m_pxIndexSectionsArray[i] = new SwIndexSections_Impl; + m_vTypeData[i].m_pxIndexSections.reset(new SwIndexSections_Impl); if(pCurTOX) { m_eCurrentTOXType.eType = pCurTOX->GetType(); @@ -270,8 +265,8 @@ SwMultiTOXTabDialog::SwMultiTOXTabDialog(vcl::Window* pParent, const SfxItemSet& } } } - m_pFormArray[nArrayIndex] = new SwForm(pCurTOX->GetTOXForm()); - m_pDescriptionArray[nArrayIndex] = CreateTOXDescFromTOXBase(pCurTOX); + m_vTypeData[nArrayIndex].m_pForm.reset(new SwForm(pCurTOX->GetTOXForm())); + m_vTypeData[nArrayIndex].m_pDescription = CreateTOXDescFromTOXBase(pCurTOX); if(TOX_AUTHORITIES == m_eCurrentTOXType.eType) { const SwAuthorityFieldType* pFType = static_cast<const SwAuthorityFieldType*>( @@ -283,12 +278,12 @@ SwMultiTOXTabDialog::SwMultiTOXTabDialog(vcl::Window* pParent, const SfxItemSet& sBrackets += OUStringLiteral1(pFType->GetPrefix()); if(pFType->GetSuffix()) sBrackets += OUStringLiteral1(pFType->GetSuffix()); - m_pDescriptionArray[nArrayIndex]->SetAuthBrackets(sBrackets); - m_pDescriptionArray[nArrayIndex]->SetAuthSequence(pFType->IsSequence()); + m_vTypeData[nArrayIndex].m_pDescription->SetAuthBrackets(sBrackets); + m_vTypeData[nArrayIndex].m_pDescription->SetAuthSequence(pFType->IsSequence()); } else { - m_pDescriptionArray[nArrayIndex]->SetAuthBrackets("[]"); + m_vTypeData[nArrayIndex].m_pDescription->SetAuthBrackets("[]"); } } } @@ -327,18 +322,9 @@ void SwMultiTOXTabDialog::dispose() // fdo#38515 Avoid setting focus on deleted controls in the destructors EnableInput( false ); - for(sal_uInt16 i = 0; i < m_nTypeCount; i++) - { - delete m_pFormArray[i]; - delete m_pDescriptionArray[i]; - delete m_pxIndexSectionsArray[i]; - } - delete[] m_pxIndexSectionsArray; - - delete[] m_pFormArray; - delete[] m_pDescriptionArray; - delete m_pMgr; - delete m_pExampleFrame; + m_vTypeData.clear(); + m_pMgr.reset(); + m_pExampleFrame.reset(); m_pExampleContainerWIN.clear(); m_pShowExampleCB.clear(); SfxTabDialog::dispose(); @@ -375,10 +361,10 @@ short SwMultiTOXTabDialog::Ok() SwTOXBase aNewDef(*m_rWrtShell.GetDefaultTOXBase( m_eCurrentTOXType.eType, true )); const sal_uInt16 nIndex = m_eCurrentTOXType.GetFlatIndex(); - if(m_pFormArray[nIndex]) + if(m_vTypeData[nIndex].m_pForm) { - rDesc.SetForm(*m_pFormArray[nIndex]); - aNewDef.SetTOXForm(*m_pFormArray[nIndex]); + rDesc.SetForm(*m_vTypeData[nIndex].m_pForm); + aNewDef.SetTOXForm(*m_vTypeData[nIndex].m_pForm); } rDesc.ApplyTo(aNewDef); if(!m_bGlobalFlag) @@ -397,26 +383,26 @@ short SwMultiTOXTabDialog::Ok() SwForm* SwMultiTOXTabDialog::GetForm(CurTOXType eType) { const sal_uInt16 nIndex = eType.GetFlatIndex(); - if(!m_pFormArray[nIndex]) - m_pFormArray[nIndex] = new SwForm(eType.eType); - return m_pFormArray[nIndex]; + if(!m_vTypeData[nIndex].m_pForm) + m_vTypeData[nIndex].m_pForm.reset(new SwForm(eType.eType)); + return m_vTypeData[nIndex].m_pForm.get(); } SwTOXDescription& SwMultiTOXTabDialog::GetTOXDescription(CurTOXType eType) { const sal_uInt16 nIndex = eType.GetFlatIndex(); - if(!m_pDescriptionArray[nIndex]) + if(!m_vTypeData[nIndex].m_pDescription) { const SwTOXBase* pDef = m_rWrtShell.GetDefaultTOXBase( eType.eType ); if(pDef) - m_pDescriptionArray[nIndex] = CreateTOXDescFromTOXBase(pDef); + m_vTypeData[nIndex].m_pDescription = CreateTOXDescFromTOXBase(pDef); else { - m_pDescriptionArray[nIndex] = new SwTOXDescription(eType.eType); + m_vTypeData[nIndex].m_pDescription.reset(new SwTOXDescription(eType.eType)); if(eType.eType == TOX_USER) - m_pDescriptionArray[nIndex]->SetTitle(m_sUserDefinedIndex); + m_vTypeData[nIndex].m_pDescription->SetTitle(m_sUserDefinedIndex); else - m_pDescriptionArray[nIndex]->SetTitle( + m_vTypeData[nIndex].m_pDescription->SetTitle( m_rWrtShell.GetTOXType(eType.eType, 0)->GetTypeName()); } if(TOX_AUTHORITIES == eType.eType) @@ -425,26 +411,26 @@ SwTOXDescription& SwMultiTOXTabDialog::GetTOXDescription(CurTOXType eType) m_rWrtShell.GetFieldType(SwFieldIds::TableOfAuthorities, aEmptyOUStr)); if(pFType) { - m_pDescriptionArray[nIndex]->SetAuthBrackets(OUStringLiteral1(pFType->GetPrefix()) + + m_vTypeData[nIndex].m_pDescription->SetAuthBrackets(OUStringLiteral1(pFType->GetPrefix()) + OUStringLiteral1(pFType->GetSuffix())); - m_pDescriptionArray[nIndex]->SetAuthSequence(pFType->IsSequence()); + m_vTypeData[nIndex].m_pDescription->SetAuthSequence(pFType->IsSequence()); } else { - m_pDescriptionArray[nIndex]->SetAuthBrackets("[]"); + m_vTypeData[nIndex].m_pDescription->SetAuthBrackets("[]"); } } else if(TOX_INDEX == eType.eType) - m_pDescriptionArray[nIndex]->SetMainEntryCharStyle(SwResId(STR_POOLCHR_IDX_MAIN_ENTRY)); + m_vTypeData[nIndex].m_pDescription->SetMainEntryCharStyle(SwResId(STR_POOLCHR_IDX_MAIN_ENTRY)); } - return *m_pDescriptionArray[nIndex]; + return *m_vTypeData[nIndex].m_pDescription; } -SwTOXDescription* SwMultiTOXTabDialog::CreateTOXDescFromTOXBase( +std::unique_ptr<SwTOXDescription> SwMultiTOXTabDialog::CreateTOXDescFromTOXBase( const SwTOXBase*pCurTOX) { - SwTOXDescription * pDesc = new SwTOXDescription(pCurTOX->GetType()); + std::unique_ptr<SwTOXDescription> pDesc(new SwTOXDescription(pCurTOX->GetType())); for(sal_uInt16 i = 0; i < MAXLEVEL; i++) pDesc->SetStyleNames(pCurTOX->GetStyleNames(i), i); pDesc->SetAutoMarkURL(m_rWrtShell.GetTOIAutoMarkURL()); @@ -494,8 +480,8 @@ IMPL_LINK_NOARG( SwMultiTOXTabDialog, ShowPreviewHdl, Button*, void ) else { Link<SwOneExampleFrame&,void> aLink(LINK(this, SwMultiTOXTabDialog, CreateExample_Hdl)); - m_pExampleFrame = new SwOneExampleFrame( - *m_pExampleContainerWIN, EX_SHOW_ONLINE_LAYOUT, &aLink, &sTemplate); + m_pExampleFrame.reset(new SwOneExampleFrame( + *m_pExampleContainerWIN, EX_SHOW_ONLINE_LAYOUT, &aLink, &sTemplate)); if(!m_pExampleFrame->IsServiceAvailable()) { diff --git a/sw/source/uibase/inc/swuicnttab.hxx b/sw/source/uibase/inc/swuicnttab.hxx index 892d88256a14..0941e1bab00c 100644 --- a/sw/source/uibase/inc/swuicnttab.hxx +++ b/sw/source/uibase/inc/swuicnttab.hxx @@ -65,7 +65,7 @@ class SwMultiTOXTabDialog : public SfxTabDialog { VclPtr<vcl::Window> m_pExampleContainerWIN; VclPtr<CheckBox> m_pShowExampleCB; - SwTOXMgr* m_pMgr; + std::unique_ptr<SwTOXMgr> m_pMgr; SwWrtShell& m_rWrtShell; sal_uInt16 m_nSelectId; @@ -73,18 +73,21 @@ class SwMultiTOXTabDialog : public SfxTabDialog sal_uInt16 m_nBackGroundId; sal_uInt16 m_nEntriesId; - SwOneExampleFrame* m_pExampleFrame; + std::unique_ptr<SwOneExampleFrame> m_pExampleFrame; - SwTOXDescription** m_pDescriptionArray; - SwForm** m_pFormArray; - SwIndexSections_Impl** m_pxIndexSectionsArray; + struct TypeData + { + std::unique_ptr<SwForm> m_pForm; + std::unique_ptr<SwTOXDescription> m_pDescription; + std::unique_ptr<SwIndexSections_Impl> m_pxIndexSections; + }; + std::vector<TypeData> m_vTypeData; SwTOXBase* m_pParamTOXBase; CurTOXType m_eCurrentTOXType; OUString m_sUserDefinedIndex; - sal_uInt16 m_nTypeCount; sal_uInt16 m_nInitialTOXType; bool m_bEditTOX; @@ -92,7 +95,7 @@ class SwMultiTOXTabDialog : public SfxTabDialog bool m_bGlobalFlag; virtual short Ok() override; - SwTOXDescription* CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX); + std::unique_ptr<SwTOXDescription> CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX); DECL_LINK(CreateExample_Hdl, SwOneExampleFrame&, void); DECL_LINK(ShowPreviewHdl, Button*, void); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits