summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorRafael Dominguez <venccsralph@gmail.com>2012-08-08 18:29:30 -0430
committerRafael Dominguez <venccsralph@gmail.com>2012-08-10 17:12:26 -0430
commitad2844f81c64e312b05784800eb7b2008c83b0a6 (patch)
treea505376af3a3643bc4e22e7472065d48ec197fab /sfx2
parent5d94560309628bcd3f04ef9c815936f45e27b3a0 (diff)
Implement resetting default template.
Change-Id: If781865ad802c411187c5b5cc4ed71a5deaed4f7
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/templatedlg.hxx4
-rw-r--r--sfx2/source/doc/templatedlg.cxx66
-rw-r--r--sfx2/source/doc/templatedlg.hrc4
-rw-r--r--sfx2/source/doc/templatedlg.src5
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";