vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 function CalendarClassLimits_Open(pLimits, pTitle, pShowPriority, pSaveFunction)
2 CalendarClassLimitsFrame.mSaveFunction = pSaveFunction;
3 CalendarClassLimitsFrameTitle:SetText(pTitle);
4  
5 CalendarClassLimits_UpdateFields(pLimits);
6  
7 if pShowPriority then
8 CalendarClassLimitsFramePriority:Show();
9 else
10 CalendarClassLimitsFramePriority:Hide();
11 end
12  
13 CalendarClassLimitsFrame:Show();
14 end
15  
16 function CalendarClassLimits_Done()
17 if CalendarClassLimitsFrame.mSaveFunction then
18 CalendarClassLimitsFrame.mSaveFunction(CalendarClassLimits_GetLimits());
19 end
20  
21 CalendarClassLimitsFrame:Hide();
22 end
23  
24 function CalendarClassLimits_Cancel()
25 CalendarClassLimitsFrame:Hide();
26 end
27  
28 function CalendarClassLimits_UpdateFields(pLimits)
29 for vClassCode, vClassInfo in gGroupCalendar_ClassInfoByClassCode do
30 local vClassFieldName = "CalendarClassLimitsFrame"..vClassInfo.element;
31 local vClassMin = getglobal(vClassFieldName.."Min");
32 local vClassMax = getglobal(vClassFieldName.."Max");
33 local vClassLimit = nil;
34  
35 if pLimits
36 and pLimits.mClassLimits then
37 vClassLimit = pLimits.mClassLimits[vClassCode];
38 end
39  
40 if vClassLimit then
41 if vClassLimit.mMin then
42 vClassMin:SetText(vClassLimit.mMin);
43 else
44 vClassMin:SetText("");
45 end
46  
47 if vClassLimit.mMax then
48 vClassMax:SetText(vClassLimit.mMax);
49 else
50 vClassMax:SetText("");
51 end
52 else
53 vClassMin:SetText("");
54 vClassMax:SetText("");
55 end
56 end
57  
58 if pLimits
59 and pLimits.mMaxAttendance then
60 CalendarDropDown_SetSelectedValue(CalendarClassLimitsFrameMaxPartySize, pLimits.mMaxAttendance);
61 else
62 CalendarDropDown_SetSelectedValue(CalendarClassLimitsFrameMaxPartySize, 0);
63 end
64  
65 if pLimits
66 and pLimits.mPriorityOrder then
67 CalendarDropDown_SetSelectedValue(CalendarClassLimitsFramePriorityValue, pLimits.mPriorityOrder);
68 else
69 CalendarDropDown_SetSelectedValue(CalendarClassLimitsFramePriorityValue, "Date");
70 end
71 end
72  
73 function CalendarClassLimits_GetLimits()
74 local vLimits = {};
75  
76 for vClassCode, vClassInfo in gGroupCalendar_ClassInfoByClassCode do
77 local vClassFieldName = "CalendarClassLimitsFrame"..vClassInfo.element;
78 local vClassMin = tonumber(getglobal(vClassFieldName.."Min"):GetText());
79 local vClassMax = tonumber(getglobal(vClassFieldName.."Max"):GetText());
80  
81 if vClassMin or vClassMax then
82 if not vLimits.mClassLimits then
83 vLimits.mClassLimits = {};
84 end
85  
86 vLimits.mClassLimits[vClassCode] = {mMin = vClassMin, mMax = vClassMax};
87 end
88 end
89  
90 vLimits.mMaxAttendance = UIDropDownMenu_GetSelectedValue(CalendarClassLimitsFrameMaxPartySize);
91  
92 if vLimits.mMaxAttendance == 0 then
93 vLimits.mMaxAttendance = nil;
94 end
95  
96 vLimits.mPriorityOrder = UIDropDownMenu_GetSelectedValue(CalendarClassLimitsFramePriorityValue);
97  
98 if vLimits.mPriorityOrder == "Date" then
99 vLimits.mPriorityOrder = nil;
100 end
101  
102 -- See if the mLimits field should just be removed altogether
103  
104 if Calendar_ArrayIsEmpty(vLimits) then
105 vLimits = nil;
106 end
107  
108 -- Done
109  
110 return vLimits;
111 end
112  
113 function CalendarClassLimits_ClassLimitsChanged(pOldLimits, pNewLimits)
114 -- If there are no new limits then just see if there were old ones
115  
116 if not pNewLimits then
117 return pOldLimits ~= nil;
118 end
119  
120 -- If there were no limits previous then just notify that there are now
121  
122 if not pOldLimits then
123 return true;
124 end
125  
126 -- See if anything is different between the two
127  
128 if pNewLimits.mMaxAttendance ~= pOldLimits.mMaxAttendance then
129 return true;
130 end
131  
132 -- No differences if neither had class limits
133  
134 if not pNewLimits.mClassLimits
135 and not pOldLimits.mClassLimits then
136 return false;
137 end
138  
139 -- New class limits if one has them when the other didn't
140  
141 if (pNewLimits.mClassLimits == nil)
142 ~= (pOldLimits.mClassLimits == nil) then
143 return true;
144 end
145  
146 -- Compare the limits
147  
148 for vClassCode, vClassInfo in gGroupCalendar_ClassInfoByClassCode do
149 local vNewClassLimits = pNewLimits.mClassLimits[vClassCode];
150 local vOldClassLimits = pOldLimits.mClassLimits[vClassCode];
151  
152 if (vNewClassLimits == nil)
153 ~= (vOldClassLimits == nil) then
154 return true;
155 end
156  
157 if vNewClassLimits then
158 if vNewClassLimits.mMin ~= vOldClassLimits.mMin
159 or vNewClassLimits.mMax ~= vOldClassLimits.mMax then
160 return true;
161 end
162 end
163 end
164  
165 -- Done
166  
167 return false;
168 end
169  
170 function CalendarClassLimits_OnShow(pAutoConfirmFrame)
171 local vFrameName = this:GetName();
172 local vPaladinsFrame = getglobal(vFrameName.."Paladin");
173 local vShamansFrame = getglobal(vFrameName.."Shaman");
174  
175 if gGroupCalendar_PlayerFactionGroup == "Alliance" then
176 vPaladinsFrame:Show();
177 vShamansFrame:Hide();
178 else
179 vPaladinsFrame:Hide();
180 vShamansFrame:Show();
181 end
182  
183 CalendarClassLimits_MinTotalChanged(pAutoConfirmFrame);
184 end
185  
186 function CalendarClassLimits_MinTotalChanged(pAutoConfirmFrame)
187 local vMinTotal = nil;
188  
189 local vChanged = false;
190  
191 for vClassCode, vClassInfo in gGroupCalendar_ClassInfoByClassCode do
192 local vClassFieldName = "CalendarClassLimitsFrame"..vClassInfo.element;
193 local vClassMin = tonumber(getglobal(vClassFieldName.."Min"):GetText());
194  
195 if vClassMin then
196 if not vMinTotal then
197 vMinTotal = vClassMin;
198 else
199 vMinTotal = vMinTotal + vClassMin;
200 end
201 end
202 end
203  
204 local vMinTotalField = getglobal(pAutoConfirmFrame:GetName().."MaxPartySizeMin");
205  
206 if vMinTotal then
207 vMinTotalField:SetText(vMinTotal);
208 else
209 vMinTotalField:SetText(GroupCalendar_cNoMinimum);
210 end
211  
212 return vChanged;
213 end
214