tray.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. 'use strict';
  2. const os = require('os');
  3. const path = require('path');
  4. const electron = require('electron');
  5. const core = require('../core');
  6. const app = electron.app;
  7. const Menu = electron.Menu;
  8. const Tray = electron.Tray;
  9. let instance = null;
  10. let iconPath = path.join(__dirname, '..', 'assets', 'AriaNg.ico');
  11. let init = function () {
  12. if (instance === null && os.platform() === 'win32') {
  13. instance = new Tray(iconPath);
  14. instance.setToolTip('AriaNg Native');
  15. instance.setContextMenu(Menu.buildFromTemplate([
  16. {
  17. label: 'Quit', click: function () {
  18. core.isConfirmExit = true;
  19. app.quit();
  20. }
  21. }
  22. ]));
  23. instance.on('double-click', () => {
  24. if (!core.mainWindow.isVisible()) {
  25. core.mainWindow.show();
  26. core.mainWindow.focus();
  27. } else {
  28. core.mainWindow.hide();
  29. }
  30. });
  31. }
  32. };
  33. let setContextMenu = function (context) {
  34. if (instance !== null) {
  35. instance.setContextMenu(Menu.buildFromTemplate([
  36. {
  37. label: context.labels.ShowAriaNgNative, click: function () {
  38. core.mainWindow.show();
  39. }
  40. },
  41. {
  42. type: 'separator'
  43. },
  44. {
  45. label: context.labels.Exit, click: function () {
  46. core.isConfirmExit = true;
  47. app.quit();
  48. }
  49. }
  50. ]));
  51. }
  52. };
  53. let setToolTip = function (value) {
  54. if (instance !== null) {
  55. instance.setToolTip(value);
  56. }
  57. };
  58. module.exports = {
  59. isEnabled: function () {
  60. return !!instance;
  61. },
  62. init: init,
  63. setContextMenu: setContextMenu,
  64. setToolTip: setToolTip
  65. };