Files

186 lines
6.1 KiB
C#

namespace id3 {
using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
public class ID3TagEditor : System.Windows.Forms.Form {
// Menu Components
private MainMenu mForm;
private MenuItem mtFile;
private MenuItem miLoad;
private MenuItem miSave;
private MenuItem miExit;
private MenuItem mtHelp;
private MenuItem miAbout;
private MenuItem miSeparator;
// Label Components
private Label lblTitle;
private Label lblArtist;
private Label lblAlbum;
private Label lblYear;
private Label lblComment;
// Text Box Components
private TextBox tbTitle;
private TextBox tbArtist;
private TextBox tbAlbum;
private TextBox tbYear;
private TextBox tbComment;
// MP3 Struct
MP3 workingMP3;
public ID3TagEditor() {
// Create the components
CreateComponents();
// Setup the Form
this.Text = "MP3 Tag Editor (C# Example)";
this.MinimizeBox = true;
this.MaximizeBox = false;
this.Menu = mForm;
this.Size = new Size(340,180);
}
// method to create a Label
private Label createLabel(string pText, int pRow) {
Label rLabel = new Label();
rLabel.Text = pText;
rLabel.Location = new Point(5,8 + (pRow * 25));
rLabel.Size = new System.Drawing.Size (70, 20);
rLabel.Font = new System.Drawing.Font ("Arial", 10, System.Drawing.FontStyle.Bold);
rLabel.BackColor = System.Drawing.SystemColors.Control;
rLabel.TextAlign = ContentAlignment.MiddleRight;
return (rLabel);
}
// method to create a Text Box
private TextBox createTextBox(string pText, int pRow, int pLength) {
TextBox rTextBox = new TextBox ();
rTextBox.Location = new Point(75,5 + (pRow * 25));
rTextBox.ReadOnly = false;
rTextBox.Text = pText;
rTextBox.MaxLength = pLength;
rTextBox.Font = new System.Drawing.Font ("Arial", 10, System.Drawing.FontStyle.Bold);
rTextBox.Size = new System.Drawing.Size (250, 18);
rTextBox.BackColor = System.Drawing.SystemColors.Window;
rTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
return (rTextBox);
}
public void CreateComponents()
{
// Create Labels
lblTitle = createLabel("Title", 0);
lblArtist = createLabel("Artist", 1);
lblAlbum = createLabel("Album", 2);
lblYear = createLabel("Year", 3);
lblComment = createLabel("Comment", 4);
// Create TextBoxes
tbTitle = createTextBox ("", 0, 30);
tbArtist = createTextBox ("", 1, 30);
tbAlbum = createTextBox ("", 2, 30);
tbYear = createTextBox ("", 3, 4);
tbComment = createTextBox ("", 4, 28);
// Add Labels
this.Controls.Add(lblTitle);
this.Controls.Add(lblArtist);
this.Controls.Add(lblAlbum);
this.Controls.Add(lblYear);
this.Controls.Add(lblComment);
// Add Text Boxes
this.Controls.Add(tbTitle);
this.Controls.Add(tbArtist);
this.Controls.Add(tbAlbum);
this.Controls.Add(tbYear);
this.Controls.Add(tbComment);
//Instantiating Main Menu
mForm = new MainMenu();
// Add top level menu items
mtFile = new MenuItem("&File");
mtHelp = new MenuItem("&Help");
miSeparator = new MenuItem("-");
mForm.MenuItems.Add(mtFile);
mForm.MenuItems.Add(mtHelp);
// Add the Load MP3 menu item
miLoad = new MenuItem("&Load MP3", new EventHandler(eventLoadMP3), Shortcut.CtrlO);
// Add the Save MP3 menu item
miSave = new MenuItem("&Save MP3", new EventHandler(eventSaveMP3), Shortcut.CtrlS);
// Add the exit menu
miExit = new MenuItem("&Exit", new EventHandler(eventCloseForm));
// Add the about menu
miAbout = new MenuItem("&About", new EventHandler(eventAboutBox));
mtFile.MenuItems.Add(miLoad);
mtFile.MenuItems.Add(miSave);
mtFile.MenuItems.Add(miSeparator);
mtFile.MenuItems.Add(miExit);
mtHelp.MenuItems.Add(miAbout);
}
// Event for Loading an MP3
protected void eventLoadMP3(object pSender, EventArgs pArgs) {
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "MP3 files files (*.mp3)|*.mp3";
fileDialog.ShowDialog();
string fileName = fileDialog.FileName;
// If a file was selected get its ID3 Tag
if (fileName.Length > 0) {
FileInfo fFileInfo = new FileInfo(fileName); // Creating this FileInfo so I don't have to change my generic class
workingMP3 = new MP3(fFileInfo.DirectoryName, fFileInfo.Name); //fFile.DirectoryName, fFile.Name);
FileCommands.readMP3Tag (ref workingMP3);
tbTitle.Text = workingMP3.id3Title;
tbArtist.Text = workingMP3.id3Artist;
tbAlbum.Text = workingMP3.id3Album;
tbYear.Text = workingMP3.id3Year;
tbComment.Text = workingMP3.id3Comment;
}
}
// Event for Saving an MP3
protected void eventSaveMP3(object pSender, EventArgs pArgs) {
if (workingMP3.id3Title == null) return;
workingMP3.id3Title = tbTitle.Text;
workingMP3.id3Artist = tbArtist.Text;
workingMP3.id3Album = tbAlbum.Text;
workingMP3.id3Year = tbYear.Text;
workingMP3.id3Comment = tbComment.Text;
FileCommands.updateMP3Tag (ref workingMP3);
}
// Event for About Box
protected void eventAboutBox(object pSender, EventArgs pArgs) {
MessageBox.Show("By Paul Lockwood (paul_lockwood@yahoo.com).", "C# Example Code",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
// Event for Closing Form
protected void eventCloseForm(object pSender, EventArgs pArgs) {
Application.Exit();
}
// The Main method
public static void Main() {
Application.Run(new ID3TagEditor());
}
}
}