OSDN Git Service

TabInformations.AddTabメソッドがTabClassを直接受け付けるように変更
authorKimura Youichi <kim.upsilon@bucyou.net>
Thu, 12 May 2016 12:50:24 +0000 (21:50 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 13 May 2016 20:02:06 +0000 (05:02 +0900)
OpenTween.Tests/TabInformationTest.cs
OpenTween/StatusDictionary.cs
OpenTween/Tween.cs

index d4a3d2b..bb707dc 100644 (file)
@@ -50,6 +50,28 @@ namespace OpenTween
         }
 
         [Fact]
+        public void AddTab_Test()
+        {
+            var list = new ListElement { };
+            var ret = this.tabinfo.AddTab("MyTab", MyCommon.TabUsageType.Lists, list);
+
+            Assert.True(ret);
+
+            var lastTab = this.tabinfo.Tabs.Values.Last();
+            Assert.Equal("MyTab", lastTab.TabName);
+            Assert.Equal(MyCommon.TabUsageType.Lists, lastTab.TabType);
+            Assert.Same(list, lastTab.ListInfo);
+        }
+
+        [Fact]
+        public void AddTab_DuplicateTest()
+        {
+            var ret = this.tabinfo.AddTab("Recent", MyCommon.TabUsageType.UserDefined, null);
+
+            Assert.False(ret);
+        }
+
+        [Fact]
         public void MakeTabName_Test()
         {
             var baseTabName = "NewTab";
@@ -167,13 +189,13 @@ namespace OpenTween
         {
             this.tabinfo.MuteUserIds = new HashSet<long> { };
 
-            this.tabinfo.AddTab("Mute", MyCommon.TabUsageType.Mute, null);
-            var muteTab = this.tabinfo.Tabs["Mute"];
+            var muteTab = new TabClass("Mute", MyCommon.TabUsageType.Mute);
             muteTab.AddFilter(new PostFilterRule
             {
                 FilterName = "foo",
                 MoveMatches = true,
             });
+            this.tabinfo.AddTab(muteTab);
 
             var post = new PostClass
             {
@@ -189,13 +211,13 @@ namespace OpenTween
         {
             this.tabinfo.MuteUserIds = new HashSet<long> { };
 
-            this.tabinfo.AddTab("Mute", MyCommon.TabUsageType.Mute, null);
-            var muteTab = this.tabinfo.Tabs["Mute"];
+            var muteTab = new TabClass("Mute", MyCommon.TabUsageType.Mute);
             muteTab.AddFilter(new PostFilterRule
             {
                 FilterName = "foo",
                 MoveMatches = true,
             });
+            this.tabinfo.AddTab(muteTab);
 
             // ミュートタブによるミュートはリプライも対象とする
             var post = new PostClass
@@ -211,11 +233,11 @@ namespace OpenTween
         [Fact]
         public void SetReadAllTab_MarkAsReadTest()
         {
-            this.tabinfo.AddTab("search1", MyCommon.TabUsageType.PublicSearch, null);
-            this.tabinfo.AddTab("search2", MyCommon.TabUsageType.PublicSearch, null);
+            var tab1 = new TabClass("search1", MyCommon.TabUsageType.PublicSearch);
+            var tab2 = new TabClass("search2", MyCommon.TabUsageType.PublicSearch);
 
-            var tab1 = this.tabinfo.Tabs["search1"];
-            var tab2 = this.tabinfo.Tabs["search2"];
+            this.tabinfo.AddTab(tab1);
+            this.tabinfo.AddTab(tab2);
 
             // search1 に追加するツイート (StatusId: 100, 150, 200; すべて未読)
             tab1.UnreadManage = true;
@@ -252,11 +274,11 @@ namespace OpenTween
         [Fact]
         public void SetReadAllTab_MarkAsUnreadTest()
         {
-            this.tabinfo.AddTab("search1", MyCommon.TabUsageType.PublicSearch, null);
-            this.tabinfo.AddTab("search2", MyCommon.TabUsageType.PublicSearch, null);
+            var tab1 = new TabClass("search1", MyCommon.TabUsageType.PublicSearch);
+            var tab2 = new TabClass("search2", MyCommon.TabUsageType.PublicSearch);
 
-            var tab1 = this.tabinfo.Tabs["search1"];
-            var tab2 = this.tabinfo.Tabs["search2"];
+            this.tabinfo.AddTab(tab1);
+            this.tabinfo.AddTab(tab2);
 
             // search1 に追加するツイート (StatusId: 100, 150, 200; すべて既読)
             tab1.UnreadManage = true;
@@ -469,8 +491,8 @@ namespace OpenTween
         {
             var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home);
 
-            this.tabinfo.AddTab("MyTab1", MyCommon.TabUsageType.UserDefined, null);
-            var myTab1 = this.tabinfo.Tabs["MyTab1"];
+            var myTab1 = new TabClass("MyTab1", MyCommon.TabUsageType.UserDefined);
+            this.tabinfo.AddTab(myTab1);
 
             var filter = new PostFilterRule
             {
@@ -515,8 +537,8 @@ namespace OpenTween
         {
             var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home);
 
-            this.tabinfo.AddTab("MyTab1", MyCommon.TabUsageType.UserDefined, null);
-            var myTab1 = this.tabinfo.Tabs["MyTab1"];
+            var myTab1 = new TabClass("MyTab1", MyCommon.TabUsageType.UserDefined);
+            this.tabinfo.AddTab(myTab1);
 
             var filter = new PostFilterRule
             {
@@ -564,8 +586,8 @@ namespace OpenTween
         {
             var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home);
 
-            this.tabinfo.AddTab("MyTab1", MyCommon.TabUsageType.UserDefined, null);
-            var myTab1 = this.tabinfo.Tabs["MyTab1"];
+            var myTab1 = new TabClass("MyTab1", MyCommon.TabUsageType.UserDefined);
+            this.tabinfo.AddTab(myTab1);
 
             var filter = new PostFilterRule
             {
@@ -609,10 +631,10 @@ namespace OpenTween
         {
             var homeTab = this.tabinfo.GetTabByType(MyCommon.TabUsageType.Home);
 
-            this.tabinfo.AddTab("MyTab1", MyCommon.TabUsageType.UserDefined, null);
-            this.tabinfo.AddTab("MyTab2", MyCommon.TabUsageType.UserDefined, null);
-            var myTab1 = this.tabinfo.Tabs["MyTab1"];
-            var myTab2 = this.tabinfo.Tabs["MyTab2"];
+            var myTab1 = new TabClass("MyTab1", MyCommon.TabUsageType.UserDefined);
+            var myTab2 = new TabClass("MyTab2", MyCommon.TabUsageType.UserDefined);
+            this.tabinfo.AddTab(myTab1);
+            this.tabinfo.AddTab(myTab2);
 
             var filter1 = new PostFilterRule
             {
index 8a20d7d..0d0e53e 100644 (file)
@@ -612,11 +612,16 @@ namespace OpenTween
         }
 
         public bool AddTab(string TabName, MyCommon.TabUsageType TabType, ListElement List)
+            => this.AddTab(new TabClass(TabName, TabType, List));
+
+        public bool AddTab(TabClass tab)
         {
-            if (_tabs.ContainsKey(TabName)) return false;
-            var tb = new TabClass(TabName, TabType, List);
-            _tabs.Add(TabName, tb);
-            tb.SetSortMode(this.SortMode, this.SortOrder);
+            if (this._tabs.ContainsKey(tab.TabName))
+                return false;
+
+            this._tabs.Add(tab.TabName, tab);
+            tab.SetSortMode(this.SortMode, this.SortOrder);
+
             return true;
         }
 
@@ -1535,6 +1540,10 @@ namespace OpenTween
             _listInfo = null;
         }
 
+        public TabClass(string name, MyCommon.TabUsageType type) : this(name, type, list: null)
+        {
+        }
+
         public TabClass(string TabName, MyCommon.TabUsageType TabType, ListElement list) : this()
         {
             this.TabName = TabName;
index 34b76d6..c742e7a 100644 (file)
@@ -4535,8 +4535,8 @@ namespace OpenTween
                 tabName += "_";
             }
             //タブ追加
-            _statuses.AddTab(tabName, MyCommon.TabUsageType.UserTimeline, null);
-            var tab = this._statuses.Tabs[tabName];
+            var tab = new TabClass(tabName, MyCommon.TabUsageType.UserTimeline);
+            this._statuses.AddTab(tab);
             tab.User = user;
             AddNewTab(tabName, false, MyCommon.TabUsageType.UserTimeline);
             //追加したタブをアクティブに
@@ -5803,8 +5803,9 @@ namespace OpenTween
                         MessageBox.Show(this, ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                     }
 
+                    var resultTab = new TabClass(tabName, MyCommon.TabUsageType.SearchResults);
                     this.AddNewTab(tabName, false, MyCommon.TabUsageType.SearchResults);
-                    this._statuses.AddTab(tabName, MyCommon.TabUsageType.SearchResults, null);
+                    this._statuses.AddTab(resultTab);
 
                     var targetTab = this._statuses.Tabs[this._curTab.Text];
 
@@ -5827,8 +5828,6 @@ namespace OpenTween
                     }
 
                     var foundPosts = foundIndices.Select(x => targetTab[x]);
-
-                    var resultTab = this._statuses.Tabs[tabName];
                     foreach (var post in foundPosts)
                     {
                         resultTab.AddPostToInnerStorage(post);
@@ -12732,12 +12731,12 @@ namespace OpenTween
             {
                 tabName = this._statuses.MakeTabName("Related Tweets");
 
-                this.AddNewTab(tabName, false, MyCommon.TabUsageType.Related);
-                this._statuses.AddTab(tabName, MyCommon.TabUsageType.Related, null);
-
-                tabRelated = this._statuses.GetTabByType(MyCommon.TabUsageType.Related);
+                tabRelated = new TabClass(tabName, MyCommon.TabUsageType.Related);
                 tabRelated.UnreadManage = false;
                 tabRelated.Notify = false;
+
+                this.AddNewTab(tabName, false, MyCommon.TabUsageType.Related);
+                this._statuses.AddTab(tabRelated);
             }
             else
             {