#include "stdafx.h" #include "MessageManager.h" IMessageManager* MessageManager::_messageManager = nullptr; list MessageManager::_notificationListeners; void MessageManager::RegisterMessageManager(IMessageManager* messageManager) { MessageManager::_messageManager = messageManager; } void MessageManager::DisplayMessage(wstring title, wstring message) { std::wcout << message << std::endl; if(MessageManager::_messageManager) { MessageManager::_messageManager->DisplayMessage(title, message); } } void MessageManager::DisplayToast(wstring title, wstring message, uint8_t* iconData, uint32_t iconSize) { if(MessageManager::_messageManager) { MessageManager::_messageManager->DisplayToast(shared_ptr(new ToastInfo(title, message, 4000, iconData, iconSize))); } } void MessageManager::RegisterNotificationListener(INotificationListener* notificationListener) { MessageManager::_notificationListeners.push_back(notificationListener); MessageManager::_notificationListeners.unique(); } void MessageManager::UnregisterNotificationListener(INotificationListener* notificationListener) { MessageManager::_notificationListeners.remove(notificationListener); } void MessageManager::SendNotification(ConsoleNotificationType type) { list listeners = MessageManager::_notificationListeners; //Iterate on a copy to prevent issues if a notification causes a listener to unregister itself for(INotificationListener* notificationListener : listeners) { notificationListener->ProcessNotification(type); } }