private void OnPowerModeChanged(object sender, PowerModeChangedEventArgs args) { if (args.Mode != PowerModes.StatusChange) { return; } // Todo, base this only on charging/discharging? Or on percentage status? Guid id; var message = string.Empty; switch (Forms.SystemInformation.PowerStatus.PowerLineStatus) { case Forms.PowerLineStatus.Online: id = Settings.Default.ChargingScheme; if (id != Guid.Empty) { PowerManagement.SetActiveScheme(id); message = String.Format("The power scheme has been automatically set to {0}", PowerManagement.ReadFriendlyName(id)); } break; case Forms.PowerLineStatus.Offline: id = Settings.Default.DischargingScheme; if (id != Guid.Empty) { PowerManagement.SetActiveScheme(id); message = String.Format("The power scheme has been automatically set to {0}", PowerManagement.ReadFriendlyName(id)); } break; case Forms.PowerLineStatus.Unknown: // todo, what does unknown indicate? How to best handle this case? message = "Unknown? Panic!"; break; default: message = "Default? Hmmm"; break; } NotifyVM.UpdateActiveScheme(PowerManagement.GetActiveScheme()); NotifyIcon.ShowBalloonTip("QuickPower", message, BalloonIcon.Info); }