You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
82 lines
2.4 KiB
local _, addon = ...
|
|
|
|
local LinearScrollUpdater = addon.LinearScrollUpdater;
|
|
|
|
local ag = addon.CreateActionGroup("TitleManager");
|
|
ag.repeatInterval = 0.125;
|
|
|
|
ag:SetButtonDescription("A", "Use");
|
|
ag:SetButtonDescription("B", "Return");
|
|
ag:SetButtonDescription("Y", "Sort");
|
|
|
|
function ag:Init()
|
|
local manager = Narci_TitleFrame;
|
|
self.frame = manager;
|
|
self.switch = Narci_TitleManager_Switch;
|
|
self.filter = manager.TitleList.FilterButton;
|
|
self.scrollFrame = manager.TitleList.ScrollFrame;
|
|
self.buttons = manager.TitleList.ScrollFrame.buttons;
|
|
self.maxIndex = #self.buttons;
|
|
self.tooltip = manager.TooltipFrame;
|
|
end
|
|
|
|
function ag:OnActiveCallback(mode)
|
|
self.i = 0;
|
|
C_Timer.After(0, function()
|
|
local pad1, width = addon.GamePadButtonPool:SetupButton("PAD1", "Use", self.frame, "TOPLEFT", self.frame, "BOTTOMLEFT", 20, 8);
|
|
if pad1 and width then
|
|
local pad2 = addon.GamePadButtonPool:SetupButton("PAD2", "Back", self.frame, "TOPLEFT", self.frame, "BOTTOMLEFT", 48 + width, 8);
|
|
local pad4 = addon.GamePadButtonPool:SetupButton("PAD4", "Sort", self.frame, "LEFT", self.filter, "RIGHT", -7, 5);
|
|
end
|
|
end);
|
|
addon.GamePadNavBar:SelectButtonByID(2);
|
|
end
|
|
|
|
function ag:Click()
|
|
if self.currentObj then
|
|
self.currentObj:Click("LeftButton");
|
|
return true
|
|
end
|
|
end
|
|
|
|
function ag:KeyDown(key)
|
|
if key == "PAD1" then
|
|
self:Click();
|
|
elseif key == "PAD2" then
|
|
self.switch:Close();
|
|
self.currentObj = nil;
|
|
elseif key == "PAD4" then
|
|
self.filter:Click();
|
|
end
|
|
end
|
|
|
|
function ag:KeyUp(key)
|
|
if LinearScrollUpdater:Stop() or key == "PAD4" then
|
|
self.tooltip:OnScrollStopped();
|
|
end
|
|
end
|
|
|
|
function ag:Navigate(x, y)
|
|
--↑↓←→
|
|
-- x > 0 PADDRIGHT, x < 0 PADDLEFT
|
|
-- y > 0 PADDUP, x < 0 PADDDOWN
|
|
if y > 0 then
|
|
if self.i < 2 then
|
|
LinearScrollUpdater:Start(self.scrollFrame, -240, true);
|
|
self.tooltip:PauseAndHide();
|
|
end
|
|
if self.i > 0 then
|
|
self.i = self.i - 1;
|
|
end
|
|
elseif y < 0 then
|
|
if self.i > 15 then
|
|
LinearScrollUpdater:Start(self.scrollFrame, 240, true);
|
|
self.tooltip:PauseAndHide();
|
|
end
|
|
if self.i < self.maxIndex then
|
|
self.i = self.i + 1;
|
|
end
|
|
end
|
|
self:Enter(self.buttons[self.i]);
|
|
return true
|
|
end
|