diff --git a/api/config.lua b/api/config.lua index 4277792c..6e7fd0db 100644 --- a/api/config.lua +++ b/api/config.lua @@ -852,6 +852,8 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("gm", nil, "disable", "1") pfUI:UpdateConfig("gm", nil, "server", "elysium") + + pfUI:UpdateConfig("questlog", nil, "showQuestLevels", nil) end function pfUI:MigrateConfig() diff --git a/modules/skin.lua b/modules/skin.lua index ccb71b25..22397a9b 100644 --- a/modules/skin.lua +++ b/modules/skin.lua @@ -1,7 +1,6 @@ pfUI:RegisterModule("skin", function () -- movable default frames - EnableMovable("QuestLogFrame") EnableMovable("TradeFrame") EnableMovable("MerchantFrame") EnableMovable("DressUpFrame") diff --git a/pfUI.toc b/pfUI.toc index a6834cc7..3518a2ff 100644 --- a/pfUI.toc +++ b/pfUI.toc @@ -61,6 +61,7 @@ skins\blizzard\miscellaneous.lua skins\blizzard\gossip&quest.lua skins\blizzard\professions.lua skins\blizzard\auction.lua +skins\blizzard\questlog.lua # modules modules\gui.lua diff --git a/skins/blizzard/questlog.lua b/skins/blizzard/questlog.lua new file mode 100644 index 00000000..ec329f76 --- /dev/null +++ b/skins/blizzard/questlog.lua @@ -0,0 +1,180 @@ +pfUI:RegisterSkin("QuestLogFrame", function () + local border = tonumber(pfUI_config.appearance.border.default) + local bpad = border > 1 and border - 1 or 1 + + hooksecurefunc("QuestLog_OnShow", function() + QuestLogFrame:ClearAllPoints() + QuestLogFrame:SetPoint("TOPLEFT", 10, -104) + end, 1) + + StripTextures(QuestLogFrame, true) + CreateBackdrop(QuestLogFrame, nil, nil, .75) + QuestLogFrame:SetWidth(353) + QuestLogFrame:SetHeight(480) + EnableMovable(QuestLogFrame) + + SkinCloseButton(QuestLogFrameCloseButton, QuestLogFrame, -6, -6) + + QuestLogFrame:DisableDrawLayer("BACKGROUND") + + StripTextures(EmptyQuestLogFrame) + + QuestLogTitleText:ClearAllPoints() + QuestLogTitleText:SetPoint("TOP", 0, -10) + + QuestLogNoQuestsText:ClearAllPoints() + QuestLogNoQuestsText:SetPoint("TOP", QuestLogFrame, 0, -100) + + SkinButton(QuestLogFrameAbandonButton) + QuestLogFrameAbandonButton:ClearAllPoints() + QuestLogFrameAbandonButton:SetPoint("BOTTOMLEFT", QuestLogFrame, "BOTTOMLEFT", 10, 10) + SkinButton(QuestFramePushQuestButton) + QuestFramePushQuestButton:ClearAllPoints() + QuestFramePushQuestButton:SetPoint("LEFT", QuestLogFrameAbandonButton, "RIGHT", 2*bpad, 0) + SkinButton(QuestFrameExitButton) + QuestFrameExitButton:ClearAllPoints() + QuestFrameExitButton:SetPoint("LEFT", QuestFramePushQuestButton, "RIGHT", 2*bpad, 0) + + StripTextures(QuestLogListScrollFrame) + SkinScrollbar(QuestLogListScrollFrameScrollBar) + + StripTextures(QuestLogDetailScrollFrame) + SkinScrollbar(QuestLogDetailScrollFrameScrollBar) + + StripTextures(QuestLogExpandButtonFrame) + StripTextures(QuestLogCollapseAllButton) + SkinCollapseButton(QuestLogCollapseAllButton, true) + QuestLogCollapseAllButton:ClearAllPoints() + QuestLogCollapseAllButton:SetPoint("BOTTOMLEFT", QuestLogTitle1, "TOPLEFT", 2, 2) + + for i = 1, QUESTS_DISPLAYED do + SkinCollapseButton(_G["QuestLogTitle"..i]) + end + + for i = 1, MAX_OBJECTIVES do + local button = _G["QuestLogItem"..i] + StripTextures(button) + CreateBackdrop(button, nil, true, .5) + + local itemButton = CreateFrame("Button", button:GetName().."ItemButton", button) + itemButton:SetWidth(37) + itemButton:SetHeight(37) + itemButton:SetPoint("LEFT", 2, 0) + itemButton.icon = itemButton:CreateTexture("ARTWORK") + itemButton.icon:SetTexture(_G[button:GetName().."IconTexture"]:GetTexture()) + SkinButton(itemButton, nil, nil, nil, itemButton.icon, true) + itemButton.text = itemButton:CreateFontString("Status", "LOW", "GameFontNormal") + itemButton.text:SetFontObject(GameFontWhite) + itemButton.text:SetPoint("BOTTOMRIGHT", -4, 1) + itemButton.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + end + + hooksecurefunc("QuestLog_UpdateQuestDetails", function() + for i = 1, MAX_OBJECTIVES do + local button = _G["QuestLogItem"..i] + if button:IsShown() then + local itemButton = _G[button:GetName().."ItemButton"] + local texture = _G[button:GetName().."IconTexture"]:GetTexture() + local numItems = _G[button:GetName().."Count"]:GetText() or 1 + + itemButton.icon:SetTexture(texture) + itemButton.text:SetText(tonumber(numItems) > 1 and numItems) + _G[button:GetName().."Count"]:SetText() + end + end + end, 1) + + local texture = "StationeryTest" + if date("%m%d") == "0223" then texture = "Stationery_Val" end + local tex_Left = QuestLogDetailScrollFrame:CreateTexture("BACKGROUND") + tex_Left:SetTexture("Interface\\Stationery\\"..texture.."1") + tex_Left:SetPoint("TOPLEFT", 0, 0) + local tex_Right = QuestLogDetailScrollFrame:CreateTexture("BACKGROUND") + tex_Right:SetTexture("Interface\\Stationery\\"..texture.."2") + tex_Right:SetPoint("LEFT", tex_Left, "RIGHT", 0, 0) + + + + -- Custom stuff for Extended QuestLogFrame + _G.QUESTS_DISPLAYED = 23 + + local QuestLogFrameExpandButton = CreateFrame("Button", "QuestLogFrameExpandButton", QuestLogFrame, "UIPanelButtonTemplate") + SkinButton(QuestLogFrameExpandButton) + QuestLogFrameExpandButton:SetWidth(77) + QuestLogFrameExpandButton:SetHeight(21) + QuestLogFrameExpandButton:SetText(">>>") + QuestLogFrameExpandButton:SetPoint("BOTTOMRIGHT", QuestLogFrame, "BOTTOMRIGHT", -10, 10) + QuestLogFrameExpandButton:SetScript("OnClick", function() + if QuestLogDetailScrollFrame:IsShown() then + QuestLogDetailScrollFrame:Hide() + QuestLogDetailScrollFrame.hidden = true + else + QuestLogDetailScrollFrame:Show() + QuestLogDetailScrollFrame.hidden = false + end + end) + + EmptyQuestLogFrame:SetScript("OnShow", function() QuestLogFrameExpandButton:Disable() end) + EmptyQuestLogFrame:SetScript("OnHide", function() QuestLogFrameExpandButton:Enable() end) + + for i = 7, QUESTS_DISPLAYED do + local b = CreateFrame("Button", "QuestLogTitle"..i, QuestLogFrame, "QuestLogTitleButtonTemplate") + b:SetID(i) + b:SetPoint("TOPLEFT", _G["QuestLogTitle"..(i-1)], "BOTTOMLEFT", 0, 1) + SkinCollapseButton(_G["QuestLogTitle"..i]) + end + + QuestLogListScrollFrame:SetHeight(350) + QuestLogDetailScrollFrame:ClearAllPoints() + QuestLogDetailScrollFrame:SetPoint("TOPLEFT", QuestLogListScrollFrame, "TOPRIGHT", 30, 0) + QuestLogDetailScrollFrame:SetHeight(350) + QuestLogDetailScrollChildFrame:SetHeight(350) + QuestLogDetailScrollFrame:SetScript("OnHide", function() + QuestLogFrame:SetWidth(353) + QuestLogFrameExpandButton:SetText(">>>") + end) + QuestLogDetailScrollFrame:SetScript("OnShow", function() + QuestLogFrame:SetWidth(680) + QuestLogFrameExpandButton:SetText("<<<") + if QuestLogQuestTitle:GetText() == "Quest title" then + QuestLog_UpdateQuestDetails() + end + end) + + + local QuestLogFrameLevelsCheckButton = CreateFrame("CheckButton", "QuestLogFrameLevelsCheckButton", QuestLogFrame, "UICheckButtonTemplate") + QuestLogFrameLevelsCheckButton:SetChecked(pfUI_config.questlog.showQuestLevels) + QuestLogFrameLevelsCheckButton:SetPoint("BOTTOMLEFT", QuestLogCollapseAllButton, "TOPLEFT", 0, 10) + QuestLogFrameLevelsCheckButton:SetScript("OnClick", function() + pfUI_config.questlog.showQuestLevels = not pfUI_config.questlog.showQuestLevels + QuestLog_Update() + end) + QuestLogFrameLevelsCheckButtonText:SetText(T["Show quest levels"]) + SkinCheckbox(QuestLogFrameLevelsCheckButton, 24) + + + hooksecurefunc("QuestLog_Update", function() + if QuestLogCollapseAllButton.collapsed or QuestLogDetailScrollFrame.hidden then + QuestLogDetailScrollFrame:Hide() + end + + if QuestLogFrameLevelsCheckButton:GetChecked() then + local numEntries = GetNumQuestLogEntries() + local questIndex, text, level, questTag, isHeader + for i=1, QUESTS_DISPLAYED do + questIndex = i + FauxScrollFrame_GetOffset(QuestLogListScrollFrame) + if questIndex <= numEntries then + text, level, questTag, isHeader = GetQuestLogTitle(questIndex) + if not isHeader then + _G["QuestLogTitle"..i]:SetText(" ".."["..(questTag and level.."+" or level).."] "..text) + end + end + end + end + end, 1) + + QuestFrameExitButton:Hide() + + tex_Left:SetHeight(QuestLogDetailScrollFrame:GetHeight()) + tex_Right:SetHeight(QuestLogDetailScrollFrame:GetHeight()) +end)