87 lines
1.9 KiB
JavaScript
87 lines
1.9 KiB
JavaScript
'use strict';
|
||
|
||
const { Service } = require('ee-core');
|
||
const { BrowserView, Notification } = require('electron');
|
||
const CoreWindow = require('ee-core/electron/window');
|
||
|
||
/**
|
||
* os(service层为单例)
|
||
* @class
|
||
*/
|
||
class OsService extends Service {
|
||
|
||
constructor(ctx) {
|
||
super(ctx);
|
||
this.myBrowserView = null;
|
||
this.myNotification = null;
|
||
}
|
||
|
||
/**
|
||
* createBrowserView
|
||
*/
|
||
createBrowserView(contentUrl) {
|
||
|
||
// electron 实验性功能,慎用
|
||
const win = CoreWindow.getMainWindow();
|
||
this.myBrowserView = new BrowserView();
|
||
win.setBrowserView(this.myBrowserView);
|
||
this.myBrowserView.setBounds({
|
||
x: 300,
|
||
y: 170,
|
||
width: 650,
|
||
height: 400
|
||
});
|
||
this.myBrowserView.webContents.loadURL(contentUrl);
|
||
}
|
||
|
||
/**
|
||
* removeBrowserView
|
||
*/
|
||
removeBrowserView() {
|
||
// one
|
||
this.myBrowserView.webContents.loadURL('about:blank')
|
||
|
||
// two - electron 11 remove destroy()
|
||
// this.myBrowserView.webContents.destroy();
|
||
|
||
// three
|
||
// this.myBrowserView.webContents.forcefullyCrashRenderer()
|
||
|
||
// fore
|
||
// this.myBrowserView.webContents.close
|
||
}
|
||
|
||
/**
|
||
* createNotification
|
||
*/
|
||
createNotification(options, event) {
|
||
const channel = 'controller.os.sendNotification';
|
||
this.myNotification = new Notification(options);
|
||
|
||
if (options.clickEvent) {
|
||
this.myNotification.on('click', (e) => {
|
||
let data = {
|
||
type: 'click',
|
||
msg: '您点击了通知消息'
|
||
}
|
||
event.reply(`${channel}`, data)
|
||
});
|
||
}
|
||
|
||
if (options.closeEvent) {
|
||
this.myNotification.on('close', (e) => {
|
||
let data = {
|
||
type: 'close',
|
||
msg: '您关闭了通知消息'
|
||
}
|
||
event.reply(`${channel}`, data)
|
||
});
|
||
}
|
||
|
||
this.myNotification.show();
|
||
}
|
||
|
||
}
|
||
|
||
OsService.toString = () => '[class OsService]';
|
||
module.exports = OsService;
|