loplugin:useuniqueptr in SvxEntries

Change-Id: I4e105326ddba11822beb9affe97196c77a5baf4b
Reviewed-on: https://gerrit.libreoffice.org/51203
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx
index 75fbaa16..202ffae 100644
--- a/cui/source/customize/SvxMenuConfigPage.cxx
+++ b/cui/source/customize/SvxMenuConfigPage.cxx
@@ -320,7 +320,7 @@ IMPL_LINK( SvxMenuConfigPage, GearHdl, MenuButton *, pButton, void )

        if ( pDialog->Execute() == RET_OK )
        {
            GetSaveInData()->SetEntries( pDialog->GetEntries() );
            GetSaveInData()->SetEntries( pDialog->ReleaseEntries() );
            ReloadTopLevelListBox( pDialog->GetSelectedEntry() );
            GetSaveInData()->SetModified();
        }
diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index e90bfa3..5762979 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -440,13 +440,9 @@ MenuSaveInData::GetEntries()
}

void
MenuSaveInData::SetEntries( SvxEntries* pNewEntries )
MenuSaveInData::SetEntries( std::unique_ptr<SvxEntries> pNewEntries )
{
    // delete old menu hierarchy first
    delete pRootEntry->GetEntries();

    // now set new menu hierarchy
    pRootEntry->SetEntries( pNewEntries );
    pRootEntry->SetEntries( std::move(pNewEntries) );
}

bool SaveInData::LoadSubMenus( const uno::Reference< container::XIndexAccess >& xMenuSettings,
@@ -849,10 +845,9 @@ SvxEntries* ContextMenuSaveInData::GetEntries()
    return m_pRootEntry->GetEntries();
}

void ContextMenuSaveInData::SetEntries( SvxEntries* pNewEntries )
void ContextMenuSaveInData::SetEntries( std::unique_ptr<SvxEntries> pNewEntries )
{
    delete m_pRootEntry->GetEntries();
    m_pRootEntry->SetEntries( pNewEntries );
    m_pRootEntry->SetEntries( std::move(pNewEntries) );
}

bool ContextMenuSaveInData::HasURL( const OUString& rURL )
@@ -1900,7 +1895,7 @@ SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog(
    // Copy the entries list passed in
    if ( entries != nullptr )
    {
        mpEntries = new SvxEntries;
        mpEntries.reset( new SvxEntries );
        for (auto const& entry : *entries)
        {
            SvTreeListEntry* pLBEntry =
@@ -1921,7 +1916,7 @@ SvxMainMenuOrganizerDialog::SvxMainMenuOrganizerDialog(
        OUString prefix = CuiResId( RID_SVXSTR_NEW_MENU );

        OUString newname = SvxConfigPageHelper::generateCustomName( prefix, entries );
        OUString newurl = SvxConfigPageHelper::generateCustomMenuURL( mpEntries );
        OUString newurl = SvxConfigPageHelper::generateCustomMenuURL( mpEntries.get() );

        SvxConfigEntry* pNewEntryData =
            new SvxConfigEntry( newname, newurl, true, /*bParentData*/false );
@@ -2036,9 +2031,9 @@ IMPL_LINK( SvxMainMenuOrganizerDialog, MoveHdl, Button *, pButton, void )
        SvxConfigEntry* pTargetData =
            static_cast<SvxConfigEntry*>(pTargetEntry->GetUserData());

        SvxEntries::iterator iter1 = GetEntries()->begin();
        SvxEntries::iterator iter2 = GetEntries()->begin();
        SvxEntries::const_iterator end = GetEntries()->end();
        SvxEntries::iterator iter1 = mpEntries->begin();
        SvxEntries::iterator iter2 = mpEntries->begin();
        SvxEntries::const_iterator end = mpEntries->end();

        // Advance the iterators to the positions of the source and target
        while (*iter1 != pSourceData && ++iter1 != end) ;
@@ -2084,19 +2079,15 @@ SvxConfigEntry::SvxConfigEntry( const OUString& rDisplayName,
{
    if (bPopUp)
    {
        mpEntries = new SvxEntries;
        mpEntries.reset( new SvxEntries );
    }
}

SvxConfigEntry::~SvxConfigEntry()
{
    if ( mpEntries != nullptr )
    for (auto const& entry : *mpEntries)
    {
        for (auto const& entry : *mpEntries)
        {
            delete entry;
        }
        delete mpEntries;
        delete entry;
    }
}

@@ -2406,13 +2397,9 @@ SvxEntries* ToolbarSaveInData::GetEntries()
}

void
ToolbarSaveInData::SetEntries( SvxEntries* pNewEntries )
ToolbarSaveInData::SetEntries( std::unique_ptr<SvxEntries> pNewEntries )
{
    // delete old menu hierarchy first
    delete pRootEntry->GetEntries();

    // now set new menu hierarchy
    pRootEntry->SetEntries( pNewEntries );
    pRootEntry->SetEntries( std::move(pNewEntries) );
}

bool
diff --git a/cui/source/inc/cfg.hxx b/cui/source/inc/cfg.hxx
index 6f79414..00e2dcc 100644
--- a/cui/source/inc/cfg.hxx
+++ b/cui/source/inc/cfg.hxx
@@ -175,7 +175,7 @@ public:
    virtual bool HasURL( const OUString& aURL ) = 0;
    virtual bool HasSettings() = 0;
    virtual SvxEntries* GetEntries() = 0;
    virtual void SetEntries( SvxEntries* ) = 0;
    virtual void SetEntries( std::unique_ptr<SvxEntries> ) = 0;
    virtual void Reset() = 0;
    virtual bool Apply() = 0;
};
@@ -214,7 +214,7 @@ public:

    /// methods inherited from SaveInData
    SvxEntries*         GetEntries() override;
    void                SetEntries( SvxEntries* ) override;
    void                SetEntries( std::unique_ptr<SvxEntries> ) override;
    bool                HasURL( const OUString& ) override { return false; }
    bool                HasSettings() override { return m_xMenuSettings.is(); }
    void                Reset() override;
@@ -236,7 +236,7 @@ public:
    virtual ~ContextMenuSaveInData() override;

    SvxEntries* GetEntries() override;
    void SetEntries( SvxEntries* pNewEntries ) override;
    void SetEntries( std::unique_ptr<SvxEntries> pNewEntries ) override;
    bool HasSettings() override;
    bool HasURL( const OUString& rURL ) override;
    void Reset() override;
@@ -268,7 +268,7 @@ private:
    css::uno::Reference<
        css::graphic::XGraphic > xBackupGraphic;

    SvxEntries                  *mpEntries;
    std::unique_ptr<SvxEntries>  mpEntries;

public:

@@ -307,8 +307,8 @@ public:
    bool    IsBinding() const { return !bPopUp; }
    bool    IsSeparator() const { return nId == 0; }

    SvxEntries* GetEntries() const { return mpEntries; }
    void    SetEntries( SvxEntries* entries ) { mpEntries = entries; }
    SvxEntries* GetEntries() const { return mpEntries.get(); }
    void    SetEntries( std::unique_ptr<SvxEntries> entries ) { mpEntries = std::move(entries); }

    void    SetMain() { bIsMain = true; }
    bool    IsMain() { return bIsMain; }
@@ -501,7 +501,7 @@ class SvxMainMenuOrganizerDialog : public ModalDialog
    VclPtr<PushButton>     m_pMoveUpButton;
    VclPtr<PushButton>     m_pMoveDownButton;

    SvxEntries*     mpEntries;
    std::unique_ptr<SvxEntries> mpEntries;
    SvTreeListEntry*    pNewMenuEntry;
    bool            bModified;

@@ -518,7 +518,7 @@ public:
    virtual ~SvxMainMenuOrganizerDialog() override;
    virtual void dispose() override;

    SvxEntries*     GetEntries() { return mpEntries;}
    std::unique_ptr<SvxEntries> ReleaseEntries() { return std::move(mpEntries);}
    SvxConfigEntry* GetSelectedEntry();
};

@@ -561,7 +561,7 @@ public:
    sal_Int32       GetSystemStyle( const OUString& rResourceURL );

    SvxEntries*     GetEntries() override;
    void            SetEntries( SvxEntries* ) override;
    void            SetEntries( std::unique_ptr<SvxEntries> ) override;
    bool            HasSettings() override;
    bool            HasURL( const OUString& rURL ) override;
    void            Reset() override;