components_Clock.bs

import "pkg:/source/utils/misc.bs"

' @fileoverview Clock component to display current time formatted based on user's chosen 12 or 24 hour setting

sub init()
  m.top.id = "clock"
  if m.global.session.user.settings["ui.design.hideclock"]
    ' If hideclick setting is enabled, exit without setting any variables
    m.hideClock = true
    return
  end if

  m.hideClock = false
  m.hours = m.top.findNode("hours")
  m.minutes = m.top.findNode("minutes")
  m.timeSeperator = m.top.findNode("timeSeperator")

  m.dateTimeObject = CreateObject("roDateTime")
  m.dateTimeObject.ToLocalTime()

  m.currentTimeTimer = m.top.findNode("currentTimeTimer")
  m.currentTimeTimer.observeField("fire", "updateTime")
  m.currentTimeTimer.control = "start"
end sub


' onCurrentTimeTimerFire: Code that runs every time the currentTimeTimer fires
'
sub updateTime()
  if m.hideClock then return

  currentTime = CreateObject("roDateTime")
  currentTime.ToLocalTime()
  m.currentTimeTimer.duration = 60 - currentTime.GetSeconds()
  currentHours = currentTime.GetHours()
  currentMinutes = currentTime.GetMinutes()

  displayedHour = StrI(currentHours).trim()
  displayedMinute = StrI(currentMinutes).trim()

  if m.global.device.clockFormat = "24h"
    if currentHours < 10
      displayedHour = "0" + displayedHour
    end if
  else
    if currentHours = 0
      displayedHour = "12"
    else if currentHours > 12
      displayedHour = StrI(currentHours - 12).trim()
    end if
  end if

  if currentMinutes < 10
    displayedMinute = "0" + displayedMinute
  end if

  m.hours.text = displayedHour
  m.timeSeperator.visible = true
  m.minutes.text = displayedMinute
  m.top.hours = currentHours
  m.top.minutes = currentMinutes
end sub

sub resetTime()
  if m.hideClock then return

  m.currentTimeTimer.control = "stop"
  m.currentTimeTimer.control = "start"
  updateTime()
end sub