sfx2/inc/sfx2/templatelocalview.hxx | 2 sfx2/inc/templatedlg.hxx | 4 + sfx2/source/control/templatelocalview.cxx | 12 +++ sfx2/source/doc/templatedlg.cxx | 97 ++++++++++++++++++++++++++++-- 4 files changed, 110 insertions(+), 5 deletions(-)
New commits: commit 05a9ca5b8920e2452130b0a327763a2c3f6dfd24 Author: Rafael Dominguez <venccsra...@gmail.com> Date: Thu Mar 28 23:33:59 2013 -0430 fdo#60844 Remember last open folder and filter in Template Manager. Change-Id: I81982af9a540c9966df8c0474b6527c5d08ed6f3 diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx index 2837eca..fe7d50a 100644 --- a/sfx2/inc/sfx2/templatelocalview.hxx +++ b/sfx2/inc/sfx2/templatelocalview.hxx @@ -42,6 +42,8 @@ public: 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 894e70a..d422459 100644 --- a/sfx2/inc/templatedlg.hxx +++ b/sfx2/inc/templatedlg.hxx @@ -55,6 +55,10 @@ public: 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 90f928b..1f867ea 100644 --- a/sfx2/source/control/templatelocalview.cxx +++ b/sfx2/source/control/templatelocalview.cxx @@ -159,6 +159,18 @@ void TemplateLocalView::showRegion(ThumbnailViewItem *pItem) 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 22bc0ed..cfe5b6c 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> @@ -58,6 +59,10 @@ #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; using namespace ::com::sun::star::embed; @@ -251,16 +256,19 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) 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) @@ -340,6 +348,81 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg,ActivatePageHdl) 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 commit 45264d8fd882101912065b9bbb47260fa6db200c Author: Rafael Dominguez <venccsra...@gmail.com> Date: Thu Mar 28 21:40:17 2013 -0430 Position view below toolbox and search bar when resizing Template dialog. Change-Id: Icfafb88218ad10e8729fd966265e1ccc001041e5 diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index f9e1d55..22bc0ed 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -364,11 +364,9 @@ void SfxTemplateManagerDlg::Resize() mpActionBar->SetPosSizePixel(aActionPos,aActionSize); mpTemplateBar->SetSizePixel(aTemplateSize); - // Set view position below toolbox Point aViewPos = maView->GetPosPixel(); aViewPos.setY(nToolbarsHeight); aViewPos.setX(0); - Size aThumbSize(aWinSize.getWidth(), aWinSize.getHeight() - aViewPos.getY()); // Set search box position and size Size aSearchSize = mpSearchEdit->CalcMinimumSize(); @@ -377,6 +375,12 @@ void SfxTemplateManagerDlg::Resize() mpSearchEdit->SetSizePixel(aSearchSize); mpSearchEdit->SetPosPixel(Point(PADDING_DLG_BORDER,aViewPos.Y())); + if (mpSearchEdit->IsVisible()) + aViewPos.setY(aViewPos.getY() + mpSearchEdit->GetSizePixel().getHeight() ); + + // Set view position below toolbox and search box + Size aThumbSize(aWinSize.getWidth(), aWinSize.getHeight() - aViewPos.getY()); + maView->SetPosSizePixel(aViewPos,aThumbSize); mpOnlineView->SetPosSizePixel(aViewPos,aThumbSize); mpSearchView->SetPosSizePixel(aViewPos,aThumbSize); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits