// $Id$\r
//\r
\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
using System.Windows.Forms;\r
\r
namespace Radegast\r
base.OnNotifyMessage(m);\r
}\r
}\r
-\r
- }\r
-\r
- public class ListViewItemComparer : IComparer<object>\r
- {\r
- // Initialize the variables to default\r
- public int column = 0;\r
- public bool bAscending = true;\r
-\r
- // Using the Compare function of IComparer\r
- public int Compare(object x, object y)\r
- {\r
- // Cast the objects to ListViewItems\r
- ListViewItem lvi1 = (ListViewItem)x;\r
- ListViewItem lvi2 = (ListViewItem)y;\r
-\r
- // If the column is the string columns\r
- if (column != 2)\r
- {\r
- string lvi1String = lvi1.SubItems[column].ToString();\r
- string lvi2String = lvi2.SubItems[column].ToString();\r
-\r
- // Return the normal Compare\r
- if (bAscending)\r
- return String.Compare(lvi1String, lvi2String);\r
-\r
- // Return the negated Compare\r
- return -String.Compare(lvi1String, lvi2String);\r
- }\r
-\r
- // The column is the Age column\r
- int lvi1Int = ParseListItemString(lvi1.SubItems[column].ToString());\r
- int lvi2Int = ParseListItemString(lvi2.SubItems[column].ToString());\r
-\r
- // Return the normal compare.. if x < y then return -1\r
- if (bAscending)\r
- {\r
- if (lvi1Int < lvi2Int)\r
- return -1;\r
- else if (lvi1Int == lvi2Int)\r
- return 0;\r
-\r
- return 1;\r
- }\r
-\r
- // Return the opposites for descending\r
- if (lvi1Int > lvi2Int)\r
- return -1;\r
- else if (lvi1Int == lvi2Int)\r
- return 0;\r
-\r
- return 1;\r
- }\r
-\r
- private int ParseListItemString(string x)\r
- {\r
- //ListViewItems are returned like this: "ListViewSubItem: {19}"\r
- int counter = 0;\r
- for (int i = x.Length - 1; i >= 0; i--, counter++)\r
- {\r
- if (x[i] == '{')\r
- break;\r
- }\r
-\r
- return Int32.Parse(x.Substring(x.Length - counter, counter - 1));\r
- }\r
}\r
-\r
-\r
-\r
}\r