local _,rematch = ... local L = rematch.localization local C = rematch.constants local settings = rematch.settings --[[ Panel Tabs ]] RematchPanelTabMixin = {} function RematchPanelTabMixin:OnLoad() self.isSelected = false self:Update() end function RematchPanelTabMixin:OnEnter() self.Highlight:Show() self.Text:SetTextColor(1,1,1) end function RematchPanelTabMixin:OnLeave() self.Highlight:Hide() if self.isSelected then self.Text:SetTextColor(1,1,1) else self.Text:SetTextColor(1,0.82,0) end end function RematchPanelTabMixin:OnMouseDown() self.Highlight:Hide() self.isDown = true self:Update() end function RematchPanelTabMixin:OnMouseUp() if GetMouseFocus()==self then self.Highlight:Show() end self.isDown = false self:Update() end -- Top = tabs flipped to top of dialog; Selected = current active tab; Down = mouse is down on the tab -- {anchor,left,right,top,bottom,yoff} local tabLayouts = { Top = {Selected = {Down = {"BOTTOMLEFT",0,0.53125,0.328125,0,6}, Up = {"BOTTOMLEFT",0,0.53125,0.328125,0,4}}, Unselected = {Down = {"BOTTOMLEFT",0,0.53125,0.703125,0.375,1}, Up = {"BOTTOMLEFT",0,0.53125,0.703125,0.375,-1}}}, Bottom = {Selected = {Down = {"TOPLEFT",0,0.53125,0,0.328125,-5}, Up = {"TOPLEFT",0,0.53125,0,0.328125,-3}}, Unselected = {Down = {"TOPLEFT",0,0.53125,0.375,0.703125,0}, Up = {"TOPLEFT",0,0.53125,0.375,0.703125,2}}} } function RematchPanelTabMixin:Update() local left,right,top,bottom local r,g,b local yoff local layout = tabLayouts[self.isTopTab and "Top" or "Bottom"][self.isSelected and "Selected" or "Unselected"][self.isDown and "Down" or "Up"] local anchor,left,right,top,bottom,yoff = layout[1],layout[2],layout[3],layout[4],layout[5],layout[6] if self.anchor~=anchor then -- don't reanchor textures every update, just when it's moving from bottom to top or vice versa self.anchor = anchor self.Back:ClearAllPoints() self.Highlight:ClearAllPoints() self.Back:SetPoint(anchor) self.Highlight:SetPoint(anchor) end if self.isSelected or self.isDown or GetMouseFocus()==self then self.Text:SetTextColor(1,1,1) else self.Text:SetTextColor(1,0.82,0) end self.Back:SetTexCoord(left,right,top,bottom) self.Highlight:SetTexCoord(left,right,top,bottom) self.Text:SetPoint("CENTER",0,yoff) end --[[ Team Tabs ]] RematchTeamTabMixin = {} function RematchTeamTabMixin:OnEnter() rematch.textureHighlight:Show(self.Icon,self.Background) local group = self.groupID and rematch.savedGroups[self.groupID] if group then local numTeams = group.teams and #group.teams or 0 rematch.tooltip:ShowSimpleTooltip(self,rematch.utils:GetFormattedGroupName(self.groupID),format(L["%s%d %s"],C.HEX_WHITE,numTeams,numTeams==1 and L["Team"] or L["Teams"])) end if self.groupID and rematch.dragFrame:GetCursorInfo()==C.CURSOR_TYPE_TEAM then rematch.teamTabs.GlowTab:SetPoint("TOPLEFT",self,"TOPLEFT") rematch.teamTabs.GlowTab:Show() end end function RematchTeamTabMixin:OnLeave() rematch.textureHighlight:Hide() rematch.tooltip:Hide() rematch.teamTabs.GlowTab:Hide() end function RematchTeamTabMixin:OnMouseDown() rematch.textureHighlight:Hide() end function RematchTeamTabMixin:OnMouseUp(button) if GetMouseFocus()==self then rematch.textureHighlight:Show(self.Icon,self.Background) end end function RematchTeamTabMixin:OnClick(button) if rematch.dragFrame:GetCursorInfo() then -- if either team or group on cursor if self.groupID and rematch.dragFrame:GetCursorInfo()==C.CURSOR_TYPE_TEAM then -- but only handle teams (can't drop groups on tabs) rematch.dragFrame:HandleReceiveDrag(self) else rematch.dragFrame:ClearCursor() -- group is on cursor, clear it off cursor end return elseif button=="RightButton" and self.groupID then rematch.dialog:Hide() rematch.menus:Show("GroupMenu",self,self.groupID,"cursor") elseif self.groupID and rematch.savedGroups[self.groupID] then -- clicking team tab with a groupID expands that group if rematch.layout:GetView()~="teams" then rematch.layout:ChangeView("teams") -- go to teams tab if not already there end local wasSearching = rematch.teamsPanel.List:IsSearching() -- team tabs should collapse if they're expanded and in view if rematch.teamsPanel.List:IsHeaderExpanded(self.groupID) and rematch.teamsPanel.List:IsDataInView(self.groupID) then rematch.teamsPanel.List:ToggleHeader(self.groupID) else -- otherwise they should be expanded and blinged rematch.teamsPanel.List:ExpandHeader(self.groupID,true) rematch.teamsPanel.List:BlingData(self.groupID) end if wasSearching then -- ExpandHeader will forcibly clear search; this resets it cleanly rematch.teamsPanel.Top.SearchBox.Clear:Click() end PlaySound(C.SOUND_HEADER_CLICK) elseif not self.groupID then -- this is a new group tab, show dialog rematch.dialog:ShowDialog("EditGroup",{}) end end