}
private Stack<ReplyChain> replyChains; //[, ]でのリプライ移動の履歴
- private Stack<Tuple<TabPage, PostClass>> selectPostChains = new Stack<Tuple<TabPage, PostClass>>(); //ポスト選択履歴
+ private Stack<ValueTuple<TabPage, PostClass>> selectPostChains = new Stack<ValueTuple<TabPage, PostClass>>(); //ポスト選択履歴
//検索処理タイプ
internal enum SEARCHTYPE
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;
ShortUrl.Instance.BitlyKey = SettingManager.Common.BitlyPwd;
var listSelections = this.SaveListViewSelection();
//更新確定
- PostClass[] notifyPosts;
- string soundFile;
int addCount;
- bool newMentionOrDm;
- bool isDelete;
- addCount = _statuses.SubmitUpdate(out soundFile, out notifyPosts, out newMentionOrDm, out isDelete);
+ addCount = _statuses.SubmitUpdate(out var soundFile, out var notifyPosts,
+ out var newMentionOrDm, out var isDelete);
if (MyCommon._endingFlag) return;
return;
// キャッシュに含まれていないアイテムは対象外
- ListViewItem itm;
- PostClass post;
- if (!listCache.TryGetValue(Index, out itm, out post))
+ if (!listCache.TryGetValue(Index, out var itm, out var post))
return;
ChangeItemStyleRead(Read, itm, post, ((DetailsListView)_curTab.Tag));
if (!CheckAccountValid())
throw new WebApiException("Auth error. Check your account");
- PostClass post;
- if (!tab.Posts.TryGetValue(statusId, out post))
+ if (!tab.Posts.TryGetValue(statusId, out var post))
return;
if (post.IsFav)
private async Task FavoriteChange(bool FavAdd, bool multiFavoriteChangeDialogEnable = true)
{
- TabModel tab;
- if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out tab))
+ if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out var tab))
return;
//trueでFavAdd,falseでFavRemove
var listCache = this._listItemCache;
if (listCache != null)
{
- ListViewItem item;
- PostClass post;
- if (listCache.TryGetValue(Index, out item, out post))
+ if (listCache.TryGetValue(Index, out var item, out var post))
return post;
}
{
if (_curTab != null)
{
- TabModel tab;
- if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out tab))
+ if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out var tab))
return;
switch (tab)
//ページ指定をマイナス1に
if (_curTab != null)
{
- TabModel tab;
- if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out tab))
+ if (!this._statuses.Tabs.TryGetValue(this._curTab.Text, out var tab))
return;
switch (tab)
tw.RestrictFavCheck = SettingManager.Common.RestrictFavCheck;
tw.ReadOwnPost = SettingManager.Common.ReadOwnPost;
ShortUrl.Instance.DisableExpanding = !SettingManager.Common.TinyUrlResolve;
+ ShortUrl.Instance.BitlyAccessToken = SettingManager.Common.BitlyAccessToken;
ShortUrl.Instance.BitlyId = SettingManager.Common.BilyUser;
ShortUrl.Instance.BitlyKey = SettingManager.Common.BitlyPwd;
TwitterApiConnection.RestApiHost = SettingManager.Common.TwitterApiHost;
var listCache = this._listItemCache;
if (listCache?.TargetList == sender)
{
- ListViewItem item;
- PostClass cacheItemPost;
- if (listCache.TryGetValue(e.ItemIndex, out item, out cacheItemPost))
+ if (listCache.TryGetValue(e.ItemIndex, out var item, out var cacheItemPost))
{
e.Item = item;
return;
rct.Height -= fontHeight;
}
- int heightDiff;
- int drawLineCount = Math.Max(1, Math.DivRem((int)rct.Height, fontHeight, out heightDiff));
+ int drawLineCount = Math.Max(1, Math.DivRem((int)rct.Height, fontHeight, out var heightDiff));
//if (heightDiff > fontHeight * 0.7)
//{
if (e.Control || e.Shift || e.Alt)
this._anchorFlag = false;
- Task asyncTask;
- if (CommonKeyDown(e.KeyData, FocusedControl.ListTab, out asyncTask))
+ if (CommonKeyDown(e.KeyData, FocusedControl.ListTab, out var asyncTask))
{
e.Handled = true;
e.SuppressKeyPress = true;
try
{
this.selectPostChains.Pop();
- var tabPostPair = this.selectPostChains.Peek();
+ var (tabPage, post) = this.selectPostChains.Peek();
- if (!this.ListTab.TabPages.Contains(tabPostPair.Item1)) continue; //該当タブが存在しないので無視
+ if (!this.ListTab.TabPages.Contains(tabPage)) continue; //該当タブが存在しないので無視
- if (tabPostPair.Item2 != null)
+ if (post != null)
{
- idx = this._statuses.Tabs[tabPostPair.Item1.Text].IndexOf(tabPostPair.Item2.StatusId);
+ idx = this._statuses.Tabs[tabPage.Text].IndexOf(post.StatusId);
if (idx == -1) continue; //該当ポストが存在しないので無視
}
- tp = tabPostPair.Item1;
+ tp = tabPage;
this.selectPostChains.Pop();
}
int count = this.selectPostChains.Count;
if (count > 0)
{
- var p = this.selectPostChains.Peek();
- if (p.Item1 == this._curTab)
+ var (tabPage, post) = this.selectPostChains.Peek();
+ if (tabPage == this._curTab)
{
- if (p.Item2 == this._curPost) return; //最新の履歴と同一
- if (p.Item2 == null) this.selectPostChains.Pop(); //置き換えるため削除
+ if (post == this._curPost) return; //最新の履歴と同一
+ if (post == null) this.selectPostChains.Pop(); //置き換えるため削除
}
}
if (count >= 2500) TrimPostChain();
- this.selectPostChains.Push(Tuple.Create(this._curTab, this._curPost));
+ this.selectPostChains.Push((this._curTab, this._curPost));
}
private void TrimPostChain()
{
if (this.selectPostChains.Count <= 2000) return;
- var p = new Stack<Tuple<TabPage, PostClass>>(2000);
+ var p = new Stack<ValueTuple<TabPage, PostClass>>(2000);
for (int i = 0; i < 2000; i++)
{
p.Push(this.selectPostChains.Pop());
public Color InputBackColor
{
- get { return _clInputBackcolor; }
- set { _clInputBackcolor = value; }
+ get => _clInputBackcolor;
+ set => _clInputBackcolor = value;
}
private void StatusText_Leave(object sender, EventArgs e)
private async void StatusText_KeyDown(object sender, KeyEventArgs e)
{
- Task asyncTask;
- if (CommonKeyDown(e.KeyData, FocusedControl.StatusText, out asyncTask))
+ if (CommonKeyDown(e.KeyData, FocusedControl.StatusText, out var asyncTask))
{
e.Handled = true;
e.SuppressKeyPress = true;
private async void OpenURLFileMenuItem_Click(object sender, EventArgs e)
{
- string inputText;
- var ret = InputDialog.Show(this, Properties.Resources.OpenURL_InputText, Properties.Resources.OpenURL_Caption, out inputText);
+ var ret = InputDialog.Show(this, Properties.Resources.OpenURL_InputText, Properties.Resources.OpenURL_Caption, out var inputText);
if (ret != DialogResult.OK)
return;
private void ListTab_DoubleClick(object sender, MouseEventArgs e)
{
- string _;
- TabRename(this.ListTab.SelectedTab.Text, out _);
+ TabRename(this.ListTab.SelectedTab.Text, out var _);
}
private void ListTab_MouseDown(object sender, MouseEventArgs e)
if (_statuses == null) return;
if (_statuses.Tabs == null) return;
- TabModel tb;
- if (!this._statuses.Tabs.TryGetValue(this._rclickTabName, out tb))
+ if (!this._statuses.Tabs.TryGetValue(this._rclickTabName, out var tb))
return;
NotifyDispMenuItem.Checked = tb.Notify;
//選択発言を元にフィルタ追加
foreach (int idx in _curList.SelectedIndices)
{
- string tabName;
//タブ選択(or追加)
- if (!SelectTab(out tabName)) return;
+ if (!SelectTab(out var tabName)) return;
fltDialog.SetCurrent(tabName);
if (_statuses.Tabs[_curTab.Text][idx].RetweetedId == null)
public void AddFilterRuleByScreenName(params string[] screenNameArray)
{
//タブ選択(or追加)
- string tabName;
- if (!SelectTab(out tabName)) return;
+ if (!SelectTab(out var tabName)) return;
var tab = (FilterTabModel)this._statuses.Tabs[tabName];
public void AddFilterRuleBySource(params string[] sourceArray)
{
// タブ選択ダイアログを表示(or追加)
- string tabName;
- if (!this.SelectTab(out tabName))
+ if (!this.SelectTab(out var tabName))
return;
var filterTab = (FilterTabModel)this._statuses.Tabs[tabName];
}
else if (e.Data.GetDataPresent("UniformResourceLocatorW"))
{
- var url = GetUrlFromDataObject(e.Data);
+ var (url, title) = GetUrlFromDataObject(e.Data);
string appendText;
- if (url.Item2 == null)
- appendText = url.Item1;
+ if (title == null)
+ appendText = url;
else
- appendText = url.Item2 + " " + url.Item1;
+ appendText = title + " " + url;
if (this.StatusText.TextLength == 0)
this.StatusText.Text = appendText;
/// </remarks>
/// <exception cref="ArgumentException">不正なフォーマットが入力された場合</exception>
/// <exception cref="NotSupportedException">サポートされていないデータが入力された場合</exception>
- internal static Tuple<string, string> GetUrlFromDataObject(IDataObject data)
+ internal static (string Url, string Title) GetUrlFromDataObject(IDataObject data)
{
if (data.GetDataPresent("text/x-moz-url"))
{
if (lines.Length < 2)
throw new ArgumentException("不正な text/x-moz-url フォーマットです", nameof(data));
- return new Tuple<string, string>(lines[0], lines[1]);
+ return (lines[0], lines[1]);
}
}
else if (data.GetDataPresent("IESiteModeToUrl"))
if (lines.Length < 2)
throw new ArgumentException("不正な IESiteModeToUrl フォーマットです", nameof(data));
- return new Tuple<string, string>(lines[0], lines[1]);
+ return (lines[0], lines[1]);
}
}
else if (data.GetDataPresent("UniformResourceLocatorW"))
using (var stream = (MemoryStream)data.GetData("UniformResourceLocatorW"))
{
var url = Encoding.Unicode.GetString(stream.ToArray()).TrimEnd('\0');
- return new Tuple<string, string>(url, null);
+ return (url, null);
}
}
{
if (string.IsNullOrEmpty(_rclickTabName)) return;
- string _;
- TabRename(_rclickTabName, out _);
+ TabRename(_rclickTabName, out var _);
}
private async void BitlyToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
- var task = this.twitterApi.FriendshipsCreate(id);
+ var task = this.twitterApi.FriendshipsCreate(id).IgnoreResponse();
await dialog.WaitForAsync(this, task);
}
catch (WebApiException ex)
{
try
{
- var task = this.twitterApi.FriendshipsDestroy(id);
+ var task = this.twitterApi.FriendshipsDestroy(id).IgnoreResponse();
await dialog.WaitForAsync(this, task);
}
catch (WebApiException ex)
return;
}
- StatusText.Text = " " + MyCommon.GetStatusUrl(_curPost);
+ var selection = (this.StatusText.SelectionStart, this.StatusText.SelectionLength);
+
+ StatusText.Text += " " + MyCommon.GetStatusUrl(_curPost);
this.inReplyTo = null;
- StatusText.SelectionStart = 0;
+ (this.StatusText.SelectionStart, this.StatusText.SelectionLength) = selection;
StatusText.Focus();
}
}
string rtdata = _curPost.Text;
rtdata = CreateRetweetUnofficial(rtdata, this.StatusText.Multiline);
- StatusText.Text = " RT @" + _curPost.ScreenName + ": " + rtdata;
+ var selection = (this.StatusText.SelectionStart, this.StatusText.SelectionLength);
+
+ StatusText.Text += " RT @" + _curPost.ScreenName + ": " + rtdata;
// 投稿時に in_reply_to_status_id を付加する
var inReplyToStatusId = this._curPost.RetweetedId ?? this._curPost.StatusId;
var inReplyToScreenName = this._curPost.ScreenName;
this.inReplyTo = Tuple.Create(inReplyToStatusId, inReplyToScreenName);
- StatusText.SelectionStart = 0;
+ (this.StatusText.SelectionStart, this.StatusText.SelectionLength) = selection;
StatusText.Focus();
}
}