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;
}