using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BSE.Platten.Common;
namespace BSE.Platten.Audio
{
public partial class CReadAudioDirectories : BaseForm
{
#region Events
public event EventHandler<ReadDirectoriesEventArgs> FoundDirectory;
public event EventHandler<ReadFilesEventArgs> FoundFile;
public event System.EventHandler ReadingComplete;
#endregion
#region Delegates
private delegate void CloseWindowHandler();
private delegate void WriteCaptionHandler(string strText);
#endregion
#region FieldsPrivate
private System.IO.DirectoryInfo m_directoryInfo;
private string m_strSearchPattern;
private bool m_bOnlyScanFolders;
private ReadDirectoriesAndFiles m_readDirectoriesAndFiles;
private bool m_bCancelReading;
#endregion
#region MethodsPublic
public CReadAudioDirectories()
{
InitializeComponent();
}
public CReadAudioDirectories(System.IO.DirectoryInfo directoryInfo, string strSearchPattern, bool bOnlyScanFolders)
: this()
{
this.m_directoryInfo = directoryInfo;
this.m_strSearchPattern = strSearchPattern;
this.m_bOnlyScanFolders = bOnlyScanFolders;
}
#endregion
#region MethodsProtected
/// <summary>
/// wird ausgel�st, wenn ein Verzeichnis gefunden wurde
/// </summary>
/// <param name="e"></param>
protected virtual void OnFoundDirectory(object sender, ReadDirectoriesEventArgs e)
{
if (this.FoundDirectory != null)
{
this.FoundDirectory(sender, e);
}
}
/// <summary>
/// wird ausgel�st, wenn eine Datei gefunden wurde
/// </summary>
/// <param name="e"></param>
protected virtual void OnFoundFile(object sender, ReadFilesEventArgs e)
{
if (this.FoundFile != null)
{
this.FoundFile(sender, e);
}
}
protected virtual void OnReadingComplete(object sender, System.EventArgs e)
{
if (this.ReadingComplete != null)
{
this.ReadingComplete(this, e);
}
}
#endregion
#region MethodsPrivate
private void m_btnCancel_Click(object sender, EventArgs e)
{
if (this.m_readDirectoriesAndFiles != null)
{
this.m_readDirectoriesAndFiles.CancelRead();
}
}
private void CReadAudioDirectories_Load(object sender, EventArgs e)
{
if (this.m_bOnlyScanFolders)
{
this.m_readDirectoriesAndFiles = new ReadDirectories(this, this.m_strSearchPattern, this.m_directoryInfo);
}
else
{
this.m_readDirectoriesAndFiles = new ReadFiles(this, this.m_strSearchPattern, this.m_directoryInfo);
}
this.m_readDirectoriesAndFiles.CancelReading += new System.EventHandler(
this.readDirectoriesAndFiles_CancelReading);
this.m_readDirectoriesAndFiles.ReadingComplete += new System.EventHandler(
this.readDirectoriesAndFiles_EndReading);
this.m_readDirectoriesAndFiles.ReadDirectory += new EventHandler<ReadDirectoriesEventArgs>(
this.ReadDirectoriesAndFiles_ReadDirectory);
this.m_readDirectoriesAndFiles.FoundDirectory += new EventHandler<ReadDirectoriesEventArgs>(
this.ReadDirectoriesAndFiles_FoundDirectory);
this.m_readDirectoriesAndFiles.ReadFile += new EventHandler<ReadFilesEventArgs>(
this.ReadDirectoriesAndFiles_ReadFile);
this.m_readDirectoriesAndFiles.FoundFile += new EventHandler<ReadFilesEventArgs>(
this.ReadDirectoriesAndFiles_FoundFile);
}
private void CReadAudioDirectories_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.m_readDirectoriesAndFiles != null)
{
this.m_readDirectoriesAndFiles.CancelRead();
}
}
private void readDirectoriesAndFiles_CancelReading(object sender, System.EventArgs e)
{
if (this.m_bCancelReading == false)
{
System.Diagnostics.Trace.WriteLine("CReadAudioDirectories - CancelReading");
this.m_bCancelReading = true;
this.Invoke(new CloseWindowHandler(CloseWindow));
}
}
private void readDirectoriesAndFiles_EndReading(object sender, System.EventArgs e)
{
OnReadingComplete(this, new System.EventArgs());
this.Invoke(new CloseWindowHandler(CloseWindow));
}
private void ReadDirectoriesAndFiles_ReadDirectory(object sender, ReadDirectoriesEventArgs e)
{
//die Caption des Dialogs wird geschrieben
this.Invoke(new WriteCaptionHandler(WriteCaptionText), string.Format("lese {0}", e.DirectoryInfo.FullName));
}
private void ReadDirectoriesAndFiles_FoundDirectory(object sender, ReadDirectoriesEventArgs e)
{
//der Event bei gefundenem Directory wird weitergegeben
OnFoundDirectory(sender, e);
}
private void ReadDirectoriesAndFiles_ReadFile(object sender, ReadFilesEventArgs e)
{
//die Caption des Dialogs wird geschrieben
this.Invoke(new WriteCaptionHandler(WriteCaptionText), string.Format("lese {0}", e.FileInfo.FullName));
}
private void ReadDirectoriesAndFiles_FoundFile(object sender, ReadFilesEventArgs e)
{
//der Event bei gefundenem File wird weitergegeben
OnFoundFile(sender, e);
}
private void CloseWindow()
{
this.Close();
}
private void WriteCaptionText(string strCaptionText)
{
this.Text = strCaptionText;
}
#endregion
}
}