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
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <QColor>
00031
00032 #include "rviz/properties/property_tree_model.h"
00033
00034 #include "rviz/properties/status_property.h"
00035 #include "rviz/load_resource.h"
00036
00037 namespace rviz
00038 {
00039
00040 QColor StatusProperty::status_colors_[3] = { QColor(), QColor( 192, 128, 0 ), QColor( 192, 32, 32 ) };
00041 QString StatusProperty::status_words_[3] = { "Ok", "Warn", "Error" };
00042
00043 StatusProperty::StatusProperty( const QString& name, const QString& text, Level level, Property* parent )
00044 : Property( name, text, text, parent )
00045 , level_( level )
00046 {
00047 setShouldBeSaved( false );
00048 status_icons_[0] = loadPixmap( "package://rviz/icons/ok.png" );
00049 status_icons_[1] = loadPixmap( "package://rviz/icons/warning.png" );
00050 status_icons_[2] = loadPixmap( "package://rviz/icons/error.png" );
00051 }
00052
00053 bool StatusProperty::setValue( const QVariant& new_value )
00054 {
00055 setDescription( new_value.toString() );
00056 return Property::setValue( new_value );
00057 }
00058
00059 QVariant StatusProperty::getViewData( int column, int role ) const
00060 {
00061 if ( (getViewFlags(column) & Qt::ItemIsEnabled) && column == 0 && role == Qt::ForegroundRole )
00062 {
00063 return statusColor( level_ );
00064 }
00065 if( column == 0 && role == Qt::DecorationRole )
00066 {
00067 return statusIcon( level_ );
00068 }
00069 return Property::getViewData( column, role );
00070 }
00071
00072 Qt::ItemFlags StatusProperty::getViewFlags( int column ) const
00073 {
00074 return Property::getViewFlags( column );
00075 }
00076
00077
00078 QColor StatusProperty::statusColor( Level level )
00079 {
00080 return status_colors_[ (int) level ];
00081 }
00082
00083
00084 QIcon StatusProperty::statusIcon( Level level ) const
00085 {
00086 return status_icons_[ level ];
00087 }
00088
00091
00092 QString StatusProperty::statusWord( Level level )
00093 {
00094 return status_words_[ (int) level ];
00095 }
00096
00097
00098 void StatusProperty::setLevel( Level level )
00099 {
00100 if( level_ != level )
00101 {
00102 level_ = level;
00103 if( model_ )
00104 model_->emitDataChanged( this );
00105 }
00106 }
00107
00108 }