diff options
author | Rafael Dominguez <venccsralph@gmail.com> | 2012-08-19 14:08:08 -0430 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2012-08-20 06:40:49 +0200 |
commit | 6b697baf5bbfede880e1564111aa92503e4f3102 (patch) | |
tree | fee74155f0cad2cf444d8f5c1301e6e088ea0f6e /sfx2 | |
parent | c0667d15539c0834ef69dda2267ba29084958658 (diff) |
Ask user if it wants to overwrite a template
Change-Id: I4e0aa8938ebd197b4b77767b9930a389569ba98d
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/inc/sfx2/templatelocalview.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/control/templatelocalview.cxx | 23 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.cxx | 25 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.hrc | 1 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.src | 5 |
5 files changed, 55 insertions, 1 deletions
diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx index 03c4558943e2..268ca8e061ee 100644 --- a/sfx2/inc/sfx2/templatelocalview.hxx +++ b/sfx2/inc/sfx2/templatelocalview.hxx @@ -71,6 +71,8 @@ public: com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rModel, const OUString &rName); + bool isTemplateNameUnique (const sal_uInt16 nRegionItemId, const OUString &rName) const; + private: virtual void OnItemDblClicked (ThumbnailViewItem *pRegionItem); diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx index 89704b402f95..79e382f13dee 100644 --- a/sfx2/source/control/templatelocalview.cxx +++ b/sfx2/source/control/templatelocalview.cxx @@ -679,6 +679,29 @@ bool TemplateLocalView::saveTemplateAs(const TemplateLocalViewItem *pDstItem, return true; } +bool TemplateLocalView::isTemplateNameUnique(const sal_uInt16 nRegionItemId, const OUString &rName) const +{ + for (size_t i = 0, n = mItemList.size(); i < n; ++i) + { + if (mItemList[i]->mnId == nRegionItemId) + { + TemplateLocalViewItem *pRegItem = + static_cast<TemplateLocalViewItem*>(mItemList[i]); + + std::vector<TemplateItemProperties>::iterator aIter; + for (aIter = pRegItem->maTemplates.begin(); aIter != pRegItem->maTemplates.end(); ++aIter) + { + if (aIter->aName == rName) + return false; + } + + break; + } + } + + return true; +} + void TemplateLocalView::OnItemDblClicked (ThumbnailViewItem *pRegionItem) { // Fill templates diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 0422e3657422..fa37e3dd70bf 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -1156,10 +1156,23 @@ void SfxTemplateManagerDlg::OnTemplateSaveAs() if (!aName.isEmpty()) { OUString aFolderList; + OUString aQMsg(SfxResId(STR_QMSG_TEMPLATE_OVERWRITE).toString()); + QueryBox aQueryDlg(this,WB_YES_NO | WB_DEF_YES, OUString()); if (maView->isOverlayVisible()) { - if (!maView->saveTemplateAs(maView->getOverlayRegionId()+1,m_xModel,aName)) + sal_uInt16 nRegionItemId = maView->getOverlayRegionId()+1; + + if (!maView->isTemplateNameUnique(nRegionItemId,aName)) + { + aQMsg = aQMsg.replaceFirst("$1",aName); + aQueryDlg.SetMessText(aQMsg.replaceFirst("$2",maView->getOverlayName())); + + if (aQueryDlg.Execute() == RET_NO) + return; + } + + if (!maView->saveTemplateAs(nRegionItemId,m_xModel,aName)) aFolderList = maView->getOverlayName(); } else @@ -1168,6 +1181,16 @@ void SfxTemplateManagerDlg::OnTemplateSaveAs() for (pIter = maSelFolders.begin(); pIter != maSelFolders.end(); ++pIter) { TemplateLocalViewItem *pItem = (TemplateLocalViewItem*)(*pIter); + + if (!maView->isTemplateNameUnique(pItem->mnId,aName)) + { + OUString aDQMsg = aQMsg.replaceFirst("$1",aName); + aQueryDlg.SetMessText(aDQMsg.replaceFirst("$2",pItem->maTitle)); + + if (aQueryDlg.Execute() == RET_NO) + continue; + } + if (!maView->saveTemplateAs(pItem,m_xModel,aName)) { if (aFolderList.isEmpty()) diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc index 567665404ee4..aced42ae5466 100644 --- a/sfx2/source/doc/templatedlg.hrc +++ b/sfx2/source/doc/templatedlg.hrc @@ -70,6 +70,7 @@ #define STR_INPUT_TEMPLATE_NEW 288 #define STR_QMSG_SEL_FOLDER_DELETE 289 +#define STR_QMSG_TEMPLATE_OVERWRITE 290 #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 c0ddde8f2316..409847218eed 100644 --- a/sfx2/source/doc/templatedlg.src +++ b/sfx2/source/doc/templatedlg.src @@ -95,6 +95,11 @@ String STR_QMSG_SEL_FOLDER_DELETE Text [ en-US ] = "Do you want to delete the selected folders?"; }; +String STR_QMSG_TEMPLATE_OVERWRITE +{ + Text [ en-US ] = "A template named $1 already exist in $2. Do you want to overwrite it?"; +}; + ModelessDialog DLG_TEMPLATE_MANAGER { OutputSize = TRUE; |