status_list.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include <stdio.h>
31 
33 
35 
36 namespace rviz
37 {
38 StatusList::StatusList(const QString& name, Property* parent) : StatusProperty("", "", Ok, parent)
39 {
40  setName(name);
41  setShouldBeSaved(false);
42 }
43 
44 void StatusList::setName(const QString& name)
45 {
46  name_prefix_ = name;
47  updateLabel();
48 }
49 
50 void StatusList::setStatus(Level level, const QString& name, const QString& text)
51 {
52  QHash<QString, StatusProperty*>::iterator child_iter = status_children_.find(name);
53  StatusProperty* child;
54  if (child_iter == status_children_.end())
55  {
56  child = new StatusProperty(name, text, level, this);
57  status_children_.insert(name, child);
58  }
59  else
60  {
61  child = child_iter.value();
62  child->setLevel(level);
63  child->setValue(text);
64  }
65  if (level > level_)
66  {
67  setLevel(level);
68  }
69  else if (level < level_)
70  {
71  updateLevel();
72  }
73 }
74 
75 void StatusList::deleteStatus(const QString& name)
76 {
77  StatusProperty* child = status_children_.take(name);
78  if (child)
79  {
80  delete child;
81  updateLevel();
82  }
83 }
84 
86 {
87  int num_rows = numChildren();
88  if (num_rows > 0)
89  {
90  QList<StatusProperty*> to_be_deleted = status_children_.values();
91 
92  status_children_.clear();
93 
94  // It is important here to clear the status_children_ list before
95  // deleting its contents. On Macs the deletion can indirectly
96  // trigger a call to setStatus(), and status_children_ should not
97  // contain any pointers to deleted memory at that time.
98  for (int i = 0; i < to_be_deleted.size(); i++)
99  {
100  delete to_be_deleted[i];
101  }
102  }
103  setLevel(Ok);
104 }
105 
107 {
108  Level new_level = Ok;
109 
110  QHash<QString, StatusProperty*>::iterator iter;
111  for (iter = status_children_.begin(); iter != status_children_.end(); iter++)
112  {
113  Level child_level = iter.value()->getLevel();
114  if (child_level > new_level)
115  {
116  new_level = child_level;
117  }
118  }
119  setLevel(new_level);
120 }
121 
123 {
124  StatusProperty::setLevel(new_level);
125  updateLabel();
126 }
127 
129 {
131 }
132 
133 } // end namespace rviz
virtual void setLevel(Level level)
A single element of a property tree, with a name, value, description, and possibly children...
Definition: property.h:100
bool setValue(const QVariant &new_value) override
Set the status text. Overridden from Property.
virtual void setName(const QString &name)
Set the name.
Definition: property.cpp:155
virtual Level getLevel() const
QString name_prefix_
Definition: status_list.h:60
void setName(const QString &name) override
Set the prefix of the name.
Definition: status_list.cpp:44
void setShouldBeSaved(bool save)
If save is true and getReadOnly() is false, shouldBeSaved will return true; otherwise false...
Definition: property.h:385
StatusList(const QString &name=QString("Status"), Property *parent=nullptr)
Definition: status_list.cpp:38
virtual int numChildren() const
Return the number of child objects (Property or otherwise).
Definition: property.h:227
void setStatus(Level level, const QString &name, const QString &text)
Definition: status_list.cpp:50
static QString statusWord(Level level)
Return the word appropriate for the given status level: "Ok", "Warn", or "Error". ...
void updateLabel()
Update the label text based on the name_prefix_ and the current status level.
void setLevel(Level level) override
StatusProperty(const QString &name, const QString &text, Level level, Property *parent)
QHash< QString, StatusProperty * > status_children_
Definition: status_list.h:59
void deleteStatus(const QString &name)
Definition: status_list.cpp:75


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Mon Aug 15 2022 02:05:17