protected virtual void DeleteAction() { ReminderEntity reminderToDelete = SelectedReminder; if (reminderToDelete == null) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningReminderNotSelectedToDelete")); return; } string confirmationText = TranslationProvider.Tr("confirmDeletingDialog") + " " + reminderToDelete.Name + "."; DialogResult confirmationResult = MessageBox.Show(confirmationText, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (confirmationResult != DialogResult.OK) { Log.Logger.Information($"Confirmation not given for deleting {reminderToDelete.Name}"); return; } bool result = PersistenceAdapter.Delete(reminderToDelete.Name); if (result == true) { HandleRemovingFromListBox(reminderToDelete); } else { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningSnoozedReminderCannotDelete")); } }
protected virtual void EditAction() { ReminderEntity reminderToUpdate = SelectedReminder; if (reminderToUpdate == null) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningReminderNotSelectedToEdit")); return; } CreateAndUpdateReminderForm createReminderForm = new CreateAndUpdateReminderForm(PersistenceAdapter, reminderToUpdate); createReminderForm.ShowDialog(); if (createReminderForm.DialogResult != DialogResult.OK) { Log.Logger.Information($"UpdateReminderForm closed with result NotOk."); return; } var updatedReminder = createReminderForm.CreateOrUpdatedReminder; bool result = PersistenceAdapter.Update(reminderToUpdate.Name, updatedReminder); if (result == true) { //using the element in the listbox remindersListBox.Items[remindersListBox.SelectedIndex] = updatedReminder; } else { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningSnoozedReminderCannotModify")); } }
protected virtual void CloneAction() { if (SelectedReminder == null) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningReminderNotSelectedToClone")); return; } //TODO: add clone dialog ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningNotYetImplemented")); ReminderEntity clone = (ReminderEntity)SelectedReminder.Clone(); //TODO: missing validation of backend causes creating duplicate name //PersistenceAdapter.Save(clone); //remindersListBox.Items.Add(clone); }
protected virtual bool ValidateInput() { //TODO DP->SI: add warning if user attempts to create recuring event in future so that one or more occurence of reminder are skipped between now and the scheduled time. //Such a reminder would in some way be a contradiction because user violates his own rules. No need to keep track of such an edge case for now. //TODO: maybe add validation against special characters in reminder name that would interfere with xml persistence although CDATA elemtns should have some protection already DateTime scheduledDateTime = GetDateTimeFromUI(); if (scheduledDateTime < DateTime.Now) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningReminderElapsed")); return(false); } string reminderName = reminderNameStringBox.Text; bool reminderNameIsEmpty = string.IsNullOrWhiteSpace(reminderName); if (reminderNameIsEmpty) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningMissingReminderName")); return(false); } bool nameSameAsBefore = oldValueOfReminderToBeUpdated?.Name == reminderName; if (!nameSameAsBefore && !IsNameAvialable(reminderName)) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningReminderNameAlreadyExists")); return(false); } bool multiplePeriodsChecked = DetermineIfMultiplePeriodsChecked(); if (multiplePeriodsChecked) { ErrorDialogUtility.ErrorDialog(TranslationProvider.Tr("warningMultipleReminderPeriodsSelected")); return(false); } Log.Logger.Information($"Reminder '{reminderName}' valid."); return(true); }