[Libreoffice-commits] .: 4 commits - sfx2/inc sfx2/source

Rafael Dominguez rdominguez at kemper.freedesktop.org
Thu Aug 2 19:54:41 PDT 2012


 sfx2/inc/sfx2/templateabstractview.hxx       |   17 +++++++
 sfx2/inc/sfx2/templateonlineview.hxx         |    5 --
 sfx2/inc/sfx2/templateonlineviewitem.hxx     |    8 +++
 sfx2/source/control/templateabstractview.cxx |   13 ++++++
 sfx2/source/control/templateonlineview.cxx   |   20 ++++++---
 sfx2/source/doc/templatedlg.cxx              |   58 +++++++++++++++++----------
 6 files changed, 92 insertions(+), 29 deletions(-)

New commits:
commit 393e7add0b2c7f4f96dc309f7dcdf8d82e0ff813
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Thu Aug 2 21:27:00 2012 -0430

    Display all templates in the overlay if we hide the search bar.
    
    Change-Id: I4af95a758912e5d4c885f889fd2dedb48472f7b6

diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 9982f5d..96ab14b 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -792,6 +792,10 @@ void SfxTemplateManagerDlg::OnTemplateSearch ()
 
     mpSearchEdit->Show(!bVisible);
     mpSearchEdit->SetText(rtl::OUString());
+
+    // display all templates if we hide the search bar
+    if (bVisible && mpCurView->isOverlayVisible())
+        mpCurView->filterTemplatesByApp(FILTER_APP_NONE);
 }
 
 void SfxTemplateManagerDlg::OnTemplateEdit ()
commit 5918b4b1808afdf85682d471024d6ae1f20fd8eb
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Thu Aug 2 21:11:18 2012 -0430

    Filter overlay templates by a search keyword.
    
    Change-Id: I8bcb193d1400c32b6292fd109422d22dbf8b1eb9

diff --git a/sfx2/inc/sfx2/templateabstractview.hxx b/sfx2/inc/sfx2/templateabstractview.hxx
index a4b1daf..1907e5c 100644
--- a/sfx2/inc/sfx2/templateabstractview.hxx
+++ b/sfx2/inc/sfx2/templateabstractview.hxx
@@ -40,6 +40,21 @@ private:
     FILTER_APPLICATION mApp;
 };
 
+class ViewFilter_Keyword
+{
+public:
+
+    ViewFilter_Keyword (const OUString &rKeyword)
+        : maKeyword(rKeyword)
+    {}
+
+    bool operator () (const ThumbnailViewItem *pItem);
+
+private:
+
+    OUString maKeyword;
+};
+
 class SFX2_DLLPUBLIC TemplateAbstractView : public ThumbnailView
 {
 public:
@@ -65,6 +80,8 @@ public:
     void sortOverlayItems (const boost::function<bool (const ThumbnailViewItem*,
                                                        const ThumbnailViewItem*) > &func);
 
+    virtual void filterTemplatesByKeyword (const OUString &rKeyword);
+
     void setOverlayItemStateHdl (const Link &aLink) { maOverlayItemStateHdl = aLink; }
 
     void setOverlayDblClickHdl (const Link &rLink);
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index fbe2378..0554c9d 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -49,6 +49,13 @@ bool ViewFilter_Application::operator () (const ThumbnailViewItem *pItem)
     return true;
 }
 
+bool ViewFilter_Keyword::operator ()(const ThumbnailViewItem *pItem)
+{
+    assert(pItem);
+
+    return pItem->maTitle.matchIgnoreAsciiCase(maKeyword);
+}
+
 TemplateAbstractView::TemplateAbstractView (Window *pParent, WinBits nWinStyle, bool bDisableTransientChildren)
     : ThumbnailView(pParent,nWinStyle,bDisableTransientChildren),
       mpItemView(new TemplateView(this))
@@ -84,6 +91,12 @@ void TemplateAbstractView::sortOverlayItems(const boost::function<bool (const Th
     mpItemView->sortItems(func);
 }
 
+void TemplateAbstractView::filterTemplatesByKeyword(const OUString &rKeyword)
+{
+    if (mpItemView->IsVisible())
+        mpItemView->filterItems(ViewFilter_Keyword(rKeyword));
+}
+
 void TemplateAbstractView::setOverlayDblClickHdl(const Link &rLink)
 {
     mpItemView->setDblClickHdl(rLink);
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index d3eff74..9982f5d 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -624,7 +624,7 @@ 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 (!mpSearchView->IsVisible())
+    if (!mpCurView->isOverlayVisible() && !mpSearchView->IsVisible())
     {
         mpSearchView->Clear();
         mpSearchView->Show();
@@ -635,30 +635,44 @@ IMPL_LINK_NOARG(SfxTemplateManagerDlg, SearchUpdateHdl)
 
     if (!aKeyword.isEmpty())
     {
-        mpSearchView->Clear();
-
-        std::vector<TemplateItemProperties> aItems =
-                maView->getFilteredItems(SearchView_Keyword(aKeyword));
-
-        size_t nCounter = 0;
-        for (size_t i = 0; i < aItems.size(); ++i)
+        if (mpCurView->isOverlayVisible())
         {
-            TemplateItemProperties *pItem = &aItems[i];
-
-            mpSearchView->AppendItem(++nCounter,pItem->nRegionId,
-                                     pItem->nId-1,
-                                     pItem->aName,
-                                     maView->GetItemText(pItem->nRegionId+1),
-                                     pItem->aPath,
-                                     pItem->aThumbnail);
+            mpCurView->filterTemplatesByKeyword(aKeyword);
         }
+        else
+        {
+            mpSearchView->Clear();
+
+            std::vector<TemplateItemProperties> aItems =
+                    maView->getFilteredItems(SearchView_Keyword(aKeyword));
+
+            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);
+            }
 
-        mpSearchView->Invalidate();
+            mpSearchView->Invalidate();
+        }
     }
     else
     {
-        mpSearchView->Hide();
-        mpCurView->Show();
+        if (mpCurView->isOverlayVisible())
+        {
+            mpCurView->filterTemplatesByApp(FILTER_APP_NONE);
+        }
+        else
+        {
+            mpSearchView->Hide();
+            mpCurView->Show();
+        }
     }
 
     return 0;
commit 3fa5a70375083e5f201d6b62f418e9778446e2f5
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Wed Aug 1 07:13:38 2012 -0430

    Cache results for remote repositories.
    
    - Only fetch template list when its the first time or when specified.
    
    Change-Id: I922e97dfcbf67cebdd66a85bd7ff204896757e52

diff --git a/sfx2/inc/sfx2/templateonlineview.hxx b/sfx2/inc/sfx2/templateonlineview.hxx
index 36372e8..0354560 100644
--- a/sfx2/inc/sfx2/templateonlineview.hxx
+++ b/sfx2/inc/sfx2/templateonlineview.hxx
@@ -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; }
 
diff --git a/sfx2/inc/sfx2/templateonlineviewitem.hxx b/sfx2/inc/sfx2/templateonlineviewitem.hxx
index 1d9f9cd..07996b3 100644
--- a/sfx2/inc/sfx2/templateonlineviewitem.hxx
+++ b/sfx2/inc/sfx2/templateonlineviewitem.hxx
@@ -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__
diff --git a/sfx2/source/control/templateonlineview.cxx b/sfx2/source/control/templateonlineview.cxx
index 7087b35..b8b978f 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<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;
                 }
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 765f664..d3eff74 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);
commit f36adaa38ca7a04144c18902343ab52784f4fbae
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Tue Jul 31 18:20:54 2012 -0430

    Dont store repository information twice.
    
    Change-Id: Iaf15cd383abec092932b2b024142d959794f0fdb

diff --git a/sfx2/inc/sfx2/templateonlineview.hxx b/sfx2/inc/sfx2/templateonlineview.hxx
index d60e048..36372e8 100644
--- a/sfx2/inc/sfx2/templateonlineview.hxx
+++ b/sfx2/inc/sfx2/templateonlineview.hxx
@@ -43,8 +43,6 @@ private:
 
 private:
 
-    com::sun::star::uno::Sequence< rtl::OUString > maUrls;
-    com::sun::star::uno::Sequence< rtl::OUString > maNames;
     std::vector<TemplateOnlineViewItem*> maRepositories;
     com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > m_xCmdEnv;
 };
diff --git a/sfx2/source/control/templateonlineview.cxx b/sfx2/source/control/templateonlineview.cxx
index f33d0bd..7087b35 100644
--- a/sfx2/source/control/templateonlineview.cxx
+++ b/sfx2/source/control/templateonlineview.cxx
@@ -75,16 +75,19 @@ void TemplateOnlineView::Populate()
     uno::Reference < uno::XComponentContext > m_context(comphelper::getProcessComponentContext());
 
     // Load from user settings
-    maUrls = officecfg::Office::Common::Misc::FilePickerPlacesUrls::get(m_context);
-    maNames = officecfg::Office::Common::Misc::FilePickerPlacesNames::get(m_context);
+    com::sun::star::uno::Sequence< rtl::OUString >  aUrls =
+            officecfg::Office::Common::Misc::FilePickerPlacesUrls::get(m_context);
 
-    for (sal_Int32 i = 0; i < maUrls.getLength() && i < maNames.getLength(); ++i)
+    com::sun::star::uno::Sequence< rtl::OUString > aNames =
+            officecfg::Office::Common::Misc::FilePickerPlacesNames::get(m_context);
+
+    for (sal_Int32 i = 0; i < aUrls.getLength() && i < aNames.getLength(); ++i)
     {
         TemplateOnlineViewItem *pItem = new TemplateOnlineViewItem(*this,this);
 
         pItem->mnId = i+1;
-        pItem->maTitle = maNames[i];
-        pItem->setURL(maUrls[i]);
+        pItem->maTitle = aNames[i];
+        pItem->setURL(aUrls[i]);
 
         maRepositories.push_back(pItem);
     }


More information about the Libreoffice-commits mailing list