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