public BaseFolder MoveTask(Task task, string folderName, IList <Color> newFolderColorOptions) { Util.RequireArgument(m_taskList.Contains(task), "task"); var folder = m_folderList.FirstOrDefault(f => f.Name.EasyEquals(folderName)); if (folder == null && Folder.IsValidFolderName(folderName)) { var color = getNextColor(newFolderColorOptions); AddFolder(folder = new Folder(folderName, color)); } task.Folder = folder; return(task.EffectiveFolder); }
public void RenameFolder(Folder folder, string newName) { Util.RequireNotNull(folder, "folder"); Util.RequireArgument(m_folderList.Contains(folder), "folder"); Util.RequireArgument(newName == newName.SuperTrim(), "newName"); Util.RequireArgument(Folder.IsValidFolderName(newName), "newName"); if (folder.Name == newName) { // no-op } else if (folder.Name.EasyEquals(newName)) { // just a case change -> easy // make darn sure we haven't broken our logic -> should only have folder that matches w/ case Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 1); folder.UpdateName(newName); } else if (m_folderList.Count(existing => existing.Name.EasyEquals(newName)) > 0) { Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 1); var target = m_folderList.First(existing => existing.Name.EasyEquals(newName)); // move existing items to target folder m_taskList .Where(task => task.Folder == folder) .ForEach(task => task.Folder = target); // nuke existing folder m_folderList.Remove(folder); if (m_currentFolder == folder) { CurrentFolder = target; } } else { // this is an entirely novel name. Cool! // make darn sure we haven't broken our logic -> should have no folder with matching name Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 0); folder.UpdateName(newName); } refreshAllFolders(); }
public Task AddTask(DraftTask task, IList <Color> colorOptions) { Util.RequireNotNull(task, "task"); var color = getNextColor(colorOptions); var folder = m_folderList.FirstOrDefault(f => f.Name.EasyEquals(task.FolderName)); if (folder == null) { if (Folder.IsValidFolderName(task.FolderName)) { AddFolder(folder = new Folder(task.FolderName, color)); } } var newTask = task.CloneWithFolder(folder); AddTask(newTask); return(newTask); }