From 43daaa309893641b70dbfd86c9d2cc424fdf7d06 Mon Sep 17 00:00:00 2001 From: kiri_feather Date: Sat, 10 Sep 2011 16:44:20 +0900 Subject: [PATCH] =?utf8?q?FavoriteQueue=E3=82=92IList(Of=20Long)=E3=82=A4?= =?utf8?q?=E3=83=B3=E3=82=BF=E3=83=BC=E3=83=95=E3=82=A7=E3=83=BC=E3=82=B9?= =?utf8?q?=E5=AE=9F=E8=A3=85=E3=81=AB=E5=A4=89=E6=9B=B4=20GA=E5=B8=B8?= =?utf8?q?=E3=81=AB=E6=9C=89=E5=8A=B9=E3=81=AB=20ChangeLog=E4=BF=AE?= =?utf8?q?=E6=AD=A3=20TweenMain=E3=81=8C=E3=82=B7=E3=83=B3=E3=82=B0?= =?utf8?q?=E3=83=AB=E3=83=88=E3=83=B3=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6?= =?utf8?q?=E3=81=84=E3=81=9F=E3=81=AE=E3=82=92=E3=82=84=E3=82=81=E3=81=9F?= =?utf8?q?=E3=80=82=20FavQueue=E3=82=92=E4=B8=80=E6=97=A6=E5=A4=96?= =?utf8?q?=E3=81=97=E3=81=9F=E3=80=82TweenMain=E5=81=B4=E3=81=8B=E3=82=89?= =?utf8?q?=E6=93=8D=E4=BD=9C=E3=81=97=E3=80=81=E7=B5=90=E6=9E=9C=E8=BF=94?= =?utf8?q?=E3=81=99=E3=82=88=E3=81=86=E5=AE=9F=E8=A3=85=E3=81=99=E3=82=8B?= =?utf8?q?=E5=BF=85=E8=A6=81=E3=81=82=E3=82=8A=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Tween/FavoriteQueue.vb | 110 +++++++++++++++++++++++++++++------------- Tween/Google.vb | 5 -- Tween/Resources/ChangeLog.txt | 7 +-- Tween/Tween.vb | 7 --- Tween/Tween.vbproj | 4 +- Tween/Twitter.vb | 28 ++++++----- 6 files changed, 100 insertions(+), 61 deletions(-) diff --git a/Tween/FavoriteQueue.vb b/Tween/FavoriteQueue.vb index 27d50f9f..c5f24b93 100644 --- a/Tween/FavoriteQueue.vb +++ b/Tween/FavoriteQueue.vb @@ -2,61 +2,105 @@ 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 diff --git a/Tween/Google.vb b/Tween/Google.vb index 44aef711..1cd195b6 100644 --- a/Tween/Google.vb +++ b/Tween/Google.vb @@ -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) diff --git a/Tween/Resources/ChangeLog.txt b/Tween/Resources/ChangeLog.txt index ddd75007..2d5bd798 100644 --- a/Tween/Resources/ChangeLog.txt +++ b/Tween/Resources/ChangeLog.txt @@ -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) diff --git a/Tween/Tween.vb b/Tween/Tween.vb index 206da67d..58aeaa2e 100644 --- a/Tween/Tween.vb +++ b/Tween/Tween.vb @@ -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 diff --git a/Tween/Tween.vbproj b/Tween/Tween.vbproj index 45368f18..f0c674aa 100644 --- a/Tween/Tween.vbproj +++ b/Tween/Tween.vbproj @@ -78,7 +78,7 @@ 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 false false - UA="True" + UA="False" true @@ -91,7 +91,7 @@ x86 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 Auto - UA="True" + UA="False" On diff --git a/Tween/Twitter.vb b/Tween/Twitter.vb index e7186cc8..440d2aa8 100644 --- a/Tween/Twitter.vb +++ b/Tween/Twitter.vb @@ -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 -- 2.11.0