Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "rqt_multiplot/UrlItem.h"
00020
00021 namespace rqt_multiplot {
00022
00023
00024
00025
00026
00027 UrlItem::UrlItem(UrlScheme* scheme, Type type, const QModelIndex& index,
00028 UrlItem* parent) :
00029 parent_(parent),
00030 scheme_(scheme),
00031 type_(type),
00032 index_(index) {
00033 }
00034
00035 UrlItem::~UrlItem() {
00036 for (QMap<size_t, UrlItem*>::iterator it = children_.begin();
00037 it != children_.end(); ++it)
00038 delete it.value();
00039 }
00040
00041
00042
00043
00044
00045 UrlItem* UrlItem::getParent() const {
00046 return parent_;
00047 }
00048
00049 size_t UrlItem::getNumChildren() const {
00050 return children_.count();
00051 }
00052
00053 UrlItem* UrlItem::getChild(size_t row) const {
00054 QMap<size_t, UrlItem*>::const_iterator it = children_.find(row);
00055
00056 if (it != children_.end())
00057 return it.value();
00058 else
00059 return 0;
00060 }
00061
00062 int UrlItem::getRow() const {
00063 if (parent_) {
00064 for (QMap<size_t, UrlItem*>::const_iterator it = parent_->children_.
00065 begin(); it != parent_->children_.end(); ++it) {
00066 if (it.value() == this)
00067 return it.key();
00068 }
00069 }
00070
00071 return -1;
00072 }
00073
00074 void UrlItem::setScheme(UrlScheme* scheme) {
00075 scheme_ = scheme;
00076 }
00077
00078 UrlScheme* UrlItem::getScheme() const {
00079 return scheme_;
00080 }
00081
00082 void UrlItem::setType(Type type) {
00083 type_ = type;
00084 }
00085
00086 UrlItem::Type UrlItem::getType() const {
00087 return type_;
00088 }
00089
00090 void UrlItem::setIndex(const QModelIndex& index) {
00091 index_ = index;
00092 }
00093
00094 const QModelIndex& UrlItem::getIndex() const {
00095 return index_;
00096 }
00097
00098 QModelIndex UrlItem::getIndex(Type type) const {
00099 const UrlItem* item = this;
00100
00101 while (item) {
00102 if (item->type_ != type)
00103 item = item->parent_;
00104 else
00105 return item->index_;
00106 }
00107
00108 return QModelIndex();
00109 }
00110
00111
00112
00113
00114
00115 UrlItem* UrlItem::addChild(size_t row, Type type, const QModelIndex& index) {
00116 QMap<size_t, UrlItem*>::iterator it = children_.find(row);
00117
00118 if (it != children_.end()) {
00119 it.value()->type_ = type;
00120 it.value()->index_ = index;
00121
00122 return it.value();
00123 }
00124 else {
00125 UrlItem* item = new UrlItem(scheme_, type, index, this);
00126 children_.insert(row, item);
00127
00128 return item;
00129 }
00130 }
00131
00132 }