init
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster_Auctioning --
|
||||
-- http://www.curse.com/addons/wow/tradeskillmaster_auctioning --
|
||||
-- --
|
||||
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
|
||||
-- All Rights Reserved* - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
-- This file is to contain things that are common between different scan types.
|
||||
|
||||
local TSM = select(2, ...)
|
||||
local Manage = TSM:NewModule("Manage", "AceEvent-3.0")
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Auctioning") -- loads the localization table
|
||||
|
||||
local scanStatus = {}
|
||||
local GUI, Util, mode
|
||||
|
||||
function Manage:StartScan(GUIRef, options)
|
||||
GUI = GUIRef
|
||||
mode = GUI.mode
|
||||
Util = TSM[mode]
|
||||
GUI.OnAction = Manage.OnGUIEvent
|
||||
wipe(scanStatus)
|
||||
TSM.Log:Clear()
|
||||
|
||||
local scanList = Util:GetScanListAndSetup(GUI, options)
|
||||
GUI:UpdateSTData()
|
||||
if #scanList == 0 then
|
||||
GUI:Stopped()
|
||||
return
|
||||
end
|
||||
|
||||
if options and options.noScan then -- no scanning required
|
||||
Manage:StartNoScanScan(GUIRef, scanList)
|
||||
return
|
||||
end
|
||||
|
||||
GUI.statusBar:SetStatusText(L["Starting Scan..."])
|
||||
GUI.statusBar:UpdateStatus(0, 0)
|
||||
GUI.infoText:SetInfo(L["Running Scan..."])
|
||||
TSM.Scan:StartItemScan(scanList)
|
||||
end
|
||||
|
||||
function Manage:StartNoScanScan(GUIRef, scanList)
|
||||
GUI.infoText:SetInfo(L["Processing Items..."])
|
||||
GUI.statusBar:UpdateStatus(0, 0)
|
||||
TSMAPI:CancelFrame("auctioningNoScanProcessing")
|
||||
scanStatus.query = {1, 1}
|
||||
|
||||
local totalToScan = #scanList
|
||||
local function ProcessNoScanItems()
|
||||
local numLeft = #scanList
|
||||
for i=1, min(numLeft, 10) do
|
||||
Manage:ProcessScannedItem(tremove(scanList, 1), (i ~= min(numLeft, 10) and i ~= 1))
|
||||
Manage:UpdateStatus("scan", totalToScan-#scanList, totalToScan)
|
||||
end
|
||||
|
||||
if #scanList == 0 then
|
||||
TSMAPI:CancelFrame("auctioningNoScanProcessing")
|
||||
Manage:ScanComplete()
|
||||
end
|
||||
end
|
||||
TSMAPI:CreateTimeDelay("auctioningNoScanProcessing", 0, ProcessNoScanItems, 0.1)
|
||||
end
|
||||
|
||||
function Manage:OnGUIEvent(event)
|
||||
if event == "action" then
|
||||
Util:DoAction()
|
||||
elseif event == "skip" then
|
||||
Util:SkipItem()
|
||||
elseif event == "stop" then
|
||||
TSMAPI:CancelFrame("auctioningNoScanProcessing")
|
||||
TSMAPI.AuctionScan:StopScan()
|
||||
Util:Stop()
|
||||
end
|
||||
TSMAPI:CreateTimeDelay("aucManageSTUpdate", 0.01, GUI.UpdateAuctionsSTData)
|
||||
end
|
||||
|
||||
function Manage:ProcessScannedItem(itemString, noUpdate)
|
||||
Util:ProcessItem(itemString)
|
||||
if not noUpdate then
|
||||
GUI:UpdateSTData()
|
||||
end
|
||||
end
|
||||
|
||||
function Manage:ScanComplete(interrupted)
|
||||
if interrupted then
|
||||
Util:Stop(true)
|
||||
else
|
||||
local numToManage = Util:DoneScanning()
|
||||
TSMAPI:FireEvent("AUCTIONING:SCANDONE", {num=numToManage})
|
||||
if numToManage == 0 then
|
||||
Util:Stop()
|
||||
elseif TSM.db.global.scanCompleteSound ~= 1 then
|
||||
PlaySound(TSM.Options:GetScanCompleteSound(TSM.db.global.scanCompleteSound), "Master")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- these functions help display the status text which goes inside the statusbar
|
||||
local function IsStepStarted(step)
|
||||
return scanStatus[step] and scanStatus[step][1] and scanStatus[step][2]
|
||||
end
|
||||
local function IsStepDone(step)
|
||||
return IsStepStarted(step) and scanStatus[step][1] == scanStatus[step][2]
|
||||
end
|
||||
-- update the statusbar
|
||||
function Manage:UpdateStatus(statusType, current, total)
|
||||
scanStatus[statusType] = {current, total}
|
||||
if statusType == "query" then
|
||||
if total >= 0 then
|
||||
GUI.statusBar:SetStatusText(format(L["Preparing Filter %d / %d"], current, total))
|
||||
else
|
||||
GUI.statusBar:SetStatusText(format(L["Preparing Filters..."], current, total))
|
||||
end
|
||||
elseif IsStepDone("scan") and IsStepDone("manage") and IsStepDone("confirm") then -- scan complete
|
||||
GUI.statusBar:SetStatusText(L["Scan Complete!"])
|
||||
else
|
||||
local parts = {}
|
||||
if IsStepDone("scan") then
|
||||
tinsert(parts, L["Done Scanning"])
|
||||
elseif IsStepStarted("scan") then
|
||||
if IsStepStarted("page") then
|
||||
tinsert(parts, format(L["Scanning %d / %d (Page %d / %d)"], scanStatus.scan[1], scanStatus.scan[2], scanStatus.page[1], scanStatus.page[2]))
|
||||
else
|
||||
tinsert(parts, format(L["Scanning %d / %d"], scanStatus.scan[1], scanStatus.scan[2]))
|
||||
end
|
||||
end
|
||||
if IsStepDone("manage") then
|
||||
if mode == "Post" then
|
||||
tinsert(parts, L["Done Posting"])
|
||||
elseif mode == "Cancel" then
|
||||
tinsert(parts, L["Done Canceling"])
|
||||
end
|
||||
if IsStepStarted("confirm") then
|
||||
tinsert(parts, format(L["Confirming %d / %d"], scanStatus.confirm[1]+1, scanStatus.confirm[2]))
|
||||
else
|
||||
tinsert(parts, format(L["Confirming %d / %d"], 1, scanStatus.manage[2]))
|
||||
end
|
||||
elseif IsStepDone("scan") and IsStepStarted("manage") then
|
||||
if mode == "Post" then
|
||||
tinsert(parts, format(L["Posting %d / %d"], scanStatus.manage[1]+1, scanStatus.manage[2]))
|
||||
elseif mode == "Cancel" then
|
||||
tinsert(parts, format(L["Canceling %d / %d"], scanStatus.manage[1]+1, scanStatus.manage[2]))
|
||||
end
|
||||
if IsStepStarted("confirm") then
|
||||
tinsert(parts, format(L["Confirming %d / %d"], scanStatus.confirm[1]+1, scanStatus.confirm[2]))
|
||||
else
|
||||
tinsert(parts, format(L["Confirming %d / %d"], 1, scanStatus.manage[2]))
|
||||
end
|
||||
end
|
||||
GUI.statusBar:SetStatusText(table.concat(parts, " - "))
|
||||
end
|
||||
|
||||
if IsStepDone("query") then
|
||||
local scanCurrent = scanStatus.scan and scanStatus.scan[1] or 0
|
||||
local scanTotal = scanStatus.scan and scanStatus.scan[2] or 1
|
||||
local confirmCurrent = scanStatus.confirm and scanStatus.confirm[1] or 0
|
||||
local confirmTotal = scanStatus.confirm and scanStatus.confirm[2] or 1
|
||||
GUI.statusBar:UpdateStatus(100*confirmCurrent/confirmTotal, 100*scanCurrent/scanTotal)
|
||||
end
|
||||
end
|
||||
|
||||
function Manage:SetCurrentItem(currentItem)
|
||||
if currentItem and currentItem.itemString then
|
||||
GUI.infoText:SetInfo(currentItem)
|
||||
end
|
||||
end
|
||||
|
||||
function Manage:GetCurrentItem()
|
||||
return GUI.infoText:GetInfo()
|
||||
end
|
||||
|
||||
function Manage:SetInfoText(text)
|
||||
if type(text) ~= "table" then
|
||||
GUI:UpdateLogSTHighlight()
|
||||
end
|
||||
GUI.infoText:SetInfo(text)
|
||||
end
|
||||
Reference in New Issue
Block a user