sfx2/inc/sfx2/templatefolderview.hxx | 3 +++ sfx2/inc/sfx2/thumbnailview.hxx | 3 +++ sfx2/source/control/templatefolderview.cxx | 6 ++++++ sfx2/source/control/thumbnailview.cxx | 9 +++++++++ sfx2/source/doc/templatedlg.cxx | 15 +++++++++++++++ 5 files changed, 36 insertions(+)
New commits: commit fbd484275ac7d53ceef49737800f7c528d10ebca Author: Rafael Dominguez <venccsra...@gmail.com> Date: Mon Jun 25 21:33:26 2012 -0430 Implement ThumbnailView sorting functionality. - Add a class to sort items by their name. Change-Id: I6f5fdc88e6d24ec826dab11e093d8cc826112cb8 diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx index 5ae7385..00d88da 100644 --- a/sfx2/inc/sfx2/templatefolderview.hxx +++ b/sfx2/inc/sfx2/templatefolderview.hxx @@ -43,6 +43,9 @@ public: void filterTemplatesByApp (const FILTER_APPLICATION &eApp); + void sortOverlayItems (const boost::function<bool (const ThumbnailViewItem*, + const ThumbnailViewItem*) > &func); + void setTemplateStateHdl (const Link &aLink) { maTemplateStateHdl = aLink; } bool removeTemplate (const sal_uInt16 nItemId); diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx index 887b504..f12a1fb 100644 --- a/sfx2/inc/sfx2/thumbnailview.hxx +++ b/sfx2/inc/sfx2/thumbnailview.hxx @@ -240,6 +240,9 @@ public: void filterItems (const boost::function<bool (const ThumbnailViewItem*) > &func); + void sortItems (const boost::function<bool (const ThumbnailViewItem*, + const ThumbnailViewItem*) > &func); + void setItemStateHdl (const Link &aLink) { maItemStateHdl = aLink; } protected: diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx index caef6bd..cb8b69c 100644 --- a/sfx2/source/control/templatefolderview.cxx +++ b/sfx2/source/control/templatefolderview.cxx @@ -342,6 +342,12 @@ void TemplateFolderView::filterTemplatesByApp (const FILTER_APPLICATION &eApp) } } +void TemplateFolderView::sortOverlayItems(const boost::function<bool (const ThumbnailViewItem*, + const ThumbnailViewItem*) > &func) +{ + mpItemView->sortItems(func); +} + bool TemplateFolderView::removeTemplate (const sal_uInt16 nItemId) { sal_uInt16 nRegionId = mpItemView->getRegionId(); diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index cf4b225..0ede266 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -1392,6 +1392,15 @@ void ThumbnailView::filterItems (const boost::function<bool (const ThumbnailView Invalidate(); } +void ThumbnailView::sortItems (const boost::function<bool (const ThumbnailViewItem*, const ThumbnailViewItem*) > &func) +{ + std::sort(mItemList.begin(),mItemList.end(),func); + + CalculateItemPositions(); + + Invalidate(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index ee4f3a2..dcf3fc0 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -43,6 +43,17 @@ using namespace ::com::sun::star::frame; void lcl_createTemplate(uno::Reference<XComponentLoader> xDesktop, const FILTER_APPLICATION eApp); +// Sort by name in ascending order +class SortView_Name +{ +public: + + bool operator() (const ThumbnailViewItem *pItem1, const ThumbnailViewItem *pItem2) + { + return (pItem1->maText.compareTo(pItem2->maText) < 0); + } +}; + SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent) : ModalDialog(parent, SfxResId(DLG_TEMPLATE_MANAGER)), aButtonAll(this,SfxResId(BTN_SELECT_ALL)), @@ -341,6 +352,10 @@ IMPL_LINK(SfxTemplateManagerDlg, MenuSelectHdl, Menu*, pMenu) lcl_createTemplate(mxDesktop,FILTER_APP_DRAW); break; case MNI_ACTION_SORT_NAME: + if (maView->isOverlayVisible()) + maView->sortOverlayItems(SortView_Name()); + else + maView->sortItems(SortView_Name()); break; default: break; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits