OSDN Git Service

設定値の検証処理をTweenMainの外に移動
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 4 Apr 2022 00:06:05 +0000 (09:06 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 15 Apr 2022 20:04:01 +0000 (05:04 +0900)
OpenTween/ApplicationEvents.cs
OpenTween/Setting/SettingCommon.cs
OpenTween/Tween.cs

index 80cc1e1..b94e4ad 100644 (file)
@@ -60,10 +60,14 @@ namespace OpenTween
             if (!SetConfigDirectoryPath())
                 return 1;
 
-            SettingManager.Instance.LoadAll();
-
             using var container = new ApplicationContainer();
 
+            var settings = container.Settings;
+            settings.LoadAll();
+
+            var noLimit = StartupOptions.ContainsKey("nolimit");
+            settings.Common.Validate(noLimit);
+
             container.CultureService.Initialize();
 
             // 同じ設定ファイルを使用する OpenTween プロセスの二重起動を防止する
index de6ca3e..0716f32 100644 (file)
@@ -260,6 +260,67 @@ namespace OpenTween
 
         [XmlElement(ElementName = nameof(SkipUpdateVersion))]
         public string SkipUpdateVersionStr { get; set; } = "";
+
+        public void Validate(bool noLimit = false)
+        {
+            if (!noLimit)
+            {
+                if (this.TimelinePeriod < 15 && this.TimelinePeriod > 0)
+                    this.TimelinePeriod = 15;
+
+                if (this.ReplyPeriod < 15 && this.ReplyPeriod > 0)
+                    this.ReplyPeriod = 15;
+
+                if (this.DMPeriod < 15 && this.DMPeriod > 0)
+                    this.DMPeriod = 15;
+
+                if (this.PubSearchPeriod < 30 && this.PubSearchPeriod > 0)
+                    this.PubSearchPeriod = 30;
+
+                if (this.UserTimelinePeriod < 15 && this.UserTimelinePeriod > 0)
+                    this.UserTimelinePeriod = 15;
+
+                if (this.ListsPeriod < 15 && this.ListsPeriod > 0)
+                    this.ListsPeriod = 15;
+            }
+
+            if (!Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Timeline, this.CountApi))
+                this.CountApi = 60;
+
+            if (!Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Reply, this.CountApiReply))
+                this.CountApiReply = 40;
+
+            if (this.MoreCountApi != 0 && !Twitter.VerifyMoreApiResultCount(this.MoreCountApi))
+                this.MoreCountApi = 200;
+
+            if (this.FirstCountApi != 0 && !Twitter.VerifyFirstApiResultCount(this.FirstCountApi))
+                this.FirstCountApi = 100;
+
+            if (this.FavoritesCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Favorites, this.FavoritesCountApi))
+                this.FavoritesCountApi = 40;
+
+            if (this.ListCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.List, this.ListCountApi))
+                this.ListCountApi = 100;
+
+            if (this.SearchCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.PublicSearch, this.SearchCountApi))
+                this.SearchCountApi = 100;
+
+            if (this.UserTimelineCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.UserTimeline, this.UserTimelineCountApi))
+                this.UserTimelineCountApi = 20;
+
+            // 廃止サービスが選択されていた場合ux.nuへ読み替え
+            if (this.AutoShortUrlFirst < 0)
+                this.AutoShortUrlFirst = MyCommon.UrlConverter.Uxnu;
+
+            var selectedAccount = this.UserAccounts.Find(
+                x => string.Equals(x.Username, this.UserName, StringComparison.InvariantCultureIgnoreCase)
+            );
+            if (selectedAccount?.UserId == 0)
+                selectedAccount.UserId = this.UserId;
+
+            if (MyCommon.IsNullOrEmpty(this.Token))
+                this.UserName = "";
+        }
     }
 
     public class UserAccount
index bc391e2..269c638 100644 (file)
@@ -825,56 +825,10 @@ namespace OpenTween
                 this.Font = fontUIGlobal;
             }
 
-            // 不正値チェック
-            if (!ApplicationEvents.StartupOptions.ContainsKey("nolimit"))
-            {
-                if (this.settings.Common.TimelinePeriod < 15 && this.settings.Common.TimelinePeriod > 0)
-                    this.settings.Common.TimelinePeriod = 15;
-
-                if (this.settings.Common.ReplyPeriod < 15 && this.settings.Common.ReplyPeriod > 0)
-                    this.settings.Common.ReplyPeriod = 15;
-
-                if (this.settings.Common.DMPeriod < 15 && this.settings.Common.DMPeriod > 0)
-                    this.settings.Common.DMPeriod = 15;
-
-                if (this.settings.Common.PubSearchPeriod < 30 && this.settings.Common.PubSearchPeriod > 0)
-                    this.settings.Common.PubSearchPeriod = 30;
-
-                if (this.settings.Common.UserTimelinePeriod < 15 && this.settings.Common.UserTimelinePeriod > 0)
-                    this.settings.Common.UserTimelinePeriod = 15;
-
-                if (this.settings.Common.ListsPeriod < 15 && this.settings.Common.ListsPeriod > 0)
-                    this.settings.Common.ListsPeriod = 15;
-            }
-
-            if (!Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Timeline, this.settings.Common.CountApi))
-                this.settings.Common.CountApi = 60;
-            if (!Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Reply, this.settings.Common.CountApiReply))
-                this.settings.Common.CountApiReply = 40;
-
-            if (this.settings.Common.MoreCountApi != 0 && !Twitter.VerifyMoreApiResultCount(this.settings.Common.MoreCountApi))
-                this.settings.Common.MoreCountApi = 200;
-            if (this.settings.Common.FirstCountApi != 0 && !Twitter.VerifyFirstApiResultCount(this.settings.Common.FirstCountApi))
-                this.settings.Common.FirstCountApi = 100;
-
-            if (this.settings.Common.FavoritesCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.Favorites, this.settings.Common.FavoritesCountApi))
-                this.settings.Common.FavoritesCountApi = 40;
-            if (this.settings.Common.ListCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.List, this.settings.Common.ListCountApi))
-                this.settings.Common.ListCountApi = 100;
-            if (this.settings.Common.SearchCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.PublicSearch, this.settings.Common.SearchCountApi))
-                this.settings.Common.SearchCountApi = 100;
-            if (this.settings.Common.UserTimelineCountApi != 0 && !Twitter.VerifyApiResultCount(MyCommon.WORKERTYPE.UserTimeline, this.settings.Common.UserTimelineCountApi))
-                this.settings.Common.UserTimelineCountApi = 20;
-
-            // 廃止サービスが選択されていた場合ux.nuへ読み替え
-            if (this.settings.Common.AutoShortUrlFirst < 0)
-                this.settings.Common.AutoShortUrlFirst = MyCommon.UrlConverter.Uxnu;
-
             TwitterApiConnection.RestApiHost = this.settings.Common.TwitterApiHost;
             this.tw = new Twitter(this.twitterApi);
 
             // 認証関連
-            if (MyCommon.IsNullOrEmpty(this.settings.Common.Token)) this.settings.Common.UserName = "";
             this.tw.Initialize(this.settings.Common.Token, this.settings.Common.TokenSecret, this.settings.Common.UserName, this.settings.Common.UserId);
 
             this.initial = true;
@@ -1199,15 +1153,6 @@ namespace OpenTween
             this.TweenMain_Resize(this, EventArgs.Empty);
             if (saveRequired) this.SaveConfigsAll(false);
 
-            foreach (var ua in this.settings.Common.UserAccounts)
-            {
-                if (ua.UserId == 0 && ua.Username.Equals(this.tw.Username, StringComparison.InvariantCultureIgnoreCase))
-                {
-                    ua.UserId = this.tw.UserId;
-                    break;
-                }
-            }
-
             if (firstRun)
             {
                 // 初回起動時だけ右下のメニューを目立たせる