private async void ButtonAddTab_Click(object sender, EventArgs e)
{
string tabName = null;
MyCommon.TabUsageType tabType;
using (InputTabName inputName = new InputTabName())
{
inputName.TabName = _sts.MakeTabName("MyTab");
inputName.IsShowUsage = true;
inputName.ShowDialog();
if (inputName.DialogResult == DialogResult.Cancel) return;
tabName = inputName.TabName;
tabType = inputName.Usage;
}
if (!string.IsNullOrEmpty(tabName))
{
//List対応
ListElement list = null;
if (tabType == MyCommon.TabUsageType.Lists)
{
try
{
using (var dialog = new WaitingDialog(Properties.Resources.ListsGetting))
{
var cancellationToken = dialog.EnableCancellation();
var task = ((TweenMain)this.Owner).TwitterInstance.GetListsApi();
await dialog.WaitForAsync(this, task);
cancellationToken.ThrowIfCancellationRequested();
}
}
catch (OperationCanceledException) { return; }
catch (WebApiException ex)
{
MessageBox.Show("Failed to get lists. (" + ex.Message + ")");
}
using (ListAvailable listAvail = new ListAvailable())
{
if (listAvail.ShowDialog(this) == DialogResult.Cancel) return;
if (listAvail.SelectedList == null) return;
list = listAvail.SelectedList;
}
}
TabModel tab;
switch (tabType)
{
case MyCommon.TabUsageType.UserDefined:
tab = new FilterTabModel(tabName);
break;
case MyCommon.TabUsageType.PublicSearch:
tab = new PublicSearchTabModel(tabName);
break;
case MyCommon.TabUsageType.Lists:
tab = new ListTimelineTabModel(tabName, list);
break;
default:
return;
}
if (!_sts.AddTab(tab) || !((TweenMain)this.Owner).AddNewTab(tab, startup: false))
{
string tmp = string.Format(Properties.Resources.AddTabMenuItem_ClickText1, tabName);
MessageBox.Show(tmp, Properties.Resources.AddTabMenuItem_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
else
{
// タブ作成成功
// 末尾のタブを取得する
var lastIdx = this.ListTabs.Items.Count - 1;
var lastTab = lastIdx != -1
? this._sts.Tabs[(string)this.ListTabs.Items[lastIdx]]
: null;
// 末尾がミュートタブであればその手前に追加する
if (lastTab != null && lastTab.TabType == MyCommon.TabUsageType.Mute)
this.ListTabs.Items.Insert(lastIdx, tabName);
else
this.ListTabs.Items.Add(tabName);
}
}
}