#include "tobii-eyex-dialog.hpp"

tobii_eyex_dialog::tobii_eyex_dialog()
{
    ui.setupUi(this);

    connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &tobii_eyex_dialog::do_ok);
    connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &tobii_eyex_dialog::do_cancel);

    ui.tracking_mode->addItem("Relative", tobii_relative);
    ui.tracking_mode->addItem("Absolute", tobii_absolute);

    tie_setting(s.mode, ui.tracking_mode);

    ui.relative_mode_gain->setConfig(&rs.acc_mode_spline);
    ui.relative_mode_gain->set_preview_only(true);

    tie_setting(rs.dz_len, ui.deadzone);
    tie_setting(rs.expt_slope, ui.exponent);
    tie_setting(rs.expt_len, ui.exponent_len);
    tie_setting(rs.expt_norm, ui.exponent_norm);

    tie_setting(rs.log_len, ui.log_len);

    connect(rs.b.get(), &bundle_::changed, this, [this]() { rs.make_spline(); }, Qt::QueuedConnection);

    // todo add specialization for label with traits
#if 0
    tie_setting(rs.dz_len, ui.deadzone_label);
    tie_setting(rs.expt_slope, ui.exponent_label);
    tie_setting(rs.expt_len, ui.exponent_len_label);
    tie_setting(rs.expt_norm, ui.exponent_norm_label);
    tie_setting(rs.log_slope, ui.log_base_label);
    tie_setting(rs.log_len, ui.log_len_label);
    tie_setting(rs.log_norm, ui.log_norm_label);
#endif
}

void tobii_eyex_dialog::do_ok()
{
    s.b->save();
    rs.b->save();
    close();
}

void tobii_eyex_dialog::do_cancel()
{
    close();
}