// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #include "FriendsAndChatPrivatePCH.h" #include "ClanViewModel.h" #include "ClanInfoViewModel.h" #include "ClanRepository.h" #include "ClanInfo.h" class FClanViewModelImpl : public FClanViewModel { public: virtual FText GetClanTitle() override { if(ClanList.Num() > 0) { return ClanList[0]->GetTitle(); } return FText::GetEmpty(); } virtual TSharedPtr GetClanInfoViewModel() override { if(ClanList.Num() > 0) { return FClanInfoViewModelFactory::Create(ClanList[0]); } return nullptr; } virtual void EnumerateJoinedClans(TArray>& OUTClanList) override { for (const auto& ClanItem : ClanList) { OUTClanList.Add(ClanItem); } } private: void Initialize() { ClanRepository->EnumerateClanList(ClanList); } private: FClanViewModelImpl(const TSharedRef& InClanRepository) : ClanRepository(InClanRepository) { } TSharedRef ClanRepository; TArray> ClanList; friend FClanViewModelFactory; }; TSharedRef< FClanViewModel > FClanViewModelFactory::Create( const TSharedRef& ClanRepository ) { TSharedRef< FClanViewModelImpl > ViewModel(new FClanViewModelImpl(ClanRepository)); ViewModel->Initialize(); return ViewModel; }