Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/3257
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/57/3257/1
fdo#60844 Remember last open folder and filter in Template Manager.
Change-Id: I4513428e10aad9b8b5c0d739bd763fb2a1f0bf81
---
M sfx2/inc/sfx2/templatelocalview.hxx
M sfx2/inc/templatedlg.hxx
M sfx2/source/control/templatelocalview.cxx
M sfx2/source/doc/templatedlg.cxx
4 files changed, 104 insertions(+), 3 deletions(-)
diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx
index 8490e37..2e7e400 100644
--- a/sfx2/inc/sfx2/templatelocalview.hxx
+++ b/sfx2/inc/sfx2/templatelocalview.hxx
@@ -42,6 +42,8 @@
virtual void showRegion (ThumbnailViewItem *pItem);
+ void showRegion (const OUString &rName);
+
sal_uInt16 getCurRegionItemId () const;
sal_uInt16 getRegionId (size_t pos) const;
diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index 0156824..343a9ef 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -54,6 +54,10 @@
private:
+ void readSettings ();
+
+ void writeSettings ();
+
virtual void Resize ();
DECL_LINK(TBXViewHdl, void*);
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index 012fdba..7ac7b69 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -159,6 +159,18 @@
maOpenRegionHdl.Call(NULL);
}
+void TemplateLocalView::showRegion(const OUString &rName)
+{
+ for (int i = 0, n = maRegions.size(); i < n; ++i)
+ {
+ if (maRegions[i]->maTitle == rName)
+ {
+ showRegion(maRegions[i]);
+ break;
+ }
+ }
+}
+
sal_uInt16 TemplateLocalView::getCurRegionItemId() const
{
for (size_t i = 0; i < maRegions.size(); ++i)
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 9c81d6d..b091956 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -35,6 +35,7 @@
#include <tools/urlobj.hxx>
#include <unotools/moduleoptions.hxx>
#include <unotools/pathoptions.hxx>
+#include <unotools/viewoptions.hxx>
#include <vcl/edit.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/toolbox.hxx>
@@ -56,6 +57,10 @@
#include "templatedlg.hrc"
#define PADDING_DLG_BORDER 10
+
+#define TM_SETTING_MANAGER "TemplateManager"
+#define TM_SETTING_LASTFOLDER "LastFolder"
+#define TM_SETTING_FILTER "SelectedFilter"
using namespace ::com::sun::star;
using namespace ::com::sun::star::beans;
@@ -250,16 +255,19 @@
createDefaultTemplateMenu();
maView->Populate();
- maView->showRootRegion();
- maView->Show();
-
mpCurView->filterItems(ViewFilter_Application(FILTER_APP_WRITER));
+
+ readSettings();
+
+ maView->Show();
FreeResource();
}
SfxTemplateManagerDlg::~SfxTemplateManagerDlg ()
{
+ writeSettings();
+
// Synchronize the config before deleting it
syncRepositories();
for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
@@ -339,6 +347,81 @@
return 0;
}
+void SfxTemplateManagerDlg::readSettings ()
+{
+ OUString aLastFolder;
+ sal_uInt16 nPageId = FILTER_DOCS;
+ SvtViewOptions aViewSettings( E_DIALOG, TM_SETTING_MANAGER );
+
+ if ( aViewSettings.Exists() )
+ {
+ sal_uInt16 nFilter;
+ aViewSettings.GetUserItem(TM_SETTING_LASTFOLDER) >>= aLastFolder;
+ aViewSettings.GetUserItem(TM_SETTING_FILTER) >>= nFilter;
+
+ switch (nFilter)
+ {
+ case FILTER_APP_WRITER:
+ nPageId = FILTER_DOCS;
+ break;
+ case FILTER_APP_IMPRESS:
+ nPageId = FILTER_PRESENTATIONS;
+ break;
+ case FILTER_APP_CALC:
+ nPageId = FILTER_SHEETS;
+ break;
+ case FILTER_APP_DRAW:
+ nPageId = FILTER_DRAWS;
+ break;
+ }
+ }
+
+ if (!aLastFolder.getLength())
+ maView->showRootRegion();
+ else
+ maView->showRegion(aLastFolder);
+
+ maTabControl.SelectTabPage(nPageId);
+}
+
+void SfxTemplateManagerDlg::writeSettings ()
+{
+ Sequence< NamedValue > aSettings(2);
+
+ OUString aLastFolder;
+
+ if (mpCurView == maView && maView->getCurRegionId())
+ aLastFolder = maView->getRegionName(maView->getCurRegionId()-1);
+
+ // last folder
+ aSettings[0].Name = TM_SETTING_LASTFOLDER;
+ aSettings[0].Value <<= aLastFolder;
+
+ sal_uInt16 nFilter = FILTER_APP_WRITER;
+ switch (maTabControl.GetCurPageId())
+ {
+ case FILTER_DOCS:
+ nFilter = FILTER_APP_WRITER;
+ break;
+ case FILTER_PRESENTATIONS:
+ nFilter = FILTER_APP_IMPRESS;
+ break;
+ case FILTER_SHEETS:
+ nFilter = FILTER_APP_CALC;
+ break;
+ case FILTER_DRAWS:
+ nFilter = FILTER_APP_DRAW;
+ break;
+ }
+
+ aSettings[1].Name = TM_SETTING_FILTER;
+ aSettings[1].Value <<= nFilter;
+
+ // write
+ SvtViewOptions aViewSettings( E_DIALOG, TM_SETTING_MANAGER );
+ aViewSettings.SetUserData( aSettings );
+}
+
void SfxTemplateManagerDlg::Resize()
{
// Fit the tab page control and the toolbars
--
To view, visit https://gerrit.libreoffice.org/3257
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4513428e10aad9b8b5c0d739bd763fb2a1f0bf81
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Rafael Dominguez <venccsralph@gmail.com>
Context
- [PATCH libreoffice-4-0] fdo#60844 Remember last open folder and filter in Template M... · Rafael Dominguez (via Code Review)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.