loleaflet/css/notebookbar.css                       |    8 ++
 loleaflet/src/control/Control.NotebookbarBuilder.js |   77 +++++++++++++++++---
 2 files changed, 77 insertions(+), 8 deletions(-)

New commits:
commit 6d7f7345d31f729d0a17b6564b5f02ffed9f901d
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Mon Apr 27 09:41:25 2020 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Fri May 1 17:12:17 2020 +0200

    notebookbar: implemented color picker control
    
    Change-Id: I0f9609fd0068592e1fa8fcbc564c193fee06b20b
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93275
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/loleaflet/css/notebookbar.css b/loleaflet/css/notebookbar.css
index 3d79652ad..bb8c05b3c 100644
--- a/loleaflet/css/notebookbar.css
+++ b/loleaflet/css/notebookbar.css
@@ -62,6 +62,14 @@
        cursor: pointer;
 }
 
+.unotoolbutton.notebookbar .selected-color {
+       height: 5px;
+       width: 24px;
+       position: relative;
+       top: -4px;
+       border: 1px solid silver;
+}
+
 /* Reset attributes control */
 #clearFormatting.notebookbar div img {
        width: 24px !important;
diff --git a/loleaflet/src/control/Control.NotebookbarBuilder.js 
b/loleaflet/src/control/Control.NotebookbarBuilder.js
index e1c922f25..f70f1d3c5 100644
--- a/loleaflet/src/control/Control.NotebookbarBuilder.js
+++ b/loleaflet/src/control/Control.NotebookbarBuilder.js
@@ -16,15 +16,15 @@ L.Control.NotebookbarBuilder = 
L.Control.JSDialogBuilder.extend({
                this._controlHandlers['listbox'] = this._comboboxControl;
                this._controlHandlers['pushbutton'] = function() { return 
false; };
 
-               this._toolitemHandlers['.uno:XLineColor'] = function() {};
+               this._toolitemHandlers['.uno:XLineColor'] = this._colorControl;
                this._toolitemHandlers['.uno:SelectWidth'] = function() {};
-               this._toolitemHandlers['.uno:FontColor'] = function() {};
-               this._toolitemHandlers['.uno:BackColor'] = function() {};
-               this._toolitemHandlers['.uno:CharBackColor'] = function() {};
-               this._toolitemHandlers['.uno:BackgroundColor'] = function() {};
-               this._toolitemHandlers['.uno:FrameLineColor'] = function() {};
-               this._toolitemHandlers['.uno:Color'] = function() {};
-               this._toolitemHandlers['.uno:FillColor'] = function() {};
+               this._toolitemHandlers['.uno:FontColor'] = this._colorControl;
+               this._toolitemHandlers['.uno:BackColor'] = this._colorControl;
+               this._toolitemHandlers['.uno:CharBackColor'] = 
this._colorControl;
+               this._toolitemHandlers['.uno:BackgroundColor'] = 
this._colorControl;
+               this._toolitemHandlers['.uno:FrameLineColor'] = 
this._colorControl;
+               this._toolitemHandlers['.uno:Color'] = this._colorControl;
+               this._toolitemHandlers['.uno:FillColor'] = this._colorControl;
                this._toolitemHandlers['vnd.sun.star.findbar:FocusToFindbar'] = 
function() {};
        },
 
@@ -43,6 +43,67 @@ L.Control.NotebookbarBuilder = 
L.Control.JSDialogBuilder.extend({
                return false;
        },
 
+       _colorControl: function(parentContainer, data, builder) {
+               var titleOverride = builder._getTitleForControlWithId(data.id);
+               if (titleOverride)
+                       data.text = titleOverride;
+
+               data.id = data.id ? data.id : (data.command ? 
data.command.replace('.uno:', '') : undefined);
+
+               data.text = builder._cleanText(data.text);
+
+               if (data.command) {
+                       var div = builder._createIdentifiable('div', 
'unotoolbutton ' + builder.options.cssClass + ' ui-content unospan', 
parentContainer, data);
+
+                       var id = data.command.substr('.uno:'.length);
+                       div.id = id;
+
+                       div.title = data.text;
+                       $(div).tooltip();
+
+                       var icon = builder._createIconPath(data.command);
+                       var buttonId = id + 'img';
+
+                       var button = L.DomUtil.create('img', 'ui-content 
unobutton', div);
+                       button.src = icon;
+                       button.id = buttonId;
+
+                       var valueNode =  L.DomUtil.create('div', 
'selected-color', div);
+
+                       var selectedColor;
+
+                       var updateFunction = function (color) {
+                               selectedColor = builder._getCurrentColor(data, 
builder);
+                               valueNode.style.backgroundColor = color ? color 
: selectedColor;
+                       };
+
+                       updateFunction();
+
+                       builder.map.on('commandstatechanged', function(e) {
+                               if (e.commandName === data.command)
+                                       updateFunction();
+                       }, this);
+
+                       var noColorControl = (data.command !== '.uno:FontColor' 
&& data.command !== '.uno:Color');
+
+                       $(div).click(function() {
+                               $(div).w2color({ color: selectedColor, 
transparent: noColorControl }, function (color) {
+                                       if (color != null) {
+                                               if (color) {
+                                                       updateFunction('#' + 
color);
+                                                       
builder._sendColorCommand(builder, data, color);
+                                               } else {
+                                                       
updateFunction('#FFFFFF');
+                                                       
builder._sendColorCommand(builder, data, 'transparent');
+                                               }
+                                       }
+                               });
+                       });
+               }
+
+               return false;
+       },
+
        build: function(parent, data, hasVerticalParent, parentHasManyChildren) 
{
                this._amendJSDialogData(data);
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to