Mercurial > wow > squawk
comparison Squawk.lua @ 14:18c33a32ba31
Now supresses 'X Player is not online' messages when broadcasting to followers
Tooltip limited to 10 most recent
author | wobin |
---|---|
date | Fri, 24 Apr 2009 15:19:43 +1000 |
parents | 0ca5ec0b7502 |
children | 9e61a930b822 |
comparison
equal
deleted
inserted
replaced
13:0ca5ec0b7502 | 14:18c33a32ba31 |
---|---|
35 Settings.Requested = Model.db.profile.Requested | 35 Settings.Requested = Model.db.profile.Requested |
36 Settings.Blocked = Model.db.profile.Blocked | 36 Settings.Blocked = Model.db.profile.Blocked |
37 Settings.Private = Model.db.profile.Private | 37 Settings.Private = Model.db.profile.Private |
38 | 38 |
39 LibStub("AceComm-3.0"):Embed(Controller) | 39 LibStub("AceComm-3.0"):Embed(Controller) |
40 LibStub("AceTimer-3.0"):Embed(Controller) | |
40 Controller:RegisterComm("Squawk", Controller.ReceiveMessage) | 41 Controller:RegisterComm("Squawk", Controller.ReceiveMessage) |
41 | |
42 LibStub("AceConsole-3.0"):Embed(View) | 42 LibStub("AceConsole-3.0"):Embed(View) |
43 | |
43 end | 44 end |
44 | 45 |
45 -- Model -- | 46 -- Model -- |
46 --[[ | 47 --[[ |
47 --Each Squawk will have the following information: | 48 --Each Squawk will have the following information: |
114 | 115 |
115 return o | 116 return o |
116 end | 117 end |
117 | 118 |
118 function Squawk:Sort(Squawks) | 119 function Squawk:Sort(Squawks) |
119 return table.sort(Squawks, function(a,b) return a.Time < b.Time end) | 120 table.sort(Squawks, function(a,b) return a.Time > b.Time end) |
121 return Squawks | |
120 end | 122 end |
121 | 123 |
122 function Squawk:GetOwn(Squawks) | 124 function Squawk:GetOwn(Squawks) |
123 local mine = {} | 125 local mine = {} |
124 for _, squawk in ipairs(Squawks) do | 126 for _, squawk in ipairs(Squawks) do |
125 if squawk.Owner == UnitName("player") then | 127 if squawk.Owner == UnitName("player") then |
126 table.insert(mine, squawk) | 128 table.insert(mine, squawk) |
127 end | 129 end |
128 end | 130 end |
129 return self:Sort(mine) | 131 return self:Sort(mine) |
132 end | |
133 | |
134 function Squawk:GetLast10(Squawks) | |
135 local mine = {} | |
136 local limit = #Squawks < 10 and #Squawks or 10 | |
137 | |
138 Squawks = Squawk:Sort(Squawks) | |
139 | |
140 for i=1,limit do | |
141 table.insert(mine, Squawks[i]) | |
142 end | |
143 return mine | |
130 end | 144 end |
131 | 145 |
132 function Settings:IsPrivate() | 146 function Settings:IsPrivate() |
133 return Settings.Private | 147 return Settings.Private |
134 end | 148 end |
246 table.insert(Model.Squawks, Squawk:new(Message, Name)) | 260 table.insert(Model.Squawks, Squawk:new(Message, Name)) |
247 View:UpdateSquawkList() | 261 View:UpdateSquawkList() |
248 end | 262 end |
249 end | 263 end |
250 | 264 |
265 local trigger | |
266 local function RepressFailure(frame, event, ...) | |
267 if arg1:match(string.gsub(ERR_CHAT_PLAYER_NOT_FOUND_S, "%%s", "(.*)")) then | |
268 if trigger then Controller:CancelTimer(trigger, true) end | |
269 trigger = Controller:ScheduleTimer( | |
270 function() | |
271 ChatFrame_RemoveMessageEventFilter("CHAT_MSG_SYSTEM", RepressFailure) | |
272 end, 3) -- Give it three seconds and then remove the filter. | |
273 return true | |
274 else | |
275 return false, unpack(...) | |
276 end | |
277 end | |
278 | |
251 function Controller:SendNewSquawk(Message) | 279 function Controller:SendNewSquawk(Message) |
252 if not Settings:IsPrivate() then | 280 if not Settings:IsPrivate() then |
253 self:SendMessageToGuild("#Squawk|"..UnitName("player").."|"..Message) | 281 self:SendMessageToGuild("#Squawk|"..UnitName("player").."|"..Message) |
254 end | 282 end |
255 | 283 |
256 self:AddANewSquawk(UnitName("player"), Message) | 284 self:AddANewSquawk(UnitName("player"), Message) |
257 | |
258 for name, _ in pairs(Settings.Following) do | 285 for name, _ in pairs(Settings.Following) do |
259 self:SendMessageToTarget(name, "#Squawk|"..UnitName("player").."|"..Message) | 286 self:SendMessageToTarget(name, "#Squawk|"..UnitName("player").."|"..Message) |
260 end | 287 end |
261 end | 288 end |
262 | 289 |
272 Settings:AddFollower(Name) | 299 Settings:AddFollower(Name) |
273 View:NotifyOfNewFollower(Name) | 300 View:NotifyOfNewFollower(Name) |
274 self:SendMessageToTarget(Name, "#Follow|"..UnitName("player")) | 301 self:SendMessageToTarget(Name, "#Follow|"..UnitName("player")) |
275 end | 302 end |
276 | 303 |
304 | |
305 | |
277 function Controller:SendMessageToTarget(Name, Message) | 306 function Controller:SendMessageToTarget(Name, Message) |
307 ChatFrame_AddMessageEventFilter("CHAT_MSG_SYSTEM", RepressFailure) | |
278 self:SendCommMessage("Squawk", Message, "WHISPER", Name) | 308 self:SendCommMessage("Squawk", Message, "WHISPER", Name) |
279 end | 309 end |
280 | 310 |
281 function Controller:SendMessageToGuild(Message) | 311 function Controller:SendMessageToGuild(Message) |
282 self:SendCommMessage("Squawk", Message, "GUILD") | 312 self:SendCommMessage("Squawk", Message, "GUILD") |
293 function Controller:ReceiveMessage(Message, Distribution, Sender) | 323 function Controller:ReceiveMessage(Message, Distribution, Sender) |
294 local command, name, info = strsplit("|",Message) | 324 local command, name, info = strsplit("|",Message) |
295 View:Print(Distribution..":"..Message) | 325 View:Print(Distribution..":"..Message) |
296 Parse[command](Controller, name, info, Distribution) | 326 Parse[command](Controller, name, info, Distribution) |
297 end | 327 end |
328 | |
298 -- View -- | 329 -- View -- |
299 | 330 |
300 function View:UpdateSquawkList() | 331 function View:UpdateSquawkList() |
301 self:Print("Updated Squawk List") | 332 self:Print("Updated Squawk List") |
302 self:ShowMeMySquawks() | 333 self:ShowMeMySquawks() |
385 | 416 |
386 function LDBFeed:OnEnter() | 417 function LDBFeed:OnEnter() |
387 local tooltip = QTip:Acquire("Squawk",4, "LEFT", "LEFT", "LEFT", "RIGHT") | 418 local tooltip = QTip:Acquire("Squawk",4, "LEFT", "LEFT", "LEFT", "RIGHT") |
388 self.tooltip = tooltip | 419 self.tooltip = tooltip |
389 tooltip:AddHeader('Squawk') | 420 tooltip:AddHeader('Squawk') |
390 for i,squawk in ipairs(Model.Squawks) do | 421 for i,squawk in ipairs(Squawk:GetLast10(Model.Squawks)) do |
391 if #squawk.Message > 79 then | 422 if #squawk.Message > 79 then |
392 local head = true | 423 local head = true |
393 local message = {strsplit("\n",squawk.Message)} | 424 local message = {strsplit("\n",squawk.Message)} |
394 for _,line in ipairs(message) do | 425 for _,line in ipairs(message) do |
395 if head then | 426 if head then |