Merge pull request #786 from houqp/new_ui_code

add last documents history and fix wtest.lua
pull/2/merge
Huang Xin 11 years ago
commit 7a4248faef

@ -15,6 +15,21 @@ function DocSettings:getHistoryPath(fullpath)
return "./history/["..basename:gsub("/","#").."] "..filename..".lua" return "./history/["..basename:gsub("/","#").."] "..filename..".lua"
end end
function DocSettings:getPathFromHistory(hist_name)
-- 1. select everything included in brackets
local s = string.match(hist_name,"%b[]")
-- 2. crop the bracket-sign from both sides
-- 3. and finally replace decorative signs '#' to dir-char '/'
return string.gsub(string.sub(s,2,-3),"#","/")
end
function DocSettings:getNameFromHistory(hist_name)
-- at first, search for path length
local s = string.len(string.match(hist_name,"%b[]"))
-- and return the rest of string without 4 last characters (".lua")
return string.sub(hist_name, s+2, -5)
end
function DocSettings:open(docfile) function DocSettings:open(docfile)
local conf_path = nil local conf_path = nil
if docfile == ".reader" then if docfile == ".reader" then

@ -23,6 +23,9 @@ function Button:init()
face = Font:getFace(self.text_font_face, self.text_font_size) face = Font:getFace(self.text_font_face, self.text_font_size)
} }
local text_size = text_widget:getSize() local text_size = text_widget:getSize()
if self.width == nil then
self.width = text_size.w
end
-- set FrameContainer content -- set FrameContainer content
self[1] = FrameContainer:new{ self[1] = FrameContainer:new{
margin = self.margin, margin = self.margin,

@ -25,10 +25,18 @@ function ConfirmBox:init()
local ok_button = Button:new{ local ok_button = Button:new{
text = self.ok_text, text = self.ok_text,
callback = function()
self.ok_callback()
UIManager:close(self)
end,
} }
local cancel_button = Button:new{ local cancel_button = Button:new{
text = self.cancel_text, text = self.cancel_text,
preselect = true preselect = true,
callback = function()
self.cancel_callback()
UIManager:close(self)
end,
} }
self.layout = { { ok_button, cancel_button } } self.layout = { { ok_button, cancel_button } }

@ -206,7 +206,7 @@ FrameContainer = WidgetContainer:new{
} }
function FrameContainer:getSize() function FrameContainer:getSize()
local content_size =self[1]:getSize() local content_size = self[1]:getSize()
return Geom:new{ return Geom:new{
w = content_size.w + ( self.margin + self.bordersize + self.padding ) * 2, w = content_size.w + ( self.margin + self.bordersize + self.padding ) * 2,
h = content_size.h + ( self.margin + self.bordersize + self.padding ) * 2 h = content_size.h + ( self.margin + self.bordersize + self.padding ) * 2

@ -27,6 +27,32 @@ HomeMenu = InputContainer:new{
} }
function HomeMenu:setUpdateItemTable() function HomeMenu:setUpdateItemTable()
function readHistDir(order_arg, re)
local pipe_out = io.popen("ls "..order_arg.." -1 ./history")
for f in pipe_out:lines() do
table.insert(re, {
dir = DocSettings:getPathFromHistory(f),
name = DocSettings:getNameFromHistory(f),
})
end
end
local hist_sub_item_table = {}
local last_files = {}
readHistDir("-c", last_files)
for _,v in pairs(last_files) do
table.insert(hist_sub_item_table, {
text = v.name,
callback = function()
showReader(v.dir .. "/" .. v.name)
end
})
end
table.insert(self.item_table, {
text = "Last documents",
sub_item_table = hist_sub_item_table,
})
table.insert(self.item_table, { table.insert(self.item_table, {
text = "Exit", text = "Exit",
callback = function() callback = function()
@ -36,9 +62,8 @@ function HomeMenu:setUpdateItemTable()
end end
function HomeMenu:onTapShowMenu() function HomeMenu:onTapShowMenu()
if #self.item_table == 0 then self.item_table = {}
self:setUpdateItemTable() self:setUpdateItemTable()
end
local home_menu = Menu:new{ local home_menu = Menu:new{
title = "Home menu", title = "Home menu",

@ -8,6 +8,10 @@ require "ui/infomessage"
require "ui/confirmbox" require "ui/confirmbox"
require "document/document" require "document/document"
-----------------------------------------------------
-- widget that paints the grid on the background
-----------------------------------------------------
TestGrid = Widget:new{} TestGrid = Widget:new{}
function TestGrid:paintTo(bb) function TestGrid:paintTo(bb)
@ -25,7 +29,9 @@ function TestGrid:paintTo(bb)
end end
end end
-----------------------------------------------------
-- we create a widget that paints a background: -- we create a widget that paints a background:
-----------------------------------------------------
Background = InputContainer:new{ Background = InputContainer:new{
is_always_active = true, -- receive events when other dialogs are active is_always_active = true, -- receive events when other dialogs are active
key_events = { key_events = {
@ -37,7 +43,13 @@ Background = InputContainer:new{
FrameContainer:new{ FrameContainer:new{
background = 3, background = 3,
bordersize = 0, bordersize = 0,
dimen = Screen:getSize() dimen = Screen:getSize(),
Widget:new{
dimen = {
w = Screen:getWidth(),
h = Screen:getHeight(),
}
},
} }
} }
@ -64,7 +76,9 @@ end
-----------------------------------------------------
-- example widget: a clock -- example widget: a clock
-----------------------------------------------------
Clock = FrameContainer:new{ Clock = FrameContainer:new{
background = 0, background = 0,
bordersize = 1, bordersize = 1,
@ -96,6 +110,9 @@ function Clock:getTextWidget()
} }
end end
-----------------------------------------------------
-- a confirmbox box widget
-----------------------------------------------------
Quiz = ConfirmBox:new{ Quiz = ConfirmBox:new{
text = "Tell me the truth, isn't it COOL?!", text = "Tell me the truth, isn't it COOL?!",
width = 300, width = 300,
@ -108,6 +125,9 @@ Quiz = ConfirmBox:new{
end, end,
} }
-----------------------------------------------------
-- a menu widget
-----------------------------------------------------
menu_items = { menu_items = {
{text = "item1"}, {text = "item1"},
{text = "item2"}, {text = "item2"},
@ -136,6 +156,9 @@ M = Menu:new{
} }
-----------------------------------------------------
-- a reader view widget
-----------------------------------------------------
readerwindow = CenterContainer:new{ readerwindow = CenterContainer:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
FrameContainer:new{ FrameContainer:new{
@ -151,6 +174,10 @@ reader = ReaderUI:new{
} }
readerwindow[1][1] = reader readerwindow[1][1] = reader
-----------------------------------------------------------------------
-- you may want to uncomment following show calls to see the changes
-----------------------------------------------------------------------
UIManager:show(Background:new()) UIManager:show(Background:new())
UIManager:show(TestGrid) UIManager:show(TestGrid)
UIManager:show(Clock:new()) UIManager:show(Clock:new())

Loading…
Cancel
Save