Kaydet (Commit) 7ae8cf64 authored tarafından Rafael Dominguez's avatar Rafael Dominguez Kaydeden (comit) Bosdonnat Cedric

Delete the correct template from the selected search results.

Change-Id: I2fe82b20e9b4a78abbbb3e8e587a5720054f845d
Reviewed-on: https://gerrit.libreoffice.org/3077Reviewed-by: 's avatarBosdonnat Cedric <cedric.bosdonnat@free.fr>
Tested-by: 's avatarBosdonnat Cedric <cedric.bosdonnat@free.fr>
üst 439db93b
...@@ -46,6 +46,8 @@ public: ...@@ -46,6 +46,8 @@ public:
sal_uInt16 getRegionId (size_t pos) const; sal_uInt16 getRegionId (size_t pos) const;
OUString getRegionName(const sal_uInt16 nRegionId) const;
std::vector<OUString> getFolderNames (); std::vector<OUString> getFolderNames ();
std::vector<TemplateItemProperties> std::vector<TemplateItemProperties>
......
...@@ -177,6 +177,11 @@ sal_uInt16 TemplateLocalView::getRegionId(size_t pos) const ...@@ -177,6 +177,11 @@ sal_uInt16 TemplateLocalView::getRegionId(size_t pos) const
return maRegions[pos]->mnId; return maRegions[pos]->mnId;
} }
OUString TemplateLocalView::getRegionName(const sal_uInt16 nRegionId) const
{
return mpDocTemplates->GetRegionName(nRegionId);
}
std::vector<OUString> TemplateLocalView::getFolderNames() std::vector<OUString> TemplateLocalView::getFolderNames()
{ {
size_t n = maRegions.size(); size_t n = maRegions.size();
...@@ -193,9 +198,9 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt ...@@ -193,9 +198,9 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt
{ {
std::vector<TemplateItemProperties> aItems; 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) for (size_t j = 0; j < pFolderItem->maTemplates.size(); ++j)
{ {
...@@ -203,6 +208,19 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt ...@@ -203,6 +208,19 @@ TemplateLocalView::getFilteredItems(const boost::function<bool (const TemplateIt
aItems.push_back(pFolderItem->maTemplates[j]); 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; return aItems;
} }
......
...@@ -20,14 +20,15 @@ TemplateSearchView::~TemplateSearchView () ...@@ -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 &rTitle, const OUString &rSubtitle,
const OUString &rPath, const OUString &rPath,
const BitmapEx &rImage) const BitmapEx &rImage)
{ {
TemplateSearchViewItem *pItem = new TemplateSearchViewItem(*this); TemplateSearchViewItem *pItem = new TemplateSearchViewItem(*this);
pItem->mnId = nItemId; pItem->mnId = getNextItemId();
pItem->mnIdx = nIdx; pItem->mnAssocId = nAssocItemId;
pItem->mnDocId = nIdx;
pItem->mnRegionId = nRegionId; pItem->mnRegionId = nRegionId;
pItem->maPreview1 = rImage; pItem->maPreview1 = rImage;
pItem->maTitle = rTitle; pItem->maTitle = rTitle;
......
...@@ -653,56 +653,47 @@ IMPL_LINK(SfxTemplateManagerDlg, OpenTemplateHdl, ThumbnailViewItem*, pItem) ...@@ -653,56 +653,47 @@ IMPL_LINK(SfxTemplateManagerDlg, OpenTemplateHdl, ThumbnailViewItem*, pItem)
IMPL_LINK_NOARG(SfxTemplateManagerDlg, SearchUpdateHdl) 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(); OUString aKeyword = mpSearchEdit->GetText();
if (!aKeyword.isEmpty()) 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 = OUString aFolderName;
maView->getFilteredItems(SearchView_Keyword(aKeyword));
size_t nCounter = 0; if (bDisplayFolder)
for (size_t i = 0; i < aItems.size(); ++i) aFolderName = maView->getRegionName(pItem->nRegionId);
{
TemplateItemProperties *pItem = &aItems[i];
mpSearchView->AppendItem(++nCounter,pItem->nRegionId,
pItem->nId-1,
pItem->aName,
maView->GetItemText(pItem->nRegionId+1),
pItem->aPath,
pItem->aThumbnail);
}
mpSearchView->Invalidate(); mpSearchView->AppendItem(pItem->nId,maView->getRegionId(pItem->nRegionId),
pItem->nDocId,
pItem->aName,
aFolderName,
pItem->aPath,
pItem->aThumbnail);
} }
mpSearchView->Invalidate();
} }
else else
{ {
if (mpCurView->isNonRootRegionVisible()) mpSearchView->Hide();
{ mpCurView->Show();
mpCurView->filterItems(ViewFilter_Application(FILTER_APP_NONE));
}
else
{
mpSearchView->Hide();
mpCurView->Show();
}
} }
return 0; return 0;
...@@ -909,7 +900,7 @@ void SfxTemplateManagerDlg::OnTemplateExport() ...@@ -909,7 +900,7 @@ void SfxTemplateManagerDlg::OnTemplateExport()
OUString aPath = aPathObj.GetMainURL( INetURLObject::NO_DECODE ); 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()) if (aTemplateList.isEmpty())
aTemplateList = pItem->maTitle; aTemplateList = pItem->maTitle;
...@@ -1053,37 +1044,24 @@ void SfxTemplateManagerDlg::OnTemplateDelete () ...@@ -1053,37 +1044,24 @@ void SfxTemplateManagerDlg::OnTemplateDelete ()
if (mpSearchView->IsVisible()) 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; 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 = const TemplateSearchViewItem *pItem =
static_cast<const TemplateSearchViewItem*>(*pIter); static_cast<const TemplateSearchViewItem*>(*pIter);
sal_uInt16 nItemId = pItem->mnIdx + 1; if (!maView->removeTemplate(pItem->mnAssocId,pItem->mnRegionId))
sal_uInt16 nItemRegionId = pItem->mnRegionId + 1;
if (maView->removeTemplate(nItemId,nItemRegionId))
maSelTemplates.erase(pIter++);
else
{ {
if (aTemplateList.isEmpty()) if (aTemplateList.isEmpty())
aTemplateList = pItem->maTitle; aTemplateList = pItem->maTitle;
else else
aTemplateList = aTemplateList + "\n" + pItem->maTitle; 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 else
{ {
......
...@@ -20,7 +20,7 @@ public: ...@@ -20,7 +20,7 @@ public:
virtual ~TemplateSearchView(); 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 &rTitle, const OUString &rSubtitle,
const OUString &rPath, const BitmapEx &rImage ); const OUString &rPath, const BitmapEx &rImage );
}; };
......
...@@ -21,8 +21,7 @@ struct TemplateSearchViewItem : public TemplateViewItem ...@@ -21,8 +21,7 @@ struct TemplateSearchViewItem : public TemplateViewItem
virtual ~TemplateSearchViewItem () virtual ~TemplateSearchViewItem ()
{} {}
sal_uInt16 mnIdx; // Template associated Index sal_uInt16 mnAssocId; //Associated item id to the TemplateViews
sal_uInt16 mnRegionId; // Template associated Region id
}; };
#endif // __SFX2_TEMPLATESEARCHVIEWITEM_HXX__ #endif // __SFX2_TEMPLATESEARCHVIEWITEM_HXX__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment