Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_SortElementComponent.c
Go to the documentation of this file.
2{
5 NONE = 2 // This element does not perform sorting
6};
7
18
19class SCR_SortElementComponent : SCR_ModularButtonComponent
20{
21 protected bool m_bSortOrderAscending;
22
23 [Attribute("", UIWidgets.Auto, "Internal name, returned by GetName()")]
24 protected string m_sName;
25
26 [Attribute("false", UIWidgets.Auto, "Locks sorting direction only in the order set by m_bDefaultSortOrder.")]
27 protected bool m_bSortSingleOrder;
28
29 [Attribute("0", UIWidgets.ComboBox, "Default sort order when we first click on this element.", enums: ParamEnumArray.FromEnum(ESortOrder))]
31
32 // Tags for effects
33 const string TAG_ALL = "all";
34 const string TAG_SORT_ASC = "sort_asc";
35 const string TAG_SORT_DESC = "sort_desc";
36 const string TAG_SORT_NONE = "sort_none";
37
38
39 //---------------------------------------------------------------------------------------------------
40 // P U B L I C
41 //---------------------------------------------------------------------------------------------------
42
43
44 //---------------------------------------------------------------------------------------------------
46 {
47 if (order == ESortOrder.NONE)
48 {
49 SetToggled(false);
50 }
51 else
52 {
53 SetToggled(true);
54
55 // If this must be sorted only in one order
57 {
58 SelectNewSortOrder(reset: true); // To be sure...
59 }
60 else
61 {
62 if (order == ESortOrder.ASCENDING)
64 else
66 }
67 }
68
70 }
71
72 //---------------------------------------------------------------------------------------------------
74 {
75 if (!GetToggled())
76 return ESortOrder.NONE;
77 else
78 {
80 return ESortOrder.ASCENDING;
81 else
82 return ESortOrder.DESCENDING;
83 }
84 }
85
86 //---------------------------------------------------------------------------------------------------
91
92 //---------------------------------------------------------------------------------------------------
93 string GetName()
94 {
95 return m_sName;
96 }
97
98
99 //---------------------------------------------------------------------------------------------------
100 // P R O T E C T E D
101 //---------------------------------------------------------------------------------------------------
102
103 //---------------------------------------------------------------------------------------------------
104 protected override void HandlerAttached(Widget w)
105 {
106 super.HandlerAttached(w);
107
108 // Setting default sort order to NONE is illegal
111
112 // Override toggle-ability:
113 m_bCanBeToggled = true; // This can be toggled, when toggled it means that we are sorting by this column
114 m_bToggledOnlyThroughApi = true; // Toggled only through API, because when it's toggled on, we don't want to untoggle it.
115 SelectNewSortOrder(reset: true);
117 }
118
119 //---------------------------------------------------------------------------------------------------
120 protected override void Internal_SetToggled(bool newToggled, bool invokeOnToggled = true, bool instant = false)
121 {
122 super.Internal_SetToggled(newToggled, invokeOnToggled, instant);
124 }
125
126 //---------------------------------------------------------------------------------------------------
127 protected override bool OnClick(Widget w, int x, int y, int button)
128 {
129 bool oldToggled = m_bToggled;
130
131 if (!oldToggled)
132 Internal_SetToggled(true, true);
133
134 SelectNewSortOrder(reset: !oldToggled); // Reset sort order when switching from toggled off to toggled on state
136
137 bool returnValue = super.OnClick(w, x, y, button);
138
139 return returnValue;
140 }
141
142
143 //---------------------------------------------------------------------------------------------------
145 protected void SelectNewSortOrder(bool reset)
146 {
147 if (m_bSortSingleOrder || reset)
148 {
149 if (m_eDefaultSortOrder == ESortOrder.ASCENDING)
151 else
152 m_bSortOrderAscending = false;
153 }
154 else
155 {
157 }
158 }
159
160 //---------------------------------------------------------------------------------------------------
164 protected void UpdateSortEffects()
165 {
166 array<string> tags = {TAG_ALL};
167 if (GetToggled())
168 {
170 tags.Insert(TAG_SORT_ASC);
171 else
172 tags.Insert(TAG_SORT_DESC);
173 }
174 else
175 tags.Insert(TAG_SORT_NONE);
176
178 }
179
180
181};
ref array< string > tags
bool m_bToggledOnlyThroughApi
void SetEffectsWithAnyTagEnabled(notnull array< string > tags)
bool GetToggled()
void SetToggled(bool toggled, bool invokeOnToggled=true, bool instant=false)
bool m_bCanBeToggled
override void Internal_SetToggled(bool newToggled, bool invokeOnToggled=true, bool instant=false)
override bool OnClick(Widget w, int x, int y, int button)
void SelectNewSortOrder(bool reset)
Selects new sort order, either default or flips prev. sort order.
override void HandlerAttached(Widget w)
void SetSortOrder(ESortOrder order)
@ NONE
When Shape is created and not initialized yet.
Definition ShapeType.c:15
SCR_FieldOfViewSettings Attribute