comparison Squawk.lua @ 13:0ca5ec0b7502

We have an ldb tooltip now! Still need to make it pretty.
author wobin
date Thu, 23 Apr 2009 17:00:45 +1000
parents 2231fd3f139b
children 18c33a32ba31
comparison
equal deleted inserted replaced
12:d069c3e6379b 13:0ca5ec0b7502
71 -- cleared from Settings.Requested 71 -- cleared from Settings.Requested
72 -- 2) Follower is offline 72 -- 2) Follower is offline
73 -- - The next time Follower is online and recieves a Squawk we check if there 73 -- - The next time Follower is online and recieves a Squawk we check if there
74 -- is a Settings.Requested for that name, and if so assume they have approved 74 -- is a Settings.Requested for that name, and if so assume they have approved
75 -- and clear/add records appropriately. 75 -- and clear/add records appropriately.
76 --
77 -- For updating, there can be a few methods.
78 --
79 -- Guild open: you're not private, you broadcast to the guild your last X
80 -- squawks on login
81 --
82 -- followers:
76 --]] 83 --]]
77 Model.Squawk = {} 84 Model.Squawk = {}
78 local Squawk = Model.Squawk 85 local Squawk = Model.Squawk
79 86 local function wrap(str, limit)
87 limit = limit or 72
88 local here = 1
89 return str:gsub("(%s+)()(%S+)()",
90 function(sp, st, word, fi)
91 if fi-here > limit then
92 here = st
93 return "\n"..word
94 end
95 end)
96 end
80 function Squawk:new(Message, Owner) 97 function Squawk:new(Message, Owner)
81 local o = {} 98 local o = {}
82 o.Owner = Owner or UnitName("player") 99 o.Owner = Owner or UnitName("player")
83 o.Message = Message 100 o.Message = wrap(Message)
84 o.Time = time() 101 o.Time = time()
85 local reply, to = strsplit("@", ((strsplit(" ", Message)))) 102 local reply, to = strsplit("@", ((strsplit(" ", Message))))
86 if reply == "" then 103 if reply == "" then
87 o.ReplyTo = to 104 o.ReplyTo = to
88 end 105 end
330 for name,_ in pairs(Settings.Blocked) do 347 for name,_ in pairs(Settings.Blocked) do
331 self:Print(name) 348 self:Print(name)
332 end 349 end
333 end 350 end
334 351
352 local TimeSpan = { [1] = {"second", 60, 1},
353 [2] = {"minute", 3600, 60},
354 [3] = {"hour", 86400, 3600} }
355
356 function View:GetTime(stime)
357 local lapsed = difftime(time(), stime)
358 if lapsed < 86400 then -- if we're still in the same day...
359 for _,span in ipairs(TimeSpan) do
360 if lapsed < span[2] then
361 local timespan = math.floor(lapsed/span[3])
362 if timespan == 1 then
363 timespan = timespan .." ".. span[1]
364 else
365 timespan = timespan .. " ".. span[1].."s"
366 end
367 return timespan.. " ago"
368 end
369 end
370 end
371 return date("%I:%M %p %b %d", stime)
372 end
373
335 local LDBFeed = LibStub("LibDataBroker-1.1"):NewDataObject("Squawk", {type = "data source", text = "Awk!"}) 374 local LDBFeed = LibStub("LibDataBroker-1.1"):NewDataObject("Squawk", {type = "data source", text = "Awk!"})
336 local QTip = LibStub("LibQTip-1.0") 375 local QTip = LibStub("LibQTip-1.0")
337 376
377 local function AddLine(tooltip, Line, Number, Owner, TimeStamp)
378 if #Line < 79 then
379 tooltip:AddLine(Number, Owner, Line, TimeStamp)
380 else
381 tooltip:AddLine(Number, Owner, Line:sub(1, 80).."-", TimeStamp)
382 AddLine(tooltip, Line:sub(81))
383 end
384 end
385
338 function LDBFeed:OnEnter() 386 function LDBFeed:OnEnter()
339 local tooltip = QTip:Acquire("Squawk",3, "LEFT", "LEFT", "RIGHT") 387 local tooltip = QTip:Acquire("Squawk",4, "LEFT", "LEFT", "LEFT", "RIGHT")
340 self.tooltip = tooltip 388 self.tooltip = tooltip
341 tooltip:AddHeader('Name') 389 tooltip:AddHeader('Squawk')
342 tooltip:AddLine('testUser', 'Squawk!', '3 min ago') 390 for i,squawk in ipairs(Model.Squawks) do
391 if #squawk.Message > 79 then
392 local head = true
393 local message = {strsplit("\n",squawk.Message)}
394 for _,line in ipairs(message) do
395 if head then
396 AddLine(tooltip, line, i..".", squawk.Owner, View:GetTime(squawk.Time))
397 head = false
398 else
399 AddLine(tooltip, line)
400 end
401 end
402 else
403 tooltip:AddLine(i..".", squawk.Owner, squawk.Message, View:GetTime(squawk.Time))
404 end
405 end
343 tooltip:SmartAnchorTo(self) 406 tooltip:SmartAnchorTo(self)
344 tooltip:Show() 407 tooltip:Show()
345 end 408 end
346 409
347 function LDBFeed:OnTooltipShow() 410 function LDBFeed:OnTooltipShow()