Source Code (Use browser search to find items of interest.)

Class Index

kcontrol'Kclock (./kdebase/kcontrol/clock/dtime.h:76)

class Kclock : public QWidget
{
  Q_OBJECT

public:
  Kclock( QWidget *parent=0, const char *name=0 ) 
    : QWidget(parent, name) {};
  
  void setTime(const QTime&);
  
protected:
  virtual void	paintEvent( QPaintEvent *event );
  
  
private:
  QTime		time;
};


kcontrol'Kclock::setTime() (./kdebase/kcontrol/clock/dtime.cpp:298)

void Kclock::setTime(const QTime &time) 
{
  this->time = time;
  repaint();
}


kcontrol'Kclock::paintEvent() (./kdebase/kcontrol/clock/dtime.cpp:304)

void Kclock::paintEvent( QPaintEvent * )
{
  if ( !isVisible() )
    return;

  QPainter paint;
  paint.begin( this );

  QPointArray pts;
  QPoint cp = rect().center();
  int d = QMIN(width(),height());
  paint.setPen( gray );
  paint.setBrush( gray );
  paint.setViewport(4,4,width(),height());

  for ( int c=0 ; c < 2 ; c++ )
    {
      QWMatrix matrix;
      matrix.translate( cp.x(), cp.y() );
      matrix.scale( d/1000.0F, d/1000.0F );

      // lancetta delle ore 
      float h_angle = 30*(time.hour()%12-3) + time.minute()/2;
      matrix.rotate( h_angle );
      paint.setWorldMatrix( matrix );
      pts.setPoints( 4, -20,0,  0,-20, 300,0, 0,20 );
      paint.drawPolygon( pts );
      matrix.rotate( -h_angle );

      // lancetta dei minuti
      float m_angle = (time.minute()-15)*6;
      matrix.rotate( m_angle );
      paint.setWorldMatrix( matrix );
      pts.setPoints( 4, -10,0, 0,-10, 400,0, 0,10 );
      paint.drawPolygon( pts );
      matrix.rotate( -m_angle );

      // lancetta dei secondi
      float s_angle = (time.second()-15)*6;
      matrix.rotate( s_angle );
      paint.setWorldMatrix( matrix );
      pts.setPoints(4,0,0,0,0,400,0,0,0);
      paint.drawPolygon( pts );
      matrix.rotate( -s_angle );

      // quadrante
      for ( int i=0 ; i < 60 ; i++ )
        {
          paint.setWorldMatrix( matrix );
          if ( (i % 5) == 0 )
            paint.drawLine( 450,0, 500,0 );	// draw hour lines
          else	paint.drawPoint( 480,0 );	// draw second lines
          matrix.rotate( 6 );
        }

      paint.setPen( black );
      paint.setBrush( black );
      paint.setViewport(0,0,width(),height());
    }
  paint.end();
}

QValidator::State KStrictIntValidator::validate( QString & input, int & d ) const 
{
  if( input.isEmpty() )
    return Valid;
  
  State st = QIntValidator::validate( input, d );

  if( st == Intermediate )
    return Invalid;
  
  return st;
}