public Window_EditReminder(Reminder reminder, bool fromNextLoadQueue) : this()
 {
     this.reminder     = reminder;
     title             = reminder.Title;
     body              = reminder.Body;
     selectedLetterDef = reminder.LetterDef;
     fireOnTick        = fromNextLoadQueue ? 0 : reminder.FireOnTick;
     nextLoad          = fromNextLoadQueue;
     if (nextLoad)
     {
         selectedTimeRep = TimeRepresentation.NextLoad;
     }
     if (reminder.RecurEvery.HasValue)
     {
         recur = true;
         var days           = Mathf.FloorToInt((float)reminder.RecurEvery.Value / (float)GenDate.TicksPerDay);
         var ticksRemainder = reminder.RecurEvery.Value - days * GenDate.TicksPerDay;
         var hours          = Mathf.CeilToInt((float)ticksRemainder / (float)GenDate.TicksPerHour);
         recurEveryDays  = days;
         recurEveryHours = hours;
     }
 }
        private void SaveAndClose()
        {
            if (!Validate())
            {
                return;
            }

            var comp = Current.Game.GetComponent <RemindersGameComponent>();

            if (reminder != null)
            {
                comp.ReminderQueue.InnerList.Remove(reminder);
                comp.RemindersOnNextLoad.Remove(reminder);
            }

            var recurDuration = recurEveryDays * GenDate.TicksPerDay + recurEveryHours * GenDate.TicksPerHour;

            var newReminder = new Reminder()
            {
                Title      = title,
                Body       = body,
                FireOnTick = nextLoad ? -1 : fireOnTick,
                LetterDef  = selectedLetterDef,
                RecurEvery = recur ? (int?)recurDuration : null
            };

            if (nextLoad)
            {
                comp.RemindersOnNextLoad.Add(newReminder);
            }
            else
            {
                comp.ReminderQueue.Push(newReminder);
            }

            Close();
        }
        public override void GameComponentTick()
        {
            base.GameComponentTick();

            if (Game.tickManager.TicksGame == ticksOnLoad + DelayToSendOnLoadLetters)
            {
                SendOnLoadLetters();
            }

            if (Game.tickManager.TicksGame % GenDate.TicksPerHour != 0)
            {
                return;
            }
            if (!VectorForTime.HasValue)
            {
                return;
            }
            if (ReminderQueue.Count == 0)
            {
                return;
            }

            Log.Debug(GenDate.DateFullStringWithHourAt(Game.tickManager.TicksAbs, VectorForTime.GetValueOrDefault()));
            while (ReminderQueue.Peek().FireOnTick <= GenTicks.TicksGame)
            {
                var reminder = ReminderQueue.Pop();
                SendLetter(reminder);
                if (reminder.RecurEvery.HasValue)
                {
                    ReminderQueue.Push(Reminder.Recur(reminder));
                }
                if (ReminderQueue.Count == 0)
                {
                    break;
                }
            }
        }
Beispiel #4
0
        private void SaveChanges_Click(object sender, RoutedEventArgs e)
        {
            var parameter1 = new Reminder();

            if (String.IsNullOrWhiteSpace(ReminderNameBox.Text))
            {
                parameter1.ReminderName = "Untitled Reminder";
            }
            else
            {
                parameter1.ReminderName = ReminderNameBox.Text;
            }

            if (String.IsNullOrWhiteSpace(LocationBox.Text))
            {
                parameter1.LocationName = "Location: None";
            }
            else
            {
                parameter1.LocationName = LocationBox.Text;
            }

            if (String.IsNullOrWhiteSpace(EmailBox.Text))
            {
                parameter1.EmailName = "Email: None";
            }
            else
            {
                parameter1.EmailName = EmailBox.Text;
            }

            if (String.IsNullOrWhiteSpace(NotesBox.Text))
            {
                parameter1.ReminderNotes = "Notes: None";
            }
            else
            {
                parameter1.ReminderNotes = NotesBox.Text;
            }

            if (String.IsNullOrWhiteSpace(LinkBox.Text))
            {
                parameter1.ReminderLinks = "Links: None";
            }
            else
            {
                parameter1.ReminderLinks = LinkBox.Text;
            }

            var reminderDate = ReminderDatePicker.Date;

            if (reminderDate.HasValue)
            {
                DateTime date1 = reminderDate.Value.DateTime;

                var notificationDate = ReminderDatePicker.Date.Value.DateTime;
                parameter1.NotificationTime = notificationDate;

                var formattedDate = date1.ToString("MM/dd/yyyy");
                parameter1.ReminderDate = formattedDate;
            }
            else
            {
                parameter1.ReminderDate     = "Date: None";
                parameter1.NotificationTime = DateTime.Now;
            }

            var reminderTimeHours   = ReminderTimePicker.Time.Hours;
            var reminderTimeMinutes = ReminderTimePicker.Time.Minutes;

            string amPm;

            if (reminderTimeHours > 12)
            {
                reminderTimeHours -= 12;
                amPm = "PM";
            }
            else
            {
                amPm = "AM";
            }

            string formattedHours;

            if (reminderTimeHours < 10)
            {
                formattedHours = reminderTimeHours.ToString();
                formattedHours = "0" + formattedHours;
            }
            else
            {
                formattedHours = reminderTimeHours.ToString();
            }

            string formattedMinutes;

            if (reminderTimeMinutes < 10)
            {
                formattedMinutes = reminderTimeMinutes.ToString();
                formattedMinutes = "0" + formattedMinutes;
            }
            else
            {
                formattedMinutes = reminderTimeMinutes.ToString();
            }

            string timeString;

            if (reminderTimeHours == 0 && reminderTimeMinutes == 0)
            {
                timeString = "Time: None";
            }
            else
            {
                timeString = formattedHours + ":" + formattedMinutes + " " + amPm;
            }

            parameter1.ReminderTime = timeString;

            int reminderComboBox;

            if (NotificationComboBox.SelectedValue != null)
            {
                switch (NotificationComboBox.SelectedValue.ToString())
                {
                case "5 Minutes Before":
                    reminderComboBox = 5;
                    break;

                case "10 Minutes Before":
                    reminderComboBox = 10;
                    break;

                case "15 Minutes Before":
                    reminderComboBox = 15;
                    break;

                case "30 Minutes Before":
                    reminderComboBox = 30;
                    break;

                case "1 Hour Before":
                    reminderComboBox = 60;
                    break;

                case "5 Hours Before":
                    reminderComboBox = 300;
                    break;

                default:
                    reminderComboBox = 0;
                    break;
                }
            }
            else
            {
                reminderComboBox = 0;
            }

            parameter1.ReminderNotification = reminderComboBox;

            ToastVisual visual = new ToastVisual()
            {
                BindingGeneric = new ToastBindingGeneric()
                {
                    Children =
                    {
                        new AdaptiveText()
                        {
                            Text = "Reminder"
                        },
                        new AdaptiveText()
                        {
                            Text = "Body"
                        },
                        new AdaptiveText()
                        {
                            Text = "End Reminder"
                        }
                    }
                }
            };

            ToastContent toastContent = new ToastContent()
            {
                Visual = visual
            };

            var toast = new ToastNotification(toastContent.GetXml());

            //ToastNotificationManager.CreateToastNotifier().Show(toast);
            toast.ExpirationTime = DateTime.Now.AddSeconds(5);

            //var toast = new Windows.UI.Notifications.ScheduledToastNotification(toastContent.GetXml, ReminderDatePicker.Date.Value.DateTime);

            if (ReminderDatePicker.Date.HasValue)
            {
                if (ReminderDatePicker.Date.Value.Date == DateTime.Today.Date)
                {
                    if (ReminderTimePicker.Time.Hours < DateTime.Now.Hour)
                    {
                        ToastNotificationManager.CreateToastNotifier().Show(toast);
                    }
                    else
                    {
                        //var timeSpan = new TimeSpan(0, ReminderTimePicker.Time.Hours - DateTime.Now.Hour, ReminderTimePicker.Time.Minutes - DateTime.Now.Minute, 0);
                        var midnight = DateTime.Now;

                        var minutesCounter    = ReminderTimePicker.Time.Minutes - DateTime.Now.Minute;
                        var hoursCounter      = ReminderTimePicker.Time.Hours - DateTime.Now.Hour;
                        var intMinutesCounter = Convert.ToInt32(minutesCounter);
                        var intHoursCounter   = Convert.ToInt32(hoursCounter);
                        var timeSpan          = new TimeSpan(0, intHoursCounter, intMinutesCounter, 0);

                        DateTimeOffset scheduledTime = midnight + timeSpan;

                        var toast1 = new ScheduledToastNotification(toastContent.GetXml(), scheduledTime);
                        //ToastNotificationManager.CreateToastNotifier().Show(toast);
                        ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast1);
                    }
                }
            }

            //var toast = new ScheduledToastNotification(toastContent.GetXml(), ReminderDatePicker.Date.Value.DateTime);
            //ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast);

            this.Frame.Navigate(typeof(MainPage), parameter1);
        }
Beispiel #5
0
        private void Create_Click(object sender, RoutedEventArgs e)
        {
            var parameter1 = new Reminder();

            if (String.IsNullOrWhiteSpace(ReminderNameBox.Text))
            {
                parameter1.ReminderName = "Untitled Reminder";
            }
            else
            {
                parameter1.ReminderName = ReminderNameBox.Text;
            }

            if (String.IsNullOrWhiteSpace(LocationBox.Text))
            {
                parameter1.LocationName = "Location: None";
            }
            else
            {
                parameter1.LocationName = LocationBox.Text;
            }

            if (String.IsNullOrWhiteSpace(EmailBox.Text))
            {
                parameter1.EmailName = "Email: None";
            }
            else
            {
                parameter1.EmailName = EmailBox.Text;
            }

            if (String.IsNullOrWhiteSpace(NotesBox.Text))
            {
                parameter1.ReminderNotes = "Notes: None";
            }
            else
            {
                parameter1.ReminderNotes = NotesBox.Text;
            }

            if (String.IsNullOrWhiteSpace(LinkBox.Text))
            {
                parameter1.ReminderLinks = "Links: None";
            }
            else
            {
                parameter1.ReminderLinks = LinkBox.Text;
            }

            var reminderDate = ReminderDatePicker.Date;

            if (reminderDate.HasValue)
            {
                DateTime date1         = reminderDate.Value.DateTime;
                var      formattedDate = date1.ToString("MM/dd/yyyy");
                parameter1.ReminderDate = formattedDate;
            }
            else
            {
                parameter1.ReminderDate = "Date: None";
            }

            var reminderTimeHours   = ReminderTimePicker.Time.Hours;
            var reminderTimeMinutes = ReminderTimePicker.Time.Minutes;

            string amPm;

            if (reminderTimeHours > 12)
            {
                reminderTimeHours -= 12;
                amPm = "PM";
            }
            else
            {
                amPm = "AM";
            }

            string formattedHours;

            if (reminderTimeHours < 10)
            {
                formattedHours = reminderTimeHours.ToString();
                formattedHours = "0" + formattedHours;
            }
            else
            {
                formattedHours = reminderTimeHours.ToString();
            }

            string formattedMinutes;

            if (reminderTimeMinutes < 10)
            {
                formattedMinutes = reminderTimeMinutes.ToString();
                formattedMinutes = "0" + formattedMinutes;
            }
            else
            {
                formattedMinutes = reminderTimeMinutes.ToString();
            }

            string timeString;

            if (reminderTimeHours == 0 && reminderTimeMinutes == 0)
            {
                timeString = "Time: None";
            }
            else
            {
                timeString = formattedHours + ":" + formattedMinutes + " " + amPm;
            }

            parameter1.ReminderTime = timeString;

            this.Frame.Navigate(typeof(MainPage), parameter1);
        }
        private void DoReminderRow(Rect rect, Reminder reminder, bool zebra, List <Reminder> listToRemoveFrom)
        {
            if (zebra)
            {
                Widgets.DrawLightHighlight(rect);
            }
            Widgets.DrawHighlightIfMouseover(rect);

            var deleteRect = rect;

            deleteRect.width = 30f;


            var deletePressed = Widgets.ButtonImage(deleteRect, DeleteX);

            if (deletePressed)
            {
                Dialog_MessageBox confirmDelete = Dialog_MessageBox.CreateConfirmation(
                    I18n.Translate("ConfirmDelete.Body"),
                    () => listToRemoveFrom.Remove(reminder),
                    destructive: true,
                    I18n.Translate("ConfirmDelete.Title")
                    );
                Find.WindowStack.Add(confirmDelete);
            }

            var iconRect = rect;

            iconRect.xMin += 35f;
            iconRect.width = 30f;

            var icon = reminder.LetterDef.Icon;

            if (icon != null)
            {
                var iconColor = reminder.LetterDef.color;
                GUI.color = iconColor;
                Widgets.DrawTextureFitted(iconRect, icon, .8f);
                if (reminder.RecurEvery.HasValue)
                {
                    Widgets.DrawTextureFitted(iconRect, RecurArrow, .5f);
                }
            }

            var fromNowRect = rect;

            fromNowRect.xMin  = iconRect.xMax + 5f;
            fromNowRect.width = 80f;
            GUI.color         = new Color(.75f, .75f, .75f);
            Widgets.Label(fromNowRect, reminder.FromNow.Truncate(fromNowRect.width));

            var titleRect = rect;

            titleRect.xMin  = fromNowRect.xMax + 5f;
            titleRect.width = 300f;

            GUI.color = Color.white;
            Widgets.Label(titleRect, reminder.Title.Truncate(titleRect.width));

            var bodyRect = rect;

            bodyRect.xMin = titleRect.xMax + 5f;
            Widgets.Label(bodyRect, reminder.Body.Replace('\n', ' ').Truncate(bodyRect.width));

            var rowRect = rect;

            rowRect.xMin = deleteRect.xMax;
            if (Widgets.ButtonInvisible(rowRect))
            {
                Find.WindowStack.Add(new Window_EditReminder(reminder, reminder.FireOnTick == -1));
            }
        }