loplugin:useuniqueptr in ThumbnailView

Change-Id: I95817a03afedbee4ffb28041a9834e591356102d
Reviewed-on: https://gerrit.libreoffice.org/60953
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/include/sfx2/thumbnailview.hxx b/include/sfx2/thumbnailview.hxx
index c628d38..2ea319b 100644
--- a/include/sfx2/thumbnailview.hxx
+++ b/include/sfx2/thumbnailview.hxx
@@ -185,7 +185,7 @@ public:

    virtual void MouseMove(const MouseEvent& rMEvt) override;

    void AppendItem(ThumbnailViewItem *pItem);
    void AppendItem(std::unique_ptr<ThumbnailViewItem> pItem);

    void RemoveItem(sal_uInt16 nItemId);

@@ -195,7 +195,7 @@ public:
    virtual void Reload() {}

    // Change current thumbnail item list with new one (invalidates all pointers to a thumbnail item)
    void updateItems(const std::vector<ThumbnailViewItem *> &items);
    void updateItems(std::vector<std::unique_ptr<ThumbnailViewItem>> items);

    size_t GetItemPos( sal_uInt16 nItemId ) const;

@@ -288,7 +288,7 @@ protected:

protected:

    ThumbnailValueItemList mItemList;
    std::vector< std::unique_ptr<ThumbnailViewItem> > mItemList;
    ThumbnailValueItemList mFilteredItemList; ///< Cache to store the filtered items
    ThumbnailValueItemList::iterator mpStartSelRange;
    VclPtr<ScrollBar> mpScrBar;
diff --git a/sfx2/source/control/emojiview.cxx b/sfx2/source/control/emojiview.cxx
index 2175d42..f0003cc 100644
--- a/sfx2/source/control/emojiview.cxx
+++ b/sfx2/source/control/emojiview.cxx
@@ -209,13 +209,13 @@ void EmojiView::setInsertEmojiHdl(const Link<ThumbnailViewItem*, void> &rLink)

void EmojiView::AppendItem(const OUString &rTitle, const OUString &rCategory, const OUString &rName)
{
    EmojiViewItem *pItem = new EmojiViewItem(*this, getNextItemId());
    std::unique_ptr<EmojiViewItem> pItem(new EmojiViewItem(*this, getNextItemId()));

    pItem->maTitle = rTitle;
    pItem->setCategory(rCategory);
    pItem->setHelpText(rName);

    ThumbnailView::AppendItem(pItem);
    ThumbnailView::AppendItem(std::move(pItem));

    CalculateItemPositions();
}
diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx
index d8d2a83..2c4ad0b 100644
--- a/sfx2/source/control/recentdocsview.cxx
+++ b/sfx2/source/control/recentdocsview.cxx
@@ -38,6 +38,7 @@
#include <bitmaps.hlst>

#include <officecfg/Office/Common.hxx>
#include <o3tl/make_unique.hxx>

using namespace ::com::sun::star;
using namespace com::sun::star::uno;
@@ -216,9 +217,7 @@ BitmapEx RecentDocsView::getDefaultThumbnail(const OUString &rURL)

void RecentDocsView::insertItem(const OUString &rURL, const OUString &rTitle, const BitmapEx &rThumbnail, sal_uInt16 nId)
{
    RecentDocsViewItem *pChild = new RecentDocsViewItem(*this, rURL, rTitle, rThumbnail, nId, mnItemMaxSize);

    AppendItem(pChild);
    AppendItem( o3tl::make_unique<RecentDocsViewItem>(*this, rURL, rTitle, rThumbnail, nId, mnItemMaxSize) );
}

void RecentDocsView::Reload()
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index efc66dd..3218fc9 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -548,8 +548,9 @@ bool TemplateLocalView::moveTemplate (const ThumbnailViewItem *pItem, const sal_
            // Keep view document id synchronized with SfxDocumentTemplates
            for (auto const& item : mItemList)
            {
                if (static_cast<TemplateViewItem*>(item)->mnDocId > pViewItem->mnDocId)
                    --static_cast<TemplateViewItem*>(item)->mnDocId;
                auto pTemplateViewItem = static_cast<TemplateViewItem*>(item.get());
                if (pTemplateViewItem->mnDocId > pViewItem->mnDocId)
                    --pTemplateViewItem->mnDocId;
            }
        }

@@ -658,8 +659,9 @@ void TemplateLocalView::moveTemplates(const std::set<const ThumbnailViewItem*, s
                    // Keep view document id synchronized with SfxDocumentTemplates
                    for (auto const& item : mItemList)
                    {
                        if (static_cast<TemplateViewItem*>(item)->mnDocId > pViewItem->mnDocId)
                            --static_cast<TemplateViewItem*>(item)->mnDocId;
                        auto pTemplateViewItem = static_cast<TemplateViewItem*>(item.get());
                        if (pTemplateViewItem->mnDocId > pViewItem->mnDocId)
                            --pTemplateViewItem->mnDocId;
                    }
                }
            }
@@ -753,16 +755,16 @@ bool TemplateLocalView::renameItem(ThumbnailViewItem* pItem, const OUString& sNe

void TemplateLocalView::insertItems(const std::vector<TemplateItemProperties> &rTemplates, bool isRegionSelected, bool bShowCategoryInTooltip)
{
    std::vector<ThumbnailViewItem*> aItems(rTemplates.size());
    std::vector<std::unique_ptr<ThumbnailViewItem>> aItems(rTemplates.size());
    for (size_t i = 0, n = rTemplates.size(); i < n; ++i )
    {
        const TemplateItemProperties *pCur = &rTemplates[i];

        TemplateViewItem *pChild;
        std::unique_ptr<TemplateViewItem> pChild;
        if(isRegionSelected)
            pChild = new TemplateViewItem(*this, pCur->nId);
            pChild.reset(new TemplateViewItem(*this, pCur->nId));
        else
            pChild = new TemplateViewItem(*this, i+1);
            pChild.reset(new TemplateViewItem(*this, i+1));

        pChild->mnDocId = pCur->nDocId;
        pChild->mnRegionId = pCur->nRegionId;
@@ -789,10 +791,10 @@ void TemplateLocalView::insertItems(const std::vector<TemplateItemProperties> &r
            pChild->maPreview1 = TemplateLocalView::getDefaultThumbnail(pCur->aPath);
        }

        aItems[i] = pChild;
        aItems[i] = std::move(pChild);
    }

    updateItems(aItems);
    updateItems(std::move(aItems));
}

void TemplateLocalView::updateThumbnailDimensions(long itemMaxSize)
@@ -976,9 +978,9 @@ bool TemplateLocalView::IsDefaultTemplate(const OUString& rPath)

void TemplateLocalView::RemoveDefaultTemplateIcon(const OUString& rPath)
{
    for (ThumbnailViewItem* pItem : mItemList)
    for (std::unique_ptr<ThumbnailViewItem>& pItem : mItemList)
    {
        TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
        TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem.get());
        if (pViewItem && pViewItem->getPath().match(rPath))
        {
            pViewItem->showDefaultIcon(false);
diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx
index ace6b4f..3f891ae 100644
--- a/sfx2/source/control/templatesearchview.cxx
+++ b/sfx2/source/control/templatesearchview.cxx
@@ -216,7 +216,7 @@ void TemplateSearchView::AppendItem(sal_uInt16 nAssocItemId, sal_uInt16 nRegionI
                                    const OUString &rPath,
                                    const BitmapEx &rImage)
{
    TemplateSearchViewItem *pItem = new TemplateSearchViewItem(*this, getNextItemId());
    std::unique_ptr<TemplateSearchViewItem> pItem(new TemplateSearchViewItem(*this, getNextItemId()));
    pItem->mnAssocId = nAssocItemId;
    pItem->mnDocId = nIdx;
    pItem->mnRegionId = nRegionId;
@@ -233,7 +233,7 @@ void TemplateSearchView::AppendItem(sal_uInt16 nAssocItemId, sal_uInt16 nRegionI
    if(TemplateLocalView::IsDefaultTemplate(rPath))
        pItem->showDefaultIcon(true);

    ThumbnailView::AppendItem(pItem);
    ThumbnailView::AppendItem(std::move(pItem));

    CalculateItemPositions();
}
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 81a5021..13435a9 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -101,9 +101,9 @@ void ThumbnailView::MouseMove(const MouseEvent& rMEvt)
        SetQuickHelpText(aHelp);
}

void ThumbnailView::AppendItem(ThumbnailViewItem *pItem)
void ThumbnailView::AppendItem(std::unique_ptr<ThumbnailViewItem> pItem)
{
    if (maFilterFunc(pItem))
    if (maFilterFunc(pItem.get()))
    {
        // Save current start,end range, iterator might get invalidated
        size_t nSelStartPos = 0;
@@ -115,11 +115,11 @@ void ThumbnailView::AppendItem(ThumbnailViewItem *pItem)
            nSelStartPos = mpStartSelRange - mFilteredItemList.begin();
        }

        mFilteredItemList.push_back(pItem);
        mFilteredItemList.push_back(pItem.get());
        mpStartSelRange = pSelStartItem != nullptr ? mFilteredItemList.begin() + nSelStartPos : mFilteredItemList.end();
    }

    mItemList.push_back(pItem);
    mItemList.push_back(std::move(pItem));
}

void ThumbnailView::ImplInit()
@@ -159,7 +159,7 @@ void ThumbnailView::ImplDeleteItems()

    for ( size_t i = 0; i < n; ++i )
    {
        ThumbnailViewItem *const pItem = mItemList[i];
        ThumbnailViewItem *const pItem = mItemList[i].get();

        // deselect all current selected items and fire events
        if (pItem->isSelected())
@@ -178,7 +178,7 @@ void ThumbnailView::ImplDeleteItems()
            ImplFireAccessibleEvent( css::accessibility::AccessibleEventId::CHILD, aOldAny, aNewAny );
        }

        delete pItem;
        mItemList[i].reset();
    }

    mItemList.clear();
@@ -456,7 +456,7 @@ ThumbnailViewItem* ThumbnailView::ImplGetVisibleItem( sal_uInt16 nVisiblePos )

    for ( size_t n = 0; n < nItemCount; ++n )
    {
        ThumbnailViewItem *const pItem = mItemList[n];
        ThumbnailViewItem *const pItem = mItemList[n].get();

        if ( pItem->isVisible() && !nVisiblePos-- )
            return pItem;
@@ -848,7 +848,7 @@ void ThumbnailView::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rec
    // draw items
    for (size_t i = 0; i < nItemCount; i++)
    {
        ThumbnailViewItem *const pItem = mItemList[i];
        ThumbnailViewItem *const pItem = mItemList[i].get();

        if (pItem->isVisible())
        {
@@ -1005,14 +1005,14 @@ void ThumbnailView::Clear()
        Invalidate();
}

void ThumbnailView::updateItems (const std::vector<ThumbnailViewItem*> &items)
void ThumbnailView::updateItems (std::vector<std::unique_ptr<ThumbnailViewItem>> items)
{
    ImplDeleteItems();

    // reset variables
    mnFirstLine     = 0;

    mItemList = items;
    mItemList = std::move(items);

    filterItems(maFilterFunc);
}
@@ -1137,13 +1137,13 @@ bool ThumbnailView::IsItemSelected( sal_uInt16 nItemId ) const

void ThumbnailView::deselectItems()
{
    for (ThumbnailViewItem* p : mItemList)
    for (std::unique_ptr<ThumbnailViewItem>& p : mItemList)
    {
        if (p->isSelected())
        {
            p->setSelection(false);

            maItemStateHdl.Call(p);
            maItemStateHdl.Call(p.get());
        }
    }

@@ -1174,7 +1174,7 @@ void ThumbnailView::filterItems(const std::function<bool (const ThumbnailViewIte

    for (size_t i = 0, n = mItemList.size(); i < n; ++i)
    {
        ThumbnailViewItem *const pItem = mItemList[i];
        ThumbnailViewItem *const pItem = mItemList[i].get();

        if (maFilterFunc(pItem))
        {