Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
174 lines (132 sloc) 3.48 KB
-- UI Demo
--
-- UI widgets demo.
--
-- E1/K2 : Change page
-- K3 : Change tab
-- E2/3 : Adjust controls
--
-- v1.0.1 Mark Eats
--
local UI = require "ui"
local SCREEN_FRAMERATE = 15
local screen_refresh_metro
local screen_dirty = true
local pages
local tabs
local dial_l
local dial_r
local slider_l
local slider_r
local scrolling_list
local message
local list_content = {"The Genesis", "N.Y. State of Mind", "Life's a Bitch", "The World Is Yours", "Halftime", "Memory Lane (Sittin' in...)", "One Love", "One Time 4 Your Mind", "Represent", "It Ain't Hard to Tell"}
local message_result = ""
-- Init
function init()
screen.aa(1)
-- Init UI
pages = UI.Pages.new(1, 3)
tabs = UI.Tabs.new(1, {"Tab A", "Tab B"})
dial_l = UI.Dial.new(9, 19, 22, 25, 0, 100, 1)
dial_r = UI.Dial.new(34.5, 34, 22, 0.3, -1, 1, 0.01, 0, {0})
slider_l = UI.Slider.new(86, 18, 3, 44, 0.25, 0, 1, {0.84})
slider_r = UI.Slider.new(102, 18, 3, 44, 0.25, 0, 1, {0.84})
slider_l.active = false
slider_r.active = false
scrolling_list = UI.ScrollingList.new(8, 8, 1, list_content)
-- Start drawing to screen
screen_refresh_metro = metro.init()
screen_refresh_metro.event = function()
if screen_dirty then
screen_dirty = false
redraw()
end
end
screen_refresh_metro:start(1 / SCREEN_FRAMERATE)
end
-- Encoder input
function enc(n, delta)
if n == 1 then
-- Page scroll
pages:set_index_delta(util.clamp(delta, -1, 1), false)
end
if pages.index == 1 then
if tabs.index == 1 then
-- Tab A
if n == 2 then
dial_l:set_value_delta(delta * 2)
elseif n == 3 then
dial_r:set_value_delta(delta / 20)
end
else
-- Tab B
if n == 2 then
slider_l:set_value_delta(delta / 20)
elseif n == 3 then
slider_r:set_value_delta(delta / 20)
end
end
elseif pages.index == 2 then
if n == 2 then
scrolling_list:set_index_delta(util.clamp(delta, -1, 1))
end
end
screen_dirty = true
end
-- Key input
function key(n, z)
if z == 1 then
if n == 2 then
if message then
message = nil
message_result = "Cancelled."
else
pages:set_index_delta(1, true)
end
elseif n == 3 then
if message then
message = nil
message_result = "Confirmed!"
elseif pages.index == 1 then
tabs:set_index_delta(1, true)
dial_l.active = tabs.index == 1
dial_r.active = tabs.index == 1
slider_l.active = tabs.index == 2
slider_r.active = tabs.index == 2
elseif pages.index == 3 then
message = UI.Message.new({"This is a message.", "", "KEY2 to cancel", "KEY3 to confirm"})
end
end
screen_dirty = true
end
end
-- Redraw
function redraw()
screen.clear()
if message then
message:redraw()
else
pages:redraw()
if pages.index == 1 then
tabs:redraw()
dial_l:redraw()
dial_r:redraw()
slider_l:redraw()
slider_r:redraw()
elseif pages.index == 2 then
scrolling_list:redraw()
elseif pages.index == 3 then
screen.move(8, 24)
screen.level(15)
screen.text("Press KEY3 to")
screen.move(8, 35)
screen.text("display a message.")
screen.move(8, 50)
screen.level(3)
screen.text(message_result)
screen.fill()
end
end
screen.update()
end