mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
UPD: Update operations viewer and panel when operations moved.
This commit is contained in:
parent
f9242e61df
commit
a7534d3d7e
3 changed files with 38 additions and 23 deletions
|
|
@ -120,7 +120,7 @@ type
|
|||
function GetFocusedItem: TViewBaseItem;
|
||||
procedure SetFocusItem(AOperationHandle: TOperationHandle);
|
||||
procedure SetNewQueue(Item: TViewOperationItem; NewQueue: TOperationsManagerQueueIdentifier);
|
||||
procedure UpdateView(Operation: TFileSourceOperation; Event: TOperationManagerEvent);
|
||||
procedure UpdateView(Item: TOperationsManagerItem; Event: TOperationManagerEvent);
|
||||
procedure UpdateCounters;
|
||||
procedure UpdateControls;
|
||||
procedure UpdateItems;
|
||||
|
|
@ -379,7 +379,8 @@ begin
|
|||
UpdateControls;
|
||||
UpdateItems;
|
||||
|
||||
OperationsManager.AddEventsListener([omevOperationAdded, omevOperationRemoved],
|
||||
OperationsManager.AddEventsListener(
|
||||
[omevOperationAdded, omevOperationRemoved, omevOperationMoved],
|
||||
@UpdateView);
|
||||
end;
|
||||
|
||||
|
|
@ -421,7 +422,8 @@ end;
|
|||
|
||||
procedure TfrmViewOperations.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
OperationsManager.RemoveEventsListener([omevOperationAdded, omevOperationRemoved],
|
||||
OperationsManager.RemoveEventsListener(
|
||||
[omevOperationAdded, omevOperationRemoved, omevOperationMoved],
|
||||
@UpdateView);
|
||||
end;
|
||||
|
||||
|
|
@ -852,8 +854,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmViewOperations.UpdateView(Operation: TFileSourceOperation;
|
||||
Event: TOperationManagerEvent);
|
||||
procedure TfrmViewOperations.UpdateView(Item: TOperationsManagerItem; Event: TOperationManagerEvent);
|
||||
begin
|
||||
UpdateCounters;
|
||||
UpdateItems;
|
||||
|
|
|
|||
|
|
@ -113,12 +113,11 @@ type
|
|||
TOperationManagerEvent =
|
||||
(omevOperationAdded,
|
||||
omevOperationRemoved,
|
||||
omevOperationStarted,
|
||||
omevOperationFinished);
|
||||
omevOperationMoved);
|
||||
|
||||
TOperationManagerEvents = set of TOperationManagerEvent;
|
||||
|
||||
TOperationManagerEventNotify = procedure(Operation: TFileSourceOperation;
|
||||
TOperationManagerEventNotify = procedure(Item: TOperationsManagerItem;
|
||||
Event: TOperationManagerEvent) of object;
|
||||
|
||||
{en
|
||||
|
|
@ -157,7 +156,7 @@ type
|
|||
{en
|
||||
Notifies all listeners that an event has occurred (or multiple events).
|
||||
}
|
||||
procedure NotifyEvents(Operation: TFileSourceOperation; Events: TOperationManagerEvents);
|
||||
procedure NotifyEvents(Item: TOperationsManagerItem; Events: TOperationManagerEvents);
|
||||
|
||||
public
|
||||
constructor Create;
|
||||
|
|
@ -257,6 +256,7 @@ begin
|
|||
begin
|
||||
FQueue := NewQueue;
|
||||
NewQueue.Insert(Self, InsertAtFront);
|
||||
OperationsManager.NotifyEvents(Self, [omevOperationMoved]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -340,7 +340,10 @@ begin
|
|||
if FromIndex >= 0 then
|
||||
begin
|
||||
if not Assigned(TargetItem) then
|
||||
FList.Move(FromIndex, FList.Count - 1)
|
||||
begin
|
||||
FList.Move(FromIndex, FList.Count - 1);
|
||||
OperationsManager.NotifyEvents(SourceItem, [omevOperationMoved]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
ToIndex := GetIndexByHandle(TargetItem.Handle);
|
||||
|
|
@ -357,6 +360,7 @@ begin
|
|||
Inc(ToIndex);
|
||||
end;
|
||||
FList.Move(FromIndex, ToIndex);
|
||||
OperationsManager.NotifyEvents(SourceItem, [omevOperationMoved]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -475,7 +479,7 @@ begin
|
|||
|
||||
Item.SetQueue(GetOrCreateQueue(QueueIdentifier), InsertAtFrontOfQueue);
|
||||
|
||||
NotifyEvents(Operation, [omevOperationAdded]);
|
||||
NotifyEvents(Item, [omevOperationAdded]);
|
||||
|
||||
Thread.Resume;
|
||||
except
|
||||
|
|
@ -627,8 +631,6 @@ begin
|
|||
Item := TOperationsManagerItem(Queue.Items[OperIndex]);
|
||||
if Item.Thread = Thread then
|
||||
begin
|
||||
NotifyEvents(Item.Operation, [omevOperationFinished]);
|
||||
|
||||
Queue.Remove(Item);
|
||||
|
||||
if Queue.Count = 0 then
|
||||
|
|
@ -637,7 +639,7 @@ begin
|
|||
Queue.Free;
|
||||
end;
|
||||
|
||||
NotifyEvents(Item.Operation, [omevOperationRemoved]);
|
||||
NotifyEvents(Item, [omevOperationRemoved]);
|
||||
|
||||
// Here the operation should not be used anymore
|
||||
// (by the thread and by any operations viewer).
|
||||
|
|
@ -652,7 +654,6 @@ end;
|
|||
procedure TOperationsManager.StartOperation(Item: TOperationsManagerItem);
|
||||
begin
|
||||
Item.Operation.Start;
|
||||
NotifyEvents(Item.Operation, [omevOperationStarted]);
|
||||
end;
|
||||
|
||||
procedure TOperationsManager.CancelAll;
|
||||
|
|
@ -802,10 +803,9 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TOperationsManager.NotifyEvents(Operation: TFileSourceOperation;
|
||||
Events: TOperationManagerEvents);
|
||||
procedure TOperationsManager.NotifyEvents(Item: TOperationsManagerItem; Events: TOperationManagerEvents);
|
||||
var
|
||||
Item: PEventsListItem;
|
||||
EventItem: PEventsListItem;
|
||||
Event: TOperationManagerEvent;
|
||||
i: Integer;
|
||||
begin
|
||||
|
|
@ -816,8 +816,8 @@ begin
|
|||
// Call each listener function.
|
||||
for i := 0 to FEventsListeners[Event].Count - 1 do
|
||||
begin
|
||||
Item := PEventsListItem(FEventsListeners[Event].Items[i]);
|
||||
Item^.EventFunction(Operation, Event);
|
||||
EventItem := PEventsListItem(FEventsListeners[Event].Items[i]);
|
||||
EventItem^.EventFunction(Item, Event);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Controls, Forms, Graphics,
|
||||
uFileSourceOperation;
|
||||
uFileSourceOperation, uOperationsManager;
|
||||
|
||||
type
|
||||
|
||||
|
|
@ -43,6 +43,7 @@ type
|
|||
function GetProgressString(Progress: Double): String;
|
||||
function GetOperationDescription(Operation: TFileSourceOperation): String;
|
||||
procedure GetStateColor(State: TFileSourceOperationState; out ColorFrom, ColorTo: TColor);
|
||||
procedure OperationsManagerEvent(Item: TOperationsManagerItem; Event: TOperationManagerEvent);
|
||||
procedure StartPauseOperation(Operation: TFileSourceOperation);
|
||||
procedure UpdateItems;
|
||||
public
|
||||
|
|
@ -60,7 +61,6 @@ uses
|
|||
LCLIntf, LCLType, LCLProc, Math,
|
||||
fViewOperations, fFileOpDlg,
|
||||
uDCUtils, uLng,
|
||||
uOperationsManager,
|
||||
uFileSourceOperationTypes;
|
||||
|
||||
const
|
||||
|
|
@ -157,6 +157,12 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TOperationsPanel.OperationsManagerEvent(Item: TOperationsManagerItem; Event: TOperationManagerEvent);
|
||||
begin
|
||||
UpdateItems;
|
||||
UpdateView;
|
||||
end;
|
||||
|
||||
procedure TOperationsPanel.UpdateItems;
|
||||
var
|
||||
OpManItem: TOperationsManagerItem;
|
||||
|
|
@ -236,10 +242,18 @@ begin
|
|||
inherited Create(AOwner);
|
||||
FOperations := TFPList.Create;
|
||||
FQueues := TFPList.Create;
|
||||
|
||||
OperationsManager.AddEventsListener(
|
||||
[omevOperationAdded, omevOperationRemoved, omevOperationMoved],
|
||||
@OperationsManagerEvent);
|
||||
end;
|
||||
|
||||
destructor TOperationsPanel.Destroy;
|
||||
begin
|
||||
OperationsManager.RemoveEventsListener(
|
||||
[omevOperationAdded, omevOperationRemoved, omevOperationMoved],
|
||||
@OperationsManagerEvent);
|
||||
|
||||
inherited Destroy;
|
||||
FOperations.Free;
|
||||
FQueues.Free;
|
||||
|
|
@ -434,7 +448,7 @@ end;
|
|||
|
||||
procedure TOperationsPanel.UpdateView;
|
||||
begin
|
||||
UpdateItems;
|
||||
UpdateItems; //
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue