Esempio n. 1
0
        public void EditTask()
        { // TODO: Untestable, rewrite for unit testing.
            var oldTaskName = ActiveForm.GetCurrentSelectedTaskName();

            if (oldTaskName == null)
            {
                messageBoxFactory.ShowMessageBox(
                    EMessageBox.Standard,
                    Resources.NoRowSelectedErrorMessage,
                    Settings.Default.AppName,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);

                return;
            }

            var selectedTask = QueryTask(oldTaskName);

            DataInputDialog = dialogFactory.GetDialog(EDialog.StandardTask, selectedTask);
            DataInputDialog.AskUser();

            if (DataInputDialog.IsDataProvided())
            {
                var newTask = (ITask)DataInputDialog.ReturnValue;

                // Is new task and old task the same:
                if (selectedTask.Equals(newTask))
                {
                    messageBoxFactory.ShowMessageBox(
                        EMessageBox.Standard,
                        Resources.EditedTaskStillTheSameErrorMessage,
                        Settings.Default.AppName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);

                    return;
                }

                ICategory category;
                // Delete task from old category:
                if (selectedTask.Complete)
                {
                    category = QueryCategory(Resources.CompletedTaskListText);
                }
                else
                {
                    category = QueryCategory(selectedTask.Category);
                }
                category.Tasks.Remove(selectedTask);

                // Add task to new category:
                if (newTask.Complete)
                {
                    category = QueryCategory(Resources.CompletedTaskListText);
                }
                else
                {
                    category = QueryCategory(newTask.Category);
                }
                category.Tasks.Add(newTask);

                ActiveForm.EditTaskInDisplay(newTask, selectedTask);
            }
            else
            {
                messageBoxFactory.ShowMessageBox(
                    EMessageBox.Standard,
                    Resources.NoDataProvidedErrorText,
                    Settings.Default.AppName,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }

            var dialog = (Form)DataInputDialog;

            dialog.Dispose();
        }