コード例 #1
0
ファイル: Outlook.cs プロジェクト: stevencohn/OneMore
        private OutlookTaskFolders GetTaskHierarchy(
            Folder parent, OutlookTaskFolders container, string path = null)
        {
            var folder = new OutlookTaskFolder
            {
                Name    = parent.Name,
                EntryID = parent.EntryID
            };

            path = path == null ? parent.Name : $"{path}{OutlookTask.PathDelimeter}{parent.Name}";

            var items = parent.Items;

            items.IncludeRecurrences = true;
            foreach (TaskItem item in items)
            {
                folder.Tasks.Add(new OutlookTask
                {
                    Subject         = item.Subject,
                    EntryID         = item.EntryID,
                    Complete        = item.Complete,
                    CreationTime    = item.CreationTime,
                    DateCompleted   = item.DateCompleted,
                    DueDate         = item.DueDate,
                    Importance      = (OutlookImportance)item.Importance,
                    PercentComplete = item.PercentComplete,
                    StartDate       = item.StartDate,
                    Status          = (OutlookTaskStatus)item.Status,
                    FolderPath      = path,
                    Year            = item.DueDate.Year,
                    WoYear          = calendar.GetWeekOfYear(item.DueDate, weekRule, firstDay),
                    OneNoteTaskID   = item.UserProperties["OneNoteTaskID"]?.Value as string,
                    OneNoteURL      = item.UserProperties["OneNoteURL"]?.Value as string,
                    OneNotePageID   = item.UserProperties["OneNotePageID"]?.Value as string,
                    OneNoteObjectID = item.UserProperties["OneNoteObjectID"]?.Value as string
                });

                Marshal.ReleaseComObject(item);
            }

            container.Add(folder);

            foreach (Folder child in parent.Folders)
            {
                GetTaskHierarchy(child, folder.Folders, path);
                Marshal.ReleaseComObject(child);
            }

            Marshal.ReleaseComObject(parent);
            return(container);
        }
コード例 #2
0
ファイル: Outlook.cs プロジェクト: stevencohn/OneMore
        private IEnumerable <OutlookTask> Flatten(OutlookTaskFolders folders)
        {
            foreach (var folder in folders)
            {
                foreach (var task in folder.Tasks
                         .Where(t => !string.IsNullOrEmpty(t.OneNoteTaskID)))
                {
                    yield return(task);
                }

                foreach (var task in Flatten(folder.Folders)
                         .Where(t => !string.IsNullOrEmpty(t.OneNoteTaskID)))
                {
                    yield return(task);
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Initialize a new instance of this folder
 /// </summary>
 public OutlookTaskFolder()
 {
     Folders = new OutlookTaskFolders();
     Tasks   = new OutlookTasks();
 }