Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- MCNet Mail UI
- Message box pane
- ]]--
- ui = ui or {}
- --[[
- Read message pane
- ]]--
- local BoxReadPane = common.newClass({
- stretch = true
- }, ui.ReadPane)
- ui.BoxReadPane = BoxReadPane
- function BoxReadPane:toolbar()
- -- Styles
- local toolbar = ccgui.FlowContainer:new{
- horizontal = false
- }
- local ToolbarButton = common.newClass(ccgui.Button)
- local ToolbarToggleButton = common.newClass(ccgui.ToggleButton)
- -- Buttons
- local reply = ToolbarButton:new{
- label = "Reply"
- }
- local toggleRead = ToolbarToggleButton:new{
- labelOn = "Mark unread",
- labelOff = "Mark read "
- }
- local delete = ToolbarButton:new{
- label = "Delete"
- }
- toggleRead:setState(self.message.read)
- -- Actions
- reply:on("buttonpress", function(pane)
- pane:trigger("replyPressed", pane.message)
- end, self)
- toggleRead:on("toggleon", function(pane)
- pane:trigger("markAsReadPressed", pane.message)
- end, self)
- toggleRead:on("toggleoff", function(pane)
- pane:trigger("markAsUnreadPressed", pane.message)
- end, self)
- delete:on("buttonpress", function(pane)
- pane:trigger("deletePressed", pane.message)
- end, self)
- -- Bindings
- self:on("readMessage", function(pane, message)
- toggleRead:setState(true)
- end, self)
- self:on("unreadMessage", function(pane, message)
- toggleRead:setState(false)
- end, self)
- toolbar:add(reply, toggleRead, delete)
- return toolbar
- end
- --[[
- List messages pane
- ]]--
- local BoxListPane = common.newClass({
- -- Message panes
- paneClass = ui.BoxReadPane,
- -- Message box
- mailbox = nil,
- boxStore = nil,
- boxName = "",
- box = nil
- }, ui.ListPane)
- ui.BoxListPane = BoxListPane
- function BoxListPane:init()
- ui.ListPane.init(self)
- self:on("readMessage", self.markAsRead, self)
- self:sinkEventToCurrent("readMessage")
- self:on("unreadMessage", self.markAsUnread, self)
- self:sinkEventToCurrent("unreadMessage")
- self:on("removeMessage", self.mailbox.remove, self.mailbox)
- self:loadMessages()
- end
- function BoxListPane:addMessage(message)
- local pane = ui.ListPane.addMessage(self, message)
- if type(pane) ~= "table" then return pane end
- -- Listen to tab activation
- pane.tabButton:on("buttonpress", function(list)
- list:trigger("readMessage", pane.message)
- end, self)
- -- Bubble toolbar events to list pane
- pane:on("replyPressed", function(list, message)
- list:trigger("replyMessage", message)
- end, self)
- pane:on("markAsReadPressed", function(list, message)
- list:trigger("readMessage", message)
- end, self)
- pane:on("markAsUnreadPressed", function(list, message)
- list:trigger("unreadMessage", message)
- end, self)
- pane:on("deletePressed", function(list, message)
- list:removeMessage(message)
- end, self)
- return pane
- end
- function BoxListPane:loadMessages()
- self.mailbox:load()
- for i,msg in ipairs(self.mailbox.messages) do
- self:addMessage(msg)
- end
- end
- function BoxListPane:markAsRead(message)
- message.read = true
- self.mailbox:save()
- end
- function BoxListPane:markAsUnread(message)
- message.read = false
- self.mailbox:save()
- end
Advertisement
Add Comment
Please, Sign In to add comment