public override void Run(Window window) { Log.Debug("window id is " + window.Handle.ToString()); Rect square = window.GetInnerSquare(); Log.Debug(square.ToString()); Rectangle redSquare = new Rectangle(window) { Color = Color.Red, Geometry = square }; redSquare.Show(); double degrees = 0; RotaryEventHandler handler = (args) => { if (args.IsClockwise) { degrees += 10; } else { degrees -= 10; } if (degrees < 0) { degrees = 360; } else if (degrees > 360) { degrees = 0; } Rect rect = redSquare.Geometry; EvasMap map = new EvasMap(4); map.PopulatePoints(redSquare, 0); map.Rotate(degrees, rect.X + rect.Width / 2, rect.Y + rect.Height / 2); redSquare.EvasMap = map; redSquare.IsMapEnabled = true; }; RotaryEventManager.Rotated += handler; window.BackButtonPressed += (s, e) => { RotaryEventManager.Rotated -= handler; Log.Debug("handler is Removed!!!!!!!"); }; }
/// <summary> /// Removes a handler on a specific EvasObject for the Rotary event. /// </summary> /// <param name="obj">Target EvasObject.</param> /// <param name="handler">Event handler for Rotary event.</param> /// <since_tizen> preview </since_tizen> public static void RemoveRotaryEventHandler(this EvasObject obj, RotaryEventHandler handler) { if (s_rotaryObjectEventHandlers.ContainsKey(obj)) { s_rotaryObjectEventHandlers[obj] -= handler; if (s_rotaryObjectEventHandlers[obj] == null) { DisableRotaryEventHandler(obj, false); s_rotaryObjectEventHandlers.Remove(obj); } } }
/// <summary> /// Adds a handler for the Rotary event on a specific EvasObject. /// </summary> /// <param name="obj">Target EvasObject.</param> /// <param name="handler">Event handler for the Rotary event.</param> /// <since_tizen> preview </since_tizen> public static void AddRotaryEventHandler(this EvasObject obj, RotaryEventHandler handler) { EnableRotaryEventHandler(obj); if (s_rotaryObjectEventHandlers.ContainsKey(obj)) { s_rotaryObjectEventHandlers[obj] += handler; } else { s_rotaryObjectEventHandlers[obj] = handler; } }