示例#1
0
void
SearchBall::step(void)
{
	switch (state)
	{
	case Initial:

		if (isTime2Run()) {
			startDebugInfo();
			Initial_state_code();

			if (Initial2Stopped0_transition_code()) {
				state = Stopped;
				resetStopWatch();
			}
			endDebugInfo();
		}

		break;
	case RotateBody:
		_BallDetector->step();

		if (isTime2Run()) {
			startDebugInfo();
			RotateBody_state_code();

			if (RotateBody2Stopped0_transition_code()) {
				state = Stopped;
				resetStopWatch();
			}
			endDebugInfo();
		}

		_Body->step();
		_Attention->step();
		break;
	case Stopped:
		_BallDetector->step();

		if (isTime2Run()) {
			startDebugInfo();
			Stopped_state_code();

			if (Stopped2RotateBody0_transition_code()) {
				state = RotateBody;
				resetStopWatch();
			}
			endDebugInfo();
		}

		_Attention->step();
		_Body->step();
		break;
	default:
		cout << "[SearchBall::step()] Invalid state\n";
	}
}
示例#2
0
void SearchBall::restartSearch()
{
	state = Stopped;
	resetStopWatch();
}
示例#3
0
Clock::Clock( QWidget * parent, const char *, WFlags f )
    : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr
{
    alarmDlg = 0;
    swLayout = 0;
    alarmProc = 0;
    alarmCmd = 0;
    dayBtn = new QToolButton * [7];

    Config config( "qpe" );
    config.setGroup("Time");
    ampm = config.readBoolEntry( "AMPM", TRUE );
    onMonday = config.readBoolEntry( "MONDAY" );

    connect( tabs, SIGNAL(currentChanged(QWidget*)),
             this, SLOT(tabChanged(QWidget*)) );

    analogStopwatch = new AnalogClock( swFrame );
    stopwatchLcd = new QLCDNumber( swFrame );
    stopwatchLcd->setFrameStyle( QFrame::NoFrame );
    stopwatchLcd->setSegmentStyle( QLCDNumber::Flat );
    stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) );

    analogClock->display( QTime::currentTime() );
    clockLcd->setNumDigits( 5 );
    clockLcd->setFixedWidth( clockLcd->sizeHint().width() );
    date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) );
    if ( qApp->desktop()->width() < 200 )
        date->setFont( QFont(date->font().family(), 14, QFont::Bold) );
    if ( qApp->desktop()->height() > 240 ) {
        clockLcd->setFixedHeight( 30 );
        stopwatchLcd->setFixedHeight( 30 );
    }

    connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) );
    connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) );

    t = new QTimer( this );
    connect( t, SIGNAL(timeout()), SLOT(updateClock()) );
    t->start( 1000 );

    applyAlarmTimer = new QTimer( this );
    connect( applyAlarmTimer, SIGNAL(timeout()),
        this, SLOT(applyDailyAlarm()) );

    alarmt = new QTimer( this );
    connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) );

    connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) );
    connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) );

    swatch_running = FALSE;
    swatch_totalms = 0;
    swatch_currLap = 0;
    swatch_dispLap = 0;
    stopwatchLcd->setNumDigits( 8+1+sw_prec );
    stopwatchLcd->display( "00:00:00.00" );

    QVBoxLayout *lvb = new QVBoxLayout( lapFrame );
    nextLapBtn = new QToolButton( UpArrow, lapFrame );
    connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) );
    nextLapBtn->setAccel( Key_Up );
    lvb->addWidget( nextLapBtn );
    prevLapBtn = new QToolButton( DownArrow, lapFrame );
    connect( prevLapBtn, SIGNAL(clicked()), this, SLOT(prevLap()) );
    prevLapBtn->setAccel( Key_Down );
    prevLapBtn->setMinimumWidth( 15 );
    lvb->addWidget( prevLapBtn );
    prevLapBtn->setEnabled( FALSE );
    nextLapBtn->setEnabled( FALSE );

    reset->setEnabled( FALSE );

    lapLcd->setNumDigits( 8+1+sw_prec );
    lapLcd->display( "00:00:00.00" );

    splitLcd->setNumDigits( 8+1+sw_prec );
    splitLcd->display( "00:00:00.00" );

    lapNumLcd->display( 1 );

    lapTimer = new QTimer( this );
    connect( lapTimer, SIGNAL(timeout()), this, SLOT(lapTimeout()) );

    for (uint s = 0; s < swatch_splitms.count(); s++ )
        swatch_splitms[(int)s] = 0;

    connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) );

    cdGroup->hide(); // XXX implement countdown timer.

    connect( dailyHour, SIGNAL(valueChanged(int)), this, SLOT(scheduleApplyDailyAlarm()) );
    connect( dailyMinute, SIGNAL(valueChanged(int)), this, SLOT(setDailyMinute(int)) );
    connect( dailyAmPm, SIGNAL(activated(int)), this, SLOT(setDailyAmPm(int)) );
    connect( dailyEnabled, SIGNAL(toggled(bool)), this, SLOT(enableDaily(bool)) );
    cdLcd->display( "00:00" );

    dailyMinute->setValidator(0);

    Config cConfig( "Clock" ); // No tr
    cConfig.setGroup( "Daily Alarm" );

    QStringList days;
    days.append( tr("Mon", "Monday") );
    days.append( tr("Tue", "Tuesday") );
    days.append( tr("Wed", "Wednesday") );
    days.append( tr("Thu", "Thursday") );
    days.append( tr("Fri", "Friday") );
    days.append( tr("Sat", "Saturday") );
    days.append( tr("Sun", "Sunday") );

    int i;
    QHBoxLayout *hb = new QHBoxLayout( daysFrame );
    for ( i = 0; i < 7; i++ ) {
        dayBtn[i] = new QToolButton( daysFrame );
        hb->addWidget( dayBtn[i] );
        dayBtn[i]->setToggleButton( TRUE );
        dayBtn[i]->setOn( TRUE );
        dayBtn[i]->setFocusPolicy( StrongFocus );
        connect( dayBtn[i], SIGNAL(toggled(bool)), this, SLOT(scheduleApplyDailyAlarm()) );
    }

    for ( i = 0; i < 7; i++ )
        dayBtn[dayBtnIdx(i+1)]->setText( days[i] );

    QStringList exclDays = cConfig.readListEntry( "ExcludeDays", ',' );
    QStringList::Iterator it;
    for ( it = exclDays.begin(); it != exclDays.end(); ++it ) {
        int d = (*it).toInt();
        if ( d >= 1 && d <= 7 )
            dayBtn[dayBtnIdx(d)]->setOn( FALSE );
    }

    sbSnoozeTime->setValue( cConfig.readNumEntry( "SnoozeTime", DEFAULT_SNOOZE_TIME ) );

    connect( sndOption, SIGNAL( activated(int) ), SLOT( slotSoundChange(int) ) );
    sndOption->insertItem(tr("Default alarm"));
    sndOption->insertItem(tr("Play file in background"));
    sndOption->insertItem(tr("Play file with OpiePlayer"));
    sndOption->insertItem(tr("Play file with OpiePlayer 2"));

    bool alarm = cConfig.readBoolEntry("Enabled", FALSE);
    dailyEnabled->setChecked( alarm );
    sndGroup->setEnabled( alarm );

    // FIXME ODP migrate to own config class.. merge config options
    Config cfg_qpe( "qpe" );
    cfg_qpe.setGroup( "Time" );
    sndFileName->setText( cfg_qpe.readEntry( "mp3File" ) );
    sndOption->setCurrentItem( cfg_qpe.readNumEntry( "mp3Player", DEFAULT_ALARMTYPE ) );
    slotSoundChange(sndOption->currentItem());

    int m = cConfig.readNumEntry( "Minute", 0 );
    dailyMinute->setValue( m );
//    dailyMinute->setPrefix( m <= 9 ? "0" : "" );
    int h = cConfig.readNumEntry( "Hour", 7 );
    if ( ampm ) {
        if (h > 12) {
            h -= 12;
            dailyAmPm->setCurrentItem( 1 );
        }
        if (h == 0) h = 12;
        dailyHour->setMinValue( 1 );
        dailyHour->setMaxValue( 12 );
    } else {
        dailyAmPm->hide();
    }
    dailyHour->setValue( h );

    connect( ((MySpinBox*)dailyHour)->lineEdit(), SIGNAL(textChanged(const QString&)),
            this, SLOT(dailyEdited()) );
    connect( ((MySpinBox*)dailyMinute)->lineEdit(), SIGNAL(textChanged(const QString&)),
            this, SLOT(dailyEdited()) );

#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
    connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
            this, SLOT(appMessage(const QCString&,const QByteArray&)) );
#endif

    QTimer::singleShot( 0, this, SLOT(updateClock()) );
    swFrame->installEventFilter( this );

    init = TRUE;
}