private void OpenServiceItemMessageExecute(OpenEditServiceWindowMessage obj)
        {
            //// If it's not the view model of this view => return
            if (!_viewModel.Equals(obj.Sender))
            {
                return;
            }

            //Check if already one window with the same service is opened (from this instance) => when true show and focus it
            //var editServiceWindows = Application.Current.Windows.OfType<ServiceEditWindow>();
            var editServiceWindows = OwnedWindows.OfType <ServiceEditWindow>();
            var addWindow          = editServiceWindows.FirstOrDefault(x => x.WindowIdentifier == (obj.ServiceItem?.ServiceName ?? string.Empty));

            if (addWindow != default)
            {
                addWindow.Show();
                addWindow.Focus();
                return;
            }

            DmServiceDefinition data = obj.ServiceItem != null?RegistryManagement.LoadFromRegistry(obj.ServiceItem.ServiceName) : null;

            //TODO: MVVM also use show later...
            var window = new ServiceEditWindow(data)
            {
                Owner                 = this,
                DataContext           = new NewEditViewModel(),
                ReadOnlyMode          = obj.ReadOnlyMode,
                OriginalItem          = obj.ServiceItem,
                WindowIdentifier      = obj.ServiceItem?.ServiceName ?? string.Empty,
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };

            window.Show();
        }
Exemple #2
0
        protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);
            var firstChild = OwnedWindows.Cast <Window>().FirstOrDefault();

            if (firstChild != null)
            {
                firstChild.Activate();
            }
        }
Exemple #3
0
        private void SkillInfo_OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2)
            {
                var control    = sender as PlayerInfoControl;
                var playerInfo = control?.PlayerInfo;
                if (playerInfo != null)
                {
                    var vm = new SkillBreakdownViewModel(playerInfo);
                    var v  = new SkillBreakdownView(vm)
                    {
                        Owner = this
                    };
                    var headerHeight = 27;//approximate height of the title bar on the skill breakdown window
                    var ownedWindows = OwnedWindows.Cast <Window>().Where(w => w.IsVisible).ToList();
                    if (!ownedWindows.Any())
                    {
                        //we should move away from windows form here if possible.
                        Screen screen = Screen.FromHandle(new WindowInteropHelper(this).Handle);
                        // Transform screen point to WPF device independent point
                        PresentationSource source = PresentationSource.FromVisual(this);

                        if (source?.CompositionTarget == null)
                        {   //if this can't be determined, just use the center screen logic
                            v.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                        }
                        else
                        {
                            // WindowStartupLocation.CenterScreen sometimes put window out of screen in multi monitor environment
                            v.WindowStartupLocation = WindowStartupLocation.Manual;
                            Matrix m  = source.CompositionTarget.TransformToDevice;
                            double dx = m.M11;
                            double dy = m.M22;
                            Point  locationFromScreen = new Point(
                                screen.Bounds.X + (screen.Bounds.Width - v.Width * dx) / 2,
                                screen.Bounds.Y + (screen.Bounds.Height - (v.SkillResultsGridContainer.MaxHeight + headerHeight) * dy) / 2);
                            Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(locationFromScreen);
                            v.Left = targetPoints.X;
                            v.Top  = targetPoints.Y;
                        }
                    }
                    else
                    {
                        v.WindowStartupLocation = WindowStartupLocation.Manual;
                        v.Left = ownedWindows.Max(w => w.Left) + headerHeight;
                        v.Top  = ownedWindows.Max(w => w.Top) + headerHeight;
                    }
                    v.Show();
                }
            }
        }
        private void ShowOptions()
        {
            _HeartsCanvas.HideHelp();

            OptionsWindow optionsWindow = new OptionsWindow {
                ShowInTaskbar = false, Topmost = Topmost
            };

            optionsWindow.ShowDialog();

            _MousePosition = Mouse.GetPosition(this);

            foreach (ScreenSaverWindow screenSaverWindow in OwnedWindows.OfType <ScreenSaverWindow>())
            {
                screenSaverWindow._MousePosition = Mouse.GetPosition(screenSaverWindow);
            }
        }
Exemple #5
0
        private void ShowOptionsDialog()
        {
            if (OwnedWindows.OfType <OptionsDialog>().Any())
            {
                return;
            }

            OptionsDialogModel optionsDialogModel = new OptionsDialogModel {
                LastOptionsPageType = _LastOptionsPageType
            };
            OptionsDialog dialog = new OptionsDialog
            {
                Owner = this,
                WindowStartupLocation = (WindowState == WindowState.Minimized ? WindowStartupLocation.CenterScreen : WindowStartupLocation.CenterOwner),
                DataContext           = optionsDialogModel
            };

            if (dialog.ShowDialog() == true)
            {
                optionsDialogModel.SaveOptions();
                _LastOptionsPageType = optionsDialogModel.LastOptionsPageType;
            }
        }