/* exported TitleBar */ /* global LazyLoader, ModeManager, MODE_PICKER, MODE_PLAYER, PlayerView, AlbumArtCache, App */ 'use strict'; var TitleBar = { get view() { return document.getElementById('title'); }, get titleText() { return document.querySelector('#title-text bdi'); }, get playerIcon() { return document.getElementById('title-player'); }, get doneButton() { return document.getElementById('title-done'); }, get scanProgress() { return document.getElementById('scan-progress'); }, get scanSpinner() { return document.getElementById('scan-spinner'); }, get scanCount() { return document.getElementById('scan-count'); }, get scanArtist() { return document.getElementById('scan-artist'); }, get scanTitle() { return document.getElementById('scan-title'); }, init: function tb_init() { this.view.addEventListener('click', this); this.view.addEventListener('action', this.onActionBack); }, changeTitleText: function tb_changeTitleText(content) { this.titleText.textContent = content; }, showBackArrow: function(show) { if (show) { this.view.setAttribute('action', 'back'); } else { this.view.removeAttribute('action'); } }, onActionBack: function() { if (App.pendingPick) { if (ModeManager.currentMode === MODE_PICKER) { App.pendingPick.postError('pick cancelled'); return; } PlayerView.stop(); } ModeManager.pop(); }, showScanProgress: function(info) { this.scanProgress.classList.remove('hidden'); this.scanSpinner.classList.remove('hidden'); this.scanCount.textContent = info.count; this.scanArtist.textContent = info.artist || ''; this.scanTitle.textContent = info.title || ''; }, hideScanProgress: function() { this.scanSpinner.classList.add('hidden'); // The setTimeout is a workaround for bug 1166500 setTimeout(function() { this.scanProgress.classList.add('hidden'); }.bind(this), 100); }, handleEvent: function tb_handleEvent(evt) { var target = evt.target; function cleanupPick() { PlayerView.stop(); } switch (evt.type) { case 'click': if (!target) { return; } switch (target.id) { case 'title-player': // We can't to switch to player mode when there are no songs queued. if (PlayerView.isQueued) { ModeManager.push(MODE_PLAYER); } break; case 'title-done': var currentFileInfo = PlayerView.currentFileInfo; LazyLoader.load('js/metadata/album_art_cache.js').then(() => { return AlbumArtCache.getThumbnailBlob(currentFileInfo); }).then((picture) => { var currentMetadata = currentFileInfo.metadata; var playingBlob = PlayerView.playingBlob; App.pendingPick.postResult({ type: playingBlob.type, blob: playingBlob, name: currentMetadata.title || '', // We only pass some metadata attributes so we don't share // personal details like # of times played and ratings. metadata: { title: currentMetadata.title, artist: currentMetadata.artist, album: currentMetadata.album, picture: picture } }); cleanupPick(); }); break; } break; default: return; } } };