Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
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);
        }