protected override void OnElementChanged(ElementChangedEventArgs <Entry> e) { base.OnElementChanged(e); if (Control != null) { InputEvents.GetEventHandlers(Element).Add(new RemoteKeyHandler(new Action <RemoteControlKeyEventArgs>((args) => { if (args.PlatformKeyName.Equals(_doneKeyName)) { FocusSearch(true)?.SetFocus(true); Device.BeginInvokeOnMainThread(() => { Element.Text = Control.Text; Element.SendCompleted(); }); } else if (args.PlatformKeyName.Equals(_cancelKeyName)) { Control.HideInputPanel(); } }), RemoteControlKeyTypes.KeyDown)); if (Control is Xamarin.Forms.Platform.Tizen.Native.Entry nentry) { nentry.EntryLayoutFocused += OnFocused; nentry.EntryLayoutUnfocused += OnUnfocused; } } }
protected override void OnAppearing() { base.OnAppearing(); //InputEvents.GetEventHandlers(CastList).Add(new RemoteKeyHandler(async (evt) => //{ // if (evt.KeyName == RemoteControlKeyNames.Up && ButtonArea.Children.Count > 0) // { // var btn = ButtonArea.Children[0]; // await ScrollView.ScrollToAsync(btn, ScrollToPosition.Center, true); // btn.Focus(); // } // else if (evt.KeyName == RemoteControlKeyNames.Down) // { // await ScrollView.ScrollToAsync(SimilarList, ScrollToPosition.Center, true); // SimilarList.Focus(); // } //}, RemoteControlKeyTypes.KeyDown)); InputEvents.GetEventHandlers(SimilarList).Add(new RemoteKeyHandler(async(evt) => { if (evt.KeyName == RemoteControlKeyNames.Up) { //await ScrollView.ScrollToAsync(CastList, ScrollToPosition.Center, true); //CastList.Focus(); } }, RemoteControlKeyTypes.KeyDown)); }
bool InvokeActionAndEvent(RemoteControlKeyTypes keyType, string keyName, bool isHandled = false) { RemoteControlKeyEventArgs args = RemoteControlKeyEventArgs.Create((VisualElement)Element, keyType, keyName, isHandled); if (args == null) { return(false); } if (Element is Page targetPage) { if (!IsOnMainPage(targetPage)) { return(false); } } var handlers = InputEvents.GetEventHandlers(Element); foreach (RemoteKeyHandler item in handlers) { item.SendKeyEvent(args); } return(args.Handled); }
public TestRemoteControl() { Button button1 = new Button { Text = "Button1" }; Switch toggle = new Switch(); RemoteKeyHandler buttonHandler = new RemoteKeyHandler(new Action <RemoteControlKeyEventArgs>((arg) => { Console.WriteLine(" Control => arg.KeyType : {0} , arg.KeyName : {1}, arg.PlatformKeyName : {2}", arg.KeyType, arg.KeyName, arg.PlatformKeyName); button1.Text = $"Button1 : {arg.KeyType} {arg.KeyName} {arg.PlatformKeyName}"; arg.Handled = toggle.IsToggled; })); InputEvents.GetEventHandlers(button1).Add(buttonHandler); Button button2 = new Button { Text = "Button2 (Accesskey 1)" }; button2.Clicked += (s, e) => { button2.Text = $"Button2 (Accesskey 1): {++_clickedTimes} clicked"; }; InputEvents.SetAccessKey(button2, RemoteControlKeyNames.NUM1); SetBinding(TitleProperty, new Binding("Name")); Label label; Content = new StackLayout { Children = { new StackLayout { Orientation = StackOrientation.Horizontal, Children = { toggle, new Label { Text = "Consume event" } } }, button1, button2, (label = new Label()) } }; RemoteKeyHandler PageHandler = new RemoteKeyHandler(new Action <RemoteControlKeyEventArgs>((arg) => { Console.WriteLine("Page1 => arg.KeyType : {0} , arg.KeyName : {1} , arg.PlatformKeyName : {2}", arg.KeyType, arg.KeyName, arg.PlatformKeyName); label.Text = $"Page Key event : KeyType {arg.KeyType}, KeyName {arg.KeyName}, PlatformKeyName {arg.PlatformKeyName}"; })); InputEvents.GetEventHandlers(this).Add(PageHandler); }
public DetailPageWithCapture(int id) { InitializeComponent(); WaitingView.Opacity = 1.0; Task.Run(async() => { AppInfo movie = await AppService.GetAppInfoAsync(id); var taskSimilar = await AppService.GetScreenCaptureListAsync(id, movie.Identifier); Log.Debug("Demo", id + " " + movie.Identifier); Device.BeginInvokeOnMainThread(async() => { WaitingView.Opacity = 0.0; _movie = movie; BindingContext = movie; _similars = new MovieListModel { Title = "Screen Captures", Items = taskSimilar, }; SimilarList.BindingContext = _similars; var button = new Button { Text = "Launch Application", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand }; button.Clicked += (s, e) => { AppControl appControl = new AppControl(); appControl.ApplicationId = movie.AppId; appControl.Operation = AppControlOperations.Default; AppControl.SendLaunchRequest(appControl); }; ButtonArea.Children.Add(button); InputEvents.GetEventHandlers(button).Add( new RemoteKeyHandler((arg) => { if (arg.KeyName == RemoteControlKeyNames.Up) { ScrollView.ScrollToAsync(0, 0, true); arg.Handled = true; } }, RemoteControlKeyTypes.KeyDown )); }); }); }
public MainPage() { InitializeComponent(); _model = new MainPageModel(); BindingContext = _model; Device.BeginInvokeOnMainThread(() => { MenuList.Focus(); MenuItemsView_ItemSelected(this, new SelectedItemChangedEventArgs(_model.MenuItems[0])); }); InputEvents.GetEventHandlers(MenuList).Add(new RemoteKeyHandler((evt) => { if (evt.KeyName == RemoteControlKeyNames.Right) { evt.Handled = true; PosterView.Focus(); } }, RemoteControlKeyTypes.KeyDown)); }
protected override void OnElementChanged(ElementChangedEventArgs <Entry> e) { base.OnElementChanged(e); if (Control != null) { InputEvents.GetEventHandlers(Element).Add(new RemoteKeyHandler(new Action <RemoteControlKeyEventArgs>((args) => { if (args.PlatformKeyName.Equals(_doneKeyName)) { Control.SetFocus(false); Device.BeginInvokeOnMainThread(() => { Element.Text = Control.Text; Element.SendCompleted(); }); } else if (args.PlatformKeyName.Equals(_cancelKeyName)) { Control.HideInputPanel(); } }), RemoteControlKeyTypes.KeyDown)); } }
//MovieListModel _similars; public DetailPage(int id) { InitializeComponent(); WaitingView.Opacity = 1.0; Task.Run(async() => { AppInfo movie = await AppService.GetAppInfoAsync(id); Device.BeginInvokeOnMainThread(async() => { WaitingView.Opacity = 0.0; _movie = movie; BindingContext = movie; var button = new Button { Text = "Show Demo", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand }; button.Clicked += async(s, e) => { if ((movie.Id / 10 == 5)) { try { AppControl appControl = new AppControl(); appControl.ApplicationId = movie.AppId; appControl.Operation = AppControlOperations.Default; appControl.ExtraData.Add("key", "value"); AppControl.SendLaunchRequest(appControl); } catch (Exception ee) { Log.Error("Demo", "Launch App " + ee + " " + ee.Message); } Log.Error("Demo", "Launch App " + movie.AppId); } else { var StartClassType = GetType().GetTypeInfo(); Assembly asm = StartClassType.Assembly; IEnumerable <Type> _tcs = from tc in asm.DefinedTypes where tc.Name == movie.Title select tc.AsType(); foreach (Type type in _tcs) { Page page = (Page)Activator.CreateInstance(type); page.Title = movie.OriginalTitle; Log.Error("Demo", "Push page "); await Navigation.PushAsync(page); } } }; ButtonArea.Children.Add(button); InputEvents.GetEventHandlers(button).Add( new RemoteKeyHandler((arg) => { if (arg.KeyName == RemoteControlKeyNames.Up) { ScrollView.ScrollToAsync(0, 0, true); arg.Handled = true; } }, RemoteControlKeyTypes.KeyDown )); }); }); }
public TestNavigationPage() { SetHasNavigationBar(this, false); InputEvents.GetEventHandlers(this).Add(new RemoteKeyHandler((args) => { if (args.KeyName == RemoteControlKeyNames.Up) { DisplayAlert("KeyEvent", "Up Pressed on NavigationPage", "ok"); } }, RemoteControlKeyTypes.KeyUp)); var page1 = new ContentPage { Title = "child page1", Content = new StackLayout { Children = { new Label { Text = "`Up` is triggering NavigationPage EventHandler" }, new Label { Text = "`Down` is triggering child page1 EventHandler" }, } } }; InputEvents.GetEventHandlers(page1).Add(new RemoteKeyHandler((args) => { if (args.KeyName == RemoteControlKeyNames.Down) { DisplayAlert("KeyEvent", "Down Pressed on child page1", "ok"); } }, RemoteControlKeyTypes.KeyUp)); var page2 = new ContentPage { Title = "child page2", Content = new StackLayout { Children = { new Label { Text = "`Up` is triggering NavigationPage EventHandler" }, new Label { Text = "`Down` is triggering child page2 EventHandler" }, } } }; InputEvents.GetEventHandlers(page2).Add(new RemoteKeyHandler((args) => { if (args.KeyName == RemoteControlKeyNames.Down) { DisplayAlert("KeyEvent", "Down Pressed on child page2", "ok"); } }, RemoteControlKeyTypes.KeyUp)); this.PushAsync(page1); this.PushAsync(page2); }
public DetailPage(int id) { InitializeComponent(); WaitingView.Opacity = 1.0; Task.Run(async() => { var client = new TMDbClient(TMDbAPIKey.Key); var taskMovie = client.GetMovieAsync(id); var taskSimilar = client.GetMovieSimilarAsync(id); var taskCredit = client.GetMovieCreditsAsync(id); var taskVideo = client.GetMovieVideosAsync(id); var movie = await taskMovie; Device.BeginInvokeOnMainThread(async() => { WaitingView.Opacity = 0.0; _movie = movie; BindingContext = movie; var credit = await taskCredit; var cast = new CastListModel { Items = credit.Cast }; CastList.BindingContext = cast; var similars = await taskSimilar; _similars = new MovieListModel { Title = "Similar Movies", Items = similars.Results, }; SimilarList.BindingContext = _similars; var videos = await taskVideo; int i = 0; foreach (var video in videos.Results) { if (video.Site == "YouTube") { i++; var button = new Button { Text = $"Watch trailer #{i}", HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand }; button.Clicked += (s, e) => { #if USE_VIDEOPAGE Navigation.PushAsync(new VideoPage(video.Key)); #else AppControl appControl = new AppControl(); appControl.ApplicationId = "com.samsung.tv.cobalt-yt"; appControl.Operation = AppControlOperations.Default; appControl.ExtraData.Add("PAYLOAD", $"#play?v={video.Key}"); AppControl.SendLaunchRequest(appControl); #endif Console.WriteLine($"ID : {video.Key}"); }; Console.WriteLine($"Video : {video.Key} {video.Name} {video.Site}"); ButtonArea.Children.Add(button); InputEvents.GetEventHandlers(button).Add( new RemoteKeyHandler((arg) => { if (arg.KeyName == RemoteControlKeyNames.Up) { ScrollView.ScrollToAsync(0, 0, true); arg.Handled = true; } }, RemoteControlKeyTypes.KeyDown )); } if (i > 2) { break; } } }); }); }