Mercurial > wow > squawk
comparison Model.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 |
comparison
equal
deleted
inserted
replaced
| 21:e066473450c2 | 22:8df5d8ef2e27 |
|---|---|
| 10 -- * Owner (Name) | 10 -- * Owner (Name) |
| 11 -- * Time (Epoch) | 11 -- * Time (Epoch) |
| 12 -- * Message (140 characters) | 12 -- * Message (140 characters) |
| 13 -- * ReplyTo (Name) | 13 -- * ReplyTo (Name) |
| 14 -- * Related (Names) | 14 -- * Related (Names) |
| 15 -- * Trends (Term) | |
| 15 -- | 16 -- |
| 16 -- Each User will have the following lists: | 17 -- Each User will have the following lists: |
| 17 -- * Follower | 18 -- * Follower |
| 18 -- * Following | 19 -- * Following |
| 19 -- * Blocked | 20 -- * Blocked |
| 26 -- | 27 -- |
| 27 -- When a user makes a request to follow a private user, the subsequent paths occur: | 28 -- When a user makes a request to follow a private user, the subsequent paths occur: |
| 28 -- - Followee is added to Settings.Requested | 29 -- - Followee is added to Settings.Requested |
| 29 -- - Followee receives 'follow request' -> (their) Settings.Pending | 30 -- - Followee receives 'follow request' -> (their) Settings.Pending |
| 30 -- - Followee acts on request -> (their) Settings.Pending cleared | 31 -- - Followee acts on request -> (their) Settings.Pending cleared |
| 31 -- 1) Follwer is online | 32 -- 1) Follower is online |
| 32 -- - Follower receives 'request accepted' -> Added to Settings.Following and | 33 -- - Follower receives 'request accepted' -> Added to Settings.Following and |
| 33 -- cleared from Settings.Requested | 34 -- cleared from Settings.Requested |
| 34 -- 2) Follower is offline | 35 -- 2) Follower is offline |
| 35 -- - The next time Follower is online and recieves a Squawk we check if there | 36 -- - The next time Follower is online and recieves a Squawk we check if there |
| 36 -- is a Settings.Requested for that name, and if so assume they have approved | 37 -- is a Settings.Requested for that name, and if so assume they have approved |
| 37 -- and clear/add records appropriately. | 38 -- and clear/add records appropriately. |
| 38 -- | 39 -- |
| 39 -- For updating, there can be a few methods. | 40 --For updating, there can be a few methods. |
| 40 -- | 41 -- |
| 41 -- Guild open: you're not private, you broadcast to the guild your last X | 42 -- Guild open: you're not private, you broadcast to the guild your last X |
| 42 -- squawks on login | 43 -- squawks on login |
| 43 -- | 44 -- |
| 44 -- followers: | 45 -- Followers: If you login and are following people, you send a request to them |
| 46 -- directly upon login (after a brief pause to load everything) to get the last | |
| 47 -- 5 tweets from them. You also broadcast your last 5 tweets to them. | |
| 48 -- | |
| 49 -- Problems inherent in the system: | |
| 50 -- - Number of transmissions if Follow group is large. | |
| 51 -- - Guild transmissions in large guilds, how do we get the information of | |
| 52 -- people who have already logged on previously without being spammed? We | |
| 53 -- send a request for a guild listing of people using the addon and then | |
| 54 -- go through that list requesting the last 5 of each user one by one. | |
| 55 -- - Transmission must be able to be delayed if sender is in combat. | |
| 45 --]] | 56 --]] |
| 46 Model.Squawks = {} | 57 Model.Squawks = {} |
| 47 local Squawks = Model.Squawks | 58 local Squawks = Model.Squawks |
| 48 Squawks.Main = {} | 59 Squawks.Main = {} |
| 49 Squawks.Owners = {} | 60 Squawks.Owners = {} |
| 60 ["SHAMAN"] = "2459FF", | 71 ["SHAMAN"] = "2459FF", |
| 61 ["WARLOCK"] = "9482C9", | 72 ["WARLOCK"] = "9482C9", |
| 62 ["WARRIOR"] = "C79C6E", | 73 ["WARRIOR"] = "C79C6E", |
| 63 } | 74 } |
| 64 | 75 |
| 65 local function wrap(str, limit) | |
| 66 limit = limit or 72 | |
| 67 local here = 1 | |
| 68 return str:gsub("|c%x-|H.-|h(.-)|h|r", "%1"):gsub("(%s+)()(%S+)()", | |
| 69 function(sp, st, word, fi) | |
| 70 if fi-here > limit then | |
| 71 here = st | |
| 72 return "\n"..word | |
| 73 end | |
| 74 end) | |
| 75 end | |
| 76 | |
| 77 function Squawks:new(Message, Owner, Class, ReplyStamp) | 76 function Squawks:new(Message, Owner, Class, ReplyStamp) |
| 78 View:Print("New: "..ReplyStamp) | 77 View:Print("New: "..ReplyStamp) |
| 79 local o = {} | 78 local o = {} |
| 80 o.Owner = Owner or UnitName("player") | 79 o.Owner = Owner or UnitName("player") |
| 81 o.Message = wrap(Message) | 80 o.Message = Message |
| 82 o.Time = time() | 81 o.Time = time() |
| 83 local reply, to = strsplit("@", ((strsplit(" ", Message)))) | 82 local reply, to = strsplit("@", ((strsplit(" ", Message)))) |
| 84 if reply == "" then | 83 if reply == "" then |
| 85 o.ReplyTo = to:match("%P+") -- Get everything except punctuation | 84 o.ReplyTo = to:match("%P+") -- Get everything except punctuation |
| 86 o.ReplyStamp = ReplyStamp | 85 o.ReplyStamp = ReplyStamp |
| 94 end | 93 end |
| 95 end | 94 end |
| 96 | 95 |
| 97 if #o.Related == 0 then | 96 if #o.Related == 0 then |
| 98 o.Related = nil | 97 o.Related = nil |
| 98 end | |
| 99 | |
| 100 o.Trends = {} | |
| 101 | |
| 102 for word in string.gmatch(Message, "#(%S+)") do | |
| 103 table.insert(o.Trends, word) | |
| 104 end | |
| 105 | |
| 106 if #o.Trends == 0 then | |
| 107 o.Trends = nil | |
| 99 end | 108 end |
| 100 | 109 |
| 101 table.insert(self.Main, o) | 110 table.insert(self.Main, o) |
| 102 | 111 |
| 103 if not self.Squawkers[Owner] then | 112 if not self.Squawkers[Owner] then |
