Skip to content
This repository was archived by the owner on Nov 16, 2025. It is now read-only.
Draft
105 changes: 35 additions & 70 deletions addtorrent.pas
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{*************************************************************************************
This file is part of Transmission Remote GUI.
Copyright (c) 2008-2019 by Yury Sidorov and Transmission Remote GUI working group.
Copyright (c) 2025 by Daniel Kamil Kozar

Transmission Remote GUI is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -39,7 +40,7 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Spin, VarGrid, Grids, ButtonPanel, ExtCtrls, Buttons,
varlist, fpjson, StrUtils, DateUtils, LazUTF8;
varlist, fpjson, StrUtils, DateUtils, LazUTF8, FolderData;

resourcestring
SSize = 'Size';
Expand Down Expand Up @@ -82,21 +83,19 @@ TAddTorrentForm = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
procedure SearchGoodExtension ();
function GetTempate (ext:string; var e: array of string):integer;
function IsFileTemplate(filename:string; cntE : integer; e: array of string):boolean;
procedure DeleteDirs(maxdel : Integer);
procedure SearchMatchingDestinationFolder ();

private
DiskSpaceTimer: TTimer;
FDiskSpaceCaption: string;
FTree: TFilesTree;
FolderData: TConnectionFolderData;
OrigCaption: string;
procedure TreeStateChanged(Sender: TObject);
procedure UpdateSize;
public
OrigCaption: string;
Extension : string;
property FilesTree: TFilesTree read FTree;
constructor Create(TheOwner: TComponent; ConnFolderData: TConnectionFolderData); reintroduce;
end;

TFolderInfo = record
Expand Down Expand Up @@ -870,78 +869,39 @@ procedure TAddTorrentForm.FormShow(Sender: TObject);
lvFiles.EndUpdate;
end;

// Search good extension
SearchGoodExtension ();
SearchMatchingDestinationFolder();

DiskSpaceTimerTimer(nil);
AppNormal;
end;

procedure TAddTorrentForm.DeleteDirs(maxdel : Integer);
var
i,min,max,indx, fldr: integer;
pFD : FolderData;
begin
max:=Ini.ReadInteger('Interface', 'MaxFoldersHistory', 50);
Ini.WriteInteger ('Interface', 'MaxFoldersHistory', max); // PETROV

try
while (cbDestFolder.Items.Count+maxdel) > max do begin
min := 9999999;
indx:=-1;
for i:=0 to cbDestFolder.Items.Count - 1 do begin
pFD := cbDestFolder.Items.Objects[i] as FolderData;

fldr := DaysBetween(SysUtils.Date,pFD.Lst);
if SysUtils.Date > pFD.Lst then
fldr := 0- fldr;

fldr := fldr + pFD.Hit;
if fldr < min then begin
min := fldr;
indx:= i;
end;
end;

if indx > -1 then
cbDestFolder.Items.Delete(indx);
end;
except
MessageDlg('Error: LS-001. Please contact the developer', mtError, [mbOK], 0);
end;
end;

procedure TAddTorrentForm.OKButtonClick(Sender: TObject);
var
s,e : string;
i : integer;
pFD : FolderData;
pFD : TFolderData;
begin

s := CorrectPath(cbDestFolder.Text);
e := edExtension.Text;
try
DeleteDirs (0); // check count items
i := cbDestFolder.Items.IndexOf(s);
if i < 0 then begin
DeleteDirs (1); // prepare for new item
cbDestFolder.Items.Add (s);
i:=cbDestFolder.Items.IndexOf(s);
cbDestFolder.ItemIndex:= i; // Re-set item index in case DeleteDirs actually deleted a dir and removed the text from the combobox
pFD := FolderData.create;
pFD.Hit:= 1;
pFD.Ext:= e;
pFD.Txt:= s;
pFD.Lst:= SysUtils.Date;
cbDestFolder.ItemIndex:= i;
pFD := TFolderData.create;
pFD.NumUsed:= 1;
pFD.AddPattern:= e;
pFD.LastUsed:= SysUtils.Date;
cbDestFolder.Items.Objects[i]:= pFD;
end else begin
pFD := cbDestFolder.Items.Objects[i] as FolderData;
pFD.Hit:= pFD.Hit + 1;
pFD.Ext:= e;
pFD.Txt:= s;
pFD.Lst:= SysUtils.Date;
pFD := cbDestFolder.Items.Objects[i] as TFolderData;
pFD.NumUsed:= pFD.NumUsed + 1;
pFD.AddPattern:= e;
pFD.LastUsed:= SysUtils.Date;
cbDestFolder.Items.Objects[i]:= pFD;
if cbDestFolder.ItemIndex < 0 then begin // as above, if DeleteDirs ended up deleting stuff...
if cbDestFolder.ItemIndex < 0 then begin
cbDestFolder.ItemIndex:= i;
end;
end;
Expand Down Expand Up @@ -1011,15 +971,15 @@ procedure TAddTorrentForm.cbDestFolderChange(Sender: TObject);
var
s : string;
i : integer;
pFD : FolderData;
pFD : TFolderData;
begin
s := cbDestFolder.Text;
i := cbDestFolder.Items.IndexOf(s);
if i < 0 then begin
edExtension.Text := '';
end else begin
pFD := cbDestFolder.Items.Objects[i] as FolderData;
edExtension.Text:= pFD.Ext;
pFD := cbDestFolder.Items.Objects[i] as TFolderData;
edExtension.Text:= pFD.AddPattern;
end;
DiskSpaceTimer.Enabled:=True;
end;
Expand Down Expand Up @@ -1094,7 +1054,7 @@ procedure TAddTorrentForm.TreeStateChanged(Sender: TObject);
UpdateSize;
end;

function TAddTorrentForm.GetTempate (ext:string; var e: array of string):integer;
function GetTempate (ext:string; var e: array of string):integer;
var
tmp,exten : string;
i,n : integer;
Expand All @@ -1118,7 +1078,7 @@ function TAddTorrentForm.GetTempate (ext:string; var e: array of string):intege
GetTempate := n;
end;

function TAddTorrentForm.IsFileTemplate(filename:string; cntE : integer; e: array of string):boolean;
function IsFileTemplate(filename:string; cntE : integer; e: array of string):boolean;
var
tmp, tmpExt, tmp_Name, sstr: string;
i,n,lstr,j,k, total_sstr, total_templ : integer;
Expand Down Expand Up @@ -1184,13 +1144,12 @@ function TAddTorrentForm.IsFileTemplate(filename:string; cntE : integer; e: arr
end;
end;


procedure TAddTorrentForm.SearchGoodExtension ();
procedure TAddTorrentForm.SearchMatchingDestinationFolder;
var
i,j, jMax, torrMax : integer;
s, filename : string;
filesize, dTotal,dTotalMax : double;
pFD : FolderData;
pFD : TFolderData;
e : array [0..50] of string;
n : integer;
begin
Expand All @@ -1199,8 +1158,8 @@ procedure TAddTorrentForm.SearchGoodExtension ();

try
for j:=0 to cbDestFolder.Items.Count-1 do begin
pFD := cbDestFolder.Items.Objects[j] as FolderData;
s := Trim(pFD.Ext);
pFD := cbDestFolder.Items.Objects[j] as TFolderData;
s := Trim(pFD.AddPattern);
if s = '' then continue;

n := GetTempate (AnsiLowerCase(s), e);
Expand Down Expand Up @@ -1228,9 +1187,9 @@ procedure TAddTorrentForm.SearchGoodExtension ();

try
if jMax <> -1 then begin
pFD := cbDestFolder.Items.Objects[jMax] as FolderData;
pFD := cbDestFolder.Items.Objects[jMax] as TFolderData;
cbDestFolder.ItemIndex := jMax;
cbDestFolder.Text := pFD.Txt;
cbDestFolder.Text := pFD.Path;
cbDestFolderChange(nil);
end else begin
cbDestFolderChange(nil);
Expand All @@ -1240,6 +1199,12 @@ procedure TAddTorrentForm.SearchGoodExtension ();
end;
end;

constructor TAddTorrentForm.Create(TheOwner: TComponent; ConnFolderData: TConnectionFolderData);
begin
FolderData := ConnFolderData;
inherited Create(TheOwner);
end;

procedure TAddTorrentForm.FormCreate(Sender: TObject);
begin
OrigCaption:=Caption;
Expand Down
Loading
Loading