diff --git a/app/config.json b/app/config.json index 184ed71..b43de3b 100644 --- a/app/config.json +++ b/app/config.json @@ -1 +1 @@ -{"music":"true","desktopDanmu":"false"} \ No newline at end of file +{"music":"false","desktopDanmu":"false"} \ No newline at end of file diff --git a/app/main.js b/app/main.js index d737068..3018796 100644 --- a/app/main.js +++ b/app/main.js @@ -36,7 +36,7 @@ app.on('activate', () => { ipcMain.on('login', (event, arg) => { danmu = new BrowserWindow({ - width: 300, + width: 350, height: 500, autoHideMenuBar: true, icon: __dirname + '/assets/favicon.ico', diff --git a/app/player/playlist.txt b/app/player/playlist.txt index 213ecd6..c10f6c1 100644 --- a/app/player/playlist.txt +++ b/app/player/playlist.txt @@ -1,2 +1 @@ 播放列表 -1. 玫瑰 diff --git a/app/render/frameless.html b/app/render/frameless.html index e69de29..7a72ba8 100644 --- a/app/render/frameless.html +++ b/app/render/frameless.html @@ -0,0 +1,42 @@ + + + + + + 桌面弹幕 + + + + + + +
+ +
+
+ + + diff --git a/app/render/frameless.js b/app/render/frameless.js index e69de29..2f6bea6 100644 --- a/app/render/frameless.js +++ b/app/render/frameless.js @@ -0,0 +1,27 @@ +const { ipcRenderer } = require('electron'); + +ipcRenderer.on('danmu', (event, nn, txt) => { + const danmu = document.getElementById('danmu'); + danmu.innerHTML += '

' + nn + ':' + txt + '

'; + danmu.scrollIntoView(false); +}); + +$(document).ready(() => { + $('#wrap').hover(() => { + $('button').css('display', 'block'); + $('#wrap').css('border', '1px solid'); + }, () => { + $('button').css('display', 'none'); + $('#wrap').css('border', 'none'); + } + ); + $('button').click(() => { + if ($('button').hasClass('lock')) { + $('body').css('-webkit-app-region', 'no-drag'); + $('button').text('移动').removeClass('lock').addClass('unlock'); + } else if ($('button').hasClass('unlock')) { + $('body').css('-webkit-app-region', 'drag'); + $('button').text('锁定').removeClass('unlock').addClass('lock'); + } + }); +}); diff --git a/app/render/index.js b/app/render/index.js index cae8469..2078e7e 100644 --- a/app/render/index.js +++ b/app/render/index.js @@ -7,6 +7,8 @@ const danmu = require('../danmu/danmu'); const config = require('../util/config'); let cfg; +let desktopDanmuWin; +let settingsWin; // 处理格式化的弹幕 function splitDanmu(totalDanmu) { @@ -22,6 +24,12 @@ function updateMsg(nn, txt) { // 滚动条始终在最下面 const pane = document.getElementById('pane'); pane.scrollTop = pane.scrollHeight; + + + if (cfg.desktopDanmu == 'true') { + console.log('sended'); + desktopDanmuWin.webContents.send('danmu', nn, txt); + } } // 更新观众人数 @@ -58,7 +66,7 @@ $(document).ready(function() { const settings = document.getElementById('settings'); settings.addEventListener('click', (event) => { - let settingsWin = new BrowserWindow({ + settingsWin = new BrowserWindow({ width: 200, height: 100, autoHideMenuBar: true, @@ -73,6 +81,9 @@ $(document).ready(function() { config.getConfig((data) => { cfg = data; + if (cfg.desktopDanmu == 'true') { + createDesktopDanmu(); + } }); }); @@ -81,12 +92,39 @@ ipcRenderer.on('roomid', (event, arg) => { setRoomId(arg); }); - ipcMain.on('update-config', (event, arg) => { cfg = arg; - console.log('update config', cfg); }); + +ipcMain.on('update-desktopDanmu', (event, arg) => { + cfg = arg; + if (cfg.desktopDanmu == 'true') { + createDesktopDanmu(); + } else if (cfg.desktopDanmu == 'false') { + desktopDanmuWin.close(); + } +}); + +function createDesktopDanmu() { + desktopDanmuWin = new BrowserWindow({ + width: 200, + height: 300, + autoHideMenuBar: true, + icon: __dirname + '../assets/favicon.ico', + frame: false, + transparent: true, + }); + desktopDanmuWin.loadURL(`file://${__dirname}/frameless.html`); + desktopDanmuWin.setAlwaysOnTop(true); + // desktopDanmuWin.setIgnoreMouseEvents(true); + desktopDanmuWin.on('closed', () => { + desktopDanmuWin = null; + cfg.desktopDanmu = 'false'; + settingsWin.webContents.send('close-desktopDanmu'); + }); +} + function formatMsg(msg) { const DANMU_TYPE = '1'; const BAMBOO_TYPE = '206'; diff --git a/app/render/settings.js b/app/render/settings.js index 0418214..09fabcd 100644 --- a/app/render/settings.js +++ b/app/render/settings.js @@ -38,7 +38,11 @@ $(document).ready(() => { cfg.desktopDanmu = 'true'; $('#desktopDanmu').removeClass('btn-positive').addClass('btn-negative').text('关闭弹幕'); } - ipcRenderer.send('update-config', cfg); + ipcRenderer.send('update-desktopDanmu', cfg); config.setConfig(cfg); }); }); + +ipcRenderer.on('close-desktopDanmu', () => { + $('#desktopDanmu').removeClass('btn-negative').addClass('btn-positive').text('开启弹幕'); +}); diff --git a/log/log.txt b/log/log.txt index fc75a84..e69de29 100644 --- a/log/log.txt +++ b/log/log.txt @@ -1,3 +0,0 @@ -8/3/2016, 3:15:36 AM 点歌成功 -8/3/2016, 3:16:21 AM 切歌成功 -8/3/2016, 3:16:27 AM 点歌成功 diff --git a/test/hover.html b/test/hover.html new file mode 100644 index 0000000..86e30d2 --- /dev/null +++ b/test/hover.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + +
+ +
+ + + diff --git a/test/scroll.html b/test/scroll.html new file mode 100644 index 0000000..a5a6713 --- /dev/null +++ b/test/scroll.html @@ -0,0 +1,24 @@ + + + + + + + + + +
+
+ + +