Kaydet (Commit) 3fa5a703 authored tarafından Rafael Dominguez's avatar Rafael Dominguez

Cache results for remote repositories.

- Only fetch template list when its the first time or when specified.

Change-Id: I922e97dfcbf67cebdd66a85bd7ff204896757e52
üst f36adaa3
......@@ -11,6 +11,7 @@
#define __SFX2_TEMPLATEONLINEVIEW_HXX__
#include <sfx2/templateabstractview.hxx>
#include <sfx2/templateproperties.hxx>
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
......@@ -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<TemplateOnlineViewItem*>& getRepositories () const { return maRepositories; }
......
......@@ -11,6 +11,7 @@
#define __SFX2_TEMPLATEONLINEVIEWITEM_HXX__
#include <sfx2/thumbnailviewitem.hxx>
#include <sfx2/templateproperties.hxx>
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<TemplateItemProperties>& getTemplates () const { return maTemplates; }
private:
rtl::OUString maUrl;
std::vector<TemplateItemProperties> maTemplates;
};
#endif // __SFX2_TEMPLATEONLINEVIEWITEM_HXX__
......
......@@ -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<TemplateOnlineViewItem*>(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;
}
......
......@@ -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);
......
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