diff Lists.lua @ 68:a177b863ed6c

Event chaining from the data storage to the GUI elements
author John@Yosemite-PC
date Wed, 28 Mar 2012 23:29:36 -0400
parents 93acdcd6ace5
children 236117ab8a49
line wrap: on
line diff
--- a/Lists.lua	Tue Mar 27 10:19:48 2012 -0400
+++ b/Lists.lua	Wed Mar 28 23:29:36 2012 -0400
@@ -84,6 +84,8 @@
 local setmetatable=setmetatable
 setfenv(1,bsk)
 
+local changeListener = nil -- todo: really should not be scoped like this
+
 ListEntry = 
 {
     index = 0.0,
@@ -530,6 +532,7 @@
         -- todo: check that they're not already reserved
         self.active.reserve[le:GetId()] = true
     end
+    changeListener:DataEvent() -- todo: revisit
 end
 -- todo: remove reserve
 function PersonList:IsActive(id) -- todo: support LE as input - saves IsActive(le:GetId())
@@ -612,6 +615,9 @@
     return ctime
 end
 
+function SetChangeListener(object)
+    changeListener = object -- todo: needs correctness checking, at a minimum
+end
 function InitiateChange(finalizeAction,acceptor,arg)
     local change = {}
     change.time = GetSafeTimestamp()
@@ -620,6 +626,9 @@
 
     if acceptor[finalizeAction](acceptor,arg,change.time) then
         table.insert(db.profile.changes,change)
+        if changeListener then
+            changeListener:DataEvent(change)
+        end
         -- TODO: broadcast
         return arg
     else