• R/O
  • SSH
  • HTTPS

id3v2editorplus: Commit


Commit MetaInfo

Revision16 (tree)
Time2019-08-27 06:59:06
Authorderekwildstar

Log Message

- Implementada a funcionalidade de remoção de imagens

Change Summary

Incremental Difference

--- trunk/V2/prj/ID3v2EditorPlus.dproj (revision 15)
+++ trunk/V2/prj/ID3v2EditorPlus.dproj (revision 16)
@@ -60,7 +60,7 @@
6060 <SanitizedProjectName>ID3v2EditorPlus</SanitizedProjectName>
6161 <VerInfo_Locale>1046</VerInfo_Locale>
6262 <VerInfo_Keys>CompanyName=Zetta-Ømnis Soluções Tecnológicas;FileDescription=Editor de TAGs ID3v2 (2.3.x) com suporte a Lyrics e Imagem;FileVersion=2.0.0.0;InternalName=ID3v2EditorPlus;LegalCopyright=;LegalTrademarks=;OriginalFilename=ID3v2EditorPlus.exe;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=ID3v2 Editor Plus!;ProductVersion=1.0.0.0;Comments=ID3v2 Rox</VerInfo_Keys>
63- <Custom_Styles>Glossy|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Glossy.vsf;&quot;Windows10 Dark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10Dark.vsf&quot;</Custom_Styles>
63+ <Custom_Styles>Glossy|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Glossy.vsf;TabletDark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\TabletDark.vsf;&quot;Windows10 Dark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10Dark.vsf&quot;</Custom_Styles>
6464 <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
6565 <VerInfo_MajorVer>2</VerInfo_MajorVer>
6666 <VerInfo_AutoGenVersion>true</VerInfo_AutoGenVersion>
@@ -89,7 +89,6 @@
8989 <DCC_RemoteDebug>false</DCC_RemoteDebug>
9090 <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
9191 <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
92- <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
9392 <VerInfo_Locale>1033</VerInfo_Locale>
9493 <Icon_MainIcon>..\res\id3v2.ico</Icon_MainIcon>
9594 <UWP_DelphiLogo44>..\res\id3v2color-44.png</UWP_DelphiLogo44>
--- trunk/V2/src/UDAMOPrincipal.pas (revision 15)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 16)
@@ -15,6 +15,11 @@
1515 procedure Iniciar;
1616 end;
1717
18+ TPNGImageCollectionHelper = class helper for TPNGImageCollection
19+ public
20+ procedure ExcluirAtual;
21+ end;
22+
1823 TComentarios = record
1924 Idioma: TLanguageID;
2025 Tipo: String;
@@ -93,6 +98,8 @@
9398 ACTNRemoverImagem: TAction;
9499 ACTNSubstituirImagem: TAction;
95100 OPDIAPIC: TOpenPictureDialog;
101+ ACTNReverterID3v1: TAction;
102+ ACTNReverterID3v2: TAction;
96103 procedure TIMEMarqueeTimer(Sender: TObject);
97104 procedure DataModuleCreate(Sender: TObject);
98105 procedure DataModuleDestroy(Sender: TObject);
@@ -115,6 +122,8 @@
115122 procedure ACTNAdicionalImagemExecute(Sender: TObject);
116123 procedure ACTNRemoverImagemExecute(Sender: TObject);
117124 procedure ACTNSubstituirImagemExecute(Sender: TObject);
125+ procedure ACTNReverterID3v1Execute(Sender: TObject);
126+ procedure ACTNReverterID3v2Execute(Sender: TObject);
118127 private
119128 { Private declarations }
120129 FID3v1Tag: TID3v1Tag;
@@ -191,9 +200,15 @@
191200 procedure TDAMOPrincipal.ReiniciarStatusDeModificacao(AContexto: TContexto);
192201 begin
193202 if AContexto = cId3v1 then
194- TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1'
203+ begin
204+ TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1';
205+ ACTNReverterID3v1.Enabled := False;
206+ end
195207 else if AContexto = cId3v2 then
196- TFORMPrincipal(Owner).TASHID3v2.Caption := 'ID3v2'
208+ begin
209+ TFORMPrincipal(Owner).TASHID3v2.Caption := 'ID3v2';
210+ ACTNReverterID3v2.Enabled := False;
211+ end;
197212 end;
198213
199214 procedure TDAMOPrincipal.RemoverID3v1;
@@ -244,7 +259,30 @@
244259
245260 procedure TDAMOPrincipal.RemoverImagem;
246261 begin
247- ShowMessage('Me Implemente!');
262+ PNICAPIC.ExcluirAtual;
263+
264+ // Caso tenhamos excluído uma imagem que não tenha sido a última imagem da
265+ // lista basta recarregar o índice atual, que está contido no Tag de PNICAPIC.
266+ // Isso vai, invariavelmente, carregar a imagem que estava após a imagem
267+ // excluída
268+ if PNICAPIC.Tag < PNICAPIC.Items.Count then
269+ CarregarImagem(PNICAPIC.Tag)
270+ // Caso contrário, se tivermos excluído a última imagem
271+ else
272+ begin
273+ // Ajusta o indice da última imagem
274+ PNICAPIC.Tag := PNICAPIC.Tag - 1;
275+
276+ // Caso ainda existam imagens na lista, precisamos carregar a última imagem
277+ if PNICAPIC.Items.Count > 0 then
278+ CarregarImagem(PNICAPIC.Tag)
279+ // Por fim, se o fluxo chega aqui é porque a lista de imagens está vazia,
280+ // neste caso apenas ajustamos a tela para refletir essa nova realidade
281+ else
282+ AtualizarBotoesDoNavegadorDeImagens;
283+ end;
284+
285+ DefinirStatusDeModificado(cId3v2);
248286 end;
249287
250288 function TDAMOPrincipal.ReproducaoConcluida: Boolean;
@@ -361,7 +399,8 @@
361399 Exit;
362400
363401 // Salva no item da imagem suas informações
364- CodificarInformacoesDaImagem(PNICAPIC.Tag,TFORMPrincipal(Owner).LAEDDescricaoDaImagem.Text,'image/png',TFORMPrincipal(Owner).CMBXTipoDaImagem.ItemIndex);
402+ if PNICAPIC.Tag > -1 then
403+ CodificarInformacoesDaImagem(PNICAPIC.Tag,TFORMPrincipal(Owner).LAEDDescricaoDaImagem.Text,'image/png',TFORMPrincipal(Owner).CMBXTipoDaImagem.ItemIndex);
365404
366405 if AUltima then
367406 PNICAPIC.Tag := Pred(PNICAPIC.Items.Count)
@@ -369,7 +408,6 @@
369408 PNICAPIC.Tag := PNICAPIC.Tag + 1;
370409
371410 CarregarImagem(PNICAPIC.Tag);
372- AtualizarBotoesDoNavegadorDeImagens;
373411 end;
374412
375413 procedure TDAMOPrincipal.ProximaMusica(AUltima: Boolean = False; AForcarReproducao: Boolean = False);
@@ -578,7 +616,7 @@
578616
579617 procedure TDAMOPrincipal.CodificarInformacoesDaImagem(AIndiceDaImagem: Word; ADescricao: String; AMime: String; ATipo: Byte);
580618 begin
581- if PNICAPIC.Items.Count > 0 then
619+ if (PNICAPIC.Items.Count > 0) and (AIndiceDaImagem < PNICAPIC.Items.Count) then
582620 PNICAPIC.Items[AIndiceDaImagem].Name := ADescricao + '¬' + AMime + '¬' + ATipo.ToString;
583621 end;
584622
@@ -644,9 +682,15 @@
644682 procedure TDAMOPrincipal.DefinirStatusDeModificado(AContexto: TContexto);
645683 begin
646684 if AContexto = cId3v1 then
647- TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1 *'
685+ begin
686+ TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1 *';
687+ ACTNReverterID3v1.Enabled := True;
688+ end
648689 else if AContexto = cId3v2 then
690+ begin
649691 TFORMPrincipal(Owner).TASHID3v2.Caption := 'ID3v2 *';
692+ ACTNReverterID3v2.Enabled := True;
693+ end;
650694 end;
651695
652696 procedure TDAMOPrincipal.DescarregarStream;
@@ -700,7 +744,6 @@
700744 PNICAPIC.Tag := PNICAPIC.Tag - 1;
701745
702746 CarregarImagem(PNICAPIC.Tag);
703- AtualizarBotoesDoNavegadorDeImagens;
704747 end;
705748
706749 procedure TDAMOPrincipal.LimparCamposDaAplicacao(ACamposALimpar: TContexto);
@@ -742,6 +785,8 @@
742785 ACTNSubstituirImagem.Enabled := False;
743786 ACTNProximaImagem.Enabled := False;
744787 ACTNImagemAnterior.Enabled := False;
788+ LABEImagens.Caption := '0 / 0';
789+ LABEImagensSombra.Caption := '0 / 0';
745790 { Letra da música }
746791 end;
747792 end;
@@ -846,6 +891,18 @@
846891 Reproduzir;
847892 end;
848893
894+procedure TDAMOPrincipal.ACTNReverterID3v1Execute(Sender: TObject);
895+begin
896+ if Application.MessageBox('Deseja recarregar o ID3v1 a partir do arquivo e perder as alterações que não foram salvas?','Tem certeza?',MB_ICONQUESTION or MB_YESNO) = IDYES then
897+ CarregarID3v1;
898+end;
899+
900+procedure TDAMOPrincipal.ACTNReverterID3v2Execute(Sender: TObject);
901+begin
902+ if Application.MessageBox('Deseja recarregar o ID3v2 a partir do arquivo e perder as alterações que não foram salvas?','Tem certeza?',MB_ICONQUESTION or MB_YESNO) = IDYES then
903+ CarregarID3v2;
904+end;
905+
849906 procedure TDAMOPrincipal.ACTNSalvarID3v1Execute(Sender: TObject);
850907 begin
851908 SalvarID3v1;
@@ -921,6 +978,16 @@
921978 ACTNSubstituirImagem.Enabled := ACTNSalvarImagemComo.Enabled;
922979 TFORMPrincipal(Owner).LABEImagens.Caption := Succ(PNICAPIC.Tag).ToString + ' / ' + PNICAPIC.Items.Count.ToString;
923980 TFORMPrincipal(Owner).LABEImagensSombra.Caption := TFORMPrincipal(Owner).LABEImagens.Caption;
981+
982+ TFORMPrincipal(Owner).LAEDDescricaoDaImagem.Enabled := ACTNSalvarImagemComo.Enabled;
983+ TFORMPrincipal(Owner).CMBXTipoDaImagem.Enabled := ACTNSalvarImagemComo.Enabled;
984+
985+ if PNICAPIC.Items.Count = 0 then
986+ begin
987+ TFORMPrincipal(Owner).IMAGAPIC.Picture := nil;
988+ TFORMPrincipal(Owner).LAEDDescricaoDaImagem.Text := '';
989+ TFORMPrincipal(Owner).CMBXTipoDaImagem.ItemIndex := 0;
990+ end;
924991 end;
925992
926993 procedure TDAMOPrincipal.AtualizarBotoesDoReprodutor;
@@ -1137,6 +1204,13 @@
11371204 inherited SetURL('WOAR',Value);
11381205 end;
11391206
1207+{ TPNGImageCollectionItemsHelper }
1208+
1209+procedure TPNGImageCollectionHelper.ExcluirAtual;
1210+begin
1211+ Items.Delete(Tag);
1212+end;
1213+
11401214 end.
11411215
11421216
--- trunk/V2/src/UFORMPrincipal.pas (revision 15)
+++ trunk/V2/src/UFORMPrincipal.pas (revision 16)
@@ -77,6 +77,8 @@
7777 PNSBSubstituirImagem: TPngSpeedButton;
7878 LABEImagens: TLabel;
7979 LABEImagensSombra: TLabel;
80+ PNSBReverterID3v2: TPngSpeedButton;
81+ PNSBReverterID3v1: TPngSpeedButton;
8082 procedure PABOMarqueePaint(Sender: TObject);
8183 procedure IMAGID3v2Click(Sender: TObject);
8284 procedure ID3v1Modificado(Sender: TObject);
Show on old repository browser