OSDN Git Service

TabClassをタブの種類別のクラスに分離
[opentween/open-tween.git] / OpenTween / FilterDialog.cs
index fa22958..636d7b8 100644 (file)
@@ -95,9 +95,12 @@ namespace OpenTween
         {
             if (ListTabs.Items.Count == 0) return;
 
-            var tab = _sts.Tabs[tabName];
-
             ListFilters.Items.Clear();
+
+            var tab = _sts.Tabs[tabName] as FilterTabModel;
+            if (tab == null)
+                return;
+
             ListFilters.Items.AddRange(tab.GetFilters());
 
             if (ListFilters.Items.Count > 0)
@@ -406,7 +409,7 @@ namespace OpenTween
             if (rslt == DialogResult.Cancel) return;
 
             var indices = ListFilters.SelectedIndices.Cast<int>().Reverse().ToArray();  // 後ろの要素から削除
-            var tab = _sts.Tabs[ListTabs.SelectedItem.ToString()];
+            var tab = (FilterTabModel)_sts.Tabs[ListTabs.SelectedItem.ToString()];
 
             using (ControlTransaction.Update(ListFilters))
             {
@@ -615,7 +618,7 @@ namespace OpenTween
                 return;
             }
 
-            var tab = this._sts.Tabs[(string)this.ListTabs.SelectedItem];
+            var tab = (FilterTabModel)this._sts.Tabs[(string)this.ListTabs.SelectedItem];
             int i = ListFilters.SelectedIndex;
 
             PostFilterRule ft;
@@ -1028,7 +1031,24 @@ namespace OpenTween
                         list = listAvail.SelectedList;
                     }
                 }
-                if (!_sts.AddTab(tabName, tabType, list) || !((TweenMain)this.Owner).AddNewTab(tabName, false, tabType, list))
+
+                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);
@@ -1216,7 +1236,7 @@ namespace OpenTween
             }
 
             var lastSelIdx = indices[0] + diff;
-            var tab = _sts.Tabs[ListTabs.Items[tabIdx].ToString()];
+            var tab = (FilterTabModel)_sts.Tabs[ListTabs.Items[tabIdx].ToString()];
 
             try
             {
@@ -1279,7 +1299,7 @@ namespace OpenTween
         {
             if (ListTabs.SelectedIndex > -1 && ListFilters.SelectedItem != null)
             {
-                TabClass[] selectedTabs;
+                TabModel[] selectedTabs;
                 using (TabsDialog dialog = new TabsDialog(_sts))
                 {
                     dialog.MultiSelect = true;
@@ -1295,9 +1315,10 @@ namespace OpenTween
 
                 foreach (int idx in ListFilters.SelectedIndices)
                 {
-                    filters.Add(_sts.Tabs[tabname].FilterArray[idx].Clone());
+                    var tab = (FilterTabModel)_sts.Tabs[tabname];
+                    filters.Add(tab.FilterArray[idx].Clone());
                 }
-                foreach (var tb in selectedTabs)
+                foreach (var tb in selectedTabs.Cast<FilterTabModel>())
                 {
                     if (tb.TabName == tabname) continue;
 
@@ -1315,7 +1336,7 @@ namespace OpenTween
         {
             if (ListTabs.SelectedIndex > -1 && ListFilters.SelectedItem != null)
             {
-                TabClass[] selectedTabs;
+                TabModel[] selectedTabs;
                 using (var dialog = new TabsDialog(_sts))
                 {
                     dialog.MultiSelect = true;
@@ -1330,10 +1351,11 @@ namespace OpenTween
 
                 foreach (int idx in ListFilters.SelectedIndices)
                 {
-                    filters.Add(_sts.Tabs[tabname].FilterArray[idx].Clone());
+                    var tab = (FilterTabModel)_sts.Tabs[tabname];
+                    filters.Add(tab.FilterArray[idx].Clone());
                 }
                 if (selectedTabs.Length == 1 && selectedTabs[0].TabName == tabname) return;
-                foreach (var tb in selectedTabs)
+                foreach (var tb in selectedTabs.Cast<FilterTabModel>())
                 {
                     if (tb.TabName == tabname) continue;
 
@@ -1347,7 +1369,8 @@ namespace OpenTween
                 {
                     if (ListFilters.GetSelected(idx))
                     {
-                        _sts.Tabs[ListTabs.SelectedItem.ToString()].RemoveFilter((PostFilterRule)ListFilters.Items[idx]);
+                        var tab = (FilterTabModel)_sts.Tabs[ListTabs.SelectedItem.ToString()];
+                        tab.RemoveFilter((PostFilterRule)ListFilters.Items[idx]);
                         ListFilters.Items.RemoveAt(idx);
                     }
                 }