Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


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


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.