LOK: CALLBACK_SEARCH_RESULT_COUNT is redundant

1) The size of the searchResultSelection array in
LOK_CALLBACK_SEARCH_RESULT_SELECTION provides the same information.

2) None of the clients except lokdocview used it.

3) Only sw provided this callback, not sc/sd.

Change-Id: I9da639b6693f24634f298f9bc4773f705e944359
This commit is contained in:
Miklos Vajna
2015-10-09 08:08:48 +02:00
parent 854af5a574
commit f0e3fe840b
4 changed files with 12 additions and 34 deletions

View File

@@ -157,12 +157,6 @@ typedef enum
*/ */
LOK_CALLBACK_SET_PART, LOK_CALLBACK_SET_PART,
/**
* Number of search results followed by the original searched phrase.
* count;phrase
*/
LOK_CALLBACK_SEARCH_RESULT_COUNT,
/** /**
* Selection rectangles of the search result when find all is performed. * Selection rectangles of the search result when find all is performed.
* *

View File

@@ -12,6 +12,7 @@
#include <string.h> #include <string.h>
#include <vector> #include <vector>
#include <string> #include <string>
#include <boost/property_tree/json_parser.hpp>
#include <com/sun/star/awt/Key.hpp> #include <com/sun/star/awt/Key.hpp>
#define LOK_USE_UNSTABLE_API #define LOK_USE_UNSTABLE_API
@@ -227,8 +228,6 @@ callbackTypeToString (int nType)
return "LOK_CALLBACK_STATUS_INDICATOR_FINISH"; return "LOK_CALLBACK_STATUS_INDICATOR_FINISH";
case LOK_CALLBACK_SEARCH_NOT_FOUND: case LOK_CALLBACK_SEARCH_NOT_FOUND:
return "LOK_CALLBACK_SEARCH_NOT_FOUND"; return "LOK_CALLBACK_SEARCH_NOT_FOUND";
case LOK_CALLBACK_SEARCH_RESULT_COUNT:
return "LOK_CALLBACK_SEARCH_RESULT_COUNT";
case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED:
return "LOK_CALLBACK_DOCUMENT_SIZE_CHANGED"; return "LOK_CALLBACK_DOCUMENT_SIZE_CHANGED";
case LOK_CALLBACK_SET_PART: case LOK_CALLBACK_SET_PART:
@@ -661,12 +660,6 @@ callback (gpointer pData)
searchNotFound(pDocView, pCallback->m_aPayload); searchNotFound(pDocView, pCallback->m_aPayload);
} }
break; break;
case LOK_CALLBACK_SEARCH_RESULT_COUNT:
{
size_t nPos = pCallback->m_aPayload.find_first_of(";");
searchResultCount(pDocView, pCallback->m_aPayload.substr(0, nPos));
}
break;
case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED:
{ {
payloadToSize(pCallback->m_aPayload.c_str(), priv->m_nDocumentWidthTwips, priv->m_nDocumentHeightTwips); payloadToSize(pCallback->m_aPayload.c_str(), priv->m_nDocumentWidthTwips, priv->m_nDocumentHeightTwips);
@@ -684,6 +677,11 @@ callback (gpointer pData)
break; break;
case LOK_CALLBACK_SEARCH_RESULT_SELECTION: case LOK_CALLBACK_SEARCH_RESULT_SELECTION:
{ {
boost::property_tree::ptree aTree;
std::stringstream aStream(pCallback->m_aPayload);
boost::property_tree::read_json(aStream, aTree);
int nCount = aTree.get_child("searchResultSelection").size();
searchResultCount(pDocView, std::to_string(nCount));
} }
break; break;
default: default:

View File

@@ -72,13 +72,11 @@ private:
Size m_aDocumentSize; Size m_aDocumentSize;
OString m_aTextSelection; OString m_aTextSelection;
bool m_bFound; bool m_bFound;
sal_Int32 m_nSearchResultCount;
std::vector<OString> m_aSearchResultSelection; std::vector<OString> m_aSearchResultSelection;
}; };
SwTiledRenderingTest::SwTiledRenderingTest() SwTiledRenderingTest::SwTiledRenderingTest()
: m_bFound(true), : m_bFound(true)
m_nSearchResultCount(0)
{ {
} }
@@ -134,12 +132,6 @@ void SwTiledRenderingTest::callbackImpl(int nType, const char* pPayload)
m_bFound = false; m_bFound = false;
} }
break; break;
case LOK_CALLBACK_SEARCH_RESULT_COUNT:
{
std::string aStrPayload(pPayload);
m_nSearchResultCount = std::stoi(aStrPayload.substr(0, aStrPayload.find_first_of(";")));
}
break;
case LOK_CALLBACK_SEARCH_RESULT_SELECTION: case LOK_CALLBACK_SEARCH_RESULT_SELECTION:
{ {
m_aSearchResultSelection.clear(); m_aSearchResultSelection.clear();
@@ -485,8 +477,6 @@ void SwTiledRenderingTest::testSearchAll()
})); }));
comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues); comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
// This was 0; should be 2 results in the body text. // This was 0; should be 2 results in the body text.
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), m_nSearchResultCount);
// Make sure that we get exactly as many rectangle lists as matches.
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), m_aSearchResultSelection.size()); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), m_aSearchResultSelection.size());
comphelper::LibreOfficeKit::setActive(false); comphelper::LibreOfficeKit::setActive(false);

View File

@@ -104,11 +104,8 @@ static void lcl_addContainerToJson(boost::property_tree::ptree& rTree, const OSt
} }
/// Emits LOK callbacks (count, selection) for search results. /// Emits LOK callbacks (count, selection) for search results.
static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSearchItem, SwWrtShell* pWrtShell) static void lcl_emitSearchResultCallbacks(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. // Emit a callback also about the selection rectangles, grouped by matches.
if (SwPaM* pPaM = pWrtShell->GetCrsr()) if (SwPaM* pPaM = pWrtShell->GetCrsr())
{ {
@@ -137,7 +134,7 @@ static void lcl_emitSearchResultCallbacks(sal_uInt16 nFound, SvxSearchItem* pSea
std::stringstream aStream; std::stringstream aStream;
boost::property_tree::write_json(aStream, aTree); boost::property_tree::write_json(aStream, aTree);
aPayload = aStream.str().c_str(); OString aPayload = aStream.str().c_str();
pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr()); pWrtShell->libreOfficeKitCallback(LOK_CALLBACK_SEARCH_RESULT_SELECTION, aPayload.getStr());
} }
@@ -252,7 +249,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
{ {
Scroll(m_pWrtShell->GetCharRect().SVRect()); Scroll(m_pWrtShell->GetCharRect().SVRect());
if (comphelper::LibreOfficeKit::isActive()) if (comphelper::LibreOfficeKit::isActive())
lcl_emitSearchResultCallbacks(1, m_pSrchItem, m_pWrtShell); lcl_emitSearchResultCallbacks(m_pSrchItem, m_pWrtShell);
} }
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet)); rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
#if HAVE_FEATURE_DESKTOP #if HAVE_FEATURE_DESKTOP
@@ -271,8 +268,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
break; break;
case SvxSearchCmd::FIND_ALL: case SvxSearchCmd::FIND_ALL:
{ {
sal_uInt16 nFound = 0; bool bRet = SearchAll();
bool bRet = SearchAll(&nFound);
if( !bRet ) if( !bRet )
{ {
#if HAVE_FEATURE_DESKTOP #if HAVE_FEATURE_DESKTOP
@@ -286,7 +282,7 @@ void SwView::ExecSearch(SfxRequest& rReq, bool bNoMessage)
m_bFound = false; m_bFound = false;
} }
else if (comphelper::LibreOfficeKit::isActive()) else if (comphelper::LibreOfficeKit::isActive())
lcl_emitSearchResultCallbacks(nFound, m_pSrchItem, m_pWrtShell); lcl_emitSearchResultCallbacks(m_pSrchItem, m_pWrtShell);
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet)); rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
#if HAVE_FEATURE_DESKTOP #if HAVE_FEATURE_DESKTOP
{ {