Mercurial > wow > squawk
view Controller.lua @ 22:8df5d8ef2e27 tip
switch back to LibQTip-1.0 as LQTC is depreciated
Fixed up the line resizing as LQT does this automatically now
author | wobin |
---|---|
date | Wed, 22 Jul 2009 23:16:42 +1000 |
parents | 431f2fce08f2 |
children |
line wrap: on
line source
local Controller = Squawk.Controller local Model = Squawk.Model local View = Squawk.View local Settings = Model.UserSettings local Squawks = Model.Squawks --Controller-- function Controller:TheyWantToFollowMe(Name) if Settings:IsPrivate() then Settings:AddPending(Name) self:PutForwardFollowRequest(Name) self:SendMessageToTarget(Name, "#Pending|"..self.Name) else Settings:AddFollower(Name) View:NotifyOfNewFollower(Name) self:SendMessageToTarget(Name, "#Follow|"..self.Name) end end function Controller:TheyWantToUnfollowMe(Name) Settings:RemoveFollower(Name) end function Controller:IWantToFollowThem(Name) self:SendMessageToTarget(Name, "#Request|"..self.Name) Settings:AddRequested(Name) end function Controller:IWantToUnfollowThem(Name) Settings:RemoveFollowing(Name) self:SendMessageToTarget(Name, "#Unfollow|"..self.Name) View:NotifyOfUnfollowing(Name) end function Controller:IAmNowFollowingThem(Name) Settings:AddFollowing(Name) View:NotifyOfNewFollowing(Name) end function Controller:AddANewSquawk(Name, Class, Message, Reply, Source) if not Settings.Blocked[Name] then if Source == "WHISPER" then if Settings.Requested[Name] then -- We've been approved offline! Settings:AddFollowing(Name) end if not Settings.Following[Name] then -- If we're no longer following this person self:SendMessageToTarget(Name, "#Unfollow|"..self.Name) return end end if Source == "GUILD" and Name == self.Name then return end table.insert(Model.Squawks, Squawks:new(Message, Name, Class, Reply)) --View:UpdateSquawkList() end end local trigger local function RepressFailure(frame, event, ...) if arg1:match(string.gsub(ERR_CHAT_PLAYER_NOT_FOUND_S, "%%s", "(.*)")) then if trigger then Controller:CancelTimer(trigger, true) end trigger = Controller:ScheduleTimer( function() ChatFrame_RemoveMessageEventFilter("CHAT_MSG_SYSTEM", RepressFailure) end, 3) -- Give it three seconds and then remove the filter. return true else return false, unpack(...) end end function Controller:SendNewSquawk(Message, ReplyStamp) if not Settings:IsPrivate() then self:SendMessageToGuild("#Squawk|"..self.Name.."|"..self.Class.."|"..ReplyStamp or "".."|"..Message) end self:AddANewSquawk(self.Name, self.Class, Message, ReplyStamp) for name, _ in pairs(Settings.Following) do self:SendMessageToTarget(name, "#Squawk|"..self.Name.."|"..self.Class.."|"..ReplyStamp or "".."|"..Message) end end function Controller:ImPending(Name) View:NotifyOfPending(Name) end function Controller:PutForwardFollowRequest(Name) View:NotifyOfPendingRequest(Name) end function Controller:ApprovePendingRequest(Name) Settings:AddFollower(Name) View:NotifyOfNewFollower(Name) self:SendMessageToTarget(Name, "#Follow|"..self.Name) end function Controller:SendMessageToTarget(Name, Message) ChatFrame_AddMessageEventFilter("CHAT_MSG_SYSTEM", RepressFailure) self:SendCommMessage("Squawk", Message, "WHISPER", Name) end function Controller:SendMessageToGuild(Message) self:SendCommMessage("Squawk", Message, "GUILD") end local Parse = { ["#Pending"] = Controller.ImPending, ["#Follow"] = Controller.IAmNowFollowingThem, ["#Unfollow"] = Controller.TheyWantToUnfollowMe, ["#Squawk"] = Controller.AddANewSquawk, ["#Request"] = Controller.TheyWantToFollowMe, } function Controller:ReceiveMessage(Message, Distribution, Sender) local command, name, class, reply, info = strsplit("|",Message) Parse[command](Controller, name, class, reply, info, Distribution) end