public void RenameCategory() { // TODO: Untestable, rewrite for unit testing. var selectedCategoryName = ActiveForm.GetCurrentSelectedCategoryName(); // Check if user tries to change name of special categories: if (selectedCategoryName == Resources.CompletedTaskListText || selectedCategoryName == Resources.DefaultTaskCategoryName) { messageBoxFactory.ShowMessageBox( EMessageBox.Standard, Resources.RenameSpecialListErrorText, Settings.Default.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Ask user for new category name: DataInputDialog = dialogFactory.GetDialog(EDialog.StringInput, Resources.RenameCategoryDialogText); DataInputDialog.AskUser(); if (DataInputDialog.IsDataProvided()) { var newCategoryName = (string)DataInputDialog.ReturnValue; var categoryToBeRenamed = QueryCategory(selectedCategoryName); // Change category name to new one in settings, display and memory: foreach (var category in Categories) { if (category.Name == selectedCategoryName) { var index = Settings.Default.Categories.IndexOf(selectedCategoryName); Settings.Default.Categories.RemoveAt(index); Settings.Default.Categories.Add(newCategoryName); Settings.Default.Save(); ActiveForm.RenameCategoryInDisplay(categoryToBeRenamed, newCategoryName); category.Name = newCategoryName; break; } } } else { messageBoxFactory.ShowMessageBox( EMessageBox.Standard, Resources.NoDataProvidedErrorText, Settings.Default.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error); } var dialog = (Form)DataInputDialog; dialog.Dispose(); }