summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorRafael Dominguez <venccsralph@gmail.com>2012-08-19 14:08:08 -0430
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-08-20 06:40:49 +0200
commit6b697baf5bbfede880e1564111aa92503e4f3102 (patch)
treefee74155f0cad2cf444d8f5c1301e6e088ea0f6e /sfx2
parentc0667d15539c0834ef69dda2267ba29084958658 (diff)
Ask user if it wants to overwrite a template
Change-Id: I4e0aa8938ebd197b4b77767b9930a389569ba98d
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/sfx2/templatelocalview.hxx2
-rw-r--r--sfx2/source/control/templatelocalview.cxx23
-rw-r--r--sfx2/source/doc/templatedlg.cxx25
-rw-r--r--sfx2/source/doc/templatedlg.hrc1
-rw-r--r--sfx2/source/doc/templatedlg.src5
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;