[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.0' - sd/source

Henry Castro hcastro at collabora.com
Thu Dec 17 07:00:41 PST 2015


 sd/source/ui/func/fuinsert.cxx |  127 ++++++++++++++++++++++++-----------------
 1 file changed, 77 insertions(+), 50 deletions(-)

New commits:
commit 3ecc2b1fb6353e51ed0498b0caac31c4eb804cf0
Author: Henry Castro <hcastro at collabora.com>
Date:   Thu Dec 17 10:55:35 2015 -0400

    sd: enable insert graphic when UNO command has URL file argument
    
    When LOOL requires to insert a graphic, it uses UNO command ".uno:InsertGraphic",
    and the corresponding URL file image argument.
    
    However Impress, ignores URL file image argument, and by default
    pop up a dialog, so no image is inserted in LOOL.
    
    Change-Id: I31dd1b1536307ef2dbb6b3d49812b310560c919f

diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index 7691f2d..a5ceb28 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -113,69 +113,96 @@ rtl::Reference<FuPoor> FuInsertGraphic::Create( ViewShell* pViewSh, ::sd::Window
     return xFunc;
 }
 
-void FuInsertGraphic::DoExecute( SfxRequest&  )
+void FuInsertGraphic::DoExecute( SfxRequest& rReq )
 {
-    SvxOpenGraphicDialog    aDlg(SdResId(STR_INSERTGRAPHIC));
+    OUString aFileName;
+    OUString aFilterName;
+    Graphic aGraphic;
 
-    if( aDlg.Execute() == GRFILTER_OK )
+    bool bAsLink = false;
+    int nError = GRFILTER_OPENERROR;
+
+    const SfxItemSet* pArgs = rReq.GetArgs();
+    const SfxPoolItem* pItem;
+
+    if ( pArgs &&
+         pArgs->GetItemState( SID_INSERT_GRAPHIC, true, &pItem ) == SfxItemState::SET )
     {
-        Graphic     aGraphic;
-        int nError = aDlg.GetGraphic(aGraphic);
-        if( nError == GRFILTER_OK )
+        aFileName = static_cast<const SfxStringItem*>(pItem)->GetValue();
+
+        if ( pArgs->GetItemState( FN_PARAM_FILTER, true, &pItem ) == SfxItemState::SET )
+            aFilterName = static_cast<const SfxStringItem*>(pItem)->GetValue();
+
+        if ( pArgs->GetItemState( FN_PARAM_1, true, &pItem ) == SfxItemState::SET )
+            bAsLink = static_cast<const SfxBoolItem*>(pItem)->GetValue();
+
+        nError = GraphicFilter::LoadGraphic( aFileName, aFilterName, aGraphic, &GraphicFilter::GetGraphicFilter() );
+    }
+    else
+    {
+        SvxOpenGraphicDialog    aDlg(SdResId(STR_INSERTGRAPHIC));
+
+        if( aDlg.Execute() == GRFILTER_OK )
         {
-            if( mpViewShell && mpViewShell->ISA(DrawViewShell))
-            {
-                sal_Int8    nAction = DND_ACTION_COPY;
-                SdrObject* pPickObj;
-                bool bSelectionReplaced(false);
+            nError = aDlg.GetGraphic(aGraphic);
+            bAsLink = aDlg.IsAsLink();
+            aFileName = aDlg.GetPath();
+            aFilterName = aDlg.GetCurrentFilter();
+        }
+    }
 
-                if( ( pPickObj = mpView->GetSelectedSingleObject( mpView->GetPage() ) ) || ( pPickObj = mpView->GetEmptyPresentationObject( PRESOBJ_GRAPHIC ) ) )
-                {
-                    nAction = DND_ACTION_LINK;
-                }
-                else if(1 == mpView->GetMarkedObjectCount())
-                {
-                    pPickObj = mpView->GetMarkedObjectByIndex(0);
-                    nAction = DND_ACTION_MOVE;
-                    bSelectionReplaced = true;
-                }
+    if( nError == GRFILTER_OK )
+    {
+        if( mpViewShell && dynamic_cast< DrawViewShell *>( mpViewShell ) !=  nullptr)
+        {
+            sal_Int8    nAction = DND_ACTION_COPY;
+            SdrObject* pPickObj;
+            bool bSelectionReplaced(false);
 
-                Point aPos;
-                Rectangle aRect(aPos, mpWindow->GetOutputSizePixel() );
-                aPos = aRect.Center();
-                aPos = mpWindow->PixelToLogic(aPos);
-                SdrGrafObj* pGrafObj = mpView->InsertGraphic(aGraphic, nAction, aPos, pPickObj, NULL);
+            if( ( pPickObj = mpView->GetSelectedSingleObject( mpView->GetPage() ) ) || ( pPickObj = mpView->GetEmptyPresentationObject( PRESOBJ_GRAPHIC ) ) )
+            {
+                nAction = DND_ACTION_LINK;
+            }
+            else if(1 == mpView->GetMarkedObjectCount())
+            {
+                pPickObj = mpView->GetMarkedObjectByIndex(0);
+                nAction = DND_ACTION_MOVE;
+                bSelectionReplaced = true;
+            }
 
-                if(pGrafObj && aDlg.IsAsLink())
-                {
-                    // really store as link only?
-                    if( SvtMiscOptions().ShowLinkWarningDialog() )
-                    {
-                        ScopedVclPtrInstance< SvxLinkWarningDialog > aWarnDlg(mpWindow,aDlg.GetPath());
-                        if( aWarnDlg->Execute() != RET_OK )
-                            return; // don't store as link
-                    }
+            Point aPos;
+            Rectangle aRect(aPos, mpWindow->GetOutputSizePixel() );
+            aPos = aRect.Center();
+            aPos = mpWindow->PixelToLogic(aPos);
+            SdrGrafObj* pGrafObj = mpView->InsertGraphic(aGraphic, nAction, aPos, pPickObj, nullptr);
 
-                    // store as link
-                    OUString aFltName(aDlg.GetCurrentFilter());
-                    OUString aPath(aDlg.GetPath());
-                    OUString aReferer;
-                    if (mpDocSh->HasName()) {
-                        aReferer = mpDocSh->GetMedium()->GetName();
-                    }
-                    pGrafObj->SetGraphicLink(aPath, aReferer, aFltName);
+            if(pGrafObj && bAsLink )
+            {
+                // really store as link only?
+                if( SvtMiscOptions().ShowLinkWarningDialog() )
+                {
+                    ScopedVclPtrInstance< SvxLinkWarningDialog > aWarnDlg(mpWindow, aFileName);
+                    if( aWarnDlg->Execute() != RET_OK )
+                        return; // don't store as link
                 }
 
-                if(bSelectionReplaced && pGrafObj)
-                {
-                    mpView->MarkObj(pGrafObj, mpView->GetSdrPageView());
+                // store as link
+                OUString aReferer;
+                if (mpDocSh->HasName()) {
+                    aReferer = mpDocSh->GetMedium()->GetName();
                 }
+                pGrafObj->SetGraphicLink(aFileName, aReferer, aFilterName);
+            }
+
+            if(bSelectionReplaced && pGrafObj)
+            {
+                mpView->MarkObj(pGrafObj, mpView->GetSdrPageView());
             }
         }
-        else
-        {
-            SdGRFFilter::HandleGraphicFilterError( (sal_uInt16)nError, GraphicFilter::GetGraphicFilter().GetLastError().nStreamError );
-        }
+    }
+    else
+    {
+        SdGRFFilter::HandleGraphicFilterError( (sal_uInt16)nError, GraphicFilter::GetGraphicFilter().GetLastError().nStreamError );
     }
 }
 


More information about the Libreoffice-commits mailing list