Exemplo n.º 1
0
        protected override void RootContainerInit()
        {
            var jsInterface = new DataJavascriptInterface(Context);

            ForumTopicPageItemWebView.Settings.JavaScriptEnabled = true;
            _client = new ListenableWebClient();
            _client.NavigationInterceptOpportunity = NavigationInterceptOpportunity;
            ForumTopicPageItemWebView.SetWebViewClient(_client);
            ForumTopicPageItemWebView.AddJavascriptInterface(jsInterface, "android");
            ForumTopicPageItemWebView.Tag = new WebViewTag(jsInterface).Wrap();
            ForumTopicPageItemWebView.VerticalScrollBarEnabled        = false;
            ForumTopicPageItemWebView.ScrollbarFadingEnabled          = true;
            ForumTopicPageItemWebView.HorizontalScrollBarEnabled      = false;
            ForumTopicPageItemWebView.ScrollBarDefaultDelayBeforeFade = 0;
            ForumTopicPageItemWebView.SetBackgroundColor(Color.Transparent);
            _dataJavascriptInterface = jsInterface;

            _dataJavascriptInterface.NewResponse += DataJavascriptInterfaceOnNewResponse;

            ForumTopicPageItemEditButton.SetOnClickListener(new OnClickListener(async view =>
            {
                await ViewModel.StartEdit();
                var str = await TextInputDialogBuilder.BuildForumPostTextInputDialog(Context, TextInputDialogBuilder.ForumPostTextInputContext.Edit, ViewModel.BBcodeContent);
                if (!string.IsNullOrEmpty(str))
                {
                    ViewModel.BBcodeContent = str;
                    ViewModel.SubmitEditCommand.Execute(null);
                }
            }));

            ForumTopicPageItemQuoteButton.SetOnClickListener(new OnClickListener(async view =>
            {
                var semaphore = new SemaphoreSlim(0);
                var vm        = ViewModelLocator.ForumsTopic;
                var deleg     = new PropertyChangedEventHandler((sender, args) =>
                {
                    if (args.PropertyName == nameof(vm.ReplyMessage))
                    {
                        semaphore.Release();
                    }
                });
                vm.ReplyMessage     = string.Empty;
                vm.PropertyChanged += deleg;
                ViewModel.QuoteCommand.Execute(null);
                await semaphore.WaitAsync();
                vm.PropertyChanged -= deleg;
                var str             = await TextInputDialogBuilder.BuildForumPostTextInputDialog(Context, TextInputDialogBuilder.ForumPostTextInputContext.Reply, vm.ReplyMessage);
                if (!string.IsNullOrEmpty(str))
                {
                    vm.ReplyMessage = str;
                    vm.CreateReplyCommand.Execute(null);
                }
            }));

            ForumTopicPageItemDeleteButton.SetOnClickListener(new OnClickListener(view =>
            {
                ViewModel.DeleteCommand.Execute(null);
            }));

            ForumTopicPageItemSendMessageButton.SetOnClickListener(new OnClickListener(view =>
            {
                ViewModelLocator.ForumsTopic.NavigateMessagingCommand.Execute(ViewModel.Data.Poster.MalUser);
            }));

            ForumTopicPageItemSeeOtherPostsButton.SetOnClickListener(new OnClickListener(view =>
            {
                ViewModel.GoToPostersOtherPosts.Execute(null);
            }));

            var listener = new OnClickListener(view => ViewModelLocator.ForumsTopic.NavigateProfileCommand.Execute(ViewModel.Data.Poster.MalUser));

            ForumTopicPageItemPostAuthor.SetOnClickListener(listener);
            ForumTopicPageItemAuthorImage.SetOnClickListener(listener);
        }