Quantcast
--[[
##############################################################################
_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
        ___\///////////___________\///___________\/////////_____\///////////_#
##############################################################################
S U P E R - V I L L A I N - U I   By: Munglunch                              #
##############################################################################
##########################################################
LOCALIZED LUA FUNCTIONS
##########################################################
]]--
--[[ GLOBALS ]]--
local _G = _G;
local unpack 	= _G.unpack;
local select 	= _G.select;
local pairs 	= _G.pairs;
local string 	= _G.string;
--[[ STRING METHODS ]]--
local format = string.format;
--[[
##########################################################
GET ADDON DATA
##########################################################
]]--
local SV = _G.SVUI;
local L = SV.L;
local PLUGIN = select(2, ...);
local Schema = PLUGIN.Schema;
--[[
##########################################################
RECOUNT
##########################################################
]]--
local function NoColor(a)
  for p=1,a:GetNumRegions()do
    local q=select(p,a:GetRegions())
    if q:GetObjectType()=='Texture'then
      q:SetDesaturated(true)
      if q:GetTexture()=='Interface\\DialogFrame\\UI-DialogBox-Corner'then
        q:SetTexture(0,0,0,0)
        q:Die()
      end
    end
  end
end

local function StyleRecount()
  assert(Recount, "AddOn Not Loaded")

  function Recount:ShowReset()
    PLUGIN:LoadAlert(L['Reset Recount?'], function(self) Recount:ResetData() self:GetParent():Hide() end)
  end

  local function StyleFrame(frame)
    PLUGIN:ApplyFrameStyle(frame,"Transparent")
    frame.Panel:SetAllPoints()
    frame.Panel:SetPoint('TOPLEFT', frame, 'TOPLEFT', 0, -6)
    frame.CloseButton:SetPoint('TOPRIGHT', frame, 'TOPRIGHT', -1, -9)
    frame:SetBackdrop(nil)

    frame.TitleBackground = CreateFrame('Frame', nil, frame)
    frame.TitleBackground:SetFixedPanelTemplate("Default")
    frame.TitleBackground:SetPanelColor("class")
    frame.TitleBackground:SetPoint('TOP', frame, 'TOP', 0, -8)
    frame.TitleBackground.timeLapse = 0
    frame.TitleBackground:SetScript('OnUpdate', function(self,elapsed)
      self.timeLapse = self.timeLapse + elapsed
      if(self.timeLapse < 0.2) then
        return
      else
        self.timeLapse = 0
      end
      self:SetSize(frame:GetWidth() - 4, 22)
    end)
    frame.TitleBackground:SetFrameLevel(frame:GetFrameLevel())
    frame.Title:SetPoint('TOPLEFT', frame, 'TOPLEFT', 6, -12)
    NoColor(frame.CloseButton)
    if frame.ConfigButton then NoColor(frame.ConfigButton) end
    if frame.FileButton then NoColor(frame.FileButton) end
    if frame.LeftButton then NoColor(frame.LeftButton) end
    if frame.ResetButton then NoColor(frame.ResetButton) end
    if frame.RightButton then NoColor(frame.RightButton) end
    if frame.ReportButton then NoColor(frame.ReportButton) end
    if frame.SummaryButton then NoColor(frame.SummaryButton) end
  end

  local RecountFrames = {
    Recount.MainWindow,
    Recount.ConfigWindow,
    Recount.GraphWindow,
    Recount.DetailWindow,
  }

  for _, frame in pairs(RecountFrames) do
    if frame then
      StyleFrame(frame)
    end
  end

  PLUGIN:ApplyScrollFrameStyle(Recount_MainWindow_ScrollBarScrollBar)

  Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if PLUGIN:ValidateDocklet("Recount") then PLUGIN.Docklet:Show() end end)
  Recount.MainWindow.FileButton:HookScript('OnClick', function(self) if LibDropdownFrame0 then PLUGIN:ApplyFrameStyle(LibDropdownFrame0) end end)

  hooksecurefunc(Recount, 'ShowScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Show() end)
  hooksecurefunc(Recount, 'HideScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Hide() end)
  hooksecurefunc(Recount, 'CreateFrame', function(self, frame) StyleFrame(_G[frame]) end)

  hooksecurefunc(Recount, 'ShowReport', function(self)
    if Recount_ReportWindow.isStyled then return end
    Recount_ReportWindow.isStyled = true
    PLUGIN:ApplyFrameStyle(Recount_ReportWindow.Whisper)
    Recount_ReportWindow.ReportButton:SetButtonTemplate()
    PLUGIN:ApplyScrollBarStyle(Recount_ReportWindow_Slider)
    Recount_ReportWindow_Slider:GetThumbTexture():Size(6,6)
  end)
end
PLUGIN:SaveAddonStyle("Recount", StyleRecount)

function PLUGIN:Docklet_Recount(parent)
  if not Recount then return end
  local n=Recount.MainWindow.Panel;
  if n and not n.Panel then
    n:Show()
    n:SetFixedPanelTemplate('Transparent',true)
  end
  Recount.db.profile.Locked=true;
  Recount.db.profile.Scaling=1;
  Recount.db.profile.ClampToScreen=true;
  Recount.db.profile.FrameStrata='2-LOW'
  Recount.MainWindow:ClearAllPoints()
  Recount.MainWindow:SetAllPoints(parent)
  Recount:SetStrataAndClamp()
  Recount:LockWindows(true)
  Recount:ResizeMainWindow()
  Recount_MainWindow_ScrollBar:Hide()

  parent.Framelink = Recount.MainWindow
end