示例#1
0
        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();
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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();
        }
示例#6
0
 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;
 }
示例#7
0
        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>();
        }
示例#8
0
 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;
 }
示例#9
0
        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);
        }
示例#10
0
 public NotificationView(HelperKinsky aHelper)
 {
     iNotificationController = new NotificationController(aHelper.Invoker, aHelper, new NotificationServerHttp(NotificationServerHttp.DefaultUri(aHelper.Product)), this, NotificationController.DefaultTimespan);
 }
示例#11
0
        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));
        }
示例#12
0
        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);
        }
示例#13
0
        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;
        }
示例#14
0
        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();
        }