Blob Blame History Raw
From 5a52abcc97428423885cb144e5380e825e082abb Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Tue, 6 Oct 2015 12:29:33 +0200
Subject: [PATCH 185/398] sw: extract lcl_emitSearchResultCallbacks() from
 SwView::ExecSearch()

Change-Id: I9c6b7540bcae85d6529e5cc195a7e86f58ee5713
(cherry picked from commit ca8016c3a317a7ba1f03e117d575fb78a572b4b3)
---
 sw/source/uibase/uiview/viewsrch.cxx | 88 +++++++++++++++++++-----------------
 1 file changed, 46 insertions(+), 42 deletions(-)

diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
index 570fadeb561a..a22cbdb6528f 100644
--- a/sw/source/uibase/uiview/viewsrch.cxx
+++ b/sw/source/uibase/uiview/viewsrch.cxx
@@ -102,6 +102,51 @@ static void lcl_addContainerToJson(boost::property_tree::ptree& rTree, const OSt
     rTree.add_child(rKey.getStr(), aChildren);
 }
 
+/// Emits LOK callbacks (count, selection) for search results.
+static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSearchItem, SwWrtShell* pWrtShell)
+{
+    OString aPayload = OString::number(nFound) + ";" + pSearchItem->GetSearchString().toUtf8();
+    pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
+
+    // Emit a callback also about the selection rectangles, grouped by matches.
+    if (SwPaM* pPaM = pWrtShell->GetCrsr())
+    {
+        std::vector<OString> aMatches;
+        for (SwPaM& rPaM : pPaM->GetRingContainer())
+        {
+            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
+            {
+                std::vector<OString> aSelectionRectangles;
+                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
+                std::stringstream ss;
+                bool bFirst = true;
+                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
+                {
+                    const OString& rSelectionRectangle = aSelectionRectangles[i];
+                    if (rSelectionRectangle.isEmpty())
+                        continue;
+                    if (bFirst)
+                        bFirst = false;
+                    else
+                        ss << "; ";
+                    ss << rSelectionRectangle.getStr();
+                }
+                OString sRect = ss.str().c_str();
+                aMatches.push_back(sRect);
+            }
+        }
+        boost::property_tree::ptree aTree;
+        aTree.put("searchString", pSearchItem->GetSearchString().toUtf8().getStr());
+        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
+
+        std::stringstream aStream;
+        boost::property_tree::write_json(aStream, aTree);
+        aPayload = aStream.str().c_str();
+
+        pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
+    }
+}
+
 void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
 {
     const SfxItemSet* pArgs = rReq.GetArgs();
@@ -241,48 +286,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
                     m_bFound = false;
                 }
                 else if (comphelper::LibreOfficeKit::isActive())
-                {
-                    OString aPayload = OString::number(nFound) + ";" + m_pSrchItem->GetSearchString().toUtf8();
-                    m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
-
-                    // Emit a callback also about the selection rectangles, grouped by matches.
-                    if (SwPaM* pPaM = m_pWrtShell->GetCrsr())
-                    {
-                        std::vector<OString> aMatches;
-                        for (SwPaM& rPaM : pPaM->GetRingContainer())
-                        {
-                            if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
-                            {
-                                std::vector<OString> aSelectionRectangles;
-                                pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
-                                std::stringstream ss;
-                                bool bFirst = true;
-                                for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
-                                {
-                                    const OString& rSelectionRectangle = aSelectionRectangles[i];
-                                    if (rSelectionRectangle.isEmpty())
-                                        continue;
-                                    if (bFirst)
-                                        bFirst = false;
-                                    else
-                                        ss << "; ";
-                                    ss << rSelectionRectangle.getStr();
-                                }
-                                OString sRect = ss.str().c_str();
-                                aMatches.push_back(sRect);
-                            }
-                        }
-                        boost::property_tree::ptree aTree;
-                        aTree.put("searchString", m_pSrchItem->GetSearchString().toUtf8().getStr());
-                        lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
-
-                        std::stringstream aStream;
-                        boost::property_tree::write_json(aStream, aTree);
-                        aPayload = aStream.str().c_str();
-
-                        m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
-                    }
-                }
+                    lcl_emitSearchResultCallbacks(nFound, m_pSrchItem, m_pWrtShell);
                 rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
 #if HAVE_FEATURE_DESKTOP
                 {
-- 
2.12.0