Subversion Repositories recyclebinunit

Rev

Rev 77 | Rev 86 | 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;
83 daniel-mar 19
    CheckBox2: TCheckBox;
75 daniel-mar 20
    procedure Button1Click(Sender: TObject);
77 daniel-mar 21
    procedure Button2Click(Sender: TObject);
22
    procedure FormShow(Sender: TObject);
75 daniel-mar 23
  private
77 daniel-mar 24
    localRecyclersNode: TTreeNode;
25
    individualRecyclersNode: TTreeNode;
75 daniel-mar 26
  end;
27
 
28
var
29
  RecyclerListingMainForm: TRecyclerListingMainForm;
30
 
31
implementation
32
 
33
{$R *.dfm}
34
 
35
uses
36
  RecBinUnit2, ContNrs, SIDUnit;
37
 
38
// TODO: SID Namen auflösen und dementsprechend anzeigen
39
// TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen
77 daniel-mar 40
// TODO: Einstellungen usw anzeigen, so wie im alten Demo
75 daniel-mar 41
 
42
procedure TRecyclerListingMainForm.Button1Click(Sender: TObject);
43
var
44
  drives: TObjectList{TRbDrive};
45
  iDrive: integer;
46
  drive: TRbDrive;
47
  nDrive: TTreeNode;
48
 
49
  bins: TObjectList{TRbRecycleBin};
50
  iBin: integer;
51
  bin: TRbRecycleBin;
52
  nBin: TTreeNode;
53
 
54
  items: TObjectList{TRbRecycleBinItem};
55
  iItem: integer;
56
  item: TRbRecycleBinItem;
57
  nItem: TTreeNode;
58
begin
77 daniel-mar 59
  localRecyclersNode.DeleteChildren;
60
 
75 daniel-mar 61
  TreeView1.Items.BeginUpdate;
62
  drives := TObjectList.Create(true);
63
  bins := TObjectList.Create(true);
64
  items := TObjectList.Create(true);
65
  try
66
    drives.Clear;
67
    TRecycleBinManager.ListDrives(drives);
68
    for iDrive := 0 to drives.Count - 1 do
69
    begin
70
      drive := drives.Items[iDrive] as TRbDrive;
71
 
77 daniel-mar 72
      if drive.VolumeGUIDAvailable then
73
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+': ' + GUIDToString(drive.VolumeGUID), drive)
74
      else
75
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, 'Drive '+drive.DriveLetter+':', drive);
76
      nDrive.ImageIndex := 6;
83 daniel-mar 77
      nDrive.SelectedIndex := nDrive.ImageIndex;
75 daniel-mar 78
 
79
      bins.Clear;
80
      if CheckBox1.Checked then
81
        drive.ListRecycleBins(bins, GetMySID)
82
      else
83
        drive.ListRecycleBins(bins);
84
      for iBin := 0 to bins.Count - 1 do
85
      begin
86
        bin := bins.Items[iBin] as TRbRecycleBin;
87
 
88
        nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin);
77 daniel-mar 89
        nBin.ImageIndex := 4;
83 daniel-mar 90
        nBin.SelectedIndex := nBin.ImageIndex;
75 daniel-mar 91
 
92
        items.Clear;
93
        bin.ListItems(items);
94
        for iItem := 0 to items.Count - 1 do
95
        begin
96
          item := items.Items[iItem] as TRbRecycleBinItem;
83 daniel-mar 97
 
98
          if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue;
99
 
75 daniel-mar 100
          nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
83 daniel-mar 101
 
102
          if FileExists(item.PhysicalFile) then
103
            nItem.ImageIndex := 0
104
          else
105
            nItem.ImageIndex := 8;
106
          nItem.SelectedIndex := nItem.ImageIndex;
75 daniel-mar 107
        end;
108
      end;
109
    end;
110
  finally
111
    drives.Free;
112
    bins.Free;
113
    items.Free;
114
    TreeView1.Items.EndUpdate;
115
  end;
77 daniel-mar 116
 
117
  localRecyclersNode.Expand(false);
75 daniel-mar 118
end;
119
 
77 daniel-mar 120
procedure TRecyclerListingMainForm.Button2Click(Sender: TObject);
121
var
122
  bin: TRbRecycleBin;
123
  nBin: TTreeNode;
124
 
125
  items: TObjectList{TRbRecycleBinItem};
126
  iItem: integer;
127
  item: TRbRecycleBinItem;
128
  nItem: TTreeNode;
129
begin
130
  bin := TRbRecycleBin.Create(LabeledEdit1.Text);
131
 
132
  nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin);
133
  individualRecyclersNode.Expand(false);
134
 
135
  items := TObjectList.Create(true);
136
  try
137
    items.Clear;
138
    bin.ListItems(items);
139
    for iItem := 0 to items.Count - 1 do
140
    begin
141
      item := items.Items[iItem] as TRbRecycleBinItem;
83 daniel-mar 142
 
143
      if not FileExists(item.PhysicalFile) and CheckBox2.Checked then continue;
144
 
77 daniel-mar 145
      nItem := TreeView1.Items.AddChildObject(nBin, item.Source, bin);
83 daniel-mar 146
 
147
      if FileExists(item.PhysicalFile) then
148
        nItem.ImageIndex := 0
149
      else
150
        nItem.ImageIndex := 8;
151
      nItem.SelectedIndex := nItem.ImageIndex;
77 daniel-mar 152
    end;
153
  finally
154
    items.Free;
155
  end;
156
 
157
  nBin.Expand(false);
158
end;
159
 
160
procedure TRecyclerListingMainForm.FormShow(Sender: TObject);
161
begin
162
  localRecyclersNode := TreeView1.Items.Add(nil, 'Local recyclers');
163
  localRecyclersNode.ImageIndex := 2;
83 daniel-mar 164
  localRecyclersNode.SelectedIndex := localRecyclersNode.ImageIndex;
77 daniel-mar 165
 
166
  individualRecyclersNode := TreeView1.Items.Add(nil, 'Manually added recycle bins');
167
  individualRecyclersNode.ImageIndex := 2;
83 daniel-mar 168
  individualRecyclersNode.SelectedIndex := individualRecyclersNode.ImageIndex;
77 daniel-mar 169
end;
170
 
75 daniel-mar 171
end.