From 42d9a74e6650efa7e65a5bdb5ff6577a32eed1d9 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Mon, 25 Aug 2014 11:42:50 -0700 Subject: [PATCH] Added min/max invalid display --- src/ui/designer/RCChannelWidget.cc | 45 ++++++++++++++++++++++++++---- src/ui/designer/RCChannelWidget.h | 11 ++++++++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/src/ui/designer/RCChannelWidget.cc b/src/ui/designer/RCChannelWidget.cc index dd1a2dbeb..eb6493ab0 100644 --- a/src/ui/designer/RCChannelWidget.cc +++ b/src/ui/designer/RCChannelWidget.cc @@ -37,6 +37,8 @@ RCChannelWidget::RCChannelWidget(QWidget *parent) : _min(_centerValue), _max(_centerValue), _trim(_centerValue), + _minValid(false), + _maxValid(false), _showMinMax(false), _showTrim(false) { @@ -90,19 +92,36 @@ void RCChannelWidget::paintEvent(QPaintEvent *event) painter.setBrush(hGradientBrush); if (_showMinMax) { + QString text; + // Draw the Min numeric value display to the left painter.drawText(0, rowHeigth, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, "Min"); - painter.drawText(0, rowHeigth * 2, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, QString::number(_min)); + if (_minValid) { + text = QString::number(_min); + } else { + text = "----"; + } + painter.drawText(0, rowHeigth * 2, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, text); // Draw the Max numeric value display to the right painter.drawText(width() - minMaxDisplayWidth, rowHeigth, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, "Max"); - painter.drawText(width() - minMaxDisplayWidth, rowHeigth * 2, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, QString::number(_max)); + if (_maxValid) { + text = QString::number(_max); + } else { + text = QString::number(_max); + } + painter.drawText(width() - minMaxDisplayWidth, rowHeigth * 2, minMaxDisplayWidth, fontHeight, Qt::AlignHCenter | Qt::AlignBottom, text); // Draw the Min/Max tick marks on the axis - int xTick = rcValueAxis.left() + (rcValueAxis.width() * ((float)(_min-_minRange) / (_maxRange-_minRange))); - painter.drawLine(xTick, rcValueAxis.top(), xTick, rcValueAxis.bottom()); - xTick = rcValueAxis.left() + (rcValueAxis.width() * ((float)(_max-_minRange) / (_maxRange-_minRange))); - painter.drawLine(xTick, rcValueAxis.top(), xTick, rcValueAxis.bottom()); + int xTick; + if (_minValid) { + int xTick = rcValueAxis.left() + (rcValueAxis.width() * ((float)(_min-_minRange) / (_maxRange-_minRange))); + painter.drawLine(xTick, rcValueAxis.top(), xTick, rcValueAxis.bottom()); + } + if (_maxValid) { + xTick = rcValueAxis.left() + (rcValueAxis.width() * ((float)(_max-_minRange) / (_maxRange-_minRange))); + painter.drawLine(xTick, rcValueAxis.top(), xTick, rcValueAxis.bottom()); + } } if (_showTrim) { @@ -221,3 +240,17 @@ void RCChannelWidget::_drawValuePointer(QPainter* painter, int xTip, int yTip, i painter->drawPolygon (trianglePoints, 3); } + +/// @brief Set whether the Min range value is valid or not. +void RCChannelWidget::setMinValid(bool valid) +{ + _minValid = valid; + update(); +} + +/// @brief Set whether the Max range value is valid or not. +void RCChannelWidget::setMaxValid(bool valid) +{ + _maxValid = valid; + update(); +} diff --git a/src/ui/designer/RCChannelWidget.h b/src/ui/designer/RCChannelWidget.h index 9040760ed..254cb3e46 100644 --- a/src/ui/designer/RCChannelWidget.h +++ b/src/ui/designer/RCChannelWidget.h @@ -46,6 +46,12 @@ public: void setMinMax(int min, int max); + /// @brief Set whether the Min range value is valid or not. + void setMinValid(bool valid); + + /// @brief Set whether the Max range value is valid or not. + void setMaxValid(bool valid); + /// @brief Sets the Trim value for the channel void setTrim(int value); @@ -56,6 +62,8 @@ public: void showMinMax(bool show); bool isMinMaxShown() { return _showMinMax; } + bool isMinValid(void) { return _minValid; } + bool isMaxValid(void) { return _maxValid; } void showTrim(bool show); bool isTrimShown() { return _showTrim; } @@ -71,6 +79,9 @@ private: int _max; ///< Max RC value int _trim; ///< RC Value for Trim position + bool _minValid; ///< true: minimum value is valid + bool _maxValid; ///< true: maximum value is valid + bool _showMinMax; ///< true: show min max values on display bool _showTrim; ///< true: show trim value on display -- 2.22.0