Ejemplo n.º 1
0
        private static SmartImage BuildImgControl(HtmlElement item)
        {
            //TODO: crash @ http://imgsrc.baidu.com/forum/w%3D580%3Bcp%3Dtieba%2C10%2C666%3Bap%3Dsnh48%B0%C9%2C90%2C674/sign=d10ca71e0b24ab18e016e13f05c185bd/42a0283fb80e7becd78d41d92d2eb9389a506bd0.jpg
            var url = Uri.UnescapeDataString(item.Attributes["src"]);

            if (url == null)
            {
                return(null);
            }

            S1Resource.GetAbsoluteUrl(ref url);
            bool isEmotion = S1Resource.IsEmotion(url);

            var image = new SmartImage();

            ImageResourceManager.SetUriSource(image, url);
            if (isEmotion)
            {
                image.Margin = new Thickness(0, 0, 0, -6);
            }
            else
            {
                image.Margin = new Thickness(6);
            }
            return(image);
        }
Ejemplo n.º 2
0
        public void TestGetViewParamFromUrl()
        {
            S1Resource.ParserFactory = new DZParserFactory(null);
            S1Resource.HostList      = new List <string> {
                "http://220.196.42.167/2b/", "http://bbs.saraba1st.com/2b/"
            };
            string s0      = "http://220.196.42.167/2b/read-htm-tid-785763-page-54.html";
            string s1      = "http://bbs.saraba1st.com/2b/read-htm-tid-785763-page-54.html";
            string s2      = "http://bbs.saraba1st.com/2b/read.php?tid=785763&page=54#20636585";
            string s3      = "http://bbs.saraba1st.com/2b/simple/?t785763_54.html";
            string s4      = "http://bbs.saraba1st.com/2b/read-htm-tid-785763.html";
            string s5      = "http://bbs.saraba1st.com/2b/read.php?tid=785763";
            string s6      = "http://bbs.saraba1st.com/2b/simple/?t785763.html";
            string s7      = "http://bbs.saraba1st.com/2b/thread-785763-54-1.html";
            string expect  = "?ID=785763&Page=54";
            string expect2 = "?ID=785763";

            Assert.AreEqual(expect, S1Resource.GetThreadParamFromUrl(s0));
            Assert.AreEqual(expect, S1Resource.GetThreadParamFromUrl(s1));
            Assert.AreEqual(expect2, S1Resource.GetThreadParamFromUrl(s4));
            Assert.AreEqual(expect, S1Resource.GetThreadParamFromUrl(s2));
            Assert.AreEqual(expect2, S1Resource.GetThreadParamFromUrl(s5));
            Assert.AreEqual(expect, S1Resource.GetThreadParamFromUrl(s3));
            Assert.AreEqual(expect2, S1Resource.GetThreadParamFromUrl(s6));
            Assert.AreEqual(expect, S1Resource.GetThreadParamFromUrl(s7));
        }
Ejemplo n.º 3
0
        public void OpenInBrowser()
        {
            var task = new Microsoft.Phone.Tasks.WebBrowserTask
            {
                Uri = new Uri(S1Resource.GetThreadOriginalUrl(_tid), UriKind.Absolute)
            };

            task.Show();
        }
Ejemplo n.º 4
0
        private static Inline BuildLink(HtmlElement item)
        {
            Hyperlink link  = new Hyperlink();
            var       url   = item.Attributes["href"];
            var       aText = item.PlainText();

            if (url == null || aText.Length == 0)
            {
                return(link);
            }

            if (url.ToLower().StartsWith("mailto:"))
            {
                link.Click += (o, e) =>
                {
                    EmailComposeTask emailComposeTask = new EmailComposeTask();

                    emailComposeTask.To = url.Substring(url.IndexOf(':') + 1);

                    emailComposeTask.Show();
                };
            }

            S1Resource.GetAbsoluteUrl(ref url);
            var viewParam = S1Resource.GetThreadParamFromUrl(url);

            if (viewParam != null)
            {
                Run header = new Run();
                header.Text      = "<s1: ";
                header.FontStyle = FontStyles.Italic;
                link.Inlines.Add(header);
                link.Inlines.Add(aText);
                link.Inlines.Add("> ");
                link.NavigateUri = new Uri("/Views/PostView.xaml" + viewParam, UriKind.Relative);
            }
            else
            {
                try
                {
                    link.NavigateUri = new Uri(url);
                    link.TargetName  = "_blank";
                }
                catch (Exception) { };
                link.Inlines.Add(aText);
            }
            link.FontSize   = SettingView.ContentFontSize * .85;
            link.Foreground = (Brush)Application.Current.Resources["PhoneAccentBrush"];

            return(link);
        }
Ejemplo n.º 5
0
        private async void PrepareImage()
        {
            string path = null;

            if (null != (path = S1Resource.GetEmotionPath(SourceUrl)))
            {
                IsEmotion = true;

                var res = Application.GetResourceStream(new Uri("Resources/" + path, UriKind.Relative));

                try
                {
                    if (res != null)
                    {
                        SourceStream = res.Stream;
                    }
                    else
                    {
                        SourceStream = await NetResourceService.GetResourceStreamStatic(new Uri(SourceUrl), path, -1, false);
                    }
                }
                catch { }
                finally
                {
                    if (SourceStream == null)
                    {
                        OnImageOpenFailed();
                    }
                }

                UpdateImage();
            }
            else if (IsShowImage())
            {
                await GetRemoteStream();

                UpdateImage();
            }
        }