private static void SetObserver(MapFileBase @base, IMapObserver observer) { if (observer.MapBase != null) { observer.MapBase.LocationSelectedEvent -= observer.OnLocationSelectedObserver; observer.MapBase.LevelChangedEvent -= observer.OnLevelChangedObserver; } if ((observer.MapBase = @base) != null) { observer.MapBase.LocationSelectedEvent += observer.OnLocationSelectedObserver; observer.MapBase.LevelChangedEvent += observer.OnLevelChangedObserver; } foreach (string key in observer.Panels.Keys) // ie. TopViewPanel and QuadrantsPanel { SetObserver(observer.MapBase, observer.Panels[key]); } }
internal static void SetObservers(MapFileBase @base) { var observers = new IMapObserver[] { TopRouteView.ControlTop, TopRouteView.ControlRoute, TileView.Control, RouteView.Control, TopView.Control }; foreach (var f in observers) { if (f != null) { SetObserver(@base, f); } } MainViewUnderlay.Instance.MainViewOverlay.Refresh(); }
/// <summary> /// Unsubscribe an observer from click events. /// </summary> /// <param name="observer">The observer to remove.</param> public void Unsubscribe(IMapObserver observer) { _observers.Remove(observer); }
/// <summary> /// Subscribe an observer to be notified on click events. /// </summary> /// <param name="observer">The observer to be notified.</param> public void Subscribe(IMapObserver observer) { _observers.Add(observer); }
public virtual void UnSubscribe(IMapObserver map) { MapWatcher.Add(map); }
//Also clients use this to unsubscribe themselves to no longer receive the messages. public Task UnSubscribe(IMapObserver observer) { _subsManager.Unsubscribe(observer); return(Task.CompletedTask); }