예제 #1
0
        /// <summary>
        /// Saves and restores window position
        /// Note: There must be at least one other setting in Properties.Settings. To allow the window to be saves.
        /// </summary>
        public static void ActivateWindow(Window window, string name,
                                          WindowMemoryType memoryType = WindowMemoryType.All, bool attachEvents = true)
        {
            var win = new TrackingWindow()
            {
                Window = window,
                Name   = name
            };

            if (Windows.ContainsKey(name))
            {
                throw new WindowMemoryException($"Window already activated: {name}");
            }
            Windows.Add(name, win);

            if (IoC.Settings.Windows.TryGetValue(win.Name, out Rectangle rect))
            {
                if (memoryType.HasFlag(WindowMemoryType.Size))
                {
                    window.Width  = rect.Width;
                    window.Height = rect.Height;
                }
                if (memoryType.HasFlag(WindowMemoryType.Position))
                {
                    var area = new Rectangle(rect.Left, rect.Top, (int)window.Width, (int)window.Height);
                    if (Screen.AllScreens.Any(s => s.WorkingArea.IntersectsWith(area)))
                    {
                        window.WindowStartupLocation = WindowStartupLocation.Manual;
                        window.Top  = rect.Top;
                        window.Left = rect.Left;
                    }
                }
            }

            if (attachEvents)
            {
                win.AttachEvents();
            }
        }
예제 #2
0
        private void HandleTrackingWindow()
        {
            List <Tracking> trackings = GetActiveTrackings();

            if (trackings.Count() == 0)
            {
                if (_trackingWindow != null)
                {
                    WindowManager.Close(_trackingWindow);
                    _trackingWindow = null;
                }
            }
            else
            {
                if (_trackingWindow == null)
                {
                    _trackingWindow = new TrackingWindow(this);
                    WindowManager.Open(_trackingWindow);
                }

                _trackingWindow.ActiveTrackings = trackings;
            }
        }