OpenTween.TweenMain.JumpUnreadMenuItem_Click C# (CSharp) Method

JumpUnreadMenuItem_Click() private method

private JumpUnreadMenuItem_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void JumpUnreadMenuItem_Click(object sender, EventArgs e)
        {
            int bgnIdx = ListTab.TabPages.IndexOf(_curTab);

            if (ImageSelector.Enabled)
                return;

            TabModel foundTab = null;
            int foundIndex = 0;

            DetailsListView lst = null;

            //現在タブから最終タブまで探索
            for (int i = bgnIdx; i < ListTab.TabPages.Count; i++)
            {
                var tabPage = this.ListTab.TabPages[i];
                var tab = this._statuses.Tabs[tabPage.Text];
                var unreadIndex = tab.NextUnreadIndex;

                if (unreadIndex != -1)
                {
                    ListTab.SelectedIndex = i;
                    foundTab = tab;
                    foundIndex = unreadIndex;
                    lst = (DetailsListView)tabPage.Tag;
                    break;
                }
            }

            //未読みつからず&現在タブが先頭ではなかったら、先頭タブから現在タブの手前まで探索
            if (foundTab == null && bgnIdx > 0)
            {
                for (int i = 0; i < bgnIdx; i++)
                {
                    var tabPage = this.ListTab.TabPages[i];
                    var tab = this._statuses.Tabs[tabPage.Text];
                    var unreadIndex = tab.NextUnreadIndex;

                    if (unreadIndex != -1)
                    {
                        ListTab.SelectedIndex = i;
                        foundTab = tab;
                        foundIndex = unreadIndex;
                        lst = (DetailsListView)tabPage.Tag;
                        break;
                    }
                }
            }

            if (foundTab == null)
            {
                //全部調べたが未読見つからず→先頭タブの最新発言へ
                ListTab.SelectedIndex = 0;
                var tabPage = this.ListTab.TabPages[0];
                var tab = this._statuses.Tabs[tabPage.Text];

                if (tab.AllCount == 0)
                    return;

                if (_statuses.SortOrder == SortOrder.Ascending)
                    foundIndex = tab.AllCount - 1;
                else
                    foundIndex = 0;

                lst = (DetailsListView)tabPage.Tag;
            }

            SelectListItem(lst, foundIndex);

            if (_statuses.SortMode == ComparerMode.Id)
            {
                if (_statuses.SortOrder == SortOrder.Ascending && lst.Items[foundIndex].Position.Y > lst.ClientSize.Height - _iconSz - 10 ||
                    _statuses.SortOrder == SortOrder.Descending && lst.Items[foundIndex].Position.Y < _iconSz + 10)
                {
                    MoveTop();
                }
                else
                {
                    lst.EnsureVisible(foundIndex);
                }
            }
            else
            {
                lst.EnsureVisible(foundIndex);
            }

            lst.Focus();
        }
TweenMain