Revision | 16 (tree) |
---|---|
Time | 2019-08-27 06:59:06 |
Author | derekwildstar |
- Implementada a funcionalidade de remoção de imagens
@@ -60,7 +60,7 @@ | ||
60 | 60 | <SanitizedProjectName>ID3v2EditorPlus</SanitizedProjectName> |
61 | 61 | <VerInfo_Locale>1046</VerInfo_Locale> |
62 | 62 | <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;"Windows10 Dark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10Dark.vsf"</Custom_Styles> | |
63 | + <Custom_Styles>Glossy|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Glossy.vsf;TabletDark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\TabletDark.vsf;"Windows10 Dark|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10Dark.vsf"</Custom_Styles> | |
64 | 64 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> |
65 | 65 | <VerInfo_MajorVer>2</VerInfo_MajorVer> |
66 | 66 | <VerInfo_AutoGenVersion>true</VerInfo_AutoGenVersion> |
@@ -89,7 +89,6 @@ | ||
89 | 89 | <DCC_RemoteDebug>false</DCC_RemoteDebug> |
90 | 90 | <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes> |
91 | 91 | <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode> |
92 | - <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> | |
93 | 92 | <VerInfo_Locale>1033</VerInfo_Locale> |
94 | 93 | <Icon_MainIcon>..\res\id3v2.ico</Icon_MainIcon> |
95 | 94 | <UWP_DelphiLogo44>..\res\id3v2color-44.png</UWP_DelphiLogo44> |
@@ -15,6 +15,11 @@ | ||
15 | 15 | procedure Iniciar; |
16 | 16 | end; |
17 | 17 | |
18 | + TPNGImageCollectionHelper = class helper for TPNGImageCollection | |
19 | + public | |
20 | + procedure ExcluirAtual; | |
21 | + end; | |
22 | + | |
18 | 23 | TComentarios = record |
19 | 24 | Idioma: TLanguageID; |
20 | 25 | Tipo: String; |
@@ -93,6 +98,8 @@ | ||
93 | 98 | ACTNRemoverImagem: TAction; |
94 | 99 | ACTNSubstituirImagem: TAction; |
95 | 100 | OPDIAPIC: TOpenPictureDialog; |
101 | + ACTNReverterID3v1: TAction; | |
102 | + ACTNReverterID3v2: TAction; | |
96 | 103 | procedure TIMEMarqueeTimer(Sender: TObject); |
97 | 104 | procedure DataModuleCreate(Sender: TObject); |
98 | 105 | procedure DataModuleDestroy(Sender: TObject); |
@@ -115,6 +122,8 @@ | ||
115 | 122 | procedure ACTNAdicionalImagemExecute(Sender: TObject); |
116 | 123 | procedure ACTNRemoverImagemExecute(Sender: TObject); |
117 | 124 | procedure ACTNSubstituirImagemExecute(Sender: TObject); |
125 | + procedure ACTNReverterID3v1Execute(Sender: TObject); | |
126 | + procedure ACTNReverterID3v2Execute(Sender: TObject); | |
118 | 127 | private |
119 | 128 | { Private declarations } |
120 | 129 | FID3v1Tag: TID3v1Tag; |
@@ -191,9 +200,15 @@ | ||
191 | 200 | procedure TDAMOPrincipal.ReiniciarStatusDeModificacao(AContexto: TContexto); |
192 | 201 | begin |
193 | 202 | if AContexto = cId3v1 then |
194 | - TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1' | |
203 | + begin | |
204 | + TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1'; | |
205 | + ACTNReverterID3v1.Enabled := False; | |
206 | + end | |
195 | 207 | 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; | |
197 | 212 | end; |
198 | 213 | |
199 | 214 | procedure TDAMOPrincipal.RemoverID3v1; |
@@ -244,7 +259,30 @@ | ||
244 | 259 | |
245 | 260 | procedure TDAMOPrincipal.RemoverImagem; |
246 | 261 | 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); | |
248 | 286 | end; |
249 | 287 | |
250 | 288 | function TDAMOPrincipal.ReproducaoConcluida: Boolean; |
@@ -361,7 +399,8 @@ | ||
361 | 399 | Exit; |
362 | 400 | |
363 | 401 | // 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); | |
365 | 404 | |
366 | 405 | if AUltima then |
367 | 406 | PNICAPIC.Tag := Pred(PNICAPIC.Items.Count) |
@@ -369,7 +408,6 @@ | ||
369 | 408 | PNICAPIC.Tag := PNICAPIC.Tag + 1; |
370 | 409 | |
371 | 410 | CarregarImagem(PNICAPIC.Tag); |
372 | - AtualizarBotoesDoNavegadorDeImagens; | |
373 | 411 | end; |
374 | 412 | |
375 | 413 | procedure TDAMOPrincipal.ProximaMusica(AUltima: Boolean = False; AForcarReproducao: Boolean = False); |
@@ -578,7 +616,7 @@ | ||
578 | 616 | |
579 | 617 | procedure TDAMOPrincipal.CodificarInformacoesDaImagem(AIndiceDaImagem: Word; ADescricao: String; AMime: String; ATipo: Byte); |
580 | 618 | begin |
581 | - if PNICAPIC.Items.Count > 0 then | |
619 | + if (PNICAPIC.Items.Count > 0) and (AIndiceDaImagem < PNICAPIC.Items.Count) then | |
582 | 620 | PNICAPIC.Items[AIndiceDaImagem].Name := ADescricao + '¬' + AMime + '¬' + ATipo.ToString; |
583 | 621 | end; |
584 | 622 |
@@ -644,9 +682,15 @@ | ||
644 | 682 | procedure TDAMOPrincipal.DefinirStatusDeModificado(AContexto: TContexto); |
645 | 683 | begin |
646 | 684 | if AContexto = cId3v1 then |
647 | - TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1 *' | |
685 | + begin | |
686 | + TFORMPrincipal(Owner).TASHID3v1.Caption := 'ID3v1 *'; | |
687 | + ACTNReverterID3v1.Enabled := True; | |
688 | + end | |
648 | 689 | else if AContexto = cId3v2 then |
690 | + begin | |
649 | 691 | TFORMPrincipal(Owner).TASHID3v2.Caption := 'ID3v2 *'; |
692 | + ACTNReverterID3v2.Enabled := True; | |
693 | + end; | |
650 | 694 | end; |
651 | 695 | |
652 | 696 | procedure TDAMOPrincipal.DescarregarStream; |
@@ -700,7 +744,6 @@ | ||
700 | 744 | PNICAPIC.Tag := PNICAPIC.Tag - 1; |
701 | 745 | |
702 | 746 | CarregarImagem(PNICAPIC.Tag); |
703 | - AtualizarBotoesDoNavegadorDeImagens; | |
704 | 747 | end; |
705 | 748 | |
706 | 749 | procedure TDAMOPrincipal.LimparCamposDaAplicacao(ACamposALimpar: TContexto); |
@@ -742,6 +785,8 @@ | ||
742 | 785 | ACTNSubstituirImagem.Enabled := False; |
743 | 786 | ACTNProximaImagem.Enabled := False; |
744 | 787 | ACTNImagemAnterior.Enabled := False; |
788 | + LABEImagens.Caption := '0 / 0'; | |
789 | + LABEImagensSombra.Caption := '0 / 0'; | |
745 | 790 | { Letra da música } |
746 | 791 | end; |
747 | 792 | end; |
@@ -846,6 +891,18 @@ | ||
846 | 891 | Reproduzir; |
847 | 892 | end; |
848 | 893 | |
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 | + | |
849 | 906 | procedure TDAMOPrincipal.ACTNSalvarID3v1Execute(Sender: TObject); |
850 | 907 | begin |
851 | 908 | SalvarID3v1; |
@@ -921,6 +978,16 @@ | ||
921 | 978 | ACTNSubstituirImagem.Enabled := ACTNSalvarImagemComo.Enabled; |
922 | 979 | TFORMPrincipal(Owner).LABEImagens.Caption := Succ(PNICAPIC.Tag).ToString + ' / ' + PNICAPIC.Items.Count.ToString; |
923 | 980 | 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; | |
924 | 991 | end; |
925 | 992 | |
926 | 993 | procedure TDAMOPrincipal.AtualizarBotoesDoReprodutor; |
@@ -1137,6 +1204,13 @@ | ||
1137 | 1204 | inherited SetURL('WOAR',Value); |
1138 | 1205 | end; |
1139 | 1206 | |
1207 | +{ TPNGImageCollectionItemsHelper } | |
1208 | + | |
1209 | +procedure TPNGImageCollectionHelper.ExcluirAtual; | |
1210 | +begin | |
1211 | + Items.Delete(Tag); | |
1212 | +end; | |
1213 | + | |
1140 | 1214 | end. |
1141 | 1215 | |
1142 | 1216 |
@@ -77,6 +77,8 @@ | ||
77 | 77 | PNSBSubstituirImagem: TPngSpeedButton; |
78 | 78 | LABEImagens: TLabel; |
79 | 79 | LABEImagensSombra: TLabel; |
80 | + PNSBReverterID3v2: TPngSpeedButton; | |
81 | + PNSBReverterID3v1: TPngSpeedButton; | |
80 | 82 | procedure PABOMarqueePaint(Sender: TObject); |
81 | 83 | procedure IMAGID3v2Click(Sender: TObject); |
82 | 84 | procedure ID3v1Modificado(Sender: TObject); |