diff options
author | Rafael Dominguez <venccsralph@gmail.com> | 2012-08-08 18:29:30 -0430 |
---|---|---|
committer | Rafael Dominguez <venccsralph@gmail.com> | 2012-08-10 17:12:26 -0430 |
commit | ad2844f81c64e312b05784800eb7b2008c83b0a6 (patch) | |
tree | a505376af3a3643bc4e22e7472065d48ec197fab /sfx2 | |
parent | 5d94560309628bcd3f04ef9c815936f45e27b3a0 (diff) |
Implement resetting default template.
Change-Id: If781865ad802c411187c5b5cc4ed71a5deaed4f7
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/inc/templatedlg.hxx | 4 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.cxx | 66 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.hrc | 4 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.src | 5 |
4 files changed, 79 insertions, 0 deletions
diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx index 46b9b3e502df..91bc0bec48b2 100644 --- a/sfx2/inc/templatedlg.hxx +++ b/sfx2/inc/templatedlg.hxx @@ -65,6 +65,7 @@ private: DECL_LINK(MenuSelectHdl, Menu*); DECL_LINK(MoveMenuSelectHdl, Menu*); DECL_LINK(RepositoryMenuSelectHdl, Menu*); + DECL_LINK(DefaultTemplateMenuSelectHdl, Menu*); DECL_LINK(OpenTemplateHdl, ThumbnailViewItem*); @@ -83,6 +84,8 @@ private: void createRepositoryMenu (); + void createDefaultTemplateMenu (); + // Exchange view between local/online view. void switchMainView (bool bDisplayLocal); @@ -124,6 +127,7 @@ private: TemplateOnlineView *mpOnlineView; PopupMenu *mpActionMenu; PopupMenu *mpRepositoryMenu; + PopupMenu *mpTemplateDefaultMenu; int mnSelectionCount; std::set<const ThumbnailViewItem*> maSelTemplates; diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 0fab68bf7973..bf3aee6f4e20 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -27,6 +27,7 @@ #include <sfx2/templateviewitem.hxx> #include <sfx2/thumbnailviewitem.hxx> #include <sot/storage.hxx> +#include <svtools/imagemgr.hxx> #include <svtools/PlaceEditDialog.hxx> #include <tools/urlobj.hxx> #include <unotools/moduleoptions.hxx> @@ -68,6 +69,8 @@ void lcl_createTemplate(uno::Reference<XComponentLoader> xDesktop, const FILTER_ bool lcl_getServiceName (const OUString &rFileURL, OUString &rName ); +std::vector<OUString> lcl_getAllFactoryURLs (); + // Sort by name in ascending order class SortView_Name { @@ -122,11 +125,16 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) mpActionMenu = new PopupMenu; mpActionMenu->InsertItem(MNI_ACTION_SORT_NAME,SfxResId(STR_ACTION_SORT_NAME).toString(),SfxResId(IMG_ACTION_SORT)); mpActionMenu->InsertItem(MNI_ACTION_REFRESH,SfxResId(STR_ACTION_REFRESH).toString(),SfxResId(IMG_ACTION_REFRESH)); + mpActionMenu->InsertItem(MNI_ACTION_DEFAULT,SfxResId(STR_ACTION_DEFAULT).toString()); mpActionMenu->SetSelectHdl(LINK(this,SfxTemplateManagerDlg,MenuSelectHdl)); mpRepositoryMenu = new PopupMenu; mpRepositoryMenu->SetSelectHdl(LINK(this,SfxTemplateManagerDlg,RepositoryMenuSelectHdl)); + mpTemplateDefaultMenu = new PopupMenu; + mpTemplateDefaultMenu->SetSelectHdl(LINK(this,SfxTemplateManagerDlg,DefaultTemplateMenuSelectHdl)); + mpActionMenu->SetPopupMenu(MNI_ACTION_DEFAULT,mpTemplateDefaultMenu); + Size aWinSize = GetOutputSize(); // Calculate thumbnail view minimum size @@ -252,6 +260,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) mpOnlineView->Populate(); createRepositoryMenu(); + createDefaultTemplateMenu(); maView->Populate(); maView->Show(); @@ -272,6 +281,7 @@ SfxTemplateManagerDlg::~SfxTemplateManagerDlg () delete mpOnlineView; delete mpActionMenu; delete mpRepositoryMenu; + delete mpTemplateDefaultMenu; } IMPL_LINK_NOARG(SfxTemplateManagerDlg,ViewAllHdl) @@ -602,6 +612,18 @@ IMPL_LINK(SfxTemplateManagerDlg, RepositoryMenuSelectHdl, Menu*, pMenu) return 0; } +IMPL_LINK(SfxTemplateManagerDlg, DefaultTemplateMenuSelectHdl, Menu*, pMenu) +{ + sal_uInt16 nId = pMenu->GetCurItemId(); + + OUString aServiceName = SfxObjectShell::GetServiceNameFromFactory( mpTemplateDefaultMenu->GetItemCommand(nId)); + SfxObjectFactory::SetStandardTemplate( aServiceName, OUString() ); + + createDefaultTemplateMenu(); + + return 0; +} + IMPL_LINK(SfxTemplateManagerDlg, OpenTemplateHdl, ThumbnailViewItem*, pItem) { uno::Sequence< PropertyValue > aArgs(1); @@ -882,6 +904,8 @@ void SfxTemplateManagerDlg::OnTemplateAsDefault () if (lcl_getServiceName(pItem->getPath(),aServiceName)) { SfxObjectFactory::SetStandardTemplate(aServiceName,pItem->getPath()); + + createDefaultTemplateMenu(); } } @@ -959,6 +983,29 @@ void SfxTemplateManagerDlg::createRepositoryMenu() mpRepositoryMenu->InsertItem(MNI_REPOSITORY_NEW,SfxResId(STR_REPOSITORY_NEW).toString()); } +void SfxTemplateManagerDlg::createDefaultTemplateMenu () +{ + std::vector<OUString> aList = lcl_getAllFactoryURLs(); + + if (!aList.empty()) + { + mpTemplateDefaultMenu->Clear(); + + sal_uInt16 nItemId = MNI_ACTION_DEFAULT + 1; + for( std::vector<OUString>::const_iterator i = aList.begin(); i != aList.end(); ++i ) + { + INetURLObject aObj(*i); + OUString aTitle = SvFileInformationManager::GetDescription(aObj); + mpTemplateDefaultMenu->InsertItem(nItemId, aTitle, SvFileInformationManager::GetImage(aObj, false)); + mpTemplateDefaultMenu->SetItemCommand(nItemId++, *i); + } + + mpActionMenu->ShowItem(MNI_ACTION_DEFAULT); + } + else + mpActionMenu->HideItem(MNI_ACTION_DEFAULT); +} + void SfxTemplateManagerDlg::switchMainView(bool bDisplayLocal) { if (bDisplayLocal) @@ -1131,4 +1178,23 @@ bool lcl_getServiceName ( const OUString &rFileURL, OUString &rName ) return bRet; } +std::vector<OUString> lcl_getAllFactoryURLs () +{ + SvtModuleOptions aModOpt; + std::vector<OUString> aList; + const ::com::sun::star::uno::Sequence<OUString> &aServiceNames = aModOpt.GetAllServiceNames(); + + for( sal_Int32 i=0, nCount = aServiceNames.getLength(); i < nCount; ++i ) + { + if ( SfxObjectFactory::GetStandardTemplate( aServiceNames[i] ).Len() > 0 ) + { + SvtModuleOptions::EFactory eFac = SvtModuleOptions::E_WRITER; + SvtModuleOptions::ClassifyFactoryByName( aServiceNames[i], eFac ); + aList.push_back(aModOpt.GetFactoryEmptyDocumentURL(eFac)); + } + } + + return aList; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc index beb3f70ff82f..af9b137827e1 100644 --- a/sfx2/source/doc/templatedlg.hrc +++ b/sfx2/source/doc/templatedlg.hrc @@ -37,6 +37,8 @@ #define TBI_TEMPLATE_FOLDER_DEL 25 #define TBI_TEMPLATE_REPOSITORY 26 +#define MNI_ACTION_DEFAULT 27 + #define STR_ACTION_REFRESH 263 #define STR_ACTION_SORT_NAME 264 @@ -53,5 +55,7 @@ #define MNI_REPOSITORY_NEW 275 #define MNI_REPOSITORY_BASE 276 +#define STR_ACTION_DEFAULT 277 + #define IMG_ACTION_SORT 304 #define IMG_ACTION_REFRESH 305 diff --git a/sfx2/source/doc/templatedlg.src b/sfx2/source/doc/templatedlg.src index 7d06f161f75e..0b59c6be41e3 100644 --- a/sfx2/source/doc/templatedlg.src +++ b/sfx2/source/doc/templatedlg.src @@ -20,6 +20,11 @@ String STR_ACTION_REFRESH Text [ en-US ] = "Refresh"; }; +String STR_ACTION_DEFAULT +{ + Text [ en-US ] = "Reset Default Template "; /* leave ending space */ +}; + String STR_MOVE_NEW { Text [ en-US ] = "New folder"; |