loleaflet/css/mobilewizard.css                   |   10 +--
 loleaflet/src/control/ColorPicker.js             |   63 ++++++++++++++++++-----
 loleaflet/src/control/Control.JSDialogBuilder.js |    2 
 3 files changed, 59 insertions(+), 16 deletions(-)

New commits:
commit c96e0d7d230eb1b038489c1632bb4c214d96e500
Author:     Marco Cecchetti <marco.cecche...@collabora.com>
AuthorDate: Mon Jun 29 11:32:15 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Mon Jun 29 22:51:42 2020 +0200

    leaflet: mobile: color picker has no automatic color control
    
    Change-Id: I97b5e2b3e92c0c98a3835c71cd2d7d5d3b298ae4
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97393
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/loleaflet/css/mobilewizard.css b/loleaflet/css/mobilewizard.css
index 0d9ef8a62..9cbad6825 100644
--- a/loleaflet/css/mobilewizard.css
+++ b/loleaflet/css/mobilewizard.css
@@ -67,7 +67,7 @@ span#main-menu-btn-icon {
        border-radius: 100px;
 }
 
-.no-color-selected {
+.no-color-selected, .auto-color-selected {
        text-align: center;
        font-size: 30pt;
        line-height: 32px;
@@ -106,7 +106,7 @@ span#main-menu-btn-icon {
        padding: 0 4%;
 }
 
-.colors-container-no-color-row {
+.colors-container-no-color-row, .colors-container-auto-color-row{
        display: flex;
        justify-content: space-between;
        height: 50px;
@@ -120,19 +120,19 @@ span#main-menu-btn-icon {
        padding-bottom: 0px;
 }
 
-.no-color-control-label {
+.no-color-control-label, .auto-color-control-label {
        display:table-cell;
        padding-left: 4px;
        vertical-align: middle;
 }
 
-.no-color-control-mark {
+.no-color-control-mark, .auto-color-control-mark {
        color: #0b87e7 !important;
        font-size: larger;
        line-height: 0;
 }
 
-.no-color-control-icon {
+.no-color-control-icon, .auto-color-control-icon {
        display: table-cell;
        height: 32px !important;
        width: 32px !important;
diff --git a/loleaflet/src/control/ColorPicker.js 
b/loleaflet/src/control/ColorPicker.js
index 153356f65..8428dc810 100644
--- a/loleaflet/src/control/ColorPicker.js
+++ b/loleaflet/src/control/ColorPicker.js
@@ -10,6 +10,7 @@ L.ColorPicker = L.Class.extend({
        options: {
                selectedColor: '#ff0000',
                noColorControl: true,
+               autoColorControl: false,
                selectionCallback: function () {}
        },
 
@@ -55,10 +56,15 @@ L.ColorPicker = L.Class.extend({
 
        initialize: function (selectedColorSample, options) {
                L.setOptions(this, options);
+               if (this.options.noColorControl && 
this.options.autoColorControl) {
+                       this.options.autoColorControl = false;
+                       console.warn('L.ColorPicker: requested both no color 
and auto color control');
+               }
                this._id = L.ColorPicker.ID++;
                this._basicColorSampleIdTag = L.ColorPicker.ID_TAG + this._id + 
'-basic-color-';
                this._tintSampleIdTag = L.ColorPicker.ID_TAG + this._id + 
'-tint-';
                this._noColorControlId = L.ColorPicker.ID_TAG + this._id + 
'-no-color';
+               this._autoColorControlId = L.ColorPicker.ID_TAG + this._id + 
'-auto-color';
                this._createBasicColorSelectionMark();
                this._selectedColorElement = selectedColorSample;
                this._selectedColor = this.options.selectedColor;
@@ -105,26 +111,31 @@ L.ColorPicker = L.Class.extend({
 
        _createControl: function () {
                var children = [];
-               if (this.options.noColorControl)
-                       children.push(this._createNoColorControl());
+               if (this.options.noColorControl || 
this.options.autoColorControl)
+                       children.push(this._createPseudoColorControl());
                children.push(this._createBasicColorSamples());
                children.push(this._createTintSamples());
                return {type: 'divcontainer', style: 'colors-container', 
children: children};
        },
 
-       _createNoColorControl: function () {
+       _createPseudoColorControl: function () {
+               var noColorControl = this.options.noColorControl;
                var icon = {
                        type: 'fixedtext',
                        text: '',
-                       style: 'no-color-control-icon'
+                       style: noColorControl ? 'no-color-control-icon' : 
'auto-color-control-icon'
                };
-               var label = {type: 'fixedtext', style: 
'no-color-control-label', text: _('No color')};
+               var label =
+                       noColorControl ? {type: 'fixedtext', style: 
'no-color-control-label', text: _('No color')}
+                                                       : {type: 'fixedtext', 
style: 'auto-color-control-label', text: _('Automatic color')};
                var description = {type: 'divcontainer', children: [icon, 
label]};
-               var checked = {type:'fixedtext', id: this._noColorControlId, 
style: 'no-color-control-mark', text: ''};
+               var checked =
+                       noColorControl ? {type:'fixedtext', id: 
this._noColorControlId, style: 'no-color-control-mark', text: ''}
+                                                       : {type:'fixedtext', 
id: this._autoColorControlId, style: 'auto-color-control-mark', text: ''};
                var container = {
                        type: 'divcontainer',
-                       style: 'colors-container-no-color-row',
-                       handlers: [{event: 'click', handler: 
L.bind(this.onClickNoColor, this)}],
+                       style: noColorControl ? 'colors-container-no-color-row' 
: 'colors-container-auto-color-row',
+                       handlers: [{event: 'click', handler: 
L.bind(this.onClickPseudoColor, this)}],
                        children: [description, checked]
                };
                return container;
@@ -230,10 +241,11 @@ L.ColorPicker = L.Class.extend({
                return sampleElem.name;
        },
 
-       onClickNoColor: function () {
+       onClickPseudoColor: function () {
                this._selectedColor = '#';
                this._unselectSample(this._selectedTintIndex, 
L.ColorPicker.TINT);
-               this._updateNoColorControl(true);
+               this._updatePseudoColorControl(true);
+               // transparent is fine for both no color and automatic color
                this._selectionCallback('transparent');
        },
 
@@ -256,7 +268,7 @@ L.ColorPicker = L.Class.extend({
        _selectTintIndex: function (tintIndex) {
                this._selectedTintIndex = this._updateSelectedSample(tintIndex, 
this._selectedTintIndex, L.ColorPicker.TINT);
                this._selectedColor = '#' + 
this._getColorCode(this._selectedTintIndex, L.ColorPicker.TINT);
-               this._updateNoColorControl(false);
+               this._updatePseudoColorControl(false);
                this._updateSelectedColorElement();
                
this._selectionCallback(this._getColorCode(this._selectedTintIndex, 
L.ColorPicker.TINT));
        },
@@ -313,6 +325,13 @@ L.ColorPicker = L.Class.extend({
                }
        },
 
+       _updatePseudoColorControl: function (checked) {
+               if (this.options.noColorControl)
+                       this._updateNoColorControl(checked);
+               else if (this.options.autoColorControl)
+                       this._updateAutoColorControl(checked);
+       },
+
        _updateNoColorControl: function (checked) {
                var noColorElem = L.DomUtil.get(this._noColorControlId);
                if (noColorElem) {
@@ -335,6 +354,28 @@ L.ColorPicker = L.Class.extend({
                }
        },
 
+       _updateAutoColorControl: function (checked) {
+               var autoColorElem = L.DomUtil.get(this._autoColorControlId);
+               if (autoColorElem) {
+                       if (autoColorElem.checked !== checked) {
+                               autoColorElem.checked = checked;
+                               if (this._selectedColorElement) {
+                                       if (checked) {
+                                               autoColorElem.innerHTML = 
'&#10004;';
+                                               // update value for the related 
menu entry
+                                               
L.DomUtil.addClass(this._selectedColorElement, 'auto-color-selected');
+                                               
this._selectedColorElement.innerHTML = '\\';
+                                       } else {
+                                               autoColorElem.innerHTML = '';
+                                               // update value for the related 
menu entry
+                                               
L.DomUtil.removeClass(this._selectedColorElement, 'auto-color-selected');
+                                               
this._selectedColorElement.innerHTML = '';
+                                       }
+                               }
+                       }
+               }
+       },
+
        _getSampleElement: function (index, type) {
                var sampleId;
                if (type === L.ColorPicker.BASIC_COLOR) {
diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js 
b/loleaflet/src/control/Control.JSDialogBuilder.js
index 2542e707b..ba6ee8fce 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -1916,6 +1916,7 @@ L.Control.JSDialogBuilder = L.Control.extend({
 
                var iconPath = builder._createIconURL(data.command);
                var noColorControl = (data.command !== '.uno:FontColor' && 
data.command !== '.uno:Color');
+               var autoColorControl = (data.command === '.uno:FontColor' || 
data.command === '.uno:Color');
 
                var callback = function(color) {
                        builder._sendColorCommand(builder, data, color);
@@ -1926,6 +1927,7 @@ L.Control.JSDialogBuilder = L.Control.extend({
                        {
                                selectedColor: selectedColor,
                                noColorControl: noColorControl,
+                               autoColorControl: autoColorControl,
                                selectionCallback: callback
                        });
                builder._colorPickers.push(colorPickerControl);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to