一定時間接続されていないチャンネルを自動削除する機能を追加した

一定時間接続されていないチャンネルを自動削除するChannelCleanerクラスを追加した。
その実現のために一定時間ごとにメソッド呼び出しが行われるIChannelMonitorインターフェースを追加した。
GUIに未接続チャンネル自動削除用の設定を追加した

GUIの設定タブに未接続チャンネル自動削除までの時間設定を追加した。
設定保存用の新しいクラスPecaSettingsを追加した

従来の.NET標準の設定保存だとアセンブリ横断で設定を保存するのが難しかったため、独自に設定保存管理するPecaSettingsクラスを追加した。
一部の設定を新しい設定ファイルに移行した

一部の設定をPecaSettingsを使用した新しい設定ファイルに移行した。
GUIのログ関係のみ整理の必要があるためまだ従来の設定を使用している。
グローバル変数扱いだった設定保存クラスをPeerCastApplicationのメンバに移動した

設定保存用のPecaSettingsクラスが静的クラスのため各種設定が実質グローバル変数になっていて気持ち悪かったので、通常のクラスにしてPeerCastApplicationクラス経由でインスタンスを取得して使うようにした。
PeerCastApplicationのインスタンスはIUserInterface.Startからしか取得できないため、UI以外のプラグイン用には別途適切なインターフェースを追加する必要がある。
ログの出力先管理をLoggerクラスで行うようにした

Loggerクラスは出力先の保持しか行っておらず実際の出力先の追加はGUIのMainFormで行っていたが、
GUIへの出力はともかくファイルやコンソールへの出力可否をGUIで制御するのはおかしい状態だったのでLoggerクラス自身で行うようにした。
Logger.OutputTargetプロパティで出力先を指定するとLogger内で自動的に出力先を設定するようにし、従来のLogger.AddWriterで追加できる出力先は主にUI用として、LoggerOutputTarget.UserInterfaceを有効にした場合のみ追加したTextWriterに出力されるようになる。
Logger.LogFileNameプロパティにログ出力先のファイル名を指定してLogger.OutputTargetでLoggerOutputTarget.Fileを有効にするとファイルへのログ書き出しも行える。

GUIでログ出力先の管理をする必要がなくなったので、GUIでログ周りの設定をしている部分も合わせて整理した。
ログ関係の設定保存をGUIからPeerCastStation.exeに移行した

PeerCastStation.GUIにログ関係の設定保存コードが入っていたが、もはやGUIに依存するところは何もないのでPeerCastStation.exe側で設定保存を管理するようにした。
LogLevelのFatalは現状選択しても意味がないので、UIから選択できないようにした #36

LogLevelのFatalは今のところ設定しても無視されるだけなので、UIの選択肢からも外した。
GUI起動時にログレベルがなしになってしまうのを修正した

ComboBoxのDataSourceを設定すると絶対SelectedValueChangedイベントが発生してしまっていたせいで、ログレベル選択用のリストボックスがLogLevel.Noneを選択してLoggerに設定してしまっていたので、DataSourceを設定したあとにSelectedValueChangedイベントを設定するようにした。