diff options
author | Henry Castro <hcastro@collabora.com> | 2019-10-29 19:53:24 -0400 |
---|---|---|
committer | Henry Castro <hcastro@collabora.com> | 2019-10-31 17:10:52 +0100 |
commit | 74adf2f61a52f9c13aa1f76ae816143c5038c514 (patch) | |
tree | 2487f3eb102abe1989eeb594260a8dd91e76d579 | |
parent | 5a0e357f78759be09ab21e06156f1a749244c2c1 (diff) |
loleaflet: parameterize the slide preview control in Impress document
The initial design of the preview control was singleton object, but now
there are new requirements to add a new instance of the preview control
to show in dialog wizard.
Change-Id: Ieec9dca244a87dd067e6c9e51408258b0f528e74
Reviewed-on: https://gerrit.libreoffice.org/81724
Reviewed-by: Henry Castro <hcastro@collabora.com>
Tested-by: Henry Castro <hcastro@collabora.com>
-rw-r--r-- | loleaflet/src/control/Control.PartsPreview.js | 62 |
1 files changed, 39 insertions, 23 deletions
diff --git a/loleaflet/src/control/Control.PartsPreview.js b/loleaflet/src/control/Control.PartsPreview.js index 0d909645e..fa476ef3b 100644 --- a/loleaflet/src/control/Control.PartsPreview.js +++ b/loleaflet/src/control/Control.PartsPreview.js @@ -12,10 +12,24 @@ L.Control.PartsPreview = L.Control.extend({ }, partsFocused: false, + initialize: function (container, preview, options) { + L.setOptions(this, options); + + if (!container) { + container = L.DomUtil.get('presentation-controls-wrapper'); + } + + if (!preview) { + preview = L.DomUtil.get('slide-sorter'); + } + + this._container = container; + this._partsPreviewCont = preview; + }, + onAdd: function (map) { this._previewInitialized = false; this._previewTiles = []; - this._partsPreviewCont = L.DomUtil.get('slide-sorter'); this._direction = window.mode.isMobile() ? 'x' : 'y'; this._scrollY = 0; @@ -36,7 +50,7 @@ L.Control.PartsPreview = L.Control.extend({ } if (docType === 'presentation' || docType === 'drawing') { - var presentationControlWrapperElem = L.DomUtil.get('presentation-controls-wrapper'); + var presentationControlWrapperElem = this._container; var visible = L.DomUtil.getStyle(presentationControlWrapperElem, 'display'); if (visible === 'none') return; @@ -45,16 +59,18 @@ L.Control.PartsPreview = L.Control.extend({ // make room for the preview var control = this; var docContainer = this._map.options.documentContainer; - L.DomUtil.addClass(docContainer, 'parts-preview-document'); - setTimeout(L.bind(function () { - this._map.invalidateSize(); - $('.scroll-container').mCustomScrollbar('update'); - }, this), 500); + if (!L.DomUtil.hasClass(docContainer, 'parts-preview-document')) { + L.DomUtil.addClass(docContainer, 'parts-preview-document'); + setTimeout(L.bind(function () { + this._map.invalidateSize(); + $('.scroll-container').mCustomScrollbar('update'); + }, this), 500); + } var previewContBB = this._partsPreviewCont.getBoundingClientRect(); var bottomBound; if (this._direction === 'x') { - $('#presentation-controls-wrapper').css({ width: '100%'}); - $('#slide-sorter').css({ height: this.options.maxHeight + 'px' }); + $(this._container).css({ width: '100%'}); + $(this._partsPreviewCont).css({ height: this.options.maxHeight + 'px' }); this._previewContTop = previewContBB.left; bottomBound = previewContBB.right + previewContBB.width / 2; } else { @@ -62,7 +78,7 @@ L.Control.PartsPreview = L.Control.extend({ bottomBound = previewContBB.bottom + previewContBB.height / 2; } - $('#slide-sorter').mCustomScrollbar({ + $(this._partsPreviewCont).mCustomScrollbar({ axis: this._direction, theme: 'dark-thick', scrollInertia: 0, @@ -91,7 +107,7 @@ L.Control.PartsPreview = L.Control.extend({ } }, this); - this._scrollContainer = $('#slide-sorter .mCSB_container').get(0); + this._scrollContainer = $(this._partsPreviewCont).find('.mCSB_container').get(0); // Add a special frame just as a drop-site for reordering. var frame = L.DomUtil.create('div', 'preview-frame', this._scrollContainer); @@ -222,31 +238,31 @@ L.Control.PartsPreview = L.Control.extend({ if (e === 'prev' || e === 'next') { this._map.setPart(e); var nodePos; - var node = $('#slide-sorter .mCSB_container .preview-frame')[this._map.getCurrentPartNumber()]; + var node = $(this._partsPreviewCont).find('.mCSB_container .preview-frame')[this._map.getCurrentPartNumber()]; if (!isVisible(node)) { if (e === 'prev') { setTimeout(function () { - $('#slide-sorter').mCustomScrollbar('scrollTo', node); + $(this._partsPreviewCont).mCustomScrollbar('scrollTo', node); }, 50); } else if (this._direction === 'x') { var nodeWidth = $(node).width(); - var sliderWidth = $('#slide-sorter').width(); + var sliderWidth = $(this._partsPreviewCont).width(); nodePos = $(node).position().left; setTimeout(function () { - $('#slide-sorter').mCustomScrollbar('scrollTo', nodePos-(sliderWidth-nodeWidth-nodeWidth/2)); + $(this._partsPreviewCont).mCustomScrollbar('scrollTo', nodePos-(sliderWidth-nodeWidth-nodeWidth/2)); }, 50); } else { var nodeHeight = $(node).height(); - var sliderHeight= $('#slide-sorter').height(); + var sliderHeight= $(this._partsPreviewCont).height(); nodePos = $(node).position().top; setTimeout(function () { - $('#slide-sorter').mCustomScrollbar('scrollTo', nodePos-(sliderHeight-nodeHeight-nodeHeight/2)); + $(this._partsPreviewCont).mCustomScrollbar('scrollTo', nodePos-(sliderHeight-nodeHeight-nodeHeight/2)); }, 50); } } return; } - var part = $('#slide-sorter .mCSB_container .preview-frame').index(e.target.parentNode); + var part = $(this._partsPreviewCont).find('.mCSB_container .preview-frame').index(e.target.parentNode); if (part !== null) { var partId = parseInt(part) - 1; // The first part is just a drop-site for reordering. @@ -335,7 +351,7 @@ L.Control.PartsPreview = L.Control.extend({ }, _updatePreviewIds: function () { - $('#slide-sorter').mCustomScrollbar('update'); + $(this._partsPreviewCont).mCustomScrollbar('update'); }, _insertPreview: function (e) { @@ -412,7 +428,7 @@ L.Control.PartsPreview = L.Control.extend({ _handleDragStart: function (e) { // To avoid having to add a new message to move an arbitrary part, let's select the // slide that is being dragged. - var part = $('#slide-sorter .mCSB_container .preview-frame').index(e.target.parentNode); + var part = $(this._partsPreviewCont).find('.mCSB_container .preview-frame').index(e.target.parentNode); if (part !== null) { var partId = parseInt(part) - 1; // The first part is just a drop-site for reordering. this.partsPreview._map.setPart(partId); @@ -448,7 +464,7 @@ L.Control.PartsPreview = L.Control.extend({ e.stopPropagation(); } - var part = $('#slide-sorter .mCSB_container .preview-frame').index(e.target.parentNode); + var part = $(this._partsPreviewCont).find('.mCSB_container .preview-frame').index(e.target.parentNode); if (part !== null) { var partId = parseInt(part) - 1; // First frame is a drop-site for reordering. if (partId < 0) @@ -473,6 +489,6 @@ L.Control.PartsPreview = L.Control.extend({ }); -L.control.partsPreview = function (options) { - return new L.Control.PartsPreview(options); +L.control.partsPreview = function (container, preview, options) { + return new L.Control.PartsPreview(container, preview, options); }; |