Files
ZuneShell.dll/ZuneShell/Microsoft/Zune/Shell/StandAlone.cs
T
2023-08-21 11:40:42 -05:00

180 lines
7.6 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Zune.Shell.StandAlone
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
using Microsoft.Iris;
using Microsoft.Win32;
using Microsoft.Zune.Configuration;
using Microsoft.Zune.Util;
using System;
using System.Collections;
namespace Microsoft.Zune.Shell
{
internal class StandAlone
{
public static Hashtable Startup(string[] args, string defaultCommandLineSwitch)
{
WindowSize windowSize = new WindowSize(1012, 693);
string str = null;
bool useNativeFrame = false;
bool minimized = false;
Hashtable hashtable = new Hashtable();
bool flag3 = false;
if (args != null)
{
foreach (CommandLineArgument commandLineArgument in CommandLineArgument.ParseArgs(args, defaultCommandLineSwitch))
{
switch (commandLineArgument.Name)
{
case "gdi":
Application.RenderingType = RenderingType.GDI;
flag3 = true;
break;
case "switchtogdi":
ClientConfiguration.GeneralSettings.RenderingType = 0;
break;
case "dx9":
Application.RenderingType = RenderingType.DX9;
flag3 = true;
break;
case "size":
try
{
windowSize = ParseSize(commandLineArgument.Value);
break;
}
catch (FormatException ex)
{
break;
}
catch (ArgumentException ex)
{
break;
}
case "minimized":
minimized = true;
break;
case "nativeframe":
useNativeFrame = true;
break;
case "animations":
try
{
Application.AnimationsEnabled = bool.Parse(commandLineArgument.Value);
break;
}
catch (FormatException ex)
{
break;
}
case "uixdebuguri":
Application.DebugSettings.DebugConnectionUri = commandLineArgument.Value ?? Iris.Debug.DebugRemoting.DEFAULT_TCP_URI.OriginalString;
break;
case "uixtrace":
try
{
int idx = commandLineArgument.Value.IndexOf(':');
byte level;
Iris.Debug.TraceCategory cat;
if (idx != -1)
{
level = byte.Parse(commandLineArgument.Value.Substring(idx + 1));
cat = (Iris.Debug.TraceCategory)Enum.Parse(typeof(Iris.Debug.TraceCategory), commandLineArgument.Value.Substring(0, idx));
}
else
{
level = 1;
cat = (Iris.Debug.TraceCategory)Enum.Parse(typeof(Iris.Debug.TraceCategory), commandLineArgument.Value);
}
Application.DebugSettings.TraceSettings.SetCategoryLevel(cat, level);
break;
}
catch (FormatException ex)
{
break;
}
break;
default:
hashtable[commandLineArgument.Name] = commandLineArgument.Value;
break;
}
}
}
if (ClientConfiguration.GeneralSettings.UseGDI)
{
ClientConfiguration.GeneralSettings.RenderingType = 0;
ClientConfiguration.GeneralSettings.UseGDI = false;
}
if (!flag3)
{
Application.RenderingType = (RenderingType)ClientConfiguration.GeneralSettings.RenderingType;
Application.RenderingQuality = (RenderingQuality)ClientConfiguration.GeneralSettings.RenderingQuality;
}
if (str != null)
{
if (str == "ltr")
Application.IsRTL = false;
else if (str == "rtl")
Application.IsRTL = true;
}
Application.AnimationsEnabled = ClientConfiguration.GeneralSettings.AnimationsEnabled;
Application.Initialize();
Application.Window.InitialClientSize = windowSize;
object obj = Registry.GetValue(ZuneUI.Shell.SettingsRegistryPath, "WindowPosition", null);
if (obj != null)
{
if (obj is string initialPos)
{
try
{
if (!minimized)
Application.Window.SetSavedInitialPosition(initialPos);
else
Application.Window.SetSavedInitialPosition(initialPos, WindowState.Minimized);
}
catch (ArgumentException)
{
}
}
}
Application.Window.RespectsStartupSettings = true;
Application.Window.InitialPositionPolicy = WindowPositionPolicy.CenterOnWorkArea | WindowPositionPolicy.ConstrainToWorkArea;
Application.Window.ShowWindowFrame = useNativeFrame;
Application.Window.SetBackgroundColor(ZuneUI.Shell.WindowColorFromRGB(ClientConfiguration.Shell.BackgroundColor));
if (!minimized)
Application.DeferredInvoke(delegate
{
Windowing.ForceSetForegroundWindow(Application.Window.Handle);
}, DeferredInvokePriority.Low);
return hashtable;
}
private static WindowSize ParseSize(string argument)
{
int width = 0;
int height = 0;
string[] strArray = argument.Split(',');
if (strArray.Length == 2)
{
width = int.Parse(strArray[0]);
height = int.Parse(strArray[1]);
}
return new WindowSize(width, height);
}
public static void Run(DeferredInvokeHandler initialLoadComplete)
{
Application.Run(initialLoadComplete);
if (TaskbarPlayer.Instance.ToolbarVisible)
return;
Registry.SetValue(ZuneUI.Shell.SettingsRegistryPath, "WindowPosition", Application.Window.GetSavedPosition(true));
}
public static void Shutdown() => Application.Shutdown();
}
}