[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-2-1' - bundled/include kit/ChildSession.cpp kit/KitHelper.hpp loleaflet/dist loleaflet/src tools/KitClient.cpp wsd/protocol.txt

Marco Cecchetti marco.cecchetti at collabora.com
Tue May 16 09:05:21 UTC 2017


 bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h |    8 ++++
 kit/ChildSession.cpp                                 |    6 +++
 kit/KitHelper.hpp                                    |    3 +
 loleaflet/dist/toolbar.css                           |    7 +++-
 loleaflet/dist/toolbar/toolbar.js                    |   31 +++++++++++++++++++
 loleaflet/src/layer/tile/TileLayer.js                |    8 ++++
 tools/KitClient.cpp                                  |    1 
 wsd/protocol.txt                                     |    5 +++
 8 files changed, 66 insertions(+), 3 deletions(-)

New commits:
commit 5646d938c1d2cc9744d9291b776c9b8bd6eaff0b
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Mon May 8 00:38:13 2017 +0200

    calc: added an address input field
    
    Change-Id: Ic030724e392693847a195b5e53866b40ebad7435
    Reviewed-on: https://gerrit.libreoffice.org/37359
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    Tested-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit 024e786e8591bbb75b6828ef3aad1a65574b7e97)
    Reviewed-on: https://gerrit.libreoffice.org/37380
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
index dffc728e..0bf35024 100644
--- a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -500,7 +500,13 @@ typedef enum
      *
      * The payload says if we are invalidating a row or column header.
      */
-    LOK_CALLBACK_INVALIDATE_HEADER = 33
+    LOK_CALLBACK_INVALIDATE_HEADER = 33,
+
+    /**
+     * The text content of the address field in Calc.
+     */
+    LOK_CALLBACK_CELL_ADDRESS = 34
+
 }
 LibreOfficeKitCallbackType;
 
diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index 295f261f..1fbc1944 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -1000,7 +1000,8 @@ void ChildSession::rememberEventsForInactiveUser(const int type, const std::stri
              type == LOK_CALLBACK_CELL_CURSOR ||
              type == LOK_CALLBACK_GRAPHIC_SELECTION ||
              type == LOK_CALLBACK_DOCUMENT_SIZE_CHANGED ||
-             type == LOK_CALLBACK_INVALIDATE_HEADER)
+             type == LOK_CALLBACK_INVALIDATE_HEADER ||
+             type == LOK_CALLBACK_CELL_ADDRESS)
     {
         auto lock(getLock());
         _stateRecorder.recordEvent(type, payload);
@@ -1230,6 +1231,9 @@ void ChildSession::loKitCallback(const int type, const std::string& payload)
     case LOK_CALLBACK_INVALIDATE_HEADER:
         sendTextFrame("invalidateheader: " + payload);
         break;
+    case LOK_CALLBACK_CELL_ADDRESS:
+        sendTextFrame("celladdress: " + payload);
+        break;
     default:
         LOG_ERR("Unknown callback event (" << type << "): " << payload);
     }
diff --git a/kit/KitHelper.hpp b/kit/KitHelper.hpp
index 63040a1e..efb0d5cb 100644
--- a/kit/KitHelper.hpp
+++ b/kit/KitHelper.hpp
@@ -111,6 +111,9 @@ namespace LOKitHelper
             return "COMMENT";
         case LOK_CALLBACK_INVALIDATE_HEADER:
             return "INVALIDATE_HEADER";
+        case LOK_CALLBACK_CELL_ADDRESS:
+            return "CELL_ADDRESS";
+
        }
 
         return std::to_string(type);
diff --git a/loleaflet/dist/toolbar.css b/loleaflet/dist/toolbar.css
index e6cc5dc8..70e091ad 100644
--- a/loleaflet/dist/toolbar.css
+++ b/loleaflet/dist/toolbar.css
@@ -52,9 +52,14 @@
     padding-left: 125px;
 }
 
+#addressInput {
+    height: 29px;
+    width: 100px;
+}
+
 #formulaInput {
     height: 29px;
-    width: 800px;
+    width: 700px;
 }
 
 #tb_toolbar-up_item_close {
diff --git a/loleaflet/dist/toolbar/toolbar.js b/loleaflet/dist/toolbar/toolbar.js
index b9041132..bc2d9cd0 100644
--- a/loleaflet/dist/toolbar/toolbar.js
+++ b/loleaflet/dist/toolbar/toolbar.js
@@ -598,6 +598,8 @@ $(function () {
 		name: 'formulabar',
 		items: [
 			{type: 'html',  id: 'left'},
+			{type: 'html', id: 'address', html: '<input id="addressInput" type="text">'},
+			{type: 'break'},
 			{type: 'button',  id: 'sum',  img: 'autosum', hint: _('Sum')},
 			{type: 'button',  id: 'function',  img: 'equal', hint: _('Function')},
 			{type: 'button', hidden: true, id: 'cancelformula',  img: 'cancel', hint: _('Cancel')},
@@ -608,6 +610,7 @@ $(function () {
 			onClick(e.target);
 		},
 		onRefresh: function(e) {
+			$('#addressInput').off('keyup', onAddressInput).on('keyup', onAddressInput);
 			$('#formulaInput').off('keyup', onFormulaInput).on('keyup', onFormulaInput);
 			$('#formulaInput').off('blur', onFormulaBarBlur).on('blur', onFormulaBarBlur);
 			$('#formulaInput').off('focus', onFormulaBarFocus).on('focus', onFormulaBarFocus);
@@ -852,6 +855,25 @@ function onInsertFile() {
 	return false;
 }
 
+function onAddressInput(e) {
+	if (e.keyCode === 13) {
+		// address control should not have focus anymore
+		map.focus();
+		var value = L.DomUtil.get('addressInput').value;
+		var command = {
+			ToPoint : {
+				type: 'string',
+				value: value
+			}
+
+		};
+		map.sendUnoCommand('.uno:GoToCell', command);
+	} else if (e.keyCode === 27) { // 27 = esc key
+		map.sendUnoCommand('.uno:Cancel');
+		map.focus();
+	}
+}
+
 function onFormulaInput(e) {
 	// keycode = 13 is 'enter'
 	if (e.keyCode === 13) {
@@ -1392,6 +1414,13 @@ map.on('commandresult', function (e) {
 	}
 });
 
+map.on('celladdress', function (e) {
+	if (document.activeElement !== L.DomUtil.get('addressInput')) {
+		// if the user is not editing the address field
+		L.DomUtil.get('addressInput').value = e.address;
+	}
+});
+
 map.on('cellformula', function (e) {
 	if (document.activeElement !== L.DomUtil.get('formulaInput')) {
 		// if the user is not editing the formula bar
@@ -1441,6 +1470,7 @@ map.on('updatepermission', function (e) {
 		$('.fontsizes-select').prop('disabled', false);
 
 		// Enable formula bar
+		$('#addressInput').prop('disabled', false);
 		$('#formulaInput').prop('disabled', false);
 		toolbar = w2ui.formulabar;
 		formulaBarButtons.forEach(function(id) {
@@ -1470,6 +1500,7 @@ map.on('updatepermission', function (e) {
 		$('.fontsizes-select').prop('disabled', true);
 
 		// Disable formula bar
+		$('#addressInput').prop('disabled', true);
 		$('#formulaInput').prop('disabled', true);
 
 		toolbar = w2ui.formulabar;
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 0d2bb93a..8611d3d6 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -364,6 +364,9 @@ L.TileLayer = L.GridLayer.extend({
 		else if (textMsg.startsWith('cellcursor:')) {
 			this._onCellCursorMsg(textMsg);
 		}
+		else if (textMsg.startsWith('celladdress:')) {
+			this._onCellAddressMsg(textMsg);
+		}
 		else if (textMsg.startsWith('cellformula:')) {
 			this._onCellFormulaMsg(textMsg);
 		}
@@ -499,6 +502,11 @@ L.TileLayer = L.GridLayer.extend({
 		}
 	},
 
+	_onCellAddressMsg: function (textMsg) {
+		var address = textMsg.substring(13);
+		this._map.fire('celladdress', {address: address});
+	},
+
 	_onCellFormulaMsg: function (textMsg) {
 		var formula = textMsg.substring(13);
 		this._selectionTextContent = formula;
diff --git a/tools/KitClient.cpp b/tools/KitClient.cpp
index 95597b35..8aa38e73 100644
--- a/tools/KitClient.cpp
+++ b/tools/KitClient.cpp
@@ -77,6 +77,7 @@ extern "C"
             CASE(REDLINE_TABLE_ENTRY_MODIFIED);
             CASE(COMMENT);
             CASE(INVALIDATE_HEADER);
+            CASE(CELL_ADDRESS);
 #undef CASE
         }
         std::cout << " payload: " << payload << std::endl;
diff --git a/wsd/protocol.txt b/wsd/protocol.txt
index e686430b..0c13bca7 100644
--- a/wsd/protocol.txt
+++ b/wsd/protocol.txt
@@ -375,6 +375,11 @@ comment:
     Signals that comment has either been added, removed or modified. See
     LOK_CALLBACK_COMMENT for JSON structure.
 
+celladdress: <payload>
+
+    Message is sent anytime the content of the address input box should be updated.
+    The <payload> is a string representing the new content.
+
 stats: <key> <value>
 
     Contains statistical data. Eg: 'stats: wopiloadduration 5' means that


More information about the Libreoffice-commits mailing list