Example #1
0
        public override async Task OnNavigateToAsync()
        {
            HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual(Application.Current.MainWindow);
            IPlayerNotificationProvider playerNotificationProvider = new PlayerNotificationProvider(hwndSource);
            IDeviceListener             uPnPDeviceListener         = new UPnPDeviceListener(new NetworkInfoProvider(), this.transportFactory);
            IDeviceDiscovery            uPnPDeviceDiscovery        = new UPnPDeviceDiscovery(this.transportFactory, uPnPDeviceListener);
            IDeviceDiscovery            tvDiscovery = new TvDiscovery(uPnPDeviceDiscovery, new TcpWebTransport(TimeSpan.FromSeconds(5)));

            this.deviceController = new DeviceController(tvDiscovery, this.devicePairing, playerNotificationProvider, new DeviceSettingProvider(), base.Controller);
            this.deviceController.StartDiscovery();
            base.IsDataLoaded = false;
            await this.CheckForUpdates();

            bool previousDeviceAsync = await this.deviceController.ConnectToPreviousDeviceAsync();

            base.IsDataLoaded = true;
            if (!previousDeviceAsync)
            {
                base.Controller.Navigate(new WelcomeViewModel(this.deviceController), true);
            }
            else
            {
                base.Controller.Push(new WelcomeViewModel(this.deviceController));
                base.Controller.Navigate(new MainViewModel(this.deviceController), true);
            }
        }
        private async Task ConnectToDevice(object param)
        {
            Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]ConnectToDevice started... ", new object[0]);
            base.IsDataLoaded = false;
            try
            {
                try
                {
                    DeviceInfo deviceInfo = param as DeviceInfo;
                    if (deviceInfo == null)
                    {
                        return;
                    }
                    else if (!TvDiscovery.IsTv2014(deviceInfo))
                    {
                        Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]TV is not 14 year. ", new object[0]);
                        PopupWrapper popupWrapper           = this.messagePopup;
                        string[]     mAPPSIDUNABLECONNECTTV = new string[] { ResourcesModel.Instanse.MAPP_SID_UNABLE_CONNECT_TV, ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_NOT_SUPPORT_YOUR_TV };
                        await popupWrapper.ShowDialogAsync(mAPPSIDUNABLECONNECTTV);

                        return;
                    }
                    else if (await this.deviceController.TryToConnect(deviceInfo.DeviceAddress.Host))
                    {
                        await base.Controller.Navigate(new MainViewModel(this.deviceController), false);
                    }
                    else
                    {
                        Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]Call deviceController Connect . ", new object[0]);
                        switch (await this.deviceController.Connect(deviceInfo))
                        {
                        case DeviceController.ConnectResult.PinPageAlreadyShown:
                        {
                            Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]Another device is connecting. ", new object[0]);
                            PopupWrapper popupWrapper1    = this.messagePopup;
                            string[]     cOMTVSIDTRYAGAIN = new string[] { ResourcesModel.Instanse.COM_TV_SID_TRY_AGAIN, ResourcesModel.Instanse.MAPP_SID_ANOTHER_DEVICE_CURRENTLY_PAIR_TV };
                            await popupWrapper1.ShowDialogAsync(cOMTVSIDTRYAGAIN);

                            await base.Controller.GoBack();

                            return;
                        }

                        case DeviceController.ConnectResult.SocketException:
                        {
                            this.deviceController.RefreshDiscovery();
                            Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]TV is not ready. ", new object[0]);
                            PopupWrapper popupWrapper2 = this.messagePopup;
                            string[]     strArrays     = new string[] { ResourcesModel.Instanse.COM_TV_SID_TRY_AGAIN, ResourcesModel.Instanse.MAPP_SID_TV_NOT_READY_CONNECTION_TRY_AGAIN };
                            await popupWrapper2.ShowDialogAsync(strArrays);

                            await base.Controller.GoBack();

                            return;
                        }

                        case DeviceController.ConnectResult.OtherException:
                        {
                            Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]something went wrong. ", new object[0]);
                            PopupWrapper popupWrapper3     = this.messagePopup;
                            string[]     cOMTVSIDTRYAGAIN1 = new string[] { ResourcesModel.Instanse.COM_TV_SID_TRY_AGAIN, ResourcesModel.Instanse.MAPP_SID_SOMETHING_WENT_WRONG };
                            await popupWrapper3.ShowDialogAsync(cOMTVSIDTRYAGAIN1);

                            await base.Controller.GoBack();

                            return;
                        }

                        default:
                        {
                            object obj = await this.pinPopup.ShowDialogAsync(deviceInfo);

                            if (obj == null)
                            {
                                break;
                            }
                            if (!(obj is Exception))
                            {
                                if (obj is bool?)
                                {
                                    bool?nullable = (bool?)(obj as bool?);
                                    if ((!nullable.GetValueOrDefault() ? false : nullable.HasValue))
                                    {
                                        await base.Controller.Navigate(new MainViewModel(this.deviceController), false);

                                        break;
                                    }
                                }
                                await base.Controller.GoBack();

                                break;
                            }
                            else
                            {
                                Exception exception = obj as Exception;
                                Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]Error occured while connectiong to tv. ", new object[0]);
                                Logger instance = Logger.Instance;
                                instance.LogMessageFormat("[SmartView2][DeviceListViewModel]Error message: {0} ", new object[] { exception.Message });
                                Logger logger = Logger.Instance;
                                logger.LogMessageFormat("[SmartView2][DeviceListViewModel]Error message stack trace: {0} ", new object[] { exception.StackTrace });
                                PopupWrapper popupWrapper4      = this.messagePopup;
                                string[]     mAPPSIDSMARTVIEW20 = new string[] { ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_2_0, ResourcesModel.Instanse.MAPP_SID_ERROR_OCCURED_WHILE_CONNECTING_TO_TV };
                                popupWrapper4.Show(mAPPSIDSMARTVIEW20);
                                return;
                            }
                        }
                        }
                    }
                }
                catch (Exception exception2)
                {
                    Exception exception1 = exception2;
                    Logger.Instance.LogMessageFormat("[SmartView2][DeviceListViewModel]Catch unknown error.", new object[0]);
                    Logger instance1 = Logger.Instance;
                    instance1.LogMessageFormat("[SmartView2][DeviceListViewModel]Error message: {0} ", new object[] { exception1.Message });
                    Logger logger1 = Logger.Instance;
                    logger1.LogMessageFormat("[SmartView2][DeviceListViewModel]Error message stack trace: {0} ", new object[] { exception1.StackTrace });
                    PopupWrapper popupWrapper5       = this.messagePopup;
                    string[]     mAPPSIDSMARTVIEW201 = new string[] { ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_2_0, ResourcesModel.Instanse.MAPP_SID_SOMETHING_WENT_WRONG };
                    popupWrapper5.Show(mAPPSIDSMARTVIEW201);
                }
            }
            finally
            {
                base.IsDataLoaded = true;
            }
        }
Example #3
0
		private async void OnChangeDeviceCommand(object obj)
		{
			DeviceInfo deviceInfo = obj as DeviceInfo;
			if (deviceInfo != null)
			{
				if (TvDiscovery.IsTv2014(deviceInfo))
				{
					base.IsDataLoaded = false;
					await this.innerPageController.Dispose();
					if (await this.deviceController.TryToConnect(deviceInfo.DeviceAddress.Host))
					{
						await this.pageController.Navigate(new MainViewModel(this.deviceController), true);
					}
					else if (await this.deviceController.Reconnect(deviceInfo) == DeviceController.ConnectResult.Ok)
					{
						object obj1 = await this.pinPopup.ShowDialogAsync(deviceInfo);
						if (obj1 == null)
						{
							await this.pageController.GoBack(typeof(WelcomeViewModel));
						}
						else
						{
							if (obj1 is Exception)
							{
								PopupWrapper popupWrapper = this.messagePopup;
								string[] mAPPSIDSMARTVIEW20 = new string[] { ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_2_0, ResourcesModel.Instanse.MAPP_SID_ERROR_OCCURED_WHILE_CONNECTING_TO_TV };
								await popupWrapper.ShowDialogAsync(mAPPSIDSMARTVIEW20);
								await this.pageController.GoBack(typeof(WelcomeViewModel));
							}
							if (obj1 is bool?)
							{
								bool? nullable = (bool?)(obj1 as bool?);
								if ((!nullable.GetValueOrDefault() ? true : !nullable.HasValue))
								{
									goto Label1;
								}
								await this.pageController.Navigate(new MainViewModel(this.deviceController), true);
								goto Label0;
							}
						Label1:
							await this.pageController.GoBack(typeof(WelcomeViewModel));
						}
					}
					else
					{
						PopupWrapper popupWrapper1 = this.messagePopup;
						string[] strArrays = new string[] { ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_2_0, ResourcesModel.Instanse.MAPP_SID_ERROR_OCCURED_WHILE_CONNECTING_TO_TV };
						await popupWrapper1.ShowDialogAsync(strArrays);
						await this.pageController.GoBack(typeof(WelcomeViewModel));
					}
				Label0:
					base.IsDataLoaded = true;
					base.Controller.ClosePopup();
				}
				else
				{
					PopupWrapper popupWrapper2 = this.messagePopup;
					string[] mAPPSIDUNABLECONNECTTV = new string[] { ResourcesModel.Instanse.MAPP_SID_UNABLE_CONNECT_TV, ResourcesModel.Instanse.MAPP_SID_SMART_VIEW_NOT_SUPPORT_YOUR_TV };
					await popupWrapper2.ShowDialogAsync(mAPPSIDUNABLECONNECTTV);
				}
			}
		}