| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- (function () {
- 'use strict';
- angular.module('ariaNg').factory('ariaNgNativeElectronService', ['ariaNgLogService', 'ariaNgLocalizationService', function (ariaNgLogService, ariaNgLocalizationService) {
- var electron = angular.isFunction(window.nodeRequire) ? nodeRequire('electron') : {};
- var remote = angular.isFunction(window.nodeRequire) ? nodeRequire('@electron/remote') : {
- require: function () {
- return {};
- }
- };
- var ipcRenderer = electron.ipcRenderer || {};
- var menu = remote.require('./menu') || {};
- var tray = remote.require('./tray') || {};
- var localfs = remote.require('./localfs') || {};
- var bittorrent = remote.require('./bittorrent') || {};
- var getSetting = function (item) {
- if (!remote || !remote.getGlobal) {
- return null;
- }
- var settings = remote.getGlobal('settings');
- if (!settings) {
- return null;
- }
- return settings[item];
- };
- var getCurrentWindow = function () {
- if (!remote || !remote.getCurrentWindow) {
- return {};
- }
- return remote.getCurrentWindow();
- };
- var onMainWindowEvent = function (event, callback) {
- getCurrentWindow().on && getCurrentWindow().on(event, callback);
- };
- var onMainProcessMessage = function (channel, callback) {
- ipcRenderer.on && ipcRenderer.on(channel, callback);
- };
- var removeMainProcessCallback = function (channel, callback) {
- ipcRenderer.removeListener && ipcRenderer.removeListener(channel, callback);
- };
- var invokeMainProcessMethod = function (channel, ...args) {
- ipcRenderer.send && ipcRenderer.send(channel, ...args);
- };
- var invokeSyncMainProcessMethod = function (channel, ...args) {
- if (!ipcRenderer.sendSync) {
- return null;
- }
- return ipcRenderer.sendSync(channel, ...args);
- };
- var invokeAsyncMainProcessMethod = function (channel, ...args) {
- if (!ipcRenderer.invoke) {
- return null;
- }
- return ipcRenderer.invoke(channel, ...args);
- };
- return {
- getRuntimeEnvironment: function () {
- if (!remote.process || !remote.process.versions) {
- return null;
- }
- var versions = remote.process.versions;
- var items = [];
- items.push({name: 'Electron', value: versions.electron});
- items.push({name: 'Node.js', value: versions.node});
- items.push({name: 'Chrome', value: versions.chrome});
- items.push({name: 'V8', value: versions.v8});
- return items;
- },
- getVersion: function() {
- return getSetting('version');
- },
- getAriaNgVersion: function() {
- return getSetting('ariaNgVersion');
- },
- isDevMode: function () {
- return !!getSetting('isDevMode');
- },
- useCustomAppTitle: function () {
- return !!getSetting('useCustomAppTitle');
- },
- getNativeConfig: function () {
- var config = invokeSyncMainProcessMethod('get-native-config');
- var cfg = {};
- for (var key in config) {
- if (!config.hasOwnProperty(key)) {
- continue;
- }
- cfg[key] = angular.copy(config[key]);
- }
- return cfg;
- },
- setDefaultPosition: function (value) {
- invokeMainProcessMethod('set-native-config-default-position', value);
- },
- setMinimizedToTray: function (value) {
- invokeMainProcessMethod('set-native-config-minimized-to-tray', value);
- },
- setMainWindowLanguage: function () {
- this.setApplicationMenu();
- this.setTrayMenu();
- },
- isLocalFSExists: function (fullpath) {
- return localfs.isExists(fullpath);
- },
- readPackageFile: function (path) {
- return localfs.readPackageFile(path);
- },
- parseBittorrentInfo: function (path) {
- var info = angular.copy(bittorrent.parseBittorrentInfo(path));
- info.type = 'bittorrent';
- ariaNgLogService.debug('[ariaNgNativeElectronService.parseBittorrentInfo] bittorrent info', info);
- return info;
- },
- openProjectLink: function () {
- invokeMainProcessMethod('open-external-url', 'https://github.com/mayswind/AriaNg-Native');
- },
- openProjectReleaseLink: function () {
- invokeMainProcessMethod('open-external-url', 'https://github.com/mayswind/AriaNg-Native/releases');
- },
- openFileInDirectory: function (dir, filename) {
- invokeMainProcessMethod('open-local-directory', dir, filename);
- },
- onMainWindowMaximize: function (callback) {
- onMainWindowEvent('maximize', callback);
- },
- onMainWindowUnmaximize: function (callback) {
- onMainWindowEvent('unmaximize', callback);
- },
- onMainProcessNavigateTo: function (callback) {
- onMainProcessMessage('navigate-to', callback);
- },
- onMainProcessShowError: function (callback) {
- onMainProcessMessage('show-error', callback);
- },
- onMainProcessNewTaskFromFile: function (callback) {
- onMainProcessMessage('new-task-from-file', callback);
- },
- onMainProcessNewTaskFromText: function (callback) {
- onMainProcessMessage('new-task-from-text', callback);
- },
- removeMainProcessNewTaskFromFileCallback: function (callback) {
- removeMainProcessCallback('new-task-from-file', callback);
- },
- removeMainProcessNewTaskFromTextCallback: function (callback) {
- removeMainProcessCallback('new-task-from-text', callback);
- },
- sendViewLoadedMessageToMainProcess: function (message) {
- invokeMainProcessMethod('view-content-loaded', message);
- },
- sendNewDropFileMessageToMainProcess: function (message) {
- invokeMainProcessMethod('new-drop-file', message);
- },
- sendNewDropTextMessageToMainProcess: function (message) {
- invokeMainProcessMethod('new-drop-text', message);
- },
- setApplicationMenu: function () {
- if (menu.setApplicationMenu) {
- menu.setApplicationMenu({
- labels: {
- AboutAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.AboutAriaNgNative'),
- Services: ariaNgLocalizationService.getLocalizedText('menu.Services'),
- HideAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.HideAriaNgNative'),
- HideOthers: ariaNgLocalizationService.getLocalizedText('menu.HideOthers'),
- ShowAll: ariaNgLocalizationService.getLocalizedText('menu.ShowAll'),
- QuitAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.QuitAriaNgNative'),
- Edit: ariaNgLocalizationService.getLocalizedText('menu.Edit'),
- Undo: ariaNgLocalizationService.getLocalizedText('menu.Undo'),
- Redo: ariaNgLocalizationService.getLocalizedText('menu.Redo'),
- Cut: ariaNgLocalizationService.getLocalizedText('menu.Cut'),
- Copy: ariaNgLocalizationService.getLocalizedText('menu.Copy'),
- Paste: ariaNgLocalizationService.getLocalizedText('menu.Paste'),
- Delete: ariaNgLocalizationService.getLocalizedText('menu.Delete'),
- SelectAll: ariaNgLocalizationService.getLocalizedText('menu.SelectAll'),
- Window: ariaNgLocalizationService.getLocalizedText('menu.Window'),
- Minimize: ariaNgLocalizationService.getLocalizedText('menu.Minimize'),
- Zoom: ariaNgLocalizationService.getLocalizedText('menu.Zoom'),
- BringAllToFront: ariaNgLocalizationService.getLocalizedText('menu.BringAllToFront')
- }
- });
- }
- },
- setTrayMenu: function () {
- if (tray.setContextMenu) {
- tray.setContextMenu({
- labels: {
- ShowAriaNgNative: ariaNgLocalizationService.getLocalizedText('tray.ShowAriaNgNative'),
- Exit: ariaNgLocalizationService.getLocalizedText('tray.Exit')
- }
- });
- }
- },
- setTrayToolTip: function (value) {
- if (tray.setToolTip) {
- tray.setToolTip(value);
- }
- },
- reload: function () {
- getCurrentWindow().reload && getCurrentWindow().reload();
- },
- isMaximized: function () {
- return getCurrentWindow().isMaximized && getCurrentWindow().isMaximized();
- },
- minimizeWindow: function () {
- getCurrentWindow().minimize && getCurrentWindow().minimize();
- },
- maximizeOrRestoreWindow: function () {
- if (!this.isMaximized()) {
- getCurrentWindow().maximize && getCurrentWindow().maximize();
- } else {
- getCurrentWindow().unmaximize && getCurrentWindow().unmaximize();
- }
- },
- exitApp: function () {
- getCurrentWindow().close && getCurrentWindow().close();
- }
- };
- }]);
- }());
|