OSDN Git Service

FavoriteQueueをIList(Of Long)インターフェース実装に変更
authorkiri_feather <kiri_feather@users.sourceforge.jp>
Sat, 10 Sep 2011 07:44:20 +0000 (16:44 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Feb 2012 14:19:51 +0000 (23:19 +0900)
GA常に有効に
ChangeLog修正
TweenMainがシングルトンになっていたのをやめた。
FavQueueを一旦外した。TweenMain側から操作し、結果返すよう実装する必要あり。

Tween/FavoriteQueue.vb
Tween/Google.vb
Tween/Resources/ChangeLog.txt
Tween/Tween.vb
Tween/Tween.vbproj
Tween/Twitter.vb

index 27d50f9..c5f24b9 100644 (file)
 Imports System.Net
 
 Public Class FavoriteQueue
-    Private Shared _instance As New FavoriteQueue
-    Public Shared ReadOnly Property GetInstance As FavoriteQueue
-        Get
-            Return _instance
-        End Get
-    End Property
+    Implements IList(Of Long)
 
-    Public FavoriteCache As New List(Of Long)
+    'Private Shared _instance As New FavoriteQueue
+    'Public Shared ReadOnly Property GetInstance As FavoriteQueue
+    '    Get
+    '        Return _instance
+    '    End Get
+    'End Property
 
-    Public Sub Add(ByVal stsId As Long)
-        If Not FavoriteCache.Contains(stsId) Then
-            FavoriteCache.Add(stsId)
-        End If
-    End Sub
+    Private tw As Twitter
+    Private FavoriteCache As New List(Of Long)
 
     Public Sub AddRange(ByVal stsIds As IEnumerable(Of Long))
         FavoriteCache.AddRange(stsIds)
     End Sub
 
-    Public Sub Remove(ByVal stsId As Long)
-        FavoriteCache.Remove(stsId)
-    End Sub
-
-    Public Sub FavoriteCacheAdd(ByVal statusId As Long, ByVal res As HttpStatusCode, Optional ByRef isMsg As Boolean = True)
-        'If Not SettingInfo.Instance.IsUseFavoriteQueue Then Exit Sub
-        Select Case res
-            Case HttpStatusCode.BadGateway, HttpStatusCode.BadRequest, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
-                isMsg = False
-                FavoriteCache.Add(statusId)
-        End Select
-    End Sub
+    'Public Sub FavoriteCacheAdd(ByVal statusId As Long, ByVal res As HttpStatusCode, Optional ByRef isMsg As Boolean = True)
+    '    'If Not SettingInfo.Instance.IsUseFavoriteQueue Then Exit Sub
+    '    Select Case res
+    '        Case HttpStatusCode.BadGateway, HttpStatusCode.BadRequest, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
+    '            isMsg = False
+    '            FavoriteCache.Add(statusId)
+    '    End Select
+    'End Sub
 
     Public Sub FavoriteCacheStart()
         If Not FavoriteCache.Count = 0 Then
             Dim _cacheList As New List(Of Long)(FavoriteCache)
-            AllClear()
+            Me.Clear()
             Parallel.ForEach(Of Long)(_cacheList, New Action(Of Long)(Sub(stsId As Long)
-                                                                          TweenMain.GetInstance.TwitterInstance.PostFavAdd(stsId)
+                                                                          tw.PostFavAdd(stsId)
                                                                       End Sub))
         End If
     End Sub
 
-    Public ReadOnly Property Count As Integer
+    Public Sub Add(ByVal item As Long) Implements System.Collections.Generic.ICollection(Of Long).Add
+        If Not Me.Contains(item) Then
+            FavoriteCache.Add(item)
+        End If
+    End Sub
+
+    Public Sub Clear() Implements System.Collections.Generic.ICollection(Of Long).Clear
+        FavoriteCache.Clear()
+        FavoriteCache.TrimExcess()
+    End Sub
+
+    Public Function Contains(ByVal item As Long) As Boolean Implements System.Collections.Generic.ICollection(Of Long).Contains
+        FavoriteCache.Contains(item)
+    End Function
+
+    Public Sub CopyTo(ByVal array() As Long, ByVal arrayIndex As Integer) Implements System.Collections.Generic.ICollection(Of Long).CopyTo
+        FavoriteCache.CopyTo(array, arrayIndex)
+    End Sub
+
+    Public ReadOnly Property Count As Integer Implements System.Collections.Generic.ICollection(Of Long).Count
         Get
             Return FavoriteCache.Count
         End Get
     End Property
 
-    Public Sub AllClear()
-        FavoriteCache.Clear()
-        FavoriteCache.TrimExcess()
-    End Sub
+    Public ReadOnly Property IsReadOnly As Boolean Implements System.Collections.Generic.ICollection(Of Long).IsReadOnly
+        Get
+            Return False
+        End Get
+    End Property
+
+    Public Function Remove(ByVal item As Long) As Boolean Implements System.Collections.Generic.ICollection(Of Long).Remove
+        Return FavoriteCache.Remove(item)
+    End Function
+
+    Public Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of Long) Implements System.Collections.Generic.IEnumerable(Of Long).GetEnumerator
+        Return FavoriteCache.GetEnumerator()
+    End Function
+    Public Function GetEnumerator1() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
+        Return Me.GetEnumerator
+    End Function
 
-    Public Function Contains(stsId As Long) As Boolean
-        Return FavoriteCache.Contains(stsId)
+    Public Function IndexOf(ByVal item As Long) As Integer Implements System.Collections.Generic.IList(Of Long).IndexOf
+        Return FavoriteCache.IndexOf(item)
     End Function
 
+    Public Sub Insert(ByVal index As Integer, ByVal item As Long) Implements System.Collections.Generic.IList(Of Long).Insert
+        FavoriteCache.Insert(index, item)
+    End Sub
+
+    Default Public Property Item(ByVal index As Integer) As Long Implements System.Collections.Generic.IList(Of Long).Item
+        Get
+            Return FavoriteCache(index)
+        End Get
+        Set(ByVal value As Long)
+            FavoriteCache(index) = value
+        End Set
+    End Property
+
+    Public Sub RemoveAt(ByVal index As Integer) Implements System.Collections.Generic.IList(Of Long).RemoveAt
+        FavoriteCache.RemoveAt(index)
+    End Sub
+
+    Public Sub New(ByVal twitter As Twitter)
+        Me.tw = twitter
+    End Sub
 End Class
index 44aef71..1cd195b 100644 (file)
@@ -351,9 +351,6 @@ Public Class Google
         End Sub
 
         Private Sub SendRequest(ByVal info As Dictionary(Of String, String), ByVal userId As Long)
-#If UA <> "True" Then
-            Exit Sub
-#Else
             If userId = 0 Then Exit Sub
             If Me._SessionFirst = 0 Then Me.Init()
 
@@ -415,8 +412,6 @@ Public Class Google
             End If
 
             Me.GetAsync(params, New Uri(GA_GIF_URL))
-
-#End If
         End Sub
 
         Private Sub GetAsync(ByVal params As Dictionary(Of String, String), ByVal url As Uri)
index ddd7500..2d5bd79 100644 (file)
@@ -1,11 +1,11 @@
 更新履歴
 
-==== Ver 1.0.5.0(2011/**/**)
+==== Ver 1.0.5.0(2011/9/10)
  * NEW: TINAMIの画像プレビューに対応。小説もプレビュー対象になります。(thx @tinami_info,API実装担当者様)
  * NEW: Twitter純正画像投稿に対応
  * NEW: Listの発言にRTを含むかどうかの設定を追加。初期設定では従来通り含めません。
  * NEW: API情報ダイアログに画像投稿関係の制限値も表示するように
- * NEW: 広告枠追加。上部区切り線をマウスで動かせます
+ * NEW: アカウント切り替え追加。切り替え後、Listsは取得失敗になるので注意
  * CHG: 翻訳機能を復活(1.0.4.0より)。使用する場合は設定画面より翻訳言語の再設定をお願いします。
  * CHG: URLの自動短縮をいったん使用不可とした(t.co対応のため)。メニューやショートカットからの手動短縮は可能です。
  * CHG: PublicSearch,DM以外ではEntitiesよりURL情報を読み取るように
@@ -13,7 +13,7 @@
  * CHG: 返信先(in_reply_to_status_id)つき画像投稿が出来るように修正
  * CHG: 検索の取得件数を個別で指定していなければTL取得件数で動作するよう変更
  * CHG: Shift-Spaceでの選択履歴さかのぼりの履歴を1時間ごとに2000件上限で古いものを削除するよう変更
- * CHG: 投稿時にTwitterから不正な応答が変える問題に対処
+ * CHG: 投稿時にTwitterから不正な応答が返った場合の表示を変更
  * FIX: 翻訳のショートカットキーが無効になっていたバグを修正
  * FIX: 英大文字のハッシュタグが記録されなかったバグを修正
  * FIX: Ctrl-Eでurlを開く際、idnの場合に例外発生する問題に対処
@@ -24,6 +24,7 @@
  * FIX: OS復帰時にPublicSearch,UserTimeline,Listsの更新が行われていなかったのを修正
  * FIX: UserStreamの再接続に時間がかかる場合があったので修正
  * FIX: ハッシュタグ固定が日本語ハッシュタグに対して動作していなかったバグを修正
+ * FIX: Listsや検索タブの発言をRetweet後、すぐにタブを閉じると例外発生するバグ修正
 ==== Ver 1.0.4.0(2011/07/30)
  * CHG: 画面下部の余白を削除
  * CHG: アカウント認証を簡略化(認証開始→ログイン&アプリ許可→Finish)
index 206da67..58aeaa2 100644 (file)
@@ -9852,7 +9852,6 @@ RETRY:
 
     Private WithEvents _hookGlobalHotkey As HookGlobalHotkey
     Public Sub New()
-        _instance = Me
         _hookGlobalHotkey = New HookGlobalHotkey(Me)
         ' この呼び出しは、Windows フォーム デザイナで必要です。
         InitializeComponent()
@@ -10538,12 +10537,6 @@ RETRY:
         ShowUserTimeline()
     End Sub
 
-    Private Shared _instance As TweenMain
-
-    Public Shared Function GetInstance() As TweenMain
-        Return _instance
-    End Function
-
     Public ReadOnly Property FavEventChangeUnread As Boolean
         Get
             Return SettingDialog.FavEventUnread
index 45368f1..f0c674a 100644 (file)
@@ -78,7 +78,7 @@
     <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
     <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
     <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <DefineConstants>UA="True"</DefineConstants>
+    <DefineConstants>UA="False"</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
     <DebugSymbols>true</DebugSymbols>
@@ -91,7 +91,7 @@
     <PlatformTarget>x86</PlatformTarget>
     <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
     <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
-    <DefineConstants>UA="True"</DefineConstants>
+    <DefineConstants>UA="False"</DefineConstants>
   </PropertyGroup>
   <PropertyGroup>
     <OptionInfer>On</OptionInfer>
index e7186cc..440d2aa 100644 (file)
@@ -108,6 +108,8 @@ Public Class Twitter
     Private minDirectmessage As Long = Long.MaxValue
     Private minDirectmessageSent As Long = Long.MaxValue
 
+    'Private favQueue As FavoriteQueue
+
     Private twCon As New HttpTwitter
 
     Public Event UserIdChanged()
@@ -1094,7 +1096,9 @@ Public Class Twitter
 
         If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""
 
-        If FavoriteQueue.GetInstance.Contains(id) Then FavoriteQueue.GetInstance.Remove(id)
+        'If Me.favQueue Is Nothing Then Me.favQueue = New FavoriteQueue(Me)
+
+        'If Me.favQueue.Contains(id) Then Me.favQueue.Remove(id)
 
         Google.GASender.GetInstance().TrackEventWithCategory("post", "favorites", Me.UserId)
         Dim res As HttpStatusCode
@@ -1102,14 +1106,14 @@ Public Class Twitter
         Try
             res = twCon.CreateFavorites(id, content)
         Catch ex As Exception
-            FavoriteQueue.GetInstance.Add(id)
+            'Me.favQueue.Add(id)
             Return "Err:->FavoriteQueue:" + ex.Message + "(" + GetCurrentMethod.Name + ")"
         End Try
 
         Select Case res
             Case HttpStatusCode.OK
                 Twitter.AccountState = ACCOUNT_STATE.Valid
-                FavoriteQueue.GetInstance.FavoriteCacheStart()
+                'Me.favQueue.FavoriteCacheStart()
                 If Not _restrictFavCheck Then Return ""
             Case HttpStatusCode.Unauthorized
                 Twitter.AccountState = ACCOUNT_STATE.Invalid
@@ -1120,13 +1124,13 @@ Public Class Twitter
                     Return "Err:Forbidden(" + GetCurrentMethod.Name + ")"
                 Else
                     If errMsg.Contains("It's great that you like so many updates") Then
-                        FavoriteQueue.GetInstance.Add(id)
+                        'Me.favQueue.Add(id)
                         Return "Err:->FavoriteQueue:" + errMsg
                     End If
                     Return "Err:" + errMsg
                 End If
             Case HttpStatusCode.BadGateway, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
-                FavoriteQueue.GetInstance.Add(id)
+                'Me.favQueue.Add(id)
                 Return "Err:->FavoriteQueue:" + res.ToString + "(" + GetCurrentMethod.Name + ")"
             Case Else
                 Return "Err:" + res.ToString + "(" + GetCurrentMethod.Name + ")"
@@ -1176,10 +1180,12 @@ Public Class Twitter
 
         If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""
 
-        If FavoriteQueue.GetInstance.Contains(id) Then
-            FavoriteQueue.GetInstance.Remove(id)
-            Return ""
-        End If
+        'If Me.favQueue Is Nothing Then Me.favQueue = New FavoriteQueue(Me)
+
+        'If Me.favQueue.Contains(id) Then
+        '    Me.favQueue.Remove(id)
+        '    Return ""
+        'End If
 
         Google.GASender.GetInstance().TrackEventWithCategory("post", "destroy_favorites", Me.UserId)
         Dim res As HttpStatusCode
@@ -3511,12 +3517,12 @@ Public Class Twitter
                         Else
                             post.FavoritedCount += 1
                             If Not TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).Contains(post.StatusId) Then
-                                If TweenMain.GetInstance().FavEventChangeUnread AndAlso post.IsRead Then
+                                If AppendSettingDialog.Instance.FavEventUnread AndAlso post.IsRead Then
                                     post.IsRead = False
                                 End If
                                 TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).Add(post.StatusId, post.IsRead, False)
                             Else
-                                If TweenMain.GetInstance().FavEventChangeUnread Then
+                                If AppendSettingDialog.Instance.FavEventUnread Then
                                     TabInformations.GetInstance.SetRead(False, TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).TabName, TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).IndexOf(post.StatusId))
                                 End If
                             End If