diff options
author | Akshay Deep <akshaydeepiitr@gmail.com> | 2016-06-08 08:24:52 +0530 |
---|---|---|
committer | Akshay Deep <akshaydeepiitr@gmail.com> | 2016-06-10 23:23:21 +0000 |
commit | 4d860975e6929f44ce38bc308e35b18785249b7d (patch) | |
tree | 7b4d80851ff7658f77312dd21e7931aababdabfe /sfx2 | |
parent | 82889bf59f0e455d877cf2a6d5c9f4ec243e36cf (diff) |
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@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Conflicts:
sfx2/source/doc/templatedlg.cxx
Change-Id: I97486c050c5dbb88b8551aa8a9bb9ba4285ad003
Reviewed-on: https://gerrit.libreoffice.org/26178
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Akshay Deep <akshaydeepiitr@gmail.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/control/templateabstractview.cxx | 70 | ||||
-rw-r--r-- | sfx2/source/control/templatelocalview.cxx | 6 | ||||
-rw-r--r-- | sfx2/source/control/templatesearchview.cxx | 97 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.cxx | 8 | ||||
-rw-r--r-- | sfx2/source/inc/templatesearchview.hxx | 2 |
5 files changed, 128 insertions, 55 deletions
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx index 8440d01028a3..a29b4b0b448f 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 e988bfddc00b..5374af09dc65 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 f30c98d71e07..0767c133ca6f 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 6a1a1442f4b7..fa6c28a5c20d 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 1dda8c595170..ce3c44b0ee37 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: |