using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HCI_Coursework_EVCHARGE { public partial class Charging : Form { String bay; String vehicle; String duration; public Charging(String bayNo, String vehicle, String duration) { InitializeComponent(); this.bay = bayNo; this.vehicle = vehicle; this.duration = duration; var details = new ChargingDetails(Convert.ToInt16(bay)).getCarInfo(vehicle); label1.Text = $"{System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(vehicle)} Charging..."; chargeRateLabel.Text = $"Charging Rate: {details[0]} kW"; chargeCapacityLabel.Text = $" Total Charge: {Convert.ToString(decimal.Round( (Convert.ToDecimal(details[0]) * Convert.ToInt16(duration)), 2, MidpointRounding.ToEven))} kWh"; } private void Charging_Load(object sender, EventArgs e) { timer1.Enabled = true; timer1.Start(); timer1.Interval = 1000; progressBar1.Maximum = (Convert.ToInt16(duration) * 3600); timer1.Tick += new EventHandler(timer1_Tick); } private void timer1_Tick(object sender, EventArgs e) { TimeSpan timeRemaining = TimeSpan.FromSeconds(progressBar1.Maximum - progressBar1.Value); if (progressBar1.Value != progressBar1.Maximum) { Console.WriteLine( timeRemaining.ToString() ); progressBar1.Value++; timeRemainingLabel.Text = string.Format("{0:D2}h:{1:D2}m:{2:D2}s" + " remaining.", timeRemaining.Hours, timeRemaining.Minutes, timeRemaining.Seconds); } else { timer1.Stop(); } } private void cancel_Button(object sender, EventArgs e) { Application.Exit(); } } }