tdf#160706 speed up loading conditional formatting rule in XLS (II)

Reduce the work we do in IndexedStyleSheets::Reindex

takes my test document from 117s to 48s

Change-Id: I2e23b05684d0f2e3a9dc05c0a0fc4e9bbea7008d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166180
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 5060893f0b69c094beae73ab1a0926e3feb249b2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167078
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/include/svl/IndexedStyleSheets.hxx b/include/svl/IndexedStyleSheets.hxx
index 910acd9..c58a4b7 100644
--- a/include/svl/IndexedStyleSheets.hxx
+++ b/include/svl/IndexedStyleSheets.hxx
@@ -144,6 +144,7 @@ public:
    void Clear(StyleSheetDisposer& cleanup);

    void Reindex();
    void ReindexOnNameChange(const OUString& rOldName, const OUString& rNewName);

    /** Warning: counting for n starts at 0, i.e., the 0th style sheet is the first that is found. */
    SfxStyleSheetBase* GetNthStyleSheetThatMatchesPredicate(sal_Int32 n,
diff --git a/include/svl/style.hxx b/include/svl/style.hxx
index fc12dc0..87c5563 100644
--- a/include/svl/style.hxx
+++ b/include/svl/style.hxx
@@ -275,6 +275,7 @@ public:
    virtual SfxStyleSheetBase*  Find( const OUString&, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All );

    void                        Reindex();
    void                        ReindexOnNameChange(const OUString& rOldName, const OUString& rNewName);
    /** Add a style sheet.
     * Not an actual public function. Do not call it from non-subclasses.
     */
diff --git a/svl/source/items/IndexedStyleSheets.cxx b/svl/source/items/IndexedStyleSheets.cxx
index 57e2ddd..3761f0e 100644
--- a/svl/source/items/IndexedStyleSheets.cxx
+++ b/svl/source/items/IndexedStyleSheets.cxx
@@ -83,6 +83,18 @@ sal_Int32 IndexedStyleSheets::GetNumberOfStyleSheets() const
}

void
IndexedStyleSheets::ReindexOnNameChange(const OUString& rOldName, const OUString& rNewName)
{
    auto it = mPositionsByName.find(rOldName);
    if (it != mPositionsByName.end())
    {
        unsigned nPos = it->second;
        mPositionsByName.erase(it);
        mPositionsByName.insert(std::make_pair(rNewName, nPos));
    }
}

void
IndexedStyleSheets::AddStyleSheet(const rtl::Reference< SfxStyleSheetBase >& style)
{
    if (!HasStyleSheet(style)) {
diff --git a/svl/source/items/style.cxx b/svl/source/items/style.cxx
index 41551e5..bfdbac6 100644
--- a/svl/source/items/style.cxx
+++ b/svl/source/items/style.cxx
@@ -163,24 +163,24 @@ bool SfxStyleSheetBase::SetName(const OUString& rName, bool bReIndexNow)
    if(rName.isEmpty())
        return false;

    if( aName != rName )
    {
        OUString aOldName = aName;
        SfxStyleSheetBase *pOther = m_pPool->Find( rName, nFamily ) ;
        if ( pOther && pOther != this )
            return false;
    if( aName == rName )
        return true;

        if ( !aName.isEmpty() )
            m_pPool->ChangeParent(aName, rName, nFamily, false);
    OUString aOldName = aName;
    SfxStyleSheetBase *pOther = m_pPool->Find( rName, nFamily ) ;
    if ( pOther && pOther != this )
        return false;

        if ( aFollow == aName )
            aFollow = rName;
        aName = rName;
        if (bReIndexNow)
            m_pPool->Reindex();
    if ( !aName.isEmpty() )
        m_pPool->ChangeParent(aName, rName, nFamily, false);

        m_pPool->Broadcast( SfxStyleSheetModifiedHint( aOldName, *this ) );
    }
    if ( aFollow == aName )
        aFollow = rName;
    aName = rName;
    if (bReIndexNow)
        m_pPool->ReindexOnNameChange(aOldName, rName);

    m_pPool->Broadcast( SfxStyleSheetModifiedHint( aOldName, *this ) );
    return true;
}

@@ -890,6 +890,12 @@ SfxStyleSheetBasePool::Reindex()
    pImpl->mxIndexedStyleSheets->Reindex();
}

void
SfxStyleSheetBasePool::ReindexOnNameChange(const OUString& rOldName, const OUString& rNewName)
{
    pImpl->mxIndexedStyleSheets->ReindexOnNameChange(rOldName, rNewName);
}

const svl::IndexedStyleSheets&
SfxStyleSheetBasePool::GetIndexedStyleSheets() const
{