#ifndef _FTL_GUI_SRCWINDOW_HPP_
#define _FTL_GUI_SRCWINDOW_HPP_

#include <nanogui/window.h>
#include <nanogui/imageview.h>
#include <ftl/master.hpp>
#include <ftl/uuid.hpp>
#include <ftl/rgbd/source.hpp>
#include <ftl/threads.hpp>
#include <vector>
#include <map>
#include <string>
#include "gltexture.hpp"

class VirtualCameraView;

namespace ftl {
namespace gui {

class Screen;
class Camera;

class SourceWindow : public nanogui::Window {
	public:
	explicit SourceWindow(ftl::gui::Screen *screen);
	~SourceWindow();

	std::vector<ftl::gui::Camera*> getCameras();

	virtual void draw(NVGcontext *ctx);

	private:
	ftl::gui::Screen *screen_;
	std::map<std::string, ftl::gui::Camera*> cameras_; 
	std::vector<std::string> available_;
	std::vector<GLTexture> thumbs_;
	bool refresh_thumbs_;
	nanogui::Widget *ipanel_;
	MUTEX mutex_;

	void _updateCameras(const std::vector<std::string> &netcams);

};

}
}

#endif  // _FTL_GUI_SRCWINDOW_HPP_