From 8f038bb25466a19cc0b3f49222c6351682e96c85 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 2 Dec 2016 22:38:45 +0100 Subject: rich sidebar previews in the sidebar Signed-off-by: Robin Appelman --- js/viewer.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'js/viewer.js') diff --git a/js/viewer.js b/js/viewer.js index 63f32c5..18baf09 100755 --- a/js/viewer.js +++ b/js/viewer.js @@ -115,3 +115,50 @@ $(document).ready(function(){ } }); + +(function () { + + var SidebarPreview = function () { + }; + + SidebarPreview.prototype = { + attach: function (manager) { + var handler = this.handlePreview.bind(this); + $.each(videoViewer.mimeTypes, function (key, value) { + if (value !== 'text') { // let the regular text preview handle this + manager.addPreviewHandler(value, handler); + } + }); + }, + + handlePreview: function (model, $thumbnailDiv, $thumbnailContainer, fallback) { + var video = document.createElement('video'); + if (video.canPlayType(model.get('mimetype'))) { + $thumbnailContainer.addClass('large'); + $thumbnailDiv.removeClass('icon-32'); + $thumbnailDiv.children('.stretcher').remove(); + video.src = OC.linkToRemoteBase('files' + model.getFullPath()); + video.autoplay = true; + video.muted = true; + video.loop = true; + video.addEventListener('loadeddata', function () { + $thumbnailDiv.removeClass('icon-loading'); + setTimeout(video.play.bind(video), 100); + }); + $thumbnailDiv.append(video); + video.load(); + video.onclick = function() { + if (video.paused) { + video.play(); + } else { + video.pause(); + } + }; + } else { + fallback(); + } + } + }; + + OC.Plugins.register('OCA.Files.SidebarPreviewManager', new SidebarPreview()); +})(); -- cgit v1.2.3