예제 #1
0
        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));
        }
예제 #3
0
        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
                                             ));
                });
            });
        }
예제 #6
0
        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));
        }
예제 #7
0
        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));
            }
        }
예제 #8
0
        //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
                                             ));
                });
            });
        }
예제 #9
0
        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);
        }
예제 #10
0
        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;
                        }
                    }
                });
            });
        }