private async Task OpenRelatedTab(PostClass post)
{
var tabRelated = this._statuses.GetTabByType<RelatedPostsTabModel>();
if (tabRelated != null)
{
this.RemoveSpecifiedTab(tabRelated.TabName, confirm: false);
}
var tabName = this._statuses.MakeTabName("Related Tweets");
tabRelated = new RelatedPostsTabModel(tabName, post);
tabRelated.UnreadManage = false;
tabRelated.Notify = false;
this._statuses.AddTab(tabRelated);
this.AddNewTab(tabRelated, startup: false);
TabPage tabPage;
for (int i = 0; i < this.ListTab.TabPages.Count; i++)
{
tabPage = this.ListTab.TabPages[i];
if (tabName == tabPage.Text)
{
this.ListTab.SelectedIndex = i;
break;
}
}
await this.GetRelatedTweetsAsync(tabRelated);
tabPage = this.ListTab.TabPages.Cast<TabPage>()
.FirstOrDefault(x => x.Text == tabRelated.TabName);
if (tabPage != null)
{
// TODO: 非同期更新中にタブが閉じられている場合を厳密に考慮したい
var listView = (DetailsListView)tabPage.Tag;
var targetPost = tabRelated.TargetPost;
var index = tabRelated.IndexOf(targetPost.RetweetedId ?? targetPost.StatusId);
if (index != -1 && index < listView.Items.Count)
{
listView.SelectedIndices.Add(index);
listView.Items[index].Focused = true;
}
}
}