private async void FolderViewerForm_Load()

in Office365APIEditor/UI/FolderViewerForm.cs [34:163]


        private async void FolderViewerForm_Load(object sender, System.EventArgs e)
        {
            Icon = Properties.Resources.DefaultIcon;

            toolStripStatusLabel_Status.Text = "Loading all items...";

            string typeForWindowTitle = "";

            switch (targetFolder.Type)
            {
                case FolderContentType.Message:
                case FolderContentType.MsgFolderRoot:
                case FolderContentType.Drafts:
                    typeForWindowTitle = "Message items";
                    break;
                case FolderContentType.Contact:
                    typeForWindowTitle = "Contact items";
                    break;
                case FolderContentType.Calendar:
                    typeForWindowTitle = "Calendar items";
                    break;
                case FolderContentType.Task:
                    typeForWindowTitle = "To Do tasks";
                    break;
                default:
                    typeForWindowTitle = "items";
                    break;
            }

            Text = typeForWindowTitle + " in " + targetFolderDisplayName;

            viewerRequestHelper = new ViewerRequestHelper();

            switch (targetFolder.Type)
            {
                case FolderContentType.Message:
                    // Add columns.
                    PrepareMessageItemListColumns();

                    bool hasMessageItem = await viewerRequestHelper.HasActualMessageItemAsync(targetFolder.ID);
                    
                    if (hasMessageItem)
                    {
                        // Get items.
                        await LoadAllMessagesAsync();
                    }
                    else
                    {
                        // This folder seems to be a message folder but it does not contain message items.

                        var mailFolder = await viewerRequestHelper.GetMailFolderAsync(targetFolder.ID);
                        
                        if (mailFolder.TotalItemCount != 0 && MessageBox.Show("TotalItemCount of this folder is not 0 but getting items of this folder was failed.\r\nDo you want to retry getting items as Contact item?", "Office365APIEditor", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            // Retry as Contact item.

                            targetFolder.Type = FolderContentType.Contact;

                            Text = FolderContentType.Contact.ToString() + " items in " + targetFolderDisplayName;

                            // Reset DataGrid.
                            if (dataGridView_ItemList.InvokeRequired)
                            {
                                dataGridView_ItemList.Invoke(new MethodInvoker(delegate
                                {
                                    for (int i = dataGridView_ItemList.Columns.Count - 1; i >= 0; i--)
                                    {
                                        dataGridView_ItemList.Columns.RemoveAt(i);
                                    }
                                }));
                            }
                            else
                            {
                                for (int i = dataGridView_ItemList.Columns.Count - 1; i >= 0; i--)
                                {
                                    dataGridView_ItemList.Columns.RemoveAt(i);
                                }
                            }

                            // Add columns.
                            PrepareContactItemListColumns();

                            // Get items.
                            await LoadAllContactsAsync();
                        }
                    }

                    break;
                case FolderContentType.Contact:
                    // Add columns.
                    PrepareContactItemListColumns();

                    // Get items.
                    await LoadAllContactsAsync();

                    break;
                case FolderContentType.Calendar:
                    // Add columns.
                    PrepareCalendarItemListColumns();

                    // Get items.
                    await LoadAllEventsAsync();

                    break;
                case FolderContentType.MsgFolderRoot:
                case FolderContentType.Drafts:
                    // Add columns.
                    PrepareMessageItemListColumns();

                    // Get items.
                    await LoadAllMessagesAsync();

                    break;
                case FolderContentType.Task:
                    // Add Columns.
                    PrepareToDoTaskListColumns();

                    // Get items.
                    await LoadAllToDoTasksAsync();

                    break;
                case FolderContentType.DummyCalendarGroupRoot:
                case FolderContentType.DummyTaskGroupRoot:
                case FolderContentType.TaskGroup:
                default:
                    break;
            }

            toolStripStatusLabel_Status.Text = "Loaded all items.";
        }