コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }