[Tween-svn] [1321] PostBrowser.Post, PostView. Postプロパティを実装。まだ動かん。

アーカイブの一覧に戻る

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



Tween-svn メーリングリストの案内
アーカイブの一覧に戻る