source: tags/1.0.1/Forms/UFormImportSources.pas

Last change on this file was 39, checked in by chronos, 8 years ago
  • Added: Job progress view for longer processing of all import sources.
  • Modified: Use application icon also for system tray icon.
File size: 5.3 KB
Line 
1unit UFormImportSources;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
9 ActnList, Menus, UAcronym, UJobProgressView;
10
11type
12
13 { TFormImportSources }
14
15 TFormImportSources = class(TForm)
16 AAdd: TAction;
17 AProcess: TAction;
18 ActionList1: TActionList;
19 AModify: TAction;
20 ARemove: TAction;
21 JobProgressView1: TJobProgressView;
22 ListView1: TListView;
23 MenuItem1: TMenuItem;
24 MenuItem2: TMenuItem;
25 MenuItem3: TMenuItem;
26 MenuItem4: TMenuItem;
27 PopupMenuImportSource: TPopupMenu;
28 procedure AAddExecute(Sender: TObject);
29 procedure AModifyExecute(Sender: TObject);
30 procedure AProcessExecute(Sender: TObject);
31 procedure ARemoveExecute(Sender: TObject);
32 procedure FormShow(Sender: TObject);
33 procedure ListView1Data(Sender: TObject; Item: TListItem);
34 procedure ListView1DblClick(Sender: TObject);
35 procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
36 Selected: Boolean);
37 private
38 procedure ProcessImportJob(Job: TJob);
39 { private declarations }
40 public
41 ImportSources: TImportSources;
42 procedure UpdateList;
43 procedure UpdateInterface;
44 end;
45
46var
47 FormImportSources: TFormImportSources;
48
49implementation
50
51{$R *.lfm}
52
53uses
54 UFormMain, UFormImportSource;
55
56resourcestring
57 SRemoveImportSource = 'Remove import sources';
58 SRemoveImportSourceQuery = 'Do you really want to remove selected import sources?';
59 SImportSourceAlreadyExists = 'Import source %s already exists!';
60
61
62{ TFormImportSources }
63
64procedure TFormImportSources.ListView1Data(Sender: TObject; Item: TListItem);
65begin
66 if Item.Index < ImportSources.Count then
67 with TImportSource(ImportSources[Item.Index]) do begin
68 Item.Caption := Name;
69 Item.Data := ImportSources[Item.Index];
70 Item.SubItems.Add(URL);
71 Item.SubItems.Add(IntToStr(ItemCount));
72 Item.SubItems.Add(Categories.GetString);
73 Item.Checked := Enabled;
74 end;
75end;
76
77procedure TFormImportSources.ListView1DblClick(Sender: TObject);
78begin
79 AModify.Execute;
80end;
81
82procedure TFormImportSources.ListView1SelectItem(Sender: TObject;
83 Item: TListItem; Selected: Boolean);
84begin
85 UpdateInterface;
86end;
87
88procedure TFormImportSources.UpdateList;
89begin
90 ListView1.Items.Count := ImportSources.Count;
91 ListView1.Refresh;
92 UpdateInterface;
93end;
94
95procedure TFormImportSources.UpdateInterface;
96begin
97 ARemove.Enabled := Assigned(ListView1.Selected);
98 AModify.Enabled := Assigned(ListView1.Selected);
99end;
100
101procedure TFormImportSources.FormShow(Sender: TObject);
102begin
103 UpdateList;
104end;
105
106procedure TFormImportSources.AAddExecute(Sender: TObject);
107var
108 NewImportSource: TImportSource;
109begin
110 NewImportSource := TImportSource.Create;
111 NewImportSource.Sources := ImportSources;
112 FormImportSource.Load(NewImportSource);
113 if FormImportSource.ShowModal = mrOk then begin
114 FormImportSource.Save(NewImportSource);
115 if not Assigned(ImportSources.SearchByName(NewImportSource.Name)) then begin;
116 ImportSources.Add(NewImportSource);
117 NewImportSource := nil;
118 FormMain.AcronymDb.Modified := True;
119 UpdateList;
120 end else ShowMessage(Format(SImportSourceAlreadyExists, [NewImportSource.Name]));
121 end;
122 if Assigned(NewImportSource) then NewImportSource.Free;
123end;
124
125procedure TFormImportSources.AModifyExecute(Sender: TObject);
126var
127 NewImportSource: TImportSource;
128begin
129 if Assigned(ListView1.Selected) then begin
130 NewImportSource := TImportSource.Create;
131 NewImportSource.Assign(ListView1.Selected.Data);
132 FormImportSource.Load(NewImportSource);
133 if FormImportSource.ShowModal = mrOk then begin
134 FormImportSource.Save(NewImportSource);
135 if (NewImportSource.Name <> TImportSource(ListView1.Selected.Data).Name) then begin
136 if not Assigned(ImportSources.SearchByName(NewImportSource.Name)) then begin;
137 TImportSource(ListView1.Selected.Data).Assign(NewImportSource);
138 FormMain.AcronymDb.Modified := True;
139 UpdateList;
140 end else ShowMessage(Format(SImportSourceAlreadyExists, [NewImportSource.Name]));
141 end else begin
142 TImportSource(ListView1.Selected.Data).Assign(NewImportSource);
143 FormMain.AcronymDb.Modified := True;
144 UpdateList;
145 end;
146 end;
147 if Assigned(NewImportSource) then NewImportSource.Free;
148 end;
149end;
150
151procedure TFormImportSources.AProcessExecute(Sender: TObject);
152begin
153 if Assigned(ListView1.Selected) then begin
154 JobProgressView1.AddJob('Process selected import source', ProcessImportJob);
155 JobProgressView1.Start;
156 ShowMessage(Format(SAddedCount, [TImportSource(ListView1.Selected.Data).ItemCount]));
157 end;
158end;
159
160procedure TFormImportSources.ProcessImportJob(Job: TJob);
161begin
162 TImportSource(ListView1.Selected.Data).Process;
163end;
164
165procedure TFormImportSources.ARemoveExecute(Sender: TObject);
166var
167 I: Integer;
168begin
169 if Assigned(ListView1.Selected) then begin
170 if MessageDlg(SRemoveImportSource, SRemoveImportSourceQuery,
171 TMsgDlgType.mtConfirmation, [mbCancel, mbOk], 0) = mrOk then begin
172 for I := ListView1.Items.Count - 1 downto 0 do
173 if ListView1.Items[I].Selected then
174 ImportSources.Remove(ListView1.Items[I].Data);
175 UpdateList;
176 end;
177 end;
178end;
179
180end.
181
Note: See TracBrowser for help on using the repository browser.