[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - include/sfx2 sfx2/source

Akshay Deep akshaydeepiitr at gmail.com
Fri Jun 10 23:23:44 UTC 2016


 include/sfx2/templateabstractview.hxx        |    2 
 sfx2/source/control/templateabstractview.cxx |   70 +++++++++++++------
 sfx2/source/control/templatelocalview.cxx    |    6 +
 sfx2/source/control/templatesearchview.cxx   |   97 ++++++++++++++++++++-------
 sfx2/source/doc/templatedlg.cxx              |    8 --
 sfx2/source/inc/templatesearchview.hxx       |    2 
 6 files changed, 130 insertions(+), 55 deletions(-)

New commits:
commit 4d860975e6929f44ce38bc308e35b18785249b7d
Author: Akshay Deep <akshaydeepiitr at gmail.com>
Date:   Wed Jun 8 08:24:52 2016 +0530

    GSoC: Template Manager: Enable Keyboard shortcuts
    
    delete key: delete operation
    shift-f10 and contextmenu: create context-menu
    ctrl + A: select all
    
    Conflicts:
    	sfx2/source/control/templateabstractview.cxx
    
    Reviewed-on: https://gerrit.libreoffice.org/26044
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    
    Conflicts:
    	sfx2/source/doc/templatedlg.cxx
    
    Change-Id: I97486c050c5dbb88b8551aa8a9bb9ba4285ad003
    Reviewed-on: https://gerrit.libreoffice.org/26178
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Akshay Deep <akshaydeepiitr at gmail.com>

diff --git a/include/sfx2/templateabstractview.hxx b/include/sfx2/templateabstractview.hxx
index b211b57..7913947 100644
--- a/include/sfx2/templateabstractview.hxx
+++ b/include/sfx2/templateabstractview.hxx
@@ -85,6 +85,8 @@ public:
 
     virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
 
+    virtual void Command( const CommandEvent& rCEvt ) override;
+
     virtual void KeyInput( const KeyEvent& rKEvt ) override;
 
     virtual void showAllTemplates () = 0;
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index 8440d01..a29b4b0 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -17,6 +17,7 @@
 #include <tools/urlobj.hxx>
 #include <unotools/ucbstreamhelper.hxx>
 #include <vcl/pngread.hxx>
+#include <vcl/layout.hxx>
 #include <unotools/moduleoptions.hxx>
 
 #include <basegfx/polygon/b2dpolygon.hxx>
@@ -186,24 +187,49 @@ void TemplateAbstractView::updateThumbnailDimensions(long itemMaxSize)
 void TemplateAbstractView::MouseButtonDown( const MouseEvent& rMEvt )
 {
     GrabFocus();
+    ThumbnailView::MouseButtonDown(rMEvt);
+}
 
-    if (rMEvt.IsRight())
+void TemplateAbstractView::Command( const CommandEvent& rCEvt )
+{
+    if ( rCEvt.GetCommand() == CommandEventId::ContextMenu )
     {
-        deselectItems();
-        size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
-        Point aPosition (rMEvt.GetPosPixel());
-        maPosition = aPosition;
-        ThumbnailViewItem* pItem = ImplGetItem(nPos);
-        const TemplateViewItem *pViewItem = dynamic_cast<const TemplateViewItem*>(pItem);
-
-        if(pViewItem)
+        if(rCEvt.IsMouseEvent())
         {
-            maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
-            maCreateContextMenuHdl.Call(pItem);
+            deselectItems();
+            size_t nPos = ImplGetItem(rCEvt.GetMousePosPixel());
+            Point aPosition (rCEvt.GetMousePosPixel());
+            maPosition = aPosition;
+            ThumbnailViewItem* pItem = ImplGetItem(nPos);
+            const TemplateViewItem *pViewItem = dynamic_cast<const TemplateViewItem*>(pItem);
+
+            if(pViewItem)
+            {
+                maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
+                maCreateContextMenuHdl.Call(pItem);
+            }
+        }
+        else
+        {
+            for (ThumbnailViewItem* pItem : mFilteredItemList)
+            {
+                //create context menu for the first selected item
+                if (pItem->isSelected())
+                {
+                    deselectItems();
+                    pItem->setSelection(true);
+                    maItemStateHdl.Call(pItem);
+                    Rectangle aRect = pItem->getDrawArea();
+                    maPosition = aRect.Center();
+                    maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
+                    maCreateContextMenuHdl.Call(pItem);
+                    break;
+                }
+            }
         }
     }
 
-    ThumbnailView::MouseButtonDown(rMEvt);
+    ThumbnailView::Command(rCEvt);
 }
 
 void TemplateAbstractView::KeyInput( const KeyEvent& rKEvt )
@@ -212,7 +238,7 @@ void TemplateAbstractView::KeyInput( const KeyEvent& rKEvt )
 
     if(aKeyCode == ( KEY_MOD1 | KEY_A ) )
     {
-        for (ThumbnailViewItem* pItem : mItemList)
+        for (ThumbnailViewItem* pItem : mFilteredItemList)
         {
             if (!pItem->isSelected())
             {
@@ -225,23 +251,21 @@ void TemplateAbstractView::KeyInput( const KeyEvent& rKEvt )
             Invalidate();
         return;
     }
-    else if(aKeyCode == (KEY_SHIFT | KEY_F10 ))
+    else if( aKeyCode == KEY_DELETE && !mFilteredItemList.empty())
     {
+        ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VclMessageType::VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
+
+        if ( aQueryDlg->Execute() != RET_YES )
+            return;
+
         for (ThumbnailViewItem* pItem : mFilteredItemList)
         {
-            //create context menu for the first selected item
             if (pItem->isSelected())
             {
-                deselectItems();
-                pItem->setSelection(true);
-                maItemStateHdl.Call(pItem);
-                Rectangle aRect = pItem->getDrawArea();
-                maPosition = aRect.Center();
-                maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
-                maCreateContextMenuHdl.Call(pItem);
-                break;
+                maDeleteTemplateHdl.Call(pItem);
             }
         }
+        reload();
     }
 
     ThumbnailView::KeyInput(rKEvt);
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index e988bfd..5374af0 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -233,7 +233,13 @@ IMPL_LINK_TYPED(TemplateLocalView, ContextMenuSelectHdl, Menu*, pMenu, bool)
     }
         break;
     case MNI_DELETE:
+    {
+        ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VclMessageType::VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
+        if ( aQueryDlg->Execute() != RET_YES )
+            break;
+
         maDeleteTemplateHdl.Call(maSelectedItem);
+    }
         break;
     case MNI_DEFAULT_TEMPLATE:
         maDefaultTemplateHdl.Call(maSelectedItem);
diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx
index f30c98d..0767c13 100644
--- a/sfx2/source/control/templatesearchview.cxx
+++ b/sfx2/source/control/templatesearchview.cxx
@@ -12,6 +12,7 @@
 #include <sfx2/templateabstractview.hxx>
 #include <sfx2/sfxresid.hxx>
 #include <tools/urlobj.hxx>
+#include <vcl/layout.hxx>
 
 #include "../doc/doc.hrc"
 
@@ -34,50 +35,87 @@ VCL_BUILDER_FACTORY(TemplateSearchView)
 void TemplateSearchView::MouseButtonDown( const MouseEvent& rMEvt )
 {
     GrabFocus();
-    if (rMEvt.IsRight())
-    {
-        deselectItems();
-        size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
-        Point aPosition (rMEvt.GetPosPixel());
-        maPosition = aPosition;
-        ThumbnailViewItem* pItem = ImplGetItem(nPos);
-        const TemplateViewItem *pViewItem = dynamic_cast<const TemplateViewItem*>(pItem);
-
-        if(pViewItem)
-        {
-            maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
-            maCreateContextMenuHdl.Call(pItem);
-        }
-    }
-
     ThumbnailView::MouseButtonDown(rMEvt);
 }
 
-
 void TemplateSearchView::KeyInput( const KeyEvent& rKEvt )
 {
     vcl::KeyCode aKeyCode = rKEvt.GetKeyCode();
 
-    if(aKeyCode == (KEY_SHIFT | KEY_F10 ))
+    if(aKeyCode == ( KEY_MOD1 | KEY_A ) )
     {
         for (ThumbnailViewItem* pItem : mFilteredItemList)
         {
-            //create context menu for the first selected item
-            if (pItem->isSelected())
+            if (!pItem->isSelected())
             {
-                deselectItems();
                 pItem->setSelection(true);
                 maItemStateHdl.Call(pItem);
-                Rectangle aRect = pItem->getDrawArea();
-                maPosition = aRect.Center();
+            }
+        }
+
+        if (IsReallyVisible() && IsUpdateMode())
+            Invalidate();
+        return;
+    }
+    else if( aKeyCode == KEY_DELETE && !mFilteredItemList.empty())
+    {
+        ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VclMessageType::VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
+
+        if ( aQueryDlg->Execute() != RET_YES )
+            return;
+
+        for (ThumbnailViewItem* pItem : mFilteredItemList)
+        {
+            if (pItem->isSelected())
+            {
+                maDeleteTemplateHdl.Call(pItem);
+            }
+        }
+    }
+
+    ThumbnailView::KeyInput(rKEvt);
+}
+
+void TemplateSearchView::Command( const CommandEvent& rCEvt )
+{
+    if ( rCEvt.GetCommand() == CommandEventId::ContextMenu )
+    {
+        if(rCEvt.IsMouseEvent())
+        {
+            deselectItems();
+            size_t nPos = ImplGetItem(rCEvt.GetMousePosPixel());
+            Point aPosition (rCEvt.GetMousePosPixel());
+            maPosition = aPosition;
+            ThumbnailViewItem* pItem = ImplGetItem(nPos);
+            const TemplateViewItem *pViewItem = dynamic_cast<const TemplateViewItem*>(pItem);
+
+            if(pViewItem)
+            {
                 maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
                 maCreateContextMenuHdl.Call(pItem);
-                break;
+            }
+        }
+        else
+        {
+            for (ThumbnailViewItem* pItem : mFilteredItemList)
+            {
+                //create context menu for the first selected item
+                if (pItem->isSelected())
+                {
+                    deselectItems();
+                    pItem->setSelection(true);
+                    maItemStateHdl.Call(pItem);
+                    Rectangle aRect = pItem->getDrawArea();
+                    maPosition = aRect.Center();
+                    maSelectedItem = dynamic_cast<TemplateViewItem*>(pItem);
+                    maCreateContextMenuHdl.Call(pItem);
+                    break;
+                }
             }
         }
     }
 
-    ThumbnailView::KeyInput(rKEvt);
+    ThumbnailView::Command(rCEvt);
 }
 
 void TemplateSearchView::createContextMenu( const bool bIsDefault)
@@ -113,7 +151,16 @@ IMPL_LINK_TYPED(TemplateSearchView, ContextMenuSelectHdl, Menu*, pMenu, bool)
         maEditTemplateHdl.Call(maSelectedItem);
         break;
     case MNI_DELETE:
+    {
+        ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VclMessageType::VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
+        if ( aQueryDlg->Execute() != RET_YES )
+            break;
+
         maDeleteTemplateHdl.Call(maSelectedItem);
+        RemoveItem(maSelectedItem->mnId);
+
+        CalculateItemPositions();
+    }
         break;
     case MNI_DEFAULT_TEMPLATE:
         maDefaultTemplateHdl.Call(maSelectedItem);
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 6a1a144..fa6c28a 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -825,11 +825,6 @@ IMPL_LINK_TYPED(SfxTemplateManagerDlg, EditTemplateHdl, ThumbnailViewItem*, pIte
 
 IMPL_LINK_TYPED(SfxTemplateManagerDlg, DeleteTemplateHdl, ThumbnailViewItem*, pItem, void)
 {
-    ScopedVclPtrInstance< MessageDialog > aQueryDlg(this, SfxResId(STR_QMSG_SEL_TEMPLATE_DELETE), VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO);
-
-    if ( aQueryDlg->Execute() != RET_YES )
-        return;
-
     OUString aDeletedTemplate;
 
     if(mpSearchView->IsVisible())
@@ -858,8 +853,6 @@ IMPL_LINK_TYPED(SfxTemplateManagerDlg, DeleteTemplateHdl, ThumbnailViewItem*, pI
         ScopedVclPtrInstance<MessageDialog>::Create(this, aMsg.replaceFirst("$1",aDeletedTemplate))->Execute();
     }
 
-    mpLocalView->reload();
-
     if(mpSearchView->IsVisible())
         SearchUpdateHdl(*mpSearchFilter);
 }
@@ -936,6 +929,7 @@ IMPL_LINK_NOARG_TYPED(SfxTemplateManagerDlg, SearchUpdateHdl, Edit&, void)
         mpCurView->filterItems(ViewFilter_Application(getCurrentApplicationFilter()));
         if(mpCurView == mpLocalView)
         {
+            mpLocalView->reload();
             OUString sLastFolder = mpCBFolder->GetSelectEntry();
             mpLocalView->showRegion(sLastFolder);
             mpActionMenu->ShowItem(MNI_ACTION_RENAME_FOLDER);
diff --git a/sfx2/source/inc/templatesearchview.hxx b/sfx2/source/inc/templatesearchview.hxx
index 1dda8c5..ce3c44b 100644
--- a/sfx2/source/inc/templatesearchview.hxx
+++ b/sfx2/source/inc/templatesearchview.hxx
@@ -46,6 +46,8 @@ protected:
 
     virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
 
+    virtual void Command( const CommandEvent& rCEvt ) override;
+
     virtual void KeyInput( const KeyEvent& rKEvt ) override;
 
 protected:


More information about the Libreoffice-commits mailing list