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 <QPainter>
00020 #include <QPaintEvent>
00021
00022 #include <ui_CurveItemWidget.h>
00023
00024 #include "rqt_multiplot/CurveItemWidget.h"
00025
00026 namespace rqt_multiplot {
00027
00028
00029
00030
00031
00032 CurveItemWidget::CurveItemWidget(QWidget* parent) :
00033 QWidget(parent),
00034 ui_(new Ui::CurveItemWidget()),
00035 config_(0) {
00036 ui_->setupUi(this);
00037
00038 ui_->frameColor->installEventFilter(this);
00039 }
00040
00041 CurveItemWidget::~CurveItemWidget() {
00042 delete ui_;
00043 }
00044
00045
00046
00047
00048
00049 void CurveItemWidget::setConfig(CurveConfig* config) {
00050 if (config != config_) {
00051 if (config_) {
00052 disconnect(config_, SIGNAL(titleChanged(const QString&)), this,
00053 SLOT(configTitleChanged(const QString&)));
00054 disconnect(config_->getAxisConfig(CurveConfig::X),
00055 SIGNAL(changed()), this, SLOT(configXAxisConfigChanged()));
00056 disconnect(config_->getAxisConfig(CurveConfig::Y),
00057 SIGNAL(changed()), this, SLOT(configYAxisConfigChanged()));
00058 disconnect(config_->getColorConfig(), SIGNAL(currentColorChanged(const
00059 QColor&)), this, SLOT(configColorConfigCurrentColorChanged(const
00060 QColor&)));
00061 }
00062
00063 config_ = config;
00064
00065 if (config) {
00066 connect(config, SIGNAL(titleChanged(const QString&)), this,
00067 SLOT(configTitleChanged(const QString&)));
00068 connect(config->getAxisConfig(CurveConfig::X),
00069 SIGNAL(changed()), this, SLOT(configXAxisConfigChanged()));
00070 connect(config->getAxisConfig(CurveConfig::Y),
00071 SIGNAL(changed()), this, SLOT(configYAxisConfigChanged()));
00072 connect(config->getColorConfig(), SIGNAL(currentColorChanged(const
00073 QColor&)), this, SLOT(configColorConfigCurrentColorChanged(const
00074 QColor&)));
00075
00076 configTitleChanged(config->getTitle());
00077 configXAxisConfigChanged();
00078 configYAxisConfigChanged();
00079 configColorConfigCurrentColorChanged(config->getColorConfig()->
00080 getCurrentColor());
00081 }
00082 }
00083 }
00084
00085 CurveConfig* CurveItemWidget::getConfig() const {
00086 return config_;
00087 }
00088
00089
00090
00091
00092
00093 bool CurveItemWidget::eventFilter(QObject* object, QEvent* event) {
00094 if (config_) {
00095 if ((object == ui_->frameColor) && (event->type() == QEvent::Paint)) {
00096 QPaintEvent* paintEvent = static_cast<QPaintEvent*>(event);
00097
00098 QPainter painter(ui_->frameColor);
00099 QColor color = config_->getColorConfig()->getCurrentColor();
00100
00101 painter.setBrush(color);
00102 painter.setPen((color.lightnessF() > 0.5) ? Qt::black : Qt::white);
00103
00104 painter.fillRect(paintEvent->rect(), color);
00105 painter.drawText(paintEvent->rect(), color.name().toUpper(),
00106 Qt::AlignHCenter | Qt::AlignVCenter);
00107 }
00108 }
00109
00110 return false;
00111 }
00112
00113
00114
00115
00116
00117 void CurveItemWidget::configTitleChanged(const QString& title) {
00118 ui_->labelTitle->setText(config_->getTitle());
00119 }
00120
00121 void CurveItemWidget::configXAxisConfigChanged() {
00122 CurveAxisConfig* config = config_->getAxisConfig(CurveConfig::X);
00123
00124 QString text = config->getTopic();
00125
00126 if (config->getFieldType() == CurveAxisConfig::MessageData)
00127 text += "/"+config->getField();
00128 else
00129 text += "/receipt_time";
00130
00131 ui_->labelXAxis->setText(text);
00132 }
00133
00134 void CurveItemWidget::configYAxisConfigChanged() {
00135 CurveAxisConfig* config = config_->getAxisConfig(CurveConfig::Y);
00136
00137 QString text = config->getTopic();
00138
00139 if (config->getFieldType() == CurveAxisConfig::MessageData)
00140 text += "/"+config->getField();
00141 else
00142 text += "/receipt_time";
00143
00144 ui_->labelYAxis->setText(text);
00145 }
00146
00147 void CurveItemWidget::configColorConfigCurrentColorChanged(const QColor&
00148 color) {
00149 ui_->frameColor->repaint();
00150 }
00151
00152 }