📄 calendarmonthviewscript.luac.lua
字号:
PreCalendar = ActiveCalendar
ActiveCalendar = NextCalendar
NextCalendar = l_53_0
NextCalendar._visible = false
PreCalendar._visible = false
CalendarControl:ToNextMonth(CalendarControl.dMonth + 1)
CalendarControl:GetNextList(NextCalendar)
ResetAppInfo(NextCalendar)
CalendarControl:ToPreMonth(1)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
ConnectMonthEvent()
SetTodayMark(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
end
SwitchCalendarToPreComplete = function()
trace("SwitchCalendarToPreComplete")
if bCancelSwitchCalendar then
trace("Cancel SwitchCalendarToPreComplete")
return
end
local l_54_0 = NextCalendar
NextCalendar = ActiveCalendar
ActiveCalendar = PreCalendar
PreCalendar = l_54_0
NextCalendar._visible = false
PreCalendar._visible = false
CalendarControl:ToPreMonth(CalendarControl.dMonth + 1)
CalendarControl:GetNextList(PreCalendar)
ResetAppInfo(PreCalendar)
CalendarControl:ToNextMonth(1)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
ConnectMonthEvent()
SetTodayMark(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
end
ToNextNMonthComplete = function()
trace("ToNextNMonthComplete")
if bCancelSwitchCalendar then
trace("Cancel ToNextNMonthComplete")
return
end
local l_55_0 = PreCalendar
PreCalendar = ActiveCalendar
ActiveCalendar = NextCalendar
NextCalendar = l_55_0
NextCalendar._visible = false
PreCalendar._visible = false
CalendarControl:ToNextMonth(CalendarControl.dMonth + 1)
CalendarControl:GetNextList(NextCalendar)
ResetAppInfo(NextCalendar)
CalendarControl:ToPreMonth(2)
CalendarControl:GetNextList(PreCalendar)
ResetAppInfo(PreCalendar)
CalendarControl:ToNextMonth(1)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
local l_55_1 = calendar:GetToday()
CalendarControl:setSelectDay(l_55_1.Year, l_55_1.Month, l_55_1.Day)
ConnectMonthEvent()
SetTodayMark(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
end
ToPreNMonthComplete = function()
if bCancelSwitchCalendar then
trace("Cancel ToPreNMonthComplete")
return
end
local l_56_0 = NextCalendar
NextCalendar = ActiveCalendar
ActiveCalendar = PreCalendar
PreCalendar = l_56_0
NextCalendar._visible = false
PreCalendar._visible = false
CalendarControl:ToPreMonth(CalendarControl.dMonth + 1)
CalendarControl:GetNextList(PreCalendar)
ResetAppInfo(PreCalendar)
CalendarControl:ToNextMonth(2)
CalendarControl:GetNextList(NextCalendar)
ResetAppInfo(NextCalendar)
CalendarControl:ToPreMonth(1)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
local l_56_1 = calendar:GetToday()
CalendarControl:setSelectDay(l_56_1.Year, l_56_1.Month, l_56_1.Day)
ConnectMonthEvent()
SetTodayMark(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
end
onDayChange = function()
trace("~~~onDayChange")
if calendar:GetToday().Day ~= CalendarControl.Day then
SetTodayMark(ActiveCalendar.Tag.yearNum, ActiveCalendar.Tag.monthNum)
end
trace("~~~onDayChange end")
end
ResetDayText = function(l_58_0, l_58_1, l_58_2, l_58_3, l_58_4)
local l_58_5 = calendar:GetPosDay(l_58_1, l_58_2)
local l_58_6 = calendar:GetPosYear(l_58_1, l_58_2)
local l_58_7 = calendar:GetPosMonth(l_58_1, l_58_2)
local l_58_8 = l_58_3 == l_58_6 and l_58_4 == l_58_7
l_58_0.String = tostring(l_58_5)
if l_58_8 then
if l_58_2 == 0 or l_58_2 == 6 then
l_58_0.Opacity.value = 50
else
l_58_0.Opacity.value = 100
end
else
l_58_0.Opacity.value = 15
end
end
ResetAppInfo = function(l_59_0)
local l_59_1 = l_59_0.Tag
if l_59_1 == nil then
trace("tag is nil")
return
end
local l_59_2 = 0
local l_59_3 = 0
local l_59_4 = 0
local l_59_5 = 0
local l_59_6 = false
local l_59_7 = false
local l_59_8 = PoomAppointments_QueryAppointmentOnMonthWithoutRecurring(l_59_1.yearNum, l_59_1.monthNum)
for i1 = 0, 5 do
for i2 = 0, 6 do
l_59_2 = i1 * 7 + i2
l_59_3 = calendar:GetPosDay(i1, i2)
l_59_4 = calendar:GetPosYear(i1, i2)
l_59_5 = calendar:GetPosMonth(i1, i2)
l_59_7 = l_59_8:IsAppointmentOnDay(l_59_3)
l_59_6 = l_59_1.yearNum == l_59_4 and l_59_1.monthNum == l_59_5
if l_59_6 and l_59_7 then
l_59_1.sprite[l_59_2]:SetTextureRef("appointment")
l_59_1.sprite[l_59_2]._visible = true
end
end
end
StartLoadAppointment(l_59_0)
end
HandleOnMonthUpArrowPress = function()
trace("HandleOnMonthDownArrowPress")
DisconnectMonthEvent()
local l_60_0, l_60_1 = CalendarControl:GetPreMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
trace("preYear=" .. l_60_0 .. " preMonth=" .. l_60_1)
if PreCalendar.Tag == nil then
CalendarControl:ToPreMonth(1)
CalendarControl:GetNextList(PreCalendar)
ResetAppInfo(PreCalendar)
CalendarControl:ToNextMonth(1)
ShowPreMonth()
else
if PreCalendar.Tag.yearNum ~= l_60_0 or PreCalendar.Tag.monthNum ~= l_60_1 then
ShowPreNMonth(1)
else
ShowPreMonth()
end
end
end
HandleOnMonthDownArrowPress = function()
trace("HandleOnMonthUpArrowPress")
DisconnectMonthEvent()
local l_61_0, l_61_1 = CalendarControl:GetNextMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
trace("nextYear=" .. l_61_0 .. " nextMonth=" .. l_61_1)
if NextCalendar.Tag == nil then
CalendarControl:ToNextMonth(1)
CalendarControl:GetNextList(NextCalendar)
ResetAppInfo(NextCalendar)
CalendarControl:ToPreMonth(1)
ShowNextMonth()
else
if NextCalendar.Tag.yearNum ~= l_61_0 or NextCalendar.Tag.monthNum ~= l_61_1 then
ShowNextNMonth(1)
else
ShowNextMonth()
end
end
end
HandleCalendarMousePress = function(l_62_0, l_62_1)
trace("HandleCalendarMousePress")
if not CalendarControl.IsMousePressed then
CalendarControl.IsMousePressed = CalendarControl:setSelectionPos(l_62_0._xmouse, l_62_0._ymouse)
if CalendarControl.IsMousePressed then
trace("PrepareMonthSelector")
PrepareMonthSelector()
end
end
l_62_1.value = true
end
HandleCalendarMouseRelease = function(l_63_0, l_63_1)
trace("------HandleCalendarMouseRelease" .. tostring(CalendarControl.IsMousePressed))
if CalendarControl.IsMousePressed then
CalendarControl.IsMousePressed = false
HandleSwitchToDayView()
end
l_63_1.value = true
end
HandleCalendarMouseReleaseOutSide = function(l_64_0, l_64_1)
MonthSelector.Opacity.value = 0
CalendarControl.IsMousePressed = false
l_64_1.value = true
end
HandleMonthViewKeyDown = function(l_65_0, l_65_1, l_65_2)
trace("HandleMonthViewKeyDown")
if l_65_1.Code == KeyCode_SwipeUp then
CalendarControl.IsMousePressed = false
MonthSelector.Opacity.value = 0
HandleOnMonthDownArrowPress()
l_65_2.value = true
else
if l_65_1.Code == KeyCode_SwipeDown then
CalendarControl.IsMousePressed = false
MonthSelector.Opacity.value = 0
HandleOnMonthUpArrowPress()
l_65_2.value = true
end
end
end
HandleToTodayMonth = function()
if CalendarControl.animationObj ~= nil then
trace("lock softkey")
return
end
if CalendarControl.TotalDelta > 0 then
DisconnectMonthEvent()
ShowPreNMonth(CalendarControl.TotalDelta)
else
if CalendarControl.TotalDelta < 0 then
DisconnectMonthEvent()
ShowNextNMonth(-CalendarControl.TotalDelta)
end
end
end
HandleToToday = function()
if CalendarControl.animationObj ~= nil then
trace("lock softkey")
return
end
local l_67_0 = calendar:GetToday()
local l_67_1 = CalendarControl.selectedYear * 10000 + CalendarControl.selectedMonth * 100 + CalendarControl.selectedDay
local l_67_2 = l_67_0.Year * 10000 + l_67_0.Month * 100 + l_67_0.Day
if l_67_2 == l_67_1 then
return
end
if CalendarControl.TotalDelta > 0 then
CalendarControl:ToPreMonth(CalendarControl.TotalDelta)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
else
if CalendarControl.TotalDelta < 0 then
CalendarControl:ToNextMonth(-CalendarControl.TotalDelta)
CalendarControl.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
end
end
if l_67_1 < l_67_2 then
ShowNextDay()
elseif l_67_2 < l_67_1 then
ShowPreDay()
end
CalendarControl:setSelectDay(l_67_0.Year, l_67_0.Month, l_67_0.Day)
GetNewDay()
end
DisconnectMonthEvent = function()
trace("DisconnectMonthEvent")
CalendarHitArea.onPress:disconnect(HandleCalendarMousePress)
CalendarHitArea.onRelease:disconnect(HandleCalendarMouseRelease)
CalendarHitArea.onReleaseOutside:disconnect(HandleCalendarMouseReleaseOutSide)
RightArrowHitArea.onPress:disconnect(HandleOnMonthUpArrowPress)
LeftArrowHitArea.onPress:disconnect(HandleOnMonthDownArrowPress)
MonthView.onKeyDown:disconnect(HandleMonthViewKeyDown)
end
ConnectMonthEvent = function()
trace("ConnectMonthEvent")
CalendarHitArea.onPress:connect(HandleCalendarMousePress)
CalendarHitArea.onRelease:connect(HandleCalendarMouseRelease)
CalendarHitArea.onReleaseOutside:connect(HandleCalendarMouseReleaseOutSide)
MonthView.onKeyDown:connect(HandleMonthViewKeyDown)
RightArrowHitArea.onPress:connect(HandleOnMonthUpArrowPress)
LeftArrowHitArea.onPress:connect(HandleOnMonthDownArrowPress)
end
HandleAppointmentChange = function()
if currentMode == 2 then
RefreshDayView()
end
CalendarControl:ToPreMonth(1)
ResetAppInfo(PreCalendar)
CalendarControl:ToNextMonth(2)
ResetAppInfo(NextCalendar)
CalendarControl:ToPreMonth(1)
ResetAppInfo(ActiveCalendar)
end
onMachineStatus_AppointmentChanged = function()
trace("~~~onMachineStatus_AppointmentChanged")
if ActiveSyncObj == nil then
ActiveSyncObj = ActiveSyncDetect(machineStatus, HandleAppointmentChange)
end
if ActiveSyncObj:IsSyncing() then
trace("~~~onMachineStatus_AppointmentChanged start waiting")
ActiveSyncObj:StartWaiting()
else
HandleAppointmentChange()
end
trace("~~~onMachineStatus_AppointmentChanged end")
end
ShowMonthView = function()
trace("ShowMonthView")
_application:SetRightSoftkey(Softkey(Locale:GetString("IDS_CALENDAR_NEW"), HandleToNewAppointments))
_application:SetLeftSoftkey(Softkey(Locale:GetString("IDS_CALENDAR_TODAY"), HandleToTodayMonth))
CalendarControl:GetNextList(ActiveCalendar)
SetTodayMark(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
ActiveCalendar._visible = true
MonthView:Focus()
_application.TouchFlo.VerticalEnabled = true
trace("ShowMonthView end")
end
PrepareMonthSelector = function()
MonthSelector.Position.y = CalendarControl:GetDayPositionY(CalendarControl.row)
MonthSelector.Position.x = CalendarControl:GetDayPositionX(CalendarControl.col)
MonthSelector.Opacity.value = 100
MonthSelectorText.String = tostring(CalendarControl.selectedDay)
end
SetTodayMark = function(l_74_0, l_74_1)
local l_74_2 = calendar:GetToday()
if l_74_2.Year == l_74_0 and l_74_2.Month == l_74_1 then
local l_74_3 = calendar:GetWeek(l_74_2.Year, l_74_2.Month, l_74_2.Day) - 1
local l_74_4 = l_74_2.DayOfWeek
local l_74_5 = appointment:IsAppointmentOnDay(l_74_2.Year, l_74_2.Month, l_74_2.Day)
TodayBackground.Position.y = CalendarControl:GetDayPositionY(l_74_3)
TodayBackground.Position.x = CalendarControl:GetDayPositionX(l_74_4)
if l_74_5 then
Today_App._visible = true
else
Today_App._visible = false
end
TodayBackground.Opacity.value = 100
TodayText.String = tostring(l_74_2.Day)
else
TodayBackground.Opacity.value = 0
end
trace("SetTodayMark end")
end
trace("month view script end")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -