update changes
[QuestHelper.git] / hidden.lua
blob1ddd015bc0d85950f959fa30cf07c3af6aaaa1f6
1 QuestHelper_File["hidden.lua"] = "Development Version"
3 local function HiddenReason(obj)
4 local depends
5 for i, j in pairs(obj.after) do
6 if i.watched and not i:Known() then
7 if not depends then
8 depends = QHFormat("DEPENDS_ON_SINGLE", i:Reason(true))
9 elseif type(depends) == "string" then
10 depends = 2
11 else
12 depends = depends + 1
13 end
14 end
15 end
17 if depends then
18 if type(depends) == "string" then
19 return depends, false
20 else
21 return QHFormat("DEPENDS_ON_COUNT", depends), false
22 end
23 end
25 if obj.user_ignore == nil then
26 if obj.filter_level and QuestHelper_Pref.filter_level then
27 return QHText("FILTERED_LEVEL"), true, "level"
28 end
30 if obj.filter_zone and QuestHelper_Pref.filter_zone then
31 return QHText("FILTERED_ZONE"), true, "zone"
32 end
34 if obj.filter_done and QuestHelper_Pref.filter_done then
35 return QHText("FILTERED_COMPLETE"), true, "done"
36 end
38 if obj.filter_blocked and QuestHelper_Pref.filter_blocked then
39 return QHText("FILTERED_BLOCKED"), true, "blocked"
40 end
42 if obj.filter_watched and QuestHelper_Pref.filter_watched then
43 return QHText("FILTERED_UNWATCHED"), true, "watched"
44 end
45 elseif obj.user_ignore then
46 return QHText("FILTERED_USER"), true
47 end
49 return QHText("FILTERED_UNKNOWN"), false
50 end
52 function QuestHelper:PopulateHidden(menu)
53 local empty = true
55 for obj in pairs(self.to_add) do
56 if not obj:Known() then
57 reason, can_show, filter = HiddenReason(obj)
58 empty = false
60 local item = self:CreateMenuItem(menu, obj:Reason(true))
61 local menu2 = self:CreateMenu()
62 item:SetSubmenu(menu2)
64 local item2 = self:CreateMenuItem(menu2, reason)
66 if can_show then
67 local menu3 = self:CreateMenu()
68 item2:SetSubmenu(menu3)
69 local item3 = self:CreateMenuItem(menu3, QHText("HIDDEN_SHOW"))
70 item3:SetFunction(function (obj) obj.user_ignore = false end, obj)
72 if filter then
73 item3 = self:CreateMenuItem(menu3, QHFormat("DISABLE_FILTER", QHText("FILTER_"..string.upper(filter))))
74 item3:SetFunction(function (filter) QuestHelper_Pref["filter_"..filter] = false end, filter)
75 end
77 -- I'd add an option to adjust the level filter, but I can't tell what value would be required.
78 end
79 end
80 end
82 if empty then
83 self:CreateMenuItem(menu, QHText("HIDDEN_NONE"))
84 end
85 end
87 function QuestHelper:ShowHidden()
88 local menu = self:CreateMenu()
90 self:CreateMenuTitle(menu, QHText("HIDDEN_TITLE"))
91 self:PopulateHidden(menu)
92 menu:ShowAtCursor()
93 end