include/sfx2/templateabstractview.hxx | 2 sfx2/source/control/templateabstractview.cxx | 70 +++++++++++++------ sfx2/source/control/templatelocalview.cxx | 7 + sfx2/source/control/templatesearchview.cxx | 97 ++++++++++++++++++++------- sfx2/source/doc/templatedlg.cxx | 8 -- sfx2/source/inc/templatesearchview.hxx | 2 6 files changed, 131 insertions(+), 55 deletions(-)
New commits: commit 4188a5cc5f1fbd492f9ece60a7bf7742d5fdebd8 Author: Akshay Deep <akshaydeepi...@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 Change-Id: I97486c050c5dbb88b8551aa8a9bb9ba4285ad003 Reviewed-on: https://gerrit.libreoffice.org/26044 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Tested-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/include/sfx2/templateabstractview.hxx b/include/sfx2/templateabstractview.hxx index 68faee3..9946bca 100644 --- a/include/sfx2/templateabstractview.hxx +++ b/include/sfx2/templateabstractview.hxx @@ -83,6 +83,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 ac4d086..9f828f3 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> @@ -163,24 +164,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 ) @@ -189,7 +215,7 @@ void TemplateAbstractView::KeyInput( const KeyEvent& rKEvt ) if(aKeyCode == ( KEY_MOD1 | KEY_A ) ) { - for (ThumbnailViewItem* pItem : mItemList) + for (ThumbnailViewItem* pItem : mFilteredItemList) { if (!pItem->isSelected()) { @@ -202,23 +228,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::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 de8650c..ededed4 100644 --- a/sfx2/source/control/templatelocalview.cxx +++ b/sfx2/source/control/templatelocalview.cxx @@ -21,6 +21,7 @@ #include <unotools/ucbstreamhelper.hxx> #include <vcl/builderfactory.hxx> #include <vcl/pngread.hxx> +#include <vcl/layout.hxx> #include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/embed/XStorage.hpp> @@ -232,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::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..eef7d8c 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::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::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 675a20a..e0668fe 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), VclMessageType::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: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits