vanilla-wow-addons – Rev 1
?pathlinks?
CalendarEditor_cMaxItems = 15;
gCalendarEditor_SelectedDate = -1;
gCalendarEditor_CompiledSchedule = nil;
function CalendarEditor_ShowCompiledSchedule(pDate, pCompiledSchedule)
-- Make sure the event editor and viewer is closed
CalendarEventEditor_DoneEditing();
CalendarEventViewer_DoneViewing();
--
gCalendarEditor_SelectedDate = pDate;
gCalendarEditor_CompiledSchedule = pCompiledSchedule;
-- Set the date being displayed
CalendarEditorFrameSubTitle:SetText(Calendar_GetLongDateString(pDate));
CalendarEditor_BuildCompiledScheduleList(pCompiledSchedule);
Calendar_SetButtonEnable(CalendarEditorNewEventButton, gCalendarEditor_SelectedDate >= gGroupCalendar_MinimumEventDate);
ShowUIPanel(CalendarEditorFrame);
end
function CalendarEditor_BuildCompiledScheduleList(pCompiledSchedule)
local vItemIndex = 1;
local vTotalNumItems = 0;
if pCompiledSchedule ~= nil then
-- Populate the schedule items
vTotalNumItems = table.getn(pCompiledSchedule);
for vEventIndex, vCompiledEvent in pCompiledSchedule do
local vEventItemName = "CalendarEditorEvent"..vItemIndex;
local vEventItemFrame = getglobal(vEventItemName);
local vEventItemTime = getglobal(vEventItemName.."Time");
local vEventItemTitle = getglobal(vEventItemName.."Title");
local vEventItemOwner = getglobal(vEventItemName.."Owner");
local vEventItemCircled = getglobal(vEventItemName.."Circled");
if vCompiledEvent.mEvent.mType == "Birth" then
vEventItemTime:SetText(GroupCalendar_cBirthdayEventName);
else
local vTime;
if gGroupCalendar_Settings.ShowEventsInLocalTime then
vTime = Calendar_GetLocalTimeFromServerTime(vCompiledEvent.mEvent.mTime);
else
vTime = vCompiledEvent.mEvent.mTime;
end
vEventItemTime:SetText(Calendar_GetShortTimeString(vTime));
end
vEventItemTitle:SetText(EventDatabase_GetEventDisplayName(vCompiledEvent.mEvent));
vEventItemOwner:SetText(vCompiledEvent.mOwner);
if EventDatabase_PlayerIsAttendingEvent(vCompiledEvent.mOwner, vCompiledEvent.mEvent) then
vEventItemCircled:Show();
else
vEventItemCircled:Hide();
end
vEventItemFrame:Show();
vItemIndex = vItemIndex + 1;
if vItemIndex > CalendarEditor_cMaxItems then
break;
end
end
end
FauxScrollFrame_Update(
CalendarEditorScrollFrame,
vTotalNumItems,
CalendarEditor_cMaxItems,
22,
nil, nil, nil,
nil,
220, 254);
for vIndex = vItemIndex, CalendarEditor_cMaxItems do
local vEventItemFrame = getglobal("CalendarEditorEvent"..vIndex);
vEventItemFrame:Hide();
end
end
function CalendarEditor_ScheduleChanged(pDate, pSchedule)
if pDate == gCalendarEditor_SelectedDate then
local vCompiledSchedule = EventDatabase_GetCompiledSchedule(pDate);
gCalendarEditor_CompiledSchedule = vCompiledSchedule;
CalendarEditor_BuildCompiledScheduleList(vCompiledSchedule);
end
end
function CalendarEditor_MajorDatabaseChange()
if not gCalendarEditor_SelectedDate == -1 then
return;
end
local vCompiledSchedule = EventDatabase_GetCompiledSchedule(gCalendarEditor_SelectedDate);
gCalendarEditor_CompiledSchedule = vCompiledSchedule;
CalendarEditor_BuildCompiledScheduleList(vCompiledSchedule);
end
function CalendarEditor_IsOpen()
return gCalendarEditor_SelectedDate ~= -1
and not gCalendarEventEditor_Active
and not gCalendarEventViewer_Active;
end
function CalendarEditor_Close()
HideUIPanel(CalendarEditorFrame);
end
function CalendarEditor_OnShow()
PlaySound("igCharacterInfoOpen");
end
function CalendarEditor_OnHide()
PlaySound("igCharacterInfoClose");
gCalendarEditor_SelectedDate = -1;
GroupCalendar_EditorClosed();
end
function CalendarEditor_NewEvent()
local vDatabase = EventDatabase_GetDatabase(gGroupCalendar_PlayerName, true);
local vEvent = EventDatabase_NewEvent(vDatabase, gCalendarEditor_SelectedDate);
CalendarEventEditor_EditEvent(vDatabase, vEvent, true);
end
function CalendarEditor_EditIndexedEvent(pIndex)
local vCompiledEvent = gCalendarEditor_CompiledSchedule[pIndex];
local vDatabase = EventDatabase_GetDatabase(vCompiledEvent.mOwner);
if vDatabase then
if vDatabase.IsPlayerOwned
and not EventDatabase_IsResetEventType(vCompiledEvent.mEvent.mType) then
CalendarEventEditor_EditEvent(vDatabase, vCompiledEvent.mEvent, false);
else
CalendarEventViewer_ViewEvent(vDatabase, vCompiledEvent.mEvent);
end
end
end