OSDN Git Service

TweetThumbnailのコンテキストメニューを毎回生成せず、事前に生成したものを再利用する
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 1 Jun 2014 10:46:49 +0000 (19:46 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 7 Jun 2014 15:10:01 +0000 (00:10 +0900)
OpenTween/Properties/Resources.Designer.cs
OpenTween/Properties/Resources.en.resx
OpenTween/Properties/Resources.resx
OpenTween/TweetThumbnail.Designer.cs
OpenTween/TweetThumbnail.cs

index 017089f..8abd02e 100644 (file)
@@ -2292,15 +2292,6 @@ namespace OpenTween.Properties {
         }
         
         /// <summary>
-        ///   類似画像を検索 に類似しているローカライズされた文字列を検索します。
-        /// </summary>
-        internal static string SearchSimilarImageText {
-            get {
-                return ResourceManager.GetString("SearchSimilarImageText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
         ///   [ユーザ・・・{0}]   に類似しているローカライズされた文字列を検索します。
         /// </summary>
         internal static string SetFiltersText1 {
index a483ced..30ae8c3 100644 (file)
@@ -1069,9 +1069,6 @@ Do you want to upload the selected media file?</value>
   <data name="DeleteMenuText2" xml:space="preserve">
     <value>Undo Retweet (&amp;D)</value>
   </data>
-  <data name="SearchSimilarImageText" xml:space="preserve">
-    <value>Search similar images</value>
-  </data>
   <data name="ConfigDirectoryNotExist" xml:space="preserve">
     <value>The configuration directory ({0}) specified by the "/configDir" option does not exist or is not accessible.</value>
   </data>
index 27717bb..a7d5514 100644 (file)
   <data name="BrowserStartFailed" xml:space="preserve">
     <value>ブラウザの起動に失敗しました。エラーコード: {0}</value>
   </data>
-  <data name="SearchSimilarImageText" xml:space="preserve">
-    <value>類似画像を検索</value>
-  </data>
   <data name="ConfigDirectoryNotExist" xml:space="preserve">
     <value>"/configDir" で指定されたディレクトリ ({0}) は存在しないかアクセスできません。</value>
   </data>
index 390b4f7..f9cd24a 100644 (file)
             this.searchSimilarImageMenuItem});
             this.contextMenuStrip.Name = "contextMenuStrip";
             this.toolTip.SetToolTip(this.contextMenuStrip, resources.GetString("contextMenuStrip.ToolTip"));
+            this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
             // 
             // searchSimilarImageMenuItem
             // 
             resources.ApplyResources(this.searchSimilarImageMenuItem, "searchSimilarImageMenuItem");
             this.searchSimilarImageMenuItem.Name = "searchSimilarImageMenuItem";
+            this.searchSimilarImageMenuItem.Click += new System.EventHandler(this.searchSimilarImageMenuItem_Click);
             // 
             // TweetThumbnail
             // 
index 9439d76..85bc225 100644 (file)
@@ -83,7 +83,7 @@ namespace OpenTween
                     var picbox = this.pictureBox[i];
 
                     picbox.Tag = thumb;
-                    picbox.ContextMenu = CreateContextMenu(thumb);
+                    picbox.ContextMenuStrip = this.contextMenuStrip;
 
                     var loadTask = picbox.SetImageFromTask(() => thumb.LoadThumbnailImageAsync(cancelToken));
                     loadTasks.Add(loadTask);
@@ -107,38 +107,6 @@ namespace OpenTween
             await Task.WhenAll(loadTasks).ConfigureAwait(false);
         }
 
-        private ContextMenu CreateContextMenu(ThumbnailInfo thumb)
-        {
-            var contextMenu = new ContextMenu();
-            contextMenu.MenuItems.Add(CreateImageSearchMenuItem(thumb));
-            return contextMenu;
-        }
-
-        private MenuItem CreateImageSearchMenuItem(ThumbnailInfo thumb)
-        {
-            var item = new MenuItem();
-            item.Text = Properties.Resources.SearchSimilarImageText;
-            var search_targe_url = thumb.FullSizeImageUrl ?? thumb.ThumbnailUrl ?? null;
-
-            if (search_targe_url != null)
-            {
-                item.Click += (sender, e) =>
-                {
-                    string uri = GetImageSearchUri(search_targe_url);
-                    if (this.ThumbnailImageSearchClick != null)
-                    {
-                        this.ThumbnailImageSearchClick(this, new ThumbnailImageSearchEventArgs(uri));
-                    }
-                };
-            }
-            else
-            {
-                item.Enabled = false;
-            }
-
-            return item;
-        }
-
         private string GetImageSearchUri(string image_uri)
         {
             return @"https://www.google.com/searchbyimage?image_url=" + Uri.EscapeDataString(image_uri);
@@ -161,13 +129,10 @@ namespace OpenTween
                 foreach (var picbox in this.pictureBox)
                 {
                     var memoryImage = picbox.Image;
-                    var contextMenu = picbox.ContextMenu;
                     picbox.Dispose();
 
                     if (memoryImage != null)
                         memoryImage.Dispose();
-                    if (contextMenu != null)
-                        contextMenu.Dispose();
                 }
                 this.pictureBox.Clear();
 
@@ -240,6 +205,32 @@ namespace OpenTween
                 this.ThumbnailDoubleClick(this, new ThumbnailDoubleClickEventArgs(thumb));
             }
         }
+
+        private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
+        {
+            var picbox = (OTPictureBox)this.contextMenuStrip.SourceControl;
+            var thumb = (ThumbnailInfo)picbox.Tag;
+
+            var searchTargetUri = thumb.FullSizeImageUrl ?? thumb.ThumbnailUrl ?? null;
+            if (searchTargetUri != null)
+            {
+                this.searchSimilarImageMenuItem.Enabled = true;
+                this.searchSimilarImageMenuItem.Tag = searchTargetUri;
+            }
+            else
+            {
+                this.searchSimilarImageMenuItem.Enabled = false;
+            }
+        }
+
+        private void searchSimilarImageMenuItem_Click(object sender, EventArgs e)
+        {
+            var searchTargetUri = (string)this.searchSimilarImageMenuItem.Tag;
+            var searchUri = this.GetImageSearchUri(searchTargetUri);
+
+            if (this.ThumbnailImageSearchClick != null)
+                this.ThumbnailImageSearchClick(this, new ThumbnailImageSearchEventArgs(searchUri));
+        }
     }
 
     public class ThumbnailDoubleClickEventArgs : EventArgs