mock.VerifyAll();
}
-
- [Fact]
- public async Task UserStreams_Test()
- {
- var mock = new Mock<IApiConnection>();
- mock.Setup(x =>
- x.GetStreamingStreamAsync(
- new Uri("https://userstream.twitter.com/1.1/user.json", UriKind.Absolute),
- new Dictionary<string, string> {
- { "replies", "all" },
- { "track", "OpenTween" },
- })
- )
- .ReturnsAsync(new MemoryStream());
-
- using var twitterApi = new TwitterApi(ApiKey.Create("fake_consumer_key"), ApiKey.Create("fake_consumer_secret"));
- twitterApi.apiConnection = mock.Object;
-
- var observable = twitterApi.UserStreams(replies: "all", track: "OpenTween");
- await observable.ForEachAsync(x => { });
-
- mock.VerifyAll();
- }
}
}
+++ /dev/null
-// OpenTween - Client of Twitter
-// Copyright (c) 2014 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
-// All rights reserved.
-//
-// This file is part of OpenTween.
-//
-// This program is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the Free
-// Software Foundation; either version 3 of the License, or (at your option)
-// any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
-// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
-// Boston, MA 02110-1301, USA.
-
-#nullable enable annotations
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace OpenTween.Api.DataModel
-{
- [DataContract]
- public class TwitterStreamEvent
- {
- [DataMember(Name = "target")]
- public TwitterUser Target { get; set; }
-
- [DataMember(Name = "source")]
- public TwitterUser Source { get; set; }
-
- [DataMember(Name = "event")]
- public string Event { get; set; }
-
- [DataMember(Name = "created_at")]
- public string CreatedAt { get; set; }
-
- /// <exception cref="SerializationException"/>
- public static TwitterStreamEvent ParseJson(string json)
- => MyCommon.CreateDataFromJson<TwitterStreamEvent>(json);
- }
-
- [DataContract]
- public class TwitterStreamEvent<T> : TwitterStreamEvent
- {
- [DataMember(Name = "target_object")]
- public T TargetObject { get; set; }
-
- /// <exception cref="SerializationException"/>
- public static new TwitterStreamEvent<T> ParseJson(string json)
- => MyCommon.CreateDataFromJson<TwitterStreamEvent<T>>(json);
- }
-}
=> new StreamMessageStatus(TwitterStatusCompat.ParseJson(json));
}
- public class StreamMessageEvent : ITwitterStreamMessage
- {
- public TwitterStreamEvent Event { get; }
- public string Json { get; }
-
- public StreamMessageEvent(TwitterStreamEvent eventData, string json)
- {
- this.Event = eventData;
- this.Json = json;
- }
-
- public TwitterStreamEvent<T> ParseTargetObjectAs<T>()
- => TwitterStreamEvent<T>.ParseJson(this.Json);
-
- public static StreamMessageEvent ParseJson(string json)
- => new StreamMessageEvent(TwitterStreamEvent.ParseJson(json), json);
- }
-
- [DataContract]
- public class StreamMessageDirectMessage : ITwitterStreamMessage
- {
- [DataMember(Name = "direct_message")]
- public TwitterDirectMessage DirectMessage { get; set; }
-
- public static StreamMessageDirectMessage ParseJson(string json)
- => MyCommon.CreateDataFromJson<StreamMessageDirectMessage>(json);
- }
-
- [DataContract]
- public class StreamMessageDelete : ITwitterStreamMessage
- {
- [DataContract]
- public class DeletedId
- {
- [DataMember(Name = "id")]
- public long Id { get; set; }
- }
-
- [DataMember(Name = "direct_message", IsRequired = false)]
- public DeletedId? DirectMessage { get; set; }
-
- [DataMember(Name = "status", IsRequired = false)]
- public DeletedId? Status { get; set; }
-
- public static StreamMessageDelete ParseJson(string json)
- => MyCommon.CreateDataFromJson<StreamMessageDelete>(json);
- }
-
- [DataContract]
- public class StreamMessageScrubGeo : ITwitterStreamMessage
- {
- [DataMember(Name = "user_id")]
- public long UserId { get; set; }
-
- [DataMember(Name = "up_to_status_id")]
- public long UpToStatusId { get; set; }
-
- public static StreamMessageScrubGeo ParseJson(string json)
- => MyCommon.CreateDataFromJson<StreamMessageScrubGeo>(json);
- }
-
public class StreamMessageKeepAlive : ITwitterStreamMessage
{
}
return this.Connection.PostJsonAsync(endpoint, json);
}
- public TwitterStreamObservable UserStreams(string? replies = null, string? track = null)
- {
- var endpoint = new Uri("https://userstream.twitter.com/1.1/user.json");
- var param = new Dictionary<string, string>();
-
- if (!MyCommon.IsNullOrEmpty(replies))
- param["replies"] = replies;
- if (!MyCommon.IsNullOrEmpty(track))
- param["track"] = track;
-
- Task<Stream> openStream()
- => this.Connection.GetStreamingStreamAsync(endpoint, param);
-
- return new TwitterStreamObservable(openStream);
- }
-
public OAuthEchoHandler CreateOAuthEchoHandler(Uri authServiceProvider, Uri? realm = null)
=> ((TwitterApiConnection)this.Connection).CreateOAuthEchoHandler(authServiceProvider, realm);
if (xElm.Element("text") != null)
return StreamMessageStatus.ParseJson(line);
- if (xElm.Element("delete") != null)
- return StreamMessageDelete.ParseJson(line);
-
- if (xElm.Element("event") != null)
- return StreamMessageEvent.ParseJson(line);
-
- if (xElm.Element("direct_message") != null)
- return StreamMessageDirectMessage.ParseJson(line);
-
- if (xElm.Element("scrub_geo") != null)
- return StreamMessageScrubGeo.ParseJson(line);
-
return new StreamMessageUnknown(line);
}
catch (XmlException)
}
private void CheckPostAndGet_CheckedChanged(object sender, EventArgs e)
- => this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked && !tw.UserStreamActive;
+ => this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked;
private void Setting_Shown(object sender, EventArgs e)
{
} while (!this.IsHandleCreated);
this.TopMost = this.PreviewPanel.CheckAlwaysTop.Checked;
- this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked && !tw.UserStreamActive;
- this.GetPeriodPanel.LabelUserStreamActive.Visible = tw.UserStreamActive;
+ this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked;
}
private void OpenUrl(string url)
public class IntervalChangedEventArgs : EventArgs
{
- public bool UserStream;
public bool Timeline;
public bool Reply;
public bool DirectMessage;
public static IntervalChangedEventArgs ResetAll => new IntervalChangedEventArgs
{
- UserStream = true,
Timeline = true,
Reply = true,
DirectMessage = true,
+++ /dev/null
-namespace OpenTween
-{
- partial class EventViewerDialog
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EventViewerDialog));
- this.SaveLogButton = new System.Windows.Forms.Button();
- this.CheckBoxFilter = new System.Windows.Forms.CheckBox();
- this.TabPageAll = new System.Windows.Forms.TabPage();
- this.EventList = new System.Windows.Forms.ListView();
- this.ColumnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.ColumnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.ColumnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.ColumnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.CheckRegex = new System.Windows.Forms.CheckBox();
- this.TextBoxKeyword = new System.Windows.Forms.TextBox();
- this.StatusLabelCount = new System.Windows.Forms.ToolStripStatusLabel();
- this.OK_Button = new System.Windows.Forms.Button();
- this.StatusStrip1 = new System.Windows.Forms.StatusStrip();
- this.TabEventType = new System.Windows.Forms.TabControl();
- this.ButtonRefresh = new System.Windows.Forms.Button();
- this.CheckExcludeMyEvent = new System.Windows.Forms.CheckBox();
- this.SaveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
- this.TabPageAll.SuspendLayout();
- this.StatusStrip1.SuspendLayout();
- this.TabEventType.SuspendLayout();
- this.SuspendLayout();
- //
- // SaveLogButton
- //
- resources.ApplyResources(this.SaveLogButton, "SaveLogButton");
- this.SaveLogButton.Name = "SaveLogButton";
- this.SaveLogButton.UseVisualStyleBackColor = true;
- this.SaveLogButton.Click += new System.EventHandler(this.SaveLogButton_Click);
- //
- // CheckBoxFilter
- //
- resources.ApplyResources(this.CheckBoxFilter, "CheckBoxFilter");
- this.CheckBoxFilter.Name = "CheckBoxFilter";
- this.CheckBoxFilter.UseVisualStyleBackColor = true;
- this.CheckBoxFilter.CheckedChanged += new System.EventHandler(this.TabEventType_SelectedIndexChanged);
- //
- // TabPageAll
- //
- this.TabPageAll.AccessibleRole = System.Windows.Forms.AccessibleRole.PageTab;
- this.TabPageAll.Controls.Add(this.EventList);
- resources.ApplyResources(this.TabPageAll, "TabPageAll");
- this.TabPageAll.Name = "TabPageAll";
- this.TabPageAll.Tag = "All";
- this.TabPageAll.UseVisualStyleBackColor = true;
- //
- // EventList
- //
- this.EventList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
- this.ColumnHeader1,
- this.ColumnHeader2,
- this.ColumnHeader3,
- this.ColumnHeader4});
- resources.ApplyResources(this.EventList, "EventList");
- this.EventList.FullRowSelect = true;
- this.EventList.Name = "EventList";
- this.EventList.ShowItemToolTips = true;
- this.EventList.UseCompatibleStateImageBehavior = false;
- this.EventList.View = System.Windows.Forms.View.Details;
- this.EventList.VirtualMode = true;
- this.EventList.CacheVirtualItems += new System.Windows.Forms.CacheVirtualItemsEventHandler(this.EventList_CacheVirtualItems);
- this.EventList.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.EventList_RetrieveVirtualItem);
- this.EventList.DoubleClick += new System.EventHandler(this.EventList_DoubleClick);
- this.EventList.KeyDown += new System.Windows.Forms.KeyEventHandler(this.EventList_KeyDown);
- //
- // ColumnHeader1
- //
- resources.ApplyResources(this.ColumnHeader1, "ColumnHeader1");
- //
- // ColumnHeader2
- //
- resources.ApplyResources(this.ColumnHeader2, "ColumnHeader2");
- //
- // ColumnHeader3
- //
- resources.ApplyResources(this.ColumnHeader3, "ColumnHeader3");
- //
- // ColumnHeader4
- //
- resources.ApplyResources(this.ColumnHeader4, "ColumnHeader4");
- //
- // CheckRegex
- //
- resources.ApplyResources(this.CheckRegex, "CheckRegex");
- this.CheckRegex.Name = "CheckRegex";
- this.CheckRegex.UseVisualStyleBackColor = true;
- //
- // TextBoxKeyword
- //
- resources.ApplyResources(this.TextBoxKeyword, "TextBoxKeyword");
- this.TextBoxKeyword.Name = "TextBoxKeyword";
- this.TextBoxKeyword.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TextBoxKeyword_KeyPress);
- //
- // StatusLabelCount
- //
- this.StatusLabelCount.Name = "StatusLabelCount";
- resources.ApplyResources(this.StatusLabelCount, "StatusLabelCount");
- //
- // OK_Button
- //
- resources.ApplyResources(this.OK_Button, "OK_Button");
- this.OK_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.OK_Button.Name = "OK_Button";
- this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click);
- //
- // StatusStrip1
- //
- this.StatusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.StatusLabelCount});
- resources.ApplyResources(this.StatusStrip1, "StatusStrip1");
- this.StatusStrip1.Name = "StatusStrip1";
- //
- // TabEventType
- //
- resources.ApplyResources(this.TabEventType, "TabEventType");
- this.TabEventType.Controls.Add(this.TabPageAll);
- this.TabEventType.Name = "TabEventType";
- this.TabEventType.SelectedIndex = 0;
- this.TabEventType.SelectedIndexChanged += new System.EventHandler(this.TabEventType_SelectedIndexChanged);
- this.TabEventType.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.TabEventType_Selecting);
- //
- // ButtonRefresh
- //
- resources.ApplyResources(this.ButtonRefresh, "ButtonRefresh");
- this.ButtonRefresh.Name = "ButtonRefresh";
- this.ButtonRefresh.UseVisualStyleBackColor = true;
- this.ButtonRefresh.Click += new System.EventHandler(this.ButtonRefresh_Click);
- //
- // CheckExcludeMyEvent
- //
- resources.ApplyResources(this.CheckExcludeMyEvent, "CheckExcludeMyEvent");
- this.CheckExcludeMyEvent.Name = "CheckExcludeMyEvent";
- this.CheckExcludeMyEvent.UseVisualStyleBackColor = true;
- this.CheckExcludeMyEvent.CheckedChanged += new System.EventHandler(this.CheckExcludeMyEvent_CheckedChanged);
- //
- // EventViewerDialog
- //
- resources.ApplyResources(this, "$this");
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.CancelButton = this.OK_Button;
- this.Controls.Add(this.SaveLogButton);
- this.Controls.Add(this.CheckBoxFilter);
- this.Controls.Add(this.CheckRegex);
- this.Controls.Add(this.TextBoxKeyword);
- this.Controls.Add(this.OK_Button);
- this.Controls.Add(this.StatusStrip1);
- this.Controls.Add(this.TabEventType);
- this.Controls.Add(this.ButtonRefresh);
- this.Controls.Add(this.CheckExcludeMyEvent);
- this.DoubleBuffered = true;
- this.Name = "EventViewerDialog";
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.Shown += new System.EventHandler(this.EventViewerDialog_Shown);
- this.TabPageAll.ResumeLayout(false);
- this.StatusStrip1.ResumeLayout(false);
- this.StatusStrip1.PerformLayout();
- this.TabEventType.ResumeLayout(false);
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- internal System.Windows.Forms.Button SaveLogButton;
- internal System.Windows.Forms.CheckBox CheckBoxFilter;
- internal System.Windows.Forms.TabPage TabPageAll;
- internal System.Windows.Forms.ListView EventList;
- internal System.Windows.Forms.ColumnHeader ColumnHeader1;
- internal System.Windows.Forms.ColumnHeader ColumnHeader2;
- internal System.Windows.Forms.ColumnHeader ColumnHeader3;
- internal System.Windows.Forms.ColumnHeader ColumnHeader4;
- internal System.Windows.Forms.CheckBox CheckRegex;
- internal System.Windows.Forms.TextBox TextBoxKeyword;
- internal System.Windows.Forms.ToolStripStatusLabel StatusLabelCount;
- internal System.Windows.Forms.Button OK_Button;
- internal System.Windows.Forms.StatusStrip StatusStrip1;
- internal System.Windows.Forms.TabControl TabEventType;
- internal System.Windows.Forms.Button ButtonRefresh;
- internal System.Windows.Forms.CheckBox CheckExcludeMyEvent;
- internal System.Windows.Forms.SaveFileDialog SaveFileDialog1;
- }
-}
\ No newline at end of file
+++ /dev/null
-// OpenTween - Client of Twitter
-// Copyright (c) 2007-2011 kiri_feather (@kiri_feather) <kiri.feather@gmail.com>
-// (c) 2008-2011 Moz (@syo68k)
-// (c) 2008-2011 takeshik (@takeshik) <http://www.takeshik.org/>
-// (c) 2010-2011 anis774 (@anis774) <http://d.hatena.ne.jp/anis774/>
-// (c) 2010-2011 fantasticswallow (@f_swallow) <http://twitter.com/f_swallow>
-// (c) 2011-2012 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
-// All rights reserved.
-//
-// This file is part of OpenTween.
-//
-// This program is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General public License as published by the Free
-// Software Foundation; either version 3 of the License, or (at your option)
-// any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General public License
-// for more details.
-//
-// You should have received a copy of the GNU General public License along
-// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
-// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
-// Boston, MA 02110-1301, USA.
-
-#nullable enable
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using System.Text.RegularExpressions;
-using System.IO;
-using System.Globalization;
-using OpenTween.Setting;
-using System.Threading.Tasks;
-
-namespace OpenTween
-{
- public partial class EventViewerDialog : OTBaseForm
- {
- public List<Twitter.FormattedEvent> EventSource { get; set; } = new List<Twitter.FormattedEvent>();
-
- private Twitter.FormattedEvent[] _filterdEventSource = Array.Empty<Twitter.FormattedEvent>();
-
- private ListViewItem[]? _ItemCache = null;
- private int _itemCacheIndex;
-
- private TabPage _curTab = null!;
-
- public EventViewerDialog()
- {
- InitializeComponent();
-
- // メイリオフォント指定時にタブの最小幅が広くなる問題の対策
- this.TabEventType.HandleCreated += (s, e) => NativeMethods.SetMinTabWidth((TabControl)s, 40);
- }
-
- protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
- {
- base.ScaleControl(factor, specified);
- ScaleChildControl(this.EventList, factor);
- }
-
- private void OK_Button_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
-
- private void Cancel_Button_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- this.Close();
- }
-
- private ListViewItem CreateListViewItem(Twitter.FormattedEvent source)
- {
- string[] s = { source.CreatedAt.ToLocalTimeString(), source.Event.ToUpper(CultureInfo.CurrentCulture), source.Username, source.Target };
- return new ListViewItem(s);
- }
-
- private void EventViewerDialog_Shown(object sender, EventArgs e)
- {
- // タブ初期化
- foreach (var tabPage in CreateTabsFromUserStreamsEvent())
- {
- TabEventType.TabPages.Add(tabPage);
- }
-
- EventList.BeginUpdate();
- _curTab = TabEventType.SelectedTab;
- CreateFilterdEventSource();
- EventList.EndUpdate();
- this.TopMost = SettingManager.Common.AlwaysTop;
- }
-
- private async void EventList_DoubleClick(object sender, EventArgs e)
- => await this.OpenEventStatusOrUser();
-
- private async void EventList_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyData == Keys.Enter)
- await this.OpenEventStatusOrUser();
- }
-
- private async Task OpenEventStatusOrUser()
- {
- if (this.EventList.SelectedIndices.Count == 0)
- return;
-
- var tweenMain = (TweenMain)this.Owner;
- var selectedEvent = this._filterdEventSource[this.EventList.SelectedIndices[0]];
- if (selectedEvent != null)
- {
- if (selectedEvent.Id != 0)
- await tweenMain.OpenRelatedTab(selectedEvent.Id);
- else
- await tweenMain.OpenUriAsync(new Uri("https://twitter.com/" + selectedEvent.Username));
- }
- }
-
- private MyCommon.EVENTTYPE ParseEventTypeFromTag()
- => (MyCommon.EVENTTYPE)Enum.Parse(typeof(MyCommon.EVENTTYPE), _curTab.Tag.ToString());
-
- private bool IsFilterMatch(Twitter.FormattedEvent x)
- {
- if (!CheckBoxFilter.Checked || MyCommon.IsNullOrEmpty(TextBoxKeyword.Text))
- {
- return true;
- }
- else
- {
- if (CheckRegex.Checked)
- {
- try
- {
- var rx = new Regex(TextBoxKeyword.Text);
- return rx.Match(x.Username).Success || rx.Match(x.Target).Success;
- }
- catch (Exception ex)
- {
- MessageBox.Show(Properties.Resources.ButtonOK_ClickText3 + ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
- return false;
- }
- }
- else
- {
- return x.Username.Contains(TextBoxKeyword.Text) || x.Target.Contains(TextBoxKeyword.Text);
- }
- }
- }
-
- private void CreateFilterdEventSource()
- {
- if (EventSource != null && EventSource.Count > 0)
- {
- _filterdEventSource = EventSource.FindAll((x) => !(CheckExcludeMyEvent.Checked && x.IsMe) &&
- (x.Eventtype & ParseEventTypeFromTag()) != 0 &&
- IsFilterMatch(x)).ToArray();
- _ItemCache = null;
- EventList.VirtualListSize = _filterdEventSource.Count();
- StatusLabelCount.Text = string.Format("{0} / {1}", _filterdEventSource.Count(), EventSource.Count());
- }
- else
- {
- StatusLabelCount.Text = "0 / 0";
- }
- }
-
- private void CheckExcludeMyEvent_CheckedChanged(object sender, EventArgs e)
- => this.CreateFilterdEventSource();
-
- private void ButtonRefresh_Click(object sender, EventArgs e)
- => this.CreateFilterdEventSource();
-
- private void TabEventType_SelectedIndexChanged(object sender, EventArgs e)
- => this.CreateFilterdEventSource();
-
- private void TabEventType_Selecting(object sender, TabControlCancelEventArgs e)
- {
- _curTab = e.TabPage;
- if (!e.TabPage.Controls.Contains(EventList))
- {
- e.TabPage.Controls.Add(EventList);
- }
- }
-
- private void TextBoxKeyword_KeyPress(object sender, KeyPressEventArgs e)
- {
- if (e.KeyChar == (char)Keys.Enter)
- {
- CreateFilterdEventSource();
- e.Handled = true;
- }
- }
-
- private void EventList_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
- {
- if (_ItemCache != null && e.ItemIndex >= _itemCacheIndex && e.ItemIndex < _itemCacheIndex + _ItemCache.Length)
- {
- //キャッシュヒット
- e.Item = _ItemCache[e.ItemIndex - _itemCacheIndex];
- }
- else
- {
- //キャッシュミス
- e.Item = CreateListViewItem(_filterdEventSource[e.ItemIndex]);
- }
- }
-
- private void EventList_CacheVirtualItems(object sender, CacheVirtualItemsEventArgs e)
- => this.CreateCache(e.StartIndex, e.EndIndex);
-
- private void CreateCache(int StartIndex, int EndIndex)
- {
- //キャッシュ要求(要求範囲±30を作成)
- StartIndex -= 30;
- if (StartIndex < 0) StartIndex = 0;
- EndIndex += 30;
- if (EndIndex > _filterdEventSource.Count() - 1)
- {
- EndIndex = _filterdEventSource.Count() - 1;
- }
- _ItemCache = new ListViewItem[] { };
- Array.Resize(ref _ItemCache, EndIndex - StartIndex + 1);
- _itemCacheIndex = StartIndex;
- for (var i = 0; i < _ItemCache.Length; i++)
- {
- _ItemCache[i] = CreateListViewItem(_filterdEventSource[StartIndex + i]);
- }
- }
-
- private void SaveLogButton_Click(object sender, EventArgs e)
- {
- var rslt = MessageBox.Show(string.Format(Properties.Resources.SaveLogMenuItem_ClickText5, Environment.NewLine),
- Properties.Resources.SaveLogMenuItem_ClickText2,
- MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- switch (rslt)
- {
- case DialogResult.Yes:
- SaveFileDialog1.FileName = $"{ApplicationSettings.AssemblyName}Events{_curTab.Tag}{DateTimeUtc.Now.ToLocalTime():yyMMdd-HHmmss}.tsv";
- break;
- case DialogResult.No:
- SaveFileDialog1.FileName = $"{ApplicationSettings.AssemblyName}Events{DateTimeUtc.Now.ToLocalTime():yyMMdd-HHmmss}.tsv";
- break;
- default:
- return;
- }
-
- SaveFileDialog1.InitialDirectory = Application.StartupPath;
- SaveFileDialog1.Filter = Properties.Resources.SaveLogMenuItem_ClickText3;
- SaveFileDialog1.FilterIndex = 0;
- SaveFileDialog1.Title = Properties.Resources.SaveLogMenuItem_ClickText4;
- SaveFileDialog1.RestoreDirectory = true;
-
- if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
- {
- if (!SaveFileDialog1.ValidateNames) return;
- using var sw = new StreamWriter(SaveFileDialog1.FileName, false, Encoding.UTF8);
-
- switch (rslt)
- {
- case DialogResult.Yes:
- SaveEventLog(_filterdEventSource.ToList(), sw);
- break;
- case DialogResult.No:
- SaveEventLog(EventSource, sw);
- break;
- default:
- break;
- }
- }
- this.TopMost = SettingManager.Common.AlwaysTop;
- }
-
- private void SaveEventLog(List<Twitter.FormattedEvent> source, StreamWriter sw)
- {
- foreach (var _event in source)
- {
- sw.WriteLine(_event.Eventtype + "\t" +
- "\"" + _event.CreatedAt.ToLocalTimeString() + "\"\t" +
- _event.Event + "\t" +
- _event.Username + "\t" +
- _event.Target + "\t" +
- _event.Id);
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
- private static IEnumerable<TabPage> CreateTabsFromUserStreamsEvent()
- {
- return Enum.GetNames(typeof(MyCommon.EVENTTYPE))
- .Where(e => e != "None" && e != "All")
- .Select(e => new TabPage(e)
- {
- Tag = e,
- UseVisualStyleBackColor = true,
- AccessibleRole = AccessibleRole.PageTab,
- });
- }
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="CheckExcludeMyEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>126, 16</value>
- </data>
- <data name="CheckExcludeMyEvent.Text" xml:space="preserve">
- <value>Exclude own events</value>
- </data>
- <data name="ButtonRefresh.Text" xml:space="preserve">
- <value>Refresh</value>
- </data>
- <data name="TabPageAll.Text" xml:space="preserve">
- <value>All</value>
- </data>
- <data name="CheckRegex.Size" type="System.Drawing.Size, System.Drawing">
- <value>56, 16</value>
- </data>
- <data name="CheckRegex.Text" xml:space="preserve">
- <value>Regex</value>
- </data>
- <data name="CheckBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
- <value>105, 16</value>
- </data>
- <data name="CheckBoxFilter.Text" xml:space="preserve">
- <value>Keyword search</value>
- </data>
- <data name="SaveLogButton.Text" xml:space="preserve">
- <value>Save...</value>
- </data>
-</root>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="SaveLogButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Right</value>
- </data>
- <data name="SaveLogButton.Location" type="System.Drawing.Point, System.Drawing">
- <value>599, 239</value>
- </data>
- <data name="SaveLogButton.Size" type="System.Drawing.Size, System.Drawing">
- <value>126, 22</value>
- </data>
- <data name="SaveLogButton.TabIndex" type="System.Int32, mscorlib">
- <value>5</value>
- </data>
- <data name="SaveLogButton.Text" xml:space="preserve">
- <value>ファイル保存</value>
- </data>
- <data name=">>SaveLogButton.Name" xml:space="preserve">
- <value>SaveLogButton</value>
- </data>
- <data name=">>SaveLogButton.Type" xml:space="preserve">
- <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>SaveLogButton.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>SaveLogButton.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="CheckBoxFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Left</value>
- </data>
- <data name="CheckBoxFilter.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckBoxFilter.Location" type="System.Drawing.Point, System.Drawing">
- <value>12, 277</value>
- </data>
- <data name="CheckBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
- <value>124, 16</value>
- </data>
- <data name="CheckBoxFilter.TabIndex" type="System.Int32, mscorlib">
- <value>2</value>
- </data>
- <data name="CheckBoxFilter.Text" xml:space="preserve">
- <value>キーワードで絞り込む</value>
- </data>
- <data name=">>CheckBoxFilter.Name" xml:space="preserve">
- <value>CheckBoxFilter</value>
- </data>
- <data name=">>CheckBoxFilter.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckBoxFilter.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckBoxFilter.ZOrder" xml:space="preserve">
- <value>1</value>
- </data>
- <data name=">>EventList.Name" xml:space="preserve">
- <value>EventList</value>
- </data>
- <data name=">>EventList.Type" xml:space="preserve">
- <value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>EventList.Parent" xml:space="preserve">
- <value>TabPageAll</value>
- </data>
- <data name=">>EventList.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="TabPageAll.Location" type="System.Drawing.Point, System.Drawing">
- <value>4, 4</value>
- </data>
- <data name="TabPageAll.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
- <value>3, 3, 3, 3</value>
- </data>
- <data name="TabPageAll.Size" type="System.Drawing.Size, System.Drawing">
- <value>706, 193</value>
- </data>
- <data name="TabPageAll.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="TabPageAll.Text" xml:space="preserve">
- <value>全て</value>
- </data>
- <data name=">>TabPageAll.Name" xml:space="preserve">
- <value>TabPageAll</value>
- </data>
- <data name=">>TabPageAll.Type" xml:space="preserve">
- <value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>TabPageAll.Parent" xml:space="preserve">
- <value>TabEventType</value>
- </data>
- <data name=">>TabPageAll.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="EventList.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
- <value>Fill</value>
- </data>
- <data name="EventList.Location" type="System.Drawing.Point, System.Drawing">
- <value>3, 3</value>
- </data>
- <data name="EventList.Size" type="System.Drawing.Size, System.Drawing">
- <value>700, 187</value>
- </data>
- <data name="EventList.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="ColumnHeader1.Text" xml:space="preserve">
- <value>Datetime</value>
- </data>
- <data name="ColumnHeader1.Width" type="System.Int32, mscorlib">
- <value>86</value>
- </data>
- <data name="ColumnHeader2.Text" xml:space="preserve">
- <value>Type</value>
- </data>
- <data name="ColumnHeader2.Width" type="System.Int32, mscorlib">
- <value>90</value>
- </data>
- <data name="ColumnHeader3.Text" xml:space="preserve">
- <value>Username</value>
- </data>
- <data name="ColumnHeader3.Width" type="System.Int32, mscorlib">
- <value>106</value>
- </data>
- <data name="ColumnHeader4.Text" xml:space="preserve">
- <value>Target</value>
- </data>
- <data name="ColumnHeader4.Width" type="System.Int32, mscorlib">
- <value>360</value>
- </data>
- <data name="CheckRegex.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Left</value>
- </data>
- <data name="CheckRegex.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckRegex.Location" type="System.Drawing.Point, System.Drawing">
- <value>12, 299</value>
- </data>
- <data name="CheckRegex.Size" type="System.Drawing.Size, System.Drawing">
- <value>72, 16</value>
- </data>
- <data name="CheckRegex.TabIndex" type="System.Int32, mscorlib">
- <value>4</value>
- </data>
- <data name="CheckRegex.Text" xml:space="preserve">
- <value>正規表現</value>
- </data>
- <data name=">>CheckRegex.Name" xml:space="preserve">
- <value>CheckRegex</value>
- </data>
- <data name=">>CheckRegex.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckRegex.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckRegex.ZOrder" xml:space="preserve">
- <value>2</value>
- </data>
- <data name="TextBoxKeyword.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Left</value>
- </data>
- <data name="TextBoxKeyword.Location" type="System.Drawing.Point, System.Drawing">
- <value>142, 275</value>
- </data>
- <data name="TextBoxKeyword.Size" type="System.Drawing.Size, System.Drawing">
- <value>231, 19</value>
- </data>
- <data name="TextBoxKeyword.TabIndex" type="System.Int32, mscorlib">
- <value>3</value>
- </data>
- <data name=">>TextBoxKeyword.Name" xml:space="preserve">
- <value>TextBoxKeyword</value>
- </data>
- <data name=">>TextBoxKeyword.Type" xml:space="preserve">
- <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>TextBoxKeyword.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>TextBoxKeyword.ZOrder" xml:space="preserve">
- <value>3</value>
- </data>
- <data name="StatusLabelCount.Size" type="System.Drawing.Size, System.Drawing">
- <value>95, 17</value>
- </data>
- <data name="StatusLabelCount.Text" xml:space="preserve">
- <value>StatusLabelCount</value>
- </data>
- <data name="OK_Button.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Right</value>
- </data>
- <data name="OK_Button.Location" type="System.Drawing.Point, System.Drawing">
- <value>659, 298</value>
- </data>
- <data name="OK_Button.Size" type="System.Drawing.Size, System.Drawing">
- <value>67, 21</value>
- </data>
- <data name="OK_Button.TabIndex" type="System.Int32, mscorlib">
- <value>7</value>
- </data>
- <data name="OK_Button.Text" xml:space="preserve">
- <value>OK</value>
- </data>
- <data name=">>OK_Button.Name" xml:space="preserve">
- <value>OK_Button</value>
- </data>
- <data name=">>OK_Button.Type" xml:space="preserve">
- <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>OK_Button.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>OK_Button.ZOrder" xml:space="preserve">
- <value>4</value>
- </data>
- <metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>24, 10</value>
- </metadata>
- <data name="StatusStrip1.Location" type="System.Drawing.Point, System.Drawing">
- <value>0, 340</value>
- </data>
- <data name="StatusStrip1.Size" type="System.Drawing.Size, System.Drawing">
- <value>738, 22</value>
- </data>
- <data name="StatusStrip1.TabIndex" type="System.Int32, mscorlib">
- <value>7</value>
- </data>
- <data name="StatusStrip1.Text" xml:space="preserve">
- <value>StatusStrip1</value>
- </data>
- <data name=">>StatusStrip1.Name" xml:space="preserve">
- <value>StatusStrip1</value>
- </data>
- <data name=">>StatusStrip1.Type" xml:space="preserve">
- <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>StatusStrip1.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>StatusStrip1.ZOrder" xml:space="preserve">
- <value>5</value>
- </data>
- <data name="TabEventType.Alignment" type="System.Windows.Forms.TabAlignment, System.Windows.Forms">
- <value>Bottom</value>
- </data>
- <data name="TabEventType.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Top, Bottom, Left, Right</value>
- </data>
- <data name="TabEventType.Location" type="System.Drawing.Point, System.Drawing">
- <value>12, 12</value>
- </data>
- <data name="TabEventType.Size" type="System.Drawing.Size, System.Drawing">
- <value>714, 218</value>
- </data>
- <data name="TabEventType.TabIndex" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name=">>TabEventType.Name" xml:space="preserve">
- <value>TabEventType</value>
- </data>
- <data name=">>TabEventType.Type" xml:space="preserve">
- <value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>TabEventType.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>TabEventType.ZOrder" xml:space="preserve">
- <value>6</value>
- </data>
- <data name="ButtonRefresh.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Right</value>
- </data>
- <data name="ButtonRefresh.Location" type="System.Drawing.Point, System.Drawing">
- <value>600, 269</value>
- </data>
- <data name="ButtonRefresh.Size" type="System.Drawing.Size, System.Drawing">
- <value>126, 21</value>
- </data>
- <data name="ButtonRefresh.TabIndex" type="System.Int32, mscorlib">
- <value>6</value>
- </data>
- <data name="ButtonRefresh.Text" xml:space="preserve">
- <value>最新の情報に更新</value>
- </data>
- <data name=">>ButtonRefresh.Name" xml:space="preserve">
- <value>ButtonRefresh</value>
- </data>
- <data name=">>ButtonRefresh.Type" xml:space="preserve">
- <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ButtonRefresh.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>ButtonRefresh.ZOrder" xml:space="preserve">
- <value>7</value>
- </data>
- <data name="CheckExcludeMyEvent.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
- <value>Bottom, Left</value>
- </data>
- <data name="CheckExcludeMyEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckExcludeMyEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>12, 255</value>
- </data>
- <data name="CheckExcludeMyEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>197, 16</value>
- </data>
- <data name="CheckExcludeMyEvent.TabIndex" type="System.Int32, mscorlib">
- <value>1</value>
- </data>
- <data name="CheckExcludeMyEvent.Text" xml:space="preserve">
- <value>自分が発生させたイベントを除外する</value>
- </data>
- <data name=">>CheckExcludeMyEvent.Name" xml:space="preserve">
- <value>CheckExcludeMyEvent</value>
- </data>
- <data name=">>CheckExcludeMyEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckExcludeMyEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckExcludeMyEvent.ZOrder" xml:space="preserve">
- <value>8</value>
- </data>
- <metadata name="SaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>150, 10</value>
- </metadata>
- <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
- <value>True</value>
- </metadata>
- <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
- <value>39</value>
- </metadata>
- <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
- <value>96, 96</value>
- </data>
- <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>738, 362</value>
- </data>
- <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
- <value>Manual</value>
- </data>
- <data name="$this.Text" xml:space="preserve">
- <value>Events</value>
- </data>
- <data name=">>ColumnHeader1.Name" xml:space="preserve">
- <value>ColumnHeader1</value>
- </data>
- <data name=">>ColumnHeader1.Type" xml:space="preserve">
- <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ColumnHeader2.Name" xml:space="preserve">
- <value>ColumnHeader2</value>
- </data>
- <data name=">>ColumnHeader2.Type" xml:space="preserve">
- <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ColumnHeader3.Name" xml:space="preserve">
- <value>ColumnHeader3</value>
- </data>
- <data name=">>ColumnHeader3.Type" xml:space="preserve">
- <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ColumnHeader4.Name" xml:space="preserve">
- <value>ColumnHeader4</value>
- </data>
- <data name=">>ColumnHeader4.Type" xml:space="preserve">
- <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>StatusLabelCount.Name" xml:space="preserve">
- <value>StatusLabelCount</value>
- </data>
- <data name=">>StatusLabelCount.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>SaveFileDialog1.Name" xml:space="preserve">
- <value>SaveFileDialog1</value>
- </data>
- <data name=">>SaveFileDialog1.Type" xml:space="preserve">
- <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>$this.Name" xml:space="preserve">
- <value>EventViewerDialog</value>
- </data>
- <data name=">>$this.Type" xml:space="preserve">
- <value>OpenTween.OTBaseForm, OpenTween, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null</value>
- </data>
-</root>
\ No newline at end of file
private object? _growlNTreply;
private object? _growlNTdm;
private object? _growlNTnew;
- private object? _growlNTusevent;
private object? _growlApp;
private object? _targetConnector;
Reply = 0,
DirectMessage = 1,
Notify = 2,
- UserStreamEvent = 3,
}
public GrowlHelper(string appName)
_growlNTnew = _t.InvokeMember(null,
BindingFlags.CreateInstance, null, null, new object[] { "NOTIFY", "新着通知" }, CultureInfo.InvariantCulture);
- _growlNTusevent = _t.InvokeMember(null,
- BindingFlags.CreateInstance, null, null, new object[] { "USERSTREAM_EVENT", "UserStream Event" }, CultureInfo.InvariantCulture);
-
var encryptType =
_connector.GetType("Growl.Connector.Cryptography+SymmetricAlgorithmType").InvokeMember(
"PlainText", BindingFlags.GetField, null, null, null, CultureInfo.InvariantCulture);
_growlNTreply,
_growlNTdm,
_growlNTnew,
- _growlNTusevent,
};
mi.Invoke(_targetConnector, new object[] { _growlApp, arglist.ToArray(_t) });
NotifyType.Reply => "REPLY",
NotifyType.DirectMessage => "DIRECT_MESSAGE",
NotifyType.Notify => "NOTIFY",
- NotifyType.UserStreamEvent => "USERSTREAM_EVENT",
_ => "",
};
case "NOTIFY":
nt = NotifyType.Notify;
break;
- case "USERSTREAM_EVENT":
- nt = NotifyType.UserStreamEvent;
- break;
default:
return;
}
public PostClass? RetweetSource(long Id)
=> this.Posts.TryGetValue(Id, out var status) ? status : null;
- public void ScrubGeoReserve(long id, long upToStatusId)
- {
- lock (LockObj)
- this.ScrubGeo(id, upToStatusId);
- }
-
- private void ScrubGeo(long userId, long upToStatusId)
- {
- lock (LockObj)
- {
- var userPosts = from post in this.Posts.Values
- where post.UserId == userId && post.UserId <= upToStatusId
- select post;
-
- foreach (var p in userPosts)
- {
- p.PostGeo = null;
- }
-
- var userPosts2 = from tb in this.GetTabsInnerStorageType()
- from post in tb.Posts.Values
- where post.UserId == userId && post.UserId <= upToStatusId
- select post;
-
- foreach (var p in userPosts2)
- {
- p.PostGeo = null;
- }
- }
- }
-
public void RemovePostFromAllTabs(long statusId, bool setIsDeleted)
{
foreach (var tab in this.Tabs)
PublicSearch, //公式検索
List, //Lists
Related, //関連発言
- UserStream, //UserStream
UserTimeline, //UserTimeline
BlockIds, //Blocking/ids
Configuration, //Twitter Configuration読み込み
BlinkIcon,
}
- [Flags]
- public enum EVENTTYPE
- {
- None = 0,
- Favorite = 1,
- Unfavorite = 2,
- Follow = 4,
- ListMemberAdded = 8,
- ListMemberRemoved = 16,
- Block = 32,
- Unblock = 64,
- UserUpdate = 128,
- Deleted = 256,
- ListCreated = 512,
- ListUpdated = 1024,
- Unfollow = 2048,
- ListUserSubscribed = 4096,
- ListUserUnsubscribed = 8192,
- ListDestroyed = 16384,
- Mute = 32768,
- Unmute = 65536,
- QuotedTweet = 131072,
- Retweet = 262144,
-
- All = (None | Favorite | Unfavorite | Follow | ListMemberAdded | ListMemberRemoved |
- Block | Unblock | UserUpdate | Deleted | ListCreated | ListUpdated | Unfollow |
- ListUserSubscribed | ListUserUnsubscribed | ListDestroyed |
- Mute | Unmute | QuotedTweet | Retweet),
- }
-
public static _Assembly EntryAssembly { get; internal set; }
public static string FileVersion { get; internal set; }
<Compile Include="Api\DataModel\TwitterRateLimits.cs" />
<Compile Include="Api\DataModel\TwitterSearchResult.cs" />
<Compile Include="Api\DataModel\TwitterStatus.cs" />
- <Compile Include="Api\DataModel\TwitterStreamEvent.cs" />
<Compile Include="Api\DataModel\TwitterStreamMessage.cs" />
<Compile Include="Api\DataModel\TwitterTextConfiguration.cs" />
<Compile Include="Api\DataModel\TwitterUploadMediaResult.cs" />
<Compile Include="EncryptApiKeyDialog.Designer.cs">
<DependentUpon>EncryptApiKeyDialog.cs</DependentUpon>
</Compile>
- <Compile Include="EventViewerDialog.cs">
- <SubType>Form</SubType>
- </Compile>
- <Compile Include="EventViewerDialog.Designer.cs">
- <DependentUpon>EventViewerDialog.cs</DependentUpon>
- </Compile>
<Compile Include="Extensions.cs" />
<Compile Include="FilterDialog.cs">
<SubType>Form</SubType>
<EmbeddedResource Include="EncryptApiKeyDialog.resx">
<DependentUpon>EncryptApiKeyDialog.cs</DependentUpon>
</EmbeddedResource>
- <EmbeddedResource Include="EventViewerDialog.en.resx">
- <DependentUpon>EventViewerDialog.cs</DependentUpon>
- </EmbeddedResource>
- <EmbeddedResource Include="EventViewerDialog.resx">
- <DependentUpon>EventViewerDialog.cs</DependentUpon>
- </EmbeddedResource>
<EmbeddedResource Include="FilterDialog.en.resx">
<DependentUpon>FilterDialog.cs</DependentUpon>
</EmbeddedResource>
// または Visual Studio のようなツールを使用して自動生成されました。
// メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に
// ResGen を実行し直すか、または VS プロジェクトをビルドし直します。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
}
/// <summary>
- /// REST API上限 : に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo1 {
- get {
- return ResourceManager.GetString("ApiInfo1", resourceCulture);
- }
- }
-
- /// <summary>
- /// 画像投稿API残数: に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo10 {
- get {
- return ResourceManager.GetString("ApiInfo10", resourceCulture);
- }
- }
-
- /// <summary>
- /// 画像投稿APIリセット日時: に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo11 {
- get {
- return ResourceManager.GetString("ApiInfo11", resourceCulture);
- }
- }
-
- /// <summary>
- /// REST API残数 : に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo2 {
- get {
- return ResourceManager.GetString("ApiInfo2", resourceCulture);
- }
- }
-
- /// <summary>
- /// REST API残数リセット日時 : に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo3 {
- get {
- return ResourceManager.GetString("ApiInfo3", resourceCulture);
- }
- }
-
- /// <summary>
/// API情報 に類似しているローカライズされた文字列を検索します。
/// </summary>
internal static string ApiInfo4 {
}
/// <summary>
- /// UserStream接続 : に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo7 {
- get {
- return ResourceManager.GetString("ApiInfo7", resourceCulture);
- }
- }
-
- /// <summary>
- /// APIアクセス権限: に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo8 {
- get {
- return ResourceManager.GetString("ApiInfo8", resourceCulture);
- }
- }
-
- /// <summary>
- /// 画像投稿API上限: に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo9 {
- get {
- return ResourceManager.GetString("ApiInfo9", resourceCulture);
- }
- }
-
- /// <summary>
- /// (画像投稿後に取得/更新されます) に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string ApiInfo91 {
- get {
- return ResourceManager.GetString("ApiInfo91", resourceCulture);
- }
- }
-
- /// <summary>
/// (アイコン) に類似した型 System.Drawing.Icon のローカライズされたリソースを検索します。
/// </summary>
internal static System.Drawing.Icon At {
}
/// <summary>
- /// 反映間隔には数値(0~60)を指定してください。 に類似しているローカライズされた文字列を検索します。
- /// </summary>
- internal static string UserstreamPeriod_ValidatingText1 {
- get {
- return ResourceManager.GetString("UserstreamPeriod_ValidatingText1", resourceCulture);
- }
- }
-
- /// <summary>
/// タイトル: に類似しているローカライズされた文字列を検索します。
/// </summary>
internal static string VimeoInfoText1 {
<data name="SetFiltersText13" xml:space="preserve">
<value>CaseSensitive/</value>
</data>
- <data name="ApiInfo1" xml:space="preserve">
- <value>Upper bound : </value>
- </data>
- <data name="ApiInfo2" xml:space="preserve">
- <value>Remain count : </value>
- </data>
- <data name="ApiInfo3" xml:space="preserve">
- <value>Reset time : </value>
- </data>
<data name="ApiInfo4" xml:space="preserve">
<value>API Information</value>
</data>
<data name="GetFriendshipInfo8" xml:space="preserve">
<value>Confirm Unfollow</value>
</data>
- <data name="UserstreamPeriod_ValidatingText1" xml:space="preserve">
- <value>Refresh interval must be number 0 to 60</value>
- </data>
<data name="TabUsageTypeName_UserTimeline" xml:space="preserve">
<value>UserTimeline</value>
</data>
<data name="RegistrationEmail2" xml:space="preserve">
<value>Thank you for registration!</value>
</data>
- <data name="ApiInfo10" xml:space="preserve">
- <value>MediaRateLimit : </value>
- </data>
- <data name="ApiInfo11" xml:space="preserve">
- <value>MediaRateLimit(RestTime) : </value>
- </data>
- <data name="ApiInfo7" xml:space="preserve">
- <value>UserStreams : </value>
- </data>
- <data name="ApiInfo8" xml:space="preserve">
- <value>Access Level : </value>
- </data>
- <data name="ApiInfo9" xml:space="preserve">
- <value>MediaRateLimit(Remaining) : </value>
- </data>
- <data name="ApiInfo91" xml:space="preserve">
- <value>(unknown)</value>
- </data>
<data name="ButtonDelete_ClickText3" xml:space="preserve">
<value>Delete selected rules? ({0} nums)</value>
</data>
<data name="SetFiltersText13" xml:space="preserve">
<value>大小区別/</value>
</data>
- <data name="ApiInfo1" xml:space="preserve">
- <value>REST API上限 : </value>
- </data>
- <data name="ApiInfo2" xml:space="preserve">
- <value>REST API残数 : </value>
- </data>
- <data name="ApiInfo3" xml:space="preserve">
- <value>REST API残数リセット日時 : </value>
- </data>
<data name="ApiInfo4" xml:space="preserve">
<value>API情報</value>
</data>
<data name="GetFriendshipInfo8" xml:space="preserve">
<value>フォロー解除確認</value>
</data>
- <data name="UserstreamPeriod_ValidatingText1" xml:space="preserve">
- <value>反映間隔には数値(0~60)を指定してください。</value>
- </data>
<data name="TabUsageTypeName_UserTimeline" xml:space="preserve">
<value>UserTimeline</value>
</data>
<data name="TranslateDefaultLanguage" xml:space="preserve">
<value>ja</value>
</data>
- <data name="ApiInfo7" xml:space="preserve">
- <value>UserStream接続 : </value>
- </data>
<data name="Disabled" xml:space="preserve">
<value>無効</value>
</data>
<data name="RegistrationEmail2" xml:space="preserve">
<value>登録ありがとうございます。</value>
</data>
- <data name="ApiInfo10" xml:space="preserve">
- <value>画像投稿API残数:</value>
- </data>
- <data name="ApiInfo11" xml:space="preserve">
- <value>画像投稿APIリセット日時:</value>
- </data>
- <data name="ApiInfo8" xml:space="preserve">
- <value>APIアクセス権限:</value>
- </data>
- <data name="ApiInfo9" xml:space="preserve">
- <value>画像投稿API上限:</value>
- </data>
- <data name="ApiInfo91" xml:space="preserve">
- <value>(画像投稿後に取得/更新されます)</value>
- </data>
<data name="DeleteMenuText1" xml:space="preserve">
<value>削除(&D)</value>
</data>
* CHG: pic.twitter.com の画像URLのフォーマット変更に対応
* CHG: Instagramのサムネイルを表示するURLのパターンを追加
* CHG: YouTubeのサムネイルを表示するURLのパターンを追加 (thx @Hawklaver!)
+ * CHG: UserStreams関係の機能を削除
* FIX: DMの添付画像をブラウザで開く場合に使用するURLを変更
* FIX: 大文字アルファベットを含むハッシュタグがユーザー情報画面で正しくリンク化されない不具合を修正 (thx @naminodarie!)
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GetPeriodPanel));
- this.UserstreamPeriod = new System.Windows.Forms.TextBox();
- this.Label46 = new System.Windows.Forms.Label();
- this.LabelUserStreamActive = new System.Windows.Forms.Label();
this.Label21 = new System.Windows.Forms.Label();
this.UserTimelinePeriod = new System.Windows.Forms.TextBox();
this.TimelinePeriod = new System.Windows.Forms.TextBox();
this.CheckPostAndGet = new System.Windows.Forms.CheckBox();
this.Label5 = new System.Windows.Forms.Label();
this.DMPeriod = new System.Windows.Forms.TextBox();
- this.StartupUserstreamCheck = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
- // UserstreamPeriod
- //
- resources.ApplyResources(this.UserstreamPeriod, "UserstreamPeriod");
- this.UserstreamPeriod.Name = "UserstreamPeriod";
- this.UserstreamPeriod.Validating += new System.ComponentModel.CancelEventHandler(this.UserstreamPeriod_Validating);
- //
- // Label46
- //
- resources.ApplyResources(this.Label46, "Label46");
- this.Label46.Name = "Label46";
- //
- // LabelUserStreamActive
- //
- resources.ApplyResources(this.LabelUserStreamActive, "LabelUserStreamActive");
- this.LabelUserStreamActive.Name = "LabelUserStreamActive";
- //
// Label21
//
resources.ApplyResources(this.Label21, "Label21");
this.DMPeriod.Name = "DMPeriod";
this.DMPeriod.Validating += new System.ComponentModel.CancelEventHandler(this.DMPeriod_Validating);
//
- // StartupUserstreamCheck
- //
- resources.ApplyResources(this.StartupUserstreamCheck, "StartupUserstreamCheck");
- this.StartupUserstreamCheck.Name = "StartupUserstreamCheck";
- this.StartupUserstreamCheck.UseVisualStyleBackColor = true;
- //
// GetPeriodPanel
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.Controls.Add(this.UserstreamPeriod);
- this.Controls.Add(this.Label46);
- this.Controls.Add(this.LabelUserStreamActive);
this.Controls.Add(this.Label21);
this.Controls.Add(this.UserTimelinePeriod);
this.Controls.Add(this.TimelinePeriod);
this.Controls.Add(this.CheckPostAndGet);
this.Controls.Add(this.Label5);
this.Controls.Add(this.DMPeriod);
- this.Controls.Add(this.StartupUserstreamCheck);
this.Name = "GetPeriodPanel";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
-
- internal System.Windows.Forms.TextBox UserstreamPeriod;
- internal System.Windows.Forms.Label Label46;
- internal System.Windows.Forms.Label LabelUserStreamActive;
internal System.Windows.Forms.Label Label21;
internal System.Windows.Forms.TextBox UserTimelinePeriod;
internal System.Windows.Forms.TextBox TimelinePeriod;
internal System.Windows.Forms.CheckBox CheckPostAndGet;
internal System.Windows.Forms.Label Label5;
internal System.Windows.Forms.TextBox DMPeriod;
- internal System.Windows.Forms.CheckBox StartupUserstreamCheck;
}
}
public void LoadConfig(SettingCommon settingCommon)
{
- this.StartupUserstreamCheck.Checked = settingCommon.UserstreamStartup;
this.CheckPostAndGet.Checked = settingCommon.PostAndGet;
- this.UserstreamPeriod.Text = settingCommon.UserstreamPeriod.ToString();
this.TimelinePeriod.Text = settingCommon.TimelinePeriod.ToString();
this.ReplyPeriod.Text = settingCommon.ReplyPeriod.ToString();
this.DMPeriod.Text = settingCommon.DMPeriod.ToString();
public void SaveConfig(SettingCommon settingCommon)
{
- settingCommon.UserstreamStartup = this.StartupUserstreamCheck.Checked;
settingCommon.PostAndGet = this.CheckPostAndGet.Checked;
var arg = new IntervalChangedEventArgs();
var isIntervalChanged = false;
- var userstreamPeriod = int.Parse(this.UserstreamPeriod.Text);
- if (settingCommon.UserstreamPeriod != userstreamPeriod)
- {
- settingCommon.UserstreamPeriod = userstreamPeriod;
- arg.UserStream = true;
- isIntervalChanged = true;
- }
-
var timelinePeriod = int.Parse(this.TimelinePeriod.Text);
if (settingCommon.TimelinePeriod != timelinePeriod)
{
this.IntervalChanged?.Invoke(this, arg);
}
- private void UserstreamPeriod_Validating(object sender, CancelEventArgs e)
- {
- int prd;
- try
- {
- prd = int.Parse(UserstreamPeriod.Text);
- }
- catch (Exception)
- {
- MessageBox.Show(Properties.Resources.UserstreamPeriod_ValidatingText1);
- e.Cancel = true;
- return;
- }
-
- if (prd < 0 || prd > 60)
- {
- MessageBox.Show(Properties.Resources.UserstreamPeriod_ValidatingText1);
- e.Cancel = true;
- return;
- }
- }
-
private void TimelinePeriod_Validating(object sender, CancelEventArgs e)
{
int prd;
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="Label46.Size" type="System.Drawing.Size, System.Drawing">
- <value>191, 12</value>
- </data>
- <data name="Label46.Text" xml:space="preserve">
- <value>User Streams Refresh Interval (sec)</value>
- </data>
- <data name="LabelUserStreamActive.Size" type="System.Drawing.Size, System.Drawing">
- <value>395, 24</value>
- </data>
- <data name="LabelUserStreamActive.Text" xml:space="preserve">
- <value>UserStream is enable.
-Periodic fetching, Timeline/Mentions/DM, and Post&Fetch function is disable.</value>
- </data>
<data name="Label21.Text" xml:space="preserve">
<value>UserTimeline Interval (sec)</value>
</data>
<data name="Label5.Text" xml:space="preserve">
<value>DM Fetching Interval (sec.)</value>
</data>
- <data name="StartupUserstreamCheck.Size" type="System.Drawing.Size, System.Drawing">
- <value>149, 16</value>
- </data>
- <data name="StartupUserstreamCheck.Text" xml:space="preserve">
- <value>Auto connect at starting</value>
- </data>
</root>
\ No newline at end of file
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="UserstreamPeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>Disable</value>
- </data>
- <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="UserstreamPeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 23</value>
- </data>
- <data name="UserstreamPeriod.Size" type="System.Drawing.Size, System.Drawing">
- <value>65, 19</value>
- </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="UserstreamPeriod.TabIndex" type="System.Int32, mscorlib">
- <value>21</value>
- </data>
- <data name=">>UserstreamPeriod.Name" xml:space="preserve">
- <value>UserstreamPeriod</value>
- </data>
- <data name=">>UserstreamPeriod.Type" xml:space="preserve">
- <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>UserstreamPeriod.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>UserstreamPeriod.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="Label46.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="Label46.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="Label46.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 26</value>
- </data>
- <data name="Label46.Size" type="System.Drawing.Size, System.Drawing">
- <value>137, 12</value>
- </data>
- <data name="Label46.TabIndex" type="System.Int32, mscorlib">
- <value>20</value>
- </data>
- <data name="Label46.Text" xml:space="preserve">
- <value>UserStream反映間隔(秒)</value>
- </data>
- <data name=">>Label46.Name" xml:space="preserve">
- <value>Label46</value>
- </data>
- <data name=">>Label46.Type" xml:space="preserve">
- <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>Label46.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>Label46.ZOrder" xml:space="preserve">
- <value>1</value>
- </data>
- <data name="LabelUserStreamActive.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="LabelUserStreamActive.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="LabelUserStreamActive.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 303</value>
- </data>
- <data name="LabelUserStreamActive.Size" type="System.Drawing.Size, System.Drawing">
- <value>348, 36</value>
- </data>
- <data name="LabelUserStreamActive.TabIndex" type="System.Int32, mscorlib">
- <value>37</value>
- </data>
- <data name="LabelUserStreamActive.Text" xml:space="preserve">
- <value>UserStreamが有効です。
-タイムライン/Mentions/DMの定期更新、投稿時取得は停止しています。
-これらはUserStreamによりリアルタイム更新されます。</value>
- </data>
- <data name=">>LabelUserStreamActive.Name" xml:space="preserve">
- <value>LabelUserStreamActive</value>
- </data>
- <data name=">>LabelUserStreamActive.Type" xml:space="preserve">
- <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>LabelUserStreamActive.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>LabelUserStreamActive.ZOrder" xml:space="preserve">
- <value>2</value>
- </data>
<data name="Label21.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
+ <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Label21.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Label21.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 217</value>
+ <value>23, 182</value>
</data>
<data name="Label21.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 12</value>
<value>$this</value>
</data>
<data name=">>Label21.ZOrder" xml:space="preserve">
- <value>3</value>
+ <value>0</value>
</data>
<data name="UserTimelinePeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="UserTimelinePeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 214</value>
+ <value>259, 179</value>
</data>
<data name="UserTimelinePeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>UserTimelinePeriod.ZOrder" xml:space="preserve">
- <value>4</value>
+ <value>1</value>
</data>
<data name="TimelinePeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="TimelinePeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 52</value>
+ <value>259, 17</value>
</data>
<data name="TimelinePeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>TimelinePeriod.ZOrder" xml:space="preserve">
- <value>5</value>
+ <value>2</value>
</data>
<data name="Label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="Label3.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 55</value>
+ <value>23, 20</value>
</data>
<data name="Label3.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 12</value>
<value>$this</value>
</data>
<data name=">>Label3.ZOrder" xml:space="preserve">
- <value>6</value>
+ <value>3</value>
</data>
<data name="LabelPostAndGet.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>$this</value>
</data>
<data name=">>LabelPostAndGet.ZOrder" xml:space="preserve">
- <value>7</value>
+ <value>4</value>
</data>
<data name="Label33.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="Label33.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 188</value>
+ <value>23, 153</value>
</data>
<data name="Label33.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 12</value>
<value>$this</value>
</data>
<data name=">>Label33.ZOrder" xml:space="preserve">
- <value>8</value>
+ <value>5</value>
</data>
<data name="ListsPeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="ListsPeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 185</value>
+ <value>259, 150</value>
</data>
<data name="ListsPeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>ListsPeriod.ZOrder" xml:space="preserve">
- <value>9</value>
+ <value>6</value>
</data>
<data name="Label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="Label7.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 159</value>
+ <value>23, 124</value>
</data>
<data name="Label7.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 12</value>
<value>$this</value>
</data>
<data name=">>Label7.ZOrder" xml:space="preserve">
- <value>10</value>
+ <value>7</value>
</data>
<data name="PubSearchPeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="PubSearchPeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 156</value>
+ <value>259, 121</value>
</data>
<data name="PubSearchPeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>PubSearchPeriod.ZOrder" xml:space="preserve">
- <value>11</value>
+ <value>8</value>
</data>
<data name="Label69.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="Label69.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 101</value>
+ <value>23, 66</value>
</data>
<data name="Label69.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 12</value>
<value>$this</value>
</data>
<data name=">>Label69.ZOrder" xml:space="preserve">
- <value>12</value>
+ <value>9</value>
</data>
<data name="ReplyPeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="ReplyPeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 98</value>
+ <value>259, 63</value>
</data>
<data name="ReplyPeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>ReplyPeriod.ZOrder" xml:space="preserve">
- <value>13</value>
+ <value>10</value>
</data>
<data name="CheckPostAndGet.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="CheckPostAndGet.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 73</value>
+ <value>45, 38</value>
</data>
<data name="CheckPostAndGet.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 16</value>
<value>$this</value>
</data>
<data name=">>CheckPostAndGet.ZOrder" xml:space="preserve">
- <value>14</value>
+ <value>11</value>
</data>
<data name="Label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>NoControl</value>
</data>
<data name="Label5.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 130</value>
+ <value>23, 95</value>
</data>
<data name="Label5.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 12</value>
<value>$this</value>
</data>
<data name=">>Label5.ZOrder" xml:space="preserve">
- <value>15</value>
+ <value>12</value>
</data>
<data name="DMPeriod.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
</data>
<data name="DMPeriod.Location" type="System.Drawing.Point, System.Drawing">
- <value>259, 127</value>
+ <value>259, 92</value>
</data>
<data name="DMPeriod.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 19</value>
<value>$this</value>
</data>
<data name=">>DMPeriod.ZOrder" xml:space="preserve">
- <value>16</value>
- </data>
- <data name="StartupUserstreamCheck.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="StartupUserstreamCheck.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="StartupUserstreamCheck.Location" type="System.Drawing.Point, System.Drawing">
- <value>330, 25</value>
- </data>
- <data name="StartupUserstreamCheck.Size" type="System.Drawing.Size, System.Drawing">
- <value>117, 16</value>
- </data>
- <data name="StartupUserstreamCheck.TabIndex" type="System.Int32, mscorlib">
- <value>22</value>
- </data>
- <data name="StartupUserstreamCheck.Text" xml:space="preserve">
- <value>起動時に自動接続</value>
- </data>
- <data name=">>StartupUserstreamCheck.Name" xml:space="preserve">
- <value>StartupUserstreamCheck</value>
- </data>
- <data name=">>StartupUserstreamCheck.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>StartupUserstreamCheck.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>StartupUserstreamCheck.ZOrder" xml:space="preserve">
- <value>17</value>
+ <value>13</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
<value>GetPeriodPanel</value>
</data>
<data name=">>$this.Type" xml:space="preserve">
- <value>OpenTween.Setting.Panel.SettingPanelBase, OpenTween, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null</value>
+ <value>OpenTween.Setting.Panel.SettingPanelBase, OpenTween, Version=2.4.3.1, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>
\ No newline at end of file
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NotifyPanel));
- this.IsRemoveSameFavEventCheckBox = new System.Windows.Forms.CheckBox();
- this.CheckUserUpdateEvent = new System.Windows.Forms.CheckBox();
- this.Label35 = new System.Windows.Forms.Label();
- this.ComboBoxEventNotifySound = new System.Windows.Forms.ComboBox();
- this.CheckFavEventUnread = new System.Windows.Forms.CheckBox();
- this.CheckListCreatedEvent = new System.Windows.Forms.CheckBox();
- this.CheckBlockEvent = new System.Windows.Forms.CheckBox();
- this.CheckForceEventNotify = new System.Windows.Forms.CheckBox();
- this.CheckListMemberRemovedEvent = new System.Windows.Forms.CheckBox();
- this.CheckListMemberAddedEvent = new System.Windows.Forms.CheckBox();
- this.CheckFollowEvent = new System.Windows.Forms.CheckBox();
- this.CheckUnfavoritesEvent = new System.Windows.Forms.CheckBox();
- this.CheckFavoritesEvent = new System.Windows.Forms.CheckBox();
- this.CheckEventNotify = new System.Windows.Forms.CheckBox();
- this.CheckQuotedTweetEvent = new System.Windows.Forms.CheckBox();
- this.CheckRetweetEvent = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
- // IsRemoveSameFavEventCheckBox
- //
- resources.ApplyResources(this.IsRemoveSameFavEventCheckBox, "IsRemoveSameFavEventCheckBox");
- this.IsRemoveSameFavEventCheckBox.Name = "IsRemoveSameFavEventCheckBox";
- this.IsRemoveSameFavEventCheckBox.UseVisualStyleBackColor = true;
- //
- // CheckUserUpdateEvent
- //
- resources.ApplyResources(this.CheckUserUpdateEvent, "CheckUserUpdateEvent");
- this.CheckUserUpdateEvent.Checked = true;
- this.CheckUserUpdateEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckUserUpdateEvent.Name = "CheckUserUpdateEvent";
- this.CheckUserUpdateEvent.ThreeState = true;
- this.CheckUserUpdateEvent.UseVisualStyleBackColor = true;
- //
- // Label35
- //
- resources.ApplyResources(this.Label35, "Label35");
- this.Label35.Name = "Label35";
- //
- // ComboBoxEventNotifySound
- //
- this.ComboBoxEventNotifySound.FormattingEnabled = true;
- resources.ApplyResources(this.ComboBoxEventNotifySound, "ComboBoxEventNotifySound");
- this.ComboBoxEventNotifySound.Name = "ComboBoxEventNotifySound";
- //
- // CheckFavEventUnread
- //
- resources.ApplyResources(this.CheckFavEventUnread, "CheckFavEventUnread");
- this.CheckFavEventUnread.Checked = true;
- this.CheckFavEventUnread.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckFavEventUnread.Name = "CheckFavEventUnread";
- this.CheckFavEventUnread.UseVisualStyleBackColor = true;
- //
- // CheckListCreatedEvent
- //
- resources.ApplyResources(this.CheckListCreatedEvent, "CheckListCreatedEvent");
- this.CheckListCreatedEvent.Checked = true;
- this.CheckListCreatedEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckListCreatedEvent.Name = "CheckListCreatedEvent";
- this.CheckListCreatedEvent.ThreeState = true;
- this.CheckListCreatedEvent.UseVisualStyleBackColor = true;
- //
- // CheckBlockEvent
- //
- resources.ApplyResources(this.CheckBlockEvent, "CheckBlockEvent");
- this.CheckBlockEvent.Checked = true;
- this.CheckBlockEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckBlockEvent.Name = "CheckBlockEvent";
- this.CheckBlockEvent.ThreeState = true;
- this.CheckBlockEvent.UseVisualStyleBackColor = true;
- //
- // CheckForceEventNotify
- //
- resources.ApplyResources(this.CheckForceEventNotify, "CheckForceEventNotify");
- this.CheckForceEventNotify.Checked = true;
- this.CheckForceEventNotify.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckForceEventNotify.Name = "CheckForceEventNotify";
- this.CheckForceEventNotify.UseVisualStyleBackColor = true;
- //
- // CheckListMemberRemovedEvent
- //
- resources.ApplyResources(this.CheckListMemberRemovedEvent, "CheckListMemberRemovedEvent");
- this.CheckListMemberRemovedEvent.Checked = true;
- this.CheckListMemberRemovedEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckListMemberRemovedEvent.Name = "CheckListMemberRemovedEvent";
- this.CheckListMemberRemovedEvent.ThreeState = true;
- this.CheckListMemberRemovedEvent.UseVisualStyleBackColor = true;
- //
- // CheckListMemberAddedEvent
- //
- resources.ApplyResources(this.CheckListMemberAddedEvent, "CheckListMemberAddedEvent");
- this.CheckListMemberAddedEvent.Checked = true;
- this.CheckListMemberAddedEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckListMemberAddedEvent.Name = "CheckListMemberAddedEvent";
- this.CheckListMemberAddedEvent.ThreeState = true;
- this.CheckListMemberAddedEvent.UseVisualStyleBackColor = true;
- //
- // CheckFollowEvent
- //
- resources.ApplyResources(this.CheckFollowEvent, "CheckFollowEvent");
- this.CheckFollowEvent.Checked = true;
- this.CheckFollowEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckFollowEvent.Name = "CheckFollowEvent";
- this.CheckFollowEvent.ThreeState = true;
- this.CheckFollowEvent.UseVisualStyleBackColor = true;
- //
- // CheckUnfavoritesEvent
- //
- resources.ApplyResources(this.CheckUnfavoritesEvent, "CheckUnfavoritesEvent");
- this.CheckUnfavoritesEvent.Checked = true;
- this.CheckUnfavoritesEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckUnfavoritesEvent.Name = "CheckUnfavoritesEvent";
- this.CheckUnfavoritesEvent.ThreeState = true;
- this.CheckUnfavoritesEvent.UseVisualStyleBackColor = true;
- //
- // CheckFavoritesEvent
- //
- resources.ApplyResources(this.CheckFavoritesEvent, "CheckFavoritesEvent");
- this.CheckFavoritesEvent.Checked = true;
- this.CheckFavoritesEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckFavoritesEvent.Name = "CheckFavoritesEvent";
- this.CheckFavoritesEvent.ThreeState = true;
- this.CheckFavoritesEvent.UseVisualStyleBackColor = true;
- //
- // CheckEventNotify
- //
- resources.ApplyResources(this.CheckEventNotify, "CheckEventNotify");
- this.CheckEventNotify.Checked = true;
- this.CheckEventNotify.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckEventNotify.Name = "CheckEventNotify";
- this.CheckEventNotify.UseVisualStyleBackColor = true;
- this.CheckEventNotify.CheckedChanged += new System.EventHandler(this.CheckEventNotify_CheckedChanged);
- //
- // CheckQuotedTweetEvent
- //
- resources.ApplyResources(this.CheckQuotedTweetEvent, "CheckQuotedTweetEvent");
- this.CheckQuotedTweetEvent.Checked = true;
- this.CheckQuotedTweetEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckQuotedTweetEvent.Name = "CheckQuotedTweetEvent";
- this.CheckQuotedTweetEvent.ThreeState = true;
- this.CheckQuotedTweetEvent.UseVisualStyleBackColor = true;
- //
- // CheckRetweetEvent
- //
- resources.ApplyResources(this.CheckRetweetEvent, "CheckRetweetEvent");
- this.CheckRetweetEvent.Checked = true;
- this.CheckRetweetEvent.CheckState = System.Windows.Forms.CheckState.Checked;
- this.CheckRetweetEvent.Name = "CheckRetweetEvent";
- this.CheckRetweetEvent.ThreeState = true;
- this.CheckRetweetEvent.UseVisualStyleBackColor = true;
- //
// NotifyPanel
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.Controls.Add(this.IsRemoveSameFavEventCheckBox);
- this.Controls.Add(this.CheckUserUpdateEvent);
- this.Controls.Add(this.Label35);
- this.Controls.Add(this.ComboBoxEventNotifySound);
- this.Controls.Add(this.CheckFavEventUnread);
- this.Controls.Add(this.CheckListCreatedEvent);
- this.Controls.Add(this.CheckBlockEvent);
- this.Controls.Add(this.CheckForceEventNotify);
- this.Controls.Add(this.CheckListMemberRemovedEvent);
- this.Controls.Add(this.CheckListMemberAddedEvent);
- this.Controls.Add(this.CheckFollowEvent);
- this.Controls.Add(this.CheckUnfavoritesEvent);
- this.Controls.Add(this.CheckFavoritesEvent);
- this.Controls.Add(this.CheckEventNotify);
- this.Controls.Add(this.CheckRetweetEvent);
- this.Controls.Add(this.CheckQuotedTweetEvent);
this.Name = "NotifyPanel";
this.ResumeLayout(false);
- this.PerformLayout();
}
#endregion
-
- internal System.Windows.Forms.CheckBox IsRemoveSameFavEventCheckBox;
- internal System.Windows.Forms.CheckBox CheckUserUpdateEvent;
- internal System.Windows.Forms.Label Label35;
- internal System.Windows.Forms.ComboBox ComboBoxEventNotifySound;
- internal System.Windows.Forms.CheckBox CheckFavEventUnread;
- internal System.Windows.Forms.CheckBox CheckListCreatedEvent;
- internal System.Windows.Forms.CheckBox CheckBlockEvent;
- internal System.Windows.Forms.CheckBox CheckForceEventNotify;
- internal System.Windows.Forms.CheckBox CheckListMemberRemovedEvent;
- internal System.Windows.Forms.CheckBox CheckListMemberAddedEvent;
- internal System.Windows.Forms.CheckBox CheckFollowEvent;
- internal System.Windows.Forms.CheckBox CheckUnfavoritesEvent;
- internal System.Windows.Forms.CheckBox CheckFavoritesEvent;
- internal System.Windows.Forms.CheckBox CheckEventNotify;
- internal System.Windows.Forms.CheckBox CheckQuotedTweetEvent;
- internal System.Windows.Forms.CheckBox CheckRetweetEvent;
}
}
using System;
using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
using System.Linq;
using System.Text;
-using System.Windows.Forms;
-using System.IO;
namespace OpenTween.Setting.Panel
{
public void LoadConfig(SettingCommon settingCommon)
{
- this.ApplyEventNotifyFlag(settingCommon.EventNotifyEnabled, settingCommon.EventNotifyFlag, settingCommon.IsMyEventNotifyFlag);
- this.CheckForceEventNotify.Checked = settingCommon.ForceEventNotify;
- this.CheckFavEventUnread.Checked = settingCommon.FavEventUnread;
-
- this.SoundFileListup();
-
- var soundFile = settingCommon.EventSoundFile ?? "";
- var soundFileIdx = this.ComboBoxEventNotifySound.Items.IndexOf(soundFile);
- if (soundFileIdx != -1)
- this.ComboBoxEventNotifySound.SelectedIndex = soundFileIdx;
-
- this.IsRemoveSameFavEventCheckBox.Checked = settingCommon.IsRemoveSameEvent;
}
public void SaveConfig(SettingCommon settingCommon)
{
- settingCommon.EventNotifyEnabled = this.CheckEventNotify.Checked;
- this.GetEventNotifyFlag(ref settingCommon.EventNotifyFlag, ref settingCommon.IsMyEventNotifyFlag);
- settingCommon.ForceEventNotify = this.CheckForceEventNotify.Checked;
- settingCommon.FavEventUnread = this.CheckFavEventUnread.Checked;
- settingCommon.EventSoundFile = (string)this.ComboBoxEventNotifySound.SelectedItem;
- settingCommon.IsRemoveSameEvent = this.IsRemoveSameFavEventCheckBox.Checked;
- }
-
- private void SoundFileListup()
- {
- this.ComboBoxEventNotifySound.Items.Clear();
- this.ComboBoxEventNotifySound.Items.Add("");
- var oDir = new DirectoryInfo(Application.StartupPath + Path.DirectorySeparatorChar);
- if (Directory.Exists(Path.Combine(Application.StartupPath, "Sounds")))
- {
- oDir = oDir.GetDirectories("Sounds")[0];
- }
- foreach (var oFile in oDir.GetFiles("*.wav"))
- {
- this.ComboBoxEventNotifySound.Items.Add(oFile.Name);
- }
- }
-
- private class EventCheckboxTblElement
- {
- public CheckBox CheckBox = null!;
- public MyCommon.EVENTTYPE Type;
- }
-
- private EventCheckboxTblElement[] GetEventCheckboxTable()
- {
- return new[]
- {
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckFavoritesEvent,
- Type = MyCommon.EVENTTYPE.Favorite,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckUnfavoritesEvent,
- Type = MyCommon.EVENTTYPE.Unfavorite,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckFollowEvent,
- Type = MyCommon.EVENTTYPE.Follow,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckListMemberAddedEvent,
- Type = MyCommon.EVENTTYPE.ListMemberAdded,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckListMemberRemovedEvent,
- Type = MyCommon.EVENTTYPE.ListMemberRemoved,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckBlockEvent,
- Type = MyCommon.EVENTTYPE.Block,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckUserUpdateEvent,
- Type = MyCommon.EVENTTYPE.UserUpdate,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckListCreatedEvent,
- Type = MyCommon.EVENTTYPE.ListCreated,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckQuotedTweetEvent,
- Type = MyCommon.EVENTTYPE.QuotedTweet,
- },
- new EventCheckboxTblElement
- {
- CheckBox = this.CheckRetweetEvent,
- Type = MyCommon.EVENTTYPE.Retweet,
- },
- };
- }
-
- private void GetEventNotifyFlag(ref MyCommon.EVENTTYPE eventnotifyflag, ref MyCommon.EVENTTYPE isMyeventnotifyflag)
- {
- var evt = MyCommon.EVENTTYPE.None;
- var myevt = MyCommon.EVENTTYPE.None;
-
- foreach (var tbl in GetEventCheckboxTable())
- {
- switch (tbl.CheckBox.CheckState)
- {
- case CheckState.Checked:
- evt |= tbl.Type;
- myevt |= tbl.Type;
- break;
- case CheckState.Indeterminate:
- evt |= tbl.Type;
- break;
- case CheckState.Unchecked:
- break;
- }
- }
- eventnotifyflag = evt;
- isMyeventnotifyflag = myevt;
- }
-
- private void ApplyEventNotifyFlag(bool rootEnabled, MyCommon.EVENTTYPE eventnotifyflag, MyCommon.EVENTTYPE isMyeventnotifyflag)
- {
- var evt = eventnotifyflag;
- var myevt = isMyeventnotifyflag;
-
- this.CheckEventNotify.Checked = rootEnabled;
-
- foreach (var tbl in GetEventCheckboxTable())
- {
- if ((evt & tbl.Type) != 0)
- {
- if ((myevt & tbl.Type) != 0)
- {
- tbl.CheckBox.CheckState = CheckState.Checked;
- }
- else
- {
- tbl.CheckBox.CheckState = CheckState.Indeterminate;
- }
- }
- else
- {
- tbl.CheckBox.CheckState = CheckState.Unchecked;
- }
- tbl.CheckBox.Enabled = rootEnabled;
- }
- }
-
- private void CheckEventNotify_CheckedChanged(object sender, EventArgs e)
- {
- foreach (var tbl in this.GetEventCheckboxTable())
- {
- tbl.CheckBox.Enabled = this.CheckEventNotify.Checked;
- }
}
}
}
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
- <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="IsRemoveSameFavEventCheckBox.Size" type="System.Drawing.Size, System.Drawing">
- <value>254, 16</value>
- </data>
- <data name="IsRemoveSameFavEventCheckBox.Text" xml:space="preserve">
- <value>Ignore duplicated Favorite/Unfavorite events</value>
- </data>
- <data name="CheckUserUpdateEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 195</value>
- </data>
- <data name="CheckUserUpdateEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>85, 16</value>
- </data>
- <data name="CheckUserUpdateEvent.Text" xml:space="preserve">
- <value>Bio updated</value>
- </data>
- <data name="Label35.Size" type="System.Drawing.Size, System.Drawing">
- <value>132, 12</value>
- </data>
- <data name="Label35.Text" xml:space="preserve">
- <value>Play sound notify events</value>
- </data>
- <data name="CheckFavEventUnread.Size" type="System.Drawing.Size, System.Drawing">
- <value>190, 16</value>
- </data>
- <data name="CheckFavEventUnread.Text" xml:space="preserve">
- <value>Mark favorited tweets as unread</value>
- </data>
- <data name="CheckListCreatedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 220</value>
- </data>
- <data name="CheckListCreatedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>91, 16</value>
- </data>
- <data name="CheckListCreatedEvent.Text" xml:space="preserve">
- <value>Lists created</value>
- </data>
- <data name="CheckBlockEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 170</value>
- </data>
- <data name="CheckBlockEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>68, 16</value>
- </data>
- <data name="CheckBlockEvent.Text" xml:space="preserve">
- <value>Blocking</value>
- </data>
- <data name="CheckForceEventNotify.Size" type="System.Drawing.Size, System.Drawing">
- <value>234, 16</value>
- </data>
- <data name="CheckForceEventNotify.Text" xml:space="preserve">
- <value>Notify Events even if disable alert popup</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 145</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>147, 16</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Text" xml:space="preserve">
- <value>Removed from the Lists</value>
- </data>
- <data name="CheckListMemberAddedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 120</value>
- </data>
- <data name="CheckListMemberAddedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>119, 16</value>
- </data>
- <data name="CheckListMemberAddedEvent.Text" xml:space="preserve">
- <value>Added to the Lists</value>
- </data>
- <data name="CheckFollowEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 95</value>
- </data>
- <data name="CheckFollowEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>69, 16</value>
- </data>
- <data name="CheckFollowEvent.Text" xml:space="preserve">
- <value>Followed</value>
- </data>
- <data name="CheckUnfavoritesEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 70</value>
- </data>
- <data name="CheckUnfavoritesEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>94, 16</value>
- </data>
- <data name="CheckUnfavoritesEvent.Text" xml:space="preserve">
- <value>Fav Removed</value>
- </data>
- <data name="CheckFavoritesEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>45, 48</value>
- </data>
- <data name="CheckFavoritesEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>79, 16</value>
- </data>
- <data name="CheckFavoritesEvent.Text" xml:space="preserve">
- <value>Fav Added</value>
- </data>
- <data name="CheckEventNotify.Size" type="System.Drawing.Size, System.Drawing">
- <value>189, 16</value>
- </data>
- <data name="CheckEventNotify.Text" xml:space="preserve">
- <value>Notify Events(Only UserStream)</value>
- </data>
- <data name="CheckQuotedTweetEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>60, 16</value>
- </data>
- <data name="CheckQuotedTweetEvent.Text" xml:space="preserve">
- <value>Quotes</value>
- </data>
- <data name="CheckRetweetEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>72, 16</value>
- </data>
- <data name="CheckRetweetEvent.Text" xml:space="preserve">
- <value>Retweets</value>
- </data>
</root>
\ No newline at end of file
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
- <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="IsRemoveSameFavEventCheckBox.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="IsRemoveSameFavEventCheckBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
- <data name="IsRemoveSameFavEventCheckBox.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 298</value>
- </data>
- <data name="IsRemoveSameFavEventCheckBox.Size" type="System.Drawing.Size, System.Drawing">
- <value>260, 16</value>
- </data>
- <data name="IsRemoveSameFavEventCheckBox.TabIndex" type="System.Int32, mscorlib">
- <value>28</value>
- </data>
- <data name="IsRemoveSameFavEventCheckBox.Text" xml:space="preserve">
- <value>重複するFav追加、Fav削除のイベントは無視する</value>
- </data>
- <data name=">>IsRemoveSameFavEventCheckBox.Name" xml:space="preserve">
- <value>IsRemoveSameFavEventCheckBox</value>
- </data>
- <data name=">>IsRemoveSameFavEventCheckBox.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>IsRemoveSameFavEventCheckBox.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>IsRemoveSameFavEventCheckBox.ZOrder" xml:space="preserve">
- <value>0</value>
- </data>
- <data name="CheckUserUpdateEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckUserUpdateEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckUserUpdateEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 198</value>
- </data>
- <data name="CheckUserUpdateEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>189, 16</value>
- </data>
- <data name="CheckUserUpdateEvent.TabIndex" type="System.Int32, mscorlib">
- <value>22</value>
- </data>
- <data name="CheckUserUpdateEvent.Text" xml:space="preserve">
- <value>ユーザーのプロフィールが更新された</value>
- </data>
- <data name=">>CheckUserUpdateEvent.Name" xml:space="preserve">
- <value>CheckUserUpdateEvent</value>
- </data>
- <data name=">>CheckUserUpdateEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckUserUpdateEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckUserUpdateEvent.ZOrder" xml:space="preserve">
- <value>1</value>
- </data>
- <data name="Label35.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="Label35.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="Label35.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 326</value>
- </data>
- <data name="Label35.Size" type="System.Drawing.Size, System.Drawing">
- <value>176, 12</value>
- </data>
- <data name="Label35.TabIndex" type="System.Int32, mscorlib">
- <value>26</value>
- </data>
- <data name="Label35.Text" xml:space="preserve">
- <value>イベント通知の際に再生するサウンド</value>
- </data>
- <data name=">>Label35.Name" xml:space="preserve">
- <value>Label35</value>
- </data>
- <data name=">>Label35.Type" xml:space="preserve">
- <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>Label35.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>Label35.ZOrder" xml:space="preserve">
- <value>2</value>
- </data>
- <data name="ComboBoxEventNotifySound.Location" type="System.Drawing.Point, System.Drawing">
- <value>286, 323</value>
- </data>
- <data name="ComboBoxEventNotifySound.Size" type="System.Drawing.Size, System.Drawing">
- <value>188, 20</value>
- </data>
- <data name="ComboBoxEventNotifySound.TabIndex" type="System.Int32, mscorlib">
- <value>27</value>
- </data>
- <data name=">>ComboBoxEventNotifySound.Name" xml:space="preserve">
- <value>ComboBoxEventNotifySound</value>
- </data>
- <data name=">>ComboBoxEventNotifySound.Type" xml:space="preserve">
- <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ComboBoxEventNotifySound.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>ComboBoxEventNotifySound.ZOrder" xml:space="preserve">
- <value>3</value>
- </data>
- <data name="CheckFavEventUnread.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckFavEventUnread.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckFavEventUnread.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 273</value>
- </data>
- <data name="CheckFavEventUnread.Size" type="System.Drawing.Size, System.Drawing">
- <value>271, 16</value>
- </data>
- <data name="CheckFavEventUnread.TabIndex" type="System.Int32, mscorlib">
- <value>25</value>
- </data>
- <data name="CheckFavEventUnread.Text" xml:space="preserve">
- <value>Favoritesイベント受信の際に書き込みを未読に戻す</value>
- </data>
- <data name=">>CheckFavEventUnread.Name" xml:space="preserve">
- <value>CheckFavEventUnread</value>
- </data>
- <data name=">>CheckFavEventUnread.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckFavEventUnread.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckFavEventUnread.ZOrder" xml:space="preserve">
- <value>4</value>
- </data>
- <data name="CheckListCreatedEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckListCreatedEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckListCreatedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 223</value>
- </data>
- <data name="CheckListCreatedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>134, 16</value>
- </data>
- <data name="CheckListCreatedEvent.TabIndex" type="System.Int32, mscorlib">
- <value>23</value>
- </data>
- <data name="CheckListCreatedEvent.Text" xml:space="preserve">
- <value>Listsの作成に成功した</value>
- </data>
- <data name=">>CheckListCreatedEvent.Name" xml:space="preserve">
- <value>CheckListCreatedEvent</value>
- </data>
- <data name=">>CheckListCreatedEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckListCreatedEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckListCreatedEvent.ZOrder" xml:space="preserve">
- <value>5</value>
- </data>
- <data name="CheckBlockEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckBlockEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckBlockEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 173</value>
- </data>
- <data name="CheckBlockEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>211, 16</value>
- </data>
- <data name="CheckBlockEvent.TabIndex" type="System.Int32, mscorlib">
- <value>21</value>
- </data>
- <data name="CheckBlockEvent.Text" xml:space="preserve">
- <value>他のユーザーに対するブロックが成功した</value>
- </data>
- <data name=">>CheckBlockEvent.Name" xml:space="preserve">
- <value>CheckBlockEvent</value>
- </data>
- <data name=">>CheckBlockEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckBlockEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckBlockEvent.ZOrder" xml:space="preserve">
- <value>6</value>
- </data>
- <data name="CheckForceEventNotify.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckForceEventNotify.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckForceEventNotify.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 248</value>
- </data>
- <data name="CheckForceEventNotify.Size" type="System.Drawing.Size, System.Drawing">
- <value>213, 16</value>
- </data>
- <data name="CheckForceEventNotify.TabIndex" type="System.Int32, mscorlib">
- <value>24</value>
- </data>
- <data name="CheckForceEventNotify.Text" xml:space="preserve">
- <value>新着通知が無効でもイベントを通知する</value>
- </data>
- <data name=">>CheckForceEventNotify.Name" xml:space="preserve">
- <value>CheckForceEventNotify</value>
- </data>
- <data name=">>CheckForceEventNotify.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckForceEventNotify.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckForceEventNotify.ZOrder" xml:space="preserve">
- <value>7</value>
- </data>
- <data name="CheckListMemberRemovedEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckListMemberRemovedEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 148</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>119, 16</value>
- </data>
- <data name="CheckListMemberRemovedEvent.TabIndex" type="System.Int32, mscorlib">
- <value>20</value>
- </data>
- <data name="CheckListMemberRemovedEvent.Text" xml:space="preserve">
- <value>Listsから削除された</value>
- </data>
- <data name=">>CheckListMemberRemovedEvent.Name" xml:space="preserve">
- <value>CheckListMemberRemovedEvent</value>
- </data>
- <data name=">>CheckListMemberRemovedEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckListMemberRemovedEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckListMemberRemovedEvent.ZOrder" xml:space="preserve">
- <value>8</value>
- </data>
- <data name="CheckListMemberAddedEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckListMemberAddedEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckListMemberAddedEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 123</value>
- </data>
- <data name="CheckListMemberAddedEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>110, 16</value>
- </data>
- <data name="CheckListMemberAddedEvent.TabIndex" type="System.Int32, mscorlib">
- <value>19</value>
- </data>
- <data name="CheckListMemberAddedEvent.Text" xml:space="preserve">
- <value>Listsに追加された</value>
- </data>
- <data name=">>CheckListMemberAddedEvent.Name" xml:space="preserve">
- <value>CheckListMemberAddedEvent</value>
- </data>
- <data name=">>CheckListMemberAddedEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckListMemberAddedEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckListMemberAddedEvent.ZOrder" xml:space="preserve">
- <value>9</value>
- </data>
- <data name="CheckFollowEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckFollowEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckFollowEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 98</value>
- </data>
- <data name="CheckFollowEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>87, 16</value>
- </data>
- <data name="CheckFollowEvent.TabIndex" type="System.Int32, mscorlib">
- <value>18</value>
- </data>
- <data name="CheckFollowEvent.Text" xml:space="preserve">
- <value>フォローされた</value>
- </data>
- <data name=">>CheckFollowEvent.Name" xml:space="preserve">
- <value>CheckFollowEvent</value>
- </data>
- <data name=">>CheckFollowEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckFollowEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckFollowEvent.ZOrder" xml:space="preserve">
- <value>10</value>
- </data>
- <data name="CheckUnfavoritesEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckUnfavoritesEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckUnfavoritesEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 73</value>
- </data>
- <data name="CheckUnfavoritesEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>192, 16</value>
- </data>
- <data name="CheckUnfavoritesEvent.TabIndex" type="System.Int32, mscorlib">
- <value>17</value>
- </data>
- <data name="CheckUnfavoritesEvent.Text" xml:space="preserve">
- <value>Fav削除した、またはFav削除された</value>
- </data>
- <data name=">>CheckUnfavoritesEvent.Name" xml:space="preserve">
- <value>CheckUnfavoritesEvent</value>
- </data>
- <data name=">>CheckUnfavoritesEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckUnfavoritesEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckUnfavoritesEvent.ZOrder" xml:space="preserve">
- <value>11</value>
- </data>
- <data name="CheckFavoritesEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckFavoritesEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckFavoritesEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>40, 48</value>
- </data>
- <data name="CheckFavoritesEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>192, 16</value>
- </data>
- <data name="CheckFavoritesEvent.TabIndex" type="System.Int32, mscorlib">
- <value>16</value>
- </data>
- <data name="CheckFavoritesEvent.Text" xml:space="preserve">
- <value>Fav追加した、またはFav追加された</value>
- </data>
- <data name=">>CheckFavoritesEvent.Name" xml:space="preserve">
- <value>CheckFavoritesEvent</value>
- </data>
- <data name=">>CheckFavoritesEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckFavoritesEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckFavoritesEvent.ZOrder" xml:space="preserve">
- <value>12</value>
- </data>
- <data name="CheckEventNotify.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckEventNotify.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckEventNotify.Location" type="System.Drawing.Point, System.Drawing">
- <value>23, 23</value>
- </data>
- <data name="CheckEventNotify.Size" type="System.Drawing.Size, System.Drawing">
- <value>376, 16</value>
- </data>
- <data name="CheckEventNotify.TabIndex" type="System.Int32, mscorlib">
- <value>15</value>
- </data>
- <data name="CheckEventNotify.Text" xml:space="preserve">
- <value>次のイベントを受信したときにバルーンで通知する(UserStream有効時のみ)</value>
- </data>
- <data name=">>CheckEventNotify.Name" xml:space="preserve">
- <value>CheckEventNotify</value>
- </data>
- <data name=">>CheckEventNotify.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckEventNotify.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckEventNotify.ZOrder" xml:space="preserve">
- <value>13</value>
- </data>
- <data name="CheckQuotedTweetEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckQuotedTweetEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckQuotedTweetEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>275, 48</value>
- </data>
- <data name="CheckQuotedTweetEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>199, 16</value>
- </data>
- <data name="CheckQuotedTweetEvent.TabIndex" type="System.Int32, mscorlib">
- <value>29</value>
- </data>
- <data name="CheckQuotedTweetEvent.Text" xml:space="preserve">
- <value>ツイートを引用した、または引用された</value>
- </data>
- <data name=">>CheckQuotedTweetEvent.Name" xml:space="preserve">
- <value>CheckQuotedTweetEvent</value>
- </data>
- <data name=">>CheckQuotedTweetEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckQuotedTweetEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckQuotedTweetEvent.ZOrder" xml:space="preserve">
- <value>15</value>
- </data>
- <data name="CheckRetweetEvent.AutoSize" type="System.Boolean, mscorlib">
- <value>True</value>
- </data>
- <data name="CheckRetweetEvent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
- <value>NoControl</value>
- </data>
- <data name="CheckRetweetEvent.Location" type="System.Drawing.Point, System.Drawing">
- <value>275, 73</value>
- </data>
- <data name="CheckRetweetEvent.Size" type="System.Drawing.Size, System.Drawing">
- <value>184, 16</value>
- </data>
- <data name="CheckRetweetEvent.TabIndex" type="System.Int32, mscorlib">
- <value>30</value>
- </data>
- <data name="CheckRetweetEvent.Text" xml:space="preserve">
- <value>公式RTした、または公式RTされた</value>
- </data>
- <data name=">>CheckRetweetEvent.Name" xml:space="preserve">
- <value>CheckRetweetEvent</value>
- </data>
- <data name=">>CheckRetweetEvent.Type" xml:space="preserve">
- <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>CheckRetweetEvent.Parent" xml:space="preserve">
- <value>$this</value>
- </data>
- <data name=">>CheckRetweetEvent.ZOrder" xml:space="preserve">
- <value>14</value>
- </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<value>NotifyPanel</value>
</data>
<data name=">>$this.Type" xml:space="preserve">
- <value>OpenTween.Setting.Panel.SettingPanelBase, OpenTween, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null</value>
+ <value>OpenTween.Setting.Panel.SettingPanelBase, OpenTween, Version=2.4.3.1, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>
\ No newline at end of file
public bool ListLock = false;
public MyCommon.IconSizes IconSize = MyCommon.IconSizes.Icon16;
public bool NewAllPop = true;
- public bool EventNotifyEnabled = true;
- public MyCommon.EVENTTYPE EventNotifyFlag = MyCommon.EVENTTYPE.All;
- public MyCommon.EVENTTYPE IsMyEventNotifyFlag = MyCommon.EVENTTYPE.All;
- public bool ForceEventNotify = false;
- public bool FavEventUnread = true;
public string TranslateLanguage = Properties.Resources.TranslateDefaultLanguage;
- public string EventSoundFile = "";
/// <summary>
/// サウンド再生(タブ別設定より優先)
public int FirstCountApi = 100;
public int SearchCountApi = 100;
public int FavoritesCountApi = 40;
- public string TrackWord = "";
- public bool AllAtReply = false;
- public bool UserstreamStartup = true;
- public int UserstreamPeriod = 0;
public int UserTimelineCountApi = 20;
public int UserTimelinePeriod = 600;
public bool OpenUserTimeline = true;
public MapProvider MapThumbnailProvider = MapProvider.OpenStreetMap;
public bool IsListsIncludeRts = false;
public bool TabMouseLock = false;
- public bool IsRemoveSameEvent = false;
public bool IsUseNotifyGrowl = false;
public bool ForceIPv4 = false;
public bool ErrorReportAnonymous = true;
this.ToolStripSeparator34 = new System.Windows.Forms.ToolStripSeparator();
this.RtCountMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ListManageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.MenuItemUserStream = new System.Windows.Forms.ToolStripMenuItem();
- this.StopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.ToolStripSeparator40 = new System.Windows.Forms.ToolStripSeparator();
- this.TrackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.AllrepliesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.ToolStripSeparator42 = new System.Windows.Forms.ToolStripSeparator();
- this.EventViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MenuItemHelp = new System.Windows.Forms.ToolStripMenuItem();
this.MatomeMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ShortcutKeyListMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MenuItemOperate,
this.MenuItemTab,
this.MenuItemCommand,
- this.MenuItemUserStream,
this.MenuItemHelp});
this.MenuStrip1.Name = "MenuStrip1";
this.MenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
resources.ApplyResources(this.ListManageToolStripMenuItem, "ListManageToolStripMenuItem");
this.ListManageToolStripMenuItem.Click += new System.EventHandler(this.ListManageToolStripMenuItem_Click);
//
- // MenuItemUserStream
- //
- this.MenuItemUserStream.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.StopToolStripMenuItem,
- this.ToolStripSeparator40,
- this.TrackToolStripMenuItem,
- this.AllrepliesToolStripMenuItem,
- this.ToolStripSeparator42,
- this.EventViewerMenuItem});
- resources.ApplyResources(this.MenuItemUserStream, "MenuItemUserStream");
- this.MenuItemUserStream.Name = "MenuItemUserStream";
- //
- // StopToolStripMenuItem
- //
- this.StopToolStripMenuItem.Name = "StopToolStripMenuItem";
- resources.ApplyResources(this.StopToolStripMenuItem, "StopToolStripMenuItem");
- this.StopToolStripMenuItem.Click += new System.EventHandler(this.StopToolStripMenuItem_Click);
- //
- // ToolStripSeparator40
- //
- this.ToolStripSeparator40.Name = "ToolStripSeparator40";
- resources.ApplyResources(this.ToolStripSeparator40, "ToolStripSeparator40");
- //
- // TrackToolStripMenuItem
- //
- this.TrackToolStripMenuItem.CheckOnClick = true;
- this.TrackToolStripMenuItem.Name = "TrackToolStripMenuItem";
- resources.ApplyResources(this.TrackToolStripMenuItem, "TrackToolStripMenuItem");
- this.TrackToolStripMenuItem.Click += new System.EventHandler(this.TrackToolStripMenuItem_Click);
- //
- // AllrepliesToolStripMenuItem
- //
- this.AllrepliesToolStripMenuItem.CheckOnClick = true;
- this.AllrepliesToolStripMenuItem.Name = "AllrepliesToolStripMenuItem";
- resources.ApplyResources(this.AllrepliesToolStripMenuItem, "AllrepliesToolStripMenuItem");
- this.AllrepliesToolStripMenuItem.Click += new System.EventHandler(this.AllrepliesToolStripMenuItem_Click);
- //
- // ToolStripSeparator42
- //
- this.ToolStripSeparator42.Name = "ToolStripSeparator42";
- resources.ApplyResources(this.ToolStripSeparator42, "ToolStripSeparator42");
- //
- // EventViewerMenuItem
- //
- this.EventViewerMenuItem.Name = "EventViewerMenuItem";
- resources.ApplyResources(this.EventViewerMenuItem, "EventViewerMenuItem");
- this.EventViewerMenuItem.Click += new System.EventHandler(this.EventViewerMenuItem_Click);
- //
// MenuItemHelp
//
this.MenuItemHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator34;
internal System.Windows.Forms.ToolStripMenuItem RtCountMenuItem;
internal System.Windows.Forms.ToolStripMenuItem ListManageToolStripMenuItem;
- internal System.Windows.Forms.ToolStripMenuItem MenuItemUserStream;
- internal System.Windows.Forms.ToolStripMenuItem StopToolStripMenuItem;
- internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator40;
- internal System.Windows.Forms.ToolStripMenuItem TrackToolStripMenuItem;
- internal System.Windows.Forms.ToolStripMenuItem AllrepliesToolStripMenuItem;
- internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator42;
- internal System.Windows.Forms.ToolStripMenuItem EventViewerMenuItem;
internal System.Windows.Forms.ToolStripMenuItem MenuItemHelp;
internal System.Windows.Forms.ToolStripMenuItem MatomeMenuItem;
internal System.Windows.Forms.ToolStripMenuItem ShortcutKeyListMenuItem;
public AtIdSupplement HashSupl = null!;
public HashtagManage HashMgr = null!;
- private EventViewerDialog evtDialog = null!;
//表示フォント、色、アイコン
//////////////////////////////////////////////////////////////////////////////////////////////////////////
private readonly TimelineScheduler timelineScheduler = new TimelineScheduler();
- private ThrottleTimer refreshThrottlingTimer = null!;
private DebounceTimer selectionDebouncer = null!;
private DebounceTimer saveConfigDebouncer = null!;
this.thumbnailTokenSource?.Dispose();
- this.tw.Dispose();
this.twitterApi.Dispose();
this._hookGlobalHotkey.Dispose();
}
TwitterApiConnection.RestApiHost = SettingManager.Common.TwitterApiHost;
tw.RestrictFavCheck = SettingManager.Common.RestrictFavCheck;
tw.ReadOwnPost = SettingManager.Common.ReadOwnPost;
- tw.TrackWord = SettingManager.Common.TrackWord;
- TrackToolStripMenuItem.Checked = !MyCommon.IsNullOrEmpty(tw.TrackWord);
- tw.AllAtReply = SettingManager.Common.AllAtReply;
- AllrepliesToolStripMenuItem.Checked = tw.AllAtReply;
ShortUrl.Instance.DisableExpanding = !SettingManager.Common.TinyUrlResolve;
ShortUrl.Instance.BitlyAccessToken = SettingManager.Common.BitlyAccessToken;
ShortUrl.Instance.BitlyId = SettingManager.Common.BilyUser;
}));
this.RefreshTimelineScheduler();
- var streamingRefreshInterval = TimeSpan.FromSeconds(SettingManager.Common.UserstreamPeriod);
- this.refreshThrottlingTimer = ThrottleTimer.Create(() => this.InvokeAsync(() => this.RefreshTimeline()), streamingRefreshInterval);
this.selectionDebouncer = DebounceTimer.Create(() => this.InvokeAsync(() => this.UpdateSelectedPost()), TimeSpan.FromMilliseconds(100), leading: true);
this.saveConfigDebouncer = DebounceTimer.Create(() => this.InvokeAsync(() => this.SaveConfigsAll(ifModified: true)), TimeSpan.FromSeconds(1));
private void TimerInterval_Changed(object sender, IntervalChangedEventArgs e)
{
- if (e.UserStream)
- {
- var interval = TimeSpan.FromSeconds(SettingManager.Common.UserstreamPeriod);
- var newTimer = ThrottleTimer.Create(() => this.InvokeAsync(() => this.RefreshTimeline()), interval);
- var oldTimer = Interlocked.Exchange(ref this.refreshThrottlingTimer, newTimer);
- oldTimer.Dispose();
- }
-
this.RefreshTimelineScheduler();
}
private bool BalloonRequired()
{
- var ev = new Twitter.FormattedEvent
- {
- Eventtype = MyCommon.EVENTTYPE.None,
- };
-
- return BalloonRequired(ev);
- }
-
- private bool IsEventNotifyAsEventType(MyCommon.EVENTTYPE type)
- {
- if (type == MyCommon.EVENTTYPE.None)
- return true;
-
- if (!SettingManager.Common.EventNotifyEnabled)
- return false;
-
- return SettingManager.Common.EventNotifyFlag.HasFlag(type);
- }
-
- private bool IsMyEventNotityAsEventType(Twitter.FormattedEvent ev)
- {
- if (!ev.IsMe)
- return true;
-
- return SettingManager.Common.IsMyEventNotifyFlag.HasFlag(ev.Eventtype);
- }
-
- private bool BalloonRequired(Twitter.FormattedEvent ev)
- {
if (this._initial)
return false;
// 「新着通知」が無効
if (!this.NewPostPopMenuItem.Checked)
- {
- // 「新着通知が無効でもイベントを通知する」にも該当しない
- if (!SettingManager.Common.ForceEventNotify || ev.Eventtype == MyCommon.EVENTTYPE.None)
- return false;
- }
+ return false;
// 「画面最小化・アイコン時のみバルーンを表示する」が有効
if (SettingManager.Common.LimitBalloon)
return false;
}
- return this.IsEventNotifyAsEventType(ev.Eventtype) && this.IsMyEventNotityAsEventType(ev);
+ return true;
}
private void NotifyNewPosts(PostClass[] notifyPosts, string soundFile, int addCount, bool newMentions)
this.SetMainWindowTitle();
// TLに反映
- if (!this.tw.UserStreamActive)
+ if (SettingManager.Common.PostAndGet)
+ await this.RefreshTabAsync<HomeTabModel>();
+ else
{
- if (SettingManager.Common.PostAndGet)
- await this.RefreshTabAsync<HomeTabModel>();
- else
+ if (post != null)
{
- if (post != null)
- {
- this._statuses.AddPost(post);
- this._statuses.DistributePosts();
- }
- this.RefreshTimeline();
+ this._statuses.AddPost(post);
+ this._statuses.DistributePosts();
}
+ this.RefreshTimeline();
}
}
this._postTimestamps.RemoveAt(i);
}
- // TLに反映
- if (!this.tw.UserStreamActive)
- {
- // 自分のRTはTLの更新では取得できない場合があるので、
- // 投稿時取得の有無に関わらず追加しておく
- posts.ForEach(post => this._statuses.AddPost(post));
+ // 自分のRTはTLの更新では取得できない場合があるので、
+ // 投稿時取得の有無に関わらず追加しておく
+ posts.ForEach(post => this._statuses.AddPost(post));
- if (SettingManager.Common.PostAndGet)
- await this.RefreshTabAsync<HomeTabModel>();
- else
- {
- this._statuses.DistributePosts();
- this.RefreshTimeline();
- }
+ if (SettingManager.Common.PostAndGet)
+ await this.RefreshTabAsync<HomeTabModel>();
+ else
+ {
+ this._statuses.DistributePosts();
+ this.RefreshTimeline();
}
}
SettingManager.Common.HashIsHead = HashMgr.IsHead;
SettingManager.Common.HashIsPermanent = HashMgr.IsPermanent;
SettingManager.Common.HashIsNotAddToAtReply = HashMgr.IsNotAddToAtReply;
- SettingManager.Common.TrackWord = tw.TrackWord;
- SettingManager.Common.AllAtReply = tw.AllAtReply;
SettingManager.Common.UseImageService = ImageSelector.ServiceIndex;
SettingManager.Common.UseImageServiceName = ImageSelector.ServiceName;
if (flg) LView.Invalidate(bnd);
}
- private void StartUserStream()
- {
- tw.NewPostFromStream += tw_NewPostFromStream;
- tw.UserStreamStarted += tw_UserStreamStarted;
- tw.UserStreamStopped += tw_UserStreamStopped;
- tw.PostDeleted += tw_PostDeleted;
- tw.UserStreamEventReceived += tw_UserStreamEventArrived;
-
- this.RefreshUserStreamsMenu();
-
- if (SettingManager.Common.UserstreamStartup)
- tw.StartUserStream();
- }
-
private async void TweenMain_Shown(object sender, EventArgs e)
{
NotifyIcon1.Visible = true;
if (this.IsNetworkAvailable())
{
- StartUserStream();
-
var loadTasks = new List<Task>
{
this.RefreshMuteUserIdsAsync(),
MessageBox.Show(buf.ToString(), "アイコンキャッシュ使用状況");
}
-#region "Userstream"
- private async void tw_PostDeleted(object sender, PostDeletedEventArgs e)
- {
- try
- {
- if (InvokeRequired && !IsDisposed)
- {
- await this.InvokeAsync(() =>
- {
- this._statuses.RemovePostFromAllTabs(e.StatusId, setIsDeleted: true);
- if (this.CurrentTab.Contains(e.StatusId))
- {
- this.PurgeListViewItemCache();
- this.CurrentListView.Update();
- var post = this.CurrentPost;
- if (post != null && post.StatusId == e.StatusId)
- this.DispSelectedPost(true);
- }
- });
- return;
- }
- }
- catch (ObjectDisposedException)
- {
- return;
- }
- catch (InvalidOperationException)
- {
- return;
- }
- }
-
- private void tw_NewPostFromStream(object sender, EventArgs e)
- {
- if (SettingManager.Common.ReadOldPosts)
- {
- _statuses.SetReadHomeTab(); //新着時未読クリア
- }
-
- this._statuses.DistributePosts();
-
- _ = this.refreshThrottlingTimer.Call();
- }
-
- private async void tw_UserStreamStarted(object sender, EventArgs e)
- {
- try
- {
- if (InvokeRequired && !IsDisposed)
- {
- await this.InvokeAsync(() => this.tw_UserStreamStarted(sender, e));
- return;
- }
- }
- catch (ObjectDisposedException)
- {
- return;
- }
- catch (InvalidOperationException)
- {
- return;
- }
-
- this.RefreshUserStreamsMenu();
- this.MenuItemUserStream.Enabled = true;
-
- StatusLabel.Text = "UserStream Started.";
- }
-
- private async void tw_UserStreamStopped(object sender, EventArgs e)
- {
- try
- {
- if (InvokeRequired && !IsDisposed)
- {
- await this.InvokeAsync(() => this.tw_UserStreamStopped(sender, e));
- return;
- }
- }
- catch (ObjectDisposedException)
- {
- return;
- }
- catch (InvalidOperationException)
- {
- return;
- }
-
- this.RefreshUserStreamsMenu();
- this.MenuItemUserStream.Enabled = true;
-
- StatusLabel.Text = "UserStream Stopped.";
- }
-
- private void RefreshUserStreamsMenu()
- {
- if (this.tw.UserStreamActive)
- {
- this.MenuItemUserStream.Text = "&UserStream ▶";
- this.StopToolStripMenuItem.Text = "&Stop";
- }
- else
- {
- this.MenuItemUserStream.Text = "&UserStream ■";
- this.StopToolStripMenuItem.Text = "&Start";
- }
- }
-
- private async void tw_UserStreamEventArrived(object sender, UserStreamEventReceivedEventArgs e)
- {
- try
- {
- if (InvokeRequired && !IsDisposed)
- {
- await this.InvokeAsync(() => this.tw_UserStreamEventArrived(sender, e));
- return;
- }
- }
- catch (ObjectDisposedException)
- {
- return;
- }
- catch (InvalidOperationException)
- {
- return;
- }
- var ev = e.EventData;
- StatusLabel.Text = "Event: " + ev.Event;
- NotifyEvent(ev);
- if (ev.Event == "favorite" || ev.Event == "unfavorite")
- {
- if (this.CurrentTab.Contains(ev.Id))
- {
- this.PurgeListViewItemCache();
- this.CurrentListView.Update();
- }
- if (ev.Event == "unfavorite" && ev.Username.Equals(tw.Username, StringComparison.InvariantCultureIgnoreCase))
- {
- var favTab = this._statuses.FavoriteTab;
- favTab.EnqueueRemovePost(ev.Id, setIsDeleted: false);
- }
- }
- }
-
- private void NotifyEvent(Twitter.FormattedEvent ev)
- {
- //新着通知
- if (BalloonRequired(ev))
- {
- NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
- var title = new StringBuilder();
- if (SettingManager.Common.DispUsername)
- {
- title.Append(tw.Username);
- title.Append(" - ");
- }
- title.Append(ApplicationSettings.ApplicationName);
- title.Append(" [");
- title.Append(ev.Event.ToUpper(CultureInfo.CurrentCulture));
- title.Append("] by ");
- if (!MyCommon.IsNullOrEmpty(ev.Username))
- {
- title.Append(ev.Username);
- }
-
- string text;
- if (!MyCommon.IsNullOrEmpty(ev.Target))
- text = ev.Target;
- else
- text = " ";
-
- if (SettingManager.Common.IsUseNotifyGrowl)
- {
- gh.Notify(GrowlHelper.NotifyType.UserStreamEvent,
- ev.Id.ToString(), title.ToString(), text);
- }
- else
- {
- NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
- NotifyIcon1.BalloonTipTitle = title.ToString();
- NotifyIcon1.BalloonTipText = text;
- NotifyIcon1.ShowBalloonTip(500);
- }
- }
-
- //サウンド再生
- var snd = SettingManager.Common.EventSoundFile;
- if (!_initial && SettingManager.Common.PlaySound && !MyCommon.IsNullOrEmpty(snd))
- {
- if ((ev.Eventtype & SettingManager.Common.EventNotifyFlag) != 0 && IsMyEventNotityAsEventType(ev))
- {
- try
- {
- var dir = Application.StartupPath;
- if (Directory.Exists(Path.Combine(dir, "Sounds")))
- {
- dir = Path.Combine(dir, "Sounds");
- }
- using var player = new SoundPlayer(Path.Combine(dir, snd));
- player.Play();
- }
- catch (Exception)
- {
- }
- }
- }
- }
-
- private void StopToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MenuItemUserStream.Enabled = false;
- if (StopRefreshAllMenuItem.Checked)
- {
- StopRefreshAllMenuItem.Checked = false;
- return;
- }
- if (this.tw.UserStreamActive)
- {
- tw.StopUserStream();
- }
- else
- {
- tw.StartUserStream();
- }
- }
-
- private static string inputTrack = "";
-
- private void TrackToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (TrackToolStripMenuItem.Checked)
- {
- using (var inputForm = new InputTabName())
- {
- inputForm.TabName = inputTrack;
- inputForm.FormTitle = "Input track word";
- inputForm.FormDescription = "Track word";
- if (inputForm.ShowDialog() != DialogResult.OK)
- {
- TrackToolStripMenuItem.Checked = false;
- return;
- }
- inputTrack = inputForm.TabName.Trim();
- }
- if (!inputTrack.Equals(tw.TrackWord))
- {
- tw.TrackWord = inputTrack;
- this.MarkSettingCommonModified();
- TrackToolStripMenuItem.Checked = !MyCommon.IsNullOrEmpty(inputTrack);
- tw.ReconnectUserStream();
- }
- }
- else
- {
- tw.TrackWord = "";
- tw.ReconnectUserStream();
- }
- this.MarkSettingCommonModified();
- }
-
- private void AllrepliesToolStripMenuItem_Click(object sender, EventArgs e)
- {
- tw.AllAtReply = AllrepliesToolStripMenuItem.Checked;
- this.MarkSettingCommonModified();
- tw.ReconnectUserStream();
- }
-
- private void EventViewerMenuItem_Click(object sender, EventArgs e)
- {
- if (evtDialog == null || evtDialog.IsDisposed)
- {
- this.evtDialog = new EventViewerDialog
- {
- Owner = this,
- };
-
- //親の中央に表示
- this.evtDialog.Location = new Point
- {
- X = Convert.ToInt32(this.Location.X + this.Size.Width / 2 - evtDialog.Size.Width / 2),
- Y = Convert.ToInt32(this.Location.Y + this.Size.Height / 2 - evtDialog.Size.Height / 2),
- };
- }
- evtDialog.EventSource = tw.StoredEvent;
- if (!evtDialog.Visible)
- {
- evtDialog.Show(this);
- }
- else
- {
- evtDialog.Activate();
- }
- this.TopMost = SettingManager.Common.AlwaysTop;
- }
-#endregion
-
private void TweenRestartMenuItem_Click(object sender, EventArgs e)
{
MyCommon._endingFlag = true;
private void TimelineRefreshEnableChange(bool isEnable)
{
- if (isEnable)
- {
- tw.StartUserStream();
- }
- else
- {
- tw.StopUserStream();
- }
this.timelineScheduler.Enabled = isEnable;
}
<data name="MenuItemCommand.Text" xml:space="preserve">
<value>その他機能(&C)</value>
</data>
- <data name="StopToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>227, 22</value>
- </data>
- <data name="StopToolStripMenuItem.Text" xml:space="preserve">
- <value>Stop</value>
- </data>
- <data name="ToolStripSeparator40.Size" type="System.Drawing.Size, System.Drawing">
- <value>224, 6</value>
- </data>
- <data name="TrackToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>227, 22</value>
- </data>
- <data name="TrackToolStripMenuItem.Text" xml:space="preserve">
- <value>Track</value>
- </data>
- <data name="AllrepliesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>227, 22</value>
- </data>
- <data name="AllrepliesToolStripMenuItem.Text" xml:space="preserve">
- <value>All @replies</value>
- </data>
- <data name="ToolStripSeparator42.Size" type="System.Drawing.Size, System.Drawing">
- <value>224, 6</value>
- </data>
- <data name="EventViewerMenuItem.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
- <value>Ctrl+Shift+E</value>
- </data>
- <data name="EventViewerMenuItem.Size" type="System.Drawing.Size, System.Drawing">
- <value>227, 22</value>
- </data>
- <data name="EventViewerMenuItem.Text" xml:space="preserve">
- <value>View Events</value>
- </data>
- <data name="MenuItemUserStream.Enabled" type="System.Boolean, mscorlib">
- <value>False</value>
- </data>
- <data name="MenuItemUserStream.Size" type="System.Drawing.Size, System.Drawing">
- <value>90, 20</value>
- </data>
- <data name="MenuItemUserStream.Text" xml:space="preserve">
- <value>UserStream</value>
- </data>
<data name="MatomeMenuItem.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">
<value>F1</value>
</data>
<data name=">>ListManageToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
- <data name=">>MenuItemUserStream.Name" xml:space="preserve">
- <value>MenuItemUserStream</value>
- </data>
- <data name=">>MenuItemUserStream.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>StopToolStripMenuItem.Name" xml:space="preserve">
- <value>StopToolStripMenuItem</value>
- </data>
- <data name=">>StopToolStripMenuItem.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ToolStripSeparator40.Name" xml:space="preserve">
- <value>ToolStripSeparator40</value>
- </data>
- <data name=">>ToolStripSeparator40.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>TrackToolStripMenuItem.Name" xml:space="preserve">
- <value>TrackToolStripMenuItem</value>
- </data>
- <data name=">>TrackToolStripMenuItem.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>AllrepliesToolStripMenuItem.Name" xml:space="preserve">
- <value>AllrepliesToolStripMenuItem</value>
- </data>
- <data name=">>AllrepliesToolStripMenuItem.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>ToolStripSeparator42.Name" xml:space="preserve">
- <value>ToolStripSeparator42</value>
- </data>
- <data name=">>ToolStripSeparator42.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name=">>EventViewerMenuItem.Name" xml:space="preserve">
- <value>EventViewerMenuItem</value>
- </data>
- <data name=">>EventViewerMenuItem.Type" xml:space="preserve">
- <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
<data name=">>MenuItemHelp.Name" xml:space="preserve">
<value>MenuItemHelp</value>
</data>
}
this.ResetApiStatus();
this.Api.Initialize(token, tokenSecret, userId, username);
- if (SettingManager.Common.UserstreamStartup) this.ReconnectUserStream();
}
internal static string PreProcessUrl(string orgData)
tab.OldestId = minimumId.Value;
}
- private void CreateDirectMessagesFromJson(TwitterDirectMessage[] item, MyCommon.WORKERTYPE gType, bool read)
- {
- foreach (var message in item)
- {
- var post = new PostClass();
- try
- {
- post.StatusId = message.Id;
-
- //二重取得回避
- lock (LockObj)
- {
- if (TabInformations.GetInstance().DirectMessageTab.Contains(post.StatusId)) continue;
- }
- //sender_id
- //recipient_id
- post.CreatedAt = MyCommon.DateTimeParse(message.CreatedAt);
- //本文
- var textFromApi = message.Text;
- //HTMLに整形
- post.Text = CreateHtmlAnchor(textFromApi, message.Entities, quotedStatusLink: null);
- post.TextFromApi = this.ReplaceTextFromApi(textFromApi, message.Entities, quotedStatusLink: null);
- post.TextFromApi = WebUtility.HtmlDecode(post.TextFromApi);
- post.TextFromApi = post.TextFromApi.Replace("<3", "\u2661");
- post.AccessibleText = CreateAccessibleText(textFromApi, message.Entities, quotedStatus: null, quotedStatusLink: null);
- post.AccessibleText = WebUtility.HtmlDecode(post.AccessibleText);
- post.AccessibleText = post.AccessibleText.Replace("<3", "\u2661");
- post.IsFav = false;
-
- this.ExtractEntities(message.Entities, post.ReplyToList, post.Media);
-
- post.QuoteStatusIds = GetQuoteTweetStatusIds(message.Entities, quotedStatusLink: null)
- .Distinct().ToArray();
-
- post.ExpandedUrls = message.Entities.OfType<TwitterEntityUrl>()
- .Select(x => new PostClass.ExpandedUrlInfo(x.Url, x.ExpandedUrl))
- .ToArray();
-
- //以下、ユーザー情報
- TwitterUser? user;
- if (gType == MyCommon.WORKERTYPE.UserStream)
- {
- if (this.Api.CurrentUserId == message.Recipient?.Id)
- {
- user = message.Sender;
- post.IsMe = false;
- post.IsOwl = true;
- }
- else
- {
- user = message.Recipient;
- post.IsMe = true;
- post.IsOwl = false;
- }
- }
- else
- {
- if (gType == MyCommon.WORKERTYPE.DirectMessegeRcv)
- {
- user = message.Sender;
- post.IsMe = false;
- post.IsOwl = true;
- }
- else
- {
- user = message.Recipient;
- post.IsMe = true;
- post.IsOwl = false;
- }
- }
-
- if (user != null)
- {
- post.UserId = user.Id;
- post.ScreenName = user.ScreenName;
- post.Nickname = user.Name.Trim();
- post.ImageUrl = user.ProfileImageUrlHttps;
- post.IsProtect = user.Protected;
- post.IsMe = post.UserId == this.UserId;
- }
- else
- {
- post.UserId = 0L;
- post.ScreenName = "?????";
- post.Nickname = "Unknown User";
- }
-
- // メモリ使用量削減 (同一のテキストであれば同一の string インスタンスを参照させる)
- if (post.Text == post.TextFromApi)
- post.Text = post.TextFromApi;
- if (post.AccessibleText == post.TextFromApi)
- post.AccessibleText = post.TextFromApi;
-
- // 他の発言と重複しやすい (共通化できる) 文字列は string.Intern を通す
- post.ScreenName = string.Intern(post.ScreenName);
- post.Nickname = string.Intern(post.Nickname);
- post.ImageUrl = string.Intern(post.ImageUrl);
- }
- catch(Exception ex)
- {
- MyCommon.TraceOut(ex, MethodBase.GetCurrentMethod().Name);
- MessageBox.Show("Parse Error(CreateDirectMessagesFromJson)");
- continue;
- }
-
- post.IsRead = read;
- if (post.IsMe && !read && this.ReadOwnPost) post.IsRead = true;
- post.IsReply = false;
- post.IsExcludeReply = false;
- post.IsDm = true;
-
- var dmTab = TabInformations.GetInstance().DirectMessageTab;
- dmTab.AddPostQueue(post);
- }
- }
-
public async Task GetDirectMessageEvents(bool read, bool backward)
{
this.CheckAccountState();
return remainWeight / config.Scale;
}
+ public bool IsDisposed { get; private set; } = false;
-#region "UserStream"
- public string TrackWord { get; set; } = "";
- public bool AllAtReply { get; set; } = false;
-
- public event EventHandler? NewPostFromStream;
- public event EventHandler? UserStreamStarted;
- public event EventHandler? UserStreamStopped;
- public event EventHandler<PostDeletedEventArgs>? PostDeleted;
- public event EventHandler<UserStreamEventReceivedEventArgs>? UserStreamEventReceived;
- private DateTimeUtc _lastUserstreamDataReceived;
- private StreamAutoConnector? userStreamConnector;
-
- public class FormattedEvent
- {
- public MyCommon.EVENTTYPE Eventtype { get; set; }
- public DateTimeUtc CreatedAt { get; set; }
- public string Event { get; set; } = "";
- public string Username { get; set; } = "";
- public string Target { get; set; } = "";
- public long Id { get; set; }
- public bool IsMe { get; set; }
- }
-
- public List<FormattedEvent> StoredEvent { get; } = new List<FormattedEvent>();
-
- private readonly IReadOnlyDictionary<string, MyCommon.EVENTTYPE> eventTable = new Dictionary<string, MyCommon.EVENTTYPE>
- {
- ["favorite"] = MyCommon.EVENTTYPE.Favorite,
- ["unfavorite"] = MyCommon.EVENTTYPE.Unfavorite,
- ["follow"] = MyCommon.EVENTTYPE.Follow,
- ["list_member_added"] = MyCommon.EVENTTYPE.ListMemberAdded,
- ["list_member_removed"] = MyCommon.EVENTTYPE.ListMemberRemoved,
- ["block"] = MyCommon.EVENTTYPE.Block,
- ["unblock"] = MyCommon.EVENTTYPE.Unblock,
- ["user_update"] = MyCommon.EVENTTYPE.UserUpdate,
- ["deleted"] = MyCommon.EVENTTYPE.Deleted,
- ["list_created"] = MyCommon.EVENTTYPE.ListCreated,
- ["list_destroyed"] = MyCommon.EVENTTYPE.ListDestroyed,
- ["list_updated"] = MyCommon.EVENTTYPE.ListUpdated,
- ["unfollow"] = MyCommon.EVENTTYPE.Unfollow,
- ["list_user_subscribed"] = MyCommon.EVENTTYPE.ListUserSubscribed,
- ["list_user_unsubscribed"] = MyCommon.EVENTTYPE.ListUserUnsubscribed,
- ["mute"] = MyCommon.EVENTTYPE.Mute,
- ["unmute"] = MyCommon.EVENTTYPE.Unmute,
- ["quoted_tweet"] = MyCommon.EVENTTYPE.QuotedTweet,
- };
-
- public bool IsUserstreamDataReceived
- => (DateTimeUtc.Now - this._lastUserstreamDataReceived).TotalSeconds < 31;
-
- private void userStream_MessageReceived(ITwitterStreamMessage message)
- {
- this._lastUserstreamDataReceived = DateTimeUtc.Now;
-
- switch (message)
- {
- case StreamMessageStatus statusMessage:
- var status = statusMessage.Status.Normalize();
-
- if (status.RetweetedStatus is TwitterStatus retweetedStatus)
- {
- var sourceUserId = statusMessage.Status.User.Id;
- var targetUserId = retweetedStatus.User.Id;
-
- // 自分に関係しないリツイートの場合は無視する
- var selfUserId = this.UserId;
- if (sourceUserId == selfUserId || targetUserId == selfUserId)
- {
- // 公式 RT をイベントとしても扱う
- var evt = this.CreateEventFromRetweet(status);
- this.StoredEvent.Insert(0, evt);
- this.UserStreamEventReceived?.Invoke(this, new UserStreamEventReceivedEventArgs(evt));
- }
- // 従来通り公式 RT の表示も行うため break しない
- }
-
- this.CreatePostsFromJson(new[] { status }, MyCommon.WORKERTYPE.UserStream, null, false);
- this.NewPostFromStream?.Invoke(this, EventArgs.Empty);
- break;
-
- case StreamMessageDirectMessage dmMessage:
- this.CreateDirectMessagesFromJson(new[] { dmMessage.DirectMessage }, MyCommon.WORKERTYPE.UserStream, false);
- this.NewPostFromStream?.Invoke(this, EventArgs.Empty);
- break;
-
- case StreamMessageDelete deleteMessage:
- var deletedId = deleteMessage.Status?.Id ?? deleteMessage.DirectMessage?.Id;
- if (deletedId == null)
- break;
-
- this.PostDeleted?.Invoke(this, new PostDeletedEventArgs(deletedId.Value));
-
- foreach (var index in MyCommon.CountDown(this.StoredEvent.Count - 1, 0))
- {
- var evt = this.StoredEvent[index];
- if (evt.Id == deletedId.Value && (evt.Event == "favorite" || evt.Event == "unfavorite"))
- {
- this.StoredEvent.RemoveAt(index);
- }
- }
- break;
-
- case StreamMessageEvent eventMessage:
- this.CreateEventFromJson(eventMessage);
- break;
-
- case StreamMessageScrubGeo scrubGeoMessage:
- TabInformations.GetInstance().ScrubGeoReserve(scrubGeoMessage.UserId, scrubGeoMessage.UpToStatusId);
- break;
-
- default:
- break;
- }
- }
-
- /// <summary>
- /// UserStreamsから受信した公式RTをイベントに変換します
- /// </summary>
- private FormattedEvent CreateEventFromRetweet(TwitterStatus status)
- {
- if (status.RetweetedStatus == null)
- throw new InvalidOperationException();
-
- return new FormattedEvent
- {
- Eventtype = MyCommon.EVENTTYPE.Retweet,
- Event = "retweet",
- CreatedAt = MyCommon.DateTimeParse(status.CreatedAt),
- IsMe = status.User.Id == this.UserId,
- Username = status.User.ScreenName,
- Target = string.Format("@{0}:{1}", new[]
- {
- status.RetweetedStatus.User.ScreenName,
- WebUtility.HtmlDecode(status.RetweetedStatus.FullText),
- }),
- Id = status.RetweetedStatus.Id,
- };
- }
-
- private void CreateEventFromJson(StreamMessageEvent message)
- {
- var eventData = message.Event;
-
- var evt = new FormattedEvent
- {
- CreatedAt = MyCommon.DateTimeParse(eventData.CreatedAt),
- Event = eventData.Event,
- Username = eventData.Source.ScreenName,
- IsMe = eventData.Source.Id == this.UserId,
- Eventtype = eventTable.TryGetValue(eventData.Event, out var eventType) ? eventType : MyCommon.EVENTTYPE.None,
- };
-
- TwitterStreamEvent<TwitterStatusCompat> tweetEvent;
- TwitterStatus tweet;
-
- switch (eventData.Event)
- {
- case "access_revoked":
- case "access_unrevoked":
- case "user_delete":
- case "user_suspend":
- return;
- case "follow":
- if (eventData.Target.Id == this.UserId)
- {
- if (!this.followerId.Contains(eventData.Source.Id)) this.followerId.Add(eventData.Source.Id);
- }
- else
- {
- return; //Block後のUndoをすると、SourceとTargetが逆転したfollowイベントが帰ってくるため。
- }
- evt.Target = "";
- break;
- case "unfollow":
- evt.Target = "@" + eventData.Target.ScreenName;
- break;
- case "favorited_retweet":
- case "retweeted_retweet":
- return;
- case "favorite":
- case "unfavorite":
- tweetEvent = message.ParseTargetObjectAs<TwitterStatusCompat>();
- tweet = tweetEvent.TargetObject.Normalize();
- evt.Target = "@" + tweet.User.ScreenName + ":" + WebUtility.HtmlDecode(tweet.FullText);
- evt.Id = tweet.Id;
-
- if (SettingManager.Common.IsRemoveSameEvent)
- {
- if (this.StoredEvent.Any(ev => ev.Username == evt.Username && ev.Eventtype == evt.Eventtype && ev.Target == evt.Target))
- return;
- }
-
- var tabinfo = TabInformations.GetInstance();
-
- var statusId = tweet.Id;
- if (!tabinfo.Posts.TryGetValue(statusId, out var post))
- break;
-
- if (eventData.Event == "favorite")
- {
- var favTab = tabinfo.FavoriteTab;
- favTab.AddPostQueue(post);
-
- if (tweetEvent.Source.Id == this.UserId)
- {
- post.IsFav = true;
- }
- else if (tweetEvent.Target.Id == this.UserId)
- {
- post.FavoritedCount++;
-
- if (SettingManager.Common.FavEventUnread)
- tabinfo.SetReadAllTab(post.StatusId, read: false);
- }
- }
- else // unfavorite
- {
- if (tweetEvent.Source.Id == this.UserId)
- {
- post.IsFav = false;
- }
- else if (tweetEvent.Target.Id == this.UserId)
- {
- post.FavoritedCount = Math.Max(0, post.FavoritedCount - 1);
- }
- }
- break;
- case "quoted_tweet":
- if (evt.IsMe) return;
-
- tweetEvent = message.ParseTargetObjectAs<TwitterStatusCompat>();
- tweet = tweetEvent.TargetObject.Normalize();
- evt.Target = "@" + tweet.User.ScreenName + ":" + WebUtility.HtmlDecode(tweet.FullText);
- evt.Id = tweet.Id;
-
- if (SettingManager.Common.IsRemoveSameEvent)
- {
- if (this.StoredEvent.Any(ev => ev.Username == evt.Username && ev.Eventtype == evt.Eventtype && ev.Target == evt.Target))
- return;
- }
- break;
- case "list_member_added":
- case "list_member_removed":
- case "list_created":
- case "list_destroyed":
- case "list_updated":
- case "list_user_subscribed":
- case "list_user_unsubscribed":
- var listEvent = message.ParseTargetObjectAs<TwitterList>();
- evt.Target = listEvent.TargetObject.FullName;
- break;
- case "block":
- if (!TabInformations.GetInstance().BlockIds.Contains(eventData.Target.Id)) TabInformations.GetInstance().BlockIds.Add(eventData.Target.Id);
- evt.Target = "";
- break;
- case "unblock":
- if (TabInformations.GetInstance().BlockIds.Contains(eventData.Target.Id)) TabInformations.GetInstance().BlockIds.Remove(eventData.Target.Id);
- evt.Target = "";
- break;
- case "user_update":
- evt.Target = "";
- break;
-
- // Mute / Unmute
- case "mute":
- evt.Target = "@" + eventData.Target.ScreenName;
- if (!TabInformations.GetInstance().MuteUserIds.Contains(eventData.Target.Id))
- {
- TabInformations.GetInstance().MuteUserIds.Add(eventData.Target.Id);
- }
- break;
- case "unmute":
- evt.Target = "@" + eventData.Target.ScreenName;
- if (TabInformations.GetInstance().MuteUserIds.Contains(eventData.Target.Id))
- {
- TabInformations.GetInstance().MuteUserIds.Remove(eventData.Target.Id);
- }
- break;
-
- default:
- MyCommon.TraceOut("Unknown Event:" + evt.Event + Environment.NewLine + message.Json);
- break;
- }
- this.StoredEvent.Insert(0, evt);
-
- this.UserStreamEventReceived?.Invoke(this, new UserStreamEventReceivedEventArgs(evt));
- }
-
- private void userStream_Started()
- => this.UserStreamStarted?.Invoke(this, EventArgs.Empty);
-
- private void userStream_Stopped()
- => this.UserStreamStopped?.Invoke(this, EventArgs.Empty);
-
- public bool UserStreamActive
- => this.userStreamConnector != null && this.userStreamConnector.IsStreamActive;
-
- public void StartUserStream()
- {
- var replies = this.AllAtReply ? "all" : null;
- var streamObservable = this.Api.UserStreams(replies, this.TrackWord);
- var newConnector = new StreamAutoConnector(streamObservable);
-
- newConnector.MessageReceived += userStream_MessageReceived;
- newConnector.Started += userStream_Started;
- newConnector.Stopped += userStream_Stopped;
-
- newConnector.Start();
-
- var oldConnector = Interlocked.Exchange(ref this.userStreamConnector, newConnector);
- oldConnector?.Dispose();
- }
-
- public void StopUserStream()
- {
- var oldConnector = Interlocked.Exchange(ref this.userStreamConnector, null);
- oldConnector?.Dispose();
- }
-
- public void ReconnectUserStream()
- {
- if (this.userStreamConnector != null)
- {
- this.StartUserStream();
- }
- }
-
- private class StreamAutoConnector : IDisposable
+ protected virtual void Dispose(bool disposing)
{
- private readonly TwitterStreamObservable streamObservable;
-
- public bool IsStreamActive { get; private set; }
- public bool IsDisposed { get; private set; }
-
- public event Action<ITwitterStreamMessage>? MessageReceived;
- public event Action? Stopped;
- public event Action? Started;
-
- private Task? streamTask;
- private CancellationTokenSource streamCts = new CancellationTokenSource();
-
- public StreamAutoConnector(TwitterStreamObservable streamObservable)
- => this.streamObservable = streamObservable;
-
- public void Start()
- {
- var cts = new CancellationTokenSource();
-
- this.streamCts = cts;
- this.streamTask = Task.Run(async () =>
- {
- try
- {
- await this.StreamLoop(cts.Token)
- .ConfigureAwait(false);
- }
- catch (OperationCanceledException) { }
- });
- }
-
- public void Stop()
- {
- this.streamCts?.Cancel();
-
- // streamTask の完了を待たずに IsStreamActive を false にセットする
- this.IsStreamActive = false;
- this.Stopped?.Invoke();
- }
-
- private async Task StreamLoop(CancellationToken cancellationToken)
- {
- var sleep = TimeSpan.Zero;
- for (; ; )
- {
- if (sleep != TimeSpan.Zero)
- {
- await Task.Delay(sleep, cancellationToken)
- .ConfigureAwait(false);
- sleep = TimeSpan.Zero;
- }
-
- if (!MyCommon.IsNetworkAvailable())
- {
- sleep = TimeSpan.FromSeconds(30);
- continue;
- }
-
- this.IsStreamActive = true;
- this.Started?.Invoke();
-
- try
- {
- await this.streamObservable.ForEachAsync(
- x => this.MessageReceived?.Invoke(x),
- cancellationToken);
-
- // キャンセルされていないのにストリームが終了した場合
- sleep = TimeSpan.FromSeconds(30);
- }
- catch (TwitterApiException ex) when (ex.StatusCode == HttpStatusCode.Gone)
- {
- // UserStreams停止によるエラーの場合は長めに間隔を開ける
- sleep = TimeSpan.FromMinutes(10);
- }
- catch (TwitterApiException) { sleep = TimeSpan.FromSeconds(30); }
- catch (IOException) { sleep = TimeSpan.FromSeconds(30); }
- catch (OperationCanceledException)
- {
- if (cancellationToken.IsCancellationRequested)
- throw;
-
- // cancellationToken によるキャンセルではない(=タイムアウトエラー)
- sleep = TimeSpan.FromSeconds(30);
- }
- catch (Exception ex)
- {
- MyCommon.ExceptionOut(ex);
- sleep = TimeSpan.FromSeconds(30);
- }
- finally
- {
- this.IsStreamActive = false;
- this.Stopped?.Invoke();
- }
- }
- }
+ if (this.IsDisposed)
+ return;
- public void Dispose()
+ if (disposing)
{
- if (this.IsDisposed)
- return;
-
- this.IsDisposed = true;
-
- this.Stop();
-
- this.Started = null;
- this.Stopped = null;
- this.MessageReceived = null;
+ this.Api.Dispose();
}
- }
-#endregion
-
-#region "IDisposable Support"
- private bool disposedValue; // 重複する呼び出しを検出するには
- // IDisposable
- protected virtual void Dispose(bool disposing)
- {
- if (!this.disposedValue)
- {
- if (disposing)
- {
- this.StopUserStream();
- }
- }
- this.disposedValue = true;
+ this.IsDisposed = true;
}
- // このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
public void Dispose()
{
- // このコードを変更しないでください。クリーンアップ コードを上の Dispose(bool disposing) に記述します。
Dispose(true);
GC.SuppressFinalize(this);
}
-#endregion
- }
-
- public class PostDeletedEventArgs : EventArgs
- {
- public long StatusId { get; }
-
- public PostDeletedEventArgs(long statusId)
- => this.StatusId = statusId;
- }
-
- public class UserStreamEventReceivedEventArgs : EventArgs
- {
- public Twitter.FormattedEvent EventData { get; }
-
- public UserStreamEventReceivedEventArgs(Twitter.FormattedEvent eventData)
- => this.EventData = eventData;
}
}