diff gui.lua @ 118:ec5174529e0f

Make more use of g_loot.raiders in the GUI rather than calling GRRI each time.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Thu, 16 Aug 2012 23:04:29 -0400
parents fc2ff128835a
children fb4bda3ad05c
line wrap: on
line diff
--- a/gui.lua	Thu Aug 16 20:00:03 2012 -0400
+++ b/gui.lua	Thu Aug 16 23:04:29 2012 -0400
@@ -160,8 +160,13 @@
 			cols = {},
 		}
 		if real.kind == 'loot' then
-			e.dperson = real.person_realm and
-				(real.person .. FOREIGN_SERVER_LABEL) or real.person
+			if real.person_realm then
+				e.dperson = real.person .. FOREIGN_SERVER_LABEL
+				e.fperson = real.person .. "-" .. real.person_realm
+			else
+				e.dperson = real.person
+				e.fperson = real.person
+			end
 		end
 		setmetatable(e,e)
 		rawset(t,index,e)
@@ -1122,8 +1127,7 @@
 	elseif kind == 'loot' and column == 2 then
 		tt:SetOwner (cellFrame, "ANCHOR_BOTTOMRIGHT", -50, 5)
 		tt:ClearLines()
-		tt:AddLine(("%s Loot:"):format(e.person_realm
-			and (e.person .. "-" .. e.person_realm) or e.person))
+		tt:AddLine(e.fperson .. " Loot:")
 		local counter = 0
 		for i,e2 in ipairs(data) do
 			if e2.person == e.person then  -- would be awesome to test for alts
@@ -1200,15 +1204,16 @@
 
 	elseif kind == 'loot' and column == 2 then
 		local ddep = gui.dropdown.eoi_player
-		ddep[1].text = e.person -- FIXME realm this too
+		ddep[1].text = e.fperson
 		local raiders = {}
-		for i = 1, GetNumRaidMembers() do
-			tinsert (raiders, (GetRaidRosterInfo(i)))
-		end
-		table.sort(raiders)
-		for i = 1, #raiders do
-			local name = raiders[i]
-			raiders[i] = gen_dd_entry (name, eoi_dropdownfuncs, 'df_REASSIGN', name)
+		for i, name, info in addon:sorted_raiders_iter() do
+			raiders[i] = gen_dd_entry (info.fname or name, eoi_dropdownfuncs,
+				'df_REASSIGN', name)
+			if info.online == 'offline' then
+				raiders[i].colorCode = GRAY_FONT_COLOR_CODE
+			elseif info.online == 'no_longer' then
+				raiders[i].colorCode = RED_FONT_COLOR_CODE
+			end
 		end
 		tinsert (raiders, gen_dd_entry ("Enter name...", eoi_dropdownfuncs))
 		tinsert (raiders, gen_dd_entry (CLOSE, eoi_dropdownfuncs))
@@ -1510,15 +1515,15 @@
 		b:SetDisabled(st.Filter == player_filter_all)
 		specials:AddChild(b)
 
-		-- FIXME iterate over the new raiders table instead
 		local people = { "<nobody>" }
-		for i = 1, GetNumRaidMembers() do
-			tinsert(people,(GetRaidRosterInfo(i)))
-		end
-		table.sort(people)
 		local initial
-		for i,n in ipairs(people) do
-			if n == addon.sharder then initial = i end
+		for i, name, info in
+			addon:sorted_raiders_iter (--[[fullnames=]]true, 'online')
+		do
+			tinsert (people, name)
+			if name == addon.sharder then
+				initial = i + 1   -- +1 offset for "nobody"
+			end
 		end
 		b = mkbutton("Dropdown", nil, "",
 			[[If set, items received by this person will be automatically marked as disenchanted.]])