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 
39 StatusList::StatusList( const QString& name, Property* parent )
40  : StatusProperty( "", "", Ok, parent )
41 {
42  setName( name );
43  setShouldBeSaved( false );
44 }
45 
46 void StatusList::setName( const QString& name )
47 {
48  name_prefix_ = name;
49  updateLabel();
50 }
51 
52 void StatusList::setStatus( Level level, const QString& name, const QString& text )
53 {
54  QHash<QString, StatusProperty*>::iterator child_iter = status_children_.find( name );
55  StatusProperty* child;
56  if( child_iter == status_children_.end() )
57  {
58  child = new StatusProperty( name, text, level, this );
59  status_children_.insert( name, child );
60  }
61  else
62  {
63  child = child_iter.value();
64  child->setLevel( level );
65  child->setValue( text );
66  }
67  if( level > level_ )
68  {
69  setLevel( level );
70  }
71  else if( level < level_ )
72  {
73  updateLevel();
74  }
75 }
76 
77 void StatusList::deleteStatus( const QString& name )
78 {
79  StatusProperty* child = status_children_.take( name );
80  if( child )
81  {
82  delete child;
83  updateLevel();
84  }
85 }
86 
88 {
89  int num_rows = numChildren();
90  if( num_rows > 0 )
91  {
92  QList<StatusProperty*> to_be_deleted = status_children_.values();
93 
94  status_children_.clear();
95 
96  // It is important here to clear the status_children_ list before
97  // deleting its contents. On Macs the deletion can indirectly
98  // trigger a call to setStatus(), and status_children_ should not
99  // contain any pointers to deleted memory at that time.
100  for( int i = 0; i < to_be_deleted.size(); i++ )
101  {
102  delete to_be_deleted[ i ];
103  }
104  }
105  setLevel( Ok );
106 }
107 
109 {
110  Level new_level = Ok;
111 
112  QHash<QString, StatusProperty*>::iterator iter;
113  for( iter = status_children_.begin(); iter != status_children_.end(); iter++ )
114  {
115  Level child_level = iter.value()->getLevel();
116  if( child_level > new_level )
117  {
118  new_level = child_level;
119  }
120  }
121  setLevel( new_level );
122 }
123 
124 void StatusList::setLevel( Level new_level )
125 {
126  StatusProperty::setLevel( new_level );
127  updateLabel();
128 }
129 
131 {
133 }
134 
135 } // 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
virtual void setLevel(Level level)
virtual void setName(const QString &name)
Set the name.
Definition: property.cpp:150
virtual Level getLevel() const
virtual int numChildren() const
Return the number of child objects (Property or otherwise).
Definition: property.h:215
QString name_prefix_
Definition: status_list.h:61
void setShouldBeSaved(bool save)
If save is true and getReadOnly() is false, shouldBeSaved will return true; otherwise false...
Definition: property.h:361
void setStatus(Level level, const QString &name, const QString &text)
Definition: status_list.cpp:52
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.
StatusProperty(const QString &name, const QString &text, Level level, Property *parent)
StatusList(const QString &name=QString("Status"), Property *parent=0)
Definition: status_list.cpp:39
virtual void setName(const QString &name)
Set the prefix of the name.
Definition: status_list.cpp:46
virtual bool setValue(const QVariant &new_value)
Set the status text. Overridden from Property.
QHash< QString, StatusProperty * > status_children_
Definition: status_list.h:60
void deleteStatus(const QString &name)
Definition: status_list.cpp:77


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Wed Aug 28 2019 04:01:51