local PSBT_Module   = PSBT_Module
local PSBT_Settings = PSBT_Module:Subclass()
local CBM           = CALLBACK_MANAGER

local PSBT_MODULES  = PSBT_MODULES
local PSBT_EVENTS   = PSBT_EVENTS
local PSBT_AREAS    = PSBT_AREAS

local ZO_SavedVars  = ZO_SavedVars

local RIGHT = RIGHT
local LEFT = LEFT
local CENTER = CENTER

local defaults =
{
    [ PSBT_AREAS.INCOMING       ] = { RIGHT,  CENTER, -300,  150   },
    [ PSBT_AREAS.OUTGOING       ] = { LEFT,   CENTER, 300,   150   },
    [ PSBT_AREAS.STATIC         ] = { CENTER, CENTER, 0,     -300  },
    [ PSBT_AREAS.NOTIFICATION   ] = { CENTER, CENTER, 0,     450   }
}

function PSBT_Settings:Initialize( ... )
    PSBT_Module.Initialize( self, ... )

    self.db = ZO_SavedVars:New( 'PSBT_DB', 1.5, nil, defaults )
    self.profile = self.db:GetInterfaceForCharacter( GetDisplayName(), GetUnitName( 'player' ) )
end

function PSBT_Settings:GetSetting( identity )
    if ( not self.profile[ identity ] ) then
        return nil
    end

    return self.profile[ identity ]
end

function PSBT_Settings:SetSetting( identity, value )
    self.profile[ identity ] = value
end

CBM:RegisterCallback( PSBT_EVENTS.LOADED,
    function( psbt )
        psbt:RegisterModule( PSBT_MODULES.SETTINGS, PSBT_Settings:New( psbt ) )
    end)