#include "commodityform.h"
#include "ui_commodityform.h"
#include <combodata.h>
#include <settingsservice.h>
#include <settings/commoditysettings.h>
#include <helper.h>

#include <QSharedPointer>
#include <QList>
#include "data/commoditytypedata.h"

CommodityForm::CommodityForm(QWidget *parent) :
    AutoForm<CommodityData>(parent),
    ui(new Ui::CommodityForm)
{
    ui->setupUi(this);
    registerBinding(ui->name);
    registerBinding(ui->shortName);
    registerBinding(ui->code);
    registerBinding(ui->price);
    QList<ComboData> vt;
    vt << ComboData(Enums::NONE,tr("None"))
       << ComboData(Enums::HIGH,tr("High"))
       << ComboData(Enums::FIRST_LOWER,tr("First Lower"))
       << ComboData(Enums::SECOND_LOWER,tr("Second Lower"));
    registerBinding(ui->vat, vt);
    registerBinding(ui->count);

    m_codeAsNumber = false;
}

CommodityForm::~CommodityForm()
{
    delete ui;
}

void CommodityForm::registerCombos()
{
    Service<CommodityTypeData> srvComTypes;
    registerBinding(ui->type, ComboData::createComboData(srvComTypes.all()));
}

void CommodityForm::onShow()
{
    SettingsService srv("COMMODITY");
    CommoditySettingsPtr settings = srv.loadSettings<CommoditySettings>();

    m_codeAsNumber = settings->codeAsNumber();
}

void CommodityForm::on_code_textChanged(const QString &text)
{
    if (m_codeAsNumber)
    {
        ui->code->setText(Helper::replaceByNumbers(text));
    }
}
