• R/O
  • SSH
  • HTTPS

id3v2editorplus: Commit


Commit MetaInfo

Revision37 (tree)
Zeit2019-10-03 06:45:12
Autorderekwildstar

Log Message

Decidi não usar o componente TPNGImageCollection e estou trocando ele por uma coleção própria de nome TAPIC, muito mais alinhada ao que já estava sendo feito
(Não baixar esta revisão. Ela contém erros propositais)

Ändern Zusammenfassung

Diff

--- trunk/V2/src/UClassesAjudantes.pas (revision 36)
+++ trunk/V2/src/UClassesAjudantes.pas (revision 37)
@@ -3,7 +3,7 @@
33 interface
44
55 uses
6- Classes, ExtCtrls, ID3v2Library, UPngImageList, UClassesETipos;
6+ Classes, ExtCtrls, ID3v2Library, UPngImageList, UClassesETipos, UClassesMediadoras;
77
88 type
99 TTimerHelper = class helper for TTimer
@@ -201,7 +201,6 @@
201201
202202 procedure TID3v2TagHelper.AtribuirImagens(const AListaDeImagens: TPNGImageCollection);
203203 var
204- InformacoesDaImagem: TStringList;
205204 StreamDaImagem: TStream;
206205 begin
207206 ExcluirTodosOsFrames('APIC');
@@ -209,22 +208,21 @@
209208 if AListaDeImagens.Items.Count = 0 then
210209 Exit;
211210
212- InformacoesDaImagem := TStringList.Create;
213211 StreamDaImagem := TMemoryStream.Create;
214212 try
215- InformacoesDaImagem.StrictDelimiter := True;
216- InformacoesDaImagem.Delimiter := '¬';
217213
218214 for var PNGItem: TCollectionItem in AListaDeImagens.Items do
219215 begin
220- InformacoesDaImagem.DelimitedText := TPngImageCollectionItem(PNGItem).Name;
221216 TMemoryStream(StreamDaImagem).Clear;
222217
223218 TPngImageCollectionItem(PNGItem).PngImage.SaveToStream(StreamDaImagem);
224- SetUnicodeCoverPictureFromStream(AddFrame('APIC'), InformacoesDaImagem.Strings[0], StreamDaImagem, InformacoesDaImagem.Strings[1],InformacoesDaImagem.Strings[2].ToInteger);
219+ SetUnicodeCoverPictureFromStream(AddFrame('APIC')
220+ ,''{TPngImageCollectionItem(PNGItem).Descricao}
221+ ,StreamDaImagem
222+ ,'image/png'{TPngImageCollectionItem(PNGItem).TipoMime}
223+ ,0 {TPngImageCollectionItem(PNGItem).TipoDaImagem});
225224 end;
226225 finally
227- InformacoesDaImagem.Free;
228226 StreamDaImagem.Free;
229227 end;
230228 end;
@@ -293,30 +291,35 @@
293291 var
294292 IndiceDaPrimeiraImagem: SmallInt;
295293 StreamDaImagem: TStream;
296- TipoDaImagem: Integer;
297- TipoMIME: String;
298- Descricao: String;
294+ TDI: Integer;
295+ TMI: String;
296+ DES: String;
299297 begin
300298 IndiceDaPrimeiraImagem := FrameExists('APIC');
301299
302300 if IndiceDaPrimeiraImagem >= 0 then
303301 begin
304- for var i: Word := IndiceDaPrimeiraImagem to Pred(FrameCount) do
305- begin
306- if IsSameFrameID(Frames[i].ID, 'APIC') then
302+ StreamDaImagem := TMemoryStream.Create;
303+ try
304+ for var i: Word := IndiceDaPrimeiraImagem to Pred(FrameCount) do
307305 begin
308- StreamDaImagem := TMemoryStream.Create;
309- try
310- if GetUnicodeCoverPictureStream(i, StreamDaImagem, TipoMIME, Descricao, TipoDaImagem) then
311- with AListaDeImagens.Items.Add do
306+ if IsSameFrameID(Frames[i].ID, 'APIC') then
307+ begin
308+ TMemoryStream(StreamDaImagem).Clear;
309+
310+ if GetUnicodeCoverPictureStream(i, StreamDaImagem, TMI, DES, TDI) then
311+ with TPNGImageCollectionItem(AListaDeImagens.Items.Add) do
312312 begin
313313 PngImage.LoadFromStream(StreamDaImagem);
314- Name := Descricao + '¬' + TipoMIME + '¬' + TipoDaImagem.ToString;
314+ Name := 'Imagem #' + i.ToString;
315+// Descricao := DES;
316+// TipoMime := TMI;
317+// TipoDaImagem := TDI;
315318 end;
316- finally
317- StreamDaImagem.Free;
318319 end;
319320 end;
321+ finally
322+ StreamDaImagem.Free;
320323 end;
321324 end;
322325 end;
--- trunk/V2/src/UClassesETipos.pas (revision 36)
+++ trunk/V2/src/UClassesETipos.pas (revision 37)
@@ -4,7 +4,7 @@
44
55 uses
66 System.Classes, System.SysUtils, Generics.Collections, SHDocVw, ExtCtrls,
7- ActnList, StdCtrls, ID3v2Library;
7+ ActnList, StdCtrls, ID3v2Library, Vcl.Graphics;
88
99 type
1010 TContexto = (cId3v1,cId3v2);
@@ -156,6 +156,58 @@
156156 property Items[AIndex: Integer]: TSYLTItem read GetItem write SetItem; default;
157157 end;
158158
159+ TAPICItem = class(TCollectionItem)
160+ private
161+ FImagem: TPicture;
162+ FDescricao: String;
163+ FTipoMime: String;
164+ FTipoDaImagem: Byte;
165+ public
166+ constructor Create(ACollection: TCollection); override;
167+
168+ property Imagem: TPicture read FImagem write FImagem;
169+ property Descricao: String read FDescricao write FDescricao;
170+ property TipoMime: String read FTipoMime write FTipoMime;
171+ property TipoDaImagem: Byte read FTipoDaImagem write FTipoDaImagem;
172+ end;
173+
174+ TAPIC = class(TCollection)
175+ private
176+ FIndice: SmallInt;
177+
178+ FImagem: TImage;
179+ FDescricao: TLabeledEdit;
180+ FTipo: TComboBox;
181+ FProximaImagem: TAction;
182+ FImagemAnterior: TAction;
183+ FSalvarImagem: TAction;
184+ FRemoverImagem: TAction;
185+ FSubstituirImagem: TAction;
186+ FContador: TLabel;
187+ FContadorSombra: TLabel;
188+
189+ procedure AtualizarEstadoDosComponentesDeSaida;
190+ function GetItem(AIndex: Integer): TAPICItem;
191+ procedure SetItem(AIndex: Integer; const AValue: TAPICItem);
192+ procedure Exibir(AIndice: Word);
193+ public
194+ constructor Create(AImagem: TImage; ADescricao: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AContador: TLabel; AContadorSombra: TLabel);
195+
196+ procedure Limpar;
197+ procedure Proxima(AUltima: Boolean = False);
198+// function ExcluirAtual: Boolean;
199+// function ExportarTexto(AArquivo: TFileName): Boolean;
200+// function ImportarTexto(AArquivo: TFileName; ANovoUSLT: Boolean): Boolean;
201+// procedure Salvar(AArquivo: TFileName);
202+// procedure Carregar(AArquivo: TFileName; ANovoUSLT: Boolean);
203+// function Add: TUSLTItem; overload;
204+// procedure Add(AIdioma: TLanguageID; ADescricao: String; ATexto: String); overload;
205+// procedure Anterior(APrimeira: Boolean = False);
206+ procedure ConfirmarInformacoes;
207+
208+ property Items[AIndex: Integer]: TAPICItem read GetItem write SetItem; default;
209+ end;
210+
159211 function SwapEndian32(AValue: DWORD): DWORD; register;
160212
161213 implementation
@@ -232,7 +284,7 @@
232284 Write(PAnsiChar('Iv2EP!USLT')^,10);
233285
234286 // Descrição
235- Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].FDescricao) + 1) * 2);
287+ Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].Descricao) + 1) * 2);
236288
237289 // Idioma
238290 Write(Items[FIndice].Idioma, 3);
@@ -942,7 +994,7 @@
942994 Write(PAnsiChar('Iv2EP!SYLT')^,10);
943995
944996 // Descrição
945- Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].FDescricao) + 1) * 2);
997+ Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].Descricao) + 1) * 2);
946998
947999 // Idioma
9481000 Write(Items[FIndice].Idioma, 3);
@@ -1003,4 +1055,134 @@
10031055 FSYLT.ExibirVerso(BASSTempoDecorridoEmMilissegundos);
10041056 end;
10051057
1058+{ TAPICItem }
1059+
1060+constructor TAPICItem.Create(ACollection: TCollection);
1061+begin
1062+ inherited;
1063+ FImagem := TPicture.Create;
1064+ FDescricao := '';
1065+ FTipoMime := '';
1066+ FTipoDaImagem := 0;
1067+end;
1068+
1069+{ TAPIC }
1070+
1071+procedure TAPIC.AtualizarEstadoDosComponentesDeSaida;
1072+begin
1073+ FProximaImagem.Enabled := (Count > 0) and (FIndice < Pred(Count));
1074+ FImagemAnterior.Enabled := (Count > 0) and (FIndice > 0);
1075+ FSalvarImagem.Enabled := Count > 0;
1076+ FRemoverImagem.Enabled := FSalvarImagem.Enabled;
1077+ FSubstituirImagem.Enabled := FSalvarImagem.Enabled;
1078+ FContador.Caption := Succ(FIndice).ToString + ' / ' + Count.ToString;
1079+ FContadorSombra.Caption := FContador.Caption;
1080+ FDescricao.Enabled := FSalvarImagem.Enabled;
1081+ FTipo.Enabled := FSalvarImagem.Enabled;
1082+
1083+ if Count = 0 then
1084+ begin
1085+ FImagem.Picture := nil;
1086+ FDescricao.Text := '';
1087+ FTipo.ItemIndex := 0;
1088+ end;
1089+end;
1090+
1091+procedure TAPIC.ConfirmarInformacoes;
1092+begin
1093+ if (Count = 0) or (FIndice = -1) then
1094+ Exit;
1095+
1096+ Items[FIndice].Descricao := FDescricao.Text;
1097+ Items[FIndice].TipoMime := 'image/png';
1098+ Items[FIndice].TipoDaImagem := FTipo.ItemIndex;
1099+end;
1100+
1101+constructor TAPIC.Create(AImagem: TImage; ADescricao: TLabeledEdit; ATipo: TComboBox; AProximaImagem, AImagemAnterior, ASalvarImagem, ARemoverImagem, ASubstituirImagem: TAction; AContador, AContadorSombra: TLabel);
1102+begin
1103+ FIndice := -1;
1104+ FImagem := AImagem;
1105+ FDescricao := ADescricao;
1106+ FTipo := ATipo;
1107+ FProximaImagem := AProximaImagem;
1108+ FImagemAnterior := AImagemAnterior;
1109+ FSalvarImagem := ASalvarImagem;
1110+ FRemoverImagem := ARemoverImagem;
1111+ FSubstituirImagem := ASubstituirImagem;
1112+ FContador := AContador;
1113+ FContadorSombra := AContadorSombra;
1114+end;
1115+
1116+procedure TAPIC.Exibir(AIndice: Word);
1117+begin
1118+ if (not Assigned(FImagem)) or (Count = 0) or (AIndice > Pred(Count)) then
1119+ Exit;
1120+
1121+ FImagem.Picture.Assign(Items[AIndice].Imagem);
1122+
1123+ var OnChangeOriginal: TNotifyEvent;
1124+
1125+ OnChangeOriginal := FDescricao.OnChange;
1126+ try
1127+ FDescricao.OnChange := nil;
1128+ FTipo.OnChange := nil;
1129+
1130+ FDescricao.Text := Items[AIndice].Descricao;
1131+ FTipo.ItemIndex := Items[AIndice].TipoDaImagem;
1132+ finally
1133+ FDescricao.OnChange := OnChangeOriginal;
1134+ FTipo.OnChange := OnChangeOriginal
1135+ end;
1136+
1137+ FIndice := AIndice;
1138+ AtualizarEstadoDosComponentesDeSaida;
1139+end;
1140+
1141+function TAPIC.GetItem(AIndex: Integer): TAPICItem;
1142+begin
1143+ Result := TAPICItem(inherited GetItem(AIndex));
1144+end;
1145+
1146+procedure TAPIC.Limpar;
1147+begin
1148+ Clear;
1149+ FIndice := -1;
1150+
1151+ FImagem.Picture := nil;
1152+ FDescricao.Clear;
1153+ FTipo.ItemIndex := 0;
1154+ FRemoverImagem.Enabled := False;
1155+ FSalvarImagem.Enabled := False;
1156+ FSubstituirImagem.Enabled := False;
1157+ FProximaImagem.Enabled := False;
1158+ FImagemAnterior.Enabled := False;
1159+ FContador.Caption := '0 / 0';
1160+ FContadorSombra.Caption := '0 / 0';
1161+
1162+ AtualizarEstadoDosComponentesDeSaida;
1163+end;
1164+
1165+procedure TAPIC.Proxima(AUltima: Boolean);
1166+begin
1167+ if (Count = 0) or (Succ(FIndice) = Count) then
1168+ Exit;
1169+
1170+ // Salva no item da imagem atual suas informações
1171+ ConfirmarInformacoes;
1172+
1173+ if AUltima then
1174+ FIndice := Pred(Count)
1175+ else
1176+ Inc(FIndice);
1177+
1178+ Exibir(FIndice);
1179+end;
1180+
1181+procedure TAPIC.SetItem(AIndex: Integer; const AValue: TAPICItem);
1182+begin
1183+ inherited SetItem(AIndex, AValue);
1184+end;
1185+
1186+continuar a implementação da classe APIC
1187+
10061188 end.
--- trunk/V2/src/UClassesMediadoras.pas (revision 36)
+++ trunk/V2/src/UClassesMediadoras.pas (revision 37)
@@ -7,6 +7,17 @@
77 Vcl.ActnList;
88
99 type
10+// TPNGImageCollectionItem = class (UPngImageList.TPNGImageCollectionItem)
11+// private
12+// FDescricao: String;
13+// FTipoMime: String;
14+// FTipoDaImagem: Byte;
15+// public
16+// property Descricao: String read FDescricao write FDescricao;
17+// property TipoMime: String read FTipoMime write FTipoMime;
18+// property TipoDaImagem: Byte read FTipoDaImagem write FTipoDaImagem;
19+// end;
20+
1021 TPNGImageCollection = class (UPngImageList.TPNGImageCollection)
1122 private
1223 FIndice: SmallInt;
@@ -32,18 +43,11 @@
3243 procedure Salvar(AArquivo: TFileName);
3344 procedure Carregar(AArquivo: TFileName; ANovoAPIC: Boolean);
3445
35-
36-
37- procedure AdicionarAPIC(AArquivo: TFileName);
38- procedure SubstituirAPIC(AArquivo: TFileName);
39-
40-
4146 procedure Limpar;
4247 procedure ExibirImagem(AIndiceDaImagem: Word);
4348 procedure ProximaImagem(AUltima: Boolean = False);
4449 procedure ImagemAnterior(APrimeira: Boolean = False);
4550 procedure ConfirmarInformacoesDaImagem;
46-
4751 end;
4852
4953 implementation
@@ -55,37 +59,37 @@
5559
5660 procedure TPNGImageCollection.Limpar;
5761 begin
58- Items.Clear;
59- FIndice := -1;
60-
61- FImagem.Picture := nil;
62- FDescricao.Clear;
63- FTipo.ItemIndex := 0;
64- FRemoverImagem.Enabled := False;
65- FSalvarImagem.Enabled := False;
66- FSubstituirImagem.Enabled := False;
67- FProximaImagem.Enabled := False;
68- FImagemAnterior.Enabled := False;
69- FContador.Caption := '0 / 0';
70- FContadorSombra.Caption := '0 / 0';
71-
72- AtualizarEstadoDosComponentesDeSaida;
62+// Items.Clear;
63+// FIndice := -1;
64+//
65+// FImagem.Picture := nil;
66+// FDescricao.Clear;
67+// FTipo.ItemIndex := 0;
68+// FRemoverImagem.Enabled := False;
69+// FSalvarImagem.Enabled := False;
70+// FSubstituirImagem.Enabled := False;
71+// FProximaImagem.Enabled := False;
72+// FImagemAnterior.Enabled := False;
73+// FContador.Caption := '0 / 0';
74+// FContadorSombra.Caption := '0 / 0';
75+//
76+// AtualizarEstadoDosComponentesDeSaida;
7377 end;
7478
7579 procedure TPNGImageCollection.ProximaImagem(AUltima: Boolean = False);
7680 begin
77- if (Items.Count = 0) or (Succ(FIndice) = Items.Count) then
78- Exit;
79-
80- // Salva no item da imagem atual suas informações
81- ConfirmarInformacoesDaImagem;
82-
83- if AUltima then
84- FIndice := Pred(Items.Count)
85- else
86- Inc(FIndice);
87-
88- ExibirImagem(FIndice);
81+// if (Items.Count = 0) or (Succ(FIndice) = Items.Count) then
82+// Exit;
83+//
84+// // Salva no item da imagem atual suas informações
85+// ConfirmarInformacoesDaImagem;
86+//
87+// if AUltima then
88+// FIndice := Pred(Items.Count)
89+// else
90+// Inc(FIndice);
91+//
92+// ExibirImagem(FIndice);
8993 end;
9094
9195 function TPNGImageCollection.Exportar(AArquivo: TFileName): Boolean;
@@ -95,19 +99,28 @@
9599 if (FIndice = -1) or (AArquivo = '') then
96100 Exit;
97101
98- Items[FIndice].PngImage.SaveToFile(AArquivo);
102+ TPNGImageCollectionItem(Items[FIndice]).PngImage.SaveToFile(AArquivo);
99103 Result := True;
100104 end;
101105
102106 procedure TPNGImageCollection.Salvar(AArquivo: TFileName);
103107 begin
108+ with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
109+ try
110+ // Cabeçalho do arquivo
111+ Write(PAnsiChar('Iv2EP!APIC')^,10);
104112
105-end;
113+ // Descrição
114+ //Write(PWideChar(TPNGImageCollectionItem(Items[FIndice]).FDescricao)^, (Length(TPNGImageCollectionItem(Items[FIndice]).FDescricao) + 1) * 2);
106115
107-procedure TPNGImageCollection.SubstituirAPIC(AArquivo: TFileName);
108-begin
109- Items[FIndice].PngImage.LoadFromFile(AArquivo);
110- ExibirImagem(FIndice);
116+ // Tipo da imagem
117+ //Write(TPNGImageCollectionItem(Items[FIndice]).FTipoDaImagem,1);
118+
119+ // Texto da letraasdsd sad
120+// Write(PWideChar(Trim(Items[FIndice].Texto))^, (Length(Trim(Items[FIndice].Texto)) + 1) * 2);
121+ finally
122+ Free;
123+ end;
111124 end;
112125
113126 procedure TPNGImageCollection.ImagemAnterior(APrimeira: Boolean = False);
@@ -131,12 +144,12 @@
131144 APIC: TPNGImageCollectionItem;
132145 begin
133146 if ANovoAPIC or (FIndice = -1) then
134- APIC := Items.Add
147+ APIC := TPNGImageCollectionItem(Items.Add)
135148 else
136- APIC := Items[FIndice];
149+ APIC := TPNGImageCollectionItem(Items[FIndice]);
137150
138151 APIC.PngImage.LoadFromFile(AArquivo);
139- APIC.Name := ExtractFileName(AArquivo) + '¬image/png¬0';
152+ APIC.Name := ExtractFileName(AArquivo);
140153
141154 if ANovoAPIC then
142155 ProximaImagem(True)
@@ -146,30 +159,24 @@
146159 Result := True;
147160 end;
148161
149-procedure TPNGImageCollection.AdicionarAPIC(AArquivo: TFileName);
150-begin
151- Items.Add.PngImage.LoadFromFile(AArquivo);
152- ProximaImagem(True);
153-end;
154-
155162 procedure TPNGImageCollection.AtualizarEstadoDosComponentesDeSaida;
156163 begin
157- FProximaImagem.Enabled := (Items.Count > 0) and (FIndice < Pred(Items.Count));
158- FImagemAnterior.Enabled := (Items.Count > 0) and (FIndice > 0);
159- FSalvarImagem.Enabled := Items.Count > 0;
160- FRemoverImagem.Enabled := FSalvarImagem.Enabled;
161- FSubstituirImagem.Enabled := FSalvarImagem.Enabled;
162- FContador.Caption := Succ(FIndice).ToString + ' / ' + Items.Count.ToString;
163- FContadorSombra.Caption := FContador.Caption;
164- FDescricao.Enabled := FSalvarImagem.Enabled;
165- FTipo.Enabled := FSalvarImagem.Enabled;
166-
167- if Items.Count = 0 then
168- begin
169- FImagem.Picture := nil;
170- FDescricao.Text := '';
171- FTipo.ItemIndex := 0;
172- end;
164+// FProximaImagem.Enabled := (Items.Count > 0) and (FIndice < Pred(Items.Count));
165+// FImagemAnterior.Enabled := (Items.Count > 0) and (FIndice > 0);
166+// FSalvarImagem.Enabled := Items.Count > 0;
167+// FRemoverImagem.Enabled := FSalvarImagem.Enabled;
168+// FSubstituirImagem.Enabled := FSalvarImagem.Enabled;
169+// FContador.Caption := Succ(FIndice).ToString + ' / ' + Items.Count.ToString;
170+// FContadorSombra.Caption := FContador.Caption;
171+// FDescricao.Enabled := FSalvarImagem.Enabled;
172+// FTipo.Enabled := FSalvarImagem.Enabled;
173+//
174+// if Items.Count = 0 then
175+// begin
176+// FImagem.Picture := nil;
177+// FDescricao.Text := '';
178+// FTipo.ItemIndex := 0;
179+// end;
173180 end;
174181
175182 procedure TPNGImageCollection.Carregar(AArquivo: TFileName; ANovoAPIC: Boolean);
@@ -177,7 +184,6 @@
177184 ArquivoAPIC: TFileStream;
178185 Header: PAnsiChar;
179186 APIC: TPNGImageCollectionItem;
180- AuxByte: Byte;
181187 begin
182188 ArquivoAPIC := TFileStream.Create(AArquivo,fmOpenRead or fmShareDenyWrite);
183189 Header := AllocMem(10);
@@ -184,9 +190,9 @@
184190
185191 try
186192 if ANovoAPIC or (FIndice = -1) then
187- APIC := Items.Add
193+ APIC := TPNGImageCollectionItem(Items.Add)
188194 else
189- APIC := Items[FIndice];
195+ APIC := TPNGImageCollectionItem(Items[FIndice]);
190196
191197 ArquivoAPIC.Read(Header^,10);
192198
@@ -193,14 +199,20 @@
193199 if Header <> 'Iv2EP!APIC' then
194200 raise Exception.Create('Arquivo APIC inválido');
195201
196- APIC.Name := ArquivoAPIC.TextoUnicode + '¬image/png¬';
202+ APIC.Name := ExtractFileName(AArquivo);
203+ //APIC.Descricao := ArquivoAPIC.TextoUnicode;
204+ //APIC.TipoMime := 'image/png';
205+ //ArquivoAPIC.Read(APIC.FTipoDaImagem,1);
197206
198- ArquivoAPIC.Read(AuxByte,1);
207+ var StreamDaImagem: TMemoryStream := TMemoryStream.Create;
199208
200- APIC.Name := APIC.Name + AuxByte.ToString;
209+ try
210+ StreamDaImagem.CopyFrom(ArquivoAPIC,ArquivoAPIC.Size - ArquivoAPIC.Position);
211+ APIC.PngImage.LoadFromStream(StreamDaImagem);
212+ finally
213+ StreamDaImagem.Free;
214+ end;
201215
202- concluir este método carregando diretamente do arquivo .apic
203-
204216 if ANovoAPIC then
205217 ProximaImagem(True)
206218 else
@@ -213,30 +225,32 @@
213225
214226 procedure TPNGImageCollection.ConfigurarComponentesDeSaida(AImagem: TImage; ADescricao: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AContador: TLabel; AContadorSombra: TLabel);
215227 begin
216- FImagem := AImagem;
217- FDescricao := ADescricao;
218- FTipo := ATipo;
219- FProximaImagem := AProximaImagem;
220- FImagemAnterior := AImagemAnterior;
221- FSalvarImagem := ASalvarImagem;
222- FRemoverImagem := ARemoverImagem;
223- FSubstituirImagem := ASubstituirImagem;
224- FContador := AContador;
225- FContadorSombra := AContadorSombra;
228+// FImagem := AImagem;
229+// FDescricao := ADescricao;
230+// FTipo := ATipo;
231+// FProximaImagem := AProximaImagem;
232+// FImagemAnterior := AImagemAnterior;
233+// FSalvarImagem := ASalvarImagem;
234+// FRemoverImagem := ARemoverImagem;
235+// FSubstituirImagem := ASubstituirImagem;
236+// FContador := AContador;
237+// FContadorSombra := AContadorSombra;
226238 end;
227239
228240 procedure TPNGImageCollection.ConfirmarInformacoesDaImagem;
229241 begin
230- if (Items.Count = 0) or (FIndice = -1) then
231- Exit;
232-
233- Items[FIndice].Name := FDescricao.Text + '¬image/png¬' + FTipo.ItemIndex.ToString;
242+// if (Items.Count = 0) or (FIndice = -1) then
243+// Exit;
244+//
245+// TPNGImageCollectionItem(Items[FIndice]).Descricao := 'xxx';//FDescricao.Text;
246+// TPNGImageCollectionItem(Items[FIndice]).TipoMime := 'xxxx';//'image/png';
247+// TPNGImageCollectionItem(Items[FIndice]).TipoDaImagem := 0;//FTipo.ItemIndex;
234248 end;
235249
236250 constructor TPNGImageCollection.Create(AOwner: TComponent);
237251 begin
238252 inherited;
239- FIndice := -1;
253+// FIndice := -1;
240254 end;
241255
242256 function TPNGImageCollection.ExcluirAtual: Boolean;
@@ -276,39 +290,27 @@
276290
277291 procedure TPNGImageCollection.ExibirImagem(AIndiceDaImagem: Word);
278292 begin
279- if (not Assigned(FImagem)) or (Items.Count = 0) or (AIndiceDaImagem > Pred(Items.Count)) then
280- Exit;
281-
282- FImagem.Picture.Assign(Items[AIndiceDaImagem].PngImage);
283-
284- var OnChangeOriginal: TNotifyEvent;
285-
286- OnChangeOriginal := FDescricao.OnChange;
287- try
288- FDescricao.OnChange := nil;
289- FTipo.OnChange := nil;
290-
291- with TStringList.Create do
292- try
293- StrictDelimiter := True;
294- Delimiter := '¬';
295- DelimitedText := Items[AIndiceDaImagem].Name;
296-
297- FDescricao.Text := Strings[0];
298- FTipo.ItemIndex := 0;
299-
300- if Count > 1 then
301- FTipo.ItemIndex := Strings[2].ToInteger;
302- finally
303- Free;
304- end;
305- finally
306- FDescricao.OnChange := OnChangeOriginal;
307- FTipo.OnChange := OnChangeOriginal
308- end;
309-
310- FIndice := AIndiceDaImagem;
311- AtualizarEstadoDosComponentesDeSaida;
293+// if (not Assigned(FImagem)) or (Items.Count = 0) or (AIndiceDaImagem > Pred(Items.Count)) then
294+// Exit;
295+//
296+// FImagem.Picture.Assign(TPNGImageCollectionItem(Items[AIndiceDaImagem]).PngImage);
297+//
298+// var OnChangeOriginal: TNotifyEvent;
299+//
300+// OnChangeOriginal := FDescricao.OnChange;
301+// try
302+// FDescricao.OnChange := nil;
303+// FTipo.OnChange := nil;
304+//
305+//// FDescricao.Text := TPNGImageCollectionItem(Items[AIndiceDaImagem]).Descricao;
306+//// FTipo.ItemIndex := TPNGImageCollectionItem(Items[AIndiceDaImagem]).TipoDaImagem;
307+// finally
308+// FDescricao.OnChange := OnChangeOriginal;
309+// FTipo.OnChange := OnChangeOriginal
310+// end;
311+//
312+// FIndice := AIndiceDaImagem;
313+// AtualizarEstadoDosComponentesDeSaida;
312314 end;
313315
314316 end.
--- trunk/V2/src/UDAMOPrincipal.pas (revision 36)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 37)
@@ -34,11 +34,9 @@
3434 ACTNProximaImagem: TAction;
3535 ACTNImagemAnterior: TAction;
3636 ACTNSalvarImagemComo: TAction;
37- SPIDAPIC: TSavePictureDialog;
3837 ACTNAdicionalImagem: TAction;
3938 ACTNRemoverImagem: TAction;
4039 ACTNSubstituirImagem: TAction;
41- OPDIAPIC: TOpenPictureDialog;
4240 ACTNReverterID3v1: TAction;
4341 ACTNReverterID3v2: TAction;
4442 ACTNRemoverUSLT: TAction;
@@ -63,6 +61,10 @@
6361 OPDIHTML: TOpenDialog;
6462 ACTNExportarPNGAPIC: TAction;
6563 ACTNImportarPNGAPIC: TAction;
64+ SADIPNG: TSavePictureDialog;
65+ OPDIPNG: TOpenPictureDialog;
66+ OPDIAPIC: TOpenDialog;
67+ SADIAPIC: TSaveDialog;
6668 procedure TIMELetreiroTimer(Sender: TObject);
6769 procedure DataModuleCreate(Sender: TObject);
6870 procedure DataModuleDestroy(Sender: TObject);
@@ -115,6 +117,7 @@
115117 FMudouAutomaticamente: Boolean;
116118 FUSLT: TUSLT;
117119 FSYLT: TSYLT;
120+ FAPIC: TAPIC;
118121 procedure CarregarMP3;
119122 procedure CarregarID3v1;
120123 procedure SalvarID3v1;
@@ -137,18 +140,19 @@
137140 procedure AtualizarBotoesDoReprodutor;
138141 procedure ReiniciarStatusDeModificacao(AContexto: TContexto);
139142
140- procedure AdicionarImagem;
141- procedure RemoverImagem;
142- procedure SubstituirImagem;
143- procedure ExportarPNGAPIC;
144- procedure ImportarPNGAPIC;
143+ procedure AdicionarAPIC;
144+ procedure RemoverAPIC;
145+ procedure SalvarAPIC;
146+ procedure SubstituirAPIC;
147+ procedure ExportarImagemAPIC;
148+ procedure ImportarImagemAPIC;
145149
146150 procedure AdicionarUSLT;
147151 procedure RemoverUSLT;
148152 procedure SalvarUSLT;
149153 procedure SubstituirUSLT;
150- procedure ImportarUSLT;
151- procedure ExportarUSLT;
154+ procedure ImportarTextoUSLT;
155+ procedure ExportarTextoUSLT;
152156
153157 procedure AdicionarSYLT;
154158 procedure RemoverSYLT;
@@ -235,7 +239,7 @@
235239 LimparCamposDaAplicacao(cId3v2);
236240 end;
237241
238-procedure TDAMOPrincipal.RemoverImagem;
242+procedure TDAMOPrincipal.RemoverAPIC;
239243 begin
240244 if PNICAPIC.ExcluirAtual then
241245 DefinirStatusDeModificado(cId3v2);
@@ -273,6 +277,12 @@
273277 FSYLT.IniciarThread;
274278 end;
275279
280+procedure TDAMOPrincipal.SalvarAPIC;
281+begin
282+ if SADIAPIC.Execute then
283+ PNICAPIC.Salvar(SADIAPIC.FileName);
284+end;
285+
276286 procedure TDAMOPrincipal.SalvarID3v1;
277287 begin
278288 with TFORMPrincipal(Owner) do
@@ -363,11 +373,11 @@
363373 FUSLT.Salvar(SADIUSLT.FileName);
364374 end;
365375
366-procedure TDAMOPrincipal.SubstituirImagem;
376+procedure TDAMOPrincipal.SubstituirAPIC;
367377 begin
368378 if OPDIAPIC.Execute then
369379 begin
370- PNICAPIC.SubstituirAPIC(OPDIAPIC.FileName);
380+ PNICAPIC.Carregar(OPDIAPIC.FileName,False);
371381 DefinirStatusDeModificado(cId3v2);
372382 end;
373383 end;
@@ -573,19 +583,30 @@
573583
574584 procedure TDAMOPrincipal.DataModuleCreate(Sender: TObject);
575585 begin
576- PNICAPIC.ConfigurarComponentesDeSaida(TFORMPrincipal(Owner).IMAGAPIC
577- ,TFORMPrincipal(Owner).LAEDDescricaoDaImagem
578- ,TFORMPrincipal(Owner).CMBXTipoDaImagem
579- ,ACTNProximaImagem
580- ,ACTNImagemAnterior
581- ,ACTNSalvarImagemComo
582- ,ACTNRemoverImagem
583- ,ACTNSubstituirImagem
584- ,TFORMPrincipal(Owner).LABEImagens
585- ,TFORMPrincipal(Owner).LABEImagensSombra);
586+// PNICAPIC.ConfigurarComponentesDeSaida(TFORMPrincipal(Owner).IMAGAPIC
587+// ,TFORMPrincipal(Owner).LAEDDescricaoDaImagem
588+// ,TFORMPrincipal(Owner).CMBXTipoDaImagem
589+// ,ACTNProximaImagem
590+// ,ACTNImagemAnterior
591+// ,ACTNSalvarImagemComo
592+// ,ACTNRemoverImagem
593+// ,ACTNSubstituirImagem
594+// ,TFORMPrincipal(Owner).LABEImagens
595+// ,TFORMPrincipal(Owner).LABEImagensSombra);
586596
597+ FAPIC := TAPIC.Create(TFORMPrincipal(Owner).IMAGAPIC
598+ ,TFORMPrincipal(Owner).LAEDDescricaoDaImagem
599+ ,TFORMPrincipal(Owner).CMBXTipoDaImagem
600+ ,ACTNProximaImagem
601+ ,ACTNImagemAnterior
602+ ,ACTNSalvarImagemComo
603+ ,ACTNRemoverImagem
604+ ,ACTNSubstituirImagem
605+ ,TFORMPrincipal(Owner).LABEImagens
606+ ,TFORMPrincipal(Owner).LABEImagensSombra);
587607
588608
609+
589610 FID3v1Tag := TID3v1Tag.Create;
590611 FID3v2Tag := TID3v2Tag.Create;
591612 FUSLT := TUSLT.Create(TFORMPrincipal(Owner).WEBBUSLT
@@ -653,24 +674,24 @@
653674 Result := (Pos('*',TFORMPrincipal(Owner).TASHID3v1.Caption) > 0) or (Pos('*',TFORMPrincipal(Owner).TASHID3v2.Caption) > 0);
654675 end;
655676
656-procedure TDAMOPrincipal.ExportarPNGAPIC;
677+procedure TDAMOPrincipal.ExportarImagemAPIC;
657678 begin
658- if SPIDAPIC.Execute and PNICAPIC.Exportar(SPIDAPIC.FileName) then
679+ if SADIPNG.Execute and PNICAPIC.Exportar(SADIPNG.FileName) then
659680 Application.MessageBox('PNG da imagem atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
660681 end;
661682
662-procedure TDAMOPrincipal.ExportarUSLT;
683+procedure TDAMOPrincipal.ExportarTextoUSLT;
663684 begin
664685 if SADIHTML.Execute and FUSLT.ExportarTexto(SADIHTML.FileName) then
665686 Application.MessageBox('Texto da letra atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
666687 end;
667688
668-procedure TDAMOPrincipal.ImportarPNGAPIC;
689+procedure TDAMOPrincipal.ImportarImagemAPIC;
669690 begin
670691
671692 end;
672693
673-procedure TDAMOPrincipal.ImportarUSLT;
694+procedure TDAMOPrincipal.ImportarTextoUSLT;
674695 begin
675696 if OPDIHTML.Execute and FUSLT.ImportarTexto(OPDIHTML.FileName,Application.MessageBox('Deseja adicionar uma nova letra? Se você responder "não", apenas o texto da letra atual será substituído','Nova letra?',MB_ICONQUESTION or MB_YESNO) = IDYES) then
676697 Application.MessageBox('Texto da letra importado com sucesso!','Importação concluída',MB_ICONINFORMATION);
@@ -756,7 +777,7 @@
756777
757778 procedure TDAMOPrincipal.ACTNAdicionalImagemExecute(Sender: TObject);
758779 begin
759- AdicionarImagem;
780+ AdicionarAPIC;
760781 end;
761782
762783 procedure TDAMOPrincipal.ACTNAdicionarSYLTExecute(Sender: TObject);
@@ -776,12 +797,12 @@
776797
777798 procedure TDAMOPrincipal.ACTNExportarPNGAPICExecute(Sender: TObject);
778799 begin
779- ExportarPNGAPIC;
800+ ExportarImagemAPIC;
780801 end;
781802
782803 procedure TDAMOPrincipal.ACTNExportarTextoUSLTExecute(Sender: TObject);
783804 begin
784- ExportarUSLT;
805+ ExportarTextoUSLT;
785806 end;
786807
787808 procedure TDAMOPrincipal.ACTNImagemAnteriorExecute(Sender: TObject);
@@ -791,12 +812,12 @@
791812
792813 procedure TDAMOPrincipal.ACTNImportarPNGAPICExecute(Sender: TObject);
793814 begin
794- ImportarPNGAPIC;
815+ ImportarImagemAPIC;
795816 end;
796817
797818 procedure TDAMOPrincipal.ACTNImportarTextoUSLTExecute(Sender: TObject);
798819 begin
799- ImportarUSLT;
820+ ImportarTextoUSLT;
800821 end;
801822
802823 procedure TDAMOPrincipal.ACTNMusicaAnteriorExecute(Sender: TObject);
@@ -846,7 +867,7 @@
846867
847868 procedure TDAMOPrincipal.ACTNRemoverImagemExecute(Sender: TObject);
848869 begin
849- RemoverImagem;
870+ RemoverAPIC;
850871 end;
851872
852873 procedure TDAMOPrincipal.ACTNRemoverSYLTExecute(Sender: TObject);
@@ -888,7 +909,7 @@
888909
889910 procedure TDAMOPrincipal.ACTNSalvarImagemComoExecute(Sender: TObject);
890911 begin
891- ShowMessage('Implemente o salvamento completo (Imagem + atributos)')
912+ SalvarAPIC;
892913 end;
893914
894915 procedure TDAMOPrincipal.ACTNSalvarSYLTExecute(Sender: TObject);
@@ -908,7 +929,7 @@
908929
909930 procedure TDAMOPrincipal.ACTNSubstituirImagemExecute(Sender: TObject);
910931 begin
911- SubstituirImagem;
932+ SubstituirAPIC;
912933 end;
913934
914935 procedure TDAMOPrincipal.ACTNSubstituirSYLTExecute(Sender: TObject);
@@ -936,11 +957,11 @@
936957 FUSLT.Anterior;
937958 end;
938959
939-procedure TDAMOPrincipal.AdicionarImagem;
960+procedure TDAMOPrincipal.AdicionarAPIC;
940961 begin
941962 if OPDIAPIC.Execute then
942963 begin
943- PNICAPIC.AdicionarAPIC(OPDIAPIC.FileName);
964+ PNICAPIC.Carregar(OPDIAPIC.FileName,True);
944965 DefinirStatusDeModificado(cId3v2);
945966 end;
946967 end;
Show on old repository browser