Files
UnrealEngineUWP/Engine/Source/Developer/MessageLog/Private/Model/MessageLogModel.h
Ben Marsh 13d012685f Merging copyright update from 4.19 branch.
#rb none
#rnx
#jira

[CL 3818977 by Ben Marsh in Staging-4.19 branch]
2018-01-02 15:30:26 -05:00

51 lines
1.6 KiB
C++

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Model/MessageLogListingModel.h"
/**
* Holds a series of message log listings that can be written to.
*/
class FMessageLogModel
{
public:
/** Destructor */
virtual ~FMessageLogModel();
/** Unregisters a log listing with the message log system, true if successful */
bool UnregisterLogListingModel( const FName& LogName );
/** Checks to see if a log listing is already registered with the system */
bool IsRegisteredLogListingModel( const FName& LogName ) const;
/** Gets a log listing, if it does not exist it is created. */
TSharedRef< class FMessageLogListingModel > GetLogListingModel( const FName& LogName );
/** Broadcasts whenever a message log listing is added or removed */
DECLARE_EVENT( FMessageLogModel, FChangedEvent )
FChangedEvent& OnChanged() { return ChangedEvent; }
protected:
/** Will broadcast to all registered observers informing them of a change */
virtual void Notify() { ChangedEvent.Broadcast(); }
private:
/** Registers a log listing with the message log system, true if successful */
TSharedRef< class FMessageLogListingModel > RegisterOrGetLogListingModel( const FName& LogName );
/** Finds the LogListing Model, given its name. Returns null if not found. */
TSharedPtr< class FMessageLogListingModel > FindLogListingModel( const FName& LogName ) const;
private:
/** A map from a log listings' Name->Model */
TMap< FName, TSharedPtr< class FMessageLogListingModel > > NameToModelMap;
/** The event that broadcasts whenever data is changed */
FChangedEvent ChangedEvent;
};