/// <summary> /// Creates a new BatteryMeterApplicationContext instance using the specified BatteryStatusPoller. /// </summary> /// <param name="poller">The BatteryStatusPoller that will query battery status.</param> public BatteryMeterApplicationContext(BatteryStatusPoller poller) { // Set up the poller values. _poller = poller; poller.ControllerConnected += Controller_Connected; poller.ControllerDisconnected += Controller_Disconnected; poller.ControllerBatteryLow += Controller_BatteryLow; poller.ControllerBatteryInformationUpdated += Controller_BatteryInformationUpdated; // Set up the Notification icon. _notifyIcon = new NotifyIcon { Icon = Resources.AppIcon, ContextMenu = new ContextMenu(), Visible = true, Text = Resources.AppName }; _notifyIcon.ContextMenu.Popup += ContextMenu_Popup; foreach (var controller in _poller.Controllers) { var mainMenuItem = new MenuItem { Name = $"Controller{controller.UserIndex}_Main" }; var batteryTypeMenuItem = new MenuItem { Enabled = false, Name = $"Controller{controller.UserIndex}_BatteryType" }; var batteryLevelMenuItem = new MenuItem { Enabled = false, Name = $"Controller{controller.UserIndex}_BatteryLevel" }; mainMenuItem.Click += MainMenuItem_Click; UpdateControllerStatus(controller, ref mainMenuItem, ref batteryTypeMenuItem, ref batteryLevelMenuItem); _notifyIcon.ContextMenu.MenuItems.Add(mainMenuItem); _notifyIcon.ContextMenu.MenuItems.Add(batteryTypeMenuItem); _notifyIcon.ContextMenu.MenuItems.Add(batteryLevelMenuItem); _notifyIcon.ContextMenu.MenuItems.Add("-"); } var aboutItem = new MenuItem(Resources.AboutMenuItem, About_Clicked) { Name = "About" }; var exitItem = new MenuItem(Resources.ExitMenuItem, Exit_Clicked) { Name = "Exit" }; _notifyIcon.ContextMenu.MenuItems.Add(aboutItem); _notifyIcon.ContextMenu.MenuItems.Add(exitItem); UpdateActiveController(); }
public static void Main() { Console.WriteLine(@"Initializing."); var xinput13 = IsLibraryInstalled("xinput1_3.dll"); //var xinput910 = IsLibraryInstalled("xinput9_1_0.dll"); if (!xinput13) { MessageBox.Show(Resources.XInputNotFoundText, Resources.XInputNotFoundCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } else { var poller = new BatteryStatusPoller(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new BatteryMeterApplicationContext(poller)); } }
/// <summary> /// Creates a new BatteryMeterApplicationContext instance using the specified BatteryStatusPoller. /// </summary> /// <param name="poller">The BatteryStatusPoller that will query battery status.</param> public BatteryMeterApplicationContext(BatteryStatusPoller poller) { // Set up the poller values. _poller = poller; poller.ControllerConnected += Controller_Connected; poller.ControllerDisconnected += Controller_Disconnected; poller.ControllerBatteryLow += Controller_BatteryLow; poller.ControllerBatteryInformationUpdated += Controller_BatteryInformationUpdated; // Set up the Notification icon. _notifyIcon = new NotifyIcon { Icon = Resources.AppIcon, ContextMenuStrip = new ContextMenuStrip(), Visible = true, Text = Resources.AppName }; _notifyIcon.ContextMenuStrip.Opening += new CancelEventHandler(ContextMenu_Opening); foreach (var controller in _poller.Controllers) { var mainMenuItem = new ToolStripMenuItem { Name = $"Controller{controller.UserIndex}_Main" }; var batteryTypeMenuItem = new ToolStripMenuItem { Enabled = false, Name = $"Controller{controller.UserIndex}_BatteryType" }; var batteryLevelMenuItem = new ToolStripMenuItem { Enabled = false, Name = $"Controller{controller.UserIndex}_BatteryLevel" }; mainMenuItem.Click += MainMenuItem_Click; var updateMethod = (MethodInvoker) delegate { UpdateControllerStatus(controller, ref mainMenuItem, ref batteryTypeMenuItem, ref batteryLevelMenuItem); }; if (_notifyIcon.ContextMenuStrip.InvokeRequired) { _notifyIcon.ContextMenuStrip.Invoke(updateMethod); } else { updateMethod(); } _notifyIcon.ContextMenuStrip.Items.Add(mainMenuItem); _notifyIcon.ContextMenuStrip.Items.Add(batteryTypeMenuItem); _notifyIcon.ContextMenuStrip.Items.Add(batteryLevelMenuItem); _notifyIcon.ContextMenuStrip.Items.Add("-"); } var aboutItem = new ToolStripMenuItem(Resources.AboutMenuItem, null, About_Clicked) { Name = "About" }; var exitItem = new ToolStripMenuItem(Resources.ExitMenuItem, null, Exit_Clicked) { Name = "Exit" }; _notifyIcon.ContextMenuStrip.Items.Add(aboutItem); _notifyIcon.ContextMenuStrip.Items.Add(exitItem); UpdateActiveController(); AutoUpdaterDotNET.AutoUpdater.Start(_primaryUpdateUrl); }