Back to Home

ESO Lua File v101050

pregameandingame/tooltip/addontooltips.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
local AddOnManager = GetAddOnManager()
function ZO_Tooltip:LayoutAddOnTooltip(data, isSpecificCharacterSelected)
    --Things added to the top section stack downward
    local topSection = self:AcquireSection(self:GetStyle("addOnTopSection"))
    local _, _, _, description, enabled, _, isOutOfDate = AddOnManager:GetAddOnInfo(data.addOnIndex)
    -- Does the addon have a dependency?
    if data.hasDependencyError then
        topSection:AddLine(ZO_ERROR_COLOR:Colorize(GetString("SI_ADDONLOADSTATE", ADDON_STATE_DEPENDENCIES_DISABLED)))
    end
    
    -- Is the addon out of date?
    if isOutOfDate then
        topSection:AddLine(GetString("SI_ADDONLOADSTATE", ADDON_STATE_VERSION_MISMATCH))
    end
    
    -- Determine whether the addon is enabled or disabled
    local showEnabled
    if isSpecificCharacterSelected then
        local canEnable = HasAgreedToEULA(EULA_TYPE_ADDON_EULA) and not data.hasDependencyError
        showEnabled = canEnable and enabled
    else
        showEnabled = HasAgreedToEULA(EULA_TYPE_ADDON_EULA) and not data.allDisabled
    end
    if showEnabled then
        topSection:AddLine(GetString(SI_GAMEPAD_ADDON_MANAGER_TOOLTIP_ENABLED))
    else
        topSection:AddLine(GetString(SI_GAMEPAD_ADDON_MANAGER_TOOLTIP_DISABLED))
    end
    self:AddSection(topSection)
    --Add the addon name
    self:AddLine(data.addOnName, self:GetStyle("addOnName"))
    --Add the author
    local authorPair = self:AcquireStatValuePair(self:GetStyle("statValuePair"), self:GetStyle("fullWidth"))
    authorPair:SetStat(GetString(SI_GAMEPAD_ADDON_MANAGER_TOOLTIP_AUTHOR), self:GetStyle("statValuePairStat"))
    authorPair:SetValue(data.addOnAuthor, self:GetStyle("statValuePairValueSmall"))
    self:AddStatValuePair(authorPair)
    --Add the description if there is one
    if description ~= "" then
        local bodySection = self:AcquireSection(self:GetStyle("bodySection"))
        bodySection:AddLine(description, self:GetStyle("bodyDescription"))
        self:AddSection(bodySection)
    end
    -- Add the dependency text if there is any
    if data.addOnDependencyText ~= "" then
        local dependencySection = self:AcquireSection(self:GetStyle("bodySection"))
        dependencySection:AddLine(GetString(SI_ADDON_MANAGER_DEPENDENCIES), self:GetStyle("bodyHeader"))
        dependencySection:AddLine(data.addOnDependencyText, self:GetStyle("bodyDescription"))
        self:AddSection(dependencySection)
    end
    -- If a specific character is not selected, include additional information about the enabled state of the addon
    if not isSpecificCharacterSelected then
        local enableSection = self:AcquireSection(self:GetStyle("bodySection"))
        if data.allEnabled then
            enableSection:AddLine(GetString(SI_ADDON_MANAGER_TOOLTIP_ENABLED_ALL), self:GetStyle("bodyDescription"))
        elseif data.allDisabled then
            enableSection:AddLine(GetString(SI_ADDON_MANAGER_TOOLTIP_ENABLED_NONE), self:GetStyle("bodyDescription"))
        else
            enableSection:AddLine(GetString(SI_ADDON_MANAGER_TOOLTIP_ENABLED_SOME), self:GetStyle("bodyDescription"))
        end
        self:AddSection(enableSection)
    end
end
function ZO_Tooltip:LayoutModTooltip(data, imageIndex)
    --Things added to the top section stack downward
    local topSection = self:AcquireSection(self:GetStyle("addOnTopSection"))
    -- Mod Category
    local category = data:GetCategory()
    topSection:AddLine(GetString("SI_MODBROWSERCATEGORYTYPE", category))
    -- Mod Version
    local version = data:GetLatestVersion()
    topSection:AddLine(zo_strformat(SI_GAMEPAD_MOD_BROWSER_LISTING_TOOLTIP_VERSION, version))
    -- Last Updated
    topSection:AddLine(zo_strformat(SI_GAMEPAD_MOD_BROWSER_LISTING_TOOLTIP_LAST_UPDATED, data:GetFormattedLastUpdatedTime()))
    --Install State
    topSection:AddLine(data:GetInstallStateText())
    self:AddSection(topSection)
    --Add the mod name
    self:AddLine(data:GetTitle(), self:GetStyle("addOnName"))
    --Add the author
    local authorPair = self:AcquireStatValuePair(self:GetStyle("statValuePair"), self:GetStyle("fullWidth"))
    authorPair:SetStat(GetString(SI_GAMEPAD_ADDON_MANAGER_TOOLTIP_AUTHOR), self:GetStyle("statValuePairStat"))
    authorPair:SetValue(data:GetAuthor(), self:GetStyle("statValuePairValueSmall"))
    self:AddStatValuePair(authorPair)
    local numImages = data:GetNumImages()
    if numImages ~= nil then
        if numImages > 0 then
            --Show the image if it's ready, otherwise start loading the image and show a loading spinner
            if data:IsImageReady(imageIndex) then
                if imageIndex < numImages then
                    --If the current image is ready and there is a next image, preload it now
                    data:RequestLoadImage(imageIndex + 1)
                end
                local image = data:GetImage(imageIndex)
                local imageControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingImage"))
                imageControl:GetNamedChild("Image"):SetTextureFromGuiTexture(image)
                self:AddCustomControl(imageControl)
            else
                data:RequestLoadImage(imageIndex)
                local loadingControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingLoadingIcon"))
                self:AddCustomControl(loadingControl)
            end
        end
        --If there are at least 2 images, show the pips underneath
        if numImages > 1 then
            local function GetPipNarration()
                return zo_strformat(SI_SCREEN_NARRATION_MOD_BROWSER_IMAGE_FORMATTER, imageIndex, numImages)
            end
            local selectionIndicatorControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingSelectionIndicator"))
            local selectionIndicator = selectionIndicatorControl:GetNamedChild("Indicator").object
            selectionIndicator:SetButtonClickedEnabled(false)
            selectionIndicator:SetGrowthPadding(10)
            selectionIndicator:SetCount(numImages)
            selectionIndicator:SetSelectionByIndex(imageIndex)
            self:AddCustomControl(selectionIndicatorControl, GetPipNarration)
        end
    else
        --If we get here, we do not yet know how many images there are, so request the image (which will fetch the number of images as well) and show a loading spinner without the pips
        data:RequestLoadImage(imageIndex)
        local loadingControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingLoadingIcon"))
        self:AddCustomControl(loadingControl)
    end
    --Add the overview if there is one
    local overview = data:GetOverview()
    if overview ~= "" then
        local overviewSection = self:AcquireSection(self:GetStyle("bodySection"))
        overviewSection:AddLine(overview, self:GetStyle("bodyDescription"))
        self:AddSection(overviewSection)
    end
    --Add the description if there is one
    local description = data:GetDescription()
    if description ~= "" then
        local descriptionSection = self:AcquireSection(self:GetStyle("bodySection"))
        descriptionSection:AddLine(description, self:GetStyle("bodyDescription"))
        self:AddSection(descriptionSection)
    end
    local numDependencies = data:GetNumDependencies()
    if numDependencies > 0 then
        --Show the dependencies if they're ready, otherwise start loading the dependencies and show a loading spinner
        if data:AreDependenciesReady() then
            local dependencySection = self:AcquireSection(self:GetStyle("bodySection"))
            dependencySection:AddLine(GetString(SI_ADDON_MANAGER_DEPENDENCIES), self:GetStyle("bodyHeader"))
            dependencySection:AddLine(data:GetFormattedDependencyText(), self:GetStyle("bodyDescription"))
            self:AddSection(dependencySection)
        else
            data:RequestLoadDependencies()
            local loadingControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingLoadingIcon"))
            self:AddCustomControl(loadingControl)
        end
    end
end
function ZO_Tooltip:LayoutModListingReleaseTooltip(data, releaseIndex)
    --Things added to the top section stack downward
    local topSection = self:AcquireSection(self:GetStyle("addOnTopSection"))
    -- Mod Version
    local version = data:GetReleaseVersion(releaseIndex)
    topSection:AddLine(zo_strformat(SI_GAMEPAD_MOD_BROWSER_LISTING_TOOLTIP_VERSION, version))
    -- Creation Time
    topSection:AddLine(zo_strformat(SI_GAMEPAD_MOD_BROWSER_LISTING_RELEASE_NOTE_TOOLTIP_CREATED, data:GetFormattedReleaseCreationTime(releaseIndex)))
    self:AddSection(topSection)
    -- Show the release note if it's ready, otherwise request to load it and show the loading spinner
    if data:IsReleaseNoteReady(releaseIndex) then
        local releaseNoteSection = self:AcquireSection(self:GetStyle("bodySection"))
        releaseNoteSection:AddLine(data:GetReleaseNote(releaseIndex), self:GetStyle("bodyDescription"))
        self:AddSection(releaseNoteSection)
    else
        data:RequestLoadReleaseNote(releaseIndex)
        local loadingControl = self:AcquireCustomControl(self:GetStyle("modBrowserListingLoadingIcon"))
        self:AddCustomControl(loadingControl)
    end
end