示例#1
0
/**
 * @brief PWidget::sendEvent zajištuje jenom rekurzivní volání subwidgetů
 * @param key
 * @param touch
 * @return true pokud se našel widget kterej to zpracoval
 */
bool PWidget::sendEvent(PKeyEvent *key, PTouchEvent *touch)
{
    //poprvé přinde od screenu a musi to probublat dál
    //přepočitat souřadnice na relativní když se to bude posilat dál
    //prvni projet děti, když budou false pak teprve volat na sebe

    if (!visible() || !enabled())
        return false;

    PWidget * t = child;

    while(t)
    {
        bool ok;
        ok = t->sendEvent(key,touch);
        if (ok)
            return true;
        t = t->next;
    }

    bool ok = eventForMe(key,touch);
    if (ok)
        processEvent(key,touch);

    return ok;
}
示例#2
0
int ECandle::handleEvent( Event& tmpEvent )
{	
	if ( eventForMe( tmpEvent ) )  {
		if ( this->isEnabled ) {
#ifdef DEBUG_ECANDLE
			Serial.println("ECandle::handleEvent(): Its my event!");
#endif
			switch ( this->currentState ) {
			case csOff:  //свет полностью включен
				if ( tmpEvent.eventType == evTurnOn ) {
					setState(csFadeIn);
				};
				return getID();
				break;
			case csFadeIn:
				if ( tmpEvent.eventType == evTurnOff ) {
					setState( csFadeOut );
				};
				if ( tmpEvent.eventType == evTurnOn ) {
					setState( csOn );
				};
				return getID();
				break;
			case csOn:
				if ( tmpEvent.eventType == evTurnOff ) {
					setState( csFadeOut );
				};
				return getID();
				break;
			case csFadeOut:
				if ( tmpEvent.eventType == evTurnOn ) {
					setState( csFadeIn );
				}; 
				if ( tmpEvent.eventType == evTurnOff ) {
					setState( csOff );
				}; 
				return getID();
				break;
//		case csFlickering:
//  ???????????????????
			default:
				break;
			}
		}
		return EOutputDevice::handleEvent( tmpEvent );
	}
	return 0;
};
示例#3
0
int EOutputDevice::handleEvent( Event& tmpEvent )
{
	if ( eventForMe( tmpEvent ) ) {
		if ( this->isEnabled ) {
			switch ( tmpEvent.eventType ) {
			case evTurnOn:
				on();
				return this->getID();
				break;
			case evTurnOff:
				off();
				return this->getID();
				break;
			default:
				break;
			}
		} 
		return EDevice::handleEvent( tmpEvent );
	}
	return 0;
};