summaryrefslogtreecommitdiffstats
path: root/sfx2
diff options
context:
space:
mode:
authorAkshay Deep <akshaydeepiitr@gmail.com>2016-06-08 08:24:52 +0530
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2016-06-10 06:55:33 +0000
commit4188a5cc5f1fbd492f9ece60a7bf7742d5fdebd8 (patch)
tree31b22d25b9444ae82321caa844c57b590397e49c /sfx2
parentPass it by const ref (diff)
downloadcore-4188a5cc5f1fbd492f9ece60a7bf7742d5fdebd8.tar.gz
core-4188a5cc5f1fbd492f9ece60a7bf7742d5fdebd8.zip
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.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/control/templateabstractview.cxx70
-rw-r--r--sfx2/source/control/templatelocalview.cxx7
-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, 129 insertions, 55 deletions
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index ac4d0862a53f..9f828f3b3abd 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 de8650c03d11..ededed4a7768 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 f30c98d71e07..eef7d8cfd1e7 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 675a20a3e3be..e0668fe68675 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 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: