ESO Lua File v100015

ingame/contacts/gamepad/friendslist_gamepad.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
--Layout consts, defining the widths of the list's columns as provided by design--
ZO_GAMEPAD_FRIENDS_LIST_USER_FACING_NAME_WIDTH = 310 - ZO_GAMEPAD_INTERACTIVE_FILTER_LIST_HEADER_DOUBLE_PADDING_X
ZO_GAMEPAD_FRIENDS_LIST_CHARACTER_NAME_WIDTH = 205 - ZO_GAMEPAD_INTERACTIVE_FILTER_LIST_HEADER_DOUBLE_PADDING_X
ZO_GAMEPAD_FRIENDS_LIST_ZONE_WIDTH = 260 - ZO_GAMEPAD_INTERACTIVE_FILTER_LIST_HEADER_DOUBLE_PADDING_X
-----------------
-- Friend List
-----------------
local FriendsList_Gamepad = ZO_GamepadSocialListPanel:Subclass()
function FriendsList_Gamepad:New(...)
    return ZO_GamepadSocialListPanel.New(self, ...)
end
function FriendsList_Gamepad:Initialize(control)
    ZO_GamepadSocialListPanel.Initialize(self, control, FRIENDS_LIST_MANAGER, "ZO_GamepadFriendsListRow")
    self:SetTitle(GetString(SI_GAMEPAD_CONTACTS_FRIENDS_LIST_TITLE))
    self:SetEmptyText(GetString(SI_GAMEPAD_CONTACTS_FRIENDS_LIST_NO_FRIENDS_MESSAGE));
        self:SetupSort(FRIENDS_LIST_ENTRY_SORT_KEYS, "status", ZO_SORT_ORDER_DOWN)
    GAMEPAD_FRIENDS_LIST_SCENE = ZO_Scene:New("gamepad_friends", SCENE_MANAGER)
    GAMEPAD_FRIENDS_LIST_SCENE:AddFragment(self:GetListFragment())
end
function FriendsList_Gamepad:GetAddKeybind()
    local platform = GetUIPlatform()
    if platform ~= UI_PLATFORM_XBOX then
        local keybind  =
        {
            alignment = KEYBIND_STRIP_ALIGN_LEFT,
            name = GetString(SI_GAMEPAD_CONTACTS_ADD_FRIEND_BUTTON_LABEL),
            
            keybind = "UI_SHORTCUT_SECONDARY",
            callback = function()
                local platform = GetUIPlatform()
                if platform == UI_PLATFORM_PC then
                    ZO_Dialogs_ShowGamepadDialog("GAMEPAD_SOCIAL_ADD_FRIEND_DIALOG")
                else
                    ZO_ShowConsoleAddFriendDialogFromUserListSelector()
                end
            end,
        }
        return keybind
    end
end
function FriendsList_Gamepad:LayoutTooltip(tooltipManager, tooltip, data)
    tooltipManager:LayoutFriend(tooltip, ZO_FormatUserFacingDisplayName(data.displayName), data.characterName, data.class, data.gender, data.level, data.championPoints, data.formattedAllianceName, data.formattedZone, not data.online, data.secsSinceLogoff, data.timeStamp)
end
function FriendsList_Gamepad:OnNumOnlineChanged()
    if GAMEPAD_CONTACTS then
        GAMEPAD_CONTACTS:UpdateOnline()
    end
end
function FriendsList_Gamepad:OnNumTotalFriendsChanged()
    if GAMEPAD_CONTACTS then
        GAMEPAD_CONTACTS:UpdateOnline()
    end
end
function FriendsList_Gamepad:OnShowing()
        EVENT_MANAGER:RegisterForUpdate("FriendsListConsoleRefresh", 60000, function() RequestSocialListForActiveProfile() end)
    end
    FRIENDS_LIST_MANAGER:RefreshData()
    self:Activate()
    ZO_GamepadSocialListPanel.OnShowing(self)
end
function FriendsList_Gamepad:CommitScrollList()
     ZO_GamepadSocialListPanel.CommitScrollList(self)
     --This just sets the empty text, the visibility of the empty text is contorlled by SortFilterList when the filtered list is empty
     --The text is reset by GamepadInteractiveSortFilterList.CommitScrollList where it sets the text to No Friends or Filter Returned None as appropriate and this overrides it if the players are offline
     if #self.masterList > 0 then
          if self:GetCurrentSearch() == "" and GetSetting_Bool(SETTING_TYPE_UI, UI_SETTING_SOCIAL_LIST_HIDE_OFFLINE) then
               self.emptyRowMessage:SetText(GetString(SI_FRIENDS_LIST_ALL_FRIENDS_OFFLINE))
          end
     end
end          
function FriendsList_Gamepad:OnHidden()
    if IsConsoleUI() then
        EVENT_MANAGER:UnregisterForUpdate("FriendsListConsoleRefresh")
    end
end
function FriendsList_Gamepad:BuildOptionsList()
    local groupId = self:AddOptionTemplateGroup(ZO_SocialOptionsDialogGamepad.GetDefaultHeader)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildSendMailOption)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildWhisperOption, ZO_SocialOptionsDialogGamepad.ShouldAddWhisperOption)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildInviteToGroupOption, ZO_SocialOptionsDialogGamepad.SelectedDataIsLoggedIn)
    local function BuildTravelToFriendPlayerOption()
        return self:BuildTravelToPlayerOption(JumpToFriend)
    end
    self:AddOptionTemplate(groupId, BuildTravelToFriendPlayerOption, ZO_SocialOptionsDialogGamepad.SelectedDataIsLoggedIn)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildGamerCardOption, IsConsoleUI)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildInviteToGameOption)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildIgnoreOption)
    self:AddOptionTemplate(groupId, ZO_SocialOptionsDialogGamepad.BuildRemoveFriendOption, function() return not IsConsoleUI() end)
end
    ZO_FRIENDS_LIST_GAMEPAD = FriendsList_Gamepad:New(self)
end