loleaflet/src/control/Control.PartsPreview.js |   75 ++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 11 deletions(-)

New commits:
commit a3a49e43ffc4a40cf60ba9c172e336a3d4770fc9
Author: Henry Castro <hcas...@collabora.com>
Date:   Sat Apr 23 11:47:10 2016 -0400

    loleaflet: update part previews when undo/redo action

diff --git a/loleaflet/src/control/Control.PartsPreview.js 
b/loleaflet/src/control/Control.PartsPreview.js
index 897e1e9..ec7a0ce 100644
--- a/loleaflet/src/control/Control.PartsPreview.js
+++ b/loleaflet/src/control/Control.PartsPreview.js
@@ -40,13 +40,17 @@ L.Control.PartsPreview = L.Control.extend({
                                        
$('.scroll-container').mCustomScrollbar('update');
                                }, this), 500);
                                for (var i = 0; i < parts; i++) {
-                                       
this._previewTiles.push(this._createPreview(i));
+                                       
this._previewTiles.push(this._createPreview(i, e.partNames[i]));
                                }
                                
L.DomUtil.addClass(this._previewTiles[selectedPart], 'preview-img-selected');
                                this._previewInitialized = true;
                        }
                        else
                        {
+                               if (e.partNames !== undefined) {
+                                       this._syncPreviews(e);
+                               }
+
                                // change the border style of the selected 
preview.
                                for (var j = 0; j < parts; j++) {
                                        
L.DomUtil.removeClass(this._previewTiles[j], 'preview-img-selected');
@@ -56,13 +60,12 @@ L.Control.PartsPreview = L.Control.extend({
                }
        },
 
-       _createPreview: function (i) {
-               var id = 'preview-tile' + i;
+       _createPreview: function (i, hashCode) {
                var frame = L.DomUtil.create('div', 'preview-frame', 
this._partsPreviewCont);
                L.DomUtil.create('span', 'preview-helper', frame);
                var imgClassName = 'preview-img';
                var img = L.DomUtil.create('img', imgClassName, frame);
-               img.id = id;
+               img.hash = hashCode;
                img.src = L.Icon.Default.imagePath + '/preview_placeholder.png';
                L.DomEvent
                        .on(img, 'click', L.DomEvent.stopPropagation)
@@ -75,7 +78,7 @@ L.Control.PartsPreview = L.Control.extend({
        },
 
        _setPart: function (e) {
-               var part =  e.target.id.match(/\d+/g)[0];
+               var part = $('.parts-preview .mCSB_container 
.preview-frame').index(e.target.parentNode);
                if (part !== null) {
                        this._map.setPart(parseInt(part));
                }
@@ -87,6 +90,61 @@ L.Control.PartsPreview = L.Control.extend({
                }
        },
 
+       _syncPreviews: function (e) {
+               var it = 0;
+               var parts = e.parts;
+               if (parts !== this._previewTiles.length) {
+                       if (Math.abs(parts - this._previewTiles.length) === 1) {
+                               if (parts > this._previewTiles.length) {
+                                       for (it = 0; it < parts; it++) {
+                                               if (it === 
this._previewTiles.length) {
+                                                       
this._insertPreview({selectedPart: it - 1, hashCode: e.partNames[it]});
+                                                       break;
+                                               }
+                                               if (this._previewTiles[it].hash 
!== e.partNames[it]) {
+                                                       
this._insertPreview({selectedPart: it, hashCode: e.partNames[it]});
+                                                       break;
+                                               }
+                                       }
+                               }
+                               else {
+                                       for (it = 0; it < 
this._previewTiles.length; it++) {
+                                               if (it === e.partNames.length ||
+                                                   this._previewTiles[it].hash 
!== e.partNames[it]) {
+                                                       
this._deletePreview({selectedPart: it});
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       else {
+                               // sync all, should never happen
+                               while (this._previewTiles.length < 
e.partNames.length) {
+                                       this._insertPreview({selectedPart: 
this._previewTiles.length - 1,
+                                                            hashCode: 
e.partNames[this._previewTiles.length]});
+                               }
+
+                               while (this._previewTiles.length > 
e.partNames.length) {
+                                       this._deletePreview({selectedPart: 
this._previewTiles.length - 1});
+                               }
+
+                               for (it = 0; it < e.partNames.length; it++) {
+                                       this._previewTiles[it].hash = 
e.partNames[it];
+                                       this._previewTiles[it].src = 
L.Icon.Default.imagePath + '/preview_placeholder.png';
+                                       this._map.getPreview(it, it, 180, 180, 
{autoUpdate: this.options.autoUpdate});
+                               }
+                       }
+               }
+               else {
+                       // update hash code when user click insert slide.
+                       for (it = 0; it < parts; it++) {
+                               if (this._previewTiles[it].hash !== 
e.partNames[it]) {
+                                       this._previewTiles[it].hash = 
e.partNames[it];
+                               }
+                       }
+               }
+       },
+
        _updatePreview: function (e) {
                if (this._map.getDocType() === 'presentation') {
                        // the scrollbar has to be re-initialized here else it 
doesn't work
@@ -104,18 +162,13 @@ L.Control.PartsPreview = L.Control.extend({
        },
 
        _updatePreviewIds: function () {
-               // TO DO: preview-tileX prefix is unneccessary, can be removed 
completely
-               // since we have them in this._previewTiles[]
-               for (var i = 0; i < this._previewTiles.length; i++) {
-                       this._previewTiles[i].id = 'preview-tile' + i;
-               }
                $('.parts-preview').mCustomScrollbar('update');
        },
 
        _insertPreview: function (e) {
                if (this._map.getDocType() === 'presentation') {
                        var newIndex = e.selectedPart + 1;
-                       var newPreview = this._createPreview(newIndex);
+                       var newPreview = this._createPreview(newIndex, 
(e.hashCode === undefined ? null : e.hashCode));
 
                        // insert newPreview to newIndex position
                        this._previewTiles.splice(newIndex, 0, newPreview);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to