Subversion Repositories recyclebinunit

Rev

Rev 75 | Rev 83 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
75 daniel-mar 1
unit RecyclerListingMain;
2
 
3
interface
4
 
5
uses
6
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
77 daniel-mar 7
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, ImgList;
75 daniel-mar 8
 
9
type
10
  TRecyclerListingMainForm = class(TForm)
11
    TreeView1: TTreeView;
12
    Panel1: TPanel;
13
    Button1: TButton;
14
    CheckBox1: TCheckBox;
77 daniel-mar 15
    Button2: TButton;
16
    OpenDialog1: TOpenDialog;
17
    LabeledEdit1: TLabeledEdit;
18
    ImageList1: TImageList;
75 daniel-mar 19
    procedure Button1Click(Sender: TObject);
77 daniel-mar 20
    procedure Button2Click(Sender: TObject);
21
    procedure FormShow(Sender: TObject);
75 daniel-mar 22
  private
77 daniel-mar 23
    localRecyclersNode: TTreeNode;
24
    individualRecyclersNode: TTreeNode;
75 daniel-mar 25
  end;
26
 
27
var
28
  RecyclerListingMainForm: TRecyclerListingMainForm;
29
 
30
implementation
31
 
32
{$R *.dfm}
33
 
34
uses
35
  RecBinUnit2, ContNrs, SIDUnit;
36
 
37
// TODO: SID Namen auflösen und dementsprechend anzeigen
38
// TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen
77 daniel-mar 39
// TODO: Einstellungen usw anzeigen, so wie im alten Demo
75 daniel-mar 40
 
41
procedure TRecyclerListingMainForm.Button1Click(Sender: TObject);
42
var
43
  drives: TObjectList{TRbDrive};
44
  iDrive: integer;
45
  drive: TRbDrive;
46
  nDrive: TTreeNode;
47
 
48
  bins: TObjectList{TRbRecycleBin};
49
  iBin: integer;
50
  bin: TRbRecycleBin;
51
  nBin: TTreeNode;
52
 
53
  items: TObjectList{TRbRecycleBinItem};
54
  iItem: integer;
55
  item: TRbRecycleBinItem;
56
  nItem: TTreeNode;
57
begin
77 daniel-mar 58
  localRecyclersNode.DeleteChildren;
59
 
75 daniel-mar 60
  TreeView1.Items.BeginUpdate;
61
  drives := TObjectList.Create(true);
62
  bins := TObjectList.Create(true);
63
  items := TObjectList.Create(true);
64
  try
65
    drives.Clear;
66
    TRecycleBinManager.ListDrives(drives);
67
    for iDrive := 0 to drives.Count - 1 do
68
    begin
69
      drive := drives.Items[iDrive] as TRbDrive;
70
 
77 daniel-mar 71
      if drive.VolumeGUIDAvailable then
72
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+': ' + GUIDToString(drive.VolumeGUID), drive)
73
      else
74
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+':', drive);
75
      nDrive.ImageIndex := 6;
76
      nDrive.SelectedIndex := 6;
75 daniel-mar 77
 
78
      bins.Clear;
79
      if CheckBox1.Checked then
80
        drive.ListRecycleBins(bins, GetMySID)
81
      else
82
        drive.ListRecycleBins(bins);
83
      for iBin := 0 to bins.Count - 1 do
84
      begin
85
        bin := bins.Items[iBin] as TRbRecycleBin;
86
 
87
        nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin);
77 daniel-mar 88
        nBin.ImageIndex := 4;
89
        nBin.SelectedIndex := 4;
75 daniel-mar 90
 
91
        items.Clear;
92
        bin.ListItems(items);
93
        for iItem := 0 to items.Count - 1 do
94
        begin
95
          item := items.Items[iItem] as TRbRecycleBinItem;
96
          nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
77 daniel-mar 97
          nItem.ImageIndex := 0;
98
          nItem.SelectedIndex := 0;
75 daniel-mar 99
        end;
100
      end;
101
    end;
102
  finally
103
    drives.Free;
104
    bins.Free;
105
    items.Free;
106
    TreeView1.Items.EndUpdate;
107
  end;
77 daniel-mar 108
 
109
  localRecyclersNode.Expand(false);
75 daniel-mar 110
end;
111
 
77 daniel-mar 112
procedure TRecyclerListingMainForm.Button2Click(Sender: TObject);
113
var
114
  bin: TRbRecycleBin;
115
  nBin: TTreeNode;
116
 
117
  items: TObjectList{TRbRecycleBinItem};
118
  iItem: integer;
119
  item: TRbRecycleBinItem;
120
  nItem: TTreeNode;
121
begin
122
  bin := TRbRecycleBin.Create(LabeledEdit1.Text);
123
 
124
  nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin);
125
  individualRecyclersNode.Expand(false);
126
 
127
  items := TObjectList.Create(true);
128
  try
129
    items.Clear;
130
    bin.ListItems(items);
131
    for iItem := 0 to items.Count - 1 do
132
    begin
133
      item := items.Items[iItem] as TRbRecycleBinItem;
134
      nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
135
      nItem.ImageIndex := 0;
136
      nItem.SelectedIndex := 0;
137
    end;
138
  finally
139
    items.Free;
140
  end;
141
 
142
  nBin.Expand(false);
143
end;
144
 
145
procedure TRecyclerListingMainForm.FormShow(Sender: TObject);
146
begin
147
  localRecyclersNode := TreeView1.Items.Add(nil, 'Local recyclers');
148
  localRecyclersNode.ImageIndex := 2;
149
  localRecyclersNode.SelectedIndex := 2;
150
 
151
  individualRecyclersNode := TreeView1.Items.Add(nil, 'Manually added recycle bins');
152
  individualRecyclersNode.ImageIndex := 2;
153
  individualRecyclersNode.SelectedIndex := 2;
154
end;
155
 
75 daniel-mar 156
end.