LondonBike.TripLog.StopTripItem C# (CSharp) Method

StopTripItem() public static method

public static StopTripItem ( int totalTime ) : void
totalTime int
return void
        public static void StopTripItem(int totalTime)
        {
            if (currentTripLog == null) {
                NSUserDefaults defaults = NSUserDefaults.StandardUserDefaults;

                string line = defaults.StringForKey ("triplog_line");

                if (string.IsNullOrEmpty (line))
                    return;

                currentTripLog = new TripLog (line.Split ('|'));
            }

            currentTripLog.TimeInSeconds = totalTime;

            GetCurrentLocation (currentTripLog, false, delegate {

            #if DEBUG
            #if FAKEDATA
                currentTripLog.EndLat = Locations.BanksideMix.Latitude;
                currentTripLog.EndLon = Locations.BanksideMix.Longitude;
                currentTripLog.TimeInSeconds = 1120;
            #endif
            #endif

                Util.Log ("Found End location");
                BikeLocation loc = BikeLocation.FindClosestBike (currentTripLog.EndLat, currentTripLog.EndLon);
                if (loc != null) {
                    if (loc.DistanceFromCurrentPoint > 500) {
                        currentTripLog.EndStation = "Unknown";
                    } else {
                        currentTripLog.EndStation = loc.Name;

                    }
                } else {
                    currentTripLog.EndStation = "Unknown";
                }
                currentTripLog.DistanceInMeters = (int)BikeLocation.CalculateDistanceInMeters (
                                                                                         new CLLocationCoordinate2D (currentTripLog.StartLat, currentTripLog.StartLon),
                                                                                         new CLLocationCoordinate2D (currentTripLog.EndLat, currentTripLog.EndLon));
                BikeLocation.LogTrip (currentTripLog.TimeInSeconds, currentTripLog.DistanceInMeters);

                Util.Log ("End Station: " + currentTripLog.EndStation);
                allTrips.Insert (0, currentTripLog);

                PersistToDisk ();

                if (allTrips.Count > 0)
                    ReverseGeocode (allTrips [0]);

            });
        }

Usage Example

Example #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            LoadTimerUserDefaults();

            if (Running)
            {
                StartButton.SetImage(Resources.StopButton, UIControlState.Normal);
                clockTimer = NSTimer.CreateRepeatingScheduledTimer(TimeSpan.FromSeconds(1), UpdateTimerDisplay);
            }
            else
            {
                StartButton.SetImage(Resources.StartButton, UIControlState.Normal);
            }
            StartButton.TouchUpInside += delegate {
                if (Running)
                {
                    Running = false;

                    SetTimerUserDefaults();

                    TimeSpan elapsedTime = DateTime.Now - StartDate;

                    int totalSeconds = (int)Math.Truncate(elapsedTime.TotalSeconds);

                    TripLog.StopTripItem(totalSeconds);

                    ClearNotifications();

                    StartButton.SetImage(Resources.StartButton, UIControlState.Normal);
                    //StartButton.SetTitle("Start", UIControlState.Normal);
                    clockTimer.Invalidate();
                    clockTimer = null;

                    //CostLabel.Text = "£0.00";
                    //ElapsedLabel.Text = "0h 00m";
                    PriceIncreaseLabel.Text = "0m";
                    StartedLabel.Text       = "00:00";

                    Analytics.TrackEvent(Analytics.CATEGORY_ACTION, Analytics.ACTION_TIMER_STOP, "", 1);
                    Analytics.Dispatch();
                    //BackgroundLocationManager.Instance.StopLocationManager();
                }
                else
                {
                    StartDate = DateTime.Now;
                    Running   = true;

                    TripLog.StartNewTripItem();

                    SetNotification(StartDate.AddMinutes(30));


                    SetTimerUserDefaults();

                    StartButton.SetImage(Resources.StopButton, UIControlState.Normal);
                    //StartButton.SetTitle("Stop", UIControlState.Normal);
                    UpdateTimerDisplay();

                    clockTimer = NSTimer.CreateRepeatingScheduledTimer(TimeSpan.FromSeconds(1), UpdateTimerDisplay);
                    //BackgroundLocationManager.Instance.StartLocationManager();


                    Analytics.TrackPageView("/timerstart");
                    Analytics.TrackEvent(Analytics.CATEGORY_ACTION, Analytics.ACTION_TIMER_START, "", 1);
                    Analytics.Dispatch();
                }
            };
        }