MattiasBuelens

MCMail ui/main

Jul 23rd, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.35 KB | None | 0 0
  1. --[[
  2.  
  3.     MCNet Mail UI
  4.     Main screen
  5.  
  6. ]]--
  7.  
  8. ui = ui or {}
  9.  
  10. local MainScreen = common.newClass({
  11.     background      = colours.white,
  12.     horizontal      = false,
  13.     -- Message format for unread mails
  14.     unreadFormat    = "%d unread mail(s)",
  15.     _name           = "main"
  16. }, ccgui.Page)
  17. ui.MainScreen = MainScreen
  18.  
  19. function MainScreen:init()
  20.     ccgui.Page.init(self)
  21.  
  22.     -- Header
  23.     self.header = ccgui.FlowContainer:new{
  24.         horizontal  = true,
  25.         background  = colours.blue,
  26.         _name       = "main.header"
  27.     }
  28.     self.headerTitle = ccgui.TextElement:new{
  29.         align       = ccgui.Align.Center,
  30.         foreground  = colours.white,
  31.         stretch     = true,
  32.         _name       = "main.headerTitle"
  33.     }
  34.     self.btnQuit = ccgui.Button:new{
  35.         text        = "X",
  36.         align       = ccgui.Align.Right,
  37.         padding     = ccgui.newMargins(0),
  38.         _name       = "main.btnQuit"
  39.     }
  40.     self.btnQuit:on("buttonpress", function()
  41.         self:trigger("quit")
  42.     end)
  43.     self.header:add(self.headerTitle, self.btnQuit)
  44.  
  45.     -- Header bar
  46.     self.headerBar = ccgui.FlowContainer:new{
  47.         horizontal  = true,
  48.         background  = colours.lightGrey,
  49.         _name       = "main.headerBar"
  50.     }
  51.     self.headerBar.user = ccgui.TextElement:new{
  52.         align       = ccgui.Align.Left,
  53.         foreground  = colours.white,
  54.         _name       = "main.headerBar.user"
  55.     }
  56.     self.headerBar.unread = ccgui.TextElement:new{
  57.         align       = ccgui.Align.Right,
  58.         foreground  = colours.white,
  59.         stretch     = true,
  60.         _name       = "main.headerBar.unread"
  61.     }
  62.     self.headerBar:add(self.headerBar.user, self.headerBar.unread)
  63.  
  64.     -- Tabs
  65.     self.tabs = ccgui.TabContainer:new{
  66.         horizontal  = false,
  67.         stretch     = true,
  68.         tabSpacing  = 1,
  69.         _name       = "main.tabs"
  70.     }
  71.  
  72.     self:add(self.header, self.headerBar, self.tabs)
  73.     self:setTitle(self.title)
  74.     self:setUnread(0)
  75. end
  76.  
  77. function MainScreen:setTitle(title)
  78.     assert(type(title) == "string", "invalid title")
  79.     self.headerTitle:setText(self.title)
  80. end
  81.  
  82. function MainScreen:setAddress(address)
  83.     if type(address) == "table" then
  84.         return self:setAddress(mcnet.address.format(address))
  85.     end
  86.  
  87.     assert(type(address) == "string", "invalid address")
  88.     self.headerBar.user:setText(address)
  89. end
  90.  
  91. function MainScreen:setUnread(unread)
  92.     unread = tonumber(unread)
  93.     local unreadText = string.format(self.unreadFormat, unread)
  94.     self.headerBar.unread:setText(unreadText)
  95. end
  96.  
  97. function MainScreen:addTab(...)
  98.     return self.tabs:addTab(...)
  99. end
  100.  
  101. function MainScreen:setCurrentTab(...)
  102.     return self.tabs:setCurrentTab(...)
  103. end
Advertisement
Add Comment
Please, Sign In to add comment