Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        /// <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;
            }
        }
Esempio n. 4
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();
                }
            }
        }
Esempio n. 5
0
        /// <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();
            }
        }
Esempio n. 6
0
        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();
        }