OSDN Git Service

ソースをISO8859-1 -> UTF-8(BOM)だけw
[opentween/open-tween.git] / Tween / ListElement.vb
1 Public Class ListElement
2     Public Id As Long = 0
3     Public Name As String = ""
4     Public Description As String = ""
5     Public Slug As String = ""
6     Public IsPublic As Boolean = True
7     Public SubscriberCount As Integer = 0   '購読者数
8     Public MemberCount As Integer = 0   'リストメンバ数
9     Public UserId As Long = 0
10     Public Username As String = ""
11     Public Nickname As String = ""
12
13     Protected _tw As Twitter
14
15     Private _members As List(Of UserInfo) = Nothing
16     Private _cursor As Long = -1
17
18     Public Sub New()
19
20     End Sub
21
22     Public Sub New(ByVal xmlNode As Xml.XmlNode, ByVal tw As Twitter)
23         Me.Description = xmlNode.Item("description").InnerText
24         Me.Id = Long.Parse(xmlNode.Item("id").InnerText)
25         Me.IsPublic = (xmlNode.Item("mode").InnerText = "public")
26         Me.MemberCount = Integer.Parse(xmlNode.Item("member_count").InnerText)
27         Me.Name = xmlNode.Item("name").InnerText
28         Me.SubscriberCount = Integer.Parse(xmlNode.Item("subscriber_count").InnerText)
29         Me.Slug = xmlNode.Item("slug").InnerText
30         Dim xUserEntry As Xml.XmlElement = CType(xmlNode.SelectSingleNode("./user"), Xml.XmlElement)
31         Me.Nickname = xUserEntry.Item("name").InnerText
32         Me.Username = xUserEntry.Item("screen_name").InnerText
33         Me.UserId = Long.Parse(xUserEntry.Item("id").InnerText)
34
35         Me._tw = tw
36     End Sub
37
38     Public Overridable Function Refresh() As String
39         Return _tw.EditList(Me.Id.ToString(), Name, Not Me.IsPublic, Me.Description, Me)
40     End Function
41
42     <Xml.Serialization.XmlIgnore()>
43     Public ReadOnly Property Members As List(Of UserInfo)
44         Get
45             If Me._members Is Nothing Then Me._members = New List(Of UserInfo)
46             Return Me._members
47         End Get
48     End Property
49
50     <Xml.Serialization.XmlIgnore()>
51     Public ReadOnly Property Cursor As Long
52         Get
53             Return _cursor
54         End Get
55     End Property
56
57     Public Function RefreshMembers() As String
58         Dim users As New List(Of UserInfo)()
59         _cursor = -1
60         Dim result As String = Me._tw.GetListMembers(Me.Id.ToString(), users, _cursor)
61         Me._members = users
62         Return If(String.IsNullOrEmpty(result), Me.ToString, result)
63     End Function
64
65     Public Function GetMoreMembers() As String
66         Dim result As String = Me._tw.GetListMembers(Me.Id.ToString(), Me._members, _cursor)
67         Return If(String.IsNullOrEmpty(result), Me.ToString, result)
68     End Function
69
70     Public Overrides Function ToString() As String
71         Return "@" + Username + "/" + Name + " [" + If(Me.IsPublic, "Public", "Protected") + "]"
72     End Function
73 End Class