svnno****@sourc*****
svnno****@sourc*****
2011年 1月 6日 (木) 02:35:54 JST
Revision: 1321 http://sourceforge.jp/projects/tween/svn/view?view=rev&revision=1321 Author: anis774 Date: 2011-01-06 02:35:54 +0900 (Thu, 06 Jan 2011) Log Message: ----------- PostBrowser.Post, PostView.Postプロパティを実装。まだ動かん。 Modified Paths: -------------- branches/OperationClean/Tween/ImageDictionary.vb branches/OperationClean/Tween/PostBrowser.vb branches/OperationClean/Tween/PostView.vb -------------- next part -------------- Modified: branches/OperationClean/Tween/ImageDictionary.vb =================================================================== --- branches/OperationClean/Tween/ImageDictionary.vb 2011-01-05 12:41:32 UTC (rev 1320) +++ branches/OperationClean/Tween/ImageDictionary.vb 2011-01-05 17:35:54 UTC (rev 1321) @@ -14,7 +14,7 @@ Private cachePolicy As New CacheItemPolicy() Private removedCount As Long = 0 - Public Sub New(ByVal memoryCacheCount As Integer) + Private Sub New(ByVal memoryCacheCount As Integer) SyncLock Me.lockObject '10Mb,80% Me.innerDictionary = New MemoryCache("imageCache", @@ -29,6 +29,17 @@ End SyncLock End Sub + Private Shared _instance As ImageDictionary = Nothing + Public Shared ReadOnly Property Instance As ImageDictionary + Get + If _instance Is Nothing Then + _instance = New ImageDictionary(5000) + End If + + Return _instance + End Get + End Property + Public ReadOnly Property CacheCount As Long Get Return innerDictionary.GetCount Modified: branches/OperationClean/Tween/PostBrowser.vb =================================================================== --- branches/OperationClean/Tween/PostBrowser.vb 2011-01-05 12:41:32 UTC (rev 1320) +++ branches/OperationClean/Tween/PostBrowser.vb 2011-01-05 17:35:54 UTC (rev 1321) @@ -1,4 +1,7 @@ -Public Class PostBrowser +Imports System.Text.RegularExpressions +Imports System.Text + +Public Class PostBrowser Private Const detailHtmlFormatMono1 As String = "<html><head><style type=""text/css""><!-- pre {font-family: """ Private Const detailHtmlFormat2 As String = """, sans-serif; font-size: " Private Const detailHtmlFormat3 As String = "pt; word-wrap: break-word; color:rgb(" @@ -19,6 +22,70 @@ End Get Set(ByVal value As PostClass) Me._post = value + + + If value Is Nothing Then Exit Property + + Dim dTxt As String = createDetailHtml(If(value.IsDeleted, "(DELETED)", value.OriginalData)) + + If DumpPostClassToolStripMenuItem.Checked Then + Dim sb As New StringBuilder(512) + + sb.Append("-----Start PostClass Dump<br>") + sb.AppendFormat("Data : {0}<br>", value.Data) + sb.AppendFormat("(PlainText) : <xmp>{0}</xmp><br>", value.Data) + sb.AppendFormat("Id : {0}<br>", value.Id.ToString) + 'sb.AppendFormat("ImageIndex : {0}<br>", _curPost.ImageIndex.ToString) + sb.AppendFormat("ImageUrl : {0}<br>", value.ImageUrl) + sb.AppendFormat("InReplyToId : {0}<br>", value.InReplyToId.ToString) + sb.AppendFormat("InReplyToUser : {0}<br>", value.InReplyToUser) + sb.AppendFormat("IsDM : {0}<br>", value.IsDm.ToString) + sb.AppendFormat("IsFav : {0}<br>", value.IsFav.ToString) + sb.AppendFormat("IsMark : {0}<br>", value.IsMark.ToString) + sb.AppendFormat("IsMe : {0}<br>", value.IsMe.ToString) + sb.AppendFormat("IsOwl : {0}<br>", value.IsOwl.ToString) + sb.AppendFormat("IsProtect : {0}<br>", value.IsProtect.ToString) + sb.AppendFormat("IsRead : {0}<br>", value.IsRead.ToString) + sb.AppendFormat("IsReply : {0}<br>", value.IsReply.ToString) + + For Each nm As String In value.ReplyToList + sb.AppendFormat("ReplyToList : {0}<br>", nm) + Next + + sb.AppendFormat("Name : {0}<br>", value.Name) + sb.AppendFormat("NickName : {0}<br>", value.Nickname) + sb.AppendFormat("OriginalData : {0}<br>", value.OriginalData) + sb.AppendFormat("(PlainText) : <xmp>{0}</xmp><br>", value.OriginalData) + sb.AppendFormat("PDate : {0}<br>", value.PDate.ToString) + sb.AppendFormat("Source : {0}<br>", value.Source) + sb.AppendFormat("Uid : {0}<br>", value.Uid) + sb.AppendFormat("FilterHit : {0}<br>", value.FilterHit) + sb.AppendFormat("RetweetedBy : {0}<br>", value.RetweetedBy) + sb.AppendFormat("RetweetedId : {0}<br>", value.RetweetedId) + sb.AppendFormat("SearchTabName : {0}<br>", value.RelTabName) + sb.Append("-----End PostClass Dump<br>") + + Me.WebBrowser1.Visible = False + Me.WebBrowser1.DocumentText = detailHtmlFormatHeader + sb.ToString + detailHtmlFormatFooter + Me.WebBrowser1.Visible = True + Else + Try + If Me.WebBrowser1.DocumentText <> dTxt Then + Me.WebBrowser1.Visible = False + Me.WebBrowser1.DocumentText = dTxt + Dim lnks As New List(Of String) + For Each lnk As Match In Regex.Matches(dTxt, "<a target=""_self"" href=""(?<url>http[^""]+)""", RegexOptions.IgnoreCase) + lnks.Add(lnk.Result("${url}")) + Next + Thumbnail.thumbnail(value.Id, lnks) + End If + Catch ex As System.Runtime.InteropServices.COMException + '原因不明 + Finally + Me.WebBrowser1.Visible = True + End Try + End If + End Set End Property @@ -88,4 +155,8 @@ _linkColor = value End Set End Property + + Public Function createDetailHtml(ByVal orgdata As String) As String + Return Me.detailHtmlFormatHeader + orgdata + Me.detailHtmlFormatFooter + End Function End Class Modified: branches/OperationClean/Tween/PostView.vb =================================================================== --- branches/OperationClean/Tween/PostView.vb 2011-01-05 12:41:32 UTC (rev 1320) +++ branches/OperationClean/Tween/PostView.vb 2011-01-05 17:35:54 UTC (rev 1321) @@ -1,12 +1,74 @@ -Public Class PostView +Imports System.Text.RegularExpressions + +Public Class PostView + Private Thumbnail As Thumbnail = New Thumbnail(Me) + Private _post As PostClass Public Property Post As PostClass Set(ByVal value As PostClass) Me._post = value Me.PostBrowser.Post = value + + 'SourceLinkLabel + If value.IsDm Then + Me.SourceLinkLabel.Tag = Nothing + Me.SourceLinkLabel.Text = "" + Else + Dim mc As Match = Regex.Match(value.SourceHtml, "<a href=""(?<sourceurl>.+?)""") + If mc.Success Then + Dim src As String = mc.Groups("sourceurl").Value + Me.SourceLinkLabel.Tag = mc.Groups("sourceurl").Value + mc = Regex.Match(src, "^https?://") + If Not mc.Success Then + src = src.Insert(0, "http://twitter.com") + End If + Me.SourceLinkLabel.Tag = src + Else + Me.SourceLinkLabel.Tag = Nothing + End If + If String.IsNullOrEmpty(value.Source) Then + Me.SourceLinkLabel.Text = "" + Else + Me.SourceLinkLabel.Text = value.Source + End If + End If + Me.SourceLinkLabel.TabStop = False + + 'NameLabel + If value.IsDm AndAlso Not value.IsOwl Then + Me.NameLabel.Text = "DM TO -> " + ElseIf value.IsDm Then + Me.NameLabel.Text = "DM FROM <- " + Else + Me.NameLabel.Text = "" + End If + Me.NameLabel.Text += value.Name + "/" + value.Nickname + Me.NameLabel.Tag = value.Name + If Not String.IsNullOrEmpty(value.RetweetedBy) Then + Me.NameLabel.Text += " (RT:" + value.RetweetedBy + ")" + End If + Me.NameLabel.ForeColor = System.Drawing.SystemColors.ControlText + + 'DateTimeLabel + Me.DateTimeLabel.Text = value.PDate.ToString() + If value.IsOwl AndAlso (AppendSettingDialog.Instance.OneWayLove OrElse value.IsDm) Then NameLabel.ForeColor = Me.OneWayLoveColor + If value.RetweetedId > 0 Then NameLabel.ForeColor = Me.RetweetColor + If value.IsFav Then NameLabel.ForeColor = Me.FavoriteColor + + 'UserPicture + If UserPicture.Image IsNot Nothing Then UserPicture.Image.Dispose() + If Not String.IsNullOrEmpty(value.ImageUrl) AndAlso ImageDictionary.Instance.ContainsKey(value.ImageUrl) Then + UserPicture.Image = ImageDictionary.Instance(value.ImageUrl) + Else + UserPicture.Image = Nothing + End If End Set Get Return Me._post End Get End Property + + Public Property OneWayLoveColor As Color + Public Property RetweetColor As Color + Public Property FavoriteColor As Color End Class