#ifndef APPLICATION_H #define APPLICATION_H #include #include "component/ComponentManager.h" #include "Project.h" #include "utility/messaging/MessageListener.h" #include "utility/messaging/type/MessageLoadProject.h" #include "utility/messaging/type/MessageLoadSource.h" #include "utility/messaging/type/MessageRefresh.h" #include "utility/messaging/type/MessageSaveProject.h" class ViewFactory; class MainView; class GraphAccessProxy; class LocationAccessProxy; class Application : public MessageListener , public MessageListener , public MessageListener , public MessageListener { public: static std::shared_ptr create(ViewFactory* viewFactory); ~Application(); void loadProject(const std::string& projectSettingsFilePath); void loadSource(const std::string& sourceDirectoryPath); void saveProject(const std::string& projectSettingsFilePath); void reloadProject(); private: Application(); virtual void handleMessage(MessageLoadProject* message); virtual void handleMessage(MessageLoadSource* message); virtual void handleMessage(MessageRefresh* message); virtual void handleMessage(MessageSaveProject* message); std::shared_ptr m_project; std::shared_ptr m_graphAccessProxy; std::shared_ptr m_locationAccessProxy; std::shared_ptr m_mainView; std::shared_ptr m_componentManager; }; #endif // APPLICATION_H