text: /* -*- 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 "qwt_global.h"
  #include "qwt_dial.h"
  #include "qwt_dial_needle.h"
  #include <qdatetime.h>
  
  /*!
    \brief An analog clock
  
    \image html analogclock.png
  
    \par Example
    \code 
    #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);
  
    \endcode
  
    \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
      {
          //! Needle displaying the seconds
          SecondHand,
  
          //! Needle displaying the minutes
          MinuteHand,
  
          //! Needle displaying the hours
          HourHand,
  
          //! Number of needles
          NHands
      };
  
      explicit QwtAnalogClock( QWidget* parent = NULL );
      virtual ~QwtAnalogClock();
  
      void setHand( Hand, QwtDialNeedle * );
  
      const QwtDialNeedle *hand( Hand ) const;
      QwtDialNeedle *hand( Hand );
  
  public Q_SLOTS:
      void setCurrentTime();
      void setTime( const QTime & );
  
  protected:
      virtual void drawNeedle( QPainter *, const QPointF &,
          double radius, double direction, QPalette::ColorGroup ) const;
  
      virtual void drawHand( QPainter *, Hand, const QPointF &,
          double radius, double direction, QPalette::ColorGroup ) const;
  
  private:
      // use setHand instead
      void setNeedle( QwtDialNeedle * );
  
      QwtDialNeedle *d_hand[NHands];
  };
  
  #endif
  