mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
180 lines
4.9 KiB
ObjectPascal
180 lines
4.9 KiB
ObjectPascal
unit Main;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, FileCtrl, ExtCtrls, ID3v2;
|
|
|
|
type
|
|
TMainForm = class(TForm)
|
|
DriveList: TDriveComboBox;
|
|
FolderList: TDirectoryListBox;
|
|
FileList: TFileListBox;
|
|
SaveButton: TButton;
|
|
RemoveButton: TButton;
|
|
CloseButton: TButton;
|
|
InfoBevel: TBevel;
|
|
IconImage: TImage;
|
|
TagExistsLabel: TLabel;
|
|
TagExistsValue: TEdit;
|
|
VersionLabel: TLabel;
|
|
VersionValue: TEdit;
|
|
SizeLabel: TLabel;
|
|
SizeValue: TEdit;
|
|
TitleLabel: TLabel;
|
|
TitleEdit: TEdit;
|
|
ArtistLabel: TLabel;
|
|
ArtistEdit: TEdit;
|
|
AlbumLabel: TLabel;
|
|
AlbumEdit: TEdit;
|
|
TrackLabel: TLabel;
|
|
TrackEdit: TEdit;
|
|
YearLabel: TLabel;
|
|
YearEdit: TEdit;
|
|
GenreLabel: TLabel;
|
|
GenreEdit: TEdit;
|
|
CommentLabel: TLabel;
|
|
CommentEdit: TEdit;
|
|
ComposerLabel: TLabel;
|
|
ComposerEdit: TEdit;
|
|
EncoderLabel: TLabel;
|
|
EncoderEdit: TEdit;
|
|
CopyrightLabel: TLabel;
|
|
CopyrightEdit: TEdit;
|
|
LanguageLabel: TLabel;
|
|
LanguageEdit: TEdit;
|
|
LinkLabel: TLabel;
|
|
LinkEdit: TEdit;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FileListChange(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure SaveButtonClick(Sender: TObject);
|
|
procedure RemoveButtonClick(Sender: TObject);
|
|
procedure CloseButtonClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
FileTag: TID3v2;
|
|
procedure ClearAll;
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TMainForm.ClearAll;
|
|
begin
|
|
{ Clear all captions }
|
|
TagExistsValue.Text := '';
|
|
VersionValue.Text := '';
|
|
SizeValue.Text := '';
|
|
TitleEdit.Text := '';
|
|
ArtistEdit.Text := '';
|
|
AlbumEdit.Text := '';
|
|
TrackEdit.Text := '';
|
|
YearEdit.Text := '';
|
|
GenreEdit.Text := '';
|
|
CommentEdit.Text := '';
|
|
ComposerEdit.Text := '';
|
|
EncoderEdit.Text := '';
|
|
CopyrightEdit.Text := '';
|
|
LanguageEdit.Text := '';
|
|
LinkEdit.Text := '';
|
|
end;
|
|
|
|
procedure TMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
{ Create object and clear captions }
|
|
FileTag := TID3v2.Create;
|
|
ClearAll;
|
|
end;
|
|
|
|
procedure TMainForm.FileListChange(Sender: TObject);
|
|
begin
|
|
{ Clear captions }
|
|
ClearAll;
|
|
if FileList.FileName = '' then exit;
|
|
if FileExists(FileList.FileName) then
|
|
{ Load tag data }
|
|
if FileTag.ReadFromFile(FileList.FileName) then
|
|
if FileTag.Exists then
|
|
begin
|
|
{ Fill captions }
|
|
TagExistsValue.Text := 'Yes';
|
|
VersionValue.Text := '2.' + IntToStr(FileTag.VersionID);
|
|
SizeValue.Text := IntToStr(FileTag.Size) + ' bytes';
|
|
TitleEdit.Text := FileTag.Title;
|
|
ArtistEdit.Text := FileTag.Artist;
|
|
AlbumEdit.Text := FileTag.Album;
|
|
if FileTag.Track > 0 then TrackEdit.Text := IntToStr(FileTag.Track);
|
|
YearEdit.Text := FileTag.Year;
|
|
GenreEdit.Text := FileTag.Genre;
|
|
CommentEdit.Text := FileTag.Comment;
|
|
ComposerEdit.Text := FileTag.Composer;
|
|
EncoderEdit.Text := FileTag.Encoder;
|
|
CopyrightEdit.Text := FileTag.Copyright;
|
|
LanguageEdit.Text := FileTag.Language;
|
|
LinkEdit.Text := FileTag.Link;
|
|
end
|
|
else
|
|
{ Tag not found }
|
|
TagExistsValue.Text := 'No'
|
|
else
|
|
{ Read error }
|
|
ShowMessage('Can not read tag from the file: ' + FileList.FileName)
|
|
else
|
|
{ File does not exist }
|
|
ShowMessage('The file does not exist: ' + FileList.FileName);
|
|
end;
|
|
|
|
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
{ Free memory }
|
|
FileTag.Free;
|
|
end;
|
|
|
|
procedure TMainForm.SaveButtonClick(Sender: TObject);
|
|
var
|
|
Value, Code: Integer;
|
|
begin
|
|
{ Prepare tag data }
|
|
FileTag.Title := TitleEdit.Text;
|
|
FileTag.Artist := ArtistEdit.Text;
|
|
FileTag.Album := AlbumEdit.Text;
|
|
Val(TrackEdit.Text, Value, Code);
|
|
if (Code = 0) and (Value > 0) then FileTag.Track := Value
|
|
else FileTag.Track := 0;
|
|
FileTag.Year := YearEdit.Text;
|
|
FileTag.Genre := GenreEdit.Text;
|
|
FileTag.Comment := CommentEdit.Text;
|
|
FileTag.Composer := ComposerEdit.Text;
|
|
FileTag.Encoder := EncoderEdit.Text;
|
|
FileTag.Copyright := CopyrightEdit.Text;
|
|
FileTag.Language := LanguageEdit.Text;
|
|
FileTag.Link := LinkEdit.Text;
|
|
{ Save tag data }
|
|
if (not FileExists(FileList.FileName)) or
|
|
(not FileTag.SaveToFile(FileList.FileName)) then
|
|
ShowMessage('Can not save tag to the file: ' + FileList.FileName);
|
|
FileListChange(Self);
|
|
end;
|
|
|
|
procedure TMainForm.RemoveButtonClick(Sender: TObject);
|
|
begin
|
|
{ Delete tag data }
|
|
if (FileExists(FileList.FileName)) and
|
|
(FileTag.RemoveFromFile(FileList.FileName)) then ClearAll
|
|
else ShowMessage('Can not remove tag from the file: ' + FileList.FileName);
|
|
end;
|
|
|
|
procedure TMainForm.CloseButtonClick(Sender: TObject);
|
|
begin
|
|
{ Exit }
|
|
Close;
|
|
end;
|
|
|
|
end.
|