Exemplo n.º 1
0
 public override sealed void SetOnTimeChangedListener(IOnTimeChangedListener onTimeChangedListener)
 {
     base.SetOnTimeChangedListener(onTimeChangedListener);
 }
 public override sealed void SetOnTimeChangedListener(IOnTimeChangedListener onTimeChangedListener)
 {
     base.SetOnTimeChangedListener(onTimeChangedListener);
 }
Exemplo n.º 3
0
        public ChangeTimePage(int weekDay, TimeUnit oldTime, bool isStartTime, Profile passedProfile, IOnTimeChangedListener listener)
        {
            InitializeComponent();

            ChooseWeekDayTimePicker.Format = "HH:mm";

            LastWeekDay = false;

            if (isStartTime)
            {
                ChooseWeekDayLabel.Text = "Wann soll das Profil \n am " + weekDays[weekDay] + " starten?";
            }
            else if (!isStartTime)
            {
                ChooseWeekDayLabel.Text = "Wann soll das Profil am " + weekDays[weekDay] + " enden?";
            }

            ChooseWeekDayTimePicker.Time = new TimeSpan(oldTime.Hour, oldTime.Minute, 0);

            ConfirmButton.Clicked += (sender, e) =>
            {
                TimeUnit modifiedTime = new TimeUnit(ChooseWeekDayTimePicker.Time.Hours, ChooseWeekDayTimePicker.Time.Minutes);
                bool     isValid      = true;
                TimeUnit startTime;
                TimeUnit endTime;
                if (isStartTime)
                {
                    startTime = new TimeUnit(modifiedTime);
                    endTime   = passedProfile.EndTimes[weekDay];
                }
                else
                {
                    startTime = passedProfile.StartTimes[weekDay];
                    endTime   = new TimeUnit(modifiedTime);
                }

                TimeUnit nextDayStartTime      = new TimeUnit(0, 0);
                TimeUnit previousDayEndTime    = new TimeUnit(0, 0);
                TimeUnit newNextDayStartTime   = new TimeUnit(0, 0);
                TimeUnit newPreviousDayEndTime = new TimeUnit(0, 0);

                if (endTime < startTime)
                {
                    nextDayStartTime = passedProfile.StartTimes[(weekDay + 1) % 7];
                    isValid          = endTime < nextDayStartTime;
                    if (!isValid)
                    {
                        if (passedProfile.Days[(weekDay + 1) % 7])
                        {
                            DisplayAlert("Ungültige Eingabe", "Zeiten überschneiden sich!", "OK");
                            return;
                        }
                        else
                        {
                            newNextDayStartTime = endTime;
                            passedProfile.StartTimes[(weekDay + 1) % 7] = newNextDayStartTime;
                        }
                    }
                }

                int prevDayIndex = ((weekDay - 1) % 7 + 7) % 7;

                if (passedProfile.EndTimes[prevDayIndex] < passedProfile.StartTimes[prevDayIndex])
                {
                    previousDayEndTime = passedProfile.EndTimes[prevDayIndex];
                    isValid            = previousDayEndTime < startTime;
                    if (!isValid)
                    {
                        if (passedProfile.Days[prevDayIndex])
                        {
                            DisplayAlert("Ungültige Eingabe", "Zeiten überschneiden sich!", "OK");
                            return;
                        }
                        else
                        {
                            newPreviousDayEndTime = startTime;
                            passedProfile.EndTimes[prevDayIndex] = newPreviousDayEndTime;
                        }
                    }
                }

                Console.WriteLine("modifiedTime: " + modifiedTime);
                Console.WriteLine("startTime: " + startTime);
                Console.WriteLine("endTime: " + endTime);
                Console.WriteLine("nextDayStartTime: " + nextDayStartTime);
                Console.WriteLine("previousDayEndTime: " + previousDayEndTime);
                Console.WriteLine("newNextDayStartTime: " + newNextDayStartTime);
                Console.WriteLine("newPreviousDayEndTime: " + newPreviousDayEndTime);

                if (isStartTime)
                {
                    passedProfile.StartTimes[weekDay] = modifiedTime;
                }
                else
                {
                    passedProfile.EndTimes[weekDay] = modifiedTime;
                }

                listener.OnTimeChanged();

                Navigation.PopAsync();
            };

            AbortButton.Clicked += (sender, args) =>
            {
                Navigation.PopAsync();
            };
        }