[Libreoffice-commits] .: 3 commits - sfx2/inc sfx2/source
Rafael Dominguez
rdominguez at kemper.freedesktop.org
Sun Aug 12 12:08:31 PDT 2012
sfx2/inc/sfx2/templateabstractview.hxx | 4 +
sfx2/inc/sfx2/templateonlineview.hxx | 2
sfx2/source/control/templateabstractview.cxx | 12 +++
sfx2/source/control/templateonlineview.cxx | 9 ++
sfx2/source/doc/templatedlg.cxx | 96 +++++++++++++++++++++++++--
sfx2/source/doc/templatedlg.hrc | 7 +
sfx2/source/doc/templatedlg.src | 30 ++++++++
7 files changed, 154 insertions(+), 6 deletions(-)
New commits:
commit c49fbe94d4f704ea0c574047e9b6cc03992835b4
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sun Aug 12 13:32:12 2012 -0430
Dont let user create a repository with a duplicated name.
Change-Id: I4175515b72f0e9aac8e4cf2905757381539cab1e
diff --git a/sfx2/inc/sfx2/templateonlineview.hxx b/sfx2/inc/sfx2/templateonlineview.hxx
index 0d88d0b..78f6233 100644
--- a/sfx2/inc/sfx2/templateonlineview.hxx
+++ b/sfx2/inc/sfx2/templateonlineview.hxx
@@ -40,7 +40,7 @@ public:
const std::vector<TemplateOnlineViewItem*>& getRepositories () const { return maRepositories; }
- void insertRepository (const OUString &rName, const OUString &rURL);
+ bool insertRepository (const OUString &rName, const OUString &rURL);
bool deleteRepository (const sal_uInt16 nRepositoryId);
diff --git a/sfx2/source/control/templateonlineview.cxx b/sfx2/source/control/templateonlineview.cxx
index 2133752..de74ab5 100644
--- a/sfx2/source/control/templateonlineview.cxx
+++ b/sfx2/source/control/templateonlineview.cxx
@@ -259,8 +259,14 @@ bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId, bool bR
return true;
}
-void TemplateOnlineView::insertRepository(const OUString &rName, const OUString &rURL)
+bool TemplateOnlineView::insertRepository(const OUString &rName, const OUString &rURL)
{
+ for (size_t i = 0, n = maRepositories.size(); i < n; ++i)
+ {
+ if (maRepositories[i]->maTitle == rName)
+ return false;
+ }
+
TemplateOnlineViewItem *pItem = new TemplateOnlineViewItem(*this,this);
pItem->mnId = maRepositories.size()+1;
@@ -270,6 +276,7 @@ void TemplateOnlineView::insertRepository(const OUString &rName, const OUString
maRepositories.push_back(pItem);
mbIsSynced = false;
+ return true;
}
bool TemplateOnlineView::deleteRepository(const sal_uInt16 nRepositoryId)
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index a025427..b0461e7 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -583,10 +583,17 @@ IMPL_LINK(SfxTemplateManagerDlg, RepositoryMenuSelectHdl, Menu*, pMenu)
{
boost::shared_ptr<Place> pPlace = dlg.GetPlace();
- mpOnlineView->insertRepository(pPlace->GetName(),pPlace->GetUrl());
-
- // update repository list menu.
- createRepositoryMenu();
+ if (mpOnlineView->insertRepository(pPlace->GetName(),pPlace->GetUrl()))
+ {
+ // update repository list menu.
+ createRepositoryMenu();
+ }
+ else
+ {
+ OUString aMsg(SfxResId(STR_MSG_ERROR_REPOSITORY_NAME).toString());
+ aMsg = aMsg.replaceFirst("$1",pPlace->GetName());
+ ErrorBox(this,WB_OK,aMsg).Execute();
+ }
}
}
else
diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc
index a5d361e..0b82219 100644
--- a/sfx2/source/doc/templatedlg.hrc
+++ b/sfx2/source/doc/templatedlg.hrc
@@ -61,6 +61,7 @@
#define STR_MSG_ERROR_EXPORT 281
#define STR_MSG_ERROR_DELETE_TEMPLATE 282
#define STR_MSG_ERROR_DELETE_FOLDER 283
+#define STR_MSG_ERROR_REPOSITORY_NAME 284
#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 c0bc39c..9024851 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -70,6 +70,11 @@ String STR_MSG_ERROR_DELETE_FOLDER
Text [ en-US ] = "The following folders cannot be deleted:\n$1";
};
+String STR_MSG_ERROR_REPOSITORY_NAME
+{
+ Text [ en-US ] = "Failed to create repository \"$1\".\nA repository with this name may already exist.";
+};
+
ModelessDialog DLG_TEMPLATE_MANAGER
{
OutputSize = TRUE;
commit 26502c4f51a22e2aaea25c10d484b1c163c4f004
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sun Aug 12 12:16:25 2012 -0430
Display error message for failed operations with templates.
- Move, export and delete templates.
- Delete template folder.
Change-Id: I0c9f5ad299182ce0038695d78eb2e5e09afee1c5
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index bc83ecf..a025427 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -788,6 +788,7 @@ void SfxTemplateManagerDlg::OnTemplateExport()
if( nResult == ExecutableDialogResults::OK )
{
+ OUString aTemplateList;
INetURLObject aPathObj(xFolderPicker->getDirectory());
aPathObj.setFinalSlash();
@@ -811,6 +812,10 @@ void SfxTemplateManagerDlg::OnTemplateExport()
if (!maView->exportTo(pItem->mnIdx+1,pItem->mnRegionId+1,aPath))
{
+ if (aTemplateList.isEmpty())
+ aTemplateList = pItem->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + pItem->maTitle;
}
}
@@ -839,11 +844,21 @@ void SfxTemplateManagerDlg::OnTemplateExport()
if (!maView->exportTo(pItem->mnId,nRegionItemId,aPath))
{
+ if (aTemplateList.isEmpty())
+ aTemplateList = pItem->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + pItem->maTitle;
}
}
maView->deselectOverlayItems();
}
+
+ if (!aTemplateList.isEmpty())
+ {
+ OUString aText( SfxResId(STR_MSG_ERROR_EXPORT).toString() );
+ ErrorBox(this, WB_OK,aText.replaceFirst("$1",aTemplateList)).Execute();
+ }
}
}
@@ -919,6 +934,8 @@ void SfxTemplateManagerDlg::OnTemplateProperties ()
void SfxTemplateManagerDlg::OnTemplateDelete ()
{
+ OUString aTemplateList;
+
if (mpSearchView->IsVisible())
{
std::set<const ThumbnailViewItem*>::const_iterator pIter;
@@ -933,7 +950,14 @@ void SfxTemplateManagerDlg::OnTemplateDelete ()
if (maView->removeTemplate(nItemId,nItemRegionId))
maSelTemplates.erase(pIter++);
else
+ {
+ if (aTemplateList.isEmpty())
+ aTemplateList = pItem->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + pItem->maTitle;
+
++pIter;
+ }
}
// Update search results
@@ -954,7 +978,14 @@ void SfxTemplateManagerDlg::OnTemplateDelete ()
if (maView->removeTemplate((*pIter)->mnId,maView->getOverlayRegionId()+1))
maSelTemplates.erase(pIter++);
else
+ {
+ if (aTemplateList.isEmpty())
+ aTemplateList = (*pIter)->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + (*pIter)->maTitle;
+
++pIter;
+ }
}
if (maSelTemplates.empty())
@@ -965,6 +996,12 @@ void SfxTemplateManagerDlg::OnTemplateDelete ()
mpActionBar->Show();
}
}
+
+ if (!aTemplateList.isEmpty())
+ {
+ OUString aMsg( SfxResId(STR_MSG_ERROR_DELETE_TEMPLATE).toString() );
+ ErrorBox(this, WB_OK,aMsg.replaceFirst("$1",aTemplateList)).Execute();
+ }
}
void SfxTemplateManagerDlg::OnTemplateAsDefault ()
@@ -987,13 +1024,22 @@ void SfxTemplateManagerDlg::OnTemplateAsDefault ()
void SfxTemplateManagerDlg::OnFolderDelete()
{
+ OUString aFolderList;
+
std::set<const ThumbnailViewItem*>::const_iterator pIter;
for (pIter = maSelFolders.begin(); pIter != maSelFolders.end();)
{
if (maView->removeRegion((*pIter)->mnId))
maSelFolders.erase(pIter++);
else
+ {
+ if (aFolderList.isEmpty())
+ aFolderList = (*pIter)->maTitle;
+ else
+ aFolderList = aFolderList + "\n" + (*pIter)->maTitle;
+
++pIter;
+ }
}
if (maSelFolders.empty())
@@ -1001,6 +1047,12 @@ void SfxTemplateManagerDlg::OnFolderDelete()
mpViewBar->HideItem(TBI_TEMPLATE_IMPORT);
mpViewBar->HideItem(TBI_TEMPLATE_FOLDER_DEL);
}
+
+ if (!aFolderList.isEmpty())
+ {
+ OUString aMsg( SfxResId(STR_MSG_ERROR_DELETE_FOLDER).toString() );
+ ErrorBox(this, WB_OK,aMsg.replaceFirst("$1",aFolderList)).Execute();
+ }
}
void SfxTemplateManagerDlg::OnRepositoryDelete()
@@ -1140,6 +1192,21 @@ void SfxTemplateManagerDlg::localMoveTo(sal_uInt16 nMenuId)
if (!maView->moveTemplates(maSelTemplates,nItemId,false) &&
!maView->moveTemplates(maSelTemplates,nItemId,true))
{
+ OUString aTemplateList;
+
+ std::set<const ThumbnailViewItem*>::const_iterator pIter;
+ for (pIter = maSelFolders.begin(); pIter != maSelFolders.end(); ++pIter)
+ {
+ if (aTemplateList.isEmpty())
+ aTemplateList = (*pIter)->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + (*pIter)->maTitle;
+ }
+
+ OUString aDst = maView->GetItemText(nItemId);
+ OUString aMsg(SfxResId(STR_MSG_ERROR_LOCAL_MOVE).toString());
+ aMsg = aMsg.replaceFirst("$1",aDst);
+ ErrorBox(this, WB_OK,aMsg.replaceFirst( "$2",aTemplateList)).Execute();
}
}
}
@@ -1207,6 +1274,8 @@ void SfxTemplateManagerDlg::localSearchMoveTo(sal_uInt16 nMenuId)
if (nItemId)
{
+ OUString aTemplateList;
+
// Move templates to desired folder if for some reason move fails
// try copying them.
std::set<const ThumbnailViewItem*>::const_iterator aIter;
@@ -1218,8 +1287,20 @@ void SfxTemplateManagerDlg::localSearchMoveTo(sal_uInt16 nMenuId)
if(!maView->moveTemplate(pItem,pItem->mnRegionId+1,nItemId,false)
&& !maView->moveTemplate(pItem,pItem->mnRegionId+1,nItemId,true))
{
+ if (aTemplateList.isEmpty())
+ aTemplateList = (*aIter)->maTitle;
+ else
+ aTemplateList = aTemplateList + "\n" + (*aIter)->maTitle;
}
}
+
+ if (!aTemplateList.isEmpty())
+ {
+ OUString aDst = maView->GetItemText(nItemId);
+ OUString aMsg(SfxResId(STR_MSG_ERROR_LOCAL_MOVE).toString());
+ aMsg = aMsg.replaceFirst("$1",aDst);
+ ErrorBox(this, WB_OK,aMsg.replaceFirst( "$2",aTemplateList)).Execute();
+ }
}
// Deselect all items and update search results
diff --git a/sfx2/source/doc/templatedlg.hrc b/sfx2/source/doc/templatedlg.hrc
index 9bdedae..a5d361e 100644
--- a/sfx2/source/doc/templatedlg.hrc
+++ b/sfx2/source/doc/templatedlg.hrc
@@ -55,6 +55,12 @@
#define MNI_REPOSITORY_BASE 276
#define STR_ACTION_DEFAULT 277
+#define STR_MSG_ERROR_LOCAL_MOVE 278
+#define STR_MSG_ERROR_REMOTE_MOVE 279
+#define STR_MSG_ERROR_IMPORT 280
+#define STR_MSG_ERROR_EXPORT 281
+#define STR_MSG_ERROR_DELETE_TEMPLATE 282
+#define STR_MSG_ERROR_DELETE_FOLDER 283
#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 900b481..c0bc39c 100644
--- a/sfx2/source/doc/templatedlg.src
+++ b/sfx2/source/doc/templatedlg.src
@@ -45,6 +45,31 @@ String STR_REPOSITORY_NEW
Text [ en-US ] = "New Repository";
};
+String STR_MSG_ERROR_LOCAL_MOVE
+{
+ Text [ en-US ] = "Error moving the following templates to $1.\n$2" ;
+};
+
+String STR_MSG_ERROR_REMOTE_MOVE
+{
+ Text [ en-US ] = "Error moving the following templates from repository $1 to folder $2.\n$3" ;
+};
+
+String STR_MSG_ERROR_EXPORT
+{
+ Text [ en-US ] = "Error exporting the following templates:\n$1";
+};
+
+String STR_MSG_ERROR_DELETE_TEMPLATE
+{
+ Text [ en-US ] = "The following templates cannot be deleted:\n$1";
+};
+
+String STR_MSG_ERROR_DELETE_FOLDER
+{
+ Text [ en-US ] = "The following folders cannot be deleted:\n$1";
+};
+
ModelessDialog DLG_TEMPLATE_MANAGER
{
OutputSize = TRUE;
commit 0670dc3f6017530bd0583e9947c071cd7640109b
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Sat Aug 11 22:36:52 2012 -0430
Perform template view paint operation when overlay is hidden.
Change-Id: Iff0bb308fea93fe12cba030becae3da1ca5f1a96
diff --git a/sfx2/inc/sfx2/templateabstractview.hxx b/sfx2/inc/sfx2/templateabstractview.hxx
index 9bd7594..24edcd7 100644
--- a/sfx2/inc/sfx2/templateabstractview.hxx
+++ b/sfx2/inc/sfx2/templateabstractview.hxx
@@ -102,6 +102,10 @@ protected:
virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
+
+ virtual void DrawItem (ThumbnailViewItem *pItem);
+
virtual void OnSelectionMode (bool bMode);
DECL_LINK(OverlayItemStateHdl, const ThumbnailViewItem*);
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index 375012a..4ce28f6 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -243,6 +243,18 @@ void TemplateAbstractView::Resize()
mpItemView->SetSizePixel(GetSizePixel());
}
+void TemplateAbstractView::Paint(const Rectangle &rRect)
+{
+ if (!mpItemView->IsVisible())
+ ThumbnailView::Paint(rRect);
+}
+
+void TemplateAbstractView::DrawItem(ThumbnailViewItem *pItem)
+{
+ if (!mpItemView->IsVisible())
+ ThumbnailView::DrawItem(pItem);
+}
+
void TemplateAbstractView::OnSelectionMode (bool bMode)
{
if (mpItemView->IsVisible())
More information about the Libreoffice-commits
mailing list