Author: jim
Date: Thu Sep 21 12:30:32 2017
New Revision: 1809153

URL: http://svn.apache.org/viewvc?rev=1809153&view=rev
Log:
OLE update verification. Keep user in-the-know and query them.

Modified:
    
openoffice/branches/AOO414/main/comphelper/source/container/embeddedobjectcontainer.cxx
    openoffice/branches/AOO414/main/sc/source/core/data/documen2.cxx
    openoffice/branches/AOO414/main/sfx2/inc/sfx2/linkmgr.hxx
    openoffice/branches/AOO414/main/sfx2/source/appl/linkmgr2.cxx

Modified: 
openoffice/branches/AOO414/main/comphelper/source/container/embeddedobjectcontainer.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/comphelper/source/container/embeddedobjectcontainer.cxx?rev=1809153&r1=1809152&r2=1809153&view=diff
==============================================================================
--- 
openoffice/branches/AOO414/main/comphelper/source/container/embeddedobjectcontainer.cxx
 (original)
+++ 
openoffice/branches/AOO414/main/comphelper/source/container/embeddedobjectcontainer.cxx
 Thu Sep 21 12:30:32 2017
@@ -127,7 +127,7 @@ EmbeddedObjectContainer::EmbeddedObjectC
     pImpl = new EmbedImpl;
     pImpl->mxStorage = ::comphelper::OStorageHelper::GetTemporaryStorage();
     pImpl->mbOwnsStorage = true;
-    pImpl->mbUserAllowsLinkUpdate = false;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
 }
 
@@ -136,7 +136,7 @@ EmbeddedObjectContainer::EmbeddedObjectC
     pImpl = new EmbedImpl;
     pImpl->mxStorage = rStor;
     pImpl->mbOwnsStorage = false;
-    pImpl->mbUserAllowsLinkUpdate = false;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
 }
 
@@ -145,7 +145,7 @@ EmbeddedObjectContainer::EmbeddedObjectC
     pImpl = new EmbedImpl;
     pImpl->mxStorage = rStor;
     pImpl->mbOwnsStorage = false;
-    pImpl->mbUserAllowsLinkUpdate = false;
+    pImpl->mbUserAllowsLinkUpdate = true;
     pImpl->mpTempObjectContainer = 0;
     pImpl->m_xModel = xModel;
 }

Modified: openoffice/branches/AOO414/main/sc/source/core/data/documen2.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/sc/source/core/data/documen2.cxx?rev=1809153&r1=1809152&r2=1809153&view=diff
==============================================================================
--- openoffice/branches/AOO414/main/sc/source/core/data/documen2.cxx (original)
+++ openoffice/branches/AOO414/main/sc/source/core/data/documen2.cxx Thu Sep 21 
12:30:32 2017
@@ -229,7 +229,10 @@ ScDocument::ScDocument( ScDocumentMode     e
        if ( eMode == SCDOCMODE_DOCUMENT )
        {
                if ( pDocShell )
-                       pLinkManager = new sfx2::LinkManager( pDocShell );
+               {
+                       pLinkManager = new sfx2::LinkManager(pDocShell);
+                       pLinkManager->SetAutoAskUpdateAllLinks();
+               }
 
                xPoolHelper = new ScPoolHelper( this );
 
@@ -269,6 +272,7 @@ sfx2::LinkManager*  ScDocument::GetLinkMa
     if ( bAutoCalc && !pLinkManager && pShell)
        {
                pLinkManager = new sfx2::LinkManager( pShell );
+               pLinkManager->SetAutoAskUpdateAllLinks();
     }
     return pLinkManager; 
 }

Modified: openoffice/branches/AOO414/main/sfx2/inc/sfx2/linkmgr.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/sfx2/inc/sfx2/linkmgr.hxx?rev=1809153&r1=1809152&r2=1809153&view=diff
==============================================================================
--- openoffice/branches/AOO414/main/sfx2/inc/sfx2/linkmgr.hxx (original)
+++ openoffice/branches/AOO414/main/sfx2/inc/sfx2/linkmgr.hxx Thu Sep 21 
12:30:32 2017
@@ -55,6 +55,13 @@ class SFX2_DLLPUBLIC LinkManager
        SvLinkSources aServerTbl;
 
     SfxObjectShell *pPersist; // LinkMgr muss vor SfxObjectShell freigegeben 
werden
+
+       sal_Bool mAutoAskUpdateAllLinks;
+       sal_Bool mUpdateAsked;
+       sal_Bool mAllowUpdate;
+
+       sal_Bool GetUserAllowsLinkUpdate(Window *pParent);
+       void SetUserAllowsLinkUpdate(SvBaseLink *pLink, sal_Bool allows);
 protected:
        sal_Bool                InsertLink( SvBaseLink* pLink, sal_uInt16 
nObjType, sal_uInt16 nUpdateType,
                                                        const String* pName = 0 
);
@@ -105,6 +112,10 @@ public:
 
     SvLinkSourceRef CreateObj( SvBaseLink* );
 
+       
+       // Automatically ask user about update all links, on first insert
+       void SetAutoAskUpdateAllLinks();
+
        void            UpdateAllLinks( sal_Bool bAskUpdate = sal_True,
                                                                sal_Bool 
bCallErrHdl = sal_True,
                                 sal_Bool bUpdateGrfLinks = sal_False,

Modified: openoffice/branches/AOO414/main/sfx2/source/appl/linkmgr2.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/sfx2/source/appl/linkmgr2.cxx?rev=1809153&r1=1809152&r2=1809153&view=diff
==============================================================================
--- openoffice/branches/AOO414/main/sfx2/source/appl/linkmgr2.cxx (original)
+++ openoffice/branches/AOO414/main/sfx2/source/appl/linkmgr2.cxx Thu Sep 21 
12:30:32 2017
@@ -65,11 +65,12 @@ public:
 SV_IMPL_PTRARR( SvBaseLinks, SvBaseLinkRefPtr )
 
 LinkManager::LinkManager(SfxObjectShell* p)
-       : pPersist( p )
+       : pPersist(p),
+       mUpdateAsked(sal_False),
+       mAutoAskUpdateAllLinks(sal_False)
 {
 }
 
-
 LinkManager::~LinkManager()
 {
        SvBaseLinkRef** ppRef = (SvBaseLinkRef**)aLinkTbl.GetData();
@@ -157,6 +158,12 @@ sal_Bool LinkManager::Insert( SvBaseLink
        SvBaseLinkRef* pTmp = new SvBaseLinkRef( pLink );
     pLink->SetLinkManager( this );
        aLinkTbl.Insert( pTmp, aLinkTbl.Count() );
+       Window *parent = GetPersist()->GetDialogParent();
+       if (mAutoAskUpdateAllLinks)
+       {
+               SetUserAllowsLinkUpdate(pLink, GetUserAllowsLinkUpdate(parent));
+       }
+       
        return sal_True;
 }
 
@@ -268,6 +275,35 @@ sal_Bool LinkManager::GetDisplayNames( c
        return bRet;
 }
 
+void LinkManager::SetAutoAskUpdateAllLinks()
+{
+       mAutoAskUpdateAllLinks = sal_True;
+}
+
+sal_Bool LinkManager::GetUserAllowsLinkUpdate(Window *pParentWin)
+{
+       if (!mUpdateAsked)
+       {
+               if (QueryBox(pParentWin, WB_YES_NO | WB_DEF_NO, 
SfxResId(STR_QUERY_UPDATE_LINKS)).Execute() == RET_YES)
+                       mAllowUpdate = sal_True;
+               else
+                       mAllowUpdate = sal_False;
+               mUpdateAsked = sal_True;
+       }
+       return mAllowUpdate;
+}
+
+void LinkManager::SetUserAllowsLinkUpdate(SvBaseLink *pLink, sal_Bool allows)
+{
+       SfxObjectShell* pShell = pLink->GetLinkManager()->GetPersist();
+
+       if (pShell)
+       {
+               comphelper::EmbeddedObjectContainer& rEmbeddedObjectContainer = 
pShell->getEmbeddedObjectContainer();
+               rEmbeddedObjectContainer.setUserAllowsLinkUpdate(allows);
+       }
+}
+
 
 void LinkManager::UpdateAllLinks( 
     sal_Bool bAskUpdate, 
@@ -313,26 +349,20 @@ void LinkManager::UpdateAllLinks(
                if( !pLink->IsVisible() ||
                        ( !bUpdateGrfLinks && OBJECT_CLIENT_GRF == 
pLink->GetObjType() ))
                        continue;
-
-               if( bAskUpdate )
+               
+               sal_Bool allows = sal_False;
+                       
+               if (bAskUpdate)
                {
-            int nRet = QueryBox( pParentWin, WB_YES_NO | WB_DEF_NO, SfxResId( 
STR_QUERY_UPDATE_LINKS ) ).Execute();
-            SfxObjectShell* pShell = pLink->GetLinkManager()->GetPersist();
+                       allows = GetUserAllowsLinkUpdate(pParentWin);
+               }
 
-            if(pShell)
-            {
-                comphelper::EmbeddedObjectContainer& rEmbeddedObjectContainer 
= pShell->getEmbeddedObjectContainer();
-                rEmbeddedObjectContainer.setUserAllowsLinkUpdate(RET_YES == 
nRet);
-            }
+               SetUserAllowsLinkUpdate(pLink, allows);
+           bAskUpdate = sal_False;             // one time is OK
 
-                   if (RET_YES != nRet)
-                       {
-                               return;         // nothing should be updated
-            }
-                       bAskUpdate = sal_False;         // one time is OK
-               }
+               if (allows)
+                       pLink->Update();
 
-               pLink->Update();
        }
 }
 


Reply via email to