bool operator()( const TSharedRef<FSequencerDisplayNode>& A, const TSharedRef<FSequencerDisplayNode>& B ) const { if (A->GetType() == ESequencerNode::Object && B->GetType() != ESequencerNode::Object) { return true; } if (A->GetType() != ESequencerNode::Object && B->GetType() == ESequencerNode::Object) { return false; } return A->GetDisplayName().ToString() < B->GetDisplayName().ToString(); }
void UGetFriendsCallbackProxy::OnReadFriendsListCompleted(int32 LocalUserNum, bool bWasSuccessful, const FString& ListName, const FString& ErrorString) { if (bWasSuccessful) { IOnlineFriendsPtr Friends = Online::GetFriendsInterface(); if (Friends.IsValid()) { ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerControllerWeakPtr->Player); TArray<FBPFriendInfo> FriendsListOut; TArray< TSharedRef<FOnlineFriend> > FriendList; Friends->GetFriendsList(LocalUserNum, ListName, FriendList); for (int32 i = 0; i < FriendList.Num(); i++) { TSharedRef<FOnlineFriend> Friend = FriendList[i]; FBPFriendInfo BPF; BPF.OnlineState = ((EBPOnlinePresenceState::Type)((int32)Friend->GetPresence().Status.State)); BPF.DisplayName = Friend->GetDisplayName(); BPF.RealName = Friend->GetRealName(); BPF.UniqueNetId.SetUniqueNetId(Friend->GetUserId()); FriendsListOut.Add(BPF); } OnSuccess.Broadcast(FriendsListOut); } } else { TArray<FBPFriendInfo> EmptyArray; OnFailure.Broadcast(EmptyArray); } }
void UAdvancedFriendsLibrary::GetStoredRecentPlayersList(FBPUniqueNetId UniqueNetId, TArray<FBPOnlineRecentPlayer> &PlayersList) { IOnlineFriendsPtr FriendsInterface = Online::GetFriendsInterface(); if (!FriendsInterface.IsValid()) { UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetRecentPlayersList Failed to get friends interface!")); return; } if (!UniqueNetId.IsValid()) { UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetRecentPlayersList Failed was given an invalid UniqueNetId!")); return; } TArray< TSharedRef<FOnlineRecentPlayer> > PlayerList; // For now getting all namespaces FriendsInterface->GetRecentPlayers(*(UniqueNetId.GetUniqueNetId()),"", PlayerList); for (int32 i = 0; i < PlayerList.Num(); i++) { TSharedRef<FOnlineRecentPlayer> Player = PlayerList[i]; FBPOnlineRecentPlayer BPF; BPF.DisplayName = Player->GetDisplayName(); BPF.RealName = Player->GetRealName(); BPF.UniqueNetId.SetUniqueNetId(Player->GetUserId()); PlayersList.Add(BPF); } }
void SAnimationOutlinerTreeNode::Construct( const FArguments& InArgs, TSharedRef<FSequencerDisplayNode> Node ) { DisplayNode = Node; OnSelectionChanged = InArgs._OnSelectionChanged; SelectedBrush = FEditorStyle::GetBrush( "Sequencer.AnimationOutliner.SelectionBorder" ); NotSelectedBrush = FEditorStyle::GetBrush( "NoBorder" ); ExpandedBrush = FEditorStyle::GetBrush( "TreeArrow_Expanded" ); CollapsedBrush = FEditorStyle::GetBrush( "TreeArrow_Collapsed" ); // Choose the font. If the node is a root node, we show a larger font for it. FSlateFontInfo NodeFont = Node->GetParent().IsValid() ? FEditorStyle::GetFontStyle("Sequencer.AnimationOutliner.RegularFont") : FEditorStyle::GetFontStyle("Sequencer.AnimationOutliner.BoldFont"); TSharedRef<SWidget> TextWidget = SNew( STextBlock ) .Text( Node->GetDisplayName() ) .Font( NodeFont ); TSharedRef<SWidget> FinalWidget = SNew( SHorizontalBox ) + SHorizontalBox::Slot() .AutoWidth() .VAlign( VAlign_Center ) [ SNew(SButton) .ContentPadding(0) .Visibility( this, &SAnimationOutlinerTreeNode::GetExpanderVisibility ) .OnClicked( this, &SAnimationOutlinerTreeNode::OnExpanderClicked ) .ClickMethod( EButtonClickMethod::MouseDown ) .ButtonStyle( FEditorStyle::Get(), "NoBorder" ) .HAlign( HAlign_Center ) .VAlign( VAlign_Center ) [ SNew( SImage ) .Image( this, &SAnimationOutlinerTreeNode::OnGetExpanderImage) ] ] + SHorizontalBox::Slot() .AutoWidth() .VAlign( VAlign_Center ) [ TextWidget ]; ChildSlot [ SNew( SBorder ) .VAlign( VAlign_Center ) .Padding(1.0f) .BorderImage( this, &SAnimationOutlinerTreeNode::GetNodeBorderImage ) [ FinalWidget ] ]; SetVisibility( TAttribute<EVisibility>( this, &SAnimationOutlinerTreeNode::GetNodeVisibility ) ); }
TSharedPtr< SWidget > FCustomFontColumn::CreateColumnLabel( const TSharedRef< IPropertyTableColumn >& Column, const TSharedRef< IPropertyTableUtilities >& Utilities, const FName& Style ) const { return SNew( SHorizontalBox ) +SHorizontalBox::Slot() .AutoWidth() .HAlign( HAlign_Left ) .VAlign( VAlign_Center ) .FillWidth(2) [ SNew( STextBlock ) .Font( FEditorStyle::GetFontStyle( Style ) ) .Text( Column->GetDisplayName() ) ] +SHorizontalBox::Slot() .AutoWidth() .HAlign( HAlign_Center ) .VAlign( VAlign_Center ) .FillWidth(2) [ SNew( SButton ) .HAlign( HAlign_Center ) .VAlign( VAlign_Center ) .OnClicked(OnChangeFontButtonClicked) [ SNew( STextBlock ) .Text((FText::Format(LOCTEXT("ChooseFontButton", "Choose {0} Font: "), Column->GetDisplayName()))) ] ] +SHorizontalBox::Slot() .AutoWidth() .HAlign( HAlign_Center ) .VAlign( VAlign_Center ) .FillWidth(1) .Padding( 0.0f, 4.0f, 0.0f, 4.0f ) [ SNew( SSpinBox<int32> ) .Delta(1) .MinValue(1) .MaxValue(100) .Value(Font.Size) .OnValueCommitted( OnFontSizeValueCommitted ) ] ; }
void UAdvancedFriendsLibrary::GetStoredFriendsList(APlayerController *PlayerController, TArray<FBPFriendInfo> &FriendsList) { if (!PlayerController) { UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetFriendsList Had a bad Player Controller!")); return; } IOnlineFriendsPtr FriendsInterface = Online::GetFriendsInterface(); if (!FriendsInterface.IsValid()) { UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetFriendsList Failed to get friends interface!")); return; } ULocalPlayer* Player = Cast<ULocalPlayer>(PlayerController->Player); if (!Player) { UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetFriendsList Failed to get LocalPlayer!")); return; } TArray< TSharedRef<FOnlineFriend> > FriendList; FriendsInterface->GetFriendsList(Player->GetControllerId(), EFriendsLists::ToString((EFriendsLists::Type::Default)), FriendList); for (int32 i = 0; i < FriendList.Num(); i++) { TSharedRef<FOnlineFriend> Friend = FriendList[i]; FBPFriendInfo BPF; BPF.OnlineState = ((EBPOnlinePresenceState::Type)((int32)Friend->GetPresence().Status.State)); BPF.DisplayName = Friend->GetDisplayName(); BPF.RealName = Friend->GetRealName(); BPF.UniqueNetId.SetUniqueNetId(Friend->GetUserId()); BPF.bIsPlayingSameGame = Friend->GetPresence().bIsPlayingThisGame; BPF.PresenceInfo.bIsOnline = Friend->GetPresence().bIsOnline; BPF.PresenceInfo.bIsPlaying = Friend->GetPresence().bIsPlaying; BPF.PresenceInfo.PresenceState = ((EBPOnlinePresenceState::Type)((int32)Friend->GetPresence().Status.State)); BPF.PresenceInfo.StatusString = Friend->GetPresence().Status.StatusStr; BPF.PresenceInfo.bIsJoinable = Friend->GetPresence().bIsJoinable; BPF.PresenceInfo.bIsPlayingThisGame = Friend->GetPresence().bIsPlayingThisGame; FriendsList.Add(BPF); } }
/** * Recursively filters nodes * * @param StartNode The node to start from * @param FilterStrings The filter strings which need to be matched * @param OutFilteredNodes The list of all filtered nodes */ static bool FilterNodesRecursive( const TSharedRef<FSequencerDisplayNode>& StartNode, const TArray<FString>& FilterStrings, TSet< TSharedRef< const FSequencerDisplayNode> >& OutFilteredNodes ) { // Assume the filter is acceptable bool bFilterAcceptable = true; // Check each string in the filter strings list against for (int32 TestNameIndex = 0; TestNameIndex < FilterStrings.Num(); ++TestNameIndex) { const FString& TestName = FilterStrings[TestNameIndex]; if ( !StartNode->GetDisplayName().ToString().Contains( TestName ) ) { bFilterAcceptable = false; break; } } // Whether or the start node is in the filter bool bInFilter = false; if( bFilterAcceptable ) { // This node is now filtered OutFilteredNodes.Add( StartNode ); bInFilter = true; } // Check each child node to determine if it is filtered const TArray< TSharedRef<FSequencerDisplayNode> >& ChildNodes = StartNode->GetChildNodes(); for( int32 ChildIndex = 0; ChildIndex < ChildNodes.Num(); ++ChildIndex ) { // Mark the parent as filtered if any child node was filtered bFilterAcceptable |= FilterNodesRecursive( ChildNodes[ChildIndex], FilterStrings, OutFilteredNodes ); if( bFilterAcceptable && !bInFilter ) { OutFilteredNodes.Add( StartNode ); bInFilter = true; } } return bFilterAcceptable; }