diff options
author | Vert D <devoptmsoi@gmx.com> | 2020-12-12 00:39:51 -0500 |
---|---|---|
committer | Heiko Tietze <heiko.tietze@documentfoundation.org> | 2020-12-23 11:38:50 +0100 |
commit | 86f3fa919a6de6767177193d5b7714f8f6dbd5c4 (patch) | |
tree | dfec792fd2c47d9813c360872adddfcc3b5458fd /sfx2 | |
parent | 8be0be8066f50e0ce660d40f121c7d7891f1bc49 (diff) |
tdf#138246 Disable edit rename delete contextmenu items for built-in templates
Change-Id: I7bcaa8acc034a3d3e9926db2f1f54bbeceddca2d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107611
Tested-by: Jenkins
Tested-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/control/templatedlglocalview.cxx | 8 | ||||
-rw-r--r-- | sfx2/source/control/templatelocalview.cxx | 22 | ||||
-rw-r--r-- | sfx2/source/control/templatesearchview.cxx | 7 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/inc/templatesearchview.hxx | 2 |
5 files changed, 38 insertions, 5 deletions
diff --git a/sfx2/source/control/templatedlglocalview.cxx b/sfx2/source/control/templatedlglocalview.cxx index 0949e684c414..39b88774cade 100644 --- a/sfx2/source/control/templatedlglocalview.cxx +++ b/sfx2/source/control/templatedlglocalview.cxx @@ -63,7 +63,7 @@ void TemplateDlgLocalView::showRegion(std::u16string_view rName) } } -void TemplateDlgLocalView::createContextMenu(const bool bIsDefault) +void TemplateDlgLocalView::createContextMenu(const bool bIsDefault, const bool bIsBuiltIn) { mxContextMenu->clear(); mxContextMenu->append("open", SfxResId(STR_OPEN)); @@ -77,6 +77,12 @@ void TemplateDlgLocalView::createContextMenu(const bool bIsDefault) mxContextMenu->append_separator("separator"); mxContextMenu->append("rename", SfxResId(STR_SFX_RENAME)); mxContextMenu->append("delete", SfxResId(STR_DELETE)); + if (bIsBuiltIn) + { + mxContextMenu->set_sensitive("rename", false); + mxContextMenu->set_sensitive("edit", false); + mxContextMenu->set_sensitive("delete", false); + } if (mViewMode == TemplateViewMode::eThumbnailView) { deselectItems(); diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx index 5faba8b552d1..87e07fd30642 100644 --- a/sfx2/source/control/templatelocalview.cxx +++ b/sfx2/source/control/templatelocalview.cxx @@ -26,6 +26,11 @@ #include <sfx2/strings.hrc> #include <bitmaps.hlst> +#include <comphelper/processfactory.hxx> +#include <com/sun/star/util/thePathSettings.hpp> +#include <unotools/ucbhelper.hxx> +#include <sfxurlrelocator.hxx> + using namespace ::com::sun::star; bool ViewFilter_Application::isFilteredExtension(FILTER_APPLICATION filter, std::u16string_view rExt) @@ -919,5 +924,22 @@ void TemplateLocalView::OnItemDblClicked (ThumbnailViewItem *pItem) maOpenTemplateHdl.Call(pViewItem); } +bool TemplateLocalView::IsInternalTemplate(const OUString& rPath) +{ + uno::Reference< uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext(); + css::uno::Reference< css::util::XPathSettings > xPathSettings = css::util::thePathSettings::get(xContext); + uno::Sequence<OUString> aInternalTemplateDirs; + uno::Any aAny = xPathSettings->getPropertyValue("Template_internal"); + aAny >>= aInternalTemplateDirs; + SfxURLRelocator_Impl aRelocator(xContext); + for (auto& rInternalTemplateDir : aInternalTemplateDirs) + { + aRelocator.makeRelocatableURL(rInternalTemplateDir); + aRelocator.makeAbsoluteURL(rInternalTemplateDir); + if(::utl::UCBContentHelper::IsSubPath(rInternalTemplateDir, rPath)) + return true; + } + return false; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx index e1d2f8083fac..bde9769cd751 100644 --- a/sfx2/source/control/templatesearchview.cxx +++ b/sfx2/source/control/templatesearchview.cxx @@ -131,7 +131,7 @@ bool TemplateSearchView::Command(const CommandEvent& rCEvt) return true; } -void TemplateSearchView::createContextMenu(const bool bIsDefault) +void TemplateSearchView::createContextMenu(const bool bIsDefault, const bool bIsBuiltIn) { mxContextMenu->clear(); mxContextMenu->append(MNI_OPEN,SfxResId(STR_OPEN)); @@ -144,6 +144,11 @@ void TemplateSearchView::createContextMenu(const bool bIsDefault) mxContextMenu->append_separator("separator"); mxContextMenu->append(MNI_DELETE,SfxResId(STR_DELETE)); + if(bIsBuiltIn) + { + mxContextMenu->set_sensitive(MNI_EDIT, false); + mxContextMenu->set_sensitive(MNI_DELETE, false); + } if(mViewMode == TemplateViewMode::eThumbnailView) { maSelectedItem->setSelection(true); diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index f7d6a1d72210..13444e6b4280 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -671,9 +671,9 @@ IMPL_LINK(SfxTemplateManagerDlg, CreateContextMenuHdl, ThumbnailViewItem*, pItem if (pViewItem) { if (mxSearchView->IsVisible()) - mxSearchView->createContextMenu(pViewItem->IsDefaultTemplate()); + mxSearchView->createContextMenu(pViewItem->IsDefaultTemplate(), TemplateLocalView::IsInternalTemplate(pViewItem->getPath())); else - mxLocalView->createContextMenu(pViewItem->IsDefaultTemplate()); + mxLocalView->createContextMenu(pViewItem->IsDefaultTemplate(), TemplateLocalView::IsInternalTemplate(pViewItem->getPath())); } } diff --git a/sfx2/source/inc/templatesearchview.hxx b/sfx2/source/inc/templatesearchview.hxx index 8f02f206b296..324c97a30709 100644 --- a/sfx2/source/inc/templatesearchview.hxx +++ b/sfx2/source/inc/templatesearchview.hxx @@ -37,7 +37,7 @@ public: void setDefaultTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink); - void createContextMenu(const bool bIsDefault); + void createContextMenu(const bool bIsDefault, const bool bIsBuiltIn); void AppendItem(sal_uInt16 nAssocItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx, const OUString &rTitle, const OUString &rSubtitle, |