⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendarmonthviewscript.luac.lua

📁 htc manila 2 sourcecode
💻 LUA
📖 第 1 页 / 共 3 页
字号:
   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 + -