static void Main(string[] aArgs) { //Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // ensure that all unhandled exceptions in this thread bypass the // Application class handlers and let the AppDomain handlers that // have been added in to the helper handle it Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); // create the application helper, adding a form based crash log dumper HelperKinsky helper = new HelperKinsky(aArgs, new Invoker()); ICrashLogDumper d = new CrashLogDumperForm(helper.Title, helper.Product, helper.Version, System.Drawing.Icon.FromHandle(Linn.Kinsky.Properties.Resources.KinskyLogo.GetHicon())); helper.AddCrashLogDumper(d); helper.ProcessOptionsFileAndCommandLine(); Application.Run(new FormKinskyDesktop(helper)); helper.Dispose(); }
public ViewWidgetSelectorRoomNavigation(HelperKinsky aHelper, UINavigationController aNavigationController, UIScrollView aScrollView, ViewWidgetSelectorSource aViewWidgetSelectorSource, UIBarButtonItem aButtonRefresh, UIButton aButtonStandby, UIButton aButtonStandbyAll) { iHelper = aHelper; iRooms = new List <Linn.Kinsky.Room>(); iNavigationController = aNavigationController; iNavigationController.Delegate = new Delegate(this, aViewWidgetSelectorSource); iScrollView = aScrollView; iViewWidgetSelectorSource = aViewWidgetSelectorSource; iButtonRefresh = aButtonRefresh; iNavigationController.ViewControllers[0].NavigationItem.RightBarButtonItem = iButtonRefresh; iButtonStandbyAll = aButtonStandbyAll; UIBarButtonItem barButton = new UIBarButtonItem(iButtonStandbyAll); iNavigationController.ViewControllers[0].NavigationItem.LeftBarButtonItem = barButton; UpdateStandbyAllButtonState(); iButtonStandby = aButtonStandby; UIBarButtonItem barButton2 = new UIBarButtonItem(iButtonStandby); iViewWidgetSelectorSource.NavigationItem.RightBarButtonItem = barButton2; iViewWidgetSelectorSource.EventSelectionChanged += SelectionChanged; iButtonRefresh.Clicked += RefreshClicked; iButtonStandby.TouchUpInside += StandbyClicked; iButtonStandbyAll.TouchUpInside += StandbyAllClicked; }
public HelperKinskyTouch(IntPtr aInstance) : base(aInstance) { iHelper = new HelperKinsky(new string[] {}, new Invoker()); UIDevice.CurrentDevice.BatteryMonitoringEnabled = true; NSNotificationCenter.DefaultCenter.AddObserver(UIDevice.BatteryStateDidChangeNotification, delegate { EventOptionAutoLockValueChanged(this, EventArgs.Empty); }); iCrashLogDumper = new CrashLogDumper(iHelper.Title, iHelper.Product, iHelper.Version); iHelper.AddCrashLogDumper(iCrashLogDumper); iOptionPageGeneral = new OptionPageGeneral("General"); iHelper.AddOptionPage(iOptionPageGeneral); iOptionInsertMode = new OptionInsertMode(); iHelper.AddOption(iOptionInsertMode); iOptionPageGeneral.OptionAutoLock.EventValueChanged += EventOptionAutoLockValueChanged; iOptionPageGeneral.OptionAutoSendCrashLog.EventValueChanged += EventOptionAutoSendCrashLogValueChanged; iHelper.ProcessOptionsFileAndCommandLine(); EventOptionAutoLockValueChanged(this, EventArgs.Empty); EventOptionAutoSendCrashLogValueChanged(this, EventArgs.Empty); }
public Model(HelperKinsky aHelper) { aHelper.SetStackExtender(this); aHelper.Stack.EventStatusChanged += StatusChanged; iHttpServer = new HttpServer(HttpServer.kPortKinskyDesktop); iHttpClient = new HttpClient(); iLocalPlaylists = new LocalPlaylists(aHelper, true); iRemotePlaylists = new RemotePlaylists(aHelper); iLibrary = new MediaProviderLibrary(aHelper); iSupport = new MediaProviderSupport(iHttpServer); PluginManager pluginManager = new PluginManager(aHelper, iHttpClient, iSupport); iLocator = new ContentDirectoryLocator(pluginManager, this); OptionBool optionLocalPlaylists = iLocator.Add(LocalPlaylists.kRootId, iLocalPlaylists); OptionBool optionRemotePlaylists = iLocator.Add(RemotePlaylists.kRootId, iRemotePlaylists); iLocator.Add(MediaProviderLibrary.kLibraryId, iLibrary); aHelper.AddOptionPage(iLocator.OptionPage); iPlaySupport = new PlaySupport(); iSaveSupport = new SaveSupport(aHelper, iRemotePlaylists, optionRemotePlaylists, iLocalPlaylists, optionLocalPlaylists); iViewSaveSupport = new ViewSaveSupport(SavePlaylistHandler, iSaveSupport); }
public override void AwakeFromNib() { base.AwakeFromNib(); iTracker = new InputTrackerDoubleTouch(); iTracker.View = this; iTracker.EventBegin += Begin; AcceptsTouchEvents = true; BecomeFirstResponder(); iHelper = new HelperKinsky(new string[] { }); iHelper.ProcessOptionsFileAndCommandLine(); iHelper.StartupRoom.Set("Sitting Room"); ViewMaster view = new ViewMaster(); iViewRoom = new ViewWidgetSelectorRoom(); view.ViewWidgetSelectorRoom.Add(iViewRoom); iViewVolume = new ViewWidgetVolumeControl(); view.ViewWidgetVolumeControl.Add(iViewVolume); Model model = new Model(view, new PlaySupport()); iMediator = new Mediator(iHelper, model); iMediator.Open(); iHelper.Stack.Start(); }
public OptionsDialog(HelperKinsky aHelperKinsky, UiOptions aUiOptions) { InitializeComponent(); iHelperKinsky = aHelperKinsky; iHelperKinsky.EventOptionPagesChanged += new EventHandler <EventArgs>(aHelperKinsky_EventOptionPagesChanged); LoadOptions(); if (iOptionPages.Count > 0) { iOptionPages[0].IsSelected = true; } iUiOptions = aUiOptions; this.Loaded += LoadedHandler; }
public ViewWidgetSelectorPopover(HelperKinsky aHelper, UITableViewController aController, IViewWidgetSelector <T> aSelector, UIBarButtonItem aButtonItemOpen, UIBarButtonItem aButtonItemCancel) { iHelper = aHelper; iButton = aButtonItemOpen; iDefaultTitle = iButton.Title; iController = aController; aButtonItemOpen.Clicked += OpenClicked; aButtonItemCancel.Clicked += CancelClicked; aSelector.EventSelectionChanged += SelectionChanged; iItems = new List <T>(); }
public AboutDialog(HelperKinsky aHelperKinsky, string aSize, UiOptions aUiOptions) { InitializeComponent(); if (aSize == KinskyDesktop.kFontOptionLarge) { Height = 180; Width = 480; } txtProduct.Text = aHelperKinsky.Product; txtVersion.Text = String.Format("Version: {0}", aHelperKinsky.Version); txtCopyright.Text = aHelperKinsky.Copyright; txtCompany.Text = aHelperKinsky.Company; txtDescription.Text = aHelperKinsky.Description; iUiOptions = aUiOptions; this.Loaded += LoadedHandler; }
public KinskyDesktop() { iInstance = this; HttpWebRequest.DefaultWebProxy = WebRequest.GetSystemWebProxy(); HttpWebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; iWindowLoaded = new AutoResetEvent(false); iImageCache = new WpfImageCache(kCacheSize, kDownscaleImageSize, kThreadCount); iIconResolver = new IconResolver(); ResourceDictionary dictionary = App.Current.Resources; string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().FullName; string[] resourceDictionaries = { "Shared", "ControlStyles", "ScrollBar", "ComboBox", "ListBox", "TileViewStyle", "WindowChromeStyle", "MenuItem", "Slider" }; foreach (string resourceDictionary in resourceDictionaries) { dictionary.MergedDictionaries.Add(Application.LoadComponent(new Uri(string.Format("/{0};component/{1}.xaml", assemblyName, resourceDictionary), UriKind.Relative)) as ResourceDictionary); } InitializeComponent(); iUpdateOnExit = false; iHelper = new HelperKinsky(Environment.GetCommandLineArgs(), new Invoker(this.Dispatcher)); ICrashLogDumper d = new CrashLogDumperForm(this, iHelper.Title, iHelper.Product, iHelper.Version); iHelper.AddCrashLogDumper(d); System.Windows.Forms.Application.SetUnhandledExceptionMode(System.Windows.Forms.UnhandledExceptionMode.ThrowException); iUIOptions = new UiOptions(iHelper); InitialiseStack(); WindowChrome.SetIsMiniModeActive(mainWindowChrome, iUIOptions.MiniMode); SetWindowDimensions(); iProcessedOptions = true; AllowsTransparency = iTransparentOption.Native; this.Loaded += new RoutedEventHandler(KinskyDesktop_Loaded); }
public NotificationView(HelperKinsky aHelper) { iNotificationController = new NotificationController(aHelper.Invoker, aHelper, new NotificationServerHttp(NotificationServerHttp.DefaultUri(aHelper.Product)), this, NotificationController.DefaultTimespan); }
public FormKinskyDesktop(HelperKinsky aHelperKinsky) { iCurrentView = 0; iHelper = aHelperKinsky; KinskyDesktop.Properties.Resources.SetBasePath(iHelper.ExePath.FullName); InitializeComponent(); if (Environment.OSVersion.Platform == PlatformID.Unix) { SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; } Icon = Icon.FromHandle(Linn.Kinsky.Properties.Resources.KinskyLogo.GetHicon()); SplitContainer.Panel1MinSize = 200; SplitContainer.Panel2MinSize = 200; SplitContainer.SplitterDistance = (int)(Width * 0.5f); Text = iHelper.Product; notifyIcon.Text = iHelper.Product; try { notifyIcon.Icon = Icon; } catch (NotImplementedException) { } // thrown on MacOSX kHeaderLeft = KinskyDesktop.Properties.Resources.Wing1; kHeaderRight = KinskyDesktop.Properties.Resources.Wing2; kHeaderFiller = KinskyDesktop.Properties.Resources.FillerTop; kFooterLeft = KinskyDesktop.Properties.Resources.Wing3; kFooterRight = KinskyDesktop.Properties.Resources.Wing4; kFooterFiller = KinskyDesktop.Properties.Resources.FillerBottom; kRightEdgeFiller = KinskyDesktop.Properties.Resources.RightEdgeFiller; kLeftEdgeFiller = KinskyDesktop.Properties.Resources.LeftEdgeFiller; kMiniLeft = KinskyDesktop.Properties.Resources.MiniWing1; kMiniRight = KinskyDesktop.Properties.Resources.MiniWing2; kMiniFiller = KinskyDesktop.Properties.Resources.MiniFiller; iBrushHeaderFiller = new TextureBrush(kHeaderFiller); iBrushLeftFiller = new TextureBrush(kLeftEdgeFiller); iBrushLeftFiller.TranslateTransform(0, kHeaderLeft.Height); iBrushRightFiller = new TextureBrush(kRightEdgeFiller); iBrushFooterFiller = new TextureBrush(kFooterFiller); iBrushMiniFiller = new TextureBrush(kMiniFiller); iHttpClient = new HttpClient(); iHttpServer = new HttpServer(HttpServer.kPortKinskyDesktop); iUiOptions = new UiOptions(iHelper); iOptionPageGeneral = new OptionPageGeneral(); iHelper.AddOptionPage(iOptionPageGeneral); iOptionPageColours = new OptionPageColours(); iHelper.AddOptionPage(iOptionPageColours); iOptionPageFonts = new OptionPageFonts(); iHelper.AddOptionPage(iOptionPageFonts); iArtworkCache = new ArtworkCache(ArtworkCache.ECacheSize.eMedium); iViewSupport = new ViewSupport(iOptionPageColours, iOptionPageFonts); iLibrary = new MediaProviderLibrary(iHelper); iLocalPlaylists = new LocalPlaylists(iHelper, true); iSharedPlaylists = new SharedPlaylists(iHelper); MediaProviderSupport mediaProviderSupport = new MediaProviderSupport(iHttpServer); iOptionPageGeneral.EventTransparencyChanged += TransparencyOrBorderChanged; iOptionPageGeneral.EventWindowBorderChanged += TransparencyOrBorderChanged; iOptionPageGeneral.EventHideMouseCursorChanged += HideMouseCursorChanged; iOptionPageGeneral.EventUseRotaryControlsChanged += UseRotaryControlsChanged; iOptionPageGeneral.EventShowToolTipsChanged += ShowToolTipsChanged; iViewSupport.EventSupportChanged += EventSupportChanged; iFormUserLog = new FormUserLog(Icon); iViewStatus = new FormStatus(this, iArtworkCache, iViewSupport); iViewStatus.UseTheme = false; iViewStatus.Icon = Icon; iViewStatus.Visible = false; iViewStatus.TopLevel = false; iViewStatus.FormBorderStyle = FormBorderStyle.None; iViewStatus.MouseMove += FormKinskyDesktop_MouseMove; Controls.Add(iViewStatus); PluginManager pluginManager = new PluginManager(iHelper, iHttpClient, mediaProviderSupport); iLocator = new ContentDirectoryLocator(pluginManager, new AppRestartHandler()); iLocator.Add(MediaProviderLibrary.kLibraryId, iLibrary); OptionBool optionLocalPlaylists = iLocator.Add(LocalPlaylists.kRootId, iLocalPlaylists); OptionBool optionSharedPlaylists = iLocator.Add(SharedPlaylists.kRootId, iSharedPlaylists); iSaveSupport = new SaveSupport(iHelper, iSharedPlaylists, optionSharedPlaylists, iLocalPlaylists, optionLocalPlaylists); iViewSaveSupport = new ViewSaveSupport(RequestLocalPlaylistFilename, iSaveSupport); iPlaySupport = new PlaySupport(); // create the DropConverter for the browse views DropConverter browseDropConverter = new DropConverter(); browseDropConverter.Add(new DropConverterInternal()); browseDropConverter.Add(new DropConverterUri()); browseDropConverter.Add(new DropConverterFileDrop(iHttpServer, false)); browseDropConverter.Add(new DropConverterText()); MediatorLocation location = new MediatorLocation(); MediatorTab tab = new MediatorTab(this, location); IBrowser b = new Browser(new Location(iLocator)); tab.Add(new ViewWidgetTabPage(this, 0), new ViewWidgetBrowser(this, b, iArtworkCache, iViewSupport, iPlaySupport, browseDropConverter, iUiOptions), b); b = new Browser(new Location(iLocator)); tab.Add(new ViewWidgetTabPage(this, 1), new ViewWidgetBrowser(this, b, iArtworkCache, iViewSupport, iPlaySupport, browseDropConverter, iUiOptions), b); b = new Browser(new Location(iLocator)); tab.Add(new ViewWidgetTabPage(this, 2), new ViewWidgetBrowser(this, b, iArtworkCache, iViewSupport, iPlaySupport, browseDropConverter, iUiOptions), b); b = new Browser(new Location(iLocator)); tab.Add(new ViewWidgetTabPage(this, 3), new ViewWidgetBrowser(this, b, iArtworkCache, iViewSupport, iPlaySupport, browseDropConverter, iUiOptions), b); location.Add(tab); ViewWidgetBreadcrumb breadcrumb = new ViewWidgetBreadcrumb(this, iViewSupport, location, new ViewWidgetButtonUp(this)); location.Add(breadcrumb); // create the DropConverter for the other views DropConverter viewDropConverter = new DropConverter(); viewDropConverter.Add(new DropConverterInternal()); viewDropConverter.Add(new DropConverterUri()); viewDropConverter.Add(new DropConverterFileDrop(iHttpServer, true)); viewDropConverter.Add(new DropConverterText()); iSourceList = new ReceiverSourceList(iHelper); iView = new View(this, iArtworkCache, iViewSupport, iPlaySupport, iViewSaveSupport, viewDropConverter, iSourceList, iHelper.Senders); iModel = new Model(iView, iPlaySupport); iMediator = new Mediator(iHelper, iModel); iHelper.SetStackExtender(this); iHelper.Stack.SetStatusHandler(new StackStatusHandlerWinForms(iHelper.Title, notifyIcon)); }
public KinskyDesktop() { iInstance = this; HttpWebRequest.DefaultWebProxy = WebRequest.GetSystemWebProxy(); HttpWebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; iWindowLoaded = new AutoResetEvent(false); iImageCache = new WpfImageCache(kCacheSize, kDownscaleImageSize, kThreadCount); iIconResolver = new IconResolver(); ResourceDictionary dictionary = App.Current.Resources; string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().FullName; string[] resourceDictionaries = { "Shared", "ControlStyles", "ScrollBar", "ComboBox", "ListBox", "TileViewStyle", "WindowChromeStyle", "MenuItem", "Slider" }; foreach (string resourceDictionary in resourceDictionaries) { dictionary.MergedDictionaries.Add(Application.LoadComponent(new Uri(string.Format("/{0};component/Resources/{1}.xaml", assemblyName, resourceDictionary), UriKind.Relative)) as ResourceDictionary); } InitializeComponent(); iUpdateOnExit = false; var invoker = new Invoker(this.Dispatcher); iHelper = new HelperKinsky(Environment.GetCommandLineArgs(), invoker); #if DEBUG Xamarin.Insights.Initialize(kApiKeyDummyProject, iHelper.Version, iHelper.Product); #else Xamarin.Insights.Initialize(kApiKey, iHelper.Version, iHelper.Product); #endif ICrashLogDumper d = new CrashLogDumperForm(this, iHelper.Title, iHelper.Product, iHelper.Version); iHelper.AddCrashLogDumper(d); System.Windows.Forms.Application.SetUnhandledExceptionMode(System.Windows.Forms.UnhandledExceptionMode.ThrowException); iUIOptions = new UiOptions(iHelper); InitialiseStack(); Xamarin.Insights.Identify(iHelper.OptionInstallId.Value, null); WindowChrome.SetIsMiniModeActive(mainWindowChrome, iUIOptions.MiniMode); SetWindowDimensions(); iProcessedOptions = true; AllowsTransparency = iTransparentOption.Native; this.Loaded += new RoutedEventHandler(KinskyDesktop_Loaded); iNotificationController = new NotificationController(invoker, iHelper, new NotificationServerHttp(NotificationServerHttp.DefaultUri(iHelper.Product)), this, NotificationController.DefaultTimespan); viewKinsky.ShowOptionsDialog = () => { ShowOptionsDialog(false); }; Uri iconUri = new Uri("pack://application:,,,/icon.ico", UriKind.RelativeOrAbsolute); //make sure your path is correct, and the icon set as Resource this.Icon = BitmapFrame.Create(iconUri, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); }
internal void Initialise(KinskyDesktop aKinskyDesktop, HelperKinsky aHelperKinsky, ContentDirectoryLocator aLocator, IViewSaveSupport aSaveSupport, IPlaylistSupport aPlaylistSupport, DropConverter aBrowseDropConverter, DropConverter aViewDropConverter, ViewMaster aViewMaster, UiOptions aUIOptions, OptionBool aPlaylistGroupingOption, ModelSenders aSenders ) { iHelperKinsky = aHelperKinsky; iLocator = aLocator; iBrowseDropConverter = aBrowseDropConverter; iViewMaster = aViewMaster; iUIOptions = aUIOptions; iSenders = aSenders; iPlaylistSupport = aPlaylistSupport; aPlaylistSupport.EventIsDraggingChanged += new EventHandler <EventArgs>(aPlaylistSupport_EventIsDraggingChanged); iViewDropConverter = aViewDropConverter; iBrowser = new Browser(new Location(iLocator.Root)); ViewWidgetButton upButtonWidgetBrowser = new ViewWidgetButton(buttonUpBrowser); breadcrumbBrowser.SetButtonUpDirectory(upButtonWidgetBrowser); iNavigationController = new NavigationController(iBrowser, iLocator, breadcrumbBrowser, iHelperKinsky); iBookmarks = new ViewWidgetBookmarks(iHelperKinsky, iHelperKinsky.BookmarkManager, lstBookmarks, iBrowser, popupBookmarksList, popupAddBookmark, buttonShowBookmarksList, buttonShowAddBookmark, buttonAddBookmark, buttonCancelAddBookmark, txtTitle, txtBreadcrumb, pnlAddBookmark, iNavigationController); iBrowserWidget = new ViewWidgetBrowser(iPlaylistSupport, iBrowseDropConverter, buttonChangeSize, buttonToggleListView, iUIOptions, sliderSize, iNavigationController, iBookmarks); pnlBrowser.Children.Add(iBrowserWidget); iRoomSelector = new ViewWidgetSelectorRoom(lstRooms, ctlSelectRoom, btnStandbyAll); IPlaylistWidget playlistMediaRenderer = new PlaylistWidget(aViewDropConverter, aPlaylistSupport, iUIOptions); IPlaylistWidget playlistRadio = new PlaylistWidget(aViewDropConverter, aPlaylistSupport, iUIOptions); IPlaylistWidget playlistReceiver = new PlaylistWidget(aViewDropConverter, aPlaylistSupport, iUIOptions); iViewWidgetPlaylistMediaRenderer = new ViewWidgetPlaylistMediaRenderer(pnlPlaylist, playlistMediaRenderer, aSaveSupport, aPlaylistSupport, aPlaylistGroupingOption.Native); iViewWidgetPlaylistRadio = new ViewWidgetPlaylistRadio(pnlPlaylist, playlistRadio, aSaveSupport); iViewWidgetPlaylistAux = new ViewWidgetPlaylistAux(pnlPlaylist); iViewWidgetPlaylistDiscPlayer = new ViewWidgetPlaylistDiscPlayer(pnlPlaylist); iViewWidgetPlaylistReceiver = new ViewWidgetPlaylistReceiver(pnlPlaylist, playlistReceiver, aSaveSupport, iSenders); iViewWidgetButtonStandby = new ViewWidgetButtonStandby(this); iViewWidgetButtonSave = new ViewWidgetButtonSave(buttonSave, aViewDropConverter, aSaveSupport); iViewWidgetButtonWasteBin = new ViewWidgetButtonWasteBin(buttonDelete, aViewDropConverter); iViewWidgetPlayMode = new ViewWidgetPlayMode(buttonRepeat, buttonShuffle); iViewWidgetTransportControl = new ViewWidgetTransportControl(aKinskyDesktop, threeKArray, aViewDropConverter, aPlaylistSupport); iViewWidgetPlayNowNextLater = new ViewWidgetPlayNowNextLater(aViewDropConverter, aPlaylistSupport, buttonPlayNow, buttonPlayNext, buttonPlayLater); iViewWidgetVolumeControl = new ViewWidgetVolumeControl(aKinskyDesktop, rotaryControlVolume, rockerControlVolume); iViewWidgetMediaTime = new ViewWidgetMediaTime(rotaryControlMediaTime, rockerControlMediaTime); iViewWidgetTrack = new ViewWidgetTrack(viewWidgetTrackDisplay, new IPlaylistWidget[] { playlistMediaRenderer, playlistRadio, playlistReceiver }); SplitBarPositionLeft = new GridLength(iUIOptions.BrowserSplitterLocationLeft, GridUnitType.Star); SplitBarPositionRight = new GridLength(iUIOptions.BrowserSplitterLocationRight, GridUnitType.Star); iSourceSelector = new ViewWidgetSelectorSource(lstSources, ctlSelectSource); iMediatorHouse = new MediatorHouse(iRoomSelector, iSourceSelector, pnlPlaylist, lstRooms, lstSources, buttonSelectRoom, buttonSelectSource, popupRoomSelection, popupSourceSelection, btnStandbyAll);; aPlaylistGroupingOption.EventValueChanged += (d, e) => { iViewWidgetPlaylistMediaRenderer.SetGroupByAlbum(aPlaylistGroupingOption.Native); }; iInitialised = true; }
private void InitialiseStack() { iEventCreated.WaitOne(); iEventLock = new object(); iUserLogListener = new AndroidUserLogListener(); UserLog.AddListener(iUserLogListener); iTraceListener = new AndroidTraceListener(); Trace.AddListener(iTraceListener); iInvoker = new Invoker(this.ApplicationContext); iResourceManager = new AndroidResourceManager(this.Resources); iIconResolver = new IconResolver(iResourceManager); iLayoutInflater = (LayoutInflater)GetSystemService(Context.LayoutInflaterService); iHelperKinsky = new HelperKinsky(new string[2] { "-t", kTraceLevel }, Invoker); Android.Runtime.AndroidEnvironment.UnhandledExceptionRaiser += UnhandledExceptionRaiser; // name the crash dumper section general and add other UI options OptionPageCrashDumper generalOptions = new OptionPageCrashDumper("General"); iOptionExtendedTrackInfo = new OptionBool("trackinfo", "Extended track info", "Show extended track information for the current track", true); generalOptions.Add(iOptionExtendedTrackInfo); iOptionEnableRocker = new OptionBool("rocker", "Button controls", "Enable button controls for controlling volume and seeking", false); generalOptions.Add(iOptionEnableRocker); iOptionGroupTracks = new OptionBool("groupplaylist", "Group playlist tracks", "Grouping tracks by album within the playlist window", true); generalOptions.Add(iOptionGroupTracks); iOptionAutoLock = new OptionEnum("autolock", "Prevent auto-lock", "When to prevent auto-lock"); iOptionAutoLock.AddDefault(kAutoLockNever); iOptionAutoLock.Add(kAutoLockCharging); iOptionAutoLock.Add(kAutoLockAlways); generalOptions.Add(iOptionAutoLock); iOptionAutoLock.EventValueChanged += OptionAutoLock_EventValueChangedHandler; iHelperKinsky.AddOptionPage(generalOptions); iHelperKinsky.SetStackExtender(this); iCrashLogDumper = new CrashDumper(this.ApplicationContext, Resource.Drawable.Icon, iHelperKinsky, generalOptions); iHelperKinsky.AddCrashLogDumper(iCrashLogDumper); iOptionInsertMode = new OptionInsertMode(); iHelperKinsky.AddOption(iOptionInsertMode); iViewMaster = new ViewMaster(); iHttpServer = new HttpServer(HttpServer.kPortKinskyDroid); iHttpClient = new HttpClient(); iLibrary = new MediaProviderLibrary(iHelperKinsky); iSharedPlaylists = new SharedPlaylists(iHelperKinsky); iLocalPlaylists = new LocalPlaylists(iHelperKinsky, false); PluginManager pluginManager = new PluginManager(iHelperKinsky, iHttpClient, new MediaProviderSupport(iHttpServer)); iLocator = new ContentDirectoryLocator(pluginManager, new AppRestartHandler()); OptionBool optionSharedPlaylists = iLocator.Add(SharedPlaylists.kRootId, iSharedPlaylists); OptionBool optionLocalPlaylists = iLocator.Add(LocalPlaylists.kRootId, iLocalPlaylists); iLocator.Add(MediaProviderLibrary.kLibraryId, iLibrary); iHelperKinsky.AddOptionPage(iLocator.OptionPage); iSaveSupport = new SaveSupport(iHelperKinsky, iSharedPlaylists, optionSharedPlaylists, iLocalPlaylists, optionLocalPlaylists); iPlaySupport = new PlaySupport(); iHelperKinsky.ProcessOptionsFileAndCommandLine(); Linn.Kinsky.Model model = new Linn.Kinsky.Model(iViewMaster, iPlaySupport); iMediator = new Mediator(iHelperKinsky, model); iAndroidViewMaster = new AndroidViewMaster(this, iViewMaster, iInvoker, iResourceManager, iSaveSupport, iIconResolver, iOptionGroupTracks, iOptionExtendedTrackInfo, IsTabletView ? kMaxImageCacheSizeTablet : kMaxImageCacheSizePhone); iStackWatchdog = new System.Threading.Timer(StackWatchdogExpired); iPowerListener = new PowerStateListener(this.ApplicationContext); iPowerListener.EventPowerStateChanged += EventPowerStateChangedHandler; iIsCharging = PowerStateListener.IsConnected(this.ApplicationContext); iRescanTimer = new System.Threading.Timer((e) => { Rescan(); }); iRescanTimer.Change(Timeout.Infinite, Timeout.Infinite); SetAutoLock(); EventLowMemory += EventLowMemoryHandler; iInitialised = true; StartStack(); }