Пример #1
0
 public override bool ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions)
 {
     if (browserOptions == null)
     {
         browserOptions = new SecondaryBrowserOptions();
     }
     else
     {
         browserOptions.CheckNullsAndSetDefaults();
     }
     browserOptions.Url = String.Empty;
     return(OpenBrowserWithOptions(browserOptions));
 }
Пример #2
0
 public override bool OpenBrowserWithOptions(SecondaryBrowserOptions browserOptions)
 {
     using (var pool = new NSAutoreleasePool()) {
         var thread = new Thread(OpenBrowserWithOptionsOnThread);
         if (browserOptions == null)
         {
             browserOptions = new SecondaryBrowserOptions();
         }
         else
         {
             browserOptions.CheckNullsAndSetDefaults();
         }
         thread.Start(browserOptions);
     }
     return(true);
 }
Пример #3
0
        private void OpenBrowserWithOptionsOnThread(object browserOptionsObject)
        {
            SecondaryBrowserOptions browserOptions = (SecondaryBrowserOptions)browserOptionsObject;

            UIApplication.SharedApplication.InvokeOnMainThread(delegate {
                IPhoneUIViewController contentController = new IPhoneUIViewController(browserOptions.Title, browserOptions.CloseButtonText);
                UIWebView webView = IPhoneNet.generateWebView();

                //IF NO EXTENSIONS ARE USED THEN PARSE THE URL FILE EXTENSION
                if (browserOptions.BrowserFileExtensions != null && browserOptions.BrowserFileExtensions.Length > 0)
                {
                    webView.ShouldStartLoad = delegate(UIWebView view, NSUrlRequest req, UIWebViewNavigationType nav){
                        if (req != null && req.Url != null && req.Url.Path.LastIndexOf(".") != -1)
                        {
                            string sFileExtension = req.Url.Path.Substring(req.Url.Path.LastIndexOf("."));
                            if (browserOptions.BrowserFileExtensions.Contains(sFileExtension))
                            {
                                //HANDLE URL LIKE SYSTEM DOES
                                DownloadFile(req.Url.ToString());
                                //RETURN FALSE TO NOT LOAD THE URL ON OUR WEBVIEW
                                return(false);
                            }
                            else
                            {
                                //LOAD URL
                                return(true);
                            }
                        }
                        return(true);
                    };
                }
                contentController.AddInnerView(webView);
                IPhoneServiceLocator.CurrentDelegate.MainUIViewController().PresentModalViewController(contentController, true);
                IPhoneServiceLocator.CurrentDelegate.SetMainUIViewControllerAsTopController(false);
                if (!String.IsNullOrWhiteSpace(browserOptions.Url))
                {
                    NSUrl nsUrl = new NSUrl(browserOptions.Url);
                    NSUrlRequest nsUrlRequest = new NSUrlRequest(nsUrl, NSUrlRequestCachePolicy.ReloadRevalidatingCacheData, 120.0);
                    webView.LoadRequest(nsUrlRequest);
                }
                else if (!String.IsNullOrWhiteSpace(browserOptions.Html))
                {
                    webView.LoadHtmlString(browserOptions.Html, new NSUrl("/"));
                }
            });
        }
Пример #4
0
 public override async Task<bool> ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions)
 {
     try
     {
         await ShowHtml(String.Empty, String.Empty, browserOptions.Html);
         return true;
     }
     catch (Exception)
     {
     }
     return false;
 }
Пример #5
0
        public override async Task<bool> OpenBrowserWithOptions(SecondaryBrowserOptions browserOptions)
        {
            try
            {
                return await OpenBrowser(browserOptions.Title, String.Empty, browserOptions.Url);

            }
            catch (Exception)
            {
            }
            return false;
        }
Пример #6
0
 public override bool ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions)
 {
     throw new NotImplementedException();
 }
Пример #7
0
 public override bool OpenBrowserWithOptions(SecondaryBrowserOptions browserOptions)
 {
     using (var pool = new NSAutoreleasePool ()) {
         var thread = new Thread (OpenBrowserWithOptionsOnThread);
         if(browserOptions==null)
             browserOptions = new SecondaryBrowserOptions();
         else
             browserOptions.CheckNullsAndSetDefaults();
         thread.Start (browserOptions);
     }
     return true;
 }
Пример #8
0
 public override bool ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions)
 {
     if(browserOptions==null)
         browserOptions = new SecondaryBrowserOptions();
     else
         browserOptions.CheckNullsAndSetDefaults();
     browserOptions.Url = String.Empty;
     return OpenBrowserWithOptions (browserOptions);
 }
Пример #9
0
        private void OpenBrowserWithOptionsOnThread(object browserOptionsObject)
        {
            SecondaryBrowserOptions browserOptions = (SecondaryBrowserOptions)browserOptionsObject;

            UIApplication.SharedApplication.InvokeOnMainThread(delegate {
                IPhoneUIViewController contentController = new IPhoneUIViewController(browserOptions.Title, browserOptions.CloseButtonText);
                UIWebView webView = IPhoneNet.generateWebView();

                //IF NO EXTENSIONS ARE USED THEN PARSE THE URL FILE EXTENSION
                if (browserOptions.BrowserFileExtensions != null && browserOptions.BrowserFileExtensions.Length > 0)
                {
                    webView.ShouldStartLoad = delegate(UIWebView view, NSUrlRequest req, UIWebViewNavigationType nav){
                        SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - WebView ShouldStartLoad: " + req);

                        if (req != null && req.Url != null && req.Url.Path != null && req.Url.Path.LastIndexOf(".") != -1)
                        {
                            SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - request path: " + req.Url.Path);
                            string sFileExtensionPath = req.Url.Path.Substring(req.Url.Path.LastIndexOf("."));
                            if (browserOptions.BrowserFileExtensions.Contains(sFileExtensionPath))
                            {
                                SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - WebView ShouldStartLoad: Handled by system (file extension matching by Path)");
                                //HANDLE URL LIKE SYSTEM DOES
                                DownloadFile(Uri.UnescapeDataString(req.Url.ToString()));
                                //RETURN FALSE TO NOT LOAD THE URL ON OUR WEBVIEW
                                return(false);
                            }
                        }
                        // extensions could also be received as Query parameters
                        if (req != null && req.Url != null && req.Url.Query != null && req.Url.Query.LastIndexOf(".") != -1)
                        {
                            SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - request query: " + req.Url.Query);
                            string sFileExtensionQuery = req.Url.Query.Substring(req.Url.Query.LastIndexOf("."));
                            if (browserOptions.BrowserFileExtensions.Contains(sFileExtensionQuery))
                            {
                                //HANDLE URL LIKE SYSTEM DOES
                                SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - WebView ShouldStartLoad: Handled by system (file extension matching by Query)");
                                DownloadFile(Uri.UnescapeDataString(req.Url.ToString()));
                                //RETURN FALSE TO NOT LOAD THE URL ON OUR WEBVIEW
                                return(false);
                            }
                        }

                        SystemLogger.Log(SystemLogger.Module.PLATFORM, "OpenBrowserWithOptionsOnThread - WebView ShouldStartLoad: Loaded into WebView (not Path or Query match provided extensions)");

                        return(true);
                    };
                }
                contentController.AddInnerView(webView);
                IPhoneServiceLocator.CurrentDelegate.MainUIViewController().PresentModalViewController(contentController, true);
                IPhoneServiceLocator.CurrentDelegate.SetMainUIViewControllerAsTopController(false);
                if (!String.IsNullOrWhiteSpace(browserOptions.Url))
                {
                    NSUrl nsUrl = new NSUrl(browserOptions.Url);
                    NSUrlRequest nsUrlRequest = new NSUrlRequest(nsUrl, NSUrlRequestCachePolicy.ReloadRevalidatingCacheData, 120.0);
                    webView.LoadRequest(nsUrlRequest);
                }
                else if (!String.IsNullOrWhiteSpace(browserOptions.Html))
                {
                    webView.LoadHtmlString(browserOptions.Html, new NSUrl("/"));
                }
            });
        }
Пример #10
0
 public abstract Task<bool> ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions);
Пример #11
0
 public abstract Task<bool> OpenBrowserWithOptions(SecondaryBrowserOptions browserOptions);
Пример #12
0
 public abstract bool ShowHtmlWithOptions(SecondaryBrowserOptions browserOptions);
Пример #13
0
 public abstract bool OpenBrowserWithOptions(SecondaryBrowserOptions browserOptions);