00001 #include "rqt_mrta/config/arg.h" 00002 00003 namespace rqt_mrta 00004 { 00005 namespace config 00006 { 00007 Arg::Arg(QObject* parent) : AbstractConfig(parent) {} 00008 00009 Arg::~Arg() {} 00010 00011 QString Arg::getName() const { return name_; } 00012 00013 QString Arg::getValue() const { return value_; } 00014 00015 QString Arg::getDefaultValue() const { return default_value_; } 00016 00017 bool Arg::isMandatory() const { return default_value_.isEmpty(); } 00018 00019 void Arg::setName(const QString& name) 00020 { 00021 if (name != name_) 00022 { 00023 name_ = name; 00024 emit nameChanged(name); 00025 emit changed(); 00026 } 00027 } 00028 00029 void Arg::setValue(const QString& value) 00030 { 00031 if (value != value_) 00032 { 00033 value_ = value; 00034 emit valueChanged(value); 00035 emit changed(); 00036 } 00037 } 00038 00039 void Arg::setDefaultValue(const QString& value) 00040 { 00041 if (value != value_) 00042 { 00043 default_value_ = value; 00044 emit defaultValueChanged(value); 00045 emit changed(); 00046 } 00047 } 00048 00049 QString Arg::validate() const 00050 { 00051 if (isMandatory() && value_.isEmpty()) 00052 { 00053 return "Enter the argument value, it is mandatory."; 00054 } 00055 return ""; 00056 } 00057 00058 void Arg::save(QSettings& settings) const 00059 { 00060 settings.setValue("name", name_); 00061 settings.setValue("value", value_); 00062 settings.setValue("default", default_value_); 00063 } 00064 00065 void Arg::load(QSettings& settings) 00066 { 00067 setName(settings.value("name").toString()); 00068 setValue(settings.value("value").toString()); 00069 setDefaultValue(settings.value("default").toString()); 00070 } 00071 00072 void Arg::reset() 00073 { 00074 setName(""); 00075 setValue(""); 00076 setDefaultValue(""); 00077 } 00078 00079 void Arg::write(QDataStream& stream) const 00080 { 00081 stream << name_; 00082 stream << value_; 00083 stream << default_value_; 00084 } 00085 00086 void Arg::read(QDataStream& stream) 00087 { 00088 QString name; 00089 QString value; 00090 QString default_value; 00091 stream >> name; 00092 stream >> value; 00093 stream >> default_value; 00094 setName(name); 00095 setValue(value); 00096 setDefaultValue(default_value); 00097 } 00098 00099 Arg& Arg::operator=(const Arg& config) 00100 { 00101 setName(config.name_); 00102 setValue(config.value_); 00103 setDefaultValue(config.default_value_); 00104 return *this; 00105 } 00106 00107 QString Arg::toLaunch(const QString &prefix) const 00108 { 00109 QString launch(prefix + "<arg "); 00110 launch += "name=\"" + name_ + "\" "; 00111 launch += "value=\"" + (!value_.isEmpty() ? value_ : default_value_) + "\""; 00112 launch += " />\n"; 00113 return launch; 00114 } 00115 } 00116 }