private void UpdateStatus(IPowerSupplyStatus status) { var percentage = Math.Round(status.BatteryCharge * 100); var tooltip = string.Empty; RenderCharge(status.BatteryCharge, status.BatteryChargeStatus); if (status.IsOnline) { infoShown = false; warningShown = false; tooltip = text.Get(percentage == 100 ? TextKey.SystemControl_BatteryCharged : TextKey.SystemControl_BatteryCharging); tooltip = tooltip.Replace("%%CHARGE%%", percentage.ToString()); } else { tooltip = text.Get(TextKey.SystemControl_BatteryRemainingCharge); tooltip = tooltip.Replace("%%CHARGE%%", percentage.ToString()); tooltip = tooltip.Replace("%%HOURS%%", status.BatteryTimeRemaining.Hours.ToString()); tooltip = tooltip.Replace("%%MINUTES%%", status.BatteryTimeRemaining.Minutes.ToString()); HandleBatteryStatus(status.BatteryChargeStatus); } if (!infoShown && !warningShown) { Button.ToolTip = tooltip; } PowerPlug.Visibility = status.IsOnline ? Visibility.Visible : Visibility.Collapsed; Text.Text = tooltip; Warning.Visibility = status.BatteryChargeStatus == BatteryChargeStatus.Critical ? Visibility.Visible : Visibility.Collapsed; }
private void PowerSupply_StatusChanged(IPowerSupplyStatus status) { Dispatcher.InvokeAsync(() => UpdateStatus(status)); }