[Libreoffice-commits] core.git: include/sfx2 sfx2/source
Vert D (via logerrit)
logerrit at kemper.freedesktop.org
Fri Aug 6 13:16:01 UTC 2021
include/sfx2/templatedlg.hxx | 1
include/sfx2/templatelocalview.hxx | 2
sfx2/source/control/templatelocalview.cxx | 36 ++++++++++++-
sfx2/source/doc/templatedlg.cxx | 83 +++++++-----------------------
4 files changed, 59 insertions(+), 63 deletions(-)
New commits:
commit 8d8450f0c14db26fb8eb44677c2887e619200904
Author: Vert D <devoptmsoi at gmx.com>
AuthorDate: Mon May 24 23:01:38 2021 -0500
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Aug 6 15:15:20 2021 +0200
tdf#139647 refresh renamed items
*Update templates names after rename (faster than reload).
*Fix some warnings.
Change-Id: I47387af91964afae8de8753289d49d19e6080863
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119919
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/sfx2/templatedlg.hxx b/include/sfx2/templatedlg.hxx
index 588a307af139..940973f84f05 100644
--- a/include/sfx2/templatedlg.hxx
+++ b/include/sfx2/templatedlg.hxx
@@ -78,7 +78,6 @@ protected:
DECL_LINK(ExportTemplateHdl, void*, void);
void SearchUpdate();
- void FilterSearch();
DECL_LINK(SearchUpdateHdl, weld::Entry&, void);
DECL_LINK(GetFocusHdl, weld::Widget&, void);
diff --git a/include/sfx2/templatelocalview.hxx b/include/sfx2/templatelocalview.hxx
index fbf730af6b81..2ad81391e97d 100644
--- a/include/sfx2/templatelocalview.hxx
+++ b/include/sfx2/templatelocalview.hxx
@@ -126,6 +126,8 @@ public:
sal_uInt16 getCurRegionId () const { return mnCurRegionId;}
+ void setCurRegionId (sal_uInt16 nCurRegionId) { mnCurRegionId = nCurRegionId;}
+
void setOpenRegionHdl(const Link<void*,void> &rLink);
void setCreateContextMenuHdl(const Link<ThumbnailViewItem*,void> &rLink);
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index 0ba60c0d758b..4d0571eeaca1 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -613,7 +613,41 @@ bool TemplateLocalView::renameItem(ThumbnailViewItem* pItem, const OUString& sNe
nDocId = pDocItem->mnDocId;
}
- return mpDocTemplates->SetName( sNewTitle, nRegionId, nDocId );
+ bool bRes = mpDocTemplates->SetName( sNewTitle, nRegionId, nDocId );
+ if(bRes)
+ {
+ for (auto & pRegion : maRegions)
+ {
+ if (pRegion->mnId == nRegionId + 1 )
+ {
+ for(auto & aTemplate : pRegion->maTemplates)
+ {
+ if(aTemplate.nId == nDocId + 1)
+ {
+ aTemplate.aName = sNewTitle;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ OUString sRegionName;
+ for (auto & aTemplate : maAllTemplates)
+ {
+ if (aTemplate.nRegionId == nRegionId && aTemplate.nDocId == nDocId)
+ {
+ aTemplate.aName = sNewTitle;
+ sRegionName = aTemplate.aRegionName;
+ break;
+ }
+ }
+
+ OUString sHelpText = SfxResId(STR_TEMPLATE_TOOLTIP);
+ sHelpText = (sHelpText.replaceFirst("$1", sNewTitle)).replaceFirst("$2", sRegionName);
+ pItem->setHelpText(sHelpText);
+ pItem->maTitle = sNewTitle;
+ }
+ return bRes;
}
void TemplateLocalView::insertItems(const std::vector<TemplateItemProperties> &rTemplates, bool isRegionSelected, bool bShowCategoryInTooltip)
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index c4dbc7c51fff..5f5760ca6f43 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -68,9 +68,7 @@ constexpr OUStringLiteral TM_SETTING_VIEWMODE = u"ViewMode";
#define MNI_ACTION_DEFAULT_CALC "default calc"
#define MNI_ACTION_DEFAULT_IMPRESS "default impress"
#define MNI_ACTION_DEFAULT_DRAW "default draw"
-#define MNI_ACTION_MOVE "move template"
#define MNI_ACTION_IMPORT "import template"
-#define MNI_ACTION_EXPORT "export template"
#define MNI_ACTION_EXTENSIONS "extensions"
#define MNI_ALL_APPLICATIONS 0
#define MNI_WRITER 1
@@ -231,10 +229,8 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg(weld::Window *pParent)
fillFolderComboBox();
mxActionBar->set_item_visible(MNI_ACTION_EXTENSIONS, true);
- mxActionBar->set_item_visible(MNI_ACTION_EXPORT, true);
- mxActionBar->set_item_visible(MNI_ACTION_MOVE, true);
- mxActionBar->set_item_visible(MNI_ACTION_RENAME_FOLDER, true);
- mxActionBar->set_item_visible(MNI_ACTION_DELETE_FOLDER, true);
+ mxActionBar->set_item_visible(MNI_ACTION_IMPORT, true);
+ mxActionBar->set_item_visible(MNI_ACTION_NEW_FOLDER, true);
mxOKButton->set_label(SfxResId(STR_OPEN));
@@ -493,18 +489,16 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, SelectRegionHdl, weld::ComboBox&, void)
if(mxCBFolder->get_active() == 0)
{
- mxLocalView->showAllTemplates();
mxActionBar->set_item_sensitive(MNI_ACTION_RENAME_FOLDER, false);
mxActionBar->set_item_sensitive(MNI_ACTION_DELETE_FOLDER, false);
}
else
{
- mxLocalView->showRegion(sSelectedRegion);
bool bIsBuiltInRegion = mxLocalView->IsBuiltInRegion(sSelectedRegion);
mxActionBar->set_item_sensitive(MNI_ACTION_RENAME_FOLDER, !bIsBuiltInRegion);
mxActionBar->set_item_sensitive(MNI_ACTION_DELETE_FOLDER, !bIsBuiltInRegion);
}
- FilterSearch();
+ SearchUpdate();
}
IMPL_LINK(SfxTemplateManagerDlg, TVItemStateHdl, const ThumbnailViewItem*, pItem, void)
@@ -526,7 +520,7 @@ IMPL_LINK(SfxTemplateManagerDlg, MenuSelectHdl, const OString&, rIdent, void)
else if (rIdent == MNI_ACTION_REFRESH)
{
mxLocalView->reload();
- FilterSearch();
+ SearchUpdate();
}
else if (rIdent == MNI_ACTION_DEFAULT)
{
@@ -607,7 +601,7 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, MoveTemplateHdl, void*, void)
}
mxLocalView->reload();
- FilterSearch();
+ SearchUpdate();
}
}
IMPL_LINK_NOARG(SfxTemplateManagerDlg, ExportTemplateHdl, void*, void)
@@ -646,23 +640,15 @@ void SfxTemplateManagerDlg::ImportActionHdl()
}
else
OnTemplateImportCategory(sCategory);
-
- mxLocalView->reload();
- mxLocalView->showAllTemplates();
- FilterSearch();
- mxCBApp->set_active(0);
- mxCBFolder->set_active(0);
- mxActionBar->set_item_sensitive(MNI_ACTION_RENAME_FOLDER, false);
- mxActionBar->set_item_sensitive(MNI_ACTION_DELETE_FOLDER, false);
}
}
else
{
const auto sCategory = mxCBFolder->get_active_text();
OnTemplateImportCategory(sCategory);
- mxLocalView->reload();
- FilterSearch();
}
+ mxLocalView->reload();
+ SearchUpdate();
}
void SfxTemplateManagerDlg::ExtensionsActionHdl()
@@ -866,38 +852,22 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, FocusRectLocalHdl, weld::Widget&, tools::
bMakeSelItemVisible = false;
return tools::Rectangle();
}
-void SfxTemplateManagerDlg::FilterSearch()
-{
- OUString aKeyword = mxSearchFilter->get_text();
- if (!aKeyword.isEmpty())
- {
- mxLocalView->Clear();
- std::vector<TemplateItemProperties> aItems =
- mxLocalView->getFilteredItems(SearchView_Keyword(aKeyword, getCurrentApplicationFilter()));
- mxLocalView->insertItems(aItems, mxCBFolder->get_active()==0, true);
- mxLocalView->Invalidate();
- }
-}
+
void SfxTemplateManagerDlg::SearchUpdate()
{
+ const OUString sSelectedRegion = mxCBFolder->get_active_text();
+ mxLocalView->setCurRegionId(mxLocalView->getRegionId(sSelectedRegion));
OUString aKeyword = mxSearchFilter->get_text();
- if (!aKeyword.isEmpty())
- {
- mxLocalView->Clear();
- std::vector<TemplateItemProperties> aItems =
- mxLocalView->getFilteredItems(SearchView_Keyword(aKeyword, getCurrentApplicationFilter()));
- mxLocalView->insertItems(aItems, mxCBFolder->get_active()==0, true);
- mxLocalView->Invalidate();
- }
- else
- {
- mxLocalView->deselectItems();
- mxLocalView->filterItems(ViewFilter_Application(getCurrentApplicationFilter()));
- mxLocalView->reload();
- OUString sLastFolder = mxCBFolder->get_active_text();
- mxLocalView->showRegion(sLastFolder);
- mxActionBar->set_item_sensitive(MNI_ACTION_RENAME_FOLDER, true);
- }
+ mxLocalView->Clear();
+ std::function<bool(const TemplateItemProperties &)> aFunc =
+ [&](const TemplateItemProperties &rItem)->bool
+ {
+ return aKeyword.isEmpty() || SearchView_Keyword(aKeyword, getCurrentApplicationFilter())(rItem);
+ };
+
+ std::vector<TemplateItemProperties> aItems = mxLocalView->getFilteredItems(aFunc);
+ mxLocalView->insertItems(aItems, mxCBFolder->get_active()!=0, true);
+ mxLocalView->Invalidate();
}
IMPL_LINK_NOARG(SfxTemplateManagerDlg, GetFocusHdl, weld::Widget&, void)
@@ -941,16 +911,6 @@ void SfxTemplateManagerDlg::OnTemplateState (const ThumbnailViewItem *pItem)
}
}
- if(maSelTemplates.empty())
- {
- mxActionBar->set_item_sensitive(MNI_ACTION_MOVE, false);
- mxActionBar->set_item_sensitive(MNI_ACTION_EXPORT, false);
- }
- else
- {
- mxActionBar->set_item_sensitive(MNI_ACTION_MOVE, true);
- mxActionBar->set_item_sensitive(MNI_ACTION_EXPORT, true);
- }
}
void SfxTemplateManagerDlg::OnTemplateImportCategory(std::u16string_view sCategory)
@@ -1161,7 +1121,7 @@ void SfxTemplateManagerDlg::OnCategoryRename()
mxCBFolder->set_active(nPos);
mxLocalView->reload();
- mxLocalView->showRegion(aName);
+ SearchUpdate();
}
else
{
@@ -1201,6 +1161,7 @@ void SfxTemplateManagerDlg::OnCategoryDelete()
mxLocalView->showAllTemplates();
mxCBApp->set_active(0);
mxCBFolder->set_active(0);
+ SearchUpdate();
mxActionBar->set_item_sensitive(MNI_ACTION_RENAME_FOLDER, false);
mxActionBar->set_item_sensitive(MNI_ACTION_DELETE_FOLDER, false);
updateMenuItems();
More information about the Libreoffice-commits
mailing list