public GestureItemProvider() { PatternMap = GestureManager.Instance.LoadingTask.IsCompleted ? GestureItems.ToDictionary(gi => gi.Name, gi => gi.PointPattern) : new Dictionary <string, PointPattern[]>(); GlobalPropertyChanged += (sender, propertyName) => { PatternMap = GestureItems.ToDictionary(gi => gi.Name, gi => gi.PointPattern); OnPropertyChanged(propertyName); }; }
private static void Update() { if (_gestureItems == null) { _gestureItems = new ObservableCollection <GestureItem>(); } else { _gestureItems.Clear(); } // Get all available gestures from gesture manager var apps = ApplicationManager.Instance.Applications.Where(app => !(app is IgnoredApp)).ToList(); var color = (Color)Application.Current.Resources["HighlightColor"]; foreach (var g in GestureManager.Instance.Gestures) { var gesture = (Gesture)g; string result = string.Empty; foreach (IApplication application in apps) { if (application.Actions.Any(a => a.GestureName == gesture.Name)) { result += $" {application.Name},"; } } result = result.TrimEnd(','); GestureItem newItem = new GestureItem() { GestureImage = GestureImage.CreateImage(gesture.PointPatterns, new Size(60, 60), color), Features = GestureManager.Instance.GetNewGestureId(gesture.PointPatterns), PatternCount = gesture?.PointPatterns.Max(p => p.Points.Count) ?? 0, Applications = result, Gesture = gesture }; GestureItems.Add(newItem); } GestureMap = GestureItems.ToDictionary(gi => gi.Gesture.Name); GlobalPropertyChanged?.Invoke(typeof(GestureItemProvider), nameof(InstanceGestureMap)); }
private static void Update() { if (_gestureItems == null) { _gestureItems = new ObservableCollection <GestureItem>(); } else { _gestureItems.Clear(); } // Get all available gestures from gesture manager IEnumerable <IGesture> results = GestureManager.Instance.Gestures.OrderBy(g => g.PointPatterns?.Max(p => p.Points.Count)); var apps = ApplicationManager.Instance.Applications.Where(app => !(app is IgnoredApp)).ToList(); foreach (var g in results) { var gesture = (Gesture)g; string result = string.Empty; foreach (IApplication application in apps) { if (application.Actions.Any(a => a.GestureName == gesture.Name)) { result += $" {application.Name},"; } } result = result.TrimEnd(','); GestureItem newItem = new GestureItem() { Applications = result, PointPattern = gesture.PointPatterns, Name = gesture.Name, }; GestureItems.Add(newItem); } GlobalPropertyChanged?.Invoke(typeof(GestureItemProvider), nameof(PatternMap)); }