Quantcast

Made the expand/collapse all button work.

pschifferer [03-06-09 - 04:55]
Made the expand/collapse all button work.
Added a check for reagent in the tooltip callback.
Made the program stop de-selecting the current selection when a tradeskill event fires.
Filename
CauldronMain.lua
CauldronMainUI.lua
diff --git a/CauldronMain.lua b/CauldronMain.lua
index 186e10b..7183df0 100644
--- a/CauldronMain.lua
+++ b/CauldronMain.lua
@@ -276,8 +276,9 @@ function Cauldron:OnSkillUpdate()
 		if not Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[CURRENT_TRADESKILL] then
 			return;
 		end
-
-		Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[CURRENT_TRADESKILL].window.selected = 0;
+
+		-- TODO check if the skill rank has changed, and unselect
+		-- Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[CURRENT_TRADESKILL].window.selected = 0;

 		Cauldron:UpdateSkills();
 		CauldronQueue:CalculateAllRequiredItems(Cauldron.db.realm.userdata[Cauldron.vars.playername].queue);
@@ -796,10 +797,12 @@ function Cauldron:SetTradeSkillItem(tooltip, itemIndex, reagentIndex)
 	if reagentIndex then
 		local skillInfo = Cauldron:GetSkillInfoByIndex(itemIndex);
 		local reagentInfo = Cauldron:GetReagentInfoByIndex(itemIndex, reagentIndex);
-
-		-- let the user know if the reagent is a "non-key" reagent
-		if not reagentInfo.key then
-			tooltip:AddLine("|cff666666"..L["Available at vendor"].."|r");
+
+		if reagentInfo then
+    		-- let the user know if the reagent is a "non-key" reagent
+	    	if not reagentInfo.key then
+		    	tooltip:AddLine("|cff666666"..L["Available at vendor"].."|r");
+		    end
 		end
 	else
 --		link = GetTradeSkillItemLink(itemIndex);
diff --git a/CauldronMainUI.lua b/CauldronMainUI.lua
index 4c6737b..dc0984c 100644
--- a/CauldronMainUI.lua
+++ b/CauldronMainUI.lua
@@ -1894,13 +1894,34 @@ function Cauldron:CollapseAllButton_OnClick(button)
 		skillName = "Linked-"..skillName;
 	end

+    local expand = true;
+    local skillCount = 0;
+    local expandedCount = 0;
+    local collapsedCount = 0;
+
+    -- check if some items are expanded
+	for name, info in pairs(Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.skills) do
+		if info.expanded then
+		    expandedCount = expandedCount + 1;
+		else
+		    collapsedCount = collapsedCount + 1;
+		end
+		skillCount = skillCount + 1;
+	end
+
+	if expandedCount == 0 then
+	    expand = true;
+	elseif collapsedCount == 0 then
+	    expand = false;
+	end
+
 	-- reset all the expanded fields to false
 	for name, info in pairs(Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.skills) do
-		info.expanded = false;
+		info.expanded = expand;
 	end

 	-- unselect the selected skill
-	Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.selected = 0;
+	-- Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.selected = 0;

 	-- update the UI
 	Cauldron:UpdateSkillList();
@@ -1981,7 +2002,9 @@ function Cauldron:SkillItem_OnClick(frame, button, down)
 --@end-alpha@

 	-- select this frame
-	Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.selected = frame.skillIndex;
+	if frame.skillIndex then
+    	Cauldron.db.realm.userdata[Cauldron.vars.playername].skills[skillName].window.selected = frame.skillIndex;
+    end

 	-- update the UI
 	Cauldron:UpdateSkillList();