/// <summary> /// Initialisiert eine neue Geste-Element Verknüpfung /// </summary> /// <param name="element">Das UIElement auf welchem die Geste ausgeführt wid</param> /// <param name="gesture">Die Geste</param> /// <param name="callback">Die Methode die aufgerufen wird, wenn die Geste entdeckt wurde</param> public GestureHandler(UIElement element, GestureBase gesture, GestureCallbackHandler callback) { Element = element; Gesture = gesture; Callback = callback; IsActive = true; }
/// <summary> /// Initialisiert neue GestureValidationEventArgs /// </summary> /// <param name="hasvalidated">Wurde die Geste bereits validiert?</param> /// <param name="isvalid">Wurde die Geste erkannt?</param> /// <param name="ui">Das UIElement, auf dem diese Geste validiert werden soll/wurde</param> /// <param name="points">Die Berührungspunkte, die für diese Geste betrachtet werden/wurden</param> /// <param name="gesture">Die Geste, die dieses Event aufgerufen hat.</param> public GestureValidationEventArgs(bool hasvalidated, bool isvalid, UIElement ui, TouchGroup points, GestureBase gesture) { HasValidated = hasvalidated; IsValid = isvalid; Element = ui; Points = points; Gesture = gesture; }
/// <summary> /// Registriert eine Geste für ein UIElement und erstellt somit einen passenden GestureHandler /// </summary> /// <param name="element">Das UIElement, welches die Geste erhalten soll</param> /// <param name="gesture">Die Geste</param> /// <param name="callback">Die Methode, die aufgerufen werden soll, wenn die Geste erkannt wurde</param> /// <returns>Der GestureHandler für diese Verknüpfung</returns> public GestureHandler AddGesture(UIElement element, GestureBase gesture, GestureHandler.GestureCallbackHandler callback) { GestureHandler newgesture = new GestureHandler(element, gesture, callback); if (!RegisteredGestures.Contains(newgesture)) { RegisteredGestures.Add(newgesture); } return(newgesture); }
/// <summary> /// Registriert eine Geste, verwendet dafür aber nicht das "GestureElement", sondern /// ein anderes, explizit angegebenes. /// </summary> /// <param name="identifier">Interner Bezeichner für die Geste</param> /// <param name="gesture">Die Geste selbst</param> /// <param name="callback">Die Methoden, die bei erkennen der Geste ausgeführt werden soll</param> /// <param name="element">Das UIELement für die Geste</param> public virtual void AddGesture(string identifier, UIElement element, GestureBase gesture, GestureHandler.GestureCallbackHandler callback) { Gestures.Add(identifier, Surface.GestureManager.AddGesture(element, gesture, callback)); }
/// <summary> /// Fügt eine Geste zu den registrierten Gesten hinzu. /// Als UIElement für die Geste wird dabei das "GestureELement" gewählt. /// </summary> /// <param name="identifier">Interner Bezeichner für die Geste</param> /// <param name="gesture">Die Geste selbst</param> /// <param name="callback">Die Methoden, die bei erkennen der Geste ausgeführt werden soll</param> public virtual void AddGesture(string identifier, GestureBase gesture, GestureHandler.GestureCallbackHandler callback) { AddGesture(identifier, GestureElement, gesture, callback); }
////TODO: Remove this after implementing full factory private static bool ContainsPipe(this EventPublisher<IUserChangedEvent> publisher, GestureBase gesture) { if (publisher._pipelines.Contains(gesture)) { return true; } else { foreach (EventPublisher<IUserChangedEvent> pub in publisher._pipelines) { return pub.ContainsPipe(gesture); } } return false; }
////TODO: Remove this after implementing full factory private static Filter<IUserChangedEvent> GetParentFilter(this EventPublisher<IUserChangedEvent> publisher, GestureBase gesture) { foreach (Filter<IUserChangedEvent> parentFilter in publisher._pipelines) { if (parentFilter.ContainsPipe(gesture)) { return parentFilter; } } return null; }
////TODO: Remove this after implementing full factory public static void RemoveGesture(this User user, GestureBase gesture) { if (gesture == null) { throw new ArgumentNullException("gesture"); } var filter = user.GetParentFilter(gesture); user.DetachPipeline(filter); ////TODO: Destroy all pipes gesture = null; }