Skip to content

Commit

Permalink
Issue #178: fix now wrong calculation of selected objects size sum
Browse files Browse the repository at this point in the history
  • Loading branch information
ansgarbecker committed Feb 10, 2024
1 parent 61f95c8 commit e6b8d68
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 7 deletions.
7 changes: 7 additions & 0 deletions source/tabletools.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -765,4 +765,11 @@ object frmTableTools: TfrmTableTools
OnClick = menuCopyMysqldumpCommandClick
end
end
object timerCalcSize: TTimer
Enabled = False
Interval = 200
OnTimer = timerCalcSizeTimer
Left = 264
Top = 352
end
end
39 changes: 32 additions & 7 deletions source/tabletools.pas
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ TfrmTableTools = class(TExtForm)
editDatabaseFilter: TButtonedEdit;
editTableFilter: TButtonedEdit;
TreeObjects: TVirtualStringTree;
timerCalcSize: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnHelpMaintenanceClick(Sender: TObject);
Expand Down Expand Up @@ -145,6 +146,7 @@ TfrmTableTools = class(TExtForm)
procedure editDatabaseTableFilterChange(Sender: TObject);
procedure editDatabaseTableFilterKeyPress(Sender: TObject; var Key: Char);
procedure editDatabaseTableFilterRightButtonClick(Sender: TObject);
procedure timerCalcSizeTimer(Sender: TObject);
const
StatusMsg = '%s %s ...';
private
Expand Down Expand Up @@ -624,18 +626,13 @@ procedure TfrmTableTools.TreeObjectsChange(Sender: TBaseVirtualTree; Node: PVirt
procedure TfrmTableTools.TreeObjectsChecked(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Obj: PDBObject;
ObjSize: Int64;
begin
// Track sum of checked objects size
Obj := Sender.GetNodeData(Node);
ObjSize := Max(Obj.Size, 0);
if Node.CheckState in CheckedStates then
Inc(FObjectSizes, ObjSize)
else
Dec(FObjectSizes, ObjSize);
if Obj.NodeType = lntDb then
FillTargetDatabases;
ValidateControls(Sender);
timerCalcSize.Enabled := False;
timerCalcSize.Enabled := True;
end;


Expand Down Expand Up @@ -1048,6 +1045,8 @@ procedure TfrmTableTools.editDatabaseTableFilterChange(Sender: TObject);

editDatabaseFilter.RightButton.Visible := editDatabaseFilter.Text <> '';
editTableFilter.RightButton.Visible := editTableFilter.Text <> '';
timerCalcSize.Enabled := False;
timerCalcSize.Enabled := True;
end;


Expand Down Expand Up @@ -1335,6 +1334,32 @@ procedure TfrmTableTools.spltHorizontallyMoved(Sender: TObject);
editTableFilter.Left := editDatabaseFilter.Width + 1;
end;

procedure TfrmTableTools.timerCalcSizeTimer(Sender: TObject);
var
SessionNode, DBNode: PVirtualNode;
CheckedObjects: TDBObjectList;
DBObj: TDBObject;
begin
// Calculate object sizes and display on label
timerCalcSize.Enabled := False;
SessionNode := TreeObjects.GetFirstChild(nil);
FObjectSizes := 0;
while Assigned(SessionNode) do begin
DBNode := TreeObjects.GetFirstVisibleChild(SessionNode);
while Assigned(DBNode) do begin
if not (DBNode.CheckState in [csUncheckedNormal, csUncheckedPressed]) then begin
CheckedObjects := GetCheckedObjects(DBNode);
for DBObj in CheckedObjects do begin
Inc(FObjectSizes, DBObj.Size);
end;
end;
DBNode := TreeObjects.GetNextVisibleSibling(DBNode);
end;
SessionNode := TreeObjects.GetNextVisibleSibling(SessionNode);
end;
ValidateControls(Sender);
end;

procedure TfrmTableTools.UpdateResultGrid;
var
Percent: Double;
Expand Down

0 comments on commit e6b8d68

Please sign in to comment.