ariaNgNativeElectronService.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').factory('ariaNgNativeElectronService', ['ariaNgLogService', 'ariaNgLocalizationService', function (ariaNgLogService, ariaNgLocalizationService) {
  4. var electron = angular.isFunction(window.nodeRequire) ? nodeRequire('electron') : {};
  5. var ipcRenderer = electron.ipcRenderer || {};
  6. var onMainProcessEvent = function (channel, callback) {
  7. ipcRenderer.on && ipcRenderer.on(channel, callback);
  8. };
  9. var removeMainProcessEvent = function (channel, callback) {
  10. ipcRenderer.removeListener && ipcRenderer.removeListener(channel, callback);
  11. };
  12. var invokeMainProcessMethod = function (channel, ...args) {
  13. ipcRenderer.send && ipcRenderer.send(channel, ...args);
  14. };
  15. var invokeSyncMainProcessMethod = function (channel, ...args) {
  16. if (!ipcRenderer.sendSync) {
  17. return null;
  18. }
  19. return ipcRenderer.sendSync(channel, ...args);
  20. };
  21. var invokeAsyncMainProcessMethod = function (channel, ...args) {
  22. if (!ipcRenderer.invoke) {
  23. return null;
  24. }
  25. return ipcRenderer.invoke(channel, ...args);
  26. };
  27. return {
  28. getRuntimeEnvironment: function () {
  29. return invokeSyncMainProcessMethod('render-sync-get-runtime-environment');
  30. },
  31. getVersion: function() {
  32. return invokeSyncMainProcessMethod('render-sync-get-global-setting', 'version');
  33. },
  34. getAriaNgVersion: function() {
  35. return invokeSyncMainProcessMethod('render-sync-get-global-setting', 'ariaNgVersion');
  36. },
  37. isDevMode: function () {
  38. return invokeSyncMainProcessMethod('render-sync-get-global-setting', 'isDevMode');
  39. },
  40. useCustomAppTitle: function () {
  41. return invokeSyncMainProcessMethod('render-sync-get-global-setting', 'useCustomAppTitle');
  42. },
  43. getWindowMaximizedAsync: function (callback) {
  44. return invokeAsyncMainProcessMethod('render-get-native-window-maximized')
  45. .then(function onReceive(maximized) {
  46. if (callback) {
  47. callback(maximized);
  48. }
  49. });
  50. },
  51. minimizeWindow: function () {
  52. invokeMainProcessMethod('render-minimize-native-window');
  53. },
  54. maximizeOrRestoreWindow: function () {
  55. invokeMainProcessMethod('render-maximize-or-restore-native-window');
  56. },
  57. reload: function () {
  58. invokeMainProcessMethod('render-reload-native-window');
  59. },
  60. exitApp: function () {
  61. invokeMainProcessMethod('render-exit-native-app');
  62. },
  63. setApplicationMenu: function () {
  64. invokeMainProcessMethod('render-update-app-menu-label', {
  65. AboutAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.AboutAriaNgNative'),
  66. Services: ariaNgLocalizationService.getLocalizedText('menu.Services'),
  67. HideAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.HideAriaNgNative'),
  68. HideOthers: ariaNgLocalizationService.getLocalizedText('menu.HideOthers'),
  69. ShowAll: ariaNgLocalizationService.getLocalizedText('menu.ShowAll'),
  70. QuitAriaNgNative: ariaNgLocalizationService.getLocalizedText('menu.QuitAriaNgNative'),
  71. Edit: ariaNgLocalizationService.getLocalizedText('menu.Edit'),
  72. Undo: ariaNgLocalizationService.getLocalizedText('menu.Undo'),
  73. Redo: ariaNgLocalizationService.getLocalizedText('menu.Redo'),
  74. Cut: ariaNgLocalizationService.getLocalizedText('menu.Cut'),
  75. Copy: ariaNgLocalizationService.getLocalizedText('menu.Copy'),
  76. Paste: ariaNgLocalizationService.getLocalizedText('menu.Paste'),
  77. Delete: ariaNgLocalizationService.getLocalizedText('menu.Delete'),
  78. SelectAll: ariaNgLocalizationService.getLocalizedText('menu.SelectAll'),
  79. Window: ariaNgLocalizationService.getLocalizedText('menu.Window'),
  80. Minimize: ariaNgLocalizationService.getLocalizedText('menu.Minimize'),
  81. Zoom: ariaNgLocalizationService.getLocalizedText('menu.Zoom'),
  82. BringAllToFront: ariaNgLocalizationService.getLocalizedText('menu.BringAllToFront')
  83. });
  84. },
  85. setTrayMenu: function () {
  86. invokeMainProcessMethod('render-update-tray-menu-label', {
  87. ShowAriaNgNative: ariaNgLocalizationService.getLocalizedText('tray.ShowAriaNgNative'),
  88. Exit: ariaNgLocalizationService.getLocalizedText('tray.Exit')
  89. });
  90. },
  91. setTrayToolTip: function (value) {
  92. invokeMainProcessMethod('render-update-tray-tip', value);
  93. },
  94. setMainWindowLanguage: function () {
  95. this.setApplicationMenu();
  96. this.setTrayMenu();
  97. },
  98. getNativeConfig: function () {
  99. var config = invokeSyncMainProcessMethod('render-sync-get-native-config');
  100. var cfg = {};
  101. for (var key in config) {
  102. if (!config.hasOwnProperty(key)) {
  103. continue;
  104. }
  105. cfg[key] = angular.copy(config[key]);
  106. }
  107. return cfg;
  108. },
  109. setDefaultPosition: function (value) {
  110. invokeMainProcessMethod('render-set-native-config-default-position', value);
  111. },
  112. setMinimizedToTray: function (value) {
  113. invokeMainProcessMethod('render-set-native-config-minimized-to-tray', value);
  114. },
  115. openProjectLink: function () {
  116. invokeMainProcessMethod('render-open-external-url', 'https://github.com/mayswind/AriaNg-Native');
  117. },
  118. openProjectReleaseLink: function () {
  119. invokeMainProcessMethod('render-open-external-url', 'https://github.com/mayswind/AriaNg-Native/releases');
  120. },
  121. readPackageFile: function (path) {
  122. return invokeSyncMainProcessMethod('render-sync-get-package-file-content', path);
  123. },
  124. getLocalFSExistsAsync: function (fullpath, callback) {
  125. return invokeAsyncMainProcessMethod('render-get-localfs-exists', fullpath)
  126. .then(function onReceive(exists) {
  127. if (callback) {
  128. callback(exists);
  129. }
  130. });
  131. },
  132. openFileInDirectory: function (dir, filename) {
  133. invokeMainProcessMethod('render-open-local-directory', dir, filename);
  134. },
  135. parseBittorrentInfo: function (data) {
  136. var info = angular.copy(invokeSyncMainProcessMethod('render-sync-parse-bittorrent-info', data));
  137. info.type = 'bittorrent';
  138. ariaNgLogService.debug('[ariaNgNativeElectronService.parseBittorrentInfo] bittorrent info', info);
  139. return info;
  140. },
  141. notifyMainProcessViewLoaded: function (locationPath) {
  142. invokeMainProcessMethod('on-render-view-content-loaded', locationPath);
  143. },
  144. notifyMainProcessorNewDropFile: function (message) {
  145. invokeMainProcessMethod('on-render-new-drop-file', message);
  146. },
  147. notifyMainProcessorNewDropText: function (message) {
  148. invokeMainProcessMethod('on-render-new-drop-text', message);
  149. },
  150. onMainWindowMaximize: function (callback) {
  151. onMainProcessEvent('on-main-window-maximized', callback);
  152. },
  153. onMainWindowUnmaximize: function (callback) {
  154. onMainProcessEvent('on-main-window-unmaximized', callback);
  155. },
  156. onMainProcessShowError: function (callback) {
  157. onMainProcessEvent('on-main-show-error', callback);
  158. },
  159. onMainProcessNavigateTo: function (callback) {
  160. onMainProcessEvent('on-main-navigate-to', callback);
  161. },
  162. onMainProcessNewTaskFromFile: function (callback) {
  163. onMainProcessEvent('on-main-new-task-from-file', callback);
  164. },
  165. onMainProcessNewTaskFromText: function (callback) {
  166. onMainProcessEvent('on-main-new-task-from-text', callback);
  167. },
  168. removeMainProcessNewTaskFromFileCallback: function (callback) {
  169. removeMainProcessEvent('on-main-new-task-from-file', callback);
  170. },
  171. removeMainProcessNewTaskFromTextCallback: function (callback) {
  172. removeMainProcessEvent('on-main-new-task-from-text', callback);
  173. }
  174. };
  175. }]);
  176. }());