From fc68a08de73fd5959c9370f51f29c9b75e1fdcd4 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Sat, 5 Mar 2016 14:04:33 -0800 Subject: [PATCH] menu: new "Add Fake Airplay" and "Add Fake Chromecast" items Fixes #21 --- main/menu.js | 42 +++++++++++++++++++++++++++++++----------- renderer/index.js | 10 ++++++++++ 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/main/menu.js b/main/menu.js index 735fa28b..4672b3d6 100644 --- a/main/menu.js +++ b/main/menu.js @@ -49,6 +49,10 @@ function getMenuItem (label) { } } +function addFakeDevice (device) { + windows.main.send('addFakeDevice', device) +} + function getMenuTemplate () { var template = [ { @@ -143,17 +147,33 @@ function getMenuTemplate () { type: 'separator' }, { - label: 'Reload', - accelerator: 'CmdOrCtrl+R', - click: reloadWindow - }, - { - label: 'Developer Tools', - accelerator: (function () { - if (process.platform === 'darwin') return 'Alt+Command+I' - else return 'Ctrl+Shift+I' - })(), - click: toggleDevTools + label: 'Developer', + submenu: [ + { + label: 'Reload', + accelerator: 'CmdOrCtrl+R', + click: reloadWindow + }, + { + label: 'Developer Tools', + accelerator: (function () { + if (process.platform === 'darwin') return 'Alt+Command+I' + else return 'Ctrl+Shift+I' + })(), + click: toggleDevTools + }, + { + type: 'separator' + }, + { + label: 'Add Fake Airplay', + click: () => addFakeDevice('airplay') + }, + { + label: 'Add Fake Chromecast', + click: () => addFakeDevice('chromecast') + } + ] } ] }, diff --git a/renderer/index.js b/renderer/index.js index bfc0867a..7168e1b8 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -5,6 +5,7 @@ var chromecasts = require('chromecasts')() var createTorrent = require('create-torrent') var dragDrop = require('drag-drop') var electron = require('electron') +var EventEmitter = require('events') var networkAddress = require('network-address') var path = require('path') var throttle = require('throttleit') @@ -191,6 +192,13 @@ electron.ipcRenderer.on('fullscreenChanged', function (e, isFullScreen) { update() }) +electron.ipcRenderer.on('addFakeDevice', function (e, device) { + var player = new EventEmitter() + player.play = (networkURL) => console.log(networkURL) + state.view.devices[device] = player + update() +}) + function onFiles (files) { // .torrent file = start downloading the torrent files.filter(isTorrentFile).forEach(function (torrentFile) { @@ -248,6 +256,8 @@ function torrentReady (torrent) { } function startServer (torrent, cb) { + if (state.server) return cb() + // use largest file state.view.torrentPlaying = torrent.files.reduce(function (a, b) { return a.length > b.length ? a : b