protected override void Init(Bundle savedInstanceState) { ViewModel = ViewModelLocator.MalArticles; ViewModel.Init(MalArticlesPageNavigationArgs.Articles); ViewModel.OpenWebView += ViewModelOnOpenWebView; _listenableWebClient = new ListenableWebClient(); _listenableWebClient.PageReady += PageReady; _listenableWebClient.NavigationInterceptOpportunity += NavigationInterceptOpportunity; }
protected override void Init(Bundle savedInstanceState) { ViewModel = ViewModelLocator.MalArticles; if (!_attachedHandler) { ViewModel.OpenWebView += ViewModelOnOpenWebView; _attachedHandler = true; } ViewModel.Init(_args); _listenableWebClient = new ListenableWebClient(); _listenableWebClient.PageReady += PageReady; _listenableWebClient.NavigationInterceptOpportunity += NavigationInterceptOpportunity; }
public void ShowDialog(Context context, View rootView, string html) { var dialogBuilder = DialogPlus.NewDialog(context); dialogBuilder.SetGravity((int)GravityFlags.Center); dialogBuilder.SetContentHolder(new ViewHolder(Resource.Layout.ProfileDescriptionDialog)); dialogBuilder.SetContentBackgroundResource(global::Android.Resource.Color.Transparent); dialogBuilder.SetOnDismissListener( new DialogDismissedListener(() => ViewModelLocator.NavMgr.ResetOneTimeOverride())); dialogBuilder.SetMargin(0, 0, 0, 0); _dialog = dialogBuilder.Create(); var dialogView = _dialog.HolderView; dialogView.LayoutParameters.Height = rootView.Height - DimensionsHelper.DpToPx(16 * 2); dialogView.SetMargins(0, 16, 0, 0); var webView = dialogView.FindViewById <WebView>(Resource.Id.WebView); var client = new ListenableWebClient { NavigationInterceptOpportunity = NavigationInterceptOpportunity }; webView.Settings.JavaScriptEnabled = true; webView.Settings.SetSupportZoom(true); webView.Settings.DisplayZoomControls = false; webView.SetWebViewClient(client); webView.Settings.BuiltInZoomControls = true; webView.Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.SingleColumn); webView.SetBackgroundColor(new Color(ResourceExtension.BrushAnimeItemInnerBackground)); webView.Post(() => { var scale = (100 - 735 * 100 / (dialogView.Width == 0 ? 300 : dialogView.Width)) + 100; webView.SetInitialScale(scale); //WebView.SetPadding(DimensionsHelper.DpToPx(15),0,0,0); }); webView.LoadDataWithBaseURL(null, ResourceLocator.CssManager.WrapWithCss(html, false, 800), "text/html; charset=utf-8", "UTF-8", null); ViewModelLocator.NavMgr.RegisterOneTimeMainOverride(new RelayCommand(() => _dialog.Dismiss())); _dialog.Show(); }
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); }