qwt_analog_clock.h 2.23 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
/* -*- 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_ANALOG_CLOCK_H
#define QWT_ANALOG_CLOCK_H

#include <qdatetime.h>
#include "qwt_global.h"
#include "qwt_dial.h"
#include "qwt_dial_needle.h"

/*!
  \brief An analog clock

  \image html analogclock.png

  \par Example
  \verbatim #include <qwt_analog_clock.h>

  QwtAnalogClock *clock = new QwtAnalogClock(...);
  clock->scaleDraw()->setPenWidth(3);
  clock->setLineWidth(6);
  clock->setFrameShadow(QwtDial::Sunken);
  clock->setTime();

  // update the clock every second
  QTimer *timer = new QTimer(clock);
  timer->connect(timer, SIGNAL(timeout()), clock, SLOT(setCurrentTime()));
  timer->start(1000);

  \endverbatim

  Qwt is missing a set of good looking hands.
  Contributions are very welcome.

  \note The examples/dials example shows how to use QwtAnalogClock.
*/

class QWT_EXPORT QwtAnalogClock: public QwtDial
{
    Q_OBJECT

public:
50
    /*!
pixhawk's avatar
pixhawk committed
51 52 53 54
        Hand type
        \sa setHand(), hand()
    */

55
    enum Hand {
pixhawk's avatar
pixhawk committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
        SecondHand,
        MinuteHand,
        HourHand,

        NHands
    };

    explicit QwtAnalogClock(QWidget* parent = NULL);
#if QT_VERSION < 0x040000
    explicit QwtAnalogClock(QWidget* parent, const char *name);
#endif
    virtual ~QwtAnalogClock();

    virtual void setHand(Hand, QwtDialNeedle *);
    const QwtDialNeedle *hand(Hand) const;
    QwtDialNeedle *hand(Hand);

public slots:
    void setCurrentTime();
    void setTime(const QTime & = QTime::currentTime());

protected:
    virtual QwtText scaleLabel(double) const;

    virtual void drawNeedle(QPainter *, const QPoint &,
81
                            int radius, double direction, QPalette::ColorGroup) const;
pixhawk's avatar
pixhawk committed
82 83

    virtual void drawHand(QPainter *, Hand, const QPoint &,
84
                          int radius, double direction, QPalette::ColorGroup) const;
pixhawk's avatar
pixhawk committed
85 86 87 88 89 90 91 92 93

private:
    virtual void setNeedle(QwtDialNeedle *);
    void initClock();

    QwtDialNeedle *d_hand[NHands];
};

#endif