@@ -42,7 +42,12 @@ interface
4242type
4343
4444 // Updated torrent file trackers list order.
45- TTrackerListOrder = (tloInsertBefore, tloAppendAfter, tloSort);
45+ TTrackerListOrder = (
46+ tloInsertNewBeforeAndKeepOriginalIntact,
47+ tloInsertNewBeforeAndKeepNewIntact,
48+ tloAppendNewAfterAndKeepOriginalIntact,
49+ tloAppendNewAfterAndKeepNewIntact,
50+ tloSort);
4651
4752
4853 { TFormTrackerModify }
@@ -60,6 +65,10 @@ TFormTrackerModify = class(TForm)
6065 MenuFileTorrentFolder: TMenuItem;
6166 MenuFileOpenTrackerList: TMenuItem;
6267 MenuHelpReportingIssue: TMenuItem;
68+ MenuUpdateTorrentAddBeforeRemoveOriginal: TMenuItem;
69+ MenuUpdateTorrentAddAfterRemoveOriginal: TMenuItem;
70+ MenuUpdateTorrentAddBeforeRemoveNew: TMenuItem;
71+ MenuUpdateTorrentAddAfterRemoveNew: TMenuItem;
6372 MenuUpdateTorrentSort: TMenuItem;
6473 MenuUpdateTorrentAddAfter: TMenuItem;
6574 MenuUpdateTorrentAddBefore: TMenuItem;
@@ -116,8 +125,10 @@ TFormTrackerModify = class(TForm)
116125 procedure MenuTrackersKeepOrDeleteAllTrackersClick (Sender: TObject);
117126
118127 // Menu update torrent
119- procedure MenuUpdateTorrentAddAfterClick (Sender: TObject);
120- procedure MenuUpdateTorrentAddBeforeClick (Sender: TObject);
128+ procedure MenuUpdateTorrentAddAfterRemoveNewClick (Sender: TObject);
129+ procedure MenuUpdateTorrentAddAfterRemoveOriginalClick (Sender: TObject);
130+ procedure MenuUpdateTorrentAddBeforeRemoveNewClick (Sender: TObject);
131+ procedure MenuUpdateTorrentAddBeforeRemoveOriginalClick (Sender: TObject);
121132 procedure MenuUpdateTorrentSortClick (Sender: TObject);
122133
123134 private
@@ -135,8 +146,7 @@ TFormTrackerModify = class(TForm)
135146 // All the torrent files that must be updated
136147 FTorrentFileNameList,
137148 // Log string text output
138- FLogStringList
139- : TStringList;
149+ FLogStringList: TStringList;
140150 // is the present torrent file being process
141151 FDecodePresentTorrent: TDecodeTorrent;
142152 FConcoleMode, // user have start the program in console mode
@@ -499,10 +509,9 @@ procedure TFormTrackerModify.UpdateTorrent;
499509 if not FDecodePresentTorrent.DecodeTorrent(FTorrentFileNameList[i]) then
500510 Continue;
501511
502- // tloInsertBefore and tloAppendAfter need the list be updated or each torrent file.
503- // for tloSort it is already process one time.
504- if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
505- (FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
512+
513+ // tloSort it is already process. But it not tloSort then process it.
514+ if FTrackerListOrderForUpdatedTorrent <> tloSort then
506515 begin
507516 // Add the new tracker before of after the original trackers inside the torrent.
508517 CombineFiveTrackerListToOne(FTrackerListOrderForUpdatedTorrent);
@@ -898,7 +907,6 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
898907 TrackerDeselectTempList, TrackerFromInsideOneTorrentFile: TStringList;
899908
900909begin
901- // Must keep the original order of trackers inside the torrent file.
902910 // The new trackers can be added at the begin of end of the list.
903911
904912 // FTrackerFinalList =
@@ -915,8 +923,7 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
915923 // Begin with an empty list
916924 FTrackerFinalList.Clear;
917925
918- if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
919- (FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
926+ if FTrackerListOrderForUpdatedTorrent <> tloSort then
920927 begin
921928
922929 // Read the trackers inside the torrent file
@@ -926,46 +933,80 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
926933 AddButIngnoreDuplicates(TrackerFromInsideOneTorrentFile, TrackerStr);
927934 end ;
928935
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-
934936 end ;
935937
936938 // Add the new tracker list before of after the original trackers list inside the torrent file.
937939 case TrackerListOrder of
938940
939- tloInsertBefore:
941+ tloInsertNewBeforeAndKeepOriginalIntact:
942+ begin
943+ // Before
944+
945+ // Must be place as first FTrackerAddedByUserList (Not instact when duplicated)
946+ for TrackerStr in FTrackerAddedByUserList do
947+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
948+
949+ // original tracker list is second place (Keep original intact)
950+ RemoveTrackersFromList(TrackerFromInsideOneTorrentFile, FTrackerFinalList);
951+ for TrackerStr in TrackerFromInsideOneTorrentFile do
952+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
953+
954+ // 'Others' trackers added as last. (Not instact when duplicated)
955+ for TrackerStr in FTrackerFromInsideTorrentFilesList do
956+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
957+ end ;
958+
959+
960+ tloInsertNewBeforeAndKeepNewIntact:
940961 begin
941962 // Before
942963
943- // Must be place as first FTrackerAddedByUserList
964+ // Must be place as first FTrackerAddedByUserList (keep new instact)
944965 for TrackerStr in FTrackerAddedByUserList do
945966 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
946967
947- // original tracker list is second place
968+ // original tracker list is second place (Not instact when duplicated)
969+ for TrackerStr in TrackerFromInsideOneTorrentFile do
970+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
971+
972+ // 'Others' trackers added as last. (Not instact when duplicated)
973+ for TrackerStr in FTrackerFromInsideTorrentFilesList do
974+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
975+ end ;
976+
977+
978+ tloAppendNewAfterAndKeepOriginalIntact:
979+ begin
980+ // After
981+
982+ // original tracker list must be place first. (keep original instact)
948983 for TrackerStr in TrackerFromInsideOneTorrentFile do
949984 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
950985
951- // 'Others' trackers added as last.
986+ // Must be place after TrackerFromInsideOneTorrentFile (Not instact when duplicated)
987+ for TrackerStr in FTrackerAddedByUserList do
988+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
989+
990+ // 'Others' trackers added as last. (Not instact when duplicated)
952991 for TrackerStr in FTrackerFromInsideTorrentFilesList do
953992 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
993+
954994 end ;
955995
956- tloAppendAfter :
996+ tloAppendNewAfterAndKeepNewIntact :
957997 begin
958998 // After
959999
960- // original tracker list must be place first.
1000+ // original tracker list must be place first. (Not instact when duplicated)
9611001 for TrackerStr in TrackerFromInsideOneTorrentFile do
9621002 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9631003
964- // Must be place after TrackerFromInsideOneTorrentFile
1004+ // Must be place after TrackerFromInsideOneTorrentFile (keep new instact)
1005+ RemoveTrackersFromList(FTrackerAddedByUserList, FTrackerFinalList);
9651006 for TrackerStr in FTrackerAddedByUserList do
9661007 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9671008
968- // 'Others' trackers added as last.
1009+ // 'Others' trackers added as last. (Not instact when duplicated)
9691010 for TrackerStr in FTrackerFromInsideTorrentFilesList do
9701011 AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9711012
@@ -996,16 +1037,17 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
9961037 // Must keep FTrackerManualyDeselectedByUserList intact. Copy it to TrackerDeselectTempList
9971038 TrackerDeselectTempList := TStringList.Create;
9981039 TrackerDeselectTempList.Text := FTrackerManualyDeselectedByUserList.Text;
999-
10001040 RemoveTrackersFromList(FTrackerAddedByUserList, TrackerDeselectTempList);
10011041
10021042 // Remove the trackers that we do not want in FTrackerFinalList must be the last step.
10031043 RemoveTrackersFromList(FTrackerBanByUserList, FTrackerFinalList);
10041044 RemoveTrackersFromList(TrackerDeselectTempList, FTrackerFinalList);
10051045
1046+ // No longer needed
10061047 TrackerDeselectTempList.Free;
10071048
10081049 finally
1050+ // No longer needed
10091051 TrackerFromInsideOneTorrentFile.Free;
10101052 end ;
10111053end ;
@@ -1015,6 +1057,7 @@ procedure TFormTrackerModify.UpdateTrackerInsideFileList;
10151057var
10161058 i: integer;
10171059begin
1060+ // Collect data what the user want to keep
10181061 // Copy items from CheckListBoxTrackersList to FTrackerFromInsideTorrentFilesList
10191062 // Copy items from CheckListBoxTrackersList to FTrackerManualyDeselectedByUserList
10201063
@@ -1176,17 +1219,35 @@ procedure TFormTrackerModify.MenuTrackersKeepOrDeleteAllTrackersClick(Sender: TO
11761219 CheckedOnOffAllTrackers(TMenuItem(Sender).Tag = 1 );
11771220end ;
11781221
1179- procedure TFormTrackerModify.MenuUpdateTorrentAddAfterClick (Sender: TObject);
1222+ procedure TFormTrackerModify.MenuUpdateTorrentAddAfterRemoveNewClick (Sender: TObject);
1223+ begin
1224+ // User have selected to add new tracker.
1225+ FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepOriginalIntact;
1226+ UpdateTorrent;
1227+ end ;
1228+
1229+ procedure TFormTrackerModify.MenuUpdateTorrentAddAfterRemoveOriginalClick (
1230+ Sender: TObject);
11801231begin
1181- // User can select to add new tracker before after the original
1182- FTrackerListOrderForUpdatedTorrent := tloAppendAfter ;
1232+ // User have selected to add new tracker.
1233+ FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepNewIntact ;
11831234 UpdateTorrent;
11841235end ;
11851236
1186- procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeClick (Sender: TObject);
1237+ procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeRemoveNewClick (Sender: TObject);
1238+
1239+
1240+ begin
1241+ // User have selected to add new tracker.
1242+ FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepOriginalIntact;
1243+ UpdateTorrent;
1244+ end ;
1245+
1246+ procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeRemoveOriginalClick (
1247+ Sender: TObject);
11871248begin
1188- // User can select to add new tracker before after the original
1189- FTrackerListOrderForUpdatedTorrent := tloInsertBefore ;
1249+ // User have selected to add new tracker.
1250+ FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepNewIntact ;
11901251 UpdateTorrent;
11911252end ;
11921253
0 commit comments