/**********************************************************************************************
    Copyright (C) 2014 Oliver Eichler <oliver.eichler@gmx.de>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

**********************************************************************************************/

#include "CInputDialog.h"

#include <QtWidgets>

CInputDialog::CInputDialog(QWidget* parent, const QString& text, QVariant& val, const QVariant& reset,
                           const QString& suffix)
    : QDialog(parent), val(val), reset(reset) {
  setupUi(this);
  QPushButton* pushReset = buttonBox->addButton(QDialogButtonBox::Reset);
  connect(pushReset, &QPushButton::clicked, this, &CInputDialog::slotReset);

  labelSuffix->setText(suffix);
  label->setText(text);
  if (val != reset) {
    lineEdit->setText(val.toString());
  }

  checkBox->hide();
}

CInputDialog::~CInputDialog() {}

void CInputDialog::setOption(const QString& text, bool checked) {
  checkBox->setChecked(checked);
  checkBox->setText(text);
  checkBox->show();

  adjustSize();
}

void CInputDialog::accept() {
  if (lineEdit->text().isEmpty()) {
    val = reset;
  } else {
    val.setValue(lineEdit->text());
  }

  QDialog::accept();
}

void CInputDialog::slotReset() { lineEdit->clear(); }
