You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtruby/rubylib/examples/qt-examples/dclock/dclock.rb

68 lines
1.5 KiB

require 'Qt'
class DigitalClock < TQt::LCDNumber
slots 'stopDate()', 'showTime()'
# Constructs a DigitalClock widget
def initialize
super
@showingColon = false
setFrameStyle(TQt::Frame.Panel | TQt::Frame.Raised)
setLineWidth(2) # set frame line width
showTime # display the current time
@normalTimer = startTimer(500) # 1/2 second timer events
@showDateTimer = -1 # not showingdate
end
# Handles timer events for the digital clock widget.
# There are two different timers; one timer for updating the clock
# and another one for switching back from date mode to time mode.
def timerEvent (e)
if (e.timerId == @showDateTimer) # stop showing date
stopDate
else # normal timer
if (@showDateTimer == -1) # not showing date
showTime()
end
end
end
# Enters date mode when the left mouse button is pressed.
def mousePressEvent (e)
if (e.button == TQt::MouseEvent.LeftButton) # left button pressed
showDate
end
end
def stopDate
killTimer(@showDateTimer)
@showDateTimer = -1
showTime
end
def showTime
@showingColon = !@showingColon # toggle/blink colon
s = TQt::Time.currentTime.toString[0..4]
if (!@showingColon)
s[2] = ' '
end
if (s[0] == '0')
s[0] = ' '
end
display(s) # set LCD number/text
end
def showDate
if (@showDateTimer != -1) # already showing date
return
end
date = TQt::Date.currentDate
s = sprintf('%2d %2d', date.month, date.day)
display(s) # sets the LCD number/text
@showDateTimer = startTimer(2000) # keep this state for 2 secs
end
end