param.cpp
Go to the documentation of this file.
00001 #include "rqt_mrta/config/param.h"
00002 #include "rqt_mrta/config/params.h"
00003 
00004 namespace rqt_mrta
00005 {
00006 namespace config
00007 {
00008 Param::Param(Params* parent) : ParamInterface("param", parent) {}
00009 
00010 Param::~Param() {}
00011 
00012 QMetaType::Type Param::getType() const { return type_; }
00013 
00014 QString Param::getToolTip() const { return tool_tip_; }
00015 
00016 QVariant Param::getValue() const { return value_; }
00017 
00018 QVariant Param::getDefaultValue() const { return default_value_; }
00019 
00020 bool Param::isMandatory() const { return default_value_.isNull(); }
00021 
00022 void Param::setType(const QString& type)
00023 {
00024   if (type == "bool")
00025   {
00026     setType(QMetaType::Bool);
00027   }
00028   else if (type == "int")
00029   {
00030     setType(QMetaType::Int);
00031   }
00032   else if (type == "double")
00033   {
00034     setType(QMetaType::Double);
00035   }
00036   else
00037   {
00038     setType(QMetaType::QString);
00039   }
00040 }
00041 
00042 void Param::setType(const QMetaType::Type& type)
00043 {
00044   if (type != type_)
00045   {
00046     type_ = type;
00047     emit typeChanged(getFullName(), type);
00048     emit changed();
00049   }
00050 }
00051 
00052 void Param::setToolTip(const QString& tool_tip)
00053 {
00054   if (tool_tip != tool_tip_)
00055   {
00056     tool_tip_ = tool_tip;
00057     emit toolTipChanged(getFullName(), tool_tip);
00058     emit changed();
00059   }
00060 }
00061 
00062 void Param::setValue(const QString& value)
00063 {
00064   if (type_ == QMetaType::Bool)
00065   {
00066     setValue(QVariant::fromValue<bool>(value.toLower() == "true"));
00067   }
00068   else if (type_ == QMetaType::Int)
00069   {
00070     int v(value.toInt());
00071     setValue(v != 0 ? QVariant::fromValue<int>(v) : QVariant());
00072   }
00073   else if (type_ == QMetaType::Double)
00074   {
00075     double v(value.toDouble());
00076     setValue(v != 0.0 ? QVariant::fromValue<double>(v) : QVariant());
00077   }
00078   else
00079   {
00080     setValue(!value.isEmpty() ? QVariant::fromValue<QString>(value) : QVariant());
00081   }
00082 }
00083 
00084 void Param::setValue(const QVariant& value)
00085 {
00086   if (value != value_)
00087   {
00088     value_ = value;
00089     emit valueChanged(getFullName(), value);
00090     emit changed();
00091   }
00092 }
00093 
00094 void Param::setDefaultValue(const QString& value)
00095 {
00096   if (type_ == QMetaType::Bool)
00097   {
00098     setDefaultValue(QVariant::fromValue<bool>(value.toLower() == "true"));
00099   }
00100   else if (type_ == QMetaType::Int)
00101   {
00102     int v(value.toInt());
00103     setDefaultValue(v != 0 ? QVariant::fromValue<int>(v) : QVariant());
00104   }
00105   else if (type_ == QMetaType::Double)
00106   {
00107     double v(value.toDouble());
00108     setDefaultValue(v != 0.0 ? QVariant::fromValue<double>(v) : QVariant());
00109   }
00110   else
00111   {
00112     setDefaultValue(!value.isEmpty() ? QVariant::fromValue<QString>(value) : QVariant());
00113   }
00114 }
00115 
00116 void Param::setDefaultValue(const QVariant& default_value)
00117 {
00118   if (default_value != default_value_)
00119   {
00120     default_value_ = default_value;
00121     emit defaultValueChanged(getFullName(), default_value);
00122     emit changed();
00123   }
00124 }
00125 
00126 QString Param::validate() const
00127 {
00128   if (isMandatory() && value_.isNull())
00129   {
00130     return "The " + name_ + " parameter value must be given, because it is mandatory.";
00131   }
00132   if (tool_tip_.isEmpty())
00133   {
00134     return "The param tool tip must must be given. It helps the architecture "
00135            "users.";
00136   }
00137   return ParamInterface::validate();
00138 }
00139 
00140 bool Param::isParam() const { return true; }
00141 
00142 void Param::save(QSettings& settings) const
00143 {
00144   ParamInterface::save(settings);
00145   settings.setValue("type", type_);
00146   settings.setValue("value", value_);
00147   settings.setValue("default", default_value_);
00148   settings.setValue("tool_tip", tool_tip_);
00149 }
00150 
00151 void Param::load(QSettings& settings)
00152 {
00153   ParamInterface::load(settings);
00154   setType(settings.value("type").toString());
00155   setValue(settings.value("value").toString());
00156   setDefaultValue(settings.value("default").toString());
00157   setToolTip(settings.value("tool_tip").toString());
00158 }
00159 
00160 void Param::reset() { setValue(QString()); }
00161 
00162 void Param::write(QDataStream& stream) const
00163 {
00164   ParamInterface::write(stream);
00165   stream << (int)type_;
00166   stream << value_;
00167   stream << default_value_;
00168   stream << tool_tip_;
00169 }
00170 
00171 void Param::read(QDataStream& stream)
00172 {
00173   ParamInterface::read(stream);
00174   int type;
00175   QVariant value, default_value;
00176   QString tool_tip;
00177   stream >> type;
00178   setType(static_cast<QMetaType::Type>(type));
00179   stream >> value;
00180   setValue(value);
00181   stream >> default_value;
00182   setDefaultValue(default_value);
00183   stream >> tool_tip;
00184   setToolTip(tool_tip);
00185 }
00186 
00187 Param& Param::operator=(const Param& config)
00188 {
00189   ParamInterface::operator=(config);
00190   setType(config.type_);
00191   setValue(config.value_);
00192   setDefaultValue(config.default_value_);
00193   setToolTip(config.tool_tip_);
00194   return *this;
00195 }
00196 
00197 Param* Param::clone() const
00198 {
00199   Param* param = new Param();
00200   *param = *this;
00201   return param;
00202 }
00203 
00204 QString Param::toYaml(const QString &prefix) const
00205 {
00206   return ParamInterface::toYaml(prefix) + value_.toString();
00207 }
00208 }
00209 }


rqt_mrta
Author(s): Adriano Henrique Rossette Leite
autogenerated on Thu Jun 6 2019 18:50:52