changeset 20:647cb45f5864

implemented DBG:AddDB()
author Andrew Knoll <andrewtknoll@gmail.com>
date Fri, 15 Mar 2013 03:02:01 -0400
parents ec910729e073
children f2038b9d4d9a
files LibModuleDBShare-1.0/LibModuleDBShare-1.0.lua
diffstat 1 files changed, 32 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/LibModuleDBShare-1.0/LibModuleDBShare-1.0.lua	Thu Mar 14 22:23:48 2013 -0400
+++ b/LibModuleDBShare-1.0/LibModuleDBShare-1.0.lua	Fri Mar 15 03:02:01 2013 -0400
@@ -60,6 +60,7 @@
 	group.syncDB.RegisterCallback(group, "OnProfileDeleted", "OnProfileDeleted");
 	group.syncDB.RegisterCallback(group, "OnProfileCopied", "OnProfileCopied");
 	group.syncDB.RegisterCallback(group, "OnProfileReset", "OnProfileReset");
+	group.squelchCallbacks = false;
 	LibModuleDBShare.groups[groupName] = group;
 	return group;
 end
@@ -75,11 +76,40 @@
 end
 
 --- Adds a database to the group.
--- @param db The name of the new DB group.
+-- @param db The database to add.
 -- @usage
 -- myAddonDBGroup:AddDB(MyAddon.db)
 function DBGroup:AddDB(db)
-
+	local syncProfile = self.syncDB:GetCurrentProfile();
+	
+	local shouldDeleteDefault = false; -- if not first DB, then default profile already handled
+	if type(self.profileTimestamp) == "nil" then
+		shouldDeleteDefault = true -- first DB added.. might not have default profile
+		self.profileTimestamp = 0;
+	end
+	self.squelchCallbacks = true;
+	for i, profile in pairs(db:GetProfiles()) do
+		if profile == "Default" then
+			shouldDeleteDefault = false;
+		end
+		self.syncDB:SetProfile(profile);
+	end
+	
+	if db.character.logoutTimestamp > self.profileTimestamp then
+		self.syncDB:SetProfile(db:GetCurrentProfile());
+		self.profileTimestamp = db.character.logoutTimestamp;
+	else
+		self.syncDB:SetProfile(syncProfile);
+	end
+	
+	if shouldDeleteDefault then
+		self.syncDB:DeleteProfile("Default");
+	end
+	self.squelchCallbacks = false;
+	
+	if self.syncDB:GetCurrentProfile() ~= syncProfile then
+		self:OnProfileChanged("OnProfileChanged", self.syncDB, self.syncDB:GetCurrentProfile());
+	end
 end
 
 -- callback handlers (new profiles are handled by OnProfileChanged)