Mercurial > wow > squawk
comparison View.lua @ 18:a3328fffef5c
Split of main file into components
author | wobin |
---|---|
date | Thu, 07 May 2009 02:52:23 +1000 |
parents | |
children | 431f2fce08f2 |
comparison
equal
deleted
inserted
replaced
17:2a73deb7bc54 | 18:a3328fffef5c |
---|---|
1 local View = Squawk.View | |
2 local Model = Squawk.Model | |
3 local Settings = Model.UserSettings | |
4 local Controller = Squawk.Controller | |
5 local Squawks = Model.Squawks | |
6 | |
7 -- View -- | |
8 | |
9 function View:UpdateSquawkList() | |
10 self:Print("Updated Squawk List") | |
11 self:ShowMeMySquawks() | |
12 end | |
13 | |
14 function View:NotifyOfPending(Name) | |
15 self:Print(Name.." will have to approve your request") | |
16 end | |
17 | |
18 function View:NotifyOfPendingRequest(Name) | |
19 self:Print(Name.." wants to follow you.") | |
20 end | |
21 | |
22 function View:NotifyOfNewFollowing(Name) | |
23 self:Print("You are now following "..Name) | |
24 end | |
25 | |
26 function View:NotifyOfUnfollowing(Name) | |
27 self:Print("You are no longer following "..Name) | |
28 end | |
29 | |
30 function View:NotifyOfNewFollower(Name) | |
31 self:Print(Name.." is now following you") | |
32 end | |
33 | |
34 function View:ShowMeMySquawks() | |
35 for _,squawk in ipairs(Model.Squawks.Main) do | |
36 self:Print(squawk.Message) | |
37 end | |
38 end | |
39 | |
40 function View:ShowMeMyFollowers() | |
41 self:Print("My followers are:") | |
42 for name,_ in pairs(Settings.Follower) do | |
43 self:Print(name) | |
44 end | |
45 end | |
46 | |
47 function View:ShowMeWhoImFollowing() | |
48 self:Print("I am following:") | |
49 for name,_ in pairs(Settings.Following) do | |
50 self:Print(name) | |
51 end | |
52 end | |
53 | |
54 function View:ShowMeWhoIveBlocked() | |
55 self:Print("I've blocked:") | |
56 for name,_ in pairs(Settings.Blocked) do | |
57 self:Print(name) | |
58 end | |
59 end | |
60 | |
61 local TimeSpan = { [1] = {"second", 60, 1}, | |
62 [2] = {"minute", 3600, 60}, | |
63 [3] = {"hour", 86400, 3600} } | |
64 | |
65 function View:GetTime(stime) | |
66 local lapsed = difftime(time(), stime) | |
67 if lapsed < 86400 then -- if we're still in the same day... | |
68 for _,span in ipairs(TimeSpan) do | |
69 if lapsed < span[2] then | |
70 local timespan = math.floor(lapsed/span[3]) | |
71 if timespan == 1 then | |
72 timespan = timespan .." ".. span[1] | |
73 else | |
74 timespan = timespan .. " ".. span[1].."s" | |
75 end | |
76 return timespan.. " ago" | |
77 end | |
78 end | |
79 end | |
80 return date("%I:%M %p %b %d", stime) | |
81 end | |
82 | |
83 local LDBFeed = LibStub("LibDataBroker-1.1"):NewDataObject("Squawk", {type = "data source", text = "Awk!"}) | |
84 local QTip = LibStub("LibQTip-1.0") | |
85 local QTipClick = LibStub("LibQTipClick-1.0") | |
86 local tooltip = {} | |
87 | |
88 local function HideTooltip() | |
89 if MouseIsOver(tooltip) then return end | |
90 tooltip:SetScript("OnLeave", nil) | |
91 tooltip:Hide() | |
92 QTip:Release(tooltip) | |
93 tooltip = nil | |
94 end | |
95 | |
96 local function ReplyToMe(cell, Owner, event) | |
97 View:Print("Replying to @"..Owner) | |
98 end | |
99 | |
100 local function AddLine(tooltip, Line, Number, Owner, TimeStamp) | |
101 local x,y | |
102 if #Line < 79 then | |
103 y,x = tooltip:AddNormalLine(Number, Owner, Line, TimeStamp) | |
104 else | |
105 y,x = tooltip:AddNormalLine(Number, Owner, Line:sub(1, 80).."-", TimeStamp) | |
106 AddLine(tooltip, Line:sub(81)) | |
107 end | |
108 if not TimeStamp then return end | |
109 | |
110 -- Now add the reply clickback | |
111 tooltip:SetCell(y, 5, " ", Owner) | |
112 tooltip.lines[y].cells[5]:SetBackdrop({bgFile= "Interface\\Addons\\Squawk\\reply"}) | |
113 if not tooltip.lines[y].cells[5]:GetScript("OnHide") then | |
114 tooltip.lines[y].cells[5]:SetScript("OnHide", function(self) self:SetBackdrop(nil) self:SetScript("OnHide", nil) end) | |
115 end | |
116 -- Reply clickback finished | |
117 end | |
118 | |
119 function LDBFeed:OnEnter() | |
120 tooltip = QTipClick:Acquire("Squawk",5, "LEFT", "CENTER", "LEFT", "RIGHT", "RIGHT") | |
121 tooltip:Clear() | |
122 tooltip:SetCallback("OnMouseDown", ReplyToMe) | |
123 self.tooltip = tooltip | |
124 for i,squawk in ipairs(Squawks:GetLast10()) do | |
125 local head = true | |
126 local message = {strsplit("\n",squawk.Message)} | |
127 for _,line in ipairs(message) do | |
128 if head then | |
129 AddLine(tooltip, line, i..".", squawk.Owner, View:GetTime(squawk.Time)) | |
130 head = false | |
131 else | |
132 AddLine(tooltip, line) | |
133 end | |
134 end | |
135 end | |
136 tooltip:SmartAnchorTo(self) | |
137 tooltip:SetScript("OnLeave", HideTooltip) | |
138 tooltip:Show() | |
139 end | |
140 | |
141 function LDBFeed:OnLeave() | |
142 HideTooltip() | |
143 end | |
144 --[[ | |
145 | |
146 function LDBFeed:OnClick(button) | |
147 editbox:ClearAllPoints() | |
148 editbox:SetPoint(GetTipAnchor(self)) | |
149 editbox:Show() | |
150 end | |
151 | |
152 local function GetTipAnchor(frame) | |
153 if not x or not y then return "TOPLEFT", frame, "BOTTOMLEFT" end | |
154 local hhalf = (x > UIParent:GetWidth()*2/3) and "RIGHT" or (x < UIParent:GetWidth()/3) and "LEFT" or "" | |
155 local vhalf = (y > UIParent:GetHeight()/2) and "TOP" or "BOTTOM" | |
156 return vhalf..hhalf, frame, (vhalf == "TOP" and "BOTTOM" or "TOP")..hhalf | |
157 end | |
158 | |
159 local editbox = CreateFrame('EditBox', nil, UIParent) | |
160 editbox:Hide() | |
161 editbox:SetAutoFocus(true) | |
162 editbox:SetHeight(32) | |
163 editbox:SetWidth(350) | |
164 editbox:SetFrameStrata("HIGH") | |
165 editbox:SetFontObject('GameFontHighlightSmall') | |
166 lib.editbox = editbox | |
167 | |
168 editbox:SetScript("OnEscapePressed", editbox.ClearFocus) | |
169 editbox:SetScript("OnEnterPressed", editbox.ClearFocus) | |
170 editbox:SetScript("OnEditFocusLost", editbox.Hide) | |
171 editbox:SetScript("OnEditFocusGained", editbox.HighlightText) | |
172 editbox:SetScript("OnTextChanged", function(self) | |
173 self:SetText(self:GetParent().val) | |
174 self:HighlightText() | |
175 end) | |
176 | |
177 local left = editbox:CreateTexture(nil, "BACKGROUND") | |
178 left:SetWidth(8) left:SetHeight(20) | |
179 left:SetPoint("LEFT", -5, 0) | |
180 left:SetTexture("Interface\\Common\\Common-Input-Border") | |
181 left:SetTexCoord(0, 0.0625, 0, 0.625) | |
182 | |
183 local right = editbox:CreateTexture(nil, "BACKGROUND") | |
184 right:SetWidth(8) right:SetHeight(20) | |
185 right:SetPoint("RIGHT", 0, 0) | |
186 right:SetTexture("Interface\\Common\\Common-Input-Border") | |
187 right:SetTexCoord(0.9375, 1, 0, 0.625) | |
188 | |
189 local center = editbox:CreateTexture(nil, "BACKGROUND") | |
190 center:SetHeight(20) | |
191 center:SetPoint("RIGHT", right, "LEFT", 0, 0) | |
192 center:SetPoint("LEFT", left, "RIGHT", 0, 0) | |
193 center:SetTexture("Interface\\Common\\Common-Input-Border") | |
194 center:SetTexCoord(0.0625, 0.9375, 0, 0.625) | |
195 | |
196 function lib.OpenEditbox(self) | |
197 editbox:SetText(self.val) | |
198 editbox:SetParent(self) | |
199 editbox:SetPoint("LEFT", self) | |
200 editbox:SetPoint("RIGHT", self) | |
201 editbox:Show() | |
202 end | |
203 --]] | |
204 |