OSDN Git Service

AppliStation-GUI,インストール除外リストの設定を設定ダイアログに追加
[applistation/AppliStation.git] / AppliStation / AppliStation.Util / ListViewItemSortComparer.cs
1 using System;\r
2 using System.Drawing;\r
3 using System.Windows.Forms;\r
4 using NaGet.Packages;\r
5 using NaGet.Packages.Install;\r
6 using System.IO;\r
7 using System.Collections.Generic;\r
8 \r
9 namespace AppliStation.Util\r
10 {\r
11         /// <summary>\r
12         /// ListViewのソートをカプセル化するためのクラス\r
13         /// </summary>\r
14         class ListViewItemSortComparer : System.Collections.IComparer\r
15         {\r
16                 SortOrder order = SortOrder.Ascending;\r
17                 \r
18                 ColumnHeader column = null;\r
19                 \r
20                 /// <summary>\r
21                 /// コンストラクタ\r
22                 /// </summary>\r
23                 public ListViewItemSortComparer()\r
24                 {\r
25                 }\r
26                 \r
27                 /// <summary>\r
28                 /// ソートの方向。昇順か?降順か?\r
29                 /// </summary>\r
30                 public SortOrder Order {\r
31                         get { return order; }\r
32                         set { order = value; }\r
33                 }\r
34                 \r
35                 /// <summary>\r
36                 /// 選択しているコラムを取得・設定する。\r
37                 /// nullを設定するとソートが解除される。\r
38                 /// </summary>\r
39                 public ColumnHeader Column {\r
40                         get { return column; }\r
41                         set {\r
42                                 column = value;\r
43                                 \r
44                                 if (value == null || value.Index < 0) {\r
45                                         order = SortOrder.None;\r
46                                 }\r
47                         }\r
48                 }\r
49                 \r
50                 /// <summary>\r
51                 /// 選択しているコラムのインデックスを返す。選択されていないときは-1を返す。\r
52                 /// </summary>\r
53                 public int ColumnIndex {\r
54                         get {\r
55                                 return (column != null)? column.Index : -1;\r
56                         }\r
57                 }\r
58                 \r
59                 public int Compare(object x, object y)\r
60                 {\r
61                         int columnIndex = this.ColumnIndex;\r
62                         int result = 0;\r
63                         \r
64                         if (columnIndex >= 0 && order != SortOrder.None) {\r
65                                 ListViewItem itemx = (ListViewItem) x;\r
66                                 ListViewItem itemy = (ListViewItem) y;\r
67                                 \r
68                                 result = string.Compare(itemx.SubItems[columnIndex].Text,\r
69                                                         itemy.SubItems[columnIndex].Text);\r
70                                 \r
71                                 if (order == SortOrder.Descending) {\r
72                                         result = -result;\r
73                                 }\r
74                         }\r
75                         \r
76                         return result;\r
77                 }\r
78         }\r
79 }\r