コード例 #1
0
        private ConversationDTO GetRelatedItems(OutlookItem sourceItem, bool latestFirst, bool currentFolderOnly = true)
        {
            Conversation    c   = ((dynamic)sourceItem.InnerObject).GetConversation();
            ConversationDTO dto = new ConversationDTO()
            {
                Topic = sourceItem.ConversationTopic
            };
            var table = c.GetTable();

            if (table.GetRowCount() == 0)
            {
                dto.Items = new List <OutlookItem> {
                    sourceItem
                };
                dto.FirstRootItem = sourceItem;
            }
            else
            {
                table.MoveToStart();
                var row  = table.GetNextRow();
                var item = new OutlookItem(table.Session.GetItemFromID(row["EntryID"]));
                dto.FirstRootItem = item;
                SortedDictionary <DateTime, OutlookItem> ordered = new SortedDictionary <DateTime, OutlookItem>();
                while (true)
                {
                    if (!ordered.Values.Any(i => i.EntryID == item.EntryID) && (!currentFolderOnly || item.Parent.Name.Equals(Folder.Name, StringComparison.OrdinalIgnoreCase)))
                    {
                        DateTime sfield = item.TryGetPropertyValue("ReceivedTime", out sfield) ? sfield : item.LastModificationTime;
                        ordered.Add(sfield, item);
                    }
                    if (table.EndOfTable)
                    {
                        break;
                    }
                    row  = table.GetNextRow();
                    item = new OutlookItem(table.Session.GetItemFromID(row["EntryID"]));
                }
                var list = ordered.Values.ToList();
                if (latestFirst)
                {
                    list.Reverse();
                }
                dto.Items = list;
            }

            return(dto);
        }
コード例 #2
0
ファイル: MailNavigator.cs プロジェクト: varunkho/ReadOut
        private ConversationDTO GetRelatedItems(OutlookItem sourceItem, bool latestFirst, bool currentFolderOnly = true)
        {
            Conversation c = ((dynamic)sourceItem.InnerObject).GetConversation();
            ConversationDTO dto = new ConversationDTO() { Topic = sourceItem.ConversationTopic };
            var table = c.GetTable();
            if (table.GetRowCount() == 0)
            {
                dto.Items = new List<OutlookItem> { sourceItem };
                dto.FirstRootItem = sourceItem;
            }
            else
            {
                table.MoveToStart();
                var row = table.GetNextRow();
                var item = new OutlookItem(table.Session.GetItemFromID(row["EntryID"]));
                dto.FirstRootItem = item;
                SortedDictionary<DateTime, OutlookItem> ordered = new SortedDictionary<DateTime, OutlookItem>();
                while (true)
                {
                    if (!ordered.Values.Any(i => i.EntryID == item.EntryID) && (!currentFolderOnly || item.Parent.Name.Equals(Folder.Name, StringComparison.OrdinalIgnoreCase)))
                    {
                        DateTime sfield = item.TryGetPropertyValue("ReceivedTime", out sfield) ? sfield : item.LastModificationTime;
                        ordered.Add(sfield, item);
                    }
                    if (table.EndOfTable)
                        break;
                    row = table.GetNextRow();
                    item = new OutlookItem(table.Session.GetItemFromID(row["EntryID"]));
                }
                var list = ordered.Values.ToList();
                if (latestFirst)
                    list.Reverse();
                dto.Items = list;
            }

            return dto;
        }