summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorVert D <devoptmsoi@gmx.com>2020-12-12 00:39:51 -0500
committerHeiko Tietze <heiko.tietze@documentfoundation.org>2020-12-23 11:38:50 +0100
commit86f3fa919a6de6767177193d5b7714f8f6dbd5c4 (patch)
treedfec792fd2c47d9813c360872adddfcc3b5458fd /sfx2
parent8be0be8066f50e0ce660d40f121c7d7891f1bc49 (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.cxx8
-rw-r--r--sfx2/source/control/templatelocalview.cxx22
-rw-r--r--sfx2/source/control/templatesearchview.cxx7
-rw-r--r--sfx2/source/doc/templatedlg.cxx4
-rw-r--r--sfx2/source/inc/templatesearchview.hxx2
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,