private async void LstAttachments_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            try
            {
                if (e.SelectedItem == null)
                {
                    return;
                }

                Attachment att = (Attachment)e.SelectedItem;
                lstAttachments.SelectedItem = null;

                string attDir = GetAttachmentDir(this.inboxMessage);
                string file   = fileSystem.JoinPaths(attDir, FileHelper.SanitizeFileName(att.NomeArquivo));

                att.Loading = true;

                bool fileExists = fileSystem.FileExists(file);
                using (var stream = fileSystem.GetFileStream(file))
                {
                    if (!fileExists || stream.Length < att.Tamanho)
                    {
                        await HttpRequest.DownloadFileToStream(EndPointHelper.GetAbsoluteUrl(att.Url), stream);

                        stream.Flush();
                    }
                }

                att.Loading = false;

                ShareViewModel share = new ShareViewModel();
                share.FileName = file;
                share.MimeType = att.MimeType;
                share.Share();
            } catch (Exception ex)
            {
                await DisplayAlert(AppResources.APP_TITLE, ex.Message, AppResources.OK);
            }
        }
Esempio n. 2
0
        private void ShowPDF()
        {
            string pdfFolder = GetPDFDir(this.SignatureRequest);
            string fileName  = fileSystem.JoinPaths(pdfFolder, "document.pdf");

            fileSystem.CreateFolder(pdfFolder);

            using (var stream = fileSystem.GetFileStream(fileName))
            {
                stream.Write(Document.PdfContent, 0, Document.PdfContent.Length);
                stream.Flush();
            }

            HtmlWebViewSource html = new HtmlWebViewSource();

            if (Device.OS != TargetPlatform.iOS)
            {
                //Existe um bug no WebView do iOS: https://developer.xamarin.com/guides/xamarin-forms/working-with/webview/
                html.BaseUrl = DependencyService.Get <IBaseUrl>().Get();
            }

            string pageSource = String.Format(
                @"<html>
	                        <head>
		                        <script type = 'text/javascript'>
			                        var url = 'file://{0}';
		                        </script>
		                        <script type='text/javascript' src='compatibility.js'></script>
	                        </head>
	                        <body>
		                        <div id='pages'>
	                            </div>

	                            <script type='text/javascript' src='../build/pdf.js'></script>
	                            <script type='text/javascript' src='customview.js'></script>
	                        </body>
	                        </html>"    , fileName);

            try
            {
                if (Device.OS != TargetPlatform.iOS)
                {
                    html.Html         = pageSource;
                    pdfWebView.Source = html;
                }
                else
                {
                    //iOS requires this action on the main UI thread
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        html.Html         = pageSource;
                        pdfWebView.Source = html;
                    });
                }

                //url.Url = DependencyService.Get<IBaseUrl>().Get() + "index.html"; //?file=" + WebUtility.UrlEncode(fileName.Result);
                PdfShareViewModel.FileName = fileName;
                PdfShareViewModel.MimeType = "application/pdf";
                pdfLoaded = true;
            }
            catch (Exception e)
            {
                UserDialogs.Instance.Alert(e.Message, AppResources.APP_TITLE, AppResources.OK);
            }
        }