[Libreoffice-commits] core.git: basctl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sat Dec 29 17:16:13 UTC 2018


 basctl/source/basicide/moduldl2.cxx |  546 +++++++++++++++++-------------------
 1 file changed, 272 insertions(+), 274 deletions(-)

New commits:
commit c5ab681957283c6624a2380d994f556b0676757d
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Sat Dec 29 12:24:55 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sat Dec 29 18:15:53 2018 +0100

    flatten LibPage::InsertLib
    
    Change-Id: Ib71c160d3375cb94232894e6bdb1a37132aff3be
    Reviewed-on: https://gerrit.libreoffice.org/65706
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx
index 764c0507ae66..c7cf1527007b 100644
--- a/basctl/source/basicide/moduldl2.cxx
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -744,329 +744,327 @@ void LibPage::InsertLib()
     else
         xFP->setCurrentFilter( IDEResId(RID_STR_BASIC) );
 
-    if ( xFP->execute() == RET_OK )
+    if ( xFP->execute() != RET_OK )
+            return;
+
+    GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
+    GetExtraData()->SetAddLibFilter( xFP->getCurrentFilter() );
+
+    // library containers for import
+    Reference< script::XLibraryContainer2 > xModLibContImport;
+    Reference< script::XLibraryContainer2 > xDlgLibContImport;
+
+    // file URLs
+    Sequence< OUString > aFiles = xFP->getSelectedFiles();
+    INetURLObject aURLObj( aFiles[0] );
+    INetURLObject aModURLObj( aURLObj );
+    INetURLObject aDlgURLObj( aURLObj );
+
+    OUString aBase = aURLObj.getBase();
+    OUString aModBase( "script" );
+    OUString aDlgBase( "dialog" );
+
+    if ( aBase == aModBase || aBase == aDlgBase )
     {
-        GetExtraData()->SetAddLibPath( xFP->getDisplayDirectory() );
-        GetExtraData()->SetAddLibFilter( xFP->getCurrentFilter() );
+        aModURLObj.setBase( aModBase );
+        aDlgURLObj.setBase( aDlgBase );
+    }
 
-        // library containers for import
-        Reference< script::XLibraryContainer2 > xModLibContImport;
-        Reference< script::XLibraryContainer2 > xDlgLibContImport;
+    Reference< XSimpleFileAccess3 > xSFA( SimpleFileAccess::create(comphelper::getProcessComponentContext()) );
 
-        // file URLs
-        Sequence< OUString > aFiles = xFP->getSelectedFiles();
-        INetURLObject aURLObj( aFiles[0] );
-        INetURLObject aModURLObj( aURLObj );
-        INetURLObject aDlgURLObj( aURLObj );
+    OUString aModURL( aModURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
+    if ( xSFA->exists( aModURL ) )
+    {
+        xModLibContImport.set( script::DocumentScriptLibraryContainer::createWithURL(xContext, aModURL), UNO_QUERY );
+    }
 
-        OUString aBase = aURLObj.getBase();
-        OUString aModBase( "script" );
-        OUString aDlgBase( "dialog" );
+    OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
+    if ( xSFA->exists( aDlgURL ) )
+    {
+        xDlgLibContImport.set( script::DocumentDialogLibraryContainer::createWithURL(xContext, aDlgURL), UNO_QUERY );
+    }
 
-        if ( aBase == aModBase || aBase == aDlgBase )
-        {
-            aModURLObj.setBase( aModBase );
-            aDlgURLObj.setBase( aDlgBase );
-        }
+    if ( !xModLibContImport.is() && !xDlgLibContImport.is() )
+        return;
 
-        Reference< XSimpleFileAccess3 > xSFA( SimpleFileAccess::create(comphelper::getProcessComponentContext()) );
+    VclPtr<LibDialog> pLibDlg;
 
-        OUString aModURL( aModURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
-        if ( xSFA->exists( aModURL ) )
+    Reference< script::XLibraryContainer > xModLibContImp( xModLibContImport, UNO_QUERY );
+    Reference< script::XLibraryContainer > xDlgLibContImp( xDlgLibContImport, UNO_QUERY );
+    Sequence< OUString > aLibNames = GetMergedLibraryNames( xModLibContImp, xDlgLibContImp );
+    sal_Int32 nLibCount = aLibNames.getLength();
+    const OUString* pLibNames = aLibNames.getConstArray();
+    for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+    {
+        // library import dialog
+        if ( !pLibDlg )
         {
-            xModLibContImport.set( script::DocumentScriptLibraryContainer::createWithURL(xContext, aModURL), UNO_QUERY );
+            pLibDlg.reset(VclPtr<LibDialog>::Create( this ));
+            pLibDlg->SetStorageName( aURLObj.getName() );
+            pLibDlg->GetLibBox().SetMode(ObjectMode::Library);
         }
 
-        OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
-        if ( xSFA->exists( aDlgURL ) )
+        // libbox entries
+        OUString aLibName( pLibNames[ i ] );
+        if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) && xModLibContImport->isLibraryLink( aLibName ) ) ||
+                ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aLibName ) && xDlgLibContImport->isLibraryLink( aLibName ) ) ) )
         {
-            xDlgLibContImport.set( script::DocumentDialogLibraryContainer::createWithURL(xContext, aDlgURL), UNO_QUERY );
+            SvTreeListEntry* pEntry = pLibDlg->GetLibBox().DoInsertEntry( aLibName );
+            sal_uInt16 nPos = static_cast<sal_uInt16>(pLibDlg->GetLibBox().GetModel()->GetAbsPos( pEntry ));
+            pLibDlg->GetLibBox().CheckEntryPos(nPos);
         }
+    }
 
-        if ( xModLibContImport.is() || xDlgLibContImport.is() )
-        {
-            VclPtr<LibDialog> pLibDlg;
+    if ( !pLibDlg )
+    {
+        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
+                                                       VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_NOLIBINSTORAGE)));
+        xErrorBox->run();
+        return;
+    }
 
-            Reference< script::XLibraryContainer > xModLibContImp( xModLibContImport, UNO_QUERY );
-            Reference< script::XLibraryContainer > xDlgLibContImp( xDlgLibContImport, UNO_QUERY );
-            Sequence< OUString > aLibNames = GetMergedLibraryNames( xModLibContImp, xDlgLibContImp );
-            sal_Int32 nLibCount = aLibNames.getLength();
-            const OUString* pLibNames = aLibNames.getConstArray();
-            for ( sal_Int32 i = 0 ; i < nLibCount ; i++ )
+    OUString aExtension( aURLObj.getExtension() );
+    OUString aLibExtension( "xlb" );
+    OUString aContExtension( "xlc" );
+
+    // disable reference checkbox for documents and sbls
+    if ( aExtension != aLibExtension && aExtension != aContExtension )
+        pLibDlg->EnableReference(false);
+
+    if ( !pLibDlg->Execute() )
+        return;
+
+    bool bChanges = false;
+    sal_uLong nNewPos = m_pLibBox->GetEntryCount();
+    bool bRemove = false;
+    bool bReplace = pLibDlg->IsReplace();
+    bool bReference = pLibDlg->IsReference();
+    for ( sal_uLong nLib = 0; nLib < pLibDlg->GetLibBox().GetEntryCount(); nLib++ )
+    {
+        if ( pLibDlg->GetLibBox().IsChecked( nLib ) )
+        {
+            SvTreeListEntry* pEntry = pLibDlg->GetLibBox().GetEntry( nLib );
+            DBG_ASSERT( pEntry, "Entry?!" );
+            OUString aLibName( SvTabListBox::GetEntryText( pEntry, 0 ) );
+            Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+            Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+
+            // check, if the library is already existing
+            if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) ) ||
+                 ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) ) )
             {
-                // library import dialog
-                if ( !pLibDlg )
+                if ( bReplace )
                 {
-                    pLibDlg.reset(VclPtr<LibDialog>::Create( this ));
-                    pLibDlg->SetStorageName( aURLObj.getName() );
-                    pLibDlg->GetLibBox().SetMode(ObjectMode::Library);
-                }
+                    // check, if the library is the Standard library
+                    if ( aLibName == "Standard" )
+                    {
+                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
+                                                                       VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_REPLACESTDLIB)));
+                        xErrorBox->run();
+                        continue;
+                    }
 
-                // libbox entries
-                OUString aLibName( pLibNames[ i ] );
-                if ( !( ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) && xModLibContImport->isLibraryLink( aLibName ) ) ||
-                        ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aLibName ) && xDlgLibContImport->isLibraryLink( aLibName ) ) ) )
+                    // check, if the library is readonly and not a link
+                    if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) && xModLibContainer->isLibraryReadOnly( aLibName ) && !xModLibContainer->isLibraryLink( aLibName ) ) ||
+                         ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && xDlgLibContainer->isLibraryReadOnly( aLibName ) && !xDlgLibContainer->isLibraryLink( aLibName ) ) )
+                    {
+                        OUString aErrStr( IDEResId(RID_STR_REPLACELIB) );
+                        aErrStr = aErrStr.replaceAll("XX", aLibName) + "\n" + IDEResId(RID_STR_LIBISREADONLY);
+                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
+                                                                       VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
+                        xErrorBox->run();
+                        continue;
+                    }
+
+                    // remove existing libraries
+                    bRemove = true;
+                }
+                else
                 {
-                    SvTreeListEntry* pEntry = pLibDlg->GetLibBox().DoInsertEntry( aLibName );
-                    sal_uInt16 nPos = static_cast<sal_uInt16>(pLibDlg->GetLibBox().GetModel()->GetAbsPos( pEntry ));
-                    pLibDlg->GetLibBox().CheckEntryPos(nPos);
+                    OUString aErrStr;
+                    if ( bReference )
+                        aErrStr = IDEResId(RID_STR_REFNOTPOSSIBLE);
+                    else
+                        aErrStr = IDEResId(RID_STR_IMPORTNOTPOSSIBLE);
+                    aErrStr = aErrStr.replaceAll("XX", aLibName) + "\n" +IDEResId(RID_STR_SBXNAMEALLREADYUSED);
+                    std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
+                                                                   VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
+                    xErrorBox->run();
+                    continue;
                 }
             }
 
-            if ( !pLibDlg )
+            // check, if the library is password protected
+            bool bOK = false;
+            OUString aPassword;
+            if ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) )
             {
-                std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
-                                                               VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_NOLIBINSTORAGE)));
-                xErrorBox->run();
+                Reference< script::XLibraryContainerPassword > xPasswd( xModLibContImport, UNO_QUERY );
+                if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aLibName ) && !xPasswd->isLibraryPasswordVerified( aLibName ) && !bReference )
+                {
+                    bOK = QueryPassword( xModLibContImp, aLibName, aPassword, true, true );
+
+                    if ( !bOK )
+                    {
+                        OUString aErrStr( IDEResId(RID_STR_NOIMPORT) );
+                        aErrStr = aErrStr.replaceAll("XX", aLibName);
+                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
+                                                                       VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
+                        xErrorBox->run();
+                        continue;
+                    }
+                }
             }
-            else
-            {
-                bool bChanges = false;
-                OUString aExtension( aURLObj.getExtension() );
-                OUString aLibExtension( "xlb" );
-                OUString aContExtension( "xlc" );
 
-                // disable reference checkbox for documents and sbls
-                if ( aExtension != aLibExtension && aExtension != aContExtension )
-                    pLibDlg->EnableReference(false);
+            // remove existing libraries
+            if ( bRemove )
+            {
+                // remove listbox entry
+                SvTreeListEntry* pEntry_ = m_pLibBox->FindEntry( aLibName );
+                if ( pEntry_ )
+                    m_pLibBox->SvTreeListBox::GetModel()->Remove( pEntry_ );
+
+                // remove module library
+                if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) )
+                    xModLibContainer->removeLibrary( aLibName );
+
+                // remove dialog library
+                if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) )
+                    xDlgLibContainer->removeLibrary( aLibName );
+            }
 
-                if ( pLibDlg->Execute() )
+            // copy module library
+            if ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) && xModLibContainer.is() && !xModLibContainer->hasByName( aLibName ) )
+            {
+                Reference< container::XNameContainer > xModLib;
+                if ( bReference )
                 {
-                    sal_uLong nNewPos = m_pLibBox->GetEntryCount();
-                    bool bRemove = false;
-                    bool bReplace = pLibDlg->IsReplace();
-                    bool bReference = pLibDlg->IsReference();
-                    for ( sal_uLong nLib = 0; nLib < pLibDlg->GetLibBox().GetEntryCount(); nLib++ )
+                    // storage URL
+                    INetURLObject aModStorageURLObj( aModURLObj );
+                    if ( aExtension == aContExtension )
                     {
-                        if ( pLibDlg->GetLibBox().IsChecked( nLib ) )
-                        {
-                            SvTreeListEntry* pEntry = pLibDlg->GetLibBox().GetEntry( nLib );
-                            DBG_ASSERT( pEntry, "Entry?!" );
-                            OUString aLibName( SvTabListBox::GetEntryText( pEntry, 0 ) );
-                            Reference< script::XLibraryContainer2 > xModLibContainer( m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-                            Reference< script::XLibraryContainer2 > xDlgLibContainer( m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
-
-                            // check, if the library is already existing
-                            if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) ) ||
-                                 ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) ) )
-                            {
-                                if ( bReplace )
-                                {
-                                    // check, if the library is the Standard library
-                                    if ( aLibName == "Standard" )
-                                    {
-                                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
-                                                                                       VclMessageType::Warning, VclButtonsType::Ok, IDEResId(RID_STR_REPLACESTDLIB)));
-                                        xErrorBox->run();
-                                        continue;
-                                    }
-
-                                    // check, if the library is readonly and not a link
-                                    if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) && xModLibContainer->isLibraryReadOnly( aLibName ) && !xModLibContainer->isLibraryLink( aLibName ) ) ||
-                                         ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && xDlgLibContainer->isLibraryReadOnly( aLibName ) && !xDlgLibContainer->isLibraryLink( aLibName ) ) )
-                                    {
-                                        OUString aErrStr( IDEResId(RID_STR_REPLACELIB) );
-                                        aErrStr = aErrStr.replaceAll("XX", aLibName) + "\n" + IDEResId(RID_STR_LIBISREADONLY);
-                                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
-                                                                                       VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
-                                        xErrorBox->run();
-                                        continue;
-                                    }
-
-                                    // remove existing libraries
-                                    bRemove = true;
-                                }
-                                else
-                                {
-                                    OUString aErrStr;
-                                    if ( bReference )
-                                        aErrStr = IDEResId(RID_STR_REFNOTPOSSIBLE);
-                                    else
-                                        aErrStr = IDEResId(RID_STR_IMPORTNOTPOSSIBLE);
-                                    aErrStr = aErrStr.replaceAll("XX", aLibName) + "\n" +IDEResId(RID_STR_SBXNAMEALLREADYUSED);
-                                    std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
-                                                                                   VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
-                                    xErrorBox->run();
-                                    continue;
-                                }
-                            }
-
-                            // check, if the library is password protected
-                            bool bOK = false;
-                            OUString aPassword;
-                            if ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) )
-                            {
-                                Reference< script::XLibraryContainerPassword > xPasswd( xModLibContImport, UNO_QUERY );
-                                if ( xPasswd.is() && xPasswd->isLibraryPasswordProtected( aLibName ) && !xPasswd->isLibraryPasswordVerified( aLibName ) && !bReference )
-                                {
-                                    bOK = QueryPassword( xModLibContImp, aLibName, aPassword, true, true );
+                        sal_Int32 nCount = aModStorageURLObj.getSegmentCount();
+                        aModStorageURLObj.insertName( aLibName, false, nCount-1 );
+                        aModStorageURLObj.setExtension( aLibExtension );
+                        aModStorageURLObj.setFinalSlash();
+                    }
+                    OUString aModStorageURL( aModStorageURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
 
-                                    if ( !bOK )
-                                    {
-                                        OUString aErrStr( IDEResId(RID_STR_NOIMPORT) );
-                                        aErrStr = aErrStr.replaceAll("XX", aLibName);
-                                        std::unique_ptr<weld::MessageDialog> xErrorBox(Application::CreateMessageDialog(GetFrameWeld(),
-                                                                                       VclMessageType::Warning, VclButtonsType::Ok, aErrStr));
-                                        xErrorBox->run();
-                                        continue;
-                                    }
-                                }
-                            }
+                    // create library link
+                    xModLib.set( xModLibContainer->createLibraryLink( aLibName, aModStorageURL, true ), UNO_QUERY);
+                }
+                else
+                {
+                    // create library
+                    xModLib = xModLibContainer->createLibrary( aLibName );
+                    if ( xModLib.is() )
+                    {
+                        // get import library
+                        Reference< container::XNameContainer > xModLibImport;
+                        Any aElement = xModLibContImport->getByName( aLibName );
+                        aElement >>= xModLibImport;
 
-                            // remove existing libraries
-                            if ( bRemove )
+                        if ( xModLibImport.is() )
+                        {
+                            // load library
+                            if ( !xModLibContImport->isLibraryLoaded( aLibName ) )
+                                xModLibContImport->loadLibrary( aLibName );
+
+                            // copy all modules
+                            Sequence< OUString > aModNames = xModLibImport->getElementNames();
+                            sal_Int32 nModCount = aModNames.getLength();
+                            const OUString* pModNames = aModNames.getConstArray();
+                            for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
                             {
-                                // remove listbox entry
-                                SvTreeListEntry* pEntry_ = m_pLibBox->FindEntry( aLibName );
-                                if ( pEntry_ )
-                                    m_pLibBox->SvTreeListBox::GetModel()->Remove( pEntry_ );
-
-                                // remove module library
-                                if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) )
-                                    xModLibContainer->removeLibrary( aLibName );
-
-                                // remove dialog library
-                                if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) )
-                                    xDlgLibContainer->removeLibrary( aLibName );
+                                OUString aModName( pModNames[ i ] );
+                                Any aElement_ = xModLibImport->getByName( aModName );
+                                xModLib->insertByName( aModName, aElement_ );
                             }
 
-                            // copy module library
-                            if ( xModLibContImport.is() && xModLibContImport->hasByName( aLibName ) && xModLibContainer.is() && !xModLibContainer->hasByName( aLibName ) )
+                            // set password
+                            if ( bOK )
                             {
-                                Reference< container::XNameContainer > xModLib;
-                                if ( bReference )
+                                Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
+                                if ( xPasswd.is() )
                                 {
-                                    // storage URL
-                                    INetURLObject aModStorageURLObj( aModURLObj );
-                                    if ( aExtension == aContExtension )
+                                    try
                                     {
-                                        sal_Int32 nCount = aModStorageURLObj.getSegmentCount();
-                                        aModStorageURLObj.insertName( aLibName, false, nCount-1 );
-                                        aModStorageURLObj.setExtension( aLibExtension );
-                                        aModStorageURLObj.setFinalSlash();
+                                        xPasswd->changeLibraryPassword( aLibName, OUString(), aPassword );
                                     }
-                                    OUString aModStorageURL( aModStorageURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
-
-                                    // create library link
-                                    xModLib.set( xModLibContainer->createLibraryLink( aLibName, aModStorageURL, true ), UNO_QUERY);
-                                }
-                                else
-                                {
-                                    // create library
-                                    xModLib = xModLibContainer->createLibrary( aLibName );
-                                    if ( xModLib.is() )
+                                    catch (...)
                                     {
-                                        // get import library
-                                        Reference< container::XNameContainer > xModLibImport;
-                                        Any aElement = xModLibContImport->getByName( aLibName );
-                                        aElement >>= xModLibImport;
-
-                                        if ( xModLibImport.is() )
-                                        {
-                                            // load library
-                                            if ( !xModLibContImport->isLibraryLoaded( aLibName ) )
-                                                xModLibContImport->loadLibrary( aLibName );
-
-                                            // copy all modules
-                                            Sequence< OUString > aModNames = xModLibImport->getElementNames();
-                                            sal_Int32 nModCount = aModNames.getLength();
-                                            const OUString* pModNames = aModNames.getConstArray();
-                                            for ( sal_Int32 i = 0 ; i < nModCount ; i++ )
-                                            {
-                                                OUString aModName( pModNames[ i ] );
-                                                Any aElement_ = xModLibImport->getByName( aModName );
-                                                xModLib->insertByName( aModName, aElement_ );
-                                            }
-
-                                            // set password
-                                            if ( bOK )
-                                            {
-                                                Reference< script::XLibraryContainerPassword > xPasswd( xModLibContainer, UNO_QUERY );
-                                                if ( xPasswd.is() )
-                                                {
-                                                    try
-                                                    {
-                                                        xPasswd->changeLibraryPassword( aLibName, OUString(), aPassword );
-                                                    }
-                                                    catch (...)
-                                                    {
-                                                    }
-                                                }
-                                            }
-                                        }
                                     }
                                 }
                             }
+                        }
+                    }
+                }
+            }
 
-                            // copy dialog library
-                            if ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aLibName ) && xDlgLibContainer.is() && !xDlgLibContainer->hasByName( aLibName ) )
-                            {
-                                Reference< container::XNameContainer > xDlgLib;
-                                if ( bReference )
-                                {
-                                    // storage URL
-                                    INetURLObject aDlgStorageURLObj( aDlgURLObj );
-                                    if ( aExtension == aContExtension )
-                                    {
-                                        sal_Int32 nCount = aDlgStorageURLObj.getSegmentCount();
-                                        aDlgStorageURLObj.insertName( aLibName, false, nCount - 1 );
-                                        aDlgStorageURLObj.setExtension( aLibExtension );
-                                        aDlgStorageURLObj.setFinalSlash();
-                                    }
-                                    OUString aDlgStorageURL( aDlgStorageURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
+            // copy dialog library
+            if ( xDlgLibContImport.is() && xDlgLibContImport->hasByName( aLibName ) && xDlgLibContainer.is() && !xDlgLibContainer->hasByName( aLibName ) )
+            {
+                Reference< container::XNameContainer > xDlgLib;
+                if ( bReference )
+                {
+                    // storage URL
+                    INetURLObject aDlgStorageURLObj( aDlgURLObj );
+                    if ( aExtension == aContExtension )
+                    {
+                        sal_Int32 nCount = aDlgStorageURLObj.getSegmentCount();
+                        aDlgStorageURLObj.insertName( aLibName, false, nCount - 1 );
+                        aDlgStorageURLObj.setExtension( aLibExtension );
+                        aDlgStorageURLObj.setFinalSlash();
+                    }
+                    OUString aDlgStorageURL( aDlgStorageURLObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
 
-                                    // create library link
-                                    xDlgLib.set( xDlgLibContainer->createLibraryLink( aLibName, aDlgStorageURL, true ), UNO_QUERY);
-                                }
-                                else
-                                {
-                                    // create library
-                                    xDlgLib = xDlgLibContainer->createLibrary( aLibName );
-                                    if ( xDlgLib.is() )
-                                    {
-                                        // get import library
-                                        Reference< container::XNameContainer > xDlgLibImport;
-                                        Any aElement = xDlgLibContImport->getByName( aLibName );
-                                        aElement >>= xDlgLibImport;
-
-                                        if ( xDlgLibImport.is() )
-                                        {
-                                            // load library
-                                            if ( !xDlgLibContImport->isLibraryLoaded( aLibName ) )
-                                                xDlgLibContImport->loadLibrary( aLibName );
-
-                                            // copy all dialogs
-                                            Sequence< OUString > aDlgNames = xDlgLibImport->getElementNames();
-                                            sal_Int32 nDlgCount = aDlgNames.getLength();
-                                            const OUString* pDlgNames = aDlgNames.getConstArray();
-                                            for ( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
-                                            {
-                                                OUString aDlgName( pDlgNames[ i ] );
-                                                Any aElement_ = xDlgLibImport->getByName( aDlgName );
-                                                xDlgLib->insertByName( aDlgName, aElement_ );
-                                            }
-                                        }
-                                    }
-                                }
-                            }
+                    // create library link
+                    xDlgLib.set( xDlgLibContainer->createLibraryLink( aLibName, aDlgStorageURL, true ), UNO_QUERY);
+                }
+                else
+                {
+                    // create library
+                    xDlgLib = xDlgLibContainer->createLibrary( aLibName );
+                    if ( xDlgLib.is() )
+                    {
+                        // get import library
+                        Reference< container::XNameContainer > xDlgLibImport;
+                        Any aElement = xDlgLibContImport->getByName( aLibName );
+                        aElement >>= xDlgLibImport;
 
-                            // insert listbox entry
-                            ImpInsertLibEntry( aLibName, m_pLibBox->GetEntryCount() );
-                            bChanges = true;
+                        if ( xDlgLibImport.is() )
+                        {
+                            // load library
+                            if ( !xDlgLibContImport->isLibraryLoaded( aLibName ) )
+                                xDlgLibContImport->loadLibrary( aLibName );
+
+                            // copy all dialogs
+                            Sequence< OUString > aDlgNames = xDlgLibImport->getElementNames();
+                            sal_Int32 nDlgCount = aDlgNames.getLength();
+                            const OUString* pDlgNames = aDlgNames.getConstArray();
+                            for ( sal_Int32 i = 0 ; i < nDlgCount ; i++ )
+                            {
+                                OUString aDlgName( pDlgNames[ i ] );
+                                Any aElement_ = xDlgLibImport->getByName( aDlgName );
+                                xDlgLib->insertByName( aDlgName, aElement_ );
+                            }
                         }
                     }
-
-                    SvTreeListEntry* pFirstNew = m_pLibBox->GetEntry( nNewPos );
-                    if ( pFirstNew )
-                        m_pLibBox->SetCurEntry( pFirstNew );
                 }
-
-                pLibDlg.reset();
-                if ( bChanges )
-                    MarkDocumentModified( m_aCurDocument );
             }
+
+            // insert listbox entry
+            ImpInsertLibEntry( aLibName, m_pLibBox->GetEntryCount() );
+            bChanges = true;
         }
     }
+
+    SvTreeListEntry* pFirstNew = m_pLibBox->GetEntry( nNewPos );
+    if ( pFirstNew )
+        m_pLibBox->SetCurEntry( pFirstNew );
+
+    if ( bChanges )
+        MarkDocumentModified( m_aCurDocument );
 }
 
 void LibPage::Export()


More information about the Libreoffice-commits mailing list