-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSettingsForm.cs
More file actions
108 lines (86 loc) · 3.82 KB
/
Copy pathSettingsForm.cs
File metadata and controls
108 lines (86 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using CrossPoster.Models;
using CrossPoster.Services;
using System;
using System.Windows.Forms;
namespace CrossPoster
{
/// <summary>
/// アプリケーションの設定を行うフォーム。
/// </summary>
public partial class SettingsForm : Form
{
#region Fields
private readonly SettingsManager _settingsManager = new SettingsManager();
/// <summary>
/// アプリケーションの設定を保持するオブジェクト。
/// null! (null forgiving operator) を使用し、コンストラクタ内で必ず初期化されることをコンパイラに伝えています。
/// </summary>
private AppSettings _settings = null!;
#endregion
#region Form Lifecycle
public SettingsForm()
{
InitializeComponent();
SetupPlaceholders();
LoadSettings();
}
#endregion
#region UI Event Handlers
/// <summary>
/// 保存ボタンがクリックされたときの処理。
/// </summary>
private void saveButton_Click(object sender, EventArgs e)
{
// UIのテキストボックスから設定オブジェクトに値を反映
_settings.Twitter.ConsumerKey = settingTwitterConsumerKey.Text;
_settings.Twitter.ConsumerKeySecret = settingTwitterConsumerKeySecret.Text;
_settings.Twitter.AccessToken = settingTwitterAccessToken.Text;
_settings.Twitter.AccessTokenSecret = settingTwitterAccessTokenSecret.Text;
_settings.Bluesky.Account = settingBlueskyAccount.Text;
_settings.Bluesky.Password = settingBlueskyAppPassword.Text;
_settings.Misskey.BaseUrl = settingMisskeyBaseUrl.Text;
_settings.Misskey.AccessToken = settingMisskeyAccessToken.Text;
// マネージャークラス経由で設定をファイルに保存
_settingsManager.Save(_settings);
MessageBox.Show("設定を保存しました。", "保存完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
/// <summary>
/// キャンセルボタンがクリックされたときの処理。
/// </summary>
private void cancelBtn_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region Private Methods
/// <summary>
/// フォームロード時に、各テキストボックスにプレースホルダー(入力例)を設定します。
/// </summary>
private void SetupPlaceholders()
{
settingBlueskyAccount.PlaceholderText = "例: account.bsky.social";
settingBlueskyAppPassword.PlaceholderText = "xxxx-xxxx-xxxx-xxxx";
settingMisskeyBaseUrl.PlaceholderText = "例: https://misskey.io/api";
}
/// <summary>
/// 設定ファイルを読み込み、その内容を各テキストボックスに表示します。
/// </summary>
private void LoadSettings()
{
_settings = _settingsManager.Load();
// Twitter
settingTwitterConsumerKey.Text = _settings.Twitter.ConsumerKey;
settingTwitterConsumerKeySecret.Text = _settings.Twitter.ConsumerKeySecret;
settingTwitterAccessToken.Text = _settings.Twitter.AccessToken;
settingTwitterAccessTokenSecret.Text = _settings.Twitter.AccessTokenSecret;
// Bluesky
settingBlueskyAccount.Text = _settings.Bluesky.Account;
settingBlueskyAppPassword.Text = _settings.Bluesky.Password;
// Misskey
settingMisskeyBaseUrl.Text = _settings.Misskey.BaseUrl;
settingMisskeyAccessToken.Text = _settings.Misskey.AccessToken;
}
#endregion
}
}