#ifndef __APPCONTEXT_H__
#define __APPCONTEXT_H__

#include <QObject>
#include "pluginmanager.h"
#include "projectmanager.h"
#include "network.h"
#include "serialport.h"
#include "fileserver.h"

class AppContext : public QObject
{
    Q_OBJECT

    explicit AppContext(QObject *parent = nullptr);
    ~AppContext();

public:
    static AppContext &instance();
    PluginManager &pluginManager();
    ProjectManager &projectManager();
    Network &network();
    SerialPort &serialPort();

private:
    PluginManager m_pluginMgr;
    ProjectManager m_projectMgr;
    Network m_network;
    SerialPort m_serialPort;
    FileServer m_fileServer;

};

#endif  // APPCONTEXT_H