init
This commit is contained in:
167
electron/controller/os.ts
Normal file
167
electron/controller/os.ts
Normal file
@@ -0,0 +1,167 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { app as electronApp, dialog, shell } from 'electron';
|
||||
import { windowService } from '../service/os/window';
|
||||
|
||||
/**
|
||||
* example
|
||||
* @class
|
||||
*/
|
||||
class OsController {
|
||||
|
||||
/**
|
||||
* All methods receive two parameters
|
||||
* @param args Parameters transmitted by the frontend
|
||||
* @param event - Event are only available during IPC communication. For details, please refer to the controller documentation
|
||||
*/
|
||||
|
||||
/**
|
||||
* Message prompt dialog box
|
||||
*/
|
||||
messageShow(): string {
|
||||
dialog.showMessageBoxSync({
|
||||
type: 'info', // "none", "info", "error", "question" 或者 "warning"
|
||||
title: 'Custom Title',
|
||||
message: 'Customize message content',
|
||||
detail: 'Other additional information'
|
||||
})
|
||||
|
||||
return 'Opened the message box';
|
||||
}
|
||||
|
||||
/**
|
||||
* Message prompt and confirmation dialog box
|
||||
*/
|
||||
messageShowConfirm(): string {
|
||||
const res = dialog.showMessageBoxSync({
|
||||
type: 'info',
|
||||
title: 'Custom Title',
|
||||
message: 'Customize message content',
|
||||
detail: 'Other additional information',
|
||||
cancelId: 1, // Index of buttons used to cancel dialog boxes
|
||||
defaultId: 0, // Set default selected button
|
||||
buttons: ['confirm', 'cancel'],
|
||||
})
|
||||
let data = (res === 0) ? 'click the confirm button' : 'click the cancel button';
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Select Directory
|
||||
*/
|
||||
selectFolder() {
|
||||
const filePaths = dialog.showOpenDialogSync({
|
||||
properties: ['openDirectory', 'createDirectory']
|
||||
});
|
||||
|
||||
if (!filePaths) {
|
||||
return ""
|
||||
}
|
||||
|
||||
return filePaths[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* open directory
|
||||
*/
|
||||
openDirectory(args: { id: any }): boolean {
|
||||
const { id } = args;
|
||||
if (!id) {
|
||||
return false;
|
||||
}
|
||||
let dir = '';
|
||||
if (path.isAbsolute(id)) {
|
||||
dir = id;
|
||||
} else {
|
||||
dir = electronApp.getPath(id);
|
||||
}
|
||||
|
||||
shell.openPath(dir);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Select Picture
|
||||
*/
|
||||
selectPic(): string | null {
|
||||
const filePaths = dialog.showOpenDialogSync({
|
||||
title: 'select pic',
|
||||
properties: ['openFile'],
|
||||
filters: [
|
||||
{ name: 'Images', extensions: ['jpg', 'png', 'gif'] },
|
||||
]
|
||||
});
|
||||
if (!filePaths) {
|
||||
return null
|
||||
}
|
||||
|
||||
try {
|
||||
const data = fs.readFileSync(filePaths[0]);
|
||||
const pic = 'data:image/jpeg;base64,' + data.toString('base64');
|
||||
return pic;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a new window
|
||||
*/
|
||||
createWindow(args: any): any {
|
||||
const wcid = windowService.createWindow(args);
|
||||
return wcid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Window contents id
|
||||
*/
|
||||
getWCid(args: any): any {
|
||||
const wcid = windowService.getWCid(args);
|
||||
return wcid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Realize communication between two windows through the transfer of the main process
|
||||
*/
|
||||
window1ToWindow2(args: any): void {
|
||||
windowService.communicate(args);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Realize communication between two windows through the transfer of the main process
|
||||
*/
|
||||
window2ToWindow1(args: any): void {
|
||||
windowService.communicate(args);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create system notifications
|
||||
*/
|
||||
sendNotification(args: { title?: string; subtitle?: string; body?: string; silent?: boolean }, event: any): boolean {
|
||||
const { title, subtitle, body, silent} = args;
|
||||
|
||||
const options: any = {};
|
||||
if (title) {
|
||||
options.title = title;
|
||||
}
|
||||
if (subtitle) {
|
||||
options.subtitle = subtitle;
|
||||
}
|
||||
if (body) {
|
||||
options.body = body;
|
||||
}
|
||||
if (silent !== undefined) {
|
||||
options.silent = silent;
|
||||
}
|
||||
windowService.createNotification(options, event);
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
OsController.toString = () => '[class OsController]';
|
||||
|
||||
export default OsController;
|
||||
Reference in New Issue
Block a user