summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorRafael Dominguez <venccsralph@gmail.com>2013-03-26 23:07:57 -0430
committerMiklos Vajna <vmiklos@suse.cz>2013-04-08 07:37:29 +0000
commit2f489b5f33f746f15258780d284c05a9aefc006e (patch)
treebfae88e89f001b36e5a4e892c63075e44268d8b5 /sfx2
parent951f7341f8449a79dc9e0f3bae5e4d650ecb3314 (diff)
Delete the correct template from the selected search results.
Change-Id: I4a594e3c35d4c68da51421c92247b6687d163fe5 Reviewed-on: https://gerrit.libreoffice.org/3240 Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/sfx2/templatelocalview.hxx2
-rw-r--r--sfx2/source/control/templatelocalview.cxx22
-rw-r--r--sfx2/source/control/templatesearchview.cxx7
-rw-r--r--sfx2/source/doc/templatedlg.cxx90
-rw-r--r--sfx2/source/inc/templatesearchview.hxx2
-rw-r--r--sfx2/source/inc/templatesearchviewitem.hxx3
6 files changed, 62 insertions, 64 deletions
diff --git a/sfx2/inc/sfx2/templatelocalview.hxx b/sfx2/inc/sfx2/templatelocalview.hxx
index 6d6beb1ff635..9dccf517c109 100644
--- a/sfx2/inc/sfx2/templatelocalview.hxx
+++ b/sfx2/inc/sfx2/templatelocalview.hxx
@@ -46,6 +46,8 @@ public:
sal_uInt16 getRegionId (size_t pos) const;
+ OUString getRegionName(const sal_uInt16 nRegionId) const;
+
std::vector<OUString> getFolderNames ();
std::vector<TemplateItemProperties>
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index d435f3d0146f..e7eaa987dc21 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -177,6 +177,11 @@ sal_uInt16 TemplateLocalView::getRegionId(size_t pos) const
return maRegions[pos]->mnId;
}
+OUString TemplateLocalView::getRegionName(const sal_uInt16 nRegionId) const
+{
+ return mpDocTemplates->GetRegionName(nRegionId);
+}
+
std::vector<OUString> TemplateLocalView::getFolderNames()
{
size_t n = maRegions.size();
@@ -193,9 +198,9 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt
{
std::vector<TemplateItemProperties> aItems;
- for (size_t i = 0; i < maRegions.size(); ++i)
+ if (mnCurRegionId)
{
- TemplateContainerItem *pFolderItem = static_cast<TemplateContainerItem*>(maRegions[i]);
+ TemplateContainerItem *pFolderItem = maRegions[mnCurRegionId-1];
for (size_t j = 0; j < pFolderItem->maTemplates.size(); ++j)
{
@@ -203,6 +208,19 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt
aItems.push_back(pFolderItem->maTemplates[j]);
}
}
+ else
+ {
+ for (size_t i = 0; i < maRegions.size(); ++i)
+ {
+ TemplateContainerItem *pFolderItem = maRegions[i];
+
+ for (size_t j = 0; j < pFolderItem->maTemplates.size(); ++j)
+ {
+ if (rFunc(pFolderItem->maTemplates[j]))
+ aItems.push_back(pFolderItem->maTemplates[j]);
+ }
+ }
+ }
return aItems;
}
diff --git a/sfx2/source/control/templatesearchview.cxx b/sfx2/source/control/templatesearchview.cxx
index 775abbc09d4b..eaec8dc1bf76 100644
--- a/sfx2/source/control/templatesearchview.cxx
+++ b/sfx2/source/control/templatesearchview.cxx
@@ -20,14 +20,15 @@ TemplateSearchView::~TemplateSearchView ()
{
}
-void TemplateSearchView::AppendItem(sal_uInt16 nItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx,
+void TemplateSearchView::AppendItem(sal_uInt16 nAssocItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx,
const OUString &rTitle, const OUString &rSubtitle,
const OUString &rPath,
const BitmapEx &rImage)
{
TemplateSearchViewItem *pItem = new TemplateSearchViewItem(*this);
- pItem->mnId = nItemId;
- pItem->mnIdx = nIdx;
+ pItem->mnId = getNextItemId();
+ pItem->mnAssocId = nAssocItemId;
+ pItem->mnDocId = nIdx;
pItem->mnRegionId = nRegionId;
pItem->maPreview1 = rImage;
pItem->maTitle = rTitle;
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 75449d0ddfc2..f5d5bd6b9cbb 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -649,56 +649,47 @@ IMPL_LINK(SfxTemplateManagerDlg, OpenTemplateHdl, ThumbnailViewItem*, pItem)
IMPL_LINK_NOARG(SfxTemplateManagerDlg, SearchUpdateHdl)
{
- // if the search view is hidden, hide the folder view and display search one
- if (!mpCurView->isNonRootRegionVisible() && !mpSearchView->IsVisible())
- {
- mpSearchView->Clear();
- mpSearchView->Show();
- mpCurView->Hide();
- }
-
OUString aKeyword = mpSearchEdit->GetText();
if (!aKeyword.isEmpty())
{
- if (mpCurView->isNonRootRegionVisible())
+ mpSearchView->Clear();
+
+ // if the search view is hidden, hide the folder view and display search one
+ if (!mpSearchView->IsVisible())
{
- mpCurView->filterItems(ViewFilter_Keyword(aKeyword));
+ mpSearchView->Show();
+ mpCurView->Hide();
}
- else
+
+ bool bDisplayFolder = !mpCurView->isNonRootRegionVisible();
+
+ std::vector<TemplateItemProperties> aItems =
+ maView->getFilteredItems(SearchView_Keyword(aKeyword));
+
+ for (size_t i = 0; i < aItems.size(); ++i)
{
- mpSearchView->Clear();
+ TemplateItemProperties *pItem = &aItems[i];
- std::vector<TemplateItemProperties> aItems =
- maView->getFilteredItems(SearchView_Keyword(aKeyword));
+ OUString aFolderName;
- size_t nCounter = 0;
- for (size_t i = 0; i < aItems.size(); ++i)
- {
- TemplateItemProperties *pItem = &aItems[i];
-
- mpSearchView->AppendItem(++nCounter,pItem->nRegionId,
- pItem->nId-1,
- pItem->aName,
- maView->GetItemText(pItem->nRegionId+1),
- pItem->aPath,
- pItem->aThumbnail);
- }
+ if (bDisplayFolder)
+ aFolderName = maView->getRegionName(pItem->nRegionId);
- mpSearchView->Invalidate();
+ mpSearchView->AppendItem(pItem->nId,maView->getRegionId(pItem->nRegionId),
+ pItem->nDocId,
+ pItem->aName,
+ aFolderName,
+ pItem->aPath,
+ pItem->aThumbnail);
}
+
+ mpSearchView->Invalidate();
}
else
{
- if (mpCurView->isNonRootRegionVisible())
- {
- mpCurView->filterItems(ViewFilter_Application(FILTER_APP_NONE));
- }
- else
- {
- mpSearchView->Hide();
- mpCurView->Show();
- }
+ mpSearchView->Hide();
+ mpCurView->Show();
}
return 0;
@@ -905,7 +896,7 @@ void SfxTemplateManagerDlg::OnTemplateExport()
OUString aPath = aPathObj.GetMainURL( INetURLObject::NO_DECODE );
- if (!maView->exportTo(pItem->mnIdx+1,pItem->mnRegionId+1,aPath))
+ if (!maView->exportTo(pItem->mnDocId,pItem->mnRegionId+1,aPath))
{
if (aTemplateList.isEmpty())
aTemplateList = pItem->maTitle;
@@ -1044,37 +1035,24 @@ void SfxTemplateManagerDlg::OnTemplateDelete ()
if (mpSearchView->IsVisible())
{
+ std::set<const ThumbnailViewItem*,selection_cmp_fn> aSelTemplates = maSelTemplates; //Avoids invalid iterators
+
std::set<const ThumbnailViewItem*,selection_cmp_fn>::const_iterator pIter;
- for (pIter = maSelTemplates.begin(); pIter != maSelTemplates.end();)
+ for (pIter = aSelTemplates.begin(); pIter != aSelTemplates.end(); ++pIter)
{
const TemplateSearchViewItem *pItem =
static_cast<const TemplateSearchViewItem*>(*pIter);
- sal_uInt16 nItemId = pItem->mnIdx + 1;
- sal_uInt16 nItemRegionId = pItem->mnRegionId + 1;
-
- if (maView->removeTemplate(nItemId,nItemRegionId))
- maSelTemplates.erase(pIter++);
- else
+ if (!maView->removeTemplate(pItem->mnAssocId,pItem->mnRegionId))
{
if (aTemplateList.isEmpty())
aTemplateList = pItem->maTitle;
else
aTemplateList = aTemplateList + "\n" + pItem->maTitle;
-
- ++pIter;
}
+ else
+ mpSearchView->RemoveItem(pItem->mnId);
}
-
- // Update search results
- if (maSelTemplates.empty())
- {
- mpTemplateBar->Show(false);
- mpViewBar->Show();
- mpActionBar->Show();
- }
-
- SearchUpdateHdl(mpSearchEdit);
}
else
{
diff --git a/sfx2/source/inc/templatesearchview.hxx b/sfx2/source/inc/templatesearchview.hxx
index de5514d620cb..b9ca781114ea 100644
--- a/sfx2/source/inc/templatesearchview.hxx
+++ b/sfx2/source/inc/templatesearchview.hxx
@@ -20,7 +20,7 @@ public:
virtual ~TemplateSearchView();
- void AppendItem(sal_uInt16 nItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx,
+ void AppendItem(sal_uInt16 nAssocItemId, sal_uInt16 nRegionId, sal_uInt16 nIdx,
const OUString &rTitle, const OUString &rSubtitle,
const OUString &rPath, const BitmapEx &rImage );
};
diff --git a/sfx2/source/inc/templatesearchviewitem.hxx b/sfx2/source/inc/templatesearchviewitem.hxx
index 27e393d24571..9d26ac7aeb72 100644
--- a/sfx2/source/inc/templatesearchviewitem.hxx
+++ b/sfx2/source/inc/templatesearchviewitem.hxx
@@ -21,8 +21,7 @@ struct TemplateSearchViewItem : public TemplateViewItem
virtual ~TemplateSearchViewItem ()
{}
- sal_uInt16 mnIdx; // Template associated Index
- sal_uInt16 mnRegionId; // Template associated Region id
+ sal_uInt16 mnAssocId; //Associated item id to the TemplateViews
};
#endif // __SFX2_TEMPLATESEARCHVIEWITEM_HXX__