-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster --
-- https://tradeskillmaster.com --
-- All Rights Reserved - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
--- "What's New" Dialog
-- @module WhatsNew
local TSM = select ( 2 , ... ) ---@type TSM
local WhatsNew = TSM.UI : NewPackage ( " WhatsNew " )
local L = TSM.Include ( " Locale " ) . GetTable ( )
local Theme = TSM.Include ( " Util.Theme " )
local Analytics = TSM.Include ( " Util.Analytics " )
local Settings = TSM.Include ( " Service.Settings " )
local UIElements = TSM.Include ( " UI.UIElements " )
local private = {
settings = nil ,
showTime = nil ,
}
local WHATS_NEW_VERSION = 4
local CONTENT_LINES = {
Theme.GetColor ( " INDICATOR " ) : ColorText ( L [ " Retail Region-Wide Tracking " ] ) .. " " .. L [ " In retail, there's a new option in the settings to get TSM to make inventory and accounting data available from every realm in your region. " ] ,
Theme.GetColor ( " INDICATOR " ) : ColorText ( L [ " Grouping Pets by Level " ] ) .. " " .. L [ " You can now group pets by level, just like items. " ] ,
Theme.GetColor ( " INDICATOR " ) : ColorText ( L [ " Crafting UI Improvements " ] ) .. " " .. L [ " Many UI improvements have been made to the Dragonflight crafting experience, including support for mass milling / prospecting and easier quality and optional material selection. " ] ,
}
-- ============================================================================
-- Module Functions
-- ============================================================================
function WhatsNew . OnInitialize ( )
private.settings = Settings.NewView ( )
: AddKey ( " global " , " internalData " , " whatsNewVersion " )
end
function WhatsNew . GetDialog ( )
if private.settings . whatsNewVersion == WHATS_NEW_VERSION then
return
end
private.showTime = GetTime ( )
return UIElements.New ( " Frame " , " whatsnew " )
: SetLayout ( " VERTICAL " )
: SetSize ( 650 , 300 )
: SetPadding ( 12 , 12 , 0 , 12 )
: AddAnchor ( " CENTER " )
: SetRoundedBackgroundColor ( " FRAME_BG " )
: AddChild ( UIElements.New ( " Frame " , " header " )
: SetLayout ( " HORIZONTAL " )
: SetHeight ( 24 )
: SetMargin ( 0 , 0 , 8 , 16 )
: AddChild ( UIElements.New ( " Spacer " , " spacer " )
: SetWidth ( 20 )
)
: AddChild ( UIElements.New ( " Text " , " title " )
: SetJustifyH ( " CENTER " )
: SetFont ( " BODY_BODY1_BOLD " )
: SetFormattedText ( L [ " TSM %s: What's new " ] , " 4.13 " )
)
: AddChild ( UIElements.New ( " Button " , " closeBtn " )
: SetMargin ( 0 , - 4 , 0 , 0 )
: SetBackgroundAndSize ( " iconPack.24x24/Close/Default " )
: SetScript ( " OnClick " , private.DialogCloseBtnOnClick )
)
)
: AddChild ( UIElements.New ( " ScrollFrame " , " body " )
: AddChild ( UIElements.New ( " Text " , " content1 " )
: SetHeight ( 200 )
: SetFont ( " BODY_BODY2 " )
: SetText ( table.concat ( CONTENT_LINES , " \n \n " ) )
)
)
: AddChild ( UIElements.New ( " Text " , " footer1 " )
: SetHeight ( 20 )
: SetMargin ( 0 , 0 , 12 , 0 )
: SetFont ( " BODY_BODY3 " )
: SetFormattedText ( L [ " For more info, visit %s. For help, join us in Discord: %s. " ] , Theme.GetColor ( " INDICATOR_ALT " ) : ColorText ( " blog.tradeskillmaster.com " ) , Theme.GetColor ( " INDICATOR_ALT " ) : ColorText ( " discord.gg/woweconomy " ) )
)
end
-- ============================================================================
-- Private Helper Functions
-- ============================================================================
function private . DialogCloseBtnOnClick ( button )
private.settings . whatsNewVersion = WHATS_NEW_VERSION
button : GetBaseElement ( ) : HideDialog ( )
Analytics.Action ( " WHATS_NEW_TIME " , floor ( ( GetTime ( ) - private.showTime ) * 1000 ) , WHATS_NEW_VERSION )
end