コード例 #1
0
 public void OpenUnmanaged(string url, IWebViewManager manager, bool blockDomains = true, List <string> allowedDomains = null)
 {
     if (_core.TryGetUiManager(out IUiManager ui))
     {
         var tab = manager.CreateTab(url);
         var vm  = new UnmanagedTabViewModel(tab, _core, blockDomains, allowedDomains);
         ui.Navigate(vm, false);
     }
 }
コード例 #2
0
 async Task <bool> GetWebViewManager()
 {
     if (_webViewManager == null)
     {
         var plugin = _core.PluginLoader.GetPlugins <IWebViewPlugin>().FirstOrDefault();
         if (plugin == null)
         {
             return(false);
         }
         _webViewManager = await plugin.GetWebViewManagerAsync();
     }
     return(true);
 }
コード例 #3
0
 public Task <IWebViewManager> GetWebViewManagerAsync()
 {
     if (_manager == null)
     {
         var args = new Dictionary <string, string>();
         if (_settings.ChromiumFlags != null)
         {
             foreach (var line in _settings.ChromiumFlags
                      .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))
             {
                 var parts = line.Split('@');
                 args[parts[0]] = parts.Length > 1 ? parts[1] : null;
             }
         }
         _manager = new ChromiumManager(args, _core.Logger);
     }
     return(Task.FromResult(_manager));
 }
        public WebBrowserPageViewModel(IWebViewManager webViewManager, LinkItemProvider provider, WebBrowserPlugin plugin, PanaceaServices core)
        {
            _webViewManager = webViewManager;
            ItemProvider    = provider;
            _core           = core;
            CloseTabCommand = new RelayCommand(args =>
            {
                var view = args as IWebView;
                if (Tabs.Contains(view))
                {
                    Tabs.Remove(view);
                    if (Tabs.Count == 0)
                    {
                        CreateTab();
                    }
                    else if (CurrentWebView == view)
                    {
                        CurrentWebView = Tabs.First();
                    }
                    //SwitchToTab(CurrentWebView);
                }
            });
            ItemClickCommand = new RelayCommand(args =>
            {
                var link = args as Link;
                NavigateCommand?.Execute(link.DataUrl);
            });
            IsFavoriteCommand = new RelayCommand((arg) =>
            {
            },
                                                 (arg) =>
            {
                var link = arg as Link;
                if (plugin.Favorites == null)
                {
                    return(false);
                }
                return(plugin.Favorites.Any(l => l.Id == link.Id));
            });
            FavoriteCommand = new AsyncCommand(async(args) =>
            {
                var game = args as Link;
                if (game == null)
                {
                    return;
                }
                if (core.TryGetFavoritesPlugin(out IFavoritesManager _favoritesManager))
                {
                    try
                    {
                        if (await _favoritesManager.AddOrRemoveFavoriteAsync("WebBrowser", game))
                        {
                            OnPropertyChanged(nameof(IsFavoriteCommand));
                        }
                    }
                    catch (Exception e)
                    {
                        core.Logger.Error(this, e.Message);
                    }
                }
            });
            NavigateCommand = new RelayCommand(async(args) =>
            {
                if (_core.TryGetKeyboard(out IKeyboardPlugin keyboard))
                {
                    keyboard.HideKeyboard();
                }
                var url = args.ToString();
                if (CurrentWebView == null)
                {
                    CreateTab(url);
                }

                if (url.ToLower() == "about:blank")
                {
                    CurrentWebView?.Navigate(url);
                    return;
                }
                if (core.TryGetBilling(out IBillingManager bill))
                {
                    if (!bill.IsPluginFree("WebBrowser"))
                    {
                        var service = await bill.GetOrRequestServiceAsync(new Translator("WebBrowser").Translate("Web browser requires service."), "WebBrowser");
                        if (service == null)
                        {
                            return;
                        }
                        if (_core.TryGetUiManager(out IUiManager ui))
                        {
                            if (ui.CurrentPage != this)
                            {
                                ui.Navigate(this);
                            }
                        }
                    }
                }
                if (CurrentWebView == null)
                {
                    CreateTab();
                }
                if (Uri.IsWellFormedUriString(url, UriKind.Absolute))
                {
                    var uri = new Uri(url);

                    if (uri.Scheme != "https" && uri.Scheme != "http" && uri.Scheme != "javascript" && !uri.ToString().StartsWith("about:blank"))
                    {
                        //_window.ThemeManager.Toast(new Translator("WebBrowser").Translate("Access denied"));
                        return;
                    }
                    WebViewContainerVisibility = Visibility.Visible;
                    CurrentWebView?.Navigate(url);
                }
                else if (url.Contains(".") &&
                         Uri.IsWellFormedUriString("http://" + url, UriKind.Absolute))
                {
                    WebViewContainerVisibility = Visibility.Visible;
                    CurrentWebView?.Navigate(url);
                }
                else
                {
                    WebViewContainerVisibility = Visibility.Visible;
                    CurrentWebView?.Navigate("https://www.google.com/search?q=" + url);
                }

                Keyboard.ClearFocus();
            });

            BackCommand = new RelayCommand(args =>
            {
                CurrentWebView?.GoBack();
            },
                                           args =>
            {
                return(CurrentWebView?.CanGoBack == true);
            });
            ForwardCommand = new RelayCommand(args =>
            {
                CurrentWebView?.GoForward();
            },
                                              args =>
            {
                return(CurrentWebView?.CanGoForward == true);
            });
            SwitchTabSelectorCommand = new RelayCommand((args) =>
            {
                ShowTabSelector();
            });
            SelectTabCommand = new RelayCommand((args) =>
            {
                SwitchToTab(args as IWebView);
            });
            AddTabCommand = new RelayCommand((args) =>
            {
                CreateTab();
            });
        }