[Libreoffice-commits] online.git: 2 commits - loleaflet/reference.html loleaflet/src loolwsd/LOKitClient.cpp loolwsd/LOOLSession.cpp

Mihai Varga mihai.varga at collabora.com
Thu Oct 8 06:28:22 PDT 2015


 loleaflet/reference.html              |    5 +++++
 loleaflet/src/layer/tile/GridLayer.js |   15 +++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js |   19 ++++++++++++-------
 loolwsd/LOKitClient.cpp               |    1 +
 loolwsd/LOOLSession.cpp               |    3 +++
 5 files changed, 36 insertions(+), 7 deletions(-)

New commits:
commit d8fa9d708b7d9138b6c3a8abc9a6bef981f6d27c
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Tue Oct 6 17:33:22 2015 +0300

    handle LOK_CALLBACK_SEARCH_RESULT_SELECTION callback

diff --git a/loleaflet/reference.html b/loleaflet/reference.html
index d45f019..057c2d5 100644
--- a/loleaflet/reference.html
+++ b/loleaflet/reference.html
@@ -6823,6 +6823,11 @@ map.addControl(new MyControl());
 		<td><code>Number</code></td>
 		<td>Number of search results</td>
 	</tr>
+	<tr>
+		<td><code><b>results</b></code></td>
+		<td><code><a href="#bounds">Bounds[]</a></code></td>
+		<td>An array of bounds representing the selections of the search results in the document.</td>
+	</tr>
 </table>
 
 <h3 id="partpagerectangles-event">PartPageRectangles</h3>
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 5eaab4d..6be61de 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -214,8 +214,8 @@ L.TileLayer = L.GridLayer.extend({
 		else if (textMsg.startsWith('searchnotfound:')) {
 			this._onSearchNotFoundMsg(textMsg);
 		}
-		else if (textMsg.startsWith('searchresultcount:')) {
-			this._onSearchResultCount(textMsg);
+		else if (textMsg.startsWith('searchresultselection:')) {
+			this._onSearchResultSelection(textMsg);
 		}
 		else if (textMsg.startsWith('setpart:')) {
 			this._onSetPartMsg(textMsg);
@@ -336,11 +336,16 @@ L.TileLayer = L.GridLayer.extend({
 		this._map.fire('search', {originalPhrase: originalPhrase, count: 0});
 	},
 
-	_onSearchResultCount: function (textMsg) {
-		textMsg = textMsg.substring(19);
-		var count = parseInt(textMsg.substring(0, textMsg.indexOf(';')));
-		var originalPhrase = textMsg.substring(textMsg.indexOf(';') + 1);
-		this._map.fire('search', {originalPhrase: originalPhrase, count: count});
+	_onSearchResultSelection: function (textMsg) {
+		textMsg = textMsg.substring(23);
+		var obj = JSON.parse(textMsg);
+		var originalPhrase = obj.searchString;
+		var count = obj.searchResultSelection.length;
+		var results = [];
+		for (var i = 0; i < obj.searchResultSelection.length; i++) {
+			results.push(this._twipsRectangleToPixelBounds(obj.searchResultSelection[i]));
+		}
+		this._map.fire('search', {originalPhrase: originalPhrase, count: count, results: results});
 	},
 
 	_onStateChangedMsg: function (textMsg) {
diff --git a/loolwsd/LOKitClient.cpp b/loolwsd/LOKitClient.cpp
index 57f0e03..8e3f546 100644
--- a/loolwsd/LOKitClient.cpp
+++ b/loolwsd/LOKitClient.cpp
@@ -58,6 +58,7 @@ extern "C"
             CASE(STATUS_INDICATOR_FINISH);
             CASE(SEARCH_NOT_FOUND);
             CASE(SEARCH_RESULT_COUNT);
+            CASE(SEARCH_RESULT_SELECTION);
             CASE(DOCUMENT_SIZE_CHANGED);
             CASE(SET_PART);
 #undef CASE
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index ef1f1d8..d8b7dd0 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -826,6 +826,9 @@ extern "C"
         case LOK_CALLBACK_SEARCH_NOT_FOUND:
             srv->sendTextFrame("searchnotfound: " + std::string(pPayload));
             break;
+        case LOK_CALLBACK_SEARCH_RESULT_SELECTION:
+            srv->sendTextFrame("searchresultselection: " + std::string(pPayload));
+            break;
         case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED:
             srv->getStatus("", 0);
             srv->getPartPageRectangles("", 0);
commit fd7d03a8c738401a84815e26b38310416009e454
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Tue Oct 6 17:32:39 2015 +0300

    loleaflet: twips rectangle to pixel bounds method

diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index 9c89f7c..0e1fded 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -758,6 +758,21 @@ L.GridLayer = L.Layer.extend({
 				pixels.y * this._tileHeightTwips / this._tileSize);
 	},
 
+	_twipsRectangleToPixelBounds: function (strRectangle) {
+		// TODO use this more
+		// strRectangle = x, y, width, height
+		var strTwips = strRectangle.match(/\d+/g);
+		if (!strTwips) {
+			return null;
+		}
+		var topLeftTwips = new L.Point(parseInt(strTwips[0]), parseInt(strTwips[1]));
+		var offset = new L.Point(parseInt(strTwips[2]), parseInt(strTwips[3]));
+		var bottomRightTwips = topLeftTwips.add(offset);
+		return new L.Bounds(
+				this._twipsToPixels(topLeftTwips),
+				this._twipsToPixels(bottomRightTwips));
+	},
+
 	_noTilesToLoad: function () {
 		for (var key in this._tiles) {
 			if (!this._tiles[key].loaded) { return false; }


More information about the Libreoffice-commits mailing list