123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- using System;
- using System.Diagnostics;
- using System.Windows.Forms;
- using MediaBrowser.Controller;
- using MediaBrowser.Controller.Configuration;
- using MediaBrowser.Controller.Library;
- using MediaBrowser.Controller.Localization;
- using MediaBrowser.Controller.Persistence;
- using MediaBrowser.Model.Logging;
- using MediaBrowser.Model.Serialization;
- using MediaBrowser.ServerApplication.Logging;
- using MediaBrowser.ServerApplication.Native;
- namespace MediaBrowser.ServerApplication
- {
- public class ServerNotifyIcon : IDisposable
- {
- bool IsDisposing = false;
-
- private System.Windows.Forms.NotifyIcon notifyIcon1;
- private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
- private System.Windows.Forms.ToolStripMenuItem cmdExit;
- private System.Windows.Forms.ToolStripMenuItem cmdBrowse;
- private System.Windows.Forms.ToolStripMenuItem cmdConfigure;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
- private System.Windows.Forms.ToolStripMenuItem cmdLibraryExplorer;
- private System.Windows.Forms.ToolStripMenuItem cmdRestart;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
- private System.Windows.Forms.ToolStripMenuItem cmdLogWindow;
- private System.Windows.Forms.ToolStripMenuItem cmdCommunity;
- private System.Windows.Forms.ToolStripMenuItem cmdApiDocs;
- private System.Windows.Forms.ToolStripMenuItem cmdStandardDocs;
- private System.Windows.Forms.ToolStripMenuItem cmdSwagger;
- private System.Windows.Forms.ToolStripMenuItem cmdGtihub;
- private readonly ILogger _logger;
- private readonly IServerApplicationHost _appHost;
- private readonly ILogManager _logManager;
- private readonly IServerConfigurationManager _configurationManager;
- private readonly IUserManager _userManager;
- private readonly ILibraryManager _libraryManager;
- private readonly IJsonSerializer _jsonSerializer;
- private readonly IDisplayPreferencesRepository _displayPreferencesManager;
- private readonly IItemRepository _itemRepository;
- private readonly ILocalizationManager _localization;
- private LogForm _logForm;
- public bool Visible
- {
- get
- {
- return notifyIcon1.Visible;
- }
- set
- {
- Action act = () => notifyIcon1.Visible = false;
- contextMenuStrip1.Invoke(act);
- }
- }
- public ServerNotifyIcon(ILogManager logManager,
- IServerApplicationHost appHost,
- IServerConfigurationManager configurationManager,
- IUserManager userManager, ILibraryManager libraryManager,
- IJsonSerializer jsonSerializer,
- IDisplayPreferencesRepository displayPreferencesManager,
- IItemRepository itemRepo, ILocalizationManager localization)
- {
- _logger = logManager.GetLogger("MainWindow");
- _itemRepository = itemRepo;
- _localization = localization;
- _appHost = appHost;
- _logManager = logManager;
- _configurationManager = configurationManager;
- _userManager = userManager;
- _libraryManager = libraryManager;
- _jsonSerializer = jsonSerializer;
- _displayPreferencesManager = displayPreferencesManager;
-
- var components = new System.ComponentModel.Container();
-
- var resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
- contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(components);
- notifyIcon1 = new System.Windows.Forms.NotifyIcon(components);
-
- cmdExit = new System.Windows.Forms.ToolStripMenuItem();
- cmdCommunity = new System.Windows.Forms.ToolStripMenuItem();
- cmdLogWindow = new System.Windows.Forms.ToolStripMenuItem();
- toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- cmdRestart = new System.Windows.Forms.ToolStripMenuItem();
- cmdLibraryExplorer = new System.Windows.Forms.ToolStripMenuItem();
- toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
- cmdConfigure = new System.Windows.Forms.ToolStripMenuItem();
- cmdBrowse = new System.Windows.Forms.ToolStripMenuItem();
- cmdApiDocs = new System.Windows.Forms.ToolStripMenuItem();
- cmdStandardDocs = new System.Windows.Forms.ToolStripMenuItem();
- cmdSwagger = new System.Windows.Forms.ToolStripMenuItem();
- cmdGtihub = new System.Windows.Forms.ToolStripMenuItem();
-
- //
- // notifyIcon1
- //
- notifyIcon1.ContextMenuStrip = contextMenuStrip1;
- notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
- notifyIcon1.Text = "Media Browser";
- notifyIcon1.Visible = true;
- //
- // contextMenuStrip1
- //
- contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- cmdBrowse,
- cmdConfigure,
- toolStripSeparator2,
- cmdLibraryExplorer,
- cmdRestart,
- toolStripSeparator1,
- cmdApiDocs,
- cmdLogWindow,
- cmdCommunity,
- cmdExit});
- contextMenuStrip1.Name = "contextMenuStrip1";
- contextMenuStrip1.ShowCheckMargin = true;
- contextMenuStrip1.ShowImageMargin = false;
- contextMenuStrip1.Size = new System.Drawing.Size(209, 214);
- //
- // cmdExit
- //
- cmdExit.Name = "cmdExit";
- cmdExit.Size = new System.Drawing.Size(208, 22);
- //
- // cmdCommunity
- //
- cmdCommunity.Name = "cmdCommunity";
- cmdCommunity.Size = new System.Drawing.Size(208, 22);
- //
- // cmdLogWindow
- //
- cmdLogWindow.CheckOnClick = true;
- cmdLogWindow.Name = "cmdLogWindow";
- cmdLogWindow.Size = new System.Drawing.Size(208, 22);
- //
- // toolStripSeparator1
- //
- toolStripSeparator1.Name = "toolStripSeparator1";
- toolStripSeparator1.Size = new System.Drawing.Size(205, 6);
- //
- // cmdRestart
- //
- cmdRestart.Name = "cmdRestart";
- cmdRestart.Size = new System.Drawing.Size(208, 22);
- //
- // cmdLibraryExplorer
- //
- cmdLibraryExplorer.Name = "cmdLibraryExplorer";
- cmdLibraryExplorer.Size = new System.Drawing.Size(208, 22);
- //
- // toolStripSeparator2
- //
- toolStripSeparator2.Name = "toolStripSeparator2";
- toolStripSeparator2.Size = new System.Drawing.Size(205, 6);
- //
- // cmdConfigure
- //
- cmdConfigure.Name = "cmdConfigure";
- cmdConfigure.Size = new System.Drawing.Size(208, 22);
- //
- // cmdBrowse
- //
- cmdBrowse.Name = "cmdBrowse";
- cmdBrowse.Size = new System.Drawing.Size(208, 22);
- //
- // cmdApiDocs
- //
- cmdApiDocs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- cmdStandardDocs,
- cmdSwagger,
- cmdGtihub});
- cmdApiDocs.Name = "cmdApiDocs";
- cmdApiDocs.Size = new System.Drawing.Size(208, 22);
- //
- // cmdStandardDocs
- //
- cmdStandardDocs.Name = "cmdStandardDocs";
- cmdStandardDocs.Size = new System.Drawing.Size(136, 22);
- //
- // cmdSwagger
- //
- cmdSwagger.Name = "cmdSwagger";
- cmdSwagger.Size = new System.Drawing.Size(136, 22);
- //
- // cmdGtihub
- //
- cmdGtihub.Name = "cmdGtihub";
- cmdGtihub.Size = new System.Drawing.Size(136, 22);
- cmdExit.Click += cmdExit_Click;
- cmdRestart.Click += cmdRestart_Click;
- cmdLogWindow.Click += cmdLogWindow_Click;
- cmdConfigure.Click += cmdConfigure_Click;
- cmdCommunity.Click += cmdCommunity_Click;
- cmdBrowse.Click += cmdBrowse_Click;
- cmdLibraryExplorer.Click += cmdLibraryExplorer_Click;
- cmdSwagger.Click += cmdSwagger_Click;
- cmdStandardDocs.Click += cmdStandardDocs_Click;
- cmdGtihub.Click += cmdGtihub_Click;
- LoadLogWindow(null, EventArgs.Empty);
- _logManager.LoggerLoaded += LoadLogWindow;
- _configurationManager.ConfigurationUpdated += Instance_ConfigurationUpdated;
- LocalizeText();
- if (_appHost.IsFirstRun)
- {
- Action action = () => notifyIcon1.ShowBalloonTip(5000, "Media Browser", "Welcome to Media Browser Server!", ToolTipIcon.Info);
- contextMenuStrip1.Invoke(action);
- }
- }
- private void LocalizeText()
- {
- _uiCulture = _configurationManager.Configuration.UICulture;
- cmdExit.Text = _localization.GetLocalizedString("LabelExit");
- cmdCommunity.Text = _localization.GetLocalizedString("LabelVisitCommunity");
- cmdGtihub.Text = _localization.GetLocalizedString("LabelGithubWiki");
- cmdSwagger.Text = _localization.GetLocalizedString("LabelSwagger");
- cmdStandardDocs.Text = _localization.GetLocalizedString("LabelStandard");
- cmdApiDocs.Text = _localization.GetLocalizedString("LabelViewApiDocumentation");
- cmdBrowse.Text = _localization.GetLocalizedString("LabelBrowseLibrary");
- cmdConfigure.Text = _localization.GetLocalizedString("LabelConfigureMediaBrowser");
- cmdLibraryExplorer.Text = _localization.GetLocalizedString("LabelOpenLibraryViewer");
- cmdRestart.Text = _localization.GetLocalizedString("LabelRestartServer");
- cmdLogWindow.Text = _localization.GetLocalizedString("LabelShowLogWindow");
- }
- private string _uiCulture;
- /// <summary>
- /// Handles the ConfigurationUpdated event of the Instance control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
- void Instance_ConfigurationUpdated(object sender, EventArgs e)
- {
- if (!string.Equals(_configurationManager.Configuration.UICulture, _uiCulture,
- StringComparison.OrdinalIgnoreCase))
- {
- LocalizeText();
- }
- Action action = () =>
- {
- var isLogWindowOpen = _logForm != null;
- if ((!isLogWindowOpen && _configurationManager.Configuration.ShowLogWindow) ||
- (isLogWindowOpen && !_configurationManager.Configuration.ShowLogWindow))
- {
- _logManager.ReloadLogger(_configurationManager.Configuration.EnableDebugLevelLogging
- ? LogSeverity.Debug
- : LogSeverity.Info);
- }
- };
- contextMenuStrip1.Invoke(action);
- }
- /// <summary>
- /// Loads the log window.
- /// </summary>
- /// <param name="sender">The sender.</param>
- /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
- void LoadLogWindow(object sender, EventArgs args)
- {
- CloseLogWindow();
- Action action = () =>
- {
- // Add our log window if specified
- if (_configurationManager.Configuration.ShowLogWindow)
- {
- _logForm = new LogForm(_logManager);
- Trace.Listeners.Add(new WindowTraceListener(_logForm));
- }
- else
- {
- Trace.Listeners.Remove("MBLogWindow");
- }
- // Set menu option indicator
- cmdLogWindow.Checked = _configurationManager.Configuration.ShowLogWindow;
- };
- contextMenuStrip1.Invoke(action);
- }
- /// <summary>
- /// Closes the log window.
- /// </summary>
- void CloseLogWindow()
- {
- if (_logForm != null)
- {
- _logForm.ShutDown();
- }
- }
- void cmdBrowse_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenWebClient(_userManager, _configurationManager, _appHost, _logger);
- }
- void cmdCommunity_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenCommunity(_logger);
- }
- void cmdConfigure_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenDashboard(_userManager, _configurationManager, _appHost, _logger);
- }
- void cmdLogWindow_Click(object sender, EventArgs e)
- {
- _configurationManager.Configuration.ShowLogWindow = !_configurationManager.Configuration.ShowLogWindow;
- _configurationManager.SaveConfiguration();
- LoadLogWindow(sender, e);
- }
- void cmdLibraryExplorer_Click(object sender, EventArgs e)
- {
- new LibraryViewer(_jsonSerializer, _userManager, _libraryManager, _itemRepository).Show();
- }
- void cmdRestart_Click(object sender, EventArgs e)
- {
- _appHost.Restart();
- }
- void cmdExit_Click(object sender, EventArgs e)
- {
- _appHost.Shutdown();
- }
- void cmdGtihub_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenGithub(_logger);
- }
- void cmdStandardDocs_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenStandardApiDocumentation(_configurationManager, _appHost, _logger);
- }
- void cmdSwagger_Click(object sender, EventArgs e)
- {
- BrowserLauncher.OpenSwagger(_configurationManager, _appHost, _logger);
- }
- ~ServerNotifyIcon()
- {
- Dispose();
- }
- public void Dispose()
- {
- if (!IsDisposing)
- {
- IsDisposing = true;
- }
- }
- }
- }
|