|
 |
f325b2 |
From 5a52abcc97428423885cb144e5380e825e082abb Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Tue, 6 Oct 2015 12:29:33 +0200
|
|
 |
f325b2 |
Subject: [PATCH 185/398] sw: extract lcl_emitSearchResultCallbacks() from
|
|
 |
f325b2 |
SwView::ExecSearch()
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I9c6b7540bcae85d6529e5cc195a7e86f58ee5713
|
|
 |
f325b2 |
(cherry picked from commit ca8016c3a317a7ba1f03e117d575fb78a572b4b3)
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
sw/source/uibase/uiview/viewsrch.cxx | 88 +++++++++++++++++++-----------------
|
|
 |
f325b2 |
1 file changed, 46 insertions(+), 42 deletions(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
|
|
 |
f325b2 |
index 570fadeb561a..a22cbdb6528f 100644
|
|
 |
f325b2 |
--- a/sw/source/uibase/uiview/viewsrch.cxx
|
|
 |
f325b2 |
+++ b/sw/source/uibase/uiview/viewsrch.cxx
|
|
 |
f325b2 |
@@ -102,6 +102,51 @@ static void lcl_addContainerToJson(boost::property_tree::ptree& rTree, const OSt
|
|
 |
f325b2 |
rTree.add_child(rKey.getStr(), aChildren);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+/// Emits LOK callbacks (count, selection) for search results.
|
|
 |
f325b2 |
+static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSearchItem, SwWrtShell* pWrtShell)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ OString aPayload = OString::number(nFound) + ";" + pSearchItem->GetSearchString().toUtf8();
|
|
 |
f325b2 |
+ pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ // Emit a callback also about the selection rectangles, grouped by matches.
|
|
 |
f325b2 |
+ if (SwPaM* pPaM = pWrtShell->GetCrsr())
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ std::vector<OString> aMatches;
|
|
 |
f325b2 |
+ for (SwPaM& rPaM : pPaM->GetRingContainer())
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ std::vector<OString> aSelectionRectangles;
|
|
 |
f325b2 |
+ pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
|
|
 |
f325b2 |
+ std::stringstream ss;
|
|
 |
f325b2 |
+ bool bFirst = true;
|
|
 |
f325b2 |
+ for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ const OString& rSelectionRectangle = aSelectionRectangles[i];
|
|
 |
f325b2 |
+ if (rSelectionRectangle.isEmpty())
|
|
 |
f325b2 |
+ continue;
|
|
 |
f325b2 |
+ if (bFirst)
|
|
 |
f325b2 |
+ bFirst = false;
|
|
 |
f325b2 |
+ else
|
|
 |
f325b2 |
+ ss << "; ";
|
|
 |
f325b2 |
+ ss << rSelectionRectangle.getStr();
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ OString sRect = ss.str().c_str();
|
|
 |
f325b2 |
+ aMatches.push_back(sRect);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
+ aTree.put("searchString", pSearchItem->GetSearchString().toUtf8().getStr());
|
|
 |
f325b2 |
+ lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ std::stringstream aStream;
|
|
 |
f325b2 |
+ boost::property_tree::write_json(aStream, aTree);
|
|
 |
f325b2 |
+ aPayload = aStream.str().c_str();
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
const SfxItemSet* pArgs = rReq.GetArgs();
|
|
 |
f325b2 |
@@ -241,48 +286,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
|
|
 |
f325b2 |
m_bFound = false;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
else if (comphelper::LibreOfficeKit::isActive())
|
|
 |
f325b2 |
- {
|
|
 |
f325b2 |
- OString aPayload = OString::number(nFound) + ";" + m_pSrchItem->GetSearchString().toUtf8();
|
|
 |
f325b2 |
- m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_COUNT, aPayload.getStr());
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
- // Emit a callback also about the selection rectangles, grouped by matches.
|
|
 |
f325b2 |
- if (SwPaM* pPaM = m_pWrtShell->GetCrsr())
|
|
 |
f325b2 |
- {
|
|
 |
f325b2 |
- std::vector<OString> aMatches;
|
|
 |
f325b2 |
- for (SwPaM& rPaM : pPaM->GetRingContainer())
|
|
 |
f325b2 |
- {
|
|
 |
f325b2 |
- if (SwShellCrsr* pShellCrsr = dynamic_cast<SwShellCrsr*>(&rPaM))
|
|
 |
f325b2 |
- {
|
|
 |
f325b2 |
- std::vector<OString> aSelectionRectangles;
|
|
 |
f325b2 |
- pShellCrsr->SwSelPaintRects::Show(&aSelectionRectangles);
|
|
 |
f325b2 |
- std::stringstream ss;
|
|
 |
f325b2 |
- bool bFirst = true;
|
|
 |
f325b2 |
- for (size_t i = 0; i < aSelectionRectangles.size(); ++i)
|
|
 |
f325b2 |
- {
|
|
 |
f325b2 |
- const OString& rSelectionRectangle = aSelectionRectangles[i];
|
|
 |
f325b2 |
- if (rSelectionRectangle.isEmpty())
|
|
 |
f325b2 |
- continue;
|
|
 |
f325b2 |
- if (bFirst)
|
|
 |
f325b2 |
- bFirst = false;
|
|
 |
f325b2 |
- else
|
|
 |
f325b2 |
- ss << "; ";
|
|
 |
f325b2 |
- ss << rSelectionRectangle.getStr();
|
|
 |
f325b2 |
- }
|
|
 |
f325b2 |
- OString sRect = ss.str().c_str();
|
|
 |
f325b2 |
- aMatches.push_back(sRect);
|
|
 |
f325b2 |
- }
|
|
 |
f325b2 |
- }
|
|
 |
f325b2 |
- boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
- aTree.put("searchString", m_pSrchItem->GetSearchString().toUtf8().getStr());
|
|
 |
f325b2 |
- lcl_addContainerToJson(aTree, "searchResultSelection", aMatches);
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
- std::stringstream aStream;
|
|
 |
f325b2 |
- boost::property_tree::write_json(aStream, aTree);
|
|
 |
f325b2 |
- aPayload = aStream.str().c_str();
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
- m_pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
|
|
 |
f325b2 |
- }
|
|
 |
f325b2 |
- }
|
|
 |
f325b2 |
+ lcl_emitSearchResultCallbacks(nFound, m_pSrchItem, m_pWrtShell);
|
|
 |
f325b2 |
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
|
|
 |
f325b2 |
#if HAVE_FEATURE_DESKTOP
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|