// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #pragma once #include "FriendViewModel.h" class FChatItemViewModel; namespace EChatMessageType { enum Type : uint8; } struct FSelectedFriend { TSharedPtr UserID; FText DisplayName; EChatMessageType::Type MessageType; TSharedPtr ViewModel; TSharedPtr SelectedMessage; }; class FChatViewModel : public TSharedFromThis { public: virtual TArray >& GetMessages() = 0; virtual FReply HandleSelectionChanged(TSharedRef ItemSelected) = 0; virtual FText GetViewGroupText() const = 0; virtual FText GetChatGroupText() const = 0; virtual EVisibility GetFriendRequestVisibility() const = 0; virtual EVisibility GetInviteToGameVisibility() const = 0; virtual EVisibility GetOpenWhisperVisibility() const = 0; virtual EVisibility GetAcceptFriendRequestVisibility() const = 0; virtual EVisibility GetIgnoreFriendRequestVisibility() const = 0; virtual EVisibility GetCancelFriendRequestVisibility() const = 0; virtual void EnumerateFriendOptions(TArray& OUTActionList) = 0; virtual void PerformFriendAction(EFriendActionType::Type ActionType) = 0; virtual void CancelAction() = 0; virtual void SetChatChannel(const EChatMessageType::Type NewOption) = 0; virtual void SetWhisperChannel(const TSharedPtr InFriend) = 0; virtual void SetViewChannel(const EChatMessageType::Type NewOption) = 0; virtual const EChatMessageType::Type GetChatChannel() const = 0; virtual bool IsChatChannelValid() const = 0; virtual bool IsChatConnected() const = 0; virtual FText GetChatDisconnectText() const = 0; virtual void SetChannelUserClicked(const TSharedRef ChatItemSelected) = 0; virtual bool SendMessage(const FText NewMessage) = 0; virtual EChatMessageType::Type GetChatChannelType() const = 0; virtual const TArray >& GetRecentOptions() const = 0; virtual void SetDisplayGlobalChat(bool bAllow) = 0; virtual bool IsDisplayingGlobalChat() const = 0; virtual bool IsGlobalChatEnabled() const = 0; virtual bool HasValidSelectedFriend() const = 0; virtual bool HasFriendChatAction() const = 0; virtual bool HasActionPending() const = 0; virtual void SetInGame(bool bInGameSetting) = 0; virtual void LockChatChannel(bool bLocked) = 0; virtual bool IsChatChannelLocked() const = 0; virtual void EnableGlobalChat(bool bEnable) = 0; DECLARE_EVENT(FChatViewModel, FChatListUpdated) virtual FChatListUpdated& OnChatListUpdated() = 0; virtual ~FChatViewModel() {} }; /** * Creates the implementation for an ChatViewModel. * * @return the newly created ChatViewModel implementation. */ FACTORY(TSharedRef< FChatViewModel >, FChatViewModel, const TSharedRef& MessageManager);