MonoTouch.Dialog icon indicating copy to clipboard operation
MonoTouch.Dialog copied to clipboard

DurationElement based on TimeElement is too difficult

Open timahrentlov opened this issue 12 years ago • 0 comments

This almost works:

class DurationElement : TimeElement { double durationValue = 0;

    public DurationElement(string caption, double duration): base(caption, DateTime.MinValue)
    {
        durationValue = duration;
    }

    public override UIDatePicker CreatePicker ()
    {
        var picker = base.CreatePicker ();
        picker.Mode = UIDatePickerMode.CountDownTimer;
        picker.MinuteInterval = 5;
        picker.CountDownDuration = durationValue;
        picker.ValueChanged += delegate { durationValue = picker.CountDownDuration;};
        return picker;
    }

    public override string FormatDate (DateTime dt)
    {
        if (durationValue != 0.0)
        {
            var hour = (int)durationValue / 3600;
            var min = (int)(durationValue % 3600)/60;
            return String.Format("{0:00}:{1:00}",hour, min);
        } else
            return " ";
    } 

}

but accessing the date value in base class, makes it crash:

class MyViewController : UIViewController { DateTimeElement container;

.. .. public override void ViewWillDisappear (bool animated) { base.ViewWillDisappear (animated); Crash ----> container.DateValue = container.datePicker.Date;

The easiest thing would be for xamarin to include a DurationElement directly. Subclassing Date/Time elements is currently cumbersome.

timahrentlov avatar Mar 26 '12 18:03 timahrentlov