Subversion Repositories recyclebinunit

Rev

Rev 90 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 90 Rev 99
Line 15... Line 15...
15
    Button2: TButton;
15
    Button2: TButton;
16
    OpenDialog1: TOpenDialog;
16
    OpenDialog1: TOpenDialog;
17
    LabeledEdit1: TLabeledEdit;
17
    LabeledEdit1: TLabeledEdit;
18
    ImageList1: TImageList;
18
    ImageList1: TImageList;
19
    CheckBox2: TCheckBox;
19
    CheckBox2: TCheckBox;
-
 
20
    Button3: TButton;
20
    procedure Button1Click(Sender: TObject);
21
    procedure Button1Click(Sender: TObject);
21
    procedure Button2Click(Sender: TObject);
22
    procedure Button2Click(Sender: TObject);
22
    procedure FormShow(Sender: TObject);
23
    procedure FormShow(Sender: TObject);
23
    procedure TreeView1DblClick(Sender: TObject);
24
    procedure TreeView1DblClick(Sender: TObject);
-
 
25
    procedure Button3Click(Sender: TObject);
24
  private
26
  private
25
    localRecyclersNode: TTreeNode;
27
    localRecyclersNode: TTreeNode;
26
    individualRecyclersNode: TTreeNode;
28
    individualRecyclersNode: TTreeNode;
27
  end;
29
  end;
28
 
30
 
Line 38... Line 40...
38
 
40
 
39
// TODO: SID Namen auflösen und dementsprechend anzeigen
41
// TODO: SID Namen auflösen und dementsprechend anzeigen
40
// TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen
42
// TODO: zu jedem element mehr informationen anzeigen, nicht nur den ursprungsnamen
41
// TODO: Einstellungen usw anzeigen, so wie im alten Demo
43
// TODO: Einstellungen usw anzeigen, so wie im alten Demo
42
 
44
 
-
 
45
const
-
 
46
  ICON_FILE = 0;
-
 
47
  ICON_TREEVIEW = 2;
-
 
48
  ICON_BIN = 4;
-
 
49
  ICON_DRIVE = 6;
-
 
50
  ICON_UNKNOWN = 8;
-
 
51
  ICON_FOLDER = 10;
-
 
52
 
43
procedure TRecyclerListingMainForm.Button1Click(Sender: TObject);
53
procedure TRecyclerListingMainForm.Button1Click(Sender: TObject);
44
var
54
var
45
  drives: TObjectList{TRbDrive};
55
  drives: TObjectList{TRbDrive};
46
  iDrive: integer;
56
  iDrive: integer;
47
  drive: TRbDrive;
57
  drive: TRbDrive;
Line 75... Line 85...
75
 
85
 
76
      if drive.VolumeGUIDAvailable then
86
      if drive.VolumeGUIDAvailable then
77
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, Format(S_DRIVE, [drive.DriveLetter])+': ' + GUIDToString(drive.VolumeGUID), drive)
87
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, Format(S_DRIVE, [drive.DriveLetter])+': ' + GUIDToString(drive.VolumeGUID), drive)
78
      else
88
      else
79
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, Format(S_DRIVE, [drive.DriveLetter])+':', drive);
89
        nDrive := TreeView1.Items.AddChildObject(localRecyclersNode, Format(S_DRIVE, [drive.DriveLetter])+':', drive);
80
      nDrive.ImageIndex := 6;
90
      nDrive.ImageIndex := ICON_DRIVE;
81
      nDrive.SelectedIndex := nDrive.ImageIndex;
91
      nDrive.SelectedIndex := nDrive.ImageIndex;
82
 
92
 
83
      bins.Clear;
93
      bins.Clear;
84
      if CheckBox1.Checked then
94
      if CheckBox1.Checked then
85
        drive.ListRecycleBins(bins, GetMySID)
95
        drive.ListRecycleBins(bins, GetMySID)
Line 88... Line 98...
88
      for iBin := 0 to bins.Count - 1 do
98
      for iBin := 0 to bins.Count - 1 do
89
      begin
99
      begin
90
        bin := bins.Items[iBin] as TRbRecycleBin;
100
        bin := bins.Items[iBin] as TRbRecycleBin;
91
 
101
 
92
        nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin);
102
        nBin := TreeView1.Items.AddChildObject(nDrive, bin.FileOrDirectory, bin);
93
        nBin.ImageIndex := 4;
103
        nBin.ImageIndex := ICON_BIN;
94
        nBin.SelectedIndex := nBin.ImageIndex;
104
        nBin.SelectedIndex := nBin.ImageIndex;
95
 
105
 
96
        items.Clear;
106
        items.Clear;
97
        bin.ListItems(items);
107
        bin.ListItems(items);
98
        for iItem := 0 to items.Count - 1 do
108
        for iItem := 0 to items.Count - 1 do
Line 106... Line 116...
106
          sCaption := item.Source;
116
          sCaption := item.Source;
107
          if item is TRbVistaItem (*item.IndexFile <> ''*) then sCaption := sCaption + ' ('+ExtractFileName(item.IndexFile)+')';
117
          if item is TRbVistaItem (*item.IndexFile <> ''*) then sCaption := sCaption + ' ('+ExtractFileName(item.IndexFile)+')';
108
          nItem := TreeView1.Items.AddChildObject(nBin, sCaption, item);
118
          nItem := TreeView1.Items.AddChildObject(nBin, sCaption, item);
109
 
119
 
110
          if FileExists(item.PhysicalFile) then
120
          if FileExists(item.PhysicalFile) then
111
            nItem.ImageIndex := 0
121
            nItem.ImageIndex := ICON_FILE
112
          else if DirectoryExists(item.PhysicalFile) then
122
          else if DirectoryExists(item.PhysicalFile) then
113
            nItem.ImageIndex := 10 // TODO: Feature: Read folder contents and display them in this treeview. (Also change icon to "open folder")
123
            nItem.ImageIndex := ICON_FOLDER // TODO: Feature: Read folder contents and display them in this treeview. (Also change icon to "open folder")
114
          else
124
          else
115
            nItem.ImageIndex := 8;
125
            nItem.ImageIndex := ICON_UNKNOWN;
116
          nItem.SelectedIndex := nItem.ImageIndex;
126
          nItem.SelectedIndex := nItem.ImageIndex;
117
        end;
127
        end;
118
      end;
128
      end;
119
    end;
129
    end;
120
  finally
130
  finally
Line 139... Line 149...
139
  sCaption: string;
149
  sCaption: string;
140
begin
150
begin
141
  bin := TRbRecycleBin.Create(LabeledEdit1.Text);
151
  bin := TRbRecycleBin.Create(LabeledEdit1.Text);
142
 
152
 
143
  nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin);
153
  nBin := TreeView1.Items.AddChildObject(individualRecyclersNode, bin.FileOrDirectory, bin);
-
 
154
  nBin.ImageIndex := ICON_BIN;
-
 
155
  nBin.SelectedIndex := nBin.ImageIndex;
144
  individualRecyclersNode.Expand(false);
156
  individualRecyclersNode.Expand(false);
145
 
157
 
146
  items := TObjectList.Create(false);
158
  items := TObjectList.Create(false);
147
  try
159
  try
148
    items.Clear;
160
    items.Clear;
Line 158... Line 170...
158
      sCaption := item.Source;
170
      sCaption := item.Source;
159
      if item is TRbVistaItem (*item.IndexFile <> ''*) then sCaption := sCaption + ' ('+ExtractFileName(item.IndexFile)+')';
171
      if item is TRbVistaItem (*item.IndexFile <> ''*) then sCaption := sCaption + ' ('+ExtractFileName(item.IndexFile)+')';
160
      nItem := TreeView1.Items.AddChildObject(nBin, sCaption, item);
172
      nItem := TreeView1.Items.AddChildObject(nBin, sCaption, item);
161
 
173
 
162
      if FileExists(item.PhysicalFile) then
174
      if FileExists(item.PhysicalFile) then
163
        nItem.ImageIndex := 0
175
        nItem.ImageIndex := ICON_FILE
164
      else if DirectoryExists(item.PhysicalFile) then
176
      else if DirectoryExists(item.PhysicalFile) then
165
        nItem.ImageIndex := 10 // TODO: Feature: Read folder contents and display them in this treeview. (Also change icon to "open folder")
177
        nItem.ImageIndex := ICON_FOLDER // TODO: Feature: Read folder contents and display them in this treeview. (Also change icon to "open folder")
166
      else
178
      else
167
        nItem.ImageIndex := 8;
179
        nItem.ImageIndex := ICON_UNKNOWN;
168
      nItem.SelectedIndex := nItem.ImageIndex;
180
      nItem.SelectedIndex := nItem.ImageIndex;
169
    end;
181
    end;
170
  finally
182
  finally
171
    items.Free;
183
    items.Free;
172
  end;
184
  end;
173
 
185
 
174
  nBin.Expand(false);
186
  nBin.Expand(false);
175
end;
187
end;
176
 
188
 
-
 
189
procedure TRecyclerListingMainForm.Button3Click(Sender: TObject);
-
 
190
begin
-
 
191
  if OpenDialog1.Execute then
-
 
192
    LabeledEdit1.Text := OpenDialog1.FileName;
-
 
193
end;
-
 
194
 
177
procedure TRecyclerListingMainForm.FormShow(Sender: TObject);
195
procedure TRecyclerListingMainForm.FormShow(Sender: TObject);
178
resourcestring
196
resourcestring
179
  S_LOCAL_RECYCLE_BINS = 'Local recycle bins';
197
  S_LOCAL_RECYCLE_BINS = 'Local recycle bins';
180
  S_MANUAL_RECYCLE_BINS ='Manually added recycle bins';
198
  S_MANUAL_RECYCLE_BINS ='Manually added recycle bins';
181
begin
199
begin
182
  localRecyclersNode := TreeView1.Items.Add(nil, S_LOCAL_RECYCLE_BINS);
200
  localRecyclersNode := TreeView1.Items.Add(nil, S_LOCAL_RECYCLE_BINS);
183
  localRecyclersNode.ImageIndex := 2;
201
  localRecyclersNode.ImageIndex := ICON_TREEVIEW;
184
  localRecyclersNode.SelectedIndex := localRecyclersNode.ImageIndex;
202
  localRecyclersNode.SelectedIndex := localRecyclersNode.ImageIndex;
185
 
203
 
186
  individualRecyclersNode := TreeView1.Items.Add(nil, S_MANUAL_RECYCLE_BINS);
204
  individualRecyclersNode := TreeView1.Items.Add(nil, S_MANUAL_RECYCLE_BINS);
187
  individualRecyclersNode.ImageIndex := 2;
205
  individualRecyclersNode.ImageIndex := ICON_TREEVIEW;
188
  individualRecyclersNode.SelectedIndex := individualRecyclersNode.ImageIndex;
206
  individualRecyclersNode.SelectedIndex := individualRecyclersNode.ImageIndex;
189
end;
207
end;
190
 
208
 
191
procedure TRecyclerListingMainForm.TreeView1DblClick(Sender: TObject);
209
procedure TRecyclerListingMainForm.TreeView1DblClick(Sender: TObject);
192
var
210
var
193
  item: TRbRecycleBinItem;
211
  item: TRbRecycleBinItem;
194
begin
212
begin
195
  if TreeView1.Selected.ImageIndex = 0 then
213
  if TreeView1.Selected.ImageIndex = ICON_FILE then
196
  begin
214
  begin
197
    // File
215
    // File
198
    item := TRbRecycleBinItem(TreeView1.Selected.Data);
216
    item := TRbRecycleBinItem(TreeView1.Selected.Data);
199
    // TODO: Does not work if the file type is unknown
217
    // TODO: Does not work if the file type is unknown
200
    // TODO: Maybe we should add a feature to drag'n'drop a file/folder out of RecycleBinUnit into the explorer (With options copy or move, depending on the ShiftState) 
218
    // TODO: Maybe we should add a feature to drag'n'drop a file/folder out of RecycleBinUnit into the explorer (With options copy or move, depending on the ShiftState) 
201
    ShellExecute(Handle, 'open', PChar(item.PhysicalFile), '', '', SW_NORMAL);
219
    ShellExecute(Handle, 'open', PChar(item.PhysicalFile), '', '', SW_NORMAL);
202
  end;
220
  end;
203
  if TreeView1.Selected.ImageIndex = 10 then
221
  if TreeView1.Selected.ImageIndex = ICON_FOLDER then
204
  begin
222
  begin
205
    // Folder
223
    // Folder
206
    item := TRbRecycleBinItem(TreeView1.Selected.Data);
224
    item := TRbRecycleBinItem(TreeView1.Selected.Data);
207
    ShellExecute(Handle, 'open', PChar(item.PhysicalFile), '', '', SW_NORMAL);
225
    ShellExecute(Handle, 'open', PChar(item.PhysicalFile), '', '', SW_NORMAL);
208
  end;
226
  end;