calendarpickerscript.luac.lua

来自「htc manila 2 sourcecode」· LUA 代码 · 共 651 行 · 第 1/2 页

LUA
651
字号
-- Decompiled using luadec 0.6 by sztupy (http://winmo.sztupy.hu)
-- Command line was: -l ;;;0,0,4;0,15;;;0,5;0,0,0,15,20,25;0,7,12;0,0,0,27,32;;;;;;;;;;;;;;;;;0,0,5;;;9;4;4;0,0,0,0,1,2,3,4;3,12,14,21,22;0,0,0,3;;;;;;;0,1,5,6;0,4,5,31,33,35,36;0,0,16,17,51,61,62,63,64,67;;;;;;;; 5ab037c7_manila.luac 

trace("Calendar picker")
require("appointment_svc")
require("machine_status_svc")
require("transitions")
require("class")
machineStatus = nil
calendar = nil
CalendarObject = class()
CalendarObject.__init = function(l_1_0, l_1_1, l_1_2, l_1_3)
   l_1_0.Height = 42
   l_1_0.Width = 62
   l_1_0.textArea = 22
   l_1_0.MouseY = 183
   l_1_0.BoundMinX = 23
   l_1_0.BoundMaxX = 457
   l_1_0.BoundMinY = 183
   l_1_0.BoundMaxY = 435
   l_1_0.weekOfMonth = 6
   l_1_0.CalendarX = -240
   l_1_0.PreMonthX = l_1_0.CalendarX - 480
   l_1_0.NextMonthX = l_1_0.CalendarX + 480
   l_1_0.weekNamePosY = -81
   l_1_0.weekNamePosX = 23
   l_1_0.selectedYear = l_1_1
   l_1_0.selectedMonth = l_1_2
   l_1_0.selectedDay = l_1_3
   l_1_0.row = calendar:GetWeek(l_1_1, l_1_2, l_1_3)
   l_1_0.col = calendar:GetDayOfWeek(l_1_1, l_1_2, l_1_3)
   l_1_0.Year = 0
   l_1_0.Month = 0
   l_1_0.Day = 0
end

CalendarObject.Reset = function(l_2_0, l_2_1, l_2_2)
   l_2_0.BoundMinX = l_2_1
   l_2_0.BoundMaxX = l_2_1 + 7 * l_2_0.Width
   l_2_0.BoundMinY = l_2_2
   l_2_0.BoundMaxY = l_2_0.BoundMinY + l_2_0.weekOfMonth * l_2_0.Height
end

CalendarObject.GetPosY = function(l_3_0, l_3_1)
   local l_3_2 = (6 - l_3_1) * l_3_0.Height / 2
   return -l_3_0.MouseY - l_3_2 + 60
end

CalendarObject.ResetBound = function(l_4_0)
   l_4_0.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
   local l_4_1 = (6 - l_4_0.weekOfMonth) * l_4_0.Height / 2
   l_4_0.BoundMinY = l_4_0.MouseY + l_4_1
   l_4_0.BoundMaxY = l_4_0.BoundMinY + l_4_0.weekOfMonth * l_4_0.Height
end

CalendarObject.SetInitSelection = function(l_5_0)
   l_5_0.selectedYear = calendar:GetCurrentYear()
   l_5_0.selectedMonth = calendar:GetCurrentMonth()
   l_5_0.selectedDay = l_5_0:GetValidDay()
   trace("self.selectedYear=" .. l_5_0.selectedYear .. "self.selectedMonth=" .. l_5_0.selectedMonth .. "self.selectedDay=" .. l_5_0.selectedDay)
   l_5_0.row = calendar:GetWeek(l_5_0.selectedYear, l_5_0.selectedMonth, l_5_0.selectedDay) - 1
   l_5_0.col = calendar:GetDayOfWeek(l_5_0.selectedYear, l_5_0.selectedMonth, l_5_0.selectedDay)
end

CalendarObject.SetSelection = function(l_6_0)
   DayItem = ActiveCalendar.Tag[l_6_0.row * 7 + l_6_0.col]
   DayItem:SetTextureRef("green_rectangle")
end

CalendarObject.GetValidDay = function(l_7_0)
   local l_7_1 = calendar:GetDaysInMonth(l_7_0.selectedYear, l_7_0.selectedMonth)
   trace("dayCount=" .. l_7_1)
   if l_7_1 < l_7_0.selectedDay then
      l_7_0.selectedDay = l_7_1
   end
   return l_7_0.selectedDay
end

CalendarObject.setSelection = function(l_8_0, l_8_1, l_8_2)
   if l_8_1 < 0 or l_8_0.weekOfMonth <= l_8_1 or l_8_2 < 0 or l_8_2 > 6 then
      return 
   end
   local l_8_3 = calendar:GetPosYear(l_8_1, l_8_2)
   local l_8_4 = calendar:GetPosMonth(l_8_1, l_8_2)
   local l_8_5 = calendar:GetPosDay(l_8_1, l_8_2)
   trace("col=" .. l_8_2 .. " day=" .. l_8_5)
   if l_8_3 ~= calendar:GetCurrentYear() or l_8_4 ~= calendar:GetCurrentMonth() then
      trace("invaild day")
      return 
   end
   l_8_0:UnSelection()
   l_8_0.row = l_8_1
   l_8_0.col = l_8_2
   l_8_0.selectedYear = l_8_3
   l_8_0.selectedMonth = l_8_4
   l_8_0.selectedDay = l_8_5
   DayItem = ActiveCalendar.Tag[l_8_0.row * 7 + l_8_0.col]
   DayItem:SetTextureRef("green_rectangle")
end

CalendarObject.UnSelection = function(l_9_0)
   local l_9_1 = ActiveCalendar.Tag[l_9_0.row * 7 + l_9_0.col]
   local l_9_2 = IsToday(l_9_0.selectedYear, l_9_0.selectedMonth, l_9_0.selectedDay)
   SetTextureToDay(l_9_1, l_9_2, true, false)
end

CalendarObject.setSelectionPos = function(l_10_0, l_10_1, l_10_2)
   trace("++++setSelectionPos=" .. l_10_2)
   if l_10_1 < l_10_0.BoundMinX or l_10_0.BoundMaxX < l_10_1 or l_10_2 < l_10_0.BoundMinY or l_10_0.BoundMaxY < l_10_2 then
      trace("out of bound")
      return false
   end
   local l_10_3 = getFloor(l_10_1 - l_10_0.BoundMinX, l_10_0.Width)
   local l_10_4 = getFloor(l_10_2 - l_10_0.BoundMinY, l_10_0.Height)
   l_10_0:setSelection(l_10_4, l_10_3)
   return true
end

CalendarObject.SetToday = function(l_11_0, l_11_1)
   l_11_0.Year = l_11_1.Year
   l_11_0.Month = l_11_1.Month
   l_11_0.Day = l_11_1.Day
   l_11_0.weekOfMonth = calendar:GetWeeksInMonth(l_11_1.Year, l_11_1.Month)
end

CalendarObject.IsSelected = function(l_12_0, l_12_1, l_12_2, l_12_3)
   if l_12_0.SelectedYear == l_12_1 and l_12_0.SelectedMonth == l_12_2 and l_12_0.SelectedDay == l_12_3 then
     return true
   end
   return false
end

CalendarObject.GetNextMonth = function(l_13_0, l_13_1, l_13_2)
   if l_13_2 == 12 then
      l_13_1 = l_13_1 + 1
      l_13_2 = 1
   else
      l_13_2 = l_13_2 + 1
   end
   return l_13_1, l_13_2
end

CalendarObject.GetPreMonth = function(l_14_0, l_14_1, l_14_2)
   if l_14_2 == 1 then
      l_14_1 = l_14_1 - 1
      l_14_2 = 12
   else
      l_14_2 = l_14_2 - 1
   end
   return l_14_1, l_14_2
end

StartAnimation = function(l_15_0, l_15_1, l_15_2)
   l_15_0.Position:Interpolate(Vector3(l_15_0.Position.x, l_15_0.Position.y, 0), Vector3(l_15_1, l_15_0.Position.y, 0), 10, 0, Interpolate_Linear, l_15_2)
end

HandleCalendarMousePress = function(l_16_0, l_16_1)
   trace("HandleCalendarMousePress")
   CalendarControl:setSelectionPos(l_16_0._xmouse, l_16_0._ymouse)
   l_16_1.value = true
end

HandleCalendarReleaseOutside = function(l_17_0, l_17_1)
   trace("HandleCalendarMouseReleaseOutside")
   CalendarControl:UnSelection()
   l_17_1.value = true
end

HandleCalendarKeyDown = function(l_18_0, l_18_1, l_18_2)
   trace("++++ HandleCalendarKeyDown")
   if l_18_1.Code == KeyCode_SwipeLeft then
      ShowNextMonth()
      l_18_2.value = true
   else
      if l_18_1.Code == KeyCode_SwipeRight then
         ShowPreMonth()
         l_18_2.value = true
      else
         l_18_2.value = false
      end
   end
end

ShowNextMonth = function()
   DisconnectCalendarEvent()
   NextCalendar._visible = true
   PreCalendar._visible = true
   MonthAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear)
   StartAnimation(ActiveCalendar, CalendarControl.PreMonthX)
   StartAnimation(NextCalendar, CalendarControl.CalendarX, SwitchCalendarToNextComplete)
end

ShowPreMonth = function()
   DisconnectCalendarEvent()
   NextCalendar._visible = true
   PreCalendar._visible = true
   MonthSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear)
   StartAnimation(ActiveCalendar, CalendarControl.NextMonthX)
   StartAnimation(PreCalendar, CalendarControl.CalendarX, SwitchCalendarToPreComplete)
end

HandleOnMonthAddPress = function(l_21_0, l_21_1)
   DisconnectCalendarEvent()
   MonthAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
   nextMonth(1)
   l_21_1.value = true
end

HandleOnMonthSubPress = function(l_22_0, l_22_1)
   DisconnectCalendarEvent()
   MonthSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
   preMonth(1)
   l_22_1.value = true
end

HandleYearSubPress = function(l_23_0, l_23_1)
   DisconnectCalendarEvent()
   YearSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
   preMonth(12)
   l_23_1.value = true
end

HandleYearAddPress = function(l_24_0, l_24_1)
   DisconnectCalendarEvent()
   YearAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
   nextMonth(12)
   l_24_1.value = true
end

onAddSubAnimationComplete = function()
   ConnectCalendarEvent()
end

getFloor = function(l_26_0, l_26_1)
   return (l_26_0 - math.mod(l_26_0, l_26_1)) / l_26_1
end

getCeil = function(l_27_0, l_27_1)
   local m = math.mod(l_27_0, l_27_1)
   local f = getFloor(l_27_0, l_27_1)
   if m ~= 0 then
     return f+1
   end
   return f
end

preMonth = function(l_28_0)
   calendar:PreviousNMonth(l_28_0 + 1)
   GetNextList(PreCalendar, CalendarControl.PreMonthX)
   calendar:NextNMonth(2)
   GetNextList(NextCalendar, CalendarControl.NextMonthX)
   calendar:PreviousNMonth(1)
   YearText.String = calendar:GetCurrentYearName(4)
   MonthText.String = calendar:GetCurrentMonthName(3)
   CalendarControl:SetInitSelection()
   GetNextList(ActiveCalendar, CalendarControl.CalendarX)
   CalendarControl:ResetBound()
   CalendarControl:SetSelection()
end

nextMonth = function(l_29_0)
   trace("next month")
   calendar:NextNMonth(l_29_0 + 1)
   GetNextList(NextCalendar, CalendarControl.NextMonthX)
   calendar:PreviousNMonth(2)
   GetNextList(PreCalendar, CalendarControl.PreMonthX)
   calendar:NextNMonth(1)
   YearText.String = calendar:GetCurrentYearName(4)
   MonthText.String = calendar:GetCurrentMonthName(3)
   CalendarControl:SetInitSelection()
   GetNextList(ActiveCalendar, CalendarControl.CalendarX)
   CalendarControl:ResetBound()
   CalendarControl:SetSelection()
end

initialCalendar = function()
   trace("init calendar picker")
   calendar = Calendar()
   local l_30_0 = calendar:GetToday()
   NextCalendar._visible = false
   PreCalendar._visible = false
   CalendarControl = CalendarObject(l_30_0.Year, l_30_0.Month, l_30_0.Day)
   CalendarControl:SetInitSelection()
   CreateCalendar(ActiveCalendar, CalendarControl.CalendarX)
   CreateCalendar(NextCalendar, CalendarControl.NextMonthX)
   CreateCalendar(PreCalendar, CalendarControl.PreMonthX)
   calendar:PreviousNMonth(1)
   GetNextList(PreCalendar, CalendarControl.PreMonthX)
   calendar:NextNMonth(2)
   GetNextList(NextCalendar, CalendarControl.NextMonthX)
   calendar:PreviousNMonth(1)
   GetNextList(ActiveCalendar, CalendarControl.CalendarX)
   YearText.String = calendar:GetCurrentYearName(4)
   MonthText.String = calendar:GetCurrentMonthName(3)
   CalendarControl:SetToday(l_30_0)
   CalendarControl:ResetBound()
   CalendarControl:SetSelection()
   trace("init calenar picker end")
end

SwitchCalendarToNextComplete = function()
   CalendarControl:UnSelection()
   local l_31_0 = PreCalendar
   PreCalendar = ActiveCalendar
   ActiveCalendar = NextCalendar
   NextCalendar = l_31_0
   NextCalendar._visible = false
   PreCalendar._visible = false
   calendar:NextNMonth(2)
   GetNextList(NextCalendar, CalendarControl.NextMonthX)
   calendar:PreviousNMonth(1)
   CalendarControl:SetInitSelection()
   YearText.String = calendar:GetCurrentYearName(4)
   MonthText.String = calendar:GetCurrentMonthName(3)
   CalendarControl:ResetBound()
   CalendarControl:SetSelection()
   ConnectCalendarEvent()
end

SwitchCalendarToPreComplete = function()
   CalendarControl:UnSelection()
   local l_32_0 = NextCalendar
   NextCalendar = ActiveCalendar
   ActiveCalendar = PreCalendar
   PreCalendar = l_32_0
   NextCalendar._visible = false

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?