Skip to content
qwt_thermo.h 4.59 KiB
Newer Older
pixhawk's avatar
pixhawk committed
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

#ifndef QWT_THERMO_H
#define QWT_THERMO_H

#include "qwt_global.h"
#include "qwt_abstract_scale.h"
Bryant's avatar
Bryant committed
#include "qwt_interval.h"
pixhawk's avatar
pixhawk committed

class QwtScaleDraw;
Bryant's avatar
Bryant committed
class QwtColorMap;
pixhawk's avatar
pixhawk committed

/*!
  \brief The Thermometer Widget

  QwtThermo is a widget which displays a value in an interval. It supports:
  - a horizontal or vertical layout;
  - a range;
  - a scale;
  - an alarm level.

  \image html sysinfo.png

Bryant's avatar
Bryant committed
  The fill colors might be calculated from an optional color map
  If no color map has been assigned QwtThermo uses the 
  following colors/brushes from the widget palette:

  - QPalette::Base
    Background of the pipe
  - QPalette::ButtonText
    Fill brush below the alarm level
  - QPalette::Highlight
    Fill brush for the values above the alarm level
  - QPalette::WindowText
    For the axis of the scale
  - QPalette::Text
    For the labels of the scale
pixhawk's avatar
pixhawk committed
*/
Bryant's avatar
Bryant committed
class QWT_EXPORT QwtThermo: public QwtAbstractScale
pixhawk's avatar
pixhawk committed
{
    Q_OBJECT

Bryant's avatar
Bryant committed
    Q_ENUMS( ScalePosition )
    Q_ENUMS( OriginMode )

    Q_PROPERTY( Qt::Orientation orientation
        READ orientation WRITE setOrientation )
    Q_PROPERTY( ScalePosition scalePosition 
        READ scalePosition WRITE setScalePosition )
    Q_PROPERTY( OriginMode originMode READ originMode WRITE setOriginMode )
pixhawk's avatar
pixhawk committed

    Q_PROPERTY( bool alarmEnabled READ alarmEnabled WRITE setAlarmEnabled )
    Q_PROPERTY( double alarmLevel READ alarmLevel WRITE setAlarmLevel )
Bryant's avatar
Bryant committed
    Q_PROPERTY( double origin READ origin WRITE setOrigin )
    Q_PROPERTY( int spacing READ spacing WRITE setSpacing )
pixhawk's avatar
pixhawk committed
    Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
    Q_PROPERTY( int pipeWidth READ pipeWidth WRITE setPipeWidth )
    Q_PROPERTY( double value READ value WRITE setValue )

public:
Bryant's avatar
Bryant committed
    /*!
      Position of the scale
      \sa setScalePosition(), setOrientation()
     */
    enum ScalePosition
    {
        //! The slider has no scale
Bryant's avatar
Bryant committed

        //! The scale is right of a vertical or below of a horizontal slider
        LeadingScale,

        //! The scale is left of a vertical or above of a horizontal slider
        TrailingScale
pixhawk's avatar
pixhawk committed
    };

Bryant's avatar
Bryant committed
    /*!
      Origin mode. This property specifies where the beginning of the liquid
      is placed.

      \sa setOriginMode(), setOrigin()
    */
    enum OriginMode
    {
        //! The origin is the minimum of the scale
        OriginMinimum,

        //! The origin is the maximum of the scale
        OriginMaximum,

        //! The origin is specified using the origin() property
        OriginCustom
    };

    explicit QwtThermo( QWidget *parent = NULL );
pixhawk's avatar
pixhawk committed
    virtual ~QwtThermo();

Bryant's avatar
Bryant committed
    void setOrientation( Qt::Orientation );
    Qt::Orientation orientation() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setScalePosition( ScalePosition );
    ScalePosition scalePosition() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setSpacing( int );
    int spacing() const;

    void setBorderWidth( int w );
pixhawk's avatar
pixhawk committed
    int borderWidth() const;

Bryant's avatar
Bryant committed
    void setOriginMode( OriginMode );
    OriginMode originMode() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setOrigin( double );
    double origin() const;
Bryant's avatar
Bryant committed
    void setFillBrush( const QBrush &b );
    QBrush fillBrush() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setAlarmBrush( const QBrush &b );
    QBrush alarmBrush() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setAlarmLevel( double v );
pixhawk's avatar
pixhawk committed
    double alarmLevel() const;

Bryant's avatar
Bryant committed
    void setAlarmEnabled( bool tf );
pixhawk's avatar
pixhawk committed
    bool alarmEnabled() const;

Bryant's avatar
Bryant committed
    void setColorMap( QwtColorMap * );
    QwtColorMap *colorMap();
    const QwtColorMap *colorMap() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setPipeWidth( int w );
    int pipeWidth() const;
pixhawk's avatar
pixhawk committed

Bryant's avatar
Bryant committed
    void setRangeFlags( QwtInterval::BorderFlags );
    QwtInterval::BorderFlags rangeFlags() const;
pixhawk's avatar
pixhawk committed

    double value() const;

    virtual QSize sizeHint() const;
    virtual QSize minimumSizeHint() const;

Bryant's avatar
Bryant committed
    void setScaleDraw( QwtScaleDraw * );
pixhawk's avatar
pixhawk committed
    const QwtScaleDraw *scaleDraw() const;

Bryant's avatar
Bryant committed
public Q_SLOTS:
    virtual void setValue( double val );
pixhawk's avatar
pixhawk committed
protected:
Bryant's avatar
Bryant committed
    virtual void drawLiquid( QPainter *, const QRect & ) const;
pixhawk's avatar
pixhawk committed
    virtual void scaleChange();

Bryant's avatar
Bryant committed
    virtual void paintEvent( QPaintEvent * );
    virtual void resizeEvent( QResizeEvent * );
    virtual void changeEvent( QEvent * );
pixhawk's avatar
pixhawk committed

    QwtScaleDraw *scaleDraw();

Bryant's avatar
Bryant committed
    QRect pipeRect() const;
    QRect fillRect( const QRect & ) const;
    QRect alarmRect( const QRect & ) const;

pixhawk's avatar
pixhawk committed
private:
Bryant's avatar
Bryant committed
    void layoutThermo( bool );
pixhawk's avatar
pixhawk committed
    class PrivateData;
    PrivateData *d_data;
};

#endif