OSDN Git Service

ListViewItem.StateImageIndexを使わないようにして不必要な処理を省く
authorspx <spx268@gmail.com>
Mon, 30 Jun 2014 09:31:07 +0000 (18:31 +0900)
committerspx <spx268@gmail.com>
Mon, 30 Jun 2014 09:31:07 +0000 (18:31 +0900)
OpenTween/ImageListViewItem.cs
OpenTween/Tween.cs

index 89a485c..0dafff1 100644 (file)
@@ -36,6 +36,14 @@ namespace OpenTween
         protected readonly ImageCache imageCache;
         protected readonly string imageUrl;
 
+        /// <summary>
+        /// 状態表示に使用するアイコンのインデックスを取得・設定する。
+        /// </summary>
+        /// <remarks>
+        /// StateImageIndex は不必要な処理が挟まるため、使用しないようにする。
+        /// </remarks>
+        public int StateIndex { get; set; }
+
         private WeakReference imageReference = new WeakReference(null);
         private Task imageTask = null;
 
@@ -47,10 +55,11 @@ namespace OpenTween
         }
 
         public ImageListViewItem(string[] items, ImageCache imageCache, string imageUrl)
-            : base(items, imageUrl)
+            : base(items)
         {
             this.imageCache = imageCache;
             this.imageUrl = imageUrl;
+            this.StateIndex = -1;
 
             if (imageCache != null)
             {
index 7b6ba75..9fc2f63 100644 (file)
@@ -5203,7 +5203,7 @@ namespace OpenTween
                                   Post.Source};
                 itm = new ImageListViewItem(sitem, this.IconCache, Post.ImageUrl);
             }
-            itm.StateImageIndex = Post.StateIndex;
+            itm.StateIndex = Post.StateIndex;
 
             bool read = Post.IsRead;
             //未読管理していなかったら既読として扱う
@@ -5462,14 +5462,14 @@ namespace OpenTween
                 //iconRect.Offset(0, Math.Max(0, (itemRect.Height - realIconSize.Height) / 2));
             }
 
-            if (item.StateImageIndex > -1)
+            if (item.StateIndex > -1)
             {
                 Rectangle stateRect = Rectangle.Intersect(new Rectangle(new Point(iconRect.X + realIconSize.Width + 2, iconRect.Y), realStateSize), itemRect);
                 if (stateRect.Width > 0)
                 {
                     //e.Graphics.FillRectangle(Brushes.White, stateRect);
                     //e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.High;
-                    e.Graphics.DrawImage(this.PostStateImageList.Images[item.StateImageIndex], stateRect);
+                    e.Graphics.DrawImage(this.PostStateImageList.Images[item.StateIndex], stateRect);
                 }
             }
         }