예제 #1
0
        private bool CreateShortcutFromUri(string mediaFolder, string uri)
        {
            var url = new Uri(uri);

            var filename = GenerateLocalFileName(url);
            var destFile = Path.Combine(mediaFolder, filename);

            if (File.Exists(destFile))
            {
                return(false);
            }

            var sourceFile = Path.Combine(GetWebDownloadTempFolder(), filename);

            if (string.IsNullOrEmpty(sourceFile))
            {
                return(false);
            }

            WebShortcutHelper.Generate(sourceFile, url);

            if (!File.Exists(sourceFile))
            {
                return(false);
            }

            if (!CopyFileInternal(sourceFile, destFile))
            {
                return(false);
            }

            FileUtils.SafeDeleteFile(sourceFile);

            return(true);
        }
예제 #2
0
        public void ShowWeb(
            string mediaItemFilePath,
            Guid mediaItemId,
            int pdfStartingPage,
            PdfViewStyle pdfViewStyle,
            bool showMirror,
            ScreenPosition screenPosition)
        {
            _useMirror = showMirror;

            if (string.IsNullOrEmpty(mediaItemFilePath))
            {
                return;
            }

            _showing     = false;
            _mediaItemId = mediaItemId;

            ScreenPositionHelper.SetScreenPosition(_browserGrid, screenPosition);

            OnMediaChangeEvent(CreateMediaEventArgs(mediaItemId, MediaChange.Starting));

            string?webAddress;

            if (Path.GetExtension(mediaItemFilePath).Equals(".pdf", StringComparison.OrdinalIgnoreCase))
            {
                // https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf

                var viewString        = GetPdfViewString(pdfViewStyle);
                var cacheBusterString = DateTime.Now.Ticks.ToString();

                webAddress = $"pdf://{mediaItemFilePath}?t={cacheBusterString}#view={viewString}&page={pdfStartingPage}";
            }
            else
            {
                var urlHelper = new WebShortcutHelper(mediaItemFilePath);
                webAddress = urlHelper.Uri;
            }

            _currentMediaItemUrl = webAddress;

            RemoveAnimation();

            _browserGrid.Visibility = Visibility.Visible;

            _browser.Load(webAddress);
        }
예제 #3
0
        public void ShowWeb(
            string mediaItemFilePath,
            Guid mediaItemId,
            bool showMirror,
            ScreenPosition screenPosition)
        {
            _useMirror = showMirror;

            if (string.IsNullOrEmpty(mediaItemFilePath))
            {
                return;
            }

            _showing     = false;
            _mediaItemId = mediaItemId;

            ScreenPositionHelper.SetScreenPosition(_browserGrid, screenPosition);

            OnMediaChangeEvent(CreateMediaEventArgs(mediaItemId, MediaChange.Starting));

            string webAddress;

            if (Path.GetExtension(mediaItemFilePath).Equals(".pdf", StringComparison.OrdinalIgnoreCase))
            {
                webAddress = $"pdf://{mediaItemFilePath}";
            }
            else
            {
                var urlHelper = new WebShortcutHelper(mediaItemFilePath);
                webAddress = urlHelper.Uri;
            }

            _currentMediaItemUrl = webAddress;

            RemoveAnimation();

            _browserGrid.Visibility = Visibility.Visible;

            _browser.Load(webAddress);
        }
예제 #4
0
        private byte[] GetWebThumbnail(string originalPath)
        {
            if (string.IsNullOrEmpty(originalPath))
            {
                return(null);
            }

            if (Path.GetExtension(originalPath).Equals(".pdf", StringComparison.OrdinalIgnoreCase))
            {
                return(GetPdfThumbnail(originalPath));
            }

            var helper = new WebShortcutHelper(originalPath);

            var bytes = FaviconHelper.GetIconImage(helper.Uri);

            if (bytes != null)
            {
                bytes = CreateFramedSmallIcon(bytes);
                return(bytes);
            }

            return(_standardWebThumbnail.Value);
        }