AppController.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using MediaBrowser.Controller;
  2. using MediaBrowser.Controller.Configuration;
  3. using MediaBrowser.Controller.Localization;
  4. using MediaBrowser.Model.Logging;
  5. using MediaBrowser.Server.Startup.Common.Browser;
  6. using System;
  7. using MonoMac.Foundation;
  8. using MonoMac.AppKit;
  9. namespace MediaBrowser.Server.Mac
  10. {
  11. [Register("AppController")]
  12. public partial class AppController : NSObject
  13. {
  14. private NSMenuItem browseMenuItem;
  15. private NSMenuItem configureMenuItem;
  16. private NSMenuItem developerMenuItem;
  17. private NSMenuItem quitMenuItem;
  18. private NSMenuItem githubMenuItem;
  19. private NSMenuItem apiMenuItem;
  20. private NSMenuItem communityMenuItem;
  21. public AppController()
  22. {
  23. }
  24. public override void AwakeFromNib()
  25. {
  26. var statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30);
  27. statusItem.Menu = statusMenu;
  28. statusItem.Image = NSImage.ImageNamed("touchicon");
  29. statusItem.HighlightMode = true;
  30. statusItem.Menu.RemoveAllItems ();
  31. browseMenuItem = new NSMenuItem ("Browse Media Library", "b", delegate {
  32. Browse (this);
  33. });
  34. statusItem.Menu.AddItem (browseMenuItem);
  35. configureMenuItem = new NSMenuItem ("Configure Media Browser", "c", delegate {
  36. Configure (this);
  37. });
  38. statusItem.Menu.AddItem (configureMenuItem);
  39. developerMenuItem = new NSMenuItem ("Developer Resources");
  40. statusItem.Menu.AddItem (developerMenuItem);
  41. var developerMenu = new NSMenu ();
  42. developerMenuItem.Submenu = developerMenu;
  43. apiMenuItem = new NSMenuItem ("Api Documentation", "a", delegate {
  44. ApiDocs (this);
  45. });
  46. developerMenu.AddItem (apiMenuItem);
  47. githubMenuItem = new NSMenuItem ("Github", "g", delegate {
  48. Github (this);
  49. });
  50. developerMenu.AddItem (githubMenuItem);
  51. communityMenuItem = new NSMenuItem ("Visit Community", "v", delegate {
  52. Community (this);
  53. });
  54. statusItem.Menu.AddItem (communityMenuItem);
  55. quitMenuItem = new NSMenuItem ("Quit", "q", delegate {
  56. Quit (this);
  57. });
  58. statusItem.Menu.AddItem (quitMenuItem);
  59. }
  60. private IServerApplicationHost AppHost{ get; set;}
  61. private ILogger Logger{ get; set;}
  62. private void Quit(NSObject sender)
  63. {
  64. NSApplication.SharedApplication.Terminate(this);
  65. //AppHost.Shutdown();
  66. }
  67. private void Community(NSObject sender)
  68. {
  69. BrowserLauncher.OpenCommunity(Logger);
  70. }
  71. private void Configure(NSObject sender)
  72. {
  73. BrowserLauncher.OpenDashboard(AppHost, Logger);
  74. }
  75. private void Browse(NSObject sender)
  76. {
  77. BrowserLauncher.OpenWebClient(AppHost, Logger);
  78. }
  79. private void Github(NSObject sender)
  80. {
  81. BrowserLauncher.OpenGithub(Logger);
  82. }
  83. private void ApiDocs(NSObject sender)
  84. {
  85. BrowserLauncher.OpenSwagger(AppHost, Logger);
  86. }
  87. }
  88. }