# HG changeset patch
# User wobin
# Date 1240423902 -36000
# Node ID 2231fd3f139bddfb9c880fbcbe572933bce086d6
# Parent c535960b1245442d2573f8027faed21a6674337a
Qtip added for LDB
diff -r c535960b1245 -r 2231fd3f139b .pkgmeta
--- a/.pkgmeta Sun Apr 19 02:50:40 2009 +1000
+++ b/.pkgmeta Thu Apr 23 04:11:42 2009 +1000
@@ -1,10 +1,24 @@
package-as: Squawk
externals:
- Libs/LibStub: svn://svn.wowace.com/wow/ace3/mainline/trunk/LibStub
- Libs/CallbackHandler-1.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/CallbackHandler-1.0
- Libs/AceAddon-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0
- Libs/AceConsole-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0
- Libs/AceDB-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0
- Libs/AceEvent-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
- Libs/AceLocale-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0
+ Libs/LibStub:
+ url: svn://svn.wowace.com/wow/libstub/mainline/trunk
+ tag: latest
+ Libs/CallbackHandler-1.0:
+ url: svn://svn.wowace.com/wow/ace3/mainline/trunk/CallbackHandler-1.0
+ tag: latest
+ Libs/AceAddon-3.0:
+ url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0
+ tag: latest
+ Libs/AceConsole-3.0:
+ url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0
+ tag: latest
+ Libs/AceDB-3.0:
+ url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0
+ tag: latest
+ Libs/AceEvent-3.0:
+ url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
+ tag: latest
+ Libs/LibQTip-1.0:
+ url: svn://svn.wowace.com/wow/libqtip-1-0/mainline/trunk
+ tag: latest
diff -r c535960b1245 -r 2231fd3f139b Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua Thu Apr 23 04:11:42 2009 +1000
@@ -0,0 +1,90 @@
+
+assert(LibStub, "LibDataBroker-1.1 requires LibStub")
+assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0")
+
+local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4)
+if not lib then return end
+oldminor = oldminor or 0
+
+
+lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
+lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {}
+local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks
+
+if oldminor < 2 then
+ lib.domt = {
+ __metatable = "access denied",
+ __index = function(self, key) return attributestorage[self] and attributestorage[self][key] end,
+ }
+end
+
+if oldminor < 3 then
+ lib.domt.__newindex = function(self, key, value)
+ if not attributestorage[self] then attributestorage[self] = {} end
+ if attributestorage[self][key] == value then return end
+ attributestorage[self][key] = value
+ local name = namestorage[self]
+ if not name then return end
+ callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self)
+ callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self)
+ callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self)
+ callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self)
+ end
+end
+
+if oldminor < 2 then
+ function lib:NewDataObject(name, dataobj)
+ if self.proxystorage[name] then return end
+
+ if dataobj then
+ assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table")
+ self.attributestorage[dataobj] = {}
+ for i,v in pairs(dataobj) do
+ self.attributestorage[dataobj][i] = v
+ dataobj[i] = nil
+ end
+ end
+ dataobj = setmetatable(dataobj or {}, self.domt)
+ self.proxystorage[name], self.namestorage[dataobj] = dataobj, name
+ self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj)
+ return dataobj
+ end
+end
+
+if oldminor < 1 then
+ function lib:DataObjectIterator()
+ return pairs(self.proxystorage)
+ end
+
+ function lib:GetDataObjectByName(dataobjectname)
+ return self.proxystorage[dataobjectname]
+ end
+
+ function lib:GetNameByDataObject(dataobject)
+ return self.namestorage[dataobject]
+ end
+end
+
+if oldminor < 4 then
+ local next = pairs(attributestorage)
+ function lib:pairs(dataobject_or_name)
+ local t = type(dataobject_or_name)
+ assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)")
+
+ local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
+ assert(attributestorage[dataobj], "Data object not found")
+
+ return next, attributestorage[dataobj], nil
+ end
+
+ local ipairs_iter = ipairs(attributestorage)
+ function lib:ipairs(dataobject_or_name)
+ local t = type(dataobject_or_name)
+ assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)")
+
+ local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
+ assert(attributestorage[dataobj], "Data object not found")
+
+ return ipairs_iter, attributestorage[dataobj], 0
+ end
+end
diff -r c535960b1245 -r 2231fd3f139b Squawk.lua
--- a/Squawk.lua Sun Apr 19 02:50:40 2009 +1000
+++ b/Squawk.lua Thu Apr 23 04:11:42 2009 +1000
@@ -81,7 +81,7 @@
local o = {}
o.Owner = Owner or UnitName("player")
o.Message = Message
- o.Time = os.time()
+ o.Time = time()
local reply, to = strsplit("@", ((strsplit(" ", Message))))
if reply == "" then
o.ReplyTo = to
@@ -116,6 +116,10 @@
return Settings.Private
end
+function Settings:TogglePrivate()
+ Settings.Private = not Settings.Private
+end
+
function Settings:AddFollower(Name)
Settings.Follower[Name] = 1
self:RemovePending(Name)
@@ -205,32 +209,36 @@
end
function Controller:AddANewSquawk(Name, Message, Source)
- if not Model.Blocked[Name] then
+ if not Settings.Blocked[Name] then
if Source == "WHISPER" then
- if Model.Requested[Name] then -- We've been approved offline!
- Model:AddFollowing(Name)
+ if Settings.Requested[Name] then -- We've been approved offline!
+ Settings:AddFollowing(Name)
end
- if not Model.Following[Name] then -- If we're no longer following this person
+ if not Settings.Following[Name] then -- If we're no longer following this person
self:SendMessageToTarget(Name, "#Unfollow|"..UnitName("player"))
return
end
-
- table.insert(Model.Squawks, Squawk:new(Message, Name))
- View:UpdateSquawkList()
+ end
+
+ if Source == "GUILD" and Name == UnitName("player") then
+ return
end
+
+ table.insert(Model.Squawks, Squawk:new(Message, Name))
+ View:UpdateSquawkList()
end
end
function Controller:SendNewSquawk(Message)
- if not Model:IsPrivate() then
+ if not Settings:IsPrivate() then
self:SendMessageToGuild("#Squawk|"..UnitName("player").."|"..Message)
end
self:AddANewSquawk(UnitName("player"), Message)
- for name, _ in pairs(Model.Following) do
+ for name, _ in pairs(Settings.Following) do
self:SendMessageToTarget(name, "#Squawk|"..UnitName("player").."|"..Message)
end
end
@@ -243,8 +251,14 @@
View:NotifyOfPendingRequest(Name)
end
+function Controller:ApprovePendingRequest(Name)
+ Settings:AddFollower(Name)
+ View:NotifyOfNewFollower(Name)
+ self:SendMessageToTarget(Name, "#Follow|"..UnitName("player"))
+end
+
function Controller:SendMessageToTarget(Name, Message)
- self:SendCommMessage("Squawk", Message, "WHISPER", Name, "BULK")
+ self:SendCommMessage("Squawk", Message, "WHISPER", Name)
end
function Controller:SendMessageToGuild(Message)
@@ -259,9 +273,10 @@
["#Request"] = Controller.TheyWantToFollowMe,
}
-function Controller:ReceiveMessage(Prefix, Message, Distribution, Sender)
+function Controller:ReceiveMessage(Message, Distribution, Sender)
local command, name, info = strsplit("|",Message)
- Parse[command](self, name, info, Distribution)
+ View:Print(Distribution..":"..Message)
+ Parse[command](Controller, name, info, Distribution)
end
-- View --
@@ -316,3 +331,22 @@
self:Print(name)
end
end
+
+local LDBFeed = LibStub("LibDataBroker-1.1"):NewDataObject("Squawk", {type = "data source", text = "Awk!"})
+local QTip = LibStub("LibQTip-1.0")
+
+function LDBFeed:OnEnter()
+ local tooltip = QTip:Acquire("Squawk",3, "LEFT", "LEFT", "RIGHT")
+ self.tooltip = tooltip
+ tooltip:AddHeader('Name')
+ tooltip:AddLine('testUser', 'Squawk!', '3 min ago')
+ tooltip:SmartAnchorTo(self)
+ tooltip:Show()
+end
+
+function LDBFeed:OnTooltipShow()
+end
+
+function LDBFeed:OnLeave()
+ QTip:Release(self.tooltip)
+end
diff -r c535960b1245 -r 2231fd3f139b Squawk.toc
--- a/Squawk.toc Sun Apr 19 02:50:40 2009 +1000
+++ b/Squawk.toc Thu Apr 23 04:11:42 2009 +1000
@@ -1,4 +1,4 @@
-## Interface: 30000
+## Interface: 30100
## Title: Squawk
## Author: Wobin
## Notes: In no way related to a Twitter client... *shifty look*
diff -r c535960b1245 -r 2231fd3f139b Tests.lua
--- a/Tests.lua Sun Apr 19 02:50:40 2009 +1000
+++ b/Tests.lua Thu Apr 23 04:11:42 2009 +1000
@@ -16,38 +16,44 @@
--]]
--
-SquawkTester = LibStub("AceAddon-3.0", "AceComm-3.0", "AceConsole-3.0")
+SquawkTester = LibStub("AceAddon-3.0"):NewAddon("SquawkTester", "AceComm-3.0", "AceConsole-3.0")
local Test = SquawkTester
+local Controller = Squawk.Controller
+local Settings = Squawk.Model.UserSettings
function Test:OnInitialize()
- self:RegisterComm("Squawk", ReceiveMessage)
- self:RegisterSlashCommand("TestSquawk", "RunTests")
+ self:RegisterComm("Squawk", "ReceiveMessage")
+ self:RegisterChatCommand("TS", "RunTests")
+ self:Print("Initialising Tester")
+
+ self.Tests = { ["a"] = SquawkTester.AddPublicFollower,
+ ["b"] = SquawkTester.RemovePublicFollower,
+ ["c"] = SquawkTester.AddPrivateFollower,
+ ["d"] = SquawkTester.ApprovePendingRequest
+ }
end
-
-function Test:RunTests()
- AddPublicFollower()
- RemovePublicFollower()
- AddPrivateFollower()
- ApprovePendingRequest()
+function Test:RunTests(TestNumber)
+ self:Print(TestNumber)
+ self.Tests[TestNumber](Test)
end
function Test:AddPublicFollower()
- Squawk.Settings.Private = false
- Squawk.Controller:IWantToFollowThem(UnitName("player"))
+ Settings:TogglePrivate()
+ Controller:IWantToFollowThem(UnitName("player"))
end
function Test:RemovePublicFollower()
- Squawk.Controller:IWantToUnfollowThem(UnitName("player"))
+ Controller:IWantToUnfollowThem(UnitName("player"))
end
function Test:AddPrivateFollower()
- Squawk.Settings.Private = true
- Squawk.Controller:IWantToFollowThem(UnitName("player"))
+ Settings:TogglePrivate()
+ Controller:IWantToFollowThem(UnitName("player"))
end
function Test:ApprovePendingRequest()
- Squawk.Controller:ApprovePendingRequest(Name)
+ Controller:ApprovePendingRequest(UnitName("player"))
end
function Test:ReceiveMessage(Prefix, Message, Distribution, Sender)
diff -r c535960b1245 -r 2231fd3f139b embeds.xml
--- a/embeds.xml Sun Apr 19 02:50:40 2009 +1000
+++ b/embeds.xml Thu Apr 23 04:11:42 2009 +1000
@@ -1,11 +1,13 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+