Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/Round.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2.2.1 - (show annotations) (download) (as text)
Mon Apr 19 22:46:49 2004 UTC (20 years ago) by yoffy
Branch: stable
Changes since 1.2: +29 -15 lines
File MIME type: text/x-pascal
・ハ゛タ 47 相当にマージ。

1 unit Round;
2
3 interface
4
5 uses
6 Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
8
9 type
10 TRoundDialog = class(TForm)
11 RoundPopupMenu: TPopupMenu;
12 C1: TMenuItem;
13 P1: TMenuItem;
14 N1: TMenuItem;
15 D1: TMenuItem;
16 ItemIcon16: TImageList;
17 Panel1: TPanel;
18 Label1: TLabel;
19 Label2: TLabel;
20 RoundNameComboBox: TComboBox;
21 Panel2: TPanel;
22 Panel3: TPanel;
23 AllSelectButton: TButton;
24 AllCancelButton: TButton;
25 RoundDeleteButton: TButton;
26 Panel4: TPanel;
27 Button1: TButton;
28 RoundButton: TButton;
29 StatusBar1: TStatusBar;
30 RoundListView: TListView;
31 procedure RoundButtonClick(Sender: TObject);
32 procedure FormCreate(Sender: TObject);
33 procedure RoundListViewChange(Sender: TObject; Item: TListItem;
34 Change: TItemChange);
35 procedure AllSelectButtonClick(Sender: TObject);
36 procedure AllCancelButtonClick(Sender: TObject);
37 procedure RoundNameComboBoxChange(Sender: TObject);
38 procedure RoundDeleteButtonClick(Sender: TObject);
39 private
40 { Private 鐃緒申鐃緒申 }
41 function GetRoundCount: Integer;
42 procedure SetRoundItem(RoundName: string);
43 function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
44 public
45 { Public 鐃緒申鐃緒申 }
46 end;
47
48 //var
49 // RoundDialog: TRoundDialog;
50
51 implementation
52
53 uses
54 Giko, BoardGroup, RoundData;
55
56 {$R *.DFM}
57
58 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
59 var
60 i: Integer;
61 cnt: Integer;
62 msg: string;
63 Board: TBoard;
64 ThreadItem: TThreadItem;
65 RoundItem: TRoundItem;
66 begin
67 // if CompareTime(GikoForm.LastRoundTime, Now, 5) then begin
68 // msg := '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';
69 // GikoSys.MsgBox(msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
70 // Exit;
71 // end;
72 {$IF Defined(FRCRND) }
73 Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
74 {$IFEND}
75
76 if not Giko.GikoForm.LoginAction.Checked then begin
77 if GikoSys.Setting.UserID <> '' then begin
78 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
79 + '鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
80 if MsgBox(Handle, msg, '鐃?鐃?', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
81 Exit;
82 end;
83 Giko.GikoForm.LoginAction.Execute;
84 end;
85 end;
86
87 if not Giko.GikoForm.LoginAction.Checked then begin
88 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';// + #13#10
89 // + '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
90 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
91 Exit;
92 end;
93
94 cnt := GetRoundCount;
95 if cnt = 0 then begin
96 msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
97 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
98 Exit;
99 end;
100
101 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
102 RoundItem := RoundList.Items[i, grtBoard];
103 if not RoundItem.BoolData then Continue;
104 if not Giko.GikoForm.LoginAction.Checked then Exit;
105 if RoundItem.RoundType = grtBoard then begin
106 //Board := TBoard( RoundItem.Item );
107 Board := BBSsFindBoardFromURL(RoundItem.URL);
108 if Board <> nil then begin
109 if not Board.IsThreadDatRead then
110 GikoSys.ReadSubjectFile(Board);
111 GikoForm.DownloadList(Board);
112 end;
113 end;
114 end;
115 for i := 0 to RoundList.Count[grtItem] - 1 do begin
116 RoundItem := RoundList.Items[i, grtItem];
117 if not RoundItem.BoolData then Continue;
118 if not Giko.GikoForm.LoginAction.Checked then Exit;
119 if RoundItem.RoundType = grtItem then begin
120 //ThreadItem := TThreadItem( RoundItem.Item );
121 ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
122 if ThreadItem <> nil then begin
123 // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
124 GikoForm.DownloadContent(ThreadItem);
125 end;
126 end;
127 end;
128 // GikoForm.LastRoundTime := Now;
129 Close;
130 end;
131
132 function TRoundDialog.GetRoundCount: Integer;
133 var
134 i: Integer;
135 RoundItem: TRoundItem;
136 begin
137 Result := 0;
138 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
139 RoundItem := RoundList.Items[i, grtBoard];
140 if RoundItem.BoolData then
141 Result := Result + 1;
142 end;
143 for i := 0 to RoundList.Count[grtItem] - 1 do begin
144 RoundItem := RoundList.Items[i, grtItem];
145 if RoundItem.BoolData then
146 Result := Result + 1;
147 end;
148 end;
149
150 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
151 const
152 AMin: Double = (1 / 24 / 60);
153 var
154 d: TDateTime;
155 begin
156 d := Time1 + (AMin * MarginMin);
157 Result := Time2 < d;
158 end;
159
160 procedure TRoundDialog.FormCreate(Sender: TObject);
161 var
162 i: Integer;
163 begin
164 RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
165 for i := 0 to RoundList.RoundNameList.Count - 1 do
166 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
167 for i := 0 to RoundList.Count[grtBoard] - 1 do
168 RoundList.Items[i, grtBoard].BoolData := False;
169 for i := 0 to RoundList.Count[grtItem] - 1 do
170 RoundList.Items[i, grtItem].BoolData := False;
171 RoundNameComboBox.ItemIndex := 0;
172 SetRoundItem('');
173 end;
174
175 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
176 Item: TListItem; Change: TItemChange);
177 var
178 RoundItem: TRoundItem;
179 begin
180 if TObject(Item.Data) is TRoundItem then begin
181 RoundItem := TRoundItem(Item.Data);
182 RoundItem.BoolData := Item.Checked;
183 end;
184 end;
185
186 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
187 var
188 i: Integer;
189 RoundItem: TRoundItem;
190 ListChangeEvent: TLVChangeEvent;
191 begin
192 ListChangeEvent := RoundListView.OnChange;
193 RoundListView.OnChange := nil;
194 try
195 for i := 0 to RoundListView.Items.Count - 1 do begin
196 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
197 RoundItem := TRoundItem(RoundListView.Items[i].Data);
198 RoundItem.BoolData := True;
199 RoundListView.Items[i].Checked := True;
200 end;
201 end;
202 finally
203 RoundListView.OnChange := ListChangeEvent;
204 end;
205 end;
206
207 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
208 var
209 i: Integer;
210 RoundItem: TRoundItem;
211 ListChangeEvent: TLVChangeEvent;
212 begin
213 ListChangeEvent := RoundListView.OnChange;
214 RoundListView.OnChange := nil;
215 try
216 for i := 0 to RoundListView.Items.Count - 1 do begin
217 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
218 RoundItem := TRoundItem(RoundListView.Items[i].Data);
219 RoundItem.BoolData := False;
220 RoundListView.Items[i].Checked := False;
221 end;
222 end;
223 finally
224 RoundListView.OnChange := ListChangeEvent;
225 end;
226 end;
227
228 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
229 begin
230 if RoundNameComboBox.ItemIndex = 0 then
231 SetRoundItem('')
232 else
233 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
234 end;
235
236 procedure TRoundDialog.SetRoundItem(RoundName: string);
237 var
238 ListItem: TListItem;
239 i: Integer;
240 ListChangeEvent: TLVChangeEvent;
241 begin
242 ListChangeEvent := RoundListView.OnChange;
243 RoundListView.OnChange := nil;
244 try
245 RoundListView.Clear;
246 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
247 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
248 ListItem := RoundListView.Items.Add;
249 ListItem.Data := RoundList.Items[i, grtBoard];
250 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
251 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
252 ListItem.SubItems.Add('-');
253 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
254 ListItem.ImageIndex := 0;
255 end;
256 end;
257 for i := 0 to RoundList.Count[grtItem] - 1 do begin
258 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
259 ListItem := RoundListView.Items.Add;
260 ListItem.Data := RoundList.Items[i, grtItem];
261 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
262 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
263 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
264 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
265 ListItem.ImageIndex := 1;
266 end;
267 end;
268 finally
269 RoundListView.OnChange := ListChangeEvent;
270 end;
271 end;
272
273 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
274 var
275 // Board: TBoard;
276 // ThreadItem: TThreadItem;
277 RoundItem: TRoundItem;
278 ListChangeEvent: TLVChangeEvent;
279 begin
280 ListChangeEvent := RoundListView.OnChange;
281 RoundListView.OnChange := nil;
282 try
283 if RoundListView.Selected = nil then
284 Exit;
285 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
286 RoundItem := TRoundItem(RoundListView.Selected.Data);
287 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
288 {
289 if RoundItem.RoundType = grtBoard then begin
290 //Board := TBoard( RoundItem.Item );
291 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
292 Board.Round := False;
293 Board.RoundName := '';
294 end else begin
295 //ThreadItem := TThreadItem( RoundItem.Item );
296 RoundList.Delete(ThreadItem);
297 ThreadItem.Round := False;
298 ThreadItem.RoundName := '';
299 end;
300 }
301 GikoForm.ListView.Refresh;
302 end;
303 RoundListView.Selected.Delete;
304 finally
305 RoundListView.OnChange := ListChangeEvent;
306 end;
307 end;
308
309 end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26