00001 #ifndef _RQT_MRTA_APPLICATION_CONFIG_TASKS_H_ 00002 #define _RQT_MRTA_APPLICATION_CONFIG_TASKS_H_ 00003 00004 #include <QVector> 00005 #include "utilities/abstract_config.h" 00006 #include "rqt_mrta/config/application/task.h" 00007 00008 namespace rqt_mrta 00009 { 00010 namespace config 00011 { 00012 namespace application 00013 { 00014 class Tasks : public utilities::AbstractConfig 00015 { 00016 Q_OBJECT 00017 public: 00018 Tasks(QObject* parent = NULL); 00019 virtual ~Tasks(); 00020 Task* getTask(size_t index) const; 00021 Task* addTask(); 00022 void removeTask(Task* task); 00023 void removeTask(size_t index); 00024 void clearTasks(); 00025 bool contains(const QString &id) const; 00026 size_t count() const; 00027 bool isEmpty() const; 00028 void save(QSettings& settings) const; 00029 void load(QSettings& settings); 00030 void reset(); 00031 void write(QDataStream& stream) const; 00032 void read(QDataStream& stream); 00033 Tasks& operator=(const Tasks& config); 00034 QString validate() const; 00035 00036 signals: 00037 void added(size_t index); 00038 void removed(const QString& task_id); 00039 void cleared(); 00040 void taskChanged(size_t index); 00041 void taskIdChanged(size_t task_index, const QString& task_id); 00042 00043 private: 00044 QVector<Task*> tasks_; 00045 00046 private slots: 00047 void taskChanged(); 00048 void taskIdChanged(const QString& task_id); 00049 void taskDestroyed(); 00050 }; 00051 } 00052 } 00053 } 00054 00055 #endif // _RQT_MRTA_APPLICATION_CONFIG_TASKS_H_