#include "WimaServiceAreaData.h"

const char *WimaServiceAreaData::typeString = "WimaServiceAreaData";

WimaServiceAreaData::WimaServiceAreaData(QObject *parent)
    : WimaAreaData(parent) {}

WimaServiceAreaData::WimaServiceAreaData(const WimaServiceAreaData &other,
                                         QObject *parent)
    : WimaAreaData(parent) {
  *this = other;
}

WimaServiceAreaData::WimaServiceAreaData(const WimaServiceArea &other,
                                         QObject *parent)
    : WimaAreaData(parent) {
  *this = other;
}

WimaServiceAreaData &WimaServiceAreaData::
operator=(const WimaServiceAreaData &otherData) {
  this->assign(otherData);
  this->setDepot(otherData.depot());
  return *this;
}

WimaServiceAreaData &WimaServiceAreaData::
operator=(const WimaServiceArea &otherArea) {
  this->assign(otherArea);
  this->setDepot(otherArea.depot());
  return *this;
}

/*!
 * \fn const QGeoCoordinate &WimaServiceAreaData::takeOffPosition() const
 * Returns a constant reference to the takeOffPosition.
 *
 */
const QGeoCoordinate &WimaServiceAreaData::depot() const { return _depot; }

QString WimaServiceAreaData::type() const { return this->typeString; }
/*!
 * \fn void WimaServiceAreaData::setTakeOffPosition(const QGeoCoordinate
 * &newCoordinate) Sets the takeoff position to the \a newCoordinate and emits
 * the takeOffPositionChanged() signal, if newCoordinate differs from the member
 * value.
 *
 */
void WimaServiceAreaData::setDepot(const QGeoCoordinate &newCoordinate) {
  if (_depot != newCoordinate) {
    _depot = newCoordinate;
    emit depotChanged(_depot);
  }
}

void WimaServiceAreaData::assign(const WimaServiceAreaData &other) {
  WimaAreaData::assign(other);
  setDepot(other.depot());
}

void WimaServiceAreaData::assign(const WimaServiceArea &other) {
  WimaAreaData::assign(other);
  setDepot(other.depot());
}

/*!
 * \class WimaAreaData::WimaServiceAreaData
 * \brief Class to store and exchange data of a \c WimaServiceArea Object.
 * Class to store and exchange data of a \c WimaServiceArea Object. In contrast
 * to \c WimaServiceArea this class does not provied any interface to a grafical
 * user interface, neiter it uses the QGC Fact System. It is designed to
 * exchange data between the \c WimaPlaner and the \c WimaController class. And
 * it is the derived from WimaAreaData.
 *
 * \sa WimaServiceArea, WimaAreaData
 */
