2014-12-07 19:09:38 -05:00
|
|
|
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
2014-10-20 08:14:45 -04:00
|
|
|
|
|
|
|
|
#include "FriendsAndChatPrivatePCH.h"
|
|
|
|
|
#include "FriendsStatusViewModel.h"
|
|
|
|
|
|
|
|
|
|
class FFriendsStatusViewModelImpl
|
|
|
|
|
: public FFriendsStatusViewModel
|
|
|
|
|
{
|
|
|
|
|
public:
|
2014-11-14 19:13:52 -05:00
|
|
|
virtual EOnlinePresenceState::Type GetOnlineStatus() const override
|
2014-10-20 08:14:45 -04:00
|
|
|
{
|
2015-03-13 08:26:18 -04:00
|
|
|
return FriendsAndChatManager.Pin()->GetOnlineStatus();
|
2014-10-20 08:14:45 -04:00
|
|
|
}
|
|
|
|
|
|
2014-11-13 22:10:45 -05:00
|
|
|
virtual void SetOnlineStatus(EOnlinePresenceState::Type OnlineState) override
|
2014-10-20 08:14:45 -04:00
|
|
|
{
|
2014-11-13 22:10:45 -05:00
|
|
|
FriendsAndChatManager.Pin()->SetUserIsOnline(OnlineState);
|
2014-10-20 08:14:45 -04:00
|
|
|
}
|
|
|
|
|
|
2015-01-14 05:37:06 -05:00
|
|
|
virtual const TArray<FOnlineState>& GetStatusList() const override
|
2014-10-20 08:14:45 -04:00
|
|
|
{
|
|
|
|
|
return OnlineStateArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual FText GetStatusText() const override
|
|
|
|
|
{
|
2015-03-13 08:26:18 -04:00
|
|
|
FString Nickname;
|
|
|
|
|
TSharedPtr<FFriendsAndChatManager> ManagerPinned = FriendsAndChatManager.Pin();
|
|
|
|
|
if (ManagerPinned.IsValid())
|
2014-11-14 19:13:52 -05:00
|
|
|
{
|
2015-03-13 08:26:18 -04:00
|
|
|
Nickname = ManagerPinned->GetUserNickname();
|
2015-01-14 05:37:06 -05:00
|
|
|
}
|
2015-03-13 08:26:18 -04:00
|
|
|
return FText::FromString(Nickname);
|
2014-10-20 08:14:45 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
FFriendsStatusViewModelImpl(
|
2015-04-22 20:01:57 -04:00
|
|
|
const TSharedRef<FFriendsAndChatManager>& InFriendsAndChatManager
|
2014-10-20 08:14:45 -04:00
|
|
|
)
|
2015-04-22 20:01:57 -04:00
|
|
|
: FriendsAndChatManager(InFriendsAndChatManager)
|
2014-10-20 08:14:45 -04:00
|
|
|
{
|
2015-01-14 05:37:06 -05:00
|
|
|
OnlineStateArray.Add(FOnlineState(true, NSLOCTEXT("OnlineState", "OnlineState_Online", "Online"), EOnlinePresenceState::Online));
|
|
|
|
|
OnlineStateArray.Add(FOnlineState(false, NSLOCTEXT("OnlineState", "OnlineState_Offline", "Offline"), EOnlinePresenceState::Offline));
|
|
|
|
|
OnlineStateArray.Add(FOnlineState(true, NSLOCTEXT("OnlineState", "OnlineState_Away", "Away"), EOnlinePresenceState::Away));
|
|
|
|
|
OnlineStateArray.Add(FOnlineState(false, NSLOCTEXT("OnlineState", "OnlineState_Away", "Away"), EOnlinePresenceState::ExtendedAway));
|
|
|
|
|
OnlineStateArray.Add(FOnlineState(false, NSLOCTEXT("OnlineState", "OnlineState_Online", "Online"), EOnlinePresenceState::DoNotDisturb));
|
|
|
|
|
OnlineStateArray.Add(FOnlineState(false, NSLOCTEXT("OnlineState", "OnlineState_Online", "Online"), EOnlinePresenceState::Chat));
|
2014-10-20 08:14:45 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
TWeakPtr<FFriendsAndChatManager> FriendsAndChatManager;
|
2015-01-14 05:37:06 -05:00
|
|
|
TArray<FOnlineState> OnlineStateArray;
|
2014-10-20 08:14:45 -04:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
friend FFriendsStatusViewModelFactory;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TSharedRef< FFriendsStatusViewModel > FFriendsStatusViewModelFactory::Create(
|
|
|
|
|
const TSharedRef<FFriendsAndChatManager>& FriendsAndChatManager
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
TSharedRef< FFriendsStatusViewModelImpl > ViewModel(new FFriendsStatusViewModelImpl(FriendsAndChatManager));
|
|
|
|
|
return ViewModel;
|
|
|
|
|
}
|