/**********************************************************************************************
    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 "helpers/CPositionDialog.h"

#include <QtWidgets>

#include "units/IUnit.h"

CPositionDialog::CPositionDialog(QWidget* parent, QPointF& pos) : QDialog(parent), pos(pos) {
  setupUi(this);
  QString str;
  IUnit::degToStr(pos.x(), pos.y(), str);
  lineEdit->setText(str);

  labelWarning->hide();

  connect(lineEdit, &QLineEdit::textEdited, this, &CPositionDialog::slotEdit);
}

CPositionDialog::~CPositionDialog() {}

void CPositionDialog::accept() {
  if (getPosition(pos, lineEdit->text())) {
    QDialog::accept();
  }
}

bool CPositionDialog::getPosition(QPointF& pt, const QString& str) {
  qreal lon, lat;

  bool res = IUnit::strToDeg(str, lon, lat);

  if (res) {
    pt.rx() = lon;
    pt.ry() = lat;
  }

  return res;
}

void CPositionDialog::slotEdit(const QString& str) {
  bool isValid = IUnit::isValidCoordString(str);

  labelWarning->setVisible(!isValid);
  buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isValid);
}
