/* -*- 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 #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 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: /*! Hand type \sa setHand(), hand() */ enum Hand { 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 &, int radius, double direction, QPalette::ColorGroup) const; virtual void drawHand(QPainter *, Hand, const QPoint &, int radius, double direction, QPalette::ColorGroup) const; private: virtual void setNeedle(QwtDialNeedle *); void initClock(); QwtDialNeedle *d_hand[NHands]; }; #endif