summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorAkshay Deep <akshaydeepiitr@gmail.com>2016-06-08 08:24:52 +0530
committerAkshay Deep <akshaydeepiitr@gmail.com>2016-06-10 23:23:21 +0000
commit4d860975e6929f44ce38bc308e35b18785249b7d (patch)
tree7b4d80851ff7658f77312dd21e7931aababdabfe /sfx2
parent82889bf59f0e455d877cf2a6d5c9f4ec243e36cf (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.cxx70
-rw-r--r--sfx2/source/control/templatelocalview.cxx6
-rw-r--r--sfx2/source/control/templatesearchview.cxx97
-rw-r--r--sfx2/source/doc/templatedlg.cxx8
-rw-r--r--sfx2/source/inc/templatesearchview.hxx2
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: