{\r
private List<RepositoryInfo> repos;\r
\r
- private bool isRepositoriesChanged;\r
+ private bool isRepoListChanged;\r
\r
+ /// <summary>\r
+ /// コンストラクタ\r
+ /// </summary>\r
public UserPrefForm()\r
{\r
repos = new List<RepositoryInfo>();\r
public void loadCurrentPref()\r
{\r
this.RepositoriesListSetting = NaGet.Utils.GetDeserializedObject<RepositoriesList>(NaGet.Env.RepositoriesListFile);\r
+ \r
+ NaGet.NaGetLibPref userPref = NaGet.Env.Pref;\r
+ this.ProxyAddress = userPref.ProxyAddress;\r
}\r
\r
+ #region レポジトリリスト設定関連\r
+ \r
+ /// <summary>\r
+ /// レポジトリリストの設定を読み書きする\r
+ /// </summary>\r
public RepositoriesList RepositoriesListSetting {\r
get {\r
RepositoriesList repoList = new RepositoriesList();\r
set {\r
repos.Clear();\r
repos.AddRange(value.Repositories);\r
- isRepositoriesChanged = false;\r
\r
updateRepos();\r
+ \r
+ // レポジトリ変更状態をリセットする\r
+ isRepoListChanged = false;\r
}\r
}\r
\r
+ /// <summary>\r
+ /// ListBoxへ表示するレポジトリ表現文字列を返す\r
+ /// </summary>\r
+ /// <param name="repo">対象レポジトリ</param>\r
+ /// <returns>ListBoxに表示すべき文字列</returns>\r
+ private string repoListCheckedListBoxRenderer(RepositoryInfo repo) {\r
+ return string.Format("{0}[{1}]", repo.Name, repo.Url.Href);\r
+ }\r
+\r
+ /// <summary>\r
+ /// ListBoxの内容を更新(再構築)する。\r
+ /// </summary>\r
private void updateRepos()\r
{\r
repoListCheckedListBox.Items.Clear();\r
}\r
}\r
\r
- public string repoListCheckedListBoxRenderer(RepositoryInfo repo)\r
- {\r
- return string.Format("{0}[{1}]", repo.Name, repo.Url.Href);\r
- }\r
- \r
- \r
void RepoListCheckedListBoxSelectedIndexChanged(object sender, EventArgs e)\r
{\r
int selectedIndex = repoListCheckedListBox.SelectedIndex;\r
updateRepos();\r
repoListCheckedListBox.SelectedIndex = repos.Count - 1;\r
\r
- isRepositoriesChanged = true;\r
+ isRepoListChanged = true;\r
}\r
\r
void RepoListCheckedListBoxItemCheck(object sender, ItemCheckEventArgs e)\r
{\r
repos[e.Index].Enabled = (e.NewValue == CheckState.Checked);\r
\r
- isRepositoriesChanged = true;\r
+ isRepoListChanged = true;\r
}\r
\r
void RemoveRepoButtonClick(object sender, EventArgs e)\r
repos.RemoveAt(selectedIndex);\r
repoListCheckedListBox.Items.RemoveAt(selectedIndex);\r
\r
- isRepositoriesChanged = true;\r
+ isRepoListChanged = true;\r
}\r
}\r
}\r
AppliStation.Util.GUIUtils.CheckedListBox_SwapItems(repoListCheckedListBox, selectedIndex-1, selectedIndex);\r
repoListCheckedListBox.SelectedIndex --;\r
\r
- isRepositoriesChanged = true;\r
+ isRepoListChanged = true;\r
}\r
}\r
\r
AppliStation.Util.GUIUtils.CheckedListBox_SwapItems(repoListCheckedListBox, selectedIndex, selectedIndex+1);\r
repoListCheckedListBox.SelectedIndex ++;\r
\r
- isRepositoriesChanged = true;\r
+ isRepoListChanged = true;\r
}\r
}\r
\r
{\r
int selectedIndex = repoListCheckedListBox.SelectedIndex;\r
if ((0 <= selectedIndex) && (selectedIndex < repos.Count)) {\r
- repos[selectedIndex].Url = new LocationEntry(repoUrlTextBox.Text);\r
- repoListCheckedListBox.Items[selectedIndex] = repoListCheckedListBoxRenderer(repos[selectedIndex]);\r
- \r
- isRepositoriesChanged = true;\r
+ if (repoUrlTextBox.Text != repos[selectedIndex].Url.Href) {\r
+ repos[selectedIndex].Url = new LocationEntry(repoUrlTextBox.Text);\r
+ repoListCheckedListBox.Items[selectedIndex] = repoListCheckedListBoxRenderer(repos[selectedIndex]);\r
+ \r
+ isRepoListChanged = true;\r
+ }\r
}\r
}\r
\r
+ /// <summary>\r
+ /// レポジトリリストが編集されたか否かのフラグ\r
+ /// </summary>\r
+ /// <remarks>ソフトリストの再読み込みが必要か否かの判断に使われる</remarks>\r
public bool IsRepositoryListSettingChanged {\r
- get { return isRepositoriesChanged; }\r
+ get { return isRepoListChanged; }\r
}\r
\r
- private void commitRepositorySetting()\r
+ /// <summary>\r
+ /// レポジトリリストの設定を反映する\r
+ /// </summary>\r
+ private void commitRepositoryListSetting()\r
{\r
- if (isRepositoriesChanged) {\r
+ if (isRepoListChanged) {\r
NaGet.Utils.PutSerializeObject<RepositoriesList>(NaGet.Env.RepositoriesListFile, this.RepositoriesListSetting);\r
}\r
}\r
\r
+ #endregion\r
+ \r
+ #region プロキシサーバ設定関連\r
+\r
+ /// <summary>\r
+ /// プロキシアドレスを設定あるいは取得する\r
+ /// </summary>\r
+ public string ProxyAddress {\r
+ get {\r
+ if (proxySameAsIERadioButton.Checked) {\r
+ return string.Empty; \r
+ } else if (directConnRadioButton.Checked) {\r
+ return "-";\r
+ } else {\r
+ return proxyURLTextBox.Text;\r
+ }\r
+ }\r
+ set {\r
+ if (string.IsNullOrEmpty(value)) {\r
+ proxySameAsIERadioButton.Checked = true; \r
+ } else if ("-" == value) {\r
+ directConnRadioButton.Checked = true;\r
+ } else {\r
+ specifyProxyRadioButton.Checked = true;\r
+ proxyURLTextBox.Text = value;\r
+ }\r
+ \r
+ updateProxyURLEnability();\r
+ }\r
+ }\r
+ \r
+ /// <summary>\r
+ /// ProxyURLのテキストボックス領域の有効状態を切り替える\r
+ /// </summary>\r
+ private void updateProxyURLEnability()\r
+ {\r
+ bool isSpecifiedProxy = specifyProxyRadioButton.Checked;\r
+ \r
+ proxyURLLabel.Enabled = isSpecifiedProxy;\r
+ proxyURLTextBox.Enabled = isSpecifiedProxy;\r
+ }\r
+ \r
+ void ProxyRadioButtonsCheckedChanged(object sender, EventArgs e)\r
+ {\r
+ updateProxyURLEnability();\r
+ }\r
+ \r
+ /// <summary>\r
+ /// プロキシ設定を、指定された設定オブジェクトに設定する。\r
+ /// </summary>\r
+ /// <param name="pref">設定オブジェクト</param>\r
+ private void commitProxySetting(NaGet.NaGetLibPref pref)\r
+ {\r
+ pref.ProxyAddress = this.ProxyAddress;\r
+ }\r
+ \r
+ #endregion\r
+ \r
+ /// <summary>\r
+ /// 指定された設定オブジェクトをファイルとして保存する\r
+ /// </summary>\r
+ /// <param name="pref">設定ファイル</param>\r
+ private void commitNaGetLibPref(NaGet.NaGetLibPref pref)\r
+ {\r
+ // ファイルに書き込む\r
+ string path = NaGet.Env.PrefPath;\r
+ NaGet.Utils.PutSerializeObject<NaGet.NaGetLibPref>(path, pref);\r
+ \r
+ // 設定についてファイルから設定を再読み込みさせる\r
+ NaGet.Env.LoadPref();\r
+ }\r
+ \r
void OkButtonClick(object sender, EventArgs e)\r
{\r
- commitRepositorySetting();\r
+ NaGet.NaGetLibPref pref = NaGet.Env.Pref;\r
+ \r
+ commitRepositoryListSetting();\r
+ commitProxySetting(pref);\r
+ \r
+ commitNaGetLibPref(pref);\r
}\r
\r
void CancelButtonClick(object sender, EventArgs e)\r