tangxu
2024-10-24 c7a67ab24f476b0f8593fc61362d3bb8b262aa3e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#region Imports
 
using DPumpHydr.WinFrmUI.RLT.Enum.Poison;
using System;
using System.Collections;
using System.Windows.Forms;
 
#endregion
 
namespace DPumpHydr.WinFrmUI.RLT.Util
{
    #region PoisonUtil
 
    #region PoisonDefaults
 
    internal static class PoisonDefaults
    {
        public const ColorStyle Style = ColorStyle.Blue;
        public const ThemeStyle Theme = ThemeStyle.Light;
 
        public static class PropertyCategory
        {
            public const string Appearance = "Poison Appearance";
            public const string Behaviour = "Poison Behaviour";
        }
    }
 
    #endregion
 
    #region HiddenTabClass
    public class HiddenTabs
    {
        public HiddenTabs(int id, string page)
        {
            Index = id;
            Tabpage = page;
        }
 
        public int Index { get; }
 
        public string Tabpage { get; }
    }
    #endregion HiddenTabClass
 
    #region ListViewColumnSorter
 
    //namespace System.Runtime.CompilerServices
    //{
    //    public class ExtensionAttribute : Attribute { }
    //}
 
    //public static class ControlExtensions
    //{
    //    public static void DoubleBuffering(this Control control, bool enable)
    //    {
    //        var method = typeof(Control).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic);
    //        method.Invoke(control, new object[] { ControlStyles.OptimizedDoubleBuffer, enable });
    //    }
    //}
 
    public class ListViewColumnSorter : IComparer
    {
        public int ColumnToSort;
 
        public SortOrder OrderOfSort;
 
        private readonly CaseInsensitiveComparer ObjectCompare;
 
        public SortModifiersType _SortModifier { set; get; } = SortModifiersType.SortByText;
 
        public ListViewColumnSorter()
        {
            // Initialize the column to '0'
            ColumnToSort = 0;
 
            // Initialize the CaseInsensitiveComparer object
            ObjectCompare = new CaseInsensitiveComparer();
        }
 
        public int Compare(object x, object y)
        {
            ListViewItem listviewX, listviewY;
 
            // Cast the objects to be compared to ListViewItem objects
            listviewX = (ListViewItem)x;
            listviewY = (ListViewItem)y;
 
 
            int compareResult;
            if (DateTime.TryParse(listviewX.SubItems[ColumnToSort].Text, out DateTime dateX) && DateTime.TryParse(listviewY.SubItems[ColumnToSort].Text, out DateTime dateY))
            {
                compareResult = ObjectCompare.Compare(dateX, dateY);
            }
            else
            {
                compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
            }
 
            // Calculate correct return value based on object comparison
            if (OrderOfSort == SortOrder.Ascending)
            {
                // Ascending sort is selected, return normal result of compare operation
                return compareResult;
            }
            else if (OrderOfSort == SortOrder.Descending)
            {
                // Descending sort is selected, return negative result of compare operation
                return -compareResult;
            }
            else
            {
                // Return '0' to indicate they are equal
                return 0;
            }
        }
 
        public int SortColumn
        {
            set => ColumnToSort = value;
            get => ColumnToSort;
        }
 
        public SortOrder Order
        {
            set => OrderOfSort = value;
            get => OrderOfSort;
        }
    }
 
    #endregion
 
    #endregion
}