private void InitScatterViewEvents() { _fe = (FloatingElement) DataContext; //if (_fe.Style == null) _fe.Style = this.FindResource("DefaultContainerStyle") as Style; _svi = (ScatterViewItem) Helpers.FindElementOfTypeUp(this, typeof (ScatterViewItem)); if (_fe == null || _svi == null) return; _fe.PropertyChanged += FePropertyChanged; _floatingViewModel = IoC.Get<IFloating>(); //TODO: get scatterview instead of window _sv = Application.Current.MainWindow; // (ScatterView)BaseWPFHelpers.Helpers.FindElementOfTypeUp(_svi, typeof(ScatterView)); _fe.FlipEvent += FeFlipEvent; _fe.UnFlipEvent += FeUnFlipEvent; _svi.IsManipulationEnabled = !_fe.PromoteToMouse; _svi.ContainerManipulationCompleted += SviScatterManipulationCompleted; _svi.ContainerManipulationStarted += SviScatterManipulationStarted; _svi.ContainerManipulationDelta += SviScatterManipulationDelta; _svi.TouchDown += SviContactDown; //_svi.CanMove = false; _fe.DockingStyleChanged += _fe_DockingStyleChanged; SizeChanged += UcFloatingElementContainerSizeChanged; _svi.SetBinding(ScatterContentControlBase.CanMoveProperty, new Binding {Source = _fe, Path = new PropertyPath("CanMove")}); _svi.SetBinding(ScatterContentControlBase.CanRotateProperty, new Binding {Source = _fe, Path = new PropertyPath("CanRotate")}); _svi.SetBinding(ScatterContentControlBase.CanScaleProperty, new Binding {Source = _fe, Path = new PropertyPath("CanScale")}); _svi.SetBinding(ScatterContentControlBase.ShowsActivationEffectsProperty, new Binding {Source = _fe, Path = new PropertyPath("ShowsActivationEffects")}); if (_fe.DockingStyle != DockingStyles.None) _svi.SetBinding(VisibilityProperty, new Binding { Source = AppStateSettings.Instance, Path = new PropertyPath("DockedFloatingElementsVisible"), Converter = new BooleanToVisibilityConverter() }); //_svi.CanMove = false; //_svi.CanScale = false; //_svi.CanRotate = false; Loaded += FloatingContainerLoaded; Close += FloatingContainerClose; PreviewMouseDoubleClick += FloatingContainerPreviewMouseDoubleClick; }
public ShellViewModel(CompositionContainer container) { // load visuals this.container = container; plugins = container.GetExportedValue<IPlugins>(); popups = container.GetExportedValue<IPopups>(); floating = container.GetExportedValueOrDefault<IFloating>(); AppState.Container = this.container; AppState.FullScreenFloatingElementChanged += (e, s) => NotifyOfPropertyChange(() => FullScreen); // load module AppState.State = AppStates.Starting; //Load configuration AppState.Config.LoadOfflineConfig(); AppState.Config.LoadLocalConfig(); AppState.Config.UpdateValues(); BackgroundWorker barInvoker = new BackgroundWorker(); barInvoker.DoWork += delegate { Thread.Sleep(TimeSpan.FromSeconds(10)); AppState.ViewDef.CheckOnlineBaseLayerProviders(); }; barInvoker.RunWorkerAsync(); var b = container.GetExportedValues<IModule>(); module = b.FirstOrDefault(); if (module == null) return; AppState.Config.ApplicationName = module.Name; AppState.State = AppStates.AppInitializing; AppState.ViewDef.RememberLastPosition = AppState.Config.GetBool("Map.RememberLastPosition", true); AppState.MapStarted += (e, f) => { AppState.StartFramework(true, true, true, true); AppState.ShareContracts.Add(new EmailShareContract()); AppState.ShareContracts.Add(new QrShareContract()); var g = AppState.AddDownload("Init", "StartPoint"); // start framework AppState.State = AppStates.FrameworkStarting; AddMainMenuItems(); // set map if (AppState.ViewDef.RememberLastPosition) { var extent = (AppState.Config.Get("Map.Extent", "-186.09257071294,-101.374056570352,196.09257071294,204.374056570352")); if (!string.IsNullOrEmpty(extent)) AppState.ViewDef.MapControl.Extent = (Envelope)new EnvelopeConverter().ConvertFromString(extent); } // start app AppState.State = AppStates.AppStarting; // init plugins module.StartApp(); // app ready AppState.State = AppStates.AppStarted; AppState.Imb.UpdateStatus(); AppState.FinishDownload(g); // Show timeline player (EV: I've tried to turn it on earlier during the startup process, but that didn't work // (most likely, because something wasn't loaded or initialized correctly). AppState.TimelineManager.PlayerVisible = AppState.Config.GetBool("Timeline.PlayerVisible", false); }; module.InitializeApp(); }