| <!DOCTYPE HTML> |
| <html i18n-values="dir:textdirection;"> |
| <head> |
| <meta charset="utf-8"> |
| <title>Slideshow</title> |
| <style> |
| |
| body { |
| overflow: hidden; |
| background: black; |
| } |
| |
| #glow { |
| left: 0; |
| right: 0; |
| bottom: 30px; |
| height: 8px; |
| opacity: .4; |
| position: absolute; |
| background: -webkit-linear-gradient(transparent, white); |
| } |
| |
| #main { |
| position: absolute; |
| left: 0; |
| right:0; |
| top: 0; |
| bottom: 30px; |
| overflow: hidden; |
| } |
| |
| #playercontrols { |
| bottom: 0; |
| left: 0; |
| z-index: 999; |
| height: 30px; |
| opacity: .9; |
| right: 0; |
| align:center; |
| -webkit-box-align: center; |
| -webkit-box-pack: center; |
| display: -webkit-box; |
| position: absolute; |
| background: -webkit-linear-gradient(#323232, #070707); |
| } |
| |
| #prevbutton > div { |
| background: url('chrome://resources/images/mediaplayer_prev.png'); |
| background-repeat: no-repeat; |
| background-position: 4px 8px; |
| width: 100%; |
| height: 30px; |
| z-index: 9999; |
| } |
| |
| .currentpicture { |
| width: 100%; |
| height: 100%; |
| position: absolute; |
| top: 0; |
| -webkit-transition-property: left; |
| -webkit-transition-duration: 1s; |
| display: -webkit-box; |
| -webkit-box-align: center; |
| -webkit-box-pack: center; |
| pointer-events: none; |
| } |
| |
| .comingfromleft { |
| left: -100%; |
| } |
| |
| .comingfromright { |
| left: 100%; |
| } |
| |
| #nextbutton > div { |
| background: url('chrome://resources/images/mediaplayer_next.png'); |
| background-repeat: no-repeat; |
| background-position: 4px 8px; |
| width: 100%; |
| height: 30px; |
| z-index: 9999; |
| } |
| |
| button { |
| z-index: 9999; |
| cursor: pointer; |
| width: 28px; |
| height: 30px; |
| webkit-appearance: none; |
| padding: 0; |
| border: 0; |
| background: transparent; |
| } |
| |
| button:hover { |
| background: -webkit-linear-gradient(#6a7eac, #000000); |
| } |
| |
| </style> |
| <script src="chrome://resources/js/local_strings.js"></script> |
| <script src="chrome://resources/js/media_common.js"></script> |
| <script> |
| |
| document.addEventListener('DOMContentLoaded', load); |
| |
| document.onselectstart = function(e) { |
| e.preventDefault(); |
| }; |
| |
| function $(o) { |
| return document.getElementById(o); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| // Document Functions: |
| |
| var currentPicture = null; |
| var prevPicture = null; |
| var currentFileOffset = 0; |
| var filelist = []; |
| var moveRight = false; |
| var lastimg = null; |
| |
| function loadedPicture() { |
| if (prevPicture) { |
| if (moveRight) { |
| prevPicture.style.left = '-100%'; |
| } else { |
| prevPicture.style.left = '100%'; |
| } |
| } |
| if (window.innerHeight < lastimg.height || |
| window.innerWidth < lastimg.width) { |
| if (lastimg.width > lastimg.height) { |
| lastimg.style.height = 'auto'; |
| lastimg.style.width = '100%'; |
| } else { |
| lastimg.style.width = 'auto'; |
| lastimg.style.height = '100%'; |
| } |
| } |
| setTimeout(function() { |
| currentPicture.style.left = '0'; |
| }, 10); |
| } |
| |
| function transitionTo(filePath, fromTheRight) { |
| if (currentPicture) { |
| if (prevPicture) { |
| $('main').removeChild(prevPicture); |
| } |
| prevPicture = currentPicture; |
| } |
| |
| currentPicture = document.createElement('div'); |
| |
| $('main').appendChild(currentPicture); |
| if (fromTheRight) { |
| currentPicture.className = 'currentpicture comingfromright'; |
| } else { |
| currentPicture.className = 'currentpicture comingfromleft'; |
| } |
| var image = document.createElement('img'); |
| lastimg = image; |
| image.onload = loadedPicture; |
| image.onerror = loadedPicture; |
| image.src = filePath; |
| currentPicture.appendChild(image); |
| moveRight = fromTheRight; |
| } |
| |
| function browseFileResult() { |
| currentFileOffset = 0; |
| if (filelist.length > 0) { |
| transitionTo(filelist[currentFileOffset], true); |
| } |
| } |
| |
| function keyPressed(e) { |
| // Left Pressed |
| if (e.keyCode == 37) { |
| if (currentFileOffset > 0) { |
| currentFileOffset--; |
| transitionTo(filelist[currentFileOffset], false); |
| } |
| } |
| // Right Pressed |
| if (e.keyCode == 39) { |
| if (currentFileOffset < (filelist.length - 1)) { |
| currentFileOffset++; |
| transitionTo(filelist[currentFileOffset], true); |
| } |
| } |
| } |
| |
| function load() { |
| localStrings = new LocalStrings(); |
| |
| var views = chrome.extension.getViews(); |
| for (var i = 0; i < views.length; i++) { |
| if (views[i].g_slideshow_data) { |
| filelist = views[i].g_slideshow_data; |
| views[i].g_slideshow_data = null; |
| } |
| } |
| |
| browseFileResult(); |
| } |
| |
| function prevButtonClick() { |
| if (currentFileOffset > 0) { |
| currentFileOffset--; |
| transitionTo(filelist[currentFileOffset], false); |
| } |
| } |
| |
| function nextButtonClick() { |
| if (currentFileOffset < (filelist.length - 1)) { |
| currentFileOffset++; |
| transitionTo(filelist[currentFileOffset], true); |
| } |
| } |
| |
| </script> |
| <body onkeydown="keyPressed(event)"> |
| <div id="main"></div> |
| <div id="glow"></div> |
| <div id="playercontrols"> |
| <button id="prevbutton" onclick="prevButtonClick()"> |
| <div></div> |
| </button> |
| <button id="nextbutton" onclick="nextButtonClick()"> |
| <div></div> |
| </button> |
| </div> |
| </body> |
| </html> |