0.1.218: Mail: Posteingang in 7er-Paketen mit Ladebalken (Absturz bei viel Post)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016onJCSHLwhs9udhC9ZLzk9
This commit is contained in:
Lacustat
2026-11-01 09:51:50 +01:00
co-authored by Claude Sonnet 5.5
parent 75e564388c
commit fece5d4148
4 changed files with 79 additions and 3 deletions
+30
View File
@@ -317,6 +317,28 @@ local function BuildInbox(parent)
f.scroll:SetPoint("TOPLEFT", f, "TOPLEFT", 0, -70)
f.scroll:SetPoint("BOTTOMLEFT", f, "BOTTOMLEFT", 0, 36)
f.scroll:SetWidth(LIST_W)
-- Ladebalken ueber dem Postfach, solange grosse Postfaecher in Haeppchen geholt werden
f.load = CreateFrame("Frame", nil, f)
f.load:SetPoint("TOPLEFT", f, "TOPLEFT", 0, -70)
f.load:SetPoint("BOTTOMLEFT", f, "BOTTOMLEFT", 0, 36)
f.load:SetWidth(LIST_W)
f.load:SetFrameLevel((f.scroll:GetFrameLevel() or 1) + 20)
f.load:EnableMouse(true)
f.load.bg = f.load:CreateTexture(nil, "BACKGROUND")
f.load.bg:SetAllPoints(f.load)
f.load.bg:SetColorTexture(0.02, 0.02, 0.04, 0.82)
f.load.text = UI.CreateLabel(f.load, "", { size = 12, color = "goldLight", justify = "CENTER" })
f.load.text:SetPoint("CENTER", f.load, "CENTER", 0, 14)
f.load.track = f.load:CreateTexture(nil, "ARTWORK")
f.load.track:SetPoint("CENTER", f.load, "CENTER", 0, -8)
f.load.track:SetWidth(LIST_W - 40)
f.load.track:SetHeight(10)
f.load.track:SetColorTexture(0.15, 0.13, 0.08, 1)
f.load.fill = f.load:CreateTexture(nil, "OVERLAY")
f.load.fill:SetPoint("LEFT", f.load.track, "LEFT", 0, 0)
f.load.fill:SetHeight(10)
f.load.fill:SetColorTexture(0.9, 0.7, 0.25, 1)
f.load:Hide()
f.empty = UI.CreateLabel(f.scroll.child, T("MAIL_INBOX_EMPTY"), { size = 12, color = "textDim" })
f.empty:SetPoint("TOPLEFT", f.scroll.child, "TOPLEFT", 4, -6)
@@ -546,6 +568,14 @@ local function BuildInbox(parent)
end
function f.Refresh()
local loading, done, total = Mail.Loading()
if loading then
f.load.text:SetText(string.format(T("MAIL_LOADING"), done, total))
f.load.fill:SetWidth(math.max(1, (LIST_W - 40) * done / math.max(total, 1)))
f.load:Show()
else
f.load:Hide()
end
local list = Mail.ReadInbox()
local busy = Mail.busy
local takeable = 0