From 3fa5a70375083e5f201d6b62f418e9778446e2f5 Mon Sep 17 00:00:00 2001 From: Rafael Dominguez Date: Wed, 1 Aug 2012 07:13:38 -0430 Subject: Cache results for remote repositories. - Only fetch template list when its the first time or when specified. Change-Id: I922e97dfcbf67cebdd66a85bd7ff204896757e52 --- sfx2/inc/sfx2/templateonlineview.hxx | 3 ++- sfx2/inc/sfx2/templateonlineviewitem.hxx | 8 ++++++++ sfx2/source/control/templateonlineview.cxx | 7 ++++++- sfx2/source/doc/templatedlg.cxx | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) (limited to 'sfx2') diff --git a/sfx2/inc/sfx2/templateonlineview.hxx b/sfx2/inc/sfx2/templateonlineview.hxx index 36372e83d82b..035456033820 100644 --- a/sfx2/inc/sfx2/templateonlineview.hxx +++ b/sfx2/inc/sfx2/templateonlineview.hxx @@ -11,6 +11,7 @@ #define __SFX2_TEMPLATEONLINEVIEW_HXX__ #include +#include #include @@ -31,7 +32,7 @@ public: virtual void showOverlay (bool bVisible); - bool loadRepository (const sal_uInt16 nRepositoryId); + bool loadRepository (const sal_uInt16 nRepositoryId, bool bRefresh); const std::vector& getRepositories () const { return maRepositories; } diff --git a/sfx2/inc/sfx2/templateonlineviewitem.hxx b/sfx2/inc/sfx2/templateonlineviewitem.hxx index 1d9f9cd50abc..07996b382946 100644 --- a/sfx2/inc/sfx2/templateonlineviewitem.hxx +++ b/sfx2/inc/sfx2/templateonlineviewitem.hxx @@ -11,6 +11,7 @@ #define __SFX2_TEMPLATEONLINEVIEWITEM_HXX__ #include +#include class TemplateOnlineViewItem : public ThumbnailViewItem { @@ -24,9 +25,16 @@ public: const rtl::OUString& getURL () const { return maUrl; } + void insertTemplate (const TemplateItemProperties &prop) { maTemplates.push_back(prop); } + + void clearTemplates () { maTemplates.clear(); } + + const std::vector& getTemplates () const { return maTemplates; } + private: rtl::OUString maUrl; + std::vector maTemplates; }; #endif // __SFX2_TEMPLATEONLINEVIEWITEM_HXX__ diff --git a/sfx2/source/control/templateonlineview.cxx b/sfx2/source/control/templateonlineview.cxx index 7087b35ff5d8..b8b978fad849 100644 --- a/sfx2/source/control/templateonlineview.cxx +++ b/sfx2/source/control/templateonlineview.cxx @@ -113,7 +113,7 @@ void TemplateOnlineView::showOverlay (bool bVisible) } } -bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId) +bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId, bool bRefresh) { TemplateOnlineViewItem *pItem = NULL; @@ -129,6 +129,9 @@ bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId) if (!pItem) return false; + if (!pItem->getTemplates().empty() && !bRefresh) + return true; + rtl::OUString aURL = static_cast(pItem)->getURL(); try @@ -158,6 +161,7 @@ bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId) if ( xResultSet.is() ) { + pItem->clearTemplates(); mpItemView->Clear(); uno::Reference< XRow > xRow( xResultSet, UNO_QUERY ); @@ -217,6 +221,7 @@ bool TemplateOnlineView::loadRepository (const sal_uInt16 nRepositoryId) aTemplateItem.aType = SvFileInformationManager::GetFileDescription(INetURLObject(sRealURL)); + pItem->insertTemplate(aTemplateItem); aItems.push_back(aTemplateItem); ++nIdx; } diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx index 765f66436d62..d3eff745ded9 100644 --- a/sfx2/source/doc/templatedlg.cxx +++ b/sfx2/source/doc/templatedlg.cxx @@ -590,7 +590,7 @@ IMPL_LINK(SfxTemplateManagerDlg, RepositoryMenuSelectHdl, Menu*, pMenu) { sal_uInt16 nRepoId = nMenuId - MNI_REPOSITORY_BASE; - if (mpOnlineView->loadRepository(nRepoId)) + if (mpOnlineView->loadRepository(nRepoId,false)) { switchMainView(false); mpOnlineView->showOverlay(true); -- cgit