OSDN Git Service

ツールチップで表示する任務詳細に獲得資材を加える
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / MainForm.cs
index a5c75ab..18fd894 100644 (file)
@@ -36,7 +36,8 @@ namespace KancolleSniffer
         private readonly Config _config = new Config();\r
         private readonly ConfigDialog _configDialog;\r
         private readonly ProxyManager _proxyManager;\r
-        private readonly ToolTip _toolTip = new ToolTip {ShowAlways = true};\r
+        private readonly ToolTip _toolTipQuest = new ToolTip {ShowAlways = true};\r
+        private readonly ToolTip _tooltipCopy = new ToolTip {AutomaticDelay = 0};\r
         private int _currentFleet;\r
         private bool _combinedFleet;\r
         private readonly Label[] _labelCheckFleets;\r
@@ -50,7 +51,6 @@ namespace KancolleSniffer
         private DateTime _prev, _now;\r
 \r
         private readonly ErrorDialog _errorDialog = new ErrorDialog();\r
-        private readonly KancolleDb _kancolleDb = new KancolleDb();\r
         private readonly ErrorLog _errorLog;\r
 \r
         public MainForm()\r
@@ -128,7 +128,7 @@ namespace KancolleSniffer
 \r
         private void HttpProxy_AfterSessionComplete(HttpProxy.Session session)\r
         {\r
-            Invoke(new Action<HttpProxy.Session>(ProcessRequest), session);\r
+            BeginInvoke(new Action<HttpProxy.Session>(ProcessRequest), session);\r
         }\r
 \r
         private void ProcessRequest(HttpProxy.Session session)\r
@@ -143,8 +143,6 @@ namespace KancolleSniffer
                 WriteDebugLog(url, request, response);\r
                 return;\r
             }\r
-            if (_config.KancolleDb.On)\r
-                _kancolleDb.Send(url, request, response);\r
             response = UnescapeString(response.Remove(0, "svdata=".Length));\r
             WriteDebugLog(url, request, response);\r
             ProcessRequestMain(url, request, response);\r
@@ -163,28 +161,34 @@ namespace KancolleSniffer
                 if (_errorDialog.ShowDialog(this,\r
                         "艦これに仕様変更があったか、受信内容が壊れています。",\r
                         _errorLog.GenerateErrorLog(url, request, response, e.ToString())) == DialogResult.Abort)\r
-                    Application.Exit();\r
+                    Exit();\r
             }\r
             catch (LogIOException e)\r
             {\r
                 // ReSharper disable once PossibleNullReferenceException\r
                 if (_errorDialog.ShowDialog(this, e.Message, e.InnerException.ToString()) == DialogResult.Abort)\r
-                    Application.Exit();\r
+                    Exit();\r
             }\r
             catch (BattleResultError)\r
             {\r
                 if (_errorDialog.ShowDialog(this, "戦闘結果の計算に誤りがあります。",\r
                         _errorLog.GenerateBattleErrorLog()) == DialogResult.Abort)\r
-                    Application.Exit();\r
+                    Exit();\r
             }\r
             catch (Exception e)\r
             {\r
                 if (_errorDialog.ShowDialog(this, "エラーが発生しました。",\r
                         _errorLog.GenerateErrorLog(url, request, response, e.ToString())) == DialogResult.Abort)\r
-                    Application.Exit();\r
+                    Exit();\r
             }\r
         }\r
 \r
+        private void Exit()\r
+        {\r
+            _proxyManager.Shutdown();\r
+            Environment.Exit(1);\r
+        }\r
+\r
         private void WriteDebugLog(string url, string request, string response)\r
         {\r
             if (_debugLogFile != null)\r
@@ -250,8 +254,6 @@ namespace KancolleSniffer
             ApplyDebugLogSetting();\r
             ApplyLogSetting();\r
             ApplyProxySetting();\r
-            if (_config.KancolleDb.On)\r
-                _kancolleDb.Start(_config.KancolleDb.Token);\r
             CheckVersionUp((current, latest) =>\r
             {\r
                 if (double.Parse(latest) <= double.Parse(current))\r
@@ -304,8 +306,8 @@ namespace KancolleSniffer
             _config.ShowHpInPercent = _shipLabels.ShowHpInPercent;\r
             _config.ShipList.Visible = _listForm.Visible && _listForm.WindowState == FormWindowState.Normal;\r
             _config.Save();\r
+            _sniffer.SaveState();\r
             _proxyManager.Shutdown();\r
-            _kancolleDb.Stop();\r
         }\r
 \r
         private void MainForm_Resize(object sender, EventArgs e)\r
@@ -354,7 +356,8 @@ namespace KancolleSniffer
             foreach (var control in new Control[]\r
             {\r
                 this, _listForm, labelLogin, linkLabelGuide,\r
-                _configDialog, contextMenuStripMain, _errorDialog\r
+                _configDialog, _configDialog.NotificationConfigDialog,\r
+                contextMenuStripMain, _errorDialog\r
             })\r
             {\r
                 control.Font = new Font(control.Font.FontFamily, control.Font.Size * _config.Zoom / 100);\r
@@ -383,8 +386,6 @@ namespace KancolleSniffer
             _sniffer.Achievement.ResetHours = _config.ResetHours;\r
             labelAkashiRepair.Visible = labelAkashiRepairTimer.Visible =\r
                 labelPresetAkashiTimer.Visible = _config.UsePresetAkashi;\r
-            if (_config.KancolleDb.On)\r
-                _kancolleDb.Start(_config.KancolleDb.Token);\r
         }\r
 \r
         public void ApplyDebugLogSetting()\r
@@ -939,23 +940,25 @@ namespace KancolleSniffer
                     category[i].BackColor = quests[i].Color;\r
                     name[i].Text = quests[i].Name;\r
                     progress[i].Text = $"{quests[i].Progress:D}%";\r
+                    _toolTipQuest.SetToolTip(name[i], quests[i].ToToolTip());\r
                     var c = quests[i].Count;\r
                     if (c.Id == 0)\r
                     {\r
                         count[i].Text = "";\r
                         count[i].ForeColor = Color.Black;\r
-                        _toolTip.SetToolTip(count[i], "");\r
+                        _toolTipQuest.SetToolTip(count[i], "");\r
                         continue;\r
                     }\r
                     count[i].Text = " " + c;\r
                     count[i].ForeColor = c.Cleared ? CUDColor.Green : Color.Black;\r
-                    _toolTip.SetToolTip(count[i], c.ToToolTip());\r
+                    _toolTipQuest.SetToolTip(count[i], c.ToToolTip());\r
                 }\r
                 else\r
                 {\r
                     category[i].BackColor = DefaultBackColor;\r
                     name[i].Text = count[i].Text = progress[i].Text = "";\r
-                    _toolTip.SetToolTip(count[i], "");\r
+                    _toolTipQuest.SetToolTip(name[i], "");\r
+                    _toolTipQuest.SetToolTip(count[i], "");\r
                 }\r
             }\r
         }\r
@@ -1155,6 +1158,29 @@ namespace KancolleSniffer
             UpdateQuestList();\r
         }\r
 \r
+        private void labelClearQuest_MouseDown(object sender, MouseEventArgs e)\r
+        {\r
+            labelClearQuest.BackColor = _activeButtonColor;\r
+        }\r
+\r
+        private void labelClearQuest_MouseUp(object sender, MouseEventArgs e)\r
+        {\r
+            labelClearQuest.BackColor = DefaultBackColor;\r
+        }\r
+\r
+        private void labelQuest_DoubleClick(object sender, EventArgs e)\r
+        {\r
+            var label = (Label)sender;\r
+            Clipboard.SetText(label.Text);\r
+            _tooltipCopy.Active = true;\r
+            _tooltipCopy.Show("コピーしました。", label);\r
+            Task.Run(async () =>\r
+            {\r
+                await Task.Delay(1000);\r
+                _tooltipCopy.Active = false;\r
+            });\r
+        }\r
+\r
         private void CaptureToolStripMenuItem_Click(object sender, EventArgs e)\r
         {\r
             try\r