#include <QHBoxLayout>
#include <QLabel>

#include "keypointvaluechooser.hpp"
#include "../../util/util.hpp"

namespace cvv{ namespace qtutil{

KeyPointValueChooser::KeyPointValueChooser(QWidget *parent):
	QWidget{parent}
{
	auto layout=util::make_unique<QHBoxLayout>();
	auto comb=util::make_unique<QComboBox>();
	auto label=util::make_unique<QLabel>("choose a value");


	combBox_=comb.get();
	comb->addItem("size");
	comb->addItem("angle");
	comb->addItem("response");
	comb->addItem("octave");
	comb->addItem("class_id");

	connect(comb.get(),SIGNAL(currentIndexChanged(int)),this,SIGNAL(valueChanged()));

	layout->setContentsMargins(0, 0, 0, 0);

	layout->addWidget(label.release());
	layout->addWidget(comb.release());

	setLayout(layout.release());
}

double KeyPointValueChooser::getChoosenValue(cv::KeyPoint keypoint)
{
	switch(combBox_->currentIndex()){
		case 0:
			return static_cast<double>(keypoint.size);
		case 1:
			return static_cast<double>(keypoint.angle);
		case 2:
			return static_cast<double>(keypoint.response);
		case 3:
			return static_cast<double>(keypoint.octave);
		case 4:
			return static_cast<double>(keypoint.class_id);
		default:
			return -1.0;
	}
}


}}