// (c) 2010-2011 fantasticswallow (@f_swallow) <http://twitter.com/f_swallow>
// (c) 2011 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.
-//
+// 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.Drawing;
+using System.IO;
using System.Linq;
+using System.Net.Http;
+using System.Resources;
using System.Text;
-using System.Windows.Forms;
using System.Threading;
-using System.IO;
-using System.Resources;
+using System.Threading.Tasks;
+using System.Windows.Forms;
using OpenTween.Api;
using OpenTween.Connection;
-using OpenTween.Thumbnail;
-using System.Threading.Tasks;
using OpenTween.Setting.Panel;
+using OpenTween.Thumbnail;
namespace OpenTween
{
public partial class AppendSettingDialog : OTBaseForm
{
- private static AppendSettingDialog _instance = new AppendSettingDialog();
- internal Twitter tw;
+ public event EventHandler<IntervalChangedEventArgs>? IntervalChanged;
- private bool _ValidationError = false;
-
- private long? InitialUserId;
-
- public TwitterConfiguration TwitterConfiguration = TwitterConfiguration.DefaultConfiguration();
+ public AppendSettingDialog()
+ {
+ this.InitializeComponent();
- private string _pin;
+ this.BasedPanel.StartAuthButton.Click += this.StartAuthButton_Click;
+ this.BasedPanel.CreateAccountButton.Click += this.CreateAccountButton_Click;
+ this.GetPeriodPanel.CheckPostAndGet.CheckedChanged += this.CheckPostAndGet_CheckedChanged;
+ this.ActionPanel.UReadMng.CheckedChanged += this.UReadMng_CheckedChanged;
- public event EventHandler<IntervalChangedEventArgs> IntervalChanged;
+ this.Icon = Properties.Resources.MIcon;
+ }
public void LoadConfig(SettingCommon settingCommon, SettingLocal settingLocal)
{
this.CooperatePanel.LoadConfig(settingCommon);
this.ConnectionPanel.LoadConfig(settingCommon);
this.NotifyPanel.LoadConfig(settingCommon);
-
- var activeUser = settingCommon.UserAccounts.FirstOrDefault(x => x.UserId == this.tw.UserId);
- if (activeUser != null)
- {
- this.BasedPanel.AuthUserCombo.SelectedItem = activeUser;
- this.InitialUserId = activeUser.UserId;
- }
}
public void SaveConfig(SettingCommon settingCommon, SettingLocal settingLocal)
this.CooperatePanel.SaveConfig(settingCommon);
this.ConnectionPanel.SaveConfig(settingCommon);
this.NotifyPanel.SaveConfig(settingCommon);
-
- var userAccountIdx = this.BasedPanel.AuthUserCombo.SelectedIndex;
- if (userAccountIdx != -1)
- {
- var u = settingCommon.UserAccounts[userAccountIdx];
- this.tw.Initialize(u.Token, u.TokenSecret, u.Username, u.UserId);
-
- if (u.UserId == 0)
- {
- this.tw.VerifyCredentials();
- u.UserId = this.tw.UserId;
- }
- }
- else
- {
- this.tw.ClearAuthInfo();
- this.tw.Initialize("", "", "", 0);
- }
}
private void TreeViewSetting_BeforeSelect(object sender, TreeViewCancelEventArgs e)
if (pnl == null) return;
pnl.Enabled = true;
pnl.Visible = true;
-
- if (pnl.Name == "PreviewPanel")
- {
- if (GrowlHelper.IsDllExists)
- {
- this.PreviewPanel.IsNotifyUseGrowlCheckBox.Enabled = true;
- }
- else
- {
- this.PreviewPanel.IsNotifyUseGrowlCheckBox.Enabled = false;
- }
- }
- }
-
- private void Save_Click(object sender, EventArgs e)
- {
- if (MyCommon.IsNetworkAvailable() &&
- (this.ShortUrlPanel.ComboBoxAutoShortUrlFirst.SelectedIndex == (int)MyCommon.UrlConverter.Bitly || this.ShortUrlPanel.ComboBoxAutoShortUrlFirst.SelectedIndex == (int)MyCommon.UrlConverter.Jmp))
- {
- // bit.ly 短縮機能実装のプライバシー問題の暫定対応
- // bit.ly 使用時はログインIDとAPIキーの指定を必須とする
- // 参照: http://sourceforge.jp/projects/opentween/lists/archive/dev/2012-January/000020.html
- if (string.IsNullOrEmpty(this.ShortUrlPanel.TextBitlyId.Text) || string.IsNullOrEmpty(this.ShortUrlPanel.TextBitlyPw.Text))
- {
- MessageBox.Show("bit.ly のログイン名とAPIキーの指定は必須項目です。", Application.ProductName);
- _ValidationError = true;
- TreeViewSetting.SelectedNode = TreeViewSetting.Nodes["ConnectionNode"].Nodes["ShortUrlNode"]; // 動作タブを選択
- TreeViewSetting.Select();
- this.ShortUrlPanel.TextBitlyId.Focus();
- return;
- }
-
- if (!BitlyValidation(this.ShortUrlPanel.TextBitlyId.Text, this.ShortUrlPanel.TextBitlyPw.Text))
- {
- MessageBox.Show(Properties.Resources.SettingSave_ClickText1);
- _ValidationError = true;
- TreeViewSetting.SelectedNode = TreeViewSetting.Nodes["ConnectionNode"].Nodes["ShortUrlNode"]; // 動作タブを選択
- TreeViewSetting.Select();
- this.ShortUrlPanel.TextBitlyId.Focus();
- return;
- }
- else
- {
- _ValidationError = false;
- }
- }
- else
- {
- _ValidationError = false;
- }
-
-#if UA
- //フォロー
- if (this.FollowCheckBox.Checked)
- {
- //現在の設定内容で通信
- HttpConnection.ProxyType ptype;
- if (RadioProxyNone.Checked)
- {
- ptype = HttpConnection.ProxyType.None;
- }
- else if (RadioProxyIE.Checked)
- {
- ptype = HttpConnection.ProxyType.IE;
- }
- else
- {
- ptype = HttpConnection.ProxyType.Specified;
- }
- string padr = TextProxyAddress.Text.Trim();
- int pport = int.Parse(TextProxyPort.Text.Trim());
- string pusr = TextProxyUser.Text.Trim();
- string ppw = TextProxyPassword.Text.Trim();
- HttpConnection.InitializeConnection(20, ptype, padr, pport, pusr, ppw);
-
- string ret = tw.PostFollowCommand(ApplicationSettings.FeedbackTwitterName);
- }
-#endif
}
private void Setting_FormClosing(object sender, FormClosingEventArgs e)
{
- if (MyCommon._endingFlag) return;
+ if (MyCommon.EndingFlag) return;
- if (tw != null && string.IsNullOrEmpty(tw.Username) && e.CloseReason == CloseReason.None)
+ if (this.BasedPanel.AuthUserCombo.SelectedIndex == -1 && e.CloseReason == CloseReason.None)
{
if (MessageBox.Show(Properties.Resources.Setting_FormClosing1, "Confirm", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
{
e.Cancel = true;
}
}
- if (_ValidationError)
- {
- e.Cancel = true;
- }
- if (e.Cancel == false && TreeViewSetting.SelectedNode != null)
+ if (e.Cancel == false && this.TreeViewSetting.SelectedNode != null)
{
- var curPanel = (SettingPanelBase)TreeViewSetting.SelectedNode.Tag;
+ var curPanel = (SettingPanelBase)this.TreeViewSetting.SelectedNode.Tag;
curPanel.Visible = false;
curPanel.Enabled = false;
}
private void Setting_Load(object sender, EventArgs e)
{
- this.TreeViewSetting.Nodes["BasedNode"].Tag = BasedPanel;
- this.TreeViewSetting.Nodes["BasedNode"].Nodes["PeriodNode"].Tag = GetPeriodPanel;
- this.TreeViewSetting.Nodes["BasedNode"].Nodes["StartUpNode"].Tag = StartupPanel;
- this.TreeViewSetting.Nodes["BasedNode"].Nodes["GetCountNode"].Tag = GetCountPanel;
- //this.TreeViewSetting.Nodes["BasedNode"].Nodes["UserStreamNode"].Tag = UserStreamPanel;
- this.TreeViewSetting.Nodes["ActionNode"].Tag = ActionPanel;
- this.TreeViewSetting.Nodes["ActionNode"].Nodes["TweetActNode"].Tag = TweetActPanel;
- this.TreeViewSetting.Nodes["PreviewNode"].Tag = PreviewPanel;
- this.TreeViewSetting.Nodes["PreviewNode"].Nodes["TweetPrvNode"].Tag = TweetPrvPanel;
- this.TreeViewSetting.Nodes["PreviewNode"].Nodes["NotifyNode"].Tag = NotifyPanel;
- this.TreeViewSetting.Nodes["FontNode"].Tag = FontPanel;
- this.TreeViewSetting.Nodes["FontNode"].Nodes["FontNode2"].Tag = FontPanel2;
- this.TreeViewSetting.Nodes["ConnectionNode"].Tag = ConnectionPanel;
- this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["ProxyNode"].Tag = ProxyPanel;
- this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["CooperateNode"].Tag = CooperatePanel;
- this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["ShortUrlNode"].Tag = ShortUrlPanel;
+ this.TreeViewSetting.Nodes["BasedNode"].Tag = this.BasedPanel;
+ this.TreeViewSetting.Nodes["BasedNode"].Nodes["PeriodNode"].Tag = this.GetPeriodPanel;
+ this.TreeViewSetting.Nodes["BasedNode"].Nodes["StartUpNode"].Tag = this.StartupPanel;
+ this.TreeViewSetting.Nodes["BasedNode"].Nodes["GetCountNode"].Tag = this.GetCountPanel;
+ this.TreeViewSetting.Nodes["ActionNode"].Tag = this.ActionPanel;
+ this.TreeViewSetting.Nodes["ActionNode"].Nodes["TweetActNode"].Tag = this.TweetActPanel;
+ this.TreeViewSetting.Nodes["PreviewNode"].Tag = this.PreviewPanel;
+ this.TreeViewSetting.Nodes["PreviewNode"].Nodes["TweetPrvNode"].Tag = this.TweetPrvPanel;
+ this.TreeViewSetting.Nodes["PreviewNode"].Nodes["NotifyNode"].Tag = this.NotifyPanel;
+ this.TreeViewSetting.Nodes["FontNode"].Tag = this.FontPanel;
+ this.TreeViewSetting.Nodes["FontNode"].Nodes["FontNode2"].Tag = this.FontPanel2;
+ this.TreeViewSetting.Nodes["ConnectionNode"].Tag = this.ConnectionPanel;
+ this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["ProxyNode"].Tag = this.ProxyPanel;
+ this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["CooperateNode"].Tag = this.CooperatePanel;
+ this.TreeViewSetting.Nodes["ConnectionNode"].Nodes["ShortUrlNode"].Tag = this.ShortUrlPanel;
this.TreeViewSetting.SelectedNode = this.TreeViewSetting.Nodes[0];
this.TreeViewSetting.ExpandAll();
- //TreeViewSetting.SelectedNode = TreeViewSetting.TopNode;
- ActiveControl = BasedPanel.StartAuthButton;
+ this.ActiveControl = this.BasedPanel.StartAuthButton;
}
private void UReadMng_CheckedChanged(object sender, EventArgs e)
}
}
- public string RecommendStatusText { get; set; }
-
- private bool StartAuth()
+ private async void StartAuthButton_Click(object sender, EventArgs e)
{
- //現在の設定内容で通信
- ProxyType ptype;
- if (this.ProxyPanel.RadioProxyNone.Checked)
- {
- ptype = ProxyType.None;
- }
- else if (this.ProxyPanel.RadioProxyIE.Checked)
- {
- ptype = ProxyType.IE;
- }
- else
- {
- ptype = ProxyType.Specified;
- }
- string padr = this.ProxyPanel.TextProxyAddress.Text.Trim();
- int pport = int.Parse(this.ProxyPanel.TextProxyPort.Text.Trim());
- string pusr = this.ProxyPanel.TextProxyUser.Text.Trim();
- string ppw = this.ProxyPanel.TextProxyPassword.Text.Trim();
-
- //通信基底クラス初期化
- Networking.DefaultTimeout = TimeSpan.FromSeconds(20);
- Networking.SetWebProxy(ptype, padr, pport, pusr, ppw);
- HttpTwitter.TwitterUrl = this.ConnectionPanel.TwitterAPIText.Text.Trim();
- tw.Initialize("", "", "", 0);
- //this.AuthStateLabel.Text = Properties.Resources.AuthorizeButton_Click4;
- //this.AuthUserLabel.Text = "";
- string pinPageUrl = "";
- string rslt = tw.StartAuthentication(ref pinPageUrl);
- if (string.IsNullOrEmpty(rslt))
+ using (ControlTransaction.Disabled(this.BasedPanel.StartAuthButton))
{
- string pin = AuthDialog.DoAuth(this, pinPageUrl);
- if (!string.IsNullOrEmpty(pin))
+ try
{
- this._pin = pin;
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- MessageBox.Show(Properties.Resources.AuthorizeButton_Click2 + Environment.NewLine + rslt, "Authenticate", MessageBoxButtons.OK);
- return false;
- }
- }
+ this.ApplyNetworkSettings();
- private bool PinAuth()
- {
- string pin = this._pin; //PIN Code
+ var appToken = this.SelectAuthType();
+ if (appToken == null)
+ return;
- string rslt = tw.Authenticate(pin);
- if (string.IsNullOrEmpty(rslt))
- {
- MessageBox.Show(Properties.Resources.AuthorizeButton_Click1, "Authenticate", MessageBoxButtons.OK);
- //this.AuthStateLabel.Text = Properties.Resources.AuthorizeButton_Click3;
- //this.AuthUserLabel.Text = tw.Username;
- int idx = -1;
- UserAccount user = new UserAccount();
- user.Username = tw.Username;
- user.UserId = tw.UserId;
- user.Token = tw.AccessToken;
- user.TokenSecret = tw.AccessTokenSecret;
-
- foreach (object u in this.BasedPanel.AuthUserCombo.Items)
- {
- if (((UserAccount)u).Username.ToLower() == tw.Username.ToLower())
+ UserAccount newAccount;
+ if (appToken.AuthType == APIAuthType.TwitterComCookie)
{
- idx = this.BasedPanel.AuthUserCombo.Items.IndexOf(u);
- break;
+ newAccount = new()
+ {
+ TwitterAuthType = appToken.AuthType,
+ TwitterComCookie = appToken.TwitterComCookie,
+ };
+
+ using var twitterApi = new TwitterApi();
+ twitterApi.Initialize(new TwitterCredentialCookie(appToken), 0L, "");
+ var twitterUser = await twitterApi.AccountVerifyCredentials();
+ newAccount.UserId = twitterUser.Id;
+ newAccount.Username = twitterUser.ScreenName;
}
+ else
+ {
+ var account = await this.PinAuth(appToken);
+ if (account == null)
+ return;
+ newAccount = account;
+ }
+
+ var authUserCombo = this.BasedPanel.AuthUserCombo;
+
+ var oldAccount = authUserCombo.Items.Cast<UserAccount>()
+ .FirstOrDefault(x => x.UserId == newAccount.UserId);
+
+ int idx;
+ if (oldAccount != null)
+ {
+ idx = authUserCombo.Items.IndexOf(oldAccount);
+ authUserCombo.Items[idx] = newAccount;
+ }
+ else
+ {
+ idx = authUserCombo.Items.Add(newAccount);
+ }
+
+ authUserCombo.SelectedIndex = idx;
+
+ MessageBox.Show(
+ this,
+ Properties.Resources.AuthorizeButton_Click1,
+ "Authenticate",
+ MessageBoxButtons.OK);
}
- if (idx > -1)
- {
- this.BasedPanel.AuthUserCombo.Items.RemoveAt(idx);
- this.BasedPanel.AuthUserCombo.Items.Insert(idx, user);
- this.BasedPanel.AuthUserCombo.SelectedIndex = idx;
- }
- else
+ catch (TwitterApiException ex)
{
- this.BasedPanel.AuthUserCombo.SelectedIndex = this.BasedPanel.AuthUserCombo.Items.Add(user);
- }
- //if (TwitterApiInfo.AccessLevel = ApiAccessLevel.ReadWrite)
- //{
- // this.AuthStateLabel.Text += "(xAuth)";
- //}
- //else if (TwitterApiInfo.AccessLevel == ApiAccessLevel.ReadWriteAndDirectMessage)
- //{
- // this.AuthStateLabel.Text += "(OAuth)";
- //}
- return true;
- }
- else
- {
- MessageBox.Show(Properties.Resources.AuthorizeButton_Click2 + Environment.NewLine + rslt, "Authenticate", MessageBoxButtons.OK);
- //this.AuthStateLabel.Text = Properties.Resources.AuthorizeButton_Click4;
- //this.AuthUserLabel.Text = "";
- return false;
- }
- }
+ var message = Properties.Resources.AuthorizeButton_Click2 + Environment.NewLine +
+ string.Join(Environment.NewLine, ex.LongMessages);
- private void StartAuthButton_Click(object sender, EventArgs e)
- {
- //this.Save.Enabled = false;
- if (StartAuth())
- {
- if (PinAuth())
- {
- //this.Save.Enabled = true;
+ MessageBox.Show(this, message, "Authenticate", MessageBoxButtons.OK);
}
}
}
- private void CheckPostAndGet_CheckedChanged(object sender, EventArgs e)
+ /// <summary>
+ /// 現在設定画面に入力されているネットワーク関係の設定を適用します
+ /// </summary>
+ public void ApplyNetworkSettings()
{
- this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked && !tw.UserStreamEnabled;
- }
+ ProxyType proxyType;
+ if (this.ProxyPanel.RadioProxyNone.Checked)
+ proxyType = ProxyType.None;
+ else if (this.ProxyPanel.RadioProxyIE.Checked)
+ proxyType = ProxyType.IE;
+ else
+ proxyType = ProxyType.Specified;
- private void Setting_Shown(object sender, EventArgs e)
- {
- do
- {
- Thread.Sleep(10);
- if (this.Disposing || this.IsDisposed) return;
- } while (!this.IsHandleCreated);
- this.TopMost = this.PreviewPanel.CheckAlwaysTop.Checked;
+ var proxyAddress = this.ProxyPanel.TextProxyAddress.Text.Trim();
+ var proxyPort = int.Parse(this.ProxyPanel.TextProxyPort.Text.Trim());
+ var proxyUser = this.ProxyPanel.TextProxyUser.Text.Trim();
+ var proxyPassword = this.ProxyPanel.TextProxyPassword.Text.Trim();
+ Networking.SetWebProxy(proxyType, proxyAddress, proxyPort, proxyUser, proxyPassword);
+
+ var timeout = int.Parse(this.ConnectionPanel.ConnectionTimeOut.Text.Trim());
+ Networking.DefaultTimeout = TimeSpan.FromSeconds(timeout);
+
+ var uploadImageTimeout = int.Parse(this.ConnectionPanel.UploadImageTimeout.Text.Trim());
+ Networking.UploadImageTimeout = TimeSpan.FromSeconds(uploadImageTimeout);
- this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked && !tw.UserStreamEnabled;
- this.GetPeriodPanel.LabelUserStreamActive.Visible = tw.UserStreamEnabled;
+ Networking.ForceIPv4 = this.ConnectionPanel.checkBoxForceIPv4.Checked;
+
+ TwitterApiConnection.RestApiHost = this.ConnectionPanel.TwitterAPIText.Text.Trim();
}
- public static AppendSettingDialog Instance
+ private TwitterAppToken? SelectAuthType()
{
- get { return _instance; }
+ using var dialog = new AuthTypeSelectDialog();
+
+ var ret = dialog.ShowDialog(this);
+ if (ret != DialogResult.OK)
+ return null;
+
+ return dialog.Result;
}
- private bool BitlyValidation(string id, string apikey)
+ private async Task<UserAccount?> PinAuth(TwitterAppToken appToken)
{
- if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(apikey))
- {
- return false;
- }
+ var requestToken = await TwitterApiConnection.GetRequestTokenAsync(appToken);
- string req = "http://api.bit.ly/v3/validate";
- string content = "";
- Dictionary<string, string> param = new Dictionary<string, string>();
+ var pinPageUrl = TwitterApiConnection.GetAuthorizeUri(requestToken);
- param.Add("login", ApplicationSettings.BitlyLoginId);
- param.Add("apiKey", ApplicationSettings.BitlyApiKey);
- param.Add("x_login", id);
- param.Add("x_apiKey", apikey);
- param.Add("format", "txt");
+ var browserPath = this.ActionPanel.BrowserPathText.Text;
+ var pin = AuthDialog.DoAuth(this, pinPageUrl, browserPath);
+ if (MyCommon.IsNullOrEmpty(pin))
+ return null; // キャンセルされた場合
- if (!(new HttpVarious()).PostData(req, param, out content))
- {
- return true; // 通信エラーの場合はとりあえずチェックを通ったことにする
- }
- else if (content.Trim() == "1")
- {
- return true; // 検証成功
- }
- else if (content.Trim() == "0")
- {
- return false; // 検証失敗 APIキーとIDの組み合わせが違う
- }
- else
+ var accessTokenResponse = await TwitterApiConnection.GetAccessTokenAsync(requestToken, pin);
+
+ return new UserAccount
{
- return true; // 規定外応答:通信エラーの可能性があるためとりあえずチェックを通ったことにする
- }
+ TwitterAuthType = appToken.AuthType,
+ TwitterOAuth1ConsumerKey = appToken.OAuth1CustomConsumerKey?.Value ?? "",
+ TwitterOAuth1ConsumerSecret = appToken.OAuth1CustomConsumerSecret?.Value ?? "",
+ Username = accessTokenResponse["screen_name"],
+ UserId = long.Parse(accessTokenResponse["user_id"]),
+ Token = accessTokenResponse["oauth_token"],
+ TokenSecret = accessTokenResponse["oauth_token_secret"],
+ };
}
- private void Cancel_Click(object sender, EventArgs e)
- {
- _ValidationError = false;
- }
+ private void CheckPostAndGet_CheckedChanged(object sender, EventArgs e)
+ => this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked;
- //private void CheckEventNotify_CheckedChanged(object sender, EventArgs e)
- // Handles CheckEventNotify.CheckedChanged, CheckFavoritesEvent.CheckStateChanged,
- // CheckUnfavoritesEvent.CheckStateChanged, CheckFollowEvent.CheckStateChanged,
- // CheckListMemberAddedEvent.CheckStateChanged, CheckListMemberRemovedEvent.CheckStateChanged,
- // CheckListCreatedEvent.CheckStateChanged, CheckUserUpdateEvent.CheckStateChanged
- //{
- // EventNotifyEnabled = CheckEventNotify.Checked;
- // GetEventNotifyFlag(EventNotifyFlag, IsMyEventNotifyFlag);
- // ApplyEventNotifyFlag(EventNotifyEnabled, EventNotifyFlag, IsMyEventNotifyFlag);
- //}
-
- //private void CheckForceEventNotify_CheckedChanged(object sender, EventArgs e)
- //{
- // _MyForceEventNotify = CheckEventNotify.Checked;
- //}
-
- //private void CheckFavEventUnread_CheckedChanged(object sender, EventArgs e)
- //{
- // _MyFavEventUnread = CheckFavEventUnread.Checked;
- //}
-
- //private void ComboBoxTranslateLanguage_SelectedIndexChanged(object sender, EventArgs e)
- //{
- // _MyTranslateLanguage = (new Google()).GetLanguageEnumFromIndex(ComboBoxTranslateLanguage.SelectedIndex);
- //}
-
- //private void ComboBoxEventNotifySound_VisibleChanged(object sender, EventArgs e)
- //{
- // SoundFileListup();
- //}
-
- //private void ComboBoxEventNotifySound_SelectedIndexChanged(object sender, EventArgs e)
- //{
- // if (_soundfileListup) return;
-
- // _MyEventSoundFile = (string)ComboBoxEventNotifySound.SelectedItem;
- //}
-
- private void OpenUrl(string url)
+ private void Setting_Shown(object sender, EventArgs e)
{
- string myPath = url;
- string path = this.ActionPanel.BrowserPathText.Text;
- try
- {
- if (!string.IsNullOrEmpty(path))
- {
- if (path.StartsWith("\"") && path.Length > 2 && path.IndexOf("\"", 2) > -1)
- {
- int sep = path.IndexOf("\"", 2);
- string browserPath = path.Substring(1, sep - 1);
- string arg = "";
- if (sep < path.Length - 1)
- {
- arg = path.Substring(sep + 1);
- }
- myPath = arg + " " + myPath;
- System.Diagnostics.Process.Start(browserPath, myPath);
- }
- else
- {
- System.Diagnostics.Process.Start(path, myPath);
- }
- }
- else
- {
- System.Diagnostics.Process.Start(myPath);
- }
- }
- catch(Exception)
+ do
{
-// MessageBox.Show("ブラウザの起動に失敗、またはタイムアウトしました。" + ex.ToString());
+ Thread.Sleep(10);
+ if (this.Disposing || this.IsDisposed) return;
}
- }
+ while (!this.IsHandleCreated);
+ this.TopMost = this.PreviewPanel.CheckAlwaysTop.Checked;
- private void CreateAccountButton_Click(object sender, EventArgs e)
- {
- this.OpenUrl("https://twitter.com/signup");
+ this.GetPeriodPanel.LabelPostAndGet.Visible = this.GetPeriodPanel.CheckPostAndGet.Checked;
}
- public AppendSettingDialog()
+ private async Task OpenUrl(string url)
{
- InitializeComponent();
-
- this.BasedPanel.StartAuthButton.Click += this.StartAuthButton_Click;
- this.BasedPanel.CreateAccountButton.Click += this.CreateAccountButton_Click;
- this.GetPeriodPanel.CheckPostAndGet.CheckedChanged += this.CheckPostAndGet_CheckedChanged;
- this.ActionPanel.UReadMng.CheckedChanged += this.UReadMng_CheckedChanged;
-
- this.Icon = Properties.Resources.MIcon;
+ var browserPathWithArgs = this.ActionPanel.BrowserPathText.Text;
+ await MyCommon.OpenInBrowserAsync(this, browserPathWithArgs, url);
}
+ private async void CreateAccountButton_Click(object sender, EventArgs e)
+ => await this.OpenUrl("https://twitter.com/signup");
+
private void GetPeriodPanel_IntervalChanged(object sender, IntervalChangedEventArgs e)
- {
- if (this.IntervalChanged != null)
- this.IntervalChanged(sender, e);
- }
+ => this.IntervalChanged?.Invoke(sender, e);
}
public class IntervalChangedEventArgs : EventArgs
{
- public bool UserStream;
public bool Timeline;
public bool Reply;
public bool DirectMessage;
public bool PublicSearch;
public bool Lists;
public bool UserTimeline;
+
+ public static IntervalChangedEventArgs ResetAll => new()
+ {
+ Timeline = true,
+ Reply = true,
+ DirectMessage = true,
+ PublicSearch = true,
+ Lists = true,
+ UserTimeline = true,
+ };
}
}