Private SecurityManager As InternetSecurityManager
Private Thumbnail As Thumbnail
- Private _homeCounter As Integer = 0
- Private _homeCounterAdjuster As Integer = 0
- Private _mentionCounter As Integer = 0
- Private _dmCounter As Integer = 0
- Private _pubSearchCounter As Integer = 0
- Private _listsCounter As Integer = 0
+ 'Private _homeCounter As Integer = 0
+ 'Private _homeCounterAdjuster As Integer = 0
+ 'Private _mentionCounter As Integer = 0
+ 'Private _dmCounter As Integer = 0
+ 'Private _pubSearchCounter As Integer = 0
+ 'Private _listsCounter As Integer = 0
Private UnreadCounter As Integer = -1
Private UnreadAtCounter As Integer = -1
' _FirstRefreshFlags = True
' _FirstListsRefreshFlags = True
'End If
+ SettingDialog.UserstreamStartup = _cfgCommon.UserstreamStartup
+ SettingDialog.UserstreamPeriodInt = _cfgCommon.UserstreamPeriod
'ハッシュタグ関連
HashSupl = New AtIdSupplement(_cfgCommon.HashTags, "#")
#If DEBUG Then
Dim sw As Stopwatch = Stopwatch.StartNew()
#End If
- If _homeCounter > 0 Then Interlocked.Decrement(_homeCounter)
- If _mentionCounter > 0 Then Interlocked.Decrement(_mentionCounter)
- If _dmCounter > 0 Then Interlocked.Decrement(_dmCounter)
- If _pubSearchCounter > 0 Then Interlocked.Decrement(_pubSearchCounter)
- If _listsCounter > 0 Then Interlocked.Decrement(_listsCounter)
+ Static homeCounter As Integer = 0
+ Static mentionCounter As Integer = 0
+ Static dmCounter As Integer = 0
+ Static pubSearchCounter As Integer = 0
+ Static listsCounter As Integer = 0
+ Static usCounter As Integer = 0
+
+ If homeCounter > 0 Then Interlocked.Decrement(homeCounter)
+ If mentionCounter > 0 Then Interlocked.Decrement(mentionCounter)
+ If dmCounter > 0 Then Interlocked.Decrement(dmCounter)
+ If pubSearchCounter > 0 Then Interlocked.Decrement(pubSearchCounter)
+ If listsCounter > 0 Then Interlocked.Decrement(listsCounter)
+ If usCounter > 0 Then Interlocked.Decrement(usCounter)
''タイマー初期化
- If _homeCounter <= 0 AndAlso SettingDialog.TimelinePeriodInt > 0 Then
- Dim period As Integer
- Interlocked.Exchange(period, 0)
- Interlocked.Add(period, SettingDialog.TimelinePeriodInt)
- Interlocked.Add(period, -_homeCounterAdjuster)
- Interlocked.Exchange(_homeCounter, period)
+ If homeCounter <= 0 AndAlso SettingDialog.TimelinePeriodInt > 0 Then
+ 'Dim period As Integer
+ 'Interlocked.Exchange(period, 0)
+ 'Interlocked.Add(period, SettingDialog.TimelinePeriodInt)
+ 'Interlocked.Add(period, -_homeCounterAdjuster)
+ 'Interlocked.Exchange(_homeCounter, period)
+ Interlocked.Exchange(homeCounter, SettingDialog.TimelinePeriodInt)
GetTimeline(WORKERTYPE.Timeline, 1, 0, "")
End If
- If _mentionCounter <= 0 AndAlso SettingDialog.ReplyPeriodInt > 0 Then
- Interlocked.Exchange(_mentionCounter, SettingDialog.ReplyPeriodInt)
+ If mentionCounter <= 0 AndAlso SettingDialog.ReplyPeriodInt > 0 Then
+ Interlocked.Exchange(mentionCounter, SettingDialog.ReplyPeriodInt)
GetTimeline(WORKERTYPE.Reply, 1, 0, "")
End If
- If _dmCounter <= 0 AndAlso SettingDialog.DMPeriodInt > 0 Then
- Interlocked.Exchange(_dmCounter, SettingDialog.DMPeriodInt)
+ If dmCounter <= 0 AndAlso SettingDialog.DMPeriodInt > 0 Then
+ Interlocked.Exchange(dmCounter, SettingDialog.DMPeriodInt)
GetTimeline(WORKERTYPE.DirectMessegeRcv, 1, 0, "")
End If
- If _pubSearchCounter <= 0 AndAlso SettingDialog.PubSearchPeriodInt > 0 Then
- Interlocked.Exchange(_pubSearchCounter, SettingDialog.PubSearchPeriodInt)
+ If pubSearchCounter <= 0 AndAlso SettingDialog.PubSearchPeriodInt > 0 Then
+ Interlocked.Exchange(pubSearchCounter, SettingDialog.PubSearchPeriodInt)
GetTimeline(WORKERTYPE.PublicSearch, 1, 0, "")
End If
- If _listsCounter <= 0 AndAlso SettingDialog.ListsPeriodInt > 0 Then
- Interlocked.Exchange(_listsCounter, SettingDialog.ListsPeriodInt)
+ If listsCounter <= 0 AndAlso SettingDialog.ListsPeriodInt > 0 Then
+ Interlocked.Exchange(listsCounter, SettingDialog.ListsPeriodInt)
GetTimeline(WORKERTYPE.List, 1, 0, "")
End If
+ If usCounter <= 0 AndAlso SettingDialog.UserstreamPeriodInt > 0 Then
+ Interlocked.Exchange(usCounter, SettingDialog.UserstreamPeriodInt)
+ RefreshTimeline(True)
+ End If
+
#If DEBUG Then
sw.Stop()
- Console.WriteLine("Counter: Home {0} Reply {1} Dm {2} Search {3} Lists {4}", _homeCounter, _mentionCounter, _dmCounter, _pubSearchCounter, _listsCounter)
+ Console.WriteLine("Counter: Home {0} Reply {1} Dm {2} Search {3} Lists {4}", homeCounter, mentionCounter, dmCounter, pubSearchCounter, listsCounter)
Console.WriteLine(sw.Elapsed)
#End If
End Sub
- Private Sub RefreshTimeline()
+ Private Sub RefreshTimeline(ByVal isUserStream As Boolean)
'スクロール制御準備
Dim smode As Integer = -1 '-1:制御しない,-2:最新へ,その他:topitem使用
Dim topId As Long = GetScrollPos(smode)
Dim soundFile As String = ""
Dim addCount As Integer = 0
Dim isMention As Boolean = False
- addCount = _statuses.SubmitUpdate(soundFile, notifyPosts, isMention)
+ addCount = _statuses.SubmitUpdate(soundFile, notifyPosts, isMention, isUserStream)
If _endingFlag Then Exit Sub
rslt.type = WORKERTYPE.FavAdd OrElse _
rslt.type = WORKERTYPE.FavRemove OrElse _
rslt.type = WORKERTYPE.Related Then
- RefreshTimeline() 'リスト反映
+ RefreshTimeline(False) 'リスト反映
End If
Select Case rslt.type
If result = Windows.Forms.DialogResult.OK Then
SyncLock _syncObject
- Try
- If SettingDialog.TimelinePeriodInt > 0 Then
- _homeCounterAdjuster = 0
- End If
- Catch ex As Exception
- ex.Data("Instance") = "Set Timers"
- ex.Data("IsTerminatePermission") = False
- Throw
- End Try
+ 'Try
+ ' If SettingDialog.TimelinePeriodInt > 0 Then
+ ' _homeCounterAdjuster = 0
+ ' End If
+ 'Catch ex As Exception
+ ' ex.Data("Instance") = "Set Timers"
+ ' ex.Data("IsTerminatePermission") = False
+ ' Throw
+ 'End Try
'tw.CountApi = SettingDialog.CountApi
'tw.CountApiReply = SettingDialog.CountApiReply
tw.TinyUrlResolve = SettingDialog.TinyUrlResolve
Public Overloads Sub ShowSuplDialog(ByVal owner As TextBox, ByVal dialog As AtIdSupplement, ByVal offset As Integer, ByVal startswith As String)
dialog.StartsWith = startswith
- dialog.ShowDialog()
+ If dialog.Visible Then
+ dialog.Focus()
+ Else
+ dialog.ShowDialog()
+ End If
Me.TopMost = SettingDialog.AlwaysTop
Dim selStart As Integer = owner.SelectionStart
Dim fHalf As String = ""
If _curPost.IsDm Then
SourceLinkLabel.Tag = Nothing
SourceLinkLabel.Text = ""
- SourceLinkLabel.Visible = False
+ 'SourceLinkLabel.Visible = False
Else
Dim mc As Match = Regex.Match(_curPost.SourceHtml, "<a href=""(?<sourceurl>.+?)""")
If mc.Success Then
Else
SourceLinkLabel.Tag = Nothing
End If
- SourceLinkLabel.Text = "via " + _curPost.Source
- SourceLinkLabel.Visible = True
+ If String.IsNullOrEmpty(_curPost.Source) Then
+ SourceLinkLabel.Text = ""
+ 'SourceLinkLabel.Visible = False
+ Else
+ SourceLinkLabel.Text = "via " + _curPost.Source
+ 'SourceLinkLabel.Visible = True
+ End If
End If
+ SourceLinkLabel.TabStop = False
If _statuses.Tabs(_curTab.Text).TabType = TabUsageType.DirectMessage AndAlso Not _curPost.IsOwl Then
NameLabel.Text = "DM TO -> "
e.SuppressKeyPress = True
SendKeys.Send("{TAB}")
End If
+ If e.KeyCode = Keys.G Then
+ e.Handled = True
+ e.SuppressKeyPress = True
+ ShowRelatedStatusesMenuItem_Click(Nothing, Nothing)
+ End If
' ] in_reply_to参照元へ戻る
If e.KeyCode = Keys.Oem4 Then
e.Handled = True
_cfgCommon.IsOAuth = SettingDialog.IsOAuth
_cfgCommon.Token = tw.AccessToken
_cfgCommon.TokenSecret = tw.AccessTokenSecret
+ _cfgCommon.UserstreamStartup = SettingDialog.UserstreamStartup
+ _cfgCommon.UserstreamPeriod = SettingDialog.UserstreamPeriodInt
_cfgCommon.TimelinePeriod = SettingDialog.TimelinePeriodInt
_cfgCommon.ReplyPeriod = SettingDialog.ReplyPeriodInt
_cfgCommon.DMPeriod = SettingDialog.DMPeriodInt
Keys.ProcessKey
e.IsInputKey = True
JumpUnreadMenuItem_Click(Nothing, Nothing)
+ Case Keys.G
+ e.IsInputKey = True
+ ShowRelatedStatusesMenuItem_Click(Nothing, Nothing)
Case Keys.F1
e.IsInputKey = True
OpenUriAsync("http://sourceforge.jp/projects/tween/wiki/FrontPage")
Static blinkCnt As Integer = 0
Static blink As Boolean = False
Static idle As Boolean = False
- Static usCheckCnt As Integer = 0
+ 'Static usCheckCnt As Integer = 0
Static iconDlListTopItem As ListViewItem = Nothing
If DirectCast(ListTab.SelectedTab.Tag, ListView).TopItem Is iconDlListTopItem Then
iconCnt += 1
blinkCnt += 1
- usCheckCnt += 1
+ 'usCheckCnt += 1
- If usCheckCnt > 300 Then '1min
- usCheckCnt = 0
- If Not Me.IsReceivedUserStream Then
- TraceOut("ReconnectUserStream")
- tw.ReconnectUserStream()
- End If
- End If
+ 'If usCheckCnt > 300 Then '1min
+ ' usCheckCnt = 0
+ ' If Not Me.IsReceivedUserStream Then
+ ' TraceOut("ReconnectUserStream")
+ ' tw.ReconnectUserStream()
+ ' End If
+ 'End If
Dim busy As Boolean = False
For Each bw As BackgroundWorker In Me._bw
If SettingDialog.TimelinePeriodInt = 0 Then
slbl.Append(My.Resources.SetStatusLabelText2)
Else
- slbl.Append((SettingDialog.TimelinePeriodInt - _homeCounterAdjuster).ToString() + My.Resources.SetStatusLabelText3)
+ slbl.Append(SettingDialog.TimelinePeriodInt.ToString() + My.Resources.SetStatusLabelText3)
End If
Return slbl.ToString()
End Function
UnFollowToolStripMenuItem.Enabled = False
ShowFriendShipToolStripMenuItem.Enabled = False
ShowUserStatusToolStripMenuItem.Enabled = True
- SearchPostsDetailNameToolStripMenuItem.Enabled = False
+ SearchAtPostsDetailNameToolStripMenuItem.Enabled = False
ListManageUserContextToolStripMenuItem3.Enabled = True
Else
FollowToolStripMenuItem.Enabled = True
UnFollowToolStripMenuItem.Enabled = True
ShowFriendShipToolStripMenuItem.Enabled = True
ShowUserStatusToolStripMenuItem.Enabled = True
- SearchPostsDetailNameToolStripMenuItem.Enabled = True
+ SearchAtPostsDetailNameToolStripMenuItem.Enabled = True
ListManageUserContextToolStripMenuItem3.Enabled = True
End If
Else
UnFollowToolStripMenuItem.Enabled = False
ShowFriendShipToolStripMenuItem.Enabled = False
ShowUserStatusToolStripMenuItem.Enabled = False
- SearchPostsDetailNameToolStripMenuItem.Enabled = False
+ SearchAtPostsDetailNameToolStripMenuItem.Enabled = False
ListManageUserContextToolStripMenuItem3.Enabled = False
End If
End Sub
AddHandler tw.UserStreamStopped, AddressOf tw_UserStreamStopped
AddHandler tw.UserStreamPaused, AddressOf tw_UserStreamPaused
AddHandler tw.PostDeleted, AddressOf tw_PostDeleted
+
+ MenuItemUserStream.Text = "&UserStream ■"
+ MenuItemUserStream.Enabled = True
PauseToolStripMenuItem.Text = "&Pause"
PauseToolStripMenuItem.Enabled = False
StopToolStripMenuItem.Text = "&Start"
StopToolStripMenuItem.Enabled = True
- tw.StartUserStream()
+ If SettingDialog.UserstreamStartup Then tw.StartUserStream()
TimerTimeline.Enabled = True
End Sub
result += fInfo.id + My.Resources.GetFriendshipInfo5 + System.Environment.NewLine + ff
If fInfo.isFollowing Then
If MessageBox.Show( _
- "フォロー解除しますか?" + System.Environment.NewLine + result, "フォロー解除確認", _
+ My.Resources.GetFriendshipInfo7 + System.Environment.NewLine + result, My.Resources.GetFriendshipInfo8, _
MessageBoxButtons.YesNo, _
MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
If m.Success AndAlso IsTwitterId(m.Result("${name}")) Then
Return m.Result("${name}")
Else
+ Dim ma As Match = Regex.Match(Me._postBrowserStatusText, "^https?://twitter.com/(#!/)?(?<name>[a-zA-Z0-9_]+)(/(status|statuses)/[0-9]+)$")
+ If ma.Success AndAlso IsTwitterId(ma.Result("${name}")) Then
+ Return ma.Result("${name}")
+ End If
Return Nothing
End If
End Function
End If
End Sub
+ Private Sub SearchAtPostsDetailNameToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchAtPostsDetailNameToolStripMenuItem.Click, SearchAtPostsDetailToolStripMenuItem.Click
+ If NameLabel.Tag IsNot Nothing Then
+ Dim id As String = DirectCast(NameLabel.Tag, String)
+ AddNewTabForSearch("@" + id)
+ End If
+ End Sub
+
Private Sub ShowProfileMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowProfileMenuItem.Click, ShowProfMenuItem.Click
If _curPost IsNot Nothing Then
ShowUserStatus(_curPost.Name, False)
SetStatusLabelUrl()
End Sub
- Private Sub SourceLinkLabel_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SourceLinkLabel.Enter
- StatusText.Focus()
- End Sub
-
Private Sub MenuItemCommand_DropDownOpening(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItemCommand.DropDownOpening
If _curPost IsNot Nothing AndAlso Not _curPost.IsDm Then
RtCountMenuItem.Enabled = True
End If
Dim tb As TabClass = _statuses.GetTabByType(TabUsageType.Related)
- tb.RelationTargetId = _curPost.Id
+ tb.RelationTargetPost = _curPost
Me.ClearTab(tb.TabName, False)
For i As Integer = 0 To ListTab.TabPages.Count - 1
If tb.TabName = ListTab.TabPages(i).Text Then
End Sub
Private Sub tw_PostDeleted(ByVal id As Long)
- Try
- If InvokeRequired Then
- Invoke(New Action(Of Long)(AddressOf tw_PostDeleted), id)
- Exit Sub
- End If
- Catch ex As ObjectDisposedException
- Exit Sub
- End Try
-
- _statuses.RemovePost(id)
-
- Me.RefreshTimeline()
+ _statuses.RemovePostReserve(id)
End Sub
Private Sub tw_NewPostFromStream()
'before = Now
End SyncLock
+ If SettingDialog.UserstreamPeriodInt > 0 Then Exit Sub
+
Try
If InvokeRequired AndAlso Not IsDisposed Then
- Invoke(New MethodInvoker(AddressOf RefreshTimeline))
+ Invoke(New Action(Of Boolean)(AddressOf RefreshTimeline), True)
Exit Sub
End If
Catch ex As ObjectDisposedException
StatusLabel.Text = "UserStream Paused."
End Sub
- Private ReadOnly Property IsReceivedUserStream As Boolean
- Get
- Static lastTime As DateTime
- Dim changed As Boolean = (lastTime.CompareTo(tw.LastReceivedUserStream) < 0)
- lastTime = tw.LastReceivedUserStream
- Return changed
- End Get
- End Property
+ 'Private ReadOnly Property IsReceivedUserStream As Boolean
+ ' Get
+ ' Static lastTime As DateTime
+ ' Dim changed As Boolean = (lastTime.CompareTo(tw.LastReceivedUserStream) < 0)
+ ' lastTime = tw.LastReceivedUserStream
+ ' Return changed
+ ' End Get
+ 'End Property
Private Sub PauseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PauseToolStripMenuItem.Click
MenuItemUserStream.Enabled = False
Me._modifySettingCommon = True
tw.ReconnectUserStream()
End Sub
+
+ Private Sub TweenRestartMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TweenRestartMenuItem.Click
+ _endingFlag = True
+ Application.Restart()
+ End Sub
+
+ Private Sub OpenOwnFavedMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OpenOwnFavedMenuItem.Click
+ If Not tw.Username = "" Then OpenUriAsync(My.Resources.FavstarUrl + "users/" + tw.Username + "/recent")
+ End Sub
+
+ Private Sub OpenOwnHomeMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OpenOwnHomeMenuItem.Click
+ OpenUriAsync("http://twitter.com/" + tw.Username)
+ End Sub
End Class