#ifndef CONTROLLER_H
#define CONTROLLER_H

#include "misc/fixc11.h"
#include "ipin/Scaler.h"
#include "ipin/StepLoggerWrapper.h"
#include "ipin/StepLoggerWrapperAndroid.h"

class MainWindow;
class MainMenu;
class MapView;

class NavController;

#include <QObject>
template <typename T> class Grid;
class MyGridNode;
class InfoWidget;
class MapView3D;
class MapView2D;

namespace Floorplan {
	class IndoorMap;
}

class Controller : public QObject {

	Q_OBJECT

public:

	/** ctor */
	explicit Controller();

public:

	MapView3D* getMapView3D() const;
	MapView2D* getMapView2D() const;

	MainMenu* getMainMenu() const;
	InfoWidget* getInfoWidget() const;

protected:

	// scaling for the UAH building
	IPINScaler scaler = IPINScaler(1869, 1869, 40.51312440, -3.34959080, -40.73112000, 0.07596002);
	//StepLoggerWrapper sl;
	StepLoggerWrapperAndroid sl;


private slots:

	void onLoadButton();
	void onDebugButton();
	void onStartButton();

	void onTransparentButton();
	void onCameraButton();
	void on3DButton();

private:

	MainWindow* mainWindow;

	Grid<MyGridNode>* grid = nullptr;
	NavController* nav = nullptr;
	Floorplan::IndoorMap* im = nullptr;

};

#endif // CONTROLLER_H
