// Decompiled with JetBrains decompiler // Type: Microsoft.Iris.Window // Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217 // MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11 // Assembly location: C:\Program Files\Zune\UIX.dll using Microsoft.Iris.Drawing; using Microsoft.Iris.Library; using Microsoft.Iris.Render; using Microsoft.Iris.Session; using Microsoft.Iris.UI; using Microsoft.Iris.ViewItems; using System; using System.ComponentModel; using System.Globalization; namespace Microsoft.Iris { public class Window : INotifyPropertyChanged { private WindowPositionPolicy _initialPositionPolicy; private UIForm _form; internal Window(UIForm form) { this._form = form; this._form.CloseRequested += new FormCloseRequestedHandler(this.OnCloseRequested); this._form.SessionConnect += new FormSessionConnectHandler(this.OnSessionConnect); this._form.PropertyChanged += new FormPropertyChangedHandler(this.OnPropertyChanged); } public WindowSize InitialClientSize { get { UIDispatcher.VerifyOnApplicationThread(); Size initialClientSize = this._form.InitialClientSize; return new WindowSize(initialClientSize.Width, initialClientSize.Height); } set { UIDispatcher.VerifyOnApplicationThread(); this._form.InitialClientSize = new Size(value.Width, value.Height); } } public WindowSize ClientSize { get { UIDispatcher.VerifyOnApplicationThread(); Size clientSize = this._form.ClientSize; return new WindowSize(clientSize.Width, clientSize.Height); } set { UIDispatcher.VerifyOnApplicationThread(); this._form.ClientSize = new Size(value.Width, value.Height); } } public WindowPosition Position { get { UIDispatcher.VerifyOnApplicationThread(); Point position = this._form.Position; return new WindowPosition(position.X, position.Y); } set { UIDispatcher.VerifyOnApplicationThread(); this._form.Position = new Point(value.X, value.Y); } } public WindowState WindowState { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.WindowState; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.WindowState = value; } } public bool Visible { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.Visible; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.Visible = value; } } public bool Active => this._form.ActivationState; public bool MouseActive => !this._form.MouseIsIdle; public string GetSavedPosition() => this.GetSavedPosition(false); public string GetSavedPosition(bool disallowMinimized) { UIDispatcher.VerifyOnApplicationThread(); FormPlacement finalPlacement = this._form.FinalPlacement; if (finalPlacement.ShowState == 2U && disallowMinimized) finalPlacement.ShowState = 1U; return InvariantString.Format("{0},{1},{2},{3},{4},{5},{6}", finalPlacement.ShowState, finalPlacement.NormalPosition.X, finalPlacement.NormalPosition.Y, finalPlacement.NormalPosition.Width, finalPlacement.NormalPosition.Height, finalPlacement.MaximizedLocation.X, finalPlacement.MaximizedLocation.Y); } public void SetSavedInitialPosition(string cookie) => this.SetSavedInitialPositionWorker(cookie, 0U); public void SetSavedInitialPosition(string cookie, WindowState stateOverride) { uint showStateOverride; switch (stateOverride) { case WindowState.Normal: showStateOverride = 1U; break; case WindowState.Minimized: showStateOverride = 2U; break; case WindowState.Maximized: showStateOverride = 3U; break; default: throw new ArgumentException("Invalid WindowState value"); } this.SetSavedInitialPositionWorker(cookie, showStateOverride); } private void SetSavedInitialPositionWorker(string cookie, uint showStateOverride) { UIDispatcher.VerifyOnApplicationThread(); string[] strArray = cookie != null ? cookie.Split(',') : throw new ArgumentNullException(nameof(cookie)); bool flag = false; if (strArray.Length == 7) { try { FormPlacement formPlacement; formPlacement.ShowState = uint.Parse(strArray[0], NumberFormatInfo.InvariantInfo); formPlacement.NormalPosition = new Rectangle(int.Parse(strArray[1], NumberFormatInfo.InvariantInfo), int.Parse(strArray[2], NumberFormatInfo.InvariantInfo), int.Parse(strArray[3], NumberFormatInfo.InvariantInfo), int.Parse(strArray[4], NumberFormatInfo.InvariantInfo)); formPlacement.MaximizedLocation = new Point(int.Parse(strArray[5], NumberFormatInfo.InvariantInfo), int.Parse(strArray[6], NumberFormatInfo.InvariantInfo)); if (showStateOverride != 0U) formPlacement.ShowState = showStateOverride; if (formPlacement.NormalPosition.Width != 0) { if (formPlacement.NormalPosition.Height != 0) this._form.InitialPlacement = formPlacement; } } catch (FormatException ex) { flag = true; } catch (OverflowException ex) { flag = true; } } else flag = true; if (flag) throw new ArgumentOutOfRangeException("Invalid saved window position."); } public string Caption { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.Text; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.Text = value; } } public bool AlwaysOnTop { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.AlwaysOnTop; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.AlwaysOnTop = value; } } public bool ShowInTaskbar { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.ShowInTaskbar; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.ShowInTaskbar = value; } } public bool ShowWindowFrame { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.ShowWindowFrame; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.ShowWindowFrame = value; } } public bool ShowShadow { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.ShowShadow; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.ShowShadow = value; } } public MaximizeMode MaximizeMode { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.MaximizeMode; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.MaximizeMode = value; } } public bool RespectsStartupSettings { get => this._form.RespectsStartupSettings; set => this._form.RespectsStartupSettings = value; } public WindowPositionPolicy InitialPositionPolicy { get => this._initialPositionPolicy; set { this._form.StartCentered = (value & WindowPositionPolicy.CenterOnWorkArea) != WindowPositionPolicy.None; this._form.StartInWorkArea = (value & WindowPositionPolicy.ConstrainToWorkArea) != WindowPositionPolicy.None; this._initialPositionPolicy = value; } } public IntPtr Handle { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.__WindowHandle; } } public void SetBackgroundColor(WindowColor color) { UIDispatcher.VerifyOnApplicationThread(); this._form.SetBackgroundColor(color.GetInternalColor()); } public int MouseIdleTimeout { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.MouseIdleTimeout; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.MouseIdleTimeout = value >= 0 ? value : throw new ArgumentOutOfRangeException(nameof(value)); } } public bool HideMouseOnIdle { get { UIDispatcher.VerifyOnApplicationThread(); return this._form.HideMouseOnIdle; } set { UIDispatcher.VerifyOnApplicationThread(); this._form.HideMouseOnIdle = value; } } public void RequestLoad(string source) => this.RequestLoad(source, null); public void RequestLoad(string source, PropertyValue[] properties) { UIDispatcher.VerifyOnApplicationThread(); if (source == null) throw new ArgumentNullException(nameof(source)); Vector properties1 = null; if (properties != null) { properties1 = new Vector(properties.Length); foreach (PropertyValue property in properties) properties1.Add(new UIPropertyRecord() { Name = property.Name, Value = property.Value }); } this._form.RequestLoad(source, properties1); } public void SetIcon(string moduleName, int resourceID) { UIDispatcher.VerifyOnApplicationThread(); if (moduleName == null) throw new ArgumentNullException(nameof(moduleName)); this._form.SetIcon(moduleName, (uint)resourceID, IconFlags.All); } public void SetShadowEdgeImages(bool fActiveEdges, Image[] images) { UIDispatcher.VerifyOnApplicationThread(); if (images == null || images.Length != 4) throw new ArgumentException("Must provide exactly 4 images: LTRB edges", nameof(images)); for (int index = 0; index < 4; ++index) { if (images[index] == null) throw new ArgumentException("Edge image cannot be null", "image[idx]:" + index.ToString()); if (string.IsNullOrEmpty(images[index].Source)) throw new ArgumentException("Edge image cannot have null or empty Source", "image[idx]:" + index.ToString()); } UIImage[] images1 = new UIImage[4]; for (int index = 0; index < 4; ++index) images1[index] = images[index].UIImage; this._form.SetShadowImages(fActiveEdges, images1); } public object SaveKeyFocus() { UIDispatcher.VerifyOnApplicationThread(); return this._form.SaveKeyFocus(); } public void RestoreKeyFocus(object handle) { UIDispatcher.VerifyOnApplicationThread(); if (handle is SavedKeyFocus state) this._form.RestoreKeyFocus(state); else if (handle != null) throw new ArgumentException("RestoreKeyFocus expects an object given out from SaveKeyFocus"); } public void Close() { UIDispatcher.VerifyOnApplicationThread(); this._form.Close(); } public void ForceClose() { UIDispatcher.VerifyOnApplicationThread(); this._form.ForceClose(); } private void OnCloseRequested(FormCloseReason nReason, ref bool block) { if (this.CloseRequested == null) return; WindowCloseRequestedEventArgs args = new WindowCloseRequestedEventArgs(); this.CloseRequested(this, args); block = args.Block; } public event WindowCloseRequestedHandler CloseRequested; private void OnSessionConnect(object sender, bool fIsConnected) { if (this.SessionConnected == null) return; this.SessionConnected(sender, fIsConnected); } public event SessionConnectedHandler SessionConnected; public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { if (this.PropertyChanged == null) return; this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }