summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-10-06 12:29:33 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-10-06 14:18:11 +0200
commitca8016c3a317a7ba1f03e117d575fb78a572b4b3 (patch)
tree74f89bc12cc771ee0264090b440e97d5e7205c8a
parent85b1f91779cd90eb1c7808909c2721239fc51dd1 (diff)
sw: extract lcl_emitSearchResultCallbacks() from SwView::ExecSearch()
Change-Id: I9c6b7540bcae85d6529e5cc195a7e86f58ee5713
-rw-r--r--sw/source/uibase/uiview/viewsrch.cxx88
1 files changed, 46 insertions, 42 deletions
diff --git a/sw/source/uibase/uiview/viewsrch.cxx b/sw/source/uibase/uiview/viewsrch.cxx
index 0b07ce583114..7d34a2ab819c 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
{