widgetmodel/alfwidgetmodel/inc/alfeventoutput.h
branchRCL_3
changeset 26 0e9bb658ef58
parent 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/widgetmodel/alfwidgetmodel/inc/alfeventoutput.h	Wed Sep 01 12:23:18 2010 +0100
@@ -0,0 +1,344 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Class for various output events, including custom events.
+*
+*/
+
+
+#ifndef ALFEVENTOUTPUT_H
+#define ALFEVENTOUTPUT_H
+
+
+#include <osn/osndefines.h>
+#include <alf/alfcommand.h>
+#include <alf/alftypes.h>
+
+#include <osn/osntypes.h>
+#include <osn/ustring.h>
+using namespace osncore;
+
+#include <memory>
+using namespace std;
+
+#ifdef RD_TACTILE_FEEDBACK
+#include <touchfeedback.h>
+#endif // RD_TACTILE_FEEDBACK
+
+namespace Alf
+    {
+
+class CAlfWidgetControl;
+class AlfReferenceToVisual;
+class IAlfVariantType;
+class AlfAttribute;
+class IAlfEventOutputSignalSubscriber;
+class IAlfAppEventListener;
+
+/**
+ *  Event output. Internal.
+ */
+OSN_NONSHARABLE_CLASS( AlfEventOutput )
+    {
+public:
+
+    /**
+     * If the event is to be broadcast, aTargetWidget is set to an empty string.
+     */
+    AlfEventOutput(int aEventType, int aEventID, const char* aTargetWidget, unsigned int aDelay );
+
+    ~AlfEventOutput();
+
+public:
+    /**
+     * Executes the event output.
+     */
+    void execute( const CAlfWidgetControl& aControl, const TAlfEvent& aEvent );
+
+private:
+    AlfEventOutput();
+
+public: // data
+
+    int mEventType; // either custom or key event
+    int mEventID;
+    UString mTargetWidget; // Empty string if the event is to be broadcast.
+    unsigned int mDelay;
+    };
+
+/**
+ *  Event cancel output. Internal.
+ */
+OSN_NONSHARABLE_CLASS( AlfEventCancelOutput )
+    {
+public:
+    /**
+     * constructor.
+     */
+    AlfEventCancelOutput( const char* aTargetWidget, int aEventID, bool aCancelAll );
+
+    ~AlfEventCancelOutput();
+
+public:
+    /**
+       * Executes the event output.
+       */
+    void execute( const CAlfWidgetControl& aControl );
+    /**
+    * returns target widget id.
+    */
+    inline const UString& targetWidget() const
+        {
+        return mTargetWidget;
+        }
+
+private:
+    /**
+       * cancels the excecution.
+       */
+    AlfEventCancelOutput();
+
+private: // data
+
+    UString mTargetWidget;
+    int mEventID;
+    bool mCancelAll;
+    };
+
+/**
+ *  Animation Event cancel output. Internal.
+ */
+OSN_NONSHARABLE_CLASS( AlfAnimationCancelOutput )
+    {
+public:
+    /**
+     * constructor.
+     */
+    AlfAnimationCancelOutput(const char* aElementName,const char* aVisualName, TAlfOp aOperation, bool aCancelAll );
+    /**
+     * destructor.
+     */
+    ~AlfAnimationCancelOutput();
+
+public:
+    /**
+        * excecutes the command.
+        */
+    void execute( CAlfWidgetControl& aControl, int aDataID );
+
+private:
+    /**
+        * constructor
+        */
+    AlfAnimationCancelOutput();
+
+
+private: // data
+
+    auto_ptr<AlfReferenceToVisual> mVisualRef;
+    TAlfOp mOperation;
+    bool mCancelAll;
+    };
+
+
+OSN_NONSHARABLE_CLASS( AlfWidgetAttributeOutput )
+    {
+public:
+    /**
+    * Constructor.
+    */
+    AlfWidgetAttributeOutput( AlfAttribute& aAttribute, 
+        const char* aWidgetId );
+
+    ~AlfWidgetAttributeOutput();
+
+public:
+    /**
+       * Executes the event output.
+       */
+    void execute( CAlfWidgetControl& aControl );
+
+private:
+    /**
+       * constructor
+       */
+    AlfWidgetAttributeOutput();
+
+private: // data
+    AlfAttribute* mAttr;
+    
+    // Reference to outside widget
+    UString mWidgetId;
+    };
+
+/**
+ *  State change output. Internal.
+ */
+OSN_NONSHARABLE_CLASS( AlfStateChangeOutput )
+    {
+public:
+    /**
+     * constructor.
+     *
+     * @exception Alf::AlfWidgetException value osncore::EInvalidWidget 
+     *     if aTaretWidget is NULL or empty
+     * @exception Alf::AlfWidgetException value osncore::EInvalidArgument 
+     *     if aDisableStates and aEnableStates have a common bit set 
+     */
+    AlfStateChangeOutput( const char* aTargetWidget, uint aEnableStates, uint aDisableStates );
+
+    ~AlfStateChangeOutput();
+
+public:
+    /**
+     * Executes the event output.
+     */
+    void execute( const CAlfWidgetControl& aControl );
+
+    /**
+     * returns target widget id.
+     */
+    inline const UString& targetWidget() const
+        {
+        return mTargetWidget;
+        }
+
+private: // data
+
+    UString mTargetWidget;
+    uint mEnableStates;
+    uint mDisableStates;
+    };
+
+
+#ifdef RD_TACTILE_FEEDBACK
+OSN_NONSHARABLE_CLASS( AlfTactileOutput )
+    {
+public:
+
+    /**
+     * Constructor.
+     */
+    AlfTactileOutput( TTouchLogicalFeedback aFeedbackType );
+
+    /**
+     * Destructor.
+     */
+    ~AlfTactileOutput();
+
+public:
+
+    /**
+     * Executes the event output.
+     */
+    void execute();
+
+private:
+
+    /**
+     * Constructor.
+     */
+    AlfTactileOutput();
+
+private: // data
+
+    TTouchLogicalFeedback mFeedbackType;
+
+    };
+
+#endif // RD_TACTILE_FEEDBACK
+
+/**
+ *  Event output signal. 
+ */
+OSN_NONSHARABLE_CLASS( AlfEventOutputSignal )
+    {
+public:
+	explicit AlfEventOutputSignal( IAlfEventOutputSignalSubscriber& aSubscriber );
+
+    ~AlfEventOutputSignal();
+
+    /**
+     * Executes the event output.
+     */
+    void execute();
+
+private: // data
+	IAlfEventOutputSignalSubscriber* mSubscriber;
+    };
+
+OSN_NONSHARABLE_CLASS( AlfEventPasserOutput)
+    {
+public:
+
+    /**
+     * Constructor.
+     */
+    AlfEventPasserOutput( const char* aSourceWidget , const char* aTargetWidget );
+   
+    /**
+     * Constructor. Occurred event is mapped to a new event (specified by aNewEventId)
+     */
+    AlfEventPasserOutput::AlfEventPasserOutput( const char* aSourceWidget , const char* aTargetWidget, 
+                                                int aNewEventId , int aNewEventCustomData );
+    /**
+     * Destructor.
+     */
+    ~AlfEventPasserOutput();
+
+public:
+
+    /**
+     * Executes the event output.
+     */
+    void execute( const CAlfWidgetControl* aControl , const TAlfEvent& aEvent );
+
+private:
+
+    /**
+     * Constructor.
+     */
+    AlfEventPasserOutput();
+
+private: // data
+
+    const char* mSourceWidget;
+    const char* mTargetWidget;
+    bool mEventMappingData;
+    int mNewEventId;
+    int mNewEventCustomData; 
+    };
+
+/**
+ *  Application Event output.
+ */
+OSN_NONSHARABLE_CLASS( AlfAppEventOutput )
+    {
+public:
+	explicit AlfAppEventOutput( const UString& aCmd, IAlfAppEventListener& aAppEvent );
+
+    ~AlfAppEventOutput();
+
+    /**
+     * Executes the event output.
+     */
+    void execute(const TAlfEvent& aEvent);
+
+private: // data
+	IAlfAppEventListener* mAppEvent;
+	UString mCmd;
+    };
+
+    } // namespace Alf
+
+#endif // ALFEVENTOUTPUT_H