#include "DesktopManager.h" #include "AbstractDesktopApp.h" #include "FileLogger.h" DesktopManager::DesktopManager(AbstractDesktopApp* application) : mScreens(), mWindowManager(WindowManager::Create()), mKeyboard(Keyboard::Create()), mUiApplication(application), mModified(false), mEventManager(EventManager::Create()) { } DesktopManager::~DesktopManager() { } std::unique_ptr DesktopManager::Create(AbstractDesktopApp* application) { return std::make_unique(application); } void DesktopManager::clearEvents() { mEventManager->ClearEvents(); } void DesktopManager::onKeyboardEvent(const KeyboardEvent* event) { mWindowManager->onKeyboardEvent(event); } void DesktopManager::onPaintEvent(const PaintEvent* event) { mWindowManager->onPaintEvent(event); } void DesktopManager::onMouseEvent(const MouseEvent* event) { mWindowManager->onMouseEvent(event); } bool DesktopManager::isModified() const { return mModified; } void DesktopManager::onUiEvent(UiEventUPtr eventUPtr) { mModified = false; const auto event = mEventManager->AddEvent(std::move(eventUPtr)); switch (event->GetType()) { case (UiEvent::Type::Paint): { onPaintEvent(dynamic_cast(event)); break; } case (UiEvent::Type::Keyboard): { onKeyboardEvent(dynamic_cast(event)); mModified = true; break; } case (UiEvent::Type::Mouse): { auto mouseEvent = dynamic_cast(event); onMouseEvent(mouseEvent); if (mouseEvent->GetAction() == MouseEvent::Action::Pressed) { mModified = true; } else if(mouseEvent->GetAction() == MouseEvent::Action::Released) { mModified = true; } break; } default: break; } } void DesktopManager::setIsModified(bool modified) { mModified = modified; } Keyboard* DesktopManager::getKeyboard() const { return mKeyboard.get(); } void DesktopManager::setKeyboard(KeyboardUPtr keyboard) { mKeyboard = std::move(keyboard); } AbstractApp* DesktopManager::getMainApp() const { return mUiApplication->getMainApplication(); } void DesktopManager::addScreen(ScreenPtr screen) { mScreens.push_back(std::move(screen)); } mt::Screen* DesktopManager::getDefaultScreen() const { if (mScreens.size() > 0) { return mScreens[0].get(); } return nullptr; } void DesktopManager::setWindowManager(WindowManagerUPtr windowManager) { mWindowManager = std::move(windowManager); } WindowManager* DesktopManager::getWindowManager() const { return mWindowManager.get(); }