|
virtual | ~InputManipulator () |
| Destructor. More...
|
|
void | reset () |
| Reset the manipulator. More...
|
|
void | cancel () |
| Notify manipulator of touch canceling. More...
|
|
State | getState () const |
| Get the state of the input manipulator. More...
|
|
void | setState (State state) |
| Set the state of the input manipulator. More...
|
|
Node * | getAttachedNode () const |
| Gets the node to which the input manipulator is attached. More...
|
|
void | requireToFail (InputManipulatorWeakPtr manipulatorToFail) |
| Sets the input manipulator that must fail before Kanzi can recognize this input manipulator. More...
|
|
InputManipulatorWeakPtr | getFailManipulator () const |
| Gets the fail manipulator. More...
|
|
InputManipulator * | getDependManipulator () const |
| Gets the dependant input manipulator. More...
|
|
bool | isAttached () const |
| Tells whether the input manipulator is attached to a node. More...
|
|
void | setReferenceNode (NodeWeakPtr referenceNode) |
| Override the attached node as the hit test reference node. More...
|
|
void | setTouchEventRoutingMode (TouchEventRoutingMode mode) |
| Sets the touch event routing mode that you want the input manager to use when distributing the touch points to manipulators. More...
|
|
TouchEventRoutingMode | getTouchEventRoutingMode () |
| Returns the current touch event routing mode. More...
|
|
| Object (Domain *domain) |
|
virtual | ~Object () |
|
Domain * | getDomain () const |
| Returns the domain the object belongs to. More...
|
|
KzuTaskScheduler * | getTaskScheduler () const |
| Returns the task scheduler of the object. More...
|
|
KzuMessageDispatcher * | getMessageDispatcher () const |
| Returns the message dispatcher of the object. More...
|
|
ResourceManager * | getResourceManager () const |
| Returns the resource manager of the object. More...
|
|
virtual const Metaclass * | getDynamicMetaclass () const KZ_OVERRIDE |
| Returns the metaclass of the dynamic type of the object. More...
|
|
AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
| Applies a style to an object. More...
|
|
void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
|
void | applyObjectStyles () |
| Apply all styles for an object node. More...
|
|
void | unapplyObjectStyles () |
| Unapplies and removes all applied styles. More...
|
|
virtual | ~MetaObject () |
|
bool | isTypeOf (const Metaclass *objectType) const |
| Determines if the type of this object is the given type or derived from it. More...
|
|
| PropertyObject () |
|
virtual | ~PropertyObject () |
|
template<typename DataType > |
void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| Sets the local value of a property. More...
|
|
void | removeKzbProperties () |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property. More...
|
|
template<typename DataType > |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
| Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. More...
|
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers. More...
|
|
template<typename DataType > |
void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
|
template<typename DataType > |
PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
|
template<typename DataType > |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
|
void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
|
bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
|
void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
|
bool | hasValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value. More...
|
|
bool | hasBaseValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value, disregarding modifiers. More...
|
|
bool | hasLocalValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a local value set for the property. More...
|
|
bool | hasNonClassValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a value of any precedence higher than class default value set for the property. More...
|
|
void | removeLocalValue (AbstractPropertyType propertyType) |
| Removes the local value associated with the property. More...
|
|
void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
| Copies local value of single property from another object. More...
|
|
void | copyLocalValues (const PropertyObject &other) |
| Copies all local values from another object. More...
|
|
virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
| Virtual function to handle property change notifications. More...
|
|
template<typename DataType > |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *owner) |
|
template<typename DataType > |
void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *owner) |
|
template<typename DataType > |
void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
|
template<typename DataType > |
void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
|
void | validatePropertyModifiers (AbstractPropertyType propertyType) |
|
template<typename DataType > |
void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
|
template<typename DataType > |
void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
|
template<typename DataType > |
size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) |
| Gets number of current notification handlers for given property type. More...
|
|
The base class for the input manipulator.
Use the input manipulators to recognize gestures, such as click or pinch, from incoming touch events. Kanzi does not differentiate touch events from mouse events.
To use an input manipulator on a node, add it to that node with the Node::addInputManipulator() method. You can add more than one input manipulator to a node, but you can use only one to recognize a gesture. When you want to handle more than one gesture on a node, link the input manipulators to each other in order of importance of the gestures that they recognize.
You can link input manipulators sequentially. For example, if you want a node to recognize the pan, double-click, and click gestures in this order, link the ClickManipulator to the MultiClickManipulator, and the MultiClickManipulator to the PanManipulator.
The linking of the manipulators is directional. The linked manipulator is called the depend manipulator and the manipulator the dependant is linked to is called the fail manipulator. You can link the two manipulators by calling requireToFail() on the fail manipulator, passing the dependant manipulator as argument.
To receive both click and multi-click messages on a node, you need to configure the click manipulator to wait for the failure of the multi-click manipulator:
node->addInputManipulator(clickManipulator);
node->addInputManipulator(doubleClickManipulator);
doubleClickManipulator->setExpectedClicks(2);
tripleClickManipulator->setExpectedClicks(3);
node->addInputManipulator(tripleClickManipulator);
clickManipulator->requireToFail(doubleClickManipulator);
doubleClickManipulator->requireToFail(tripleClickManipulator);
Gesture recognition
Kanzi dispatches the touch points from the events to manipulators attached to nodes in phases:
- Kanzi tunnels the touch points to nodes starting from the root node and ending at the hit test node. In this phase only the input manipulators that have the RoutingTunneling routing mode set receive the touch points for recognition.
- Kanzi continues to bubble the touch points from the hit test node to the root node, updating the nodes with input manipulators that have the RoutingBubbling routing mode set.
- Kanzi updates the input manipulators that are outside of the hierarchy of the hit test node.
The touch gesture recognition happens in the notifyTouchInside() or notifyTouchOutside() methods of an input manipulator. Every input manipulator attached to a hit test node receives all the touch points occurred in the application. In each input manipulator you must set the correct state to inform Kanzi that the input manipulator recognized a gesture. You do this by calling the setState() method with the apropriate State value.
When an input manipulator recognizes a touch event as a starting action of a gesture:
- The manipulator enters the StatePossible state. Usually every input manipulator takes the first touch point as a possible starting point of the gesture it recognizes. In this phase, every input manipulator in the StatePossible state receives the touch event.
- When a manipulator recognizes the incoming touch event as a comprehensive gesture, depending on the type of the gesture, this manipulator sets its state to either StateBegin, StateEnd, or StateFail state.
- Manipulators which recognize gestures where the touch point location is not changing, such as click or multi-click, and gestures where the touch location is updated, set the state to StateEnd.
- If the gesture recognition fails, manipulators set the StateFail state value. It is important that you mark the gesture recognition failure in the failing manipulator. This enables Kanzi to continue dispatching the touch event to the dependant manipulators. Kanzi calls onFail() method on the dependant manipulator linked, continuing the gesture recognition in that manipulator.
During and on gesture recognition, input manipulators can dispatch messages to the attached node, to inform the subscribed message handlers about the progress of the gesture.
- See also
- ClickManipulator, DragAndDropManipulator, LongPressManipulator, MultiClickManipulator, PanManipulator, PinchManipulator