Mercurial > wow > squawk
view View.lua @ 18:a3328fffef5c
Split of main file into components
author | wobin |
---|---|
date | Thu, 07 May 2009 02:52:23 +1000 |
parents | |
children | 431f2fce08f2 |
line wrap: on
line source
local View = Squawk.View local Model = Squawk.Model local Settings = Model.UserSettings local Controller = Squawk.Controller local Squawks = Model.Squawks -- View -- function View:UpdateSquawkList() self:Print("Updated Squawk List") self:ShowMeMySquawks() end function View:NotifyOfPending(Name) self:Print(Name.." will have to approve your request") end function View:NotifyOfPendingRequest(Name) self:Print(Name.." wants to follow you.") end function View:NotifyOfNewFollowing(Name) self:Print("You are now following "..Name) end function View:NotifyOfUnfollowing(Name) self:Print("You are no longer following "..Name) end function View:NotifyOfNewFollower(Name) self:Print(Name.." is now following you") end function View:ShowMeMySquawks() for _,squawk in ipairs(Model.Squawks.Main) do self:Print(squawk.Message) end end function View:ShowMeMyFollowers() self:Print("My followers are:") for name,_ in pairs(Settings.Follower) do self:Print(name) end end function View:ShowMeWhoImFollowing() self:Print("I am following:") for name,_ in pairs(Settings.Following) do self:Print(name) end end function View:ShowMeWhoIveBlocked() self:Print("I've blocked:") for name,_ in pairs(Settings.Blocked) do self:Print(name) end end local TimeSpan = { [1] = {"second", 60, 1}, [2] = {"minute", 3600, 60}, [3] = {"hour", 86400, 3600} } function View:GetTime(stime) local lapsed = difftime(time(), stime) if lapsed < 86400 then -- if we're still in the same day... for _,span in ipairs(TimeSpan) do if lapsed < span[2] then local timespan = math.floor(lapsed/span[3]) if timespan == 1 then timespan = timespan .." ".. span[1] else timespan = timespan .. " ".. span[1].."s" end return timespan.. " ago" end end end return date("%I:%M %p %b %d", stime) end local LDBFeed = LibStub("LibDataBroker-1.1"):NewDataObject("Squawk", {type = "data source", text = "Awk!"}) local QTip = LibStub("LibQTip-1.0") local QTipClick = LibStub("LibQTipClick-1.0") local tooltip = {} local function HideTooltip() if MouseIsOver(tooltip) then return end tooltip:SetScript("OnLeave", nil) tooltip:Hide() QTip:Release(tooltip) tooltip = nil end local function ReplyToMe(cell, Owner, event) View:Print("Replying to @"..Owner) end local function AddLine(tooltip, Line, Number, Owner, TimeStamp) local x,y if #Line < 79 then y,x = tooltip:AddNormalLine(Number, Owner, Line, TimeStamp) else y,x = tooltip:AddNormalLine(Number, Owner, Line:sub(1, 80).."-", TimeStamp) AddLine(tooltip, Line:sub(81)) end if not TimeStamp then return end -- Now add the reply clickback tooltip:SetCell(y, 5, " ", Owner) tooltip.lines[y].cells[5]:SetBackdrop({bgFile= "Interface\\Addons\\Squawk\\reply"}) if not tooltip.lines[y].cells[5]:GetScript("OnHide") then tooltip.lines[y].cells[5]:SetScript("OnHide", function(self) self:SetBackdrop(nil) self:SetScript("OnHide", nil) end) end -- Reply clickback finished end function LDBFeed:OnEnter() tooltip = QTipClick:Acquire("Squawk",5, "LEFT", "CENTER", "LEFT", "RIGHT", "RIGHT") tooltip:Clear() tooltip:SetCallback("OnMouseDown", ReplyToMe) self.tooltip = tooltip for i,squawk in ipairs(Squawks:GetLast10()) do local head = true local message = {strsplit("\n",squawk.Message)} for _,line in ipairs(message) do if head then AddLine(tooltip, line, i..".", squawk.Owner, View:GetTime(squawk.Time)) head = false else AddLine(tooltip, line) end end end tooltip:SmartAnchorTo(self) tooltip:SetScript("OnLeave", HideTooltip) tooltip:Show() end function LDBFeed:OnLeave() HideTooltip() end --[[ function LDBFeed:OnClick(button) editbox:ClearAllPoints() editbox:SetPoint(GetTipAnchor(self)) editbox:Show() end local function GetTipAnchor(frame) if not x or not y then return "TOPLEFT", frame, "BOTTOMLEFT" end local hhalf = (x > UIParent:GetWidth()*2/3) and "RIGHT" or (x < UIParent:GetWidth()/3) and "LEFT" or "" local vhalf = (y > UIParent:GetHeight()/2) and "TOP" or "BOTTOM" return vhalf..hhalf, frame, (vhalf == "TOP" and "BOTTOM" or "TOP")..hhalf end local editbox = CreateFrame('EditBox', nil, UIParent) editbox:Hide() editbox:SetAutoFocus(true) editbox:SetHeight(32) editbox:SetWidth(350) editbox:SetFrameStrata("HIGH") editbox:SetFontObject('GameFontHighlightSmall') lib.editbox = editbox editbox:SetScript("OnEscapePressed", editbox.ClearFocus) editbox:SetScript("OnEnterPressed", editbox.ClearFocus) editbox:SetScript("OnEditFocusLost", editbox.Hide) editbox:SetScript("OnEditFocusGained", editbox.HighlightText) editbox:SetScript("OnTextChanged", function(self) self:SetText(self:GetParent().val) self:HighlightText() end) local left = editbox:CreateTexture(nil, "BACKGROUND") left:SetWidth(8) left:SetHeight(20) left:SetPoint("LEFT", -5, 0) left:SetTexture("Interface\\Common\\Common-Input-Border") left:SetTexCoord(0, 0.0625, 0, 0.625) local right = editbox:CreateTexture(nil, "BACKGROUND") right:SetWidth(8) right:SetHeight(20) right:SetPoint("RIGHT", 0, 0) right:SetTexture("Interface\\Common\\Common-Input-Border") right:SetTexCoord(0.9375, 1, 0, 0.625) local center = editbox:CreateTexture(nil, "BACKGROUND") center:SetHeight(20) center:SetPoint("RIGHT", right, "LEFT", 0, 0) center:SetPoint("LEFT", left, "RIGHT", 0, 0) center:SetTexture("Interface\\Common\\Common-Input-Border") center:SetTexCoord(0.0625, 0.9375, 0, 0.625) function lib.OpenEditbox(self) editbox:SetText(self.val) editbox:SetParent(self) editbox:SetPoint("LEFT", self) editbox:SetPoint("RIGHT", self) editbox:Show() end --]]