This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/MobileApps/MyDriving/MyDriving.iOS/Screens/ProfileTableViewController.cs

91 lines
3.3 KiB
C#
Raw Normal View History

2022-11-03 20:41:13 +00:00
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
using Foundation;
using System.Collections.Generic;
using UIKit;
using System;
using MyDriving.ViewModel;
using SDWebImage;
using System.Threading.Tasks;
namespace MyDriving.iOS
{
public partial class ProfileTableViewController : UITableViewController
{
const string StatCellIdentifier = "STAT_CELL_IDENTIFIER";
List<DrivingStatistic> data;
public ProfileTableViewController(IntPtr handle) : base(handle)
{
}
public ProfileViewModel ViewModel { get; set; }
public override void ViewDidLoad()
{
base.ViewDidLoad();
ViewModel = new ProfileViewModel();
NavigationItem.Title = $"{ViewModel.Settings.UserFirstName} {ViewModel.Settings.UserLastName}";
var url = ViewModel.Settings.UserProfileUrl;
imgAvatar.SetImage(new NSUrl(url));
imgAvatar.Layer.CornerRadius = imgAvatar.Frame.Width/2;
imgAvatar.Layer.BorderWidth = 2;
imgAvatar.Layer.BorderColor = "15A9FE".ToUIColor().CGColor;
imgAvatar.Layer.MasksToBounds = true;
UpdateUI();
}
public override async void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
await ViewModel.UpdateProfileAsync()
.ContinueWith(t => { UpdateUI(); }, scheduler: TaskScheduler.FromCurrentSynchronizationContext());
}
void UpdateUI()
{
lblDrivingSkills.Text = $"Driving Skills: {ViewModel.DrivingSkillsPlacementBucket.Description}";
lblScore.Text = $"Score: {ViewModel.DrivingSkills}%";
PercentageView.Value = (ViewModel.DrivingSkills/100f)*360f;
data = new List<DrivingStatistic>
{
new DrivingStatistic {Name = "Total Distance", Value = ViewModel.TotalDistanceDisplay},
new DrivingStatistic {Name = "Total Duration", Value = ViewModel.TotalTimeDisplay},
new DrivingStatistic {Name = "Max Speed", Value = ViewModel.MaxSpeedDisplay},
new DrivingStatistic {Name = "Fuel Consumption", Value = ViewModel.FuelDisplay},
new DrivingStatistic {Name = "Hard Stops", Value = ViewModel.HardStops.ToString()},
new DrivingStatistic {Name = "Hard Accelerations", Value = ViewModel.HardAccelerations.ToString()},
new DrivingStatistic {Name = "Total Trips", Value = ViewModel.TotalTrips.ToString()},
};
TableView.ReloadData();
}
#region UITableViewSource
public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
return 60;
}
public override nint RowsInSection(UITableView tableView, nint section)
{
return (data?.Count).GetValueOrDefault();
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var cell = tableView.DequeueReusableCell(StatCellIdentifier) as ProfileStatCell;
cell.Name = data[indexPath.Row].Name;
cell.Value = data[indexPath.Row].Value;
return cell;
}
#endregion
}
}