Virtu/Library/Silverlight/ApplicationBase.cs
Sean Fausett 2167383a00 Upgraded to Windows Phone 7 Beta.
Upgraded to FxCop 10.0.
Dropped Silverlight Toolkit dependency (for now).
Modified AudioService to avoid deadlocks by using timeouts.
Refactored DebugService and implementations.
Modified SilverlightVideoService to handle browser zoom.
Split Wpf MainWindow into MainPage child control.

--HG--
extra : convert_revision : svn%3Affd33b8c-2492-42e0-bdc5-587b920b7d6d/trunk%4048619
2010-07-16 09:36:41 +00:00

101 lines
2.9 KiB
C#

using System.Diagnostics;
using System.Text;
using System.Windows;
#if WINDOWS_PHONE
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
#endif
namespace Jellyfish.Library
{
public class ApplicationBase : Application
{
public ApplicationBase() :
this(null)
{
}
public ApplicationBase(string name)
{
Name = name;
UnhandledException += OnApplicationUnhandledException;
//AppDomain.CurrentDomain.UnhandledException += OnAppDomainUnhandledException;
}
#if WINDOWS_PHONE
protected void InitializePhoneApplication()
{
if (!_phoneApplicationInitialized)
{
RootFrame = new PhoneApplicationFrame();
RootFrame.Navigated += OnRootFrameNavigated;
RootFrame.NavigationFailed += OnRootFrameNavigationFailed;
_phoneApplicationInitialized = true;
}
}
#endif
private string GetExceptionCaption(string title, bool isTerminating = false)
{
var caption = new StringBuilder();
if (!string.IsNullOrEmpty(Name))
{
caption.Append(Name).Append(' ');
}
caption.Append(title);
if (isTerminating)
{
caption.Append(" (Terminating)");
}
return caption.ToString();
}
private void OnApplicationUnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject.ToString(), GetExceptionCaption("Application Exception"), MessageBoxButton.OK);
if (Debugger.IsAttached)
{
Debugger.Break();
}
}
//private void OnAppDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
//{
// MessageBox.Show(e.ExceptionObject.ToString(), GetExceptionCaption("AppDomain Exception", e.IsTerminating), MessageBoxButton.OK);
// if (Debugger.IsAttached)
// {
// Debugger.Break();
// }
//}
#if WINDOWS_PHONE
private void OnRootFrameNavigated(object sender, NavigationEventArgs e)
{
if (RootVisual != RootFrame)
{
RootVisual = RootFrame;
}
RootFrame.Navigated -= OnRootFrameNavigated;
}
private void OnRootFrameNavigationFailed(object sender, NavigationFailedEventArgs e)
{
if (Debugger.IsAttached)
{
Debugger.Break();
}
}
#endif
public string Name { get; private set; }
#if WINDOWS_PHONE
public PhoneApplicationFrame RootFrame { get; private set; }
private bool _phoneApplicationInitialized;
#endif
}
}