private void StationStartupSettingForm_Load(object sender, EventArgs e) { downloadNumNumericUpDown.Minimum = Station.STARTUP_DOWNLOAD_NUM_MIN; deleteRemainDayNumericUpDown.Minimum = Station.STARTUP_DELETE_REMAIN_DAY_MIN; Station[] stations = StationList.GetStationList(); stationStartupSettings = new StationStartupSetting[stations.Length]; for (int i = 0; i < stations.Length; ++i) { stationStartupSettings[i] = new StationStartupSetting(stations[i]); } foreach (Station station in StationList.GetStationList()) { stationListComboBox.Items.Add(station.Name); } if (stationListComboBox.Items.Count > 0) { stationListComboBox.SelectedIndex = 0; } else { stationListComboBox.Enabled = false; startupDownloadCheckBox.Enabled = false; downloadNumNumericUpDown.Enabled = false; startupDeleteCheckBox.Enabled = false; deleteRemainDayNumericUpDown.Enabled = false; } }
private void StationsSettingForm_Load(object sender, EventArgs e) { SetAnchorControl(); FixWindowSize(); ButtonsEnable(); // 放送局情報の読み込み foreach (Station station in StationList.GetStationList()) { alStationList.Add(station); stationListBox.Items.Add(station.DisplayName); } }
/// <summary> /// 切り替えボックスの追加 /// </summary> private void AddStationFilterComboBoxItem() { // フォームをいったん選択不可にする this.Enabled = false; // 各放送局の切り替えボックスをいったんクリアする this.stationFilterComboBox.Items.Clear(); // 切り替えボックスの先頭に"All"を追加 this.stationFilterComboBox.Items.Add("All"); // 各放送局の切り替えボックスの追加 foreach (Station station in StationList.GetStationList()) { this.stationFilterComboBox.Items.Add(station.DisplayName); } // 切り替えボックスが追加し終わったので、フォームを選択可能にする this.Enabled = true; // 放送局が選択されておらず、かつ放送局がある場合 if (this.stationFilterComboBox.SelectedIndex == -1 && this.stationFilterComboBox.Items.Count > 0) { // トップの放送局を選択 this.stationFilterComboBox.SelectedIndex = 0; } }
private void SettingForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // 設定の書き込み UserSetting.PodcastClipDirectoryPath = podcastClipDirectoryPathTextBox.Text.Trim(); UserSetting.MediaPlayerPath = mediaPlayerPathTextBox.Text.Trim(); UserSetting.BrowserPath = browserPathTextBox.Text.Trim(); if (proxyUnuseRadioButton.Checked == true) { UserSetting.ProxyUse = UserSetting.ProxyConnect.Unuse; } else if (proxyUseOsSettingRadioButton.Checked == true) { UserSetting.ProxyUse = UserSetting.ProxyConnect.OsSetting; } else if (proxyUseOriginalSettingRadioButton.Checked == true) { UserSetting.ProxyUse = UserSetting.ProxyConnect.OriginalSetting; } else { // ここに到達することはあり得ない Trace.Assert(false, "想定外の動作のため、終了します"); } UserSetting.ProxyServer = proxyServerTextBox.Text.Trim(); try { UserSetting.ProxyPort = int.Parse(proxyPortTextBox.Text.Trim()); } catch (ArgumentException) { ; } catch (FormatException) { ; } catch (OverflowException) { ; } try { UserSetting.SaveSetting(); } catch (IOException) { MessageBox.Show("設定ファイルが書き込めませんでした", "設定ファイル書き込みエラー"); } if (podcastClipDirectoryPathTextBox.Modified == true) { // 「Podcastをクリップするフォルダ」にローカルヘッドラインが格納されるために、 // 「Podcastをクリップするフォルダ」の場所が変わったので、ローカルヘッドラインの // URLを作り直す foreach (Station station in StationList.GetStationList()) { // ローカルヘッドラインのURLの作り直し station.LocalHeadline.SetUrl( new Uri(UserSetting.PodcastClipDirectoryPath + @"\" + station.LocalHeadline.GetId() + @"\" + PodcasCoInfo.LocalRssFile)); // ローカルヘッドラインの番組を破棄する station.LocalHeadline.ClearChannels(); // ローカルヘッドラインの内容が書き換わったので設定を保存する station.LocalHeadline.SaveSetting(); } } }
/// <summary> /// 設定をファイルに保存 /// </summary> public static void SaveSetting() { FileStream fs = null; XmlTextWriter writer = null; try { fs = new FileStream(SettingPath, FileMode.Create, FileAccess.Write); writer = new XmlTextWriter(fs, Encoding.GetEncoding("utf-8")); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(true); writer.WriteStartElement("Setting"); writer.WriteStartElement("Header"); writer.WriteStartElement("Name"); writer.WriteAttributeString("name", PodcasCoInfo.ApplicationName); writer.WriteEndElement(); // End of Name. writer.WriteStartElement("Version"); writer.WriteAttributeString("version", PodcasCoInfo.VersionNumber); writer.WriteEndElement(); // End of Version. writer.WriteStartElement("Date"); writer.WriteAttributeString("date", DateTime.Now.ToString()); writer.WriteEndElement(); // End of Date. writer.WriteEndElement(); // End of Header. writer.WriteStartElement("Content"); writer.WriteStartElement("StationList"); foreach (Station station in StationList.GetStationList()) { writer.WriteStartElement("Station"); writer.WriteAttributeString("id", station.Id); writer.WriteAttributeString("name", station.Name); writer.WriteAttributeString("kind", station.Kind.ToString()); writer.WriteAttributeString("startupDownload", station.StartupDownload.ToString()); writer.WriteAttributeString("startupDownloadNum", station.StartupDownloadNum.ToString()); writer.WriteAttributeString("startupDelete", station.StartupDelete.ToString()); writer.WriteAttributeString("startupDeleteRemainDay", station.StartupDeleteRemainDay.ToString()); writer.WriteEndElement(); // End of Station } writer.WriteEndElement(); // End of StationList writer.WriteStartElement("PodcastClipDirectoryPath"); writer.WriteAttributeString("path", PodcastClipDirectoryPath); writer.WriteEndElement(); // End of PodcastClipDirectoryPath writer.WriteStartElement("MediaPlayerPath"); writer.WriteAttributeString("path", MediaPlayerPath); writer.WriteEndElement(); // End of MediaPlayerPath writer.WriteStartElement("BrowserPath"); writer.WriteAttributeString("path", BrowserPath); writer.WriteEndElement(); // End of BrowserPath writer.WriteStartElement("Proxy"); writer.WriteAttributeString("use", ProxyUse.ToString()); writer.WriteAttributeString("server", ProxyServer); writer.WriteAttributeString("port", ProxyPort.ToString()); writer.WriteEndElement(); // End of Porxy writer.WriteStartElement("ChannelSort"); writer.WriteAttributeString("sort", ChannelSort.ToString()); writer.WriteEndElement(); // End of ChannelSort writer.WriteEndElement(); // End of Content. writer.WriteEndElement(); // End of Setting. writer.WriteEndDocument(); } finally { writer.Close(); fs.Close(); } }
private void MainForm_Load(object sender, EventArgs e) { try { // 起動時のチェック PodcasCoSpecificProcess.StartUpCheck(); } catch (DllNotFoundException ex) { MessageBox.Show(ex.Message); Application.Exit(); return; } try { // 起動時の初期化 PodcasCoSpecificProcess.StartUpInitialize(); StationList.StationListChanged += new EventHandler(StationList_StationListChanged); AddStationFilterComboBoxItem(); // 起動直後には放送局切り替えボックスで"All"を選択する stationFilterComboBox.SelectedIndex = 0; // 放送局リストがある場合 if (StationList.GetStationList().Length > 0) { // ローカルヘッドラインのみの番組表をチェックする CheckHeadlines(CheckHeadlinesOption.LocalOnly); } } catch (XmlException) { MessageBox.Show("設定ファイルが読み込めませんでした", "設定ファイルの解析エラー"); } catch (IOException) { MessageBox.Show("設定ファイルが読み込めませんでした", "設定ファイルの読み込みエラー"); } catch (ArgumentNullException) { MessageBox.Show("設定ファイルが読み込めませんでした", "設定ファイルの読み込みエラー"); } StationList.HeadlineFetching += new FetchEventHandler(StationList_HeadlineFetching); StationList.HeadlineAnalyzing += new HeadlineAnalyzeEventHandler(StationList_HeadlineAnalyzing); #region 起動時自動ダウンロード // クリップする番組の数をカウントする int clipCount = 0; foreach (Station station in StationList.GetStationList()) { // 現在の放送局を設定する StationList.ChangeCurrentStation(station); // 指定の個数の番組を自動ダウンロードし、指定の日数より古い番組を自動削除する if (station.StartupDownload == true && station.StartupDelete == true) { // 指定の個数の番組を自動ダウンロードする if (station.StartupDownloadNum > 0) { // グローバルヘッドラインを取得する station.GlobalHeadline.FetchHeadline(); // グローバル・ローカルの両方の番組 IChannel[] channels = StationList.GetChannelsOfCurrentStationFromAllHeadline(); // 日付で降順ソートする Array.Sort(channels, 0, channels.Length, (IComparer) new ChannelDateComparer()); Array.Reverse(channels, 0, channels.Length); // これより古い日付のものはダウンロードしない DateTime undownloadDate = DateTime.Today.Subtract(new TimeSpan(station.StartupDeleteRemainDay - 1, 0, 0, 0)); for (int i = 0; i < station.StartupDownloadNum && i < channels.Length; ++i) { if (station.ContainLocalHeadline(channels[i]) == false && channels[i].GetDate() > undownloadDate) { // チェックを立てる channels[i].Check = true; ++clipCount; } } } } else if (station.StartupDownload == true && station.StartupDelete == false) { // 指定の個数の番組を自動ダウンロードする if (station.StartupDownloadNum > 0) { // グローバルヘッドラインを取得する station.GlobalHeadline.FetchHeadline(); // グローバル・ローカルの両方の番組 IChannel[] channels = StationList.GetChannelsOfCurrentStationFromAllHeadline(); // 日付で降順ソートする Array.Sort(channels, 0, channels.Length, (IComparer) new ChannelDateComparer()); Array.Reverse(channels, 0, channels.Length); for (int i = 0; i < station.StartupDownloadNum && i < channels.Length; ++i) { if (station.ContainLocalHeadline(channels[i]) == false) { // チェックを立てる channels[i].Check = true; ++clipCount; } } } } } // 現在の放送局を全放送局に戻す StationList.ChangeCurrentStationAt(-1); // ダウンロードする番組が存在する場合 if (clipCount > 0) { // チェックのある番組をダウンロードする ClipPodcast(); } #endregion // 起動時自動ダウンロード #region 起動時自動削除 // クリップする番組の数をカウントする int deleteCount = 0; foreach (Station station in StationList.GetStationList()) { // 指定の日数より古い番組を自動削除する if (station.StartupDelete == true) { // これより古い日付のものは削除する DateTime deleteDate = DateTime.Today.Subtract(new TimeSpan(station.StartupDeleteRemainDay - 1, 0, 0, 0)); foreach (IChannel channel in station.LocalHeadline.GetChannels()) { if (channel.GetDate() <= deleteDate) { channel.Check = true; ++deleteCount; } } } } // 削除する番組が存在する場合 if (deleteCount > 0) { // チェックのある番組を削除する DeletePodcast(); } #endregion // 起動時自動削除 // 番組リストを更新する UpdateChannelList(); SetAnchorControl(); FixWindowSize(); }