Skip to content

Commit 9472fbe

Browse files
Combine two routine to one.
1 parent bba4c40 commit 9472fbe

File tree

2 files changed

+78
-73
lines changed

2 files changed

+78
-73
lines changed

source/main.lfm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,14 @@ object FormTrackerModify: TFormTrackerModify
301301
object MenuUpdateTorrent: TMenuItem
302302
Caption = '&Update torrent'
303303
Hint = 'Update the torrent files'
304-
object MenuUpdateTorrentAddBefore: TMenuItem
305-
Caption = 'Add new trackers &Before original trackers (new trackers + original trackers)'
306-
OnClick = MenuUpdateTorrentAddBeforeClick
307-
end
308304
object MenuUpdateTorrentAddAfter: TMenuItem
309305
Caption = 'Add new trackers &After original trackers (original trackers + new trackers)'
310306
OnClick = MenuUpdateTorrentAddAfterClick
311307
end
308+
object MenuUpdateTorrentAddBefore: TMenuItem
309+
Caption = 'Add new trackers &Before original trackers (new trackers + original trackers)'
310+
OnClick = MenuUpdateTorrentAddBeforeClick
311+
end
312312
object MenuUpdateTorrentSort: TMenuItem
313313
Caption = '&Sort the trackers by name.'
314314
OnClick = MenuUpdateTorrentSortClick

source/main.pas

Lines changed: 74 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ TFormTrackerModify = class(TForm)
9696
//Drag and drop '*.torrent' files/directory or 'tracker.txt'
9797
procedure FormDropFiles(Sender: TObject; const FileNames: array of UTF8String);
9898

99-
100-
10199
//At start of the program the form will be show/hide
102100
procedure FormShow(Sender: TObject);
103101
procedure MenuFileOpenTrackerListClick(Sender: TObject);
@@ -124,16 +122,23 @@ TFormTrackerModify = class(TForm)
124122

125123
private
126124
{ private declarations }
127-
FTrackerFinalList, //Trackers that must be put inside the torrent.
128-
FTrackerAddedByUserList, //Trackers that we want too add.
129-
FTrackerBanByUserList, //trackers that must not be present inside torrent.
130-
FTrackerFromInsideTorrentFilesList, //Trackers that are already inside the torrent.
131-
FTrackerDeselectedByUserList, //trackers that must not be present inside torrent.
132-
133-
FTorrentFileNameList,// All the torrent files that must be updated
134-
FLogStringList //Log string text output
125+
//Trackers that must be put inside the torrent.
126+
FTrackerFinalList,
127+
//Trackers that we want too add.
128+
FTrackerAddedByUserList,
129+
//trackers that must not be present inside torrent.
130+
FTrackerBanByUserList,
131+
//Trackers that are already inside the torrent.
132+
FTrackerFromInsideTorrentFilesList,
133+
//trackers that must not be present inside torrent.
134+
FTrackerManualyDeselectedByUserList,
135+
// All the torrent files that must be updated
136+
FTorrentFileNameList,
137+
//Log string text output
138+
FLogStringList
135139
: TStringList;
136-
FDecodePresentTorrent: TDecodeTorrent; // is the present torrent file being process
140+
// is the present torrent file being process
141+
FDecodePresentTorrent: TDecodeTorrent;
137142
FConcoleMode, //user have start the program in console mode
138143
FFilePresentBanByUserList//There is a file 'remove_trackers.txt' detected
139144
: boolean;
@@ -174,7 +179,6 @@ TFormTrackerModify = class(TForm)
174179
function DecodeTorrentFile(const FileName: UTF8String): boolean;
175180
procedure UpdateTrackerInsideFileList;
176181
procedure UpdateTorrentTrackerList;
177-
procedure CombineFourTrackerListToOne;
178182
procedure CombineFiveTrackerListToOne(TrackerListOrder: TTrackerListOrder);
179183
procedure ShowTrackerInsideFileList;
180184

@@ -246,9 +250,9 @@ procedure TFormTrackerModify.FormCreate(Sender: TObject);
246250
FTrackerBanByUserList.Sorted := False;
247251

248252
//Create deselect tracker list where the user select via user interface checkbox
249-
FTrackerDeselectedByUserList := TStringList.Create;
250-
FTrackerDeselectedByUserList.Duplicates := dupIgnore;
251-
FTrackerDeselectedByUserList.Sorted := False;
253+
FTrackerManualyDeselectedByUserList := TStringList.Create;
254+
FTrackerManualyDeselectedByUserList.Duplicates := dupIgnore;
255+
FTrackerManualyDeselectedByUserList.Sorted := False;
252256

253257
//Create tracker list where the user can manualy add items to it
254258
FTrackerAddedByUserList := TStringList.Create;
@@ -301,7 +305,7 @@ procedure TFormTrackerModify.FormDestroy(Sender: TObject);
301305
FTrackerFromInsideTorrentFilesList.Free;
302306
FTorrentFileNameList.Free;
303307
FControlerGridTorrentData.Free;
304-
FTrackerDeselectedByUserList.Free;
308+
FTrackerManualyDeselectedByUserList.Free;
305309
end;
306310

307311
procedure TFormTrackerModify.MenuFileTorrentFolderClick(Sender: TObject);
@@ -463,16 +467,9 @@ procedure TFormTrackerModify.UpdateTorrent;
463467
if not CopyUserInputNewTrackersToList then
464468
Exit;
465469

466-
//There are 3 list that must be combine
467-
//FTrackerFinalList := FTrackerAddedByUserList + FTrackerFromInsideTorrentFilesList
468-
// - FTrackerBanByUserList
469-
CombineFourTrackerListToOne;
470-
471-
//for tloSort we only need to update the list one time for all the torrent files.
472-
if FTrackerListOrderForUpdatedTorrent = tloSort then
473-
begin
474-
FTrackerFinalList.Sort;
475-
end;
470+
//There are 5 list that must be combine.
471+
//Must use 'sort' for correct FTrackerFinalList.Count
472+
CombineFiveTrackerListToOne(tloSort);
476473

477474
//How many trackers must be put inside each torrent file.
478475
CountTrackers := FTrackerFinalList.Count;
@@ -503,6 +500,7 @@ procedure TFormTrackerModify.UpdateTorrent;
503500
Continue;
504501

505502
//tloInsertBefore and tloAppendAfter need the list be updated or each torrent file.
503+
//for tloSort it is already process one time.
506504
if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
507505
(FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
508506
begin
@@ -591,13 +589,15 @@ procedure TFormTrackerModify.AddButIngnoreDuplicates(StringList: TStringList;
591589
//Stringlist that are not sorted must use IndexOf to ignore Duplicates.
592590
if not StringList.Sorted then
593591
begin
592+
//not sorted version
594593
if StringList.IndexOf(Str) < 0 then
595594
begin
596595
StringList.add(Str);
597596
end;
598597
end
599598
else
600599
begin
600+
//sorted version
601601
StringList.add(Str);
602602
end;
603603

@@ -891,37 +891,12 @@ function TFormTrackerModify.CopyUserInputNewTrackersToList: boolean;
891891
end;
892892

893893

894-
procedure TFormTrackerModify.CombineFourTrackerListToOne;
895-
var
896-
TrackerStr: UTF8String;
897-
begin
898-
// FTrackerFinalList =
899-
// (FTrackerAddedByUserList
900-
// + FTrackerFromInsideTorrentFilesList)
901-
// - FTrackerBanByUserList
902-
// - FTrackerDeselectedByUserList
903-
FTrackerFinalList.Clear;
904-
905-
for TrackerStr in FTrackerAddedByUserList do
906-
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
907-
908-
for TrackerStr in FTrackerFromInsideTorrentFilesList do
909-
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
910-
911-
//Trackers from FTrackerAddedByUserList overrule the one from FTrackerDeselectedByUserList
912-
RemoveTrackersFromList(FTrackerAddedByUserList, FTrackerDeselectedByUserList);
913-
914-
//Remove the trackers that we do not want must be the last step.
915-
RemoveTrackersFromList(FTrackerBanByUserList, FTrackerFinalList);
916-
RemoveTrackersFromList(FTrackerDeselectedByUserList, FTrackerFinalList);
917-
918-
end;
919-
920894
procedure TFormTrackerModify.CombineFiveTrackerListToOne(
921895
TrackerListOrder: TTrackerListOrder);
922896
var
923897
TrackerStr: UTF8String;
924-
TrackerFromInsideOneTorrentFile: TStringList;
898+
TrackerDeselectTempList, TrackerFromInsideOneTorrentFile: TStringList;
899+
925900
begin
926901
//Must keep the original order of trackers inside the torrent file.
927902
//The new trackers can be added at the begin of end of the list.
@@ -931,20 +906,31 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
931906
// + FTrackerAddedByUserList
932907
// + FTrackerFromInsideTorrentFilesList)
933908
// - FTrackerBanByUserList
934-
// - FTrackerDeselectedByUserList
909+
// - FTrackerManualyDeselectedByUserList
935910

936911

937912
TrackerFromInsideOneTorrentFile := TStringList.Create;
938913

939914
try
940-
//Begin with a empty list
915+
//Begin with an empty list
941916
FTrackerFinalList.Clear;
942917

943-
//Read the trackers inside the torrent file
944-
//Copy the trackers found in one torrent file to TrackerFromInsideOneTorrentFile
945-
for TrackerStr in FDecodePresentTorrent.TrackerList do
918+
if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
919+
(FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
946920
begin
947-
AddButIngnoreDuplicates(TrackerFromInsideOneTorrentFile, TrackerStr);
921+
922+
//Read the trackers inside the torrent file
923+
//Copy the trackers found in one torrent file to TrackerFromInsideOneTorrentFile
924+
for TrackerStr in FDecodePresentTorrent.TrackerList do
925+
begin
926+
AddButIngnoreDuplicates(TrackerFromInsideOneTorrentFile, TrackerStr);
927+
end;
928+
929+
//Remove the trackers that we do not want, but these trackers can be posible added again.
930+
RemoveTrackersFromList(FTrackerBanByUserList, TrackerFromInsideOneTorrentFile);
931+
RemoveTrackersFromList(FTrackerManualyDeselectedByUserList,
932+
TrackerFromInsideOneTorrentFile);
933+
948934
end;
949935

950936
//Add the new tracker list before of after the original trackers list inside the torrent file.
@@ -985,18 +971,39 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
985971

986972
end;
987973

974+
tloSort:
975+
begin
976+
//Sort
977+
978+
for TrackerStr in FTrackerAddedByUserList do
979+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
980+
981+
for TrackerStr in FTrackerFromInsideTorrentFilesList do
982+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
983+
984+
FTrackerFinalList.Sort;
985+
end;
986+
988987
else
989988
begin
990-
Assert(True, 'case else: Should never been called. CombineFourTrackerListToOne');
989+
Assert(True, 'case else: Should never been called. CombineFiveTrackerListToOne');
991990
end;
992991
end;
993992

994-
//Trackers from FTrackerAddedByUserList overrule the one from FTrackerDeselectedByUserList
995-
RemoveTrackersFromList(FTrackerAddedByUserList, FTrackerDeselectedByUserList);
993+
//Trackers from FTrackerAddedByUserList overrule the one from FTrackerManualyDeselectedByUserList
994+
//This is when there is a conflict betwean 'add' and 'remove manual selection'
995+
996+
//Must keep FTrackerManualyDeselectedByUserList intact. Copy it to TrackerDeselectTempList
997+
TrackerDeselectTempList := TStringList.Create;
998+
TrackerDeselectTempList.Text := FTrackerManualyDeselectedByUserList.Text;
996999

997-
//Remove the trackers that we do not want must be the last step.
1000+
RemoveTrackersFromList(FTrackerAddedByUserList, TrackerDeselectTempList);
1001+
1002+
//Remove the trackers that we do not want in FTrackerFinalList must be the last step.
9981003
RemoveTrackersFromList(FTrackerBanByUserList, FTrackerFinalList);
999-
RemoveTrackersFromList(FTrackerDeselectedByUserList, FTrackerFinalList);
1004+
RemoveTrackersFromList(TrackerDeselectTempList, FTrackerFinalList);
1005+
1006+
TrackerDeselectTempList.Free;
10001007

10011008
finally
10021009
TrackerFromInsideOneTorrentFile.Free;
@@ -1009,10 +1016,10 @@ procedure TFormTrackerModify.UpdateTrackerInsideFileList;
10091016
i: integer;
10101017
begin
10111018
//Copy items from CheckListBoxTrackersList to FTrackerFromInsideTorrentFilesList
1012-
//Copy items from CheckListBoxTrackersList to FTrackerDeselectedByUserList
1019+
//Copy items from CheckListBoxTrackersList to FTrackerManualyDeselectedByUserList
10131020

10141021
FTrackerFromInsideTorrentFilesList.Clear;
1015-
FTrackerDeselectedByUserList.Clear;
1022+
FTrackerManualyDeselectedByUserList.Clear;
10161023

10171024
if CheckListBoxTrackersList.Count > 0 then
10181025
begin
@@ -1029,7 +1036,7 @@ procedure TFormTrackerModify.UpdateTrackerInsideFileList;
10291036
begin
10301037
//Delected by user
10311038
AddButIngnoreDuplicates(
1032-
FTrackerDeselectedByUserList, CheckListBoxTrackersList.Items[i]);
1039+
FTrackerManualyDeselectedByUserList, CheckListBoxTrackersList.Items[i]);
10331040
end;
10341041

10351042
end;
@@ -1261,8 +1268,6 @@ procedure TFormTrackerModify.FormDropFiles(Sender: TObject;
12611268
TorrentFileSelectionDetected := False;
12621269

12631270

1264-
1265-
12661271
ViewUpdateBeginActiveOneTimeOnly := False;
12671272

12681273
//Remember every file names from drag and drop.

0 commit comments

Comments
 (0)