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.18.2.1 - (show annotations) (download) (as text)
Mon Jul 11 14:31:25 2005 UTC (18 years, 9 months ago) by h677
Branch: Bb50
CVS Tags: v1_50_2_606, v1_50_0_598, v1_50_0_603, v1_50_0_604, v1_50_0_606, b50, v1_50_0_600, v1_50_2_604, v1_50_0_602, v1_50_0_601, v1_50_0_605, v1_50_0_599
Changes since 1.18: +87 -38 lines
File MIME type: text/x-pascal
●持ち制限と、いつか来る制限を緩めたときの設定をIFDEFで分離しといた。

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
49 implementation
50
51 uses
52 Giko, BoardGroup, RoundData;
53
54 {$R *.DFM}
55
56 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
57 var
58 i: Integer;
59 cnt: Integer;
60 msg: string;
61 Board: TBoard;
62 ThreadItem: TThreadItem;
63 RoundItem: TRoundItem;
64 begin
65 {$IF Defined(FRCRND) }
66 Giko.GikoForm.LoginAction.Checked := true; // ?貼???????p?r
67 {$IFEND}
68
69 {$IFNDEF LOOSENUP} //?????則?????????辿???????直?????巽{$ELSE}???撤???g?造
70 if not Giko.GikoForm.LoginAction.Checked then begin
71 if GikoSys.Setting.UserID <> '' then begin
72 msg := '???O?C???直?????????????o?????邸??' + #13#10
73 + '?????O?C???直??????';
74 if MsgBox(Handle, msg, '?m?F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
75 Exit;
76 end;
77 Giko.GikoForm.LoginAction.Execute;
78 end;
79 if not Giko.GikoForm.LoginAction.Checked then begin
80 msg := '???O?C???直?????????????o?????邸??';
81 MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
82 Exit;
83 end;
84 end;
85 {$ELSE}
86 //?K?則?????????溺?造???A?X?????????????????\
87 if not Giko.GikoForm.LoginAction.Checked then begin
88 if GikoSys.Setting.UserID <> '' then begin
89 msg := '???O?C???直???????X???b?h?????????o?????邸??' + #13#10
90 + '?????O?C???直??????';
91 if MsgBox(Handle, msg, '?m?F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
92 Exit;
93 end;
94 Giko.GikoForm.LoginAction.Execute;
95 end;
96 end;
97 //?????直??????15???????????u???K?v?????辿
98 if not Giko.GikoForm.LoginAction.Checked then begin
99 if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
100 msg := '???x???????辿???R?O???????????o?????邸??';
101 MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
102 Exit;
103 end;
104 end;
105 {$ENDIF}
106
107 //?????????????????直?????????????巽?G???[?????辿
108 cnt := GetRoundCount;
109 if cnt = 0 then begin
110 msg := '?????直???????????P???????`?F?b?N???端?????足?転????';
111 MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
112 Exit;
113 end;
114
115 {$IFNDEF LOOSENUP}
116 //?????直???????P?x??100?????長?????辿
117 if not Giko.GikoForm.LoginAction.Checked then begin
118 if cnt > 100 then begin
119 msg := '?P?O?O???????????x???????長?鼎???邸??';
120 MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
121 Exit;
122 end;
123 end;
124 {$ENDIF}
125
126 //???????o?^?????????辿???????転?纏???鱈??
127 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
128 RoundItem := RoundList.Items[i, grtBoard];
129 //???????`?F?b?N?????????????纏?????X???[
130 if not RoundItem.BoolData then Continue;
131 //?m???????????存?転?纏???`?F?b?N
132 if RoundItem.RoundType = grtBoard then begin
133 Board := TBoard( RoundItem.Item );
134 //Board???I?u?W?F?N?g?????????????ADL???辿
135 if Board <> nil then begin
136 if not Board.IsThreadDatRead then
137 GikoSys.ReadSubjectFile(Board);
138 GikoForm.DownloadList(Board);
139 end;
140 end;
141 end;
142 for i := 0 to RoundList.Count[grtItem] - 1 do begin
143 RoundItem := RoundList.Items[i, grtItem];
144 //???????`?F?b?N?????????????纏?????X???[
145 if not RoundItem.BoolData then Continue;
146 {$IFDEF LOOSENUP}
147 //?????直???????X???b?h???長?鼎?????????????辿
148 if not Giko.GikoForm.LoginAction.Checked then begin
149 msg := '???O?C???直???????X???b?h?????????長?鼎???邸???B';
150 MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
151 break;
152 end;
153 {$ENDIF}
154 if RoundItem.RoundType = grtItem then begin
155 ThreadItem := TThreadItem( RoundItem.Item );
156 if ThreadItem <> nil then begin
157 GikoForm.DownloadContent(ThreadItem);
158 end;
159 end;
160 end;
161 GikoForm.LastRoundTime := Now;
162 Close;
163 end;
164
165 function TRoundDialog.GetRoundCount: Integer;
166 var
167 i: Integer;
168 RoundItem: TRoundItem;
169 begin
170 Result := 0;
171 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
172 RoundItem := RoundList.Items[i, grtBoard];
173 if RoundItem.BoolData then
174 Result := Result + 1;
175 end;
176 for i := 0 to RoundList.Count[grtItem] - 1 do begin
177 RoundItem := RoundList.Items[i, grtItem];
178 if RoundItem.BoolData then
179 Result := Result + 1;
180 end;
181 end;
182
183 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
184 const
185 AMin: Double = (1 / 24 / 60);
186 var
187 d: TDateTime;
188 begin
189 d := Time1 + (AMin * MarginMin);
190 Result := Time2 < d;
191 end;
192
193 procedure TRoundDialog.FormCreate(Sender: TObject);
194 var
195 i: Integer;
196 begin
197 RoundNameComboBox.Items.Add('?i???????j');
198 for i := 0 to RoundList.RoundNameList.Count - 1 do
199 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
200 for i := 0 to RoundList.Count[grtBoard] - 1 do
201 RoundList.Items[i, grtBoard].BoolData := False;
202 for i := 0 to RoundList.Count[grtItem] - 1 do
203 RoundList.Items[i, grtItem].BoolData := False;
204 RoundNameComboBox.ItemIndex := 0;
205 SetRoundItem('');
206 end;
207
208 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
209 Item: TListItem; Change: TItemChange);
210 var
211 RoundItem: TRoundItem;
212 begin
213 if TObject(Item.Data) is TRoundItem then begin
214 RoundItem := TRoundItem(Item.Data);
215 RoundItem.BoolData := Item.Checked;
216 end;
217 end;
218
219 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
220 var
221 i: Integer;
222 RoundItem: TRoundItem;
223 ListChangeEvent: TLVChangeEvent;
224 begin
225 ListChangeEvent := RoundListView.OnChange;
226 RoundListView.OnChange := nil;
227 try
228 for i := 0 to RoundListView.Items.Count - 1 do begin
229 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
230 RoundItem := TRoundItem(RoundListView.Items[i].Data);
231 RoundItem.BoolData := True;
232 RoundListView.Items[i].Checked := True;
233 end;
234 end;
235 finally
236 RoundListView.OnChange := ListChangeEvent;
237 end;
238 end;
239
240 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
241 var
242 i: Integer;
243 RoundItem: TRoundItem;
244 ListChangeEvent: TLVChangeEvent;
245 begin
246 ListChangeEvent := RoundListView.OnChange;
247 RoundListView.OnChange := nil;
248 try
249 for i := 0 to RoundListView.Items.Count - 1 do begin
250 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
251 RoundItem := TRoundItem(RoundListView.Items[i].Data);
252 RoundItem.BoolData := False;
253 RoundListView.Items[i].Checked := False;
254 end;
255 end;
256 finally
257 RoundListView.OnChange := ListChangeEvent;
258 end;
259 end;
260
261 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
262 begin
263 if RoundNameComboBox.ItemIndex = 0 then
264 SetRoundItem('')
265 else
266 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
267 end;
268
269 procedure TRoundDialog.SetRoundItem(RoundName: string);
270 var
271 ListItem: TListItem;
272 i: Integer;
273 ListChangeEvent: TLVChangeEvent;
274 begin
275 ListChangeEvent := RoundListView.OnChange;
276 RoundListView.OnChange := nil;
277 try
278 RoundListView.Clear;
279 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
280 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
281 ListItem := RoundListView.Items.Add;
282 ListItem.Data := RoundList.Items[i, grtBoard];
283 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
284 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
285 ListItem.SubItems.Add('-');
286 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
287 ListItem.ImageIndex := 0;
288 end;
289 end;
290 for i := 0 to RoundList.Count[grtItem] - 1 do begin
291 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
292 ListItem := RoundListView.Items.Add;
293 ListItem.Data := RoundList.Items[i, grtItem];
294 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
295 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
296 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
297 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
298 ListItem.ImageIndex := 1;
299 end;
300 end;
301 finally
302 RoundListView.OnChange := ListChangeEvent;
303 end;
304 end;
305
306 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
307 var
308 // Board: TBoard;
309 // ThreadItem: TThreadItem;
310 RoundItem: TRoundItem;
311 ListChangeEvent: TLVChangeEvent;
312 begin
313 ListChangeEvent := RoundListView.OnChange;
314 RoundListView.OnChange := nil;
315 try
316 if RoundListView.Selected = nil then
317 Exit;
318 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
319 RoundItem := TRoundItem(RoundListView.Selected.Data);
320 if( RoundItem.Item is TBoard ) then begin
321 TBoard(RoundItem.Item).Round := false;
322 end else if( RoundItem.Item is TThreadItem ) then begin
323 TThreadItem(RoundItem.Item).Round := false;
324 end;
325 //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
326 {
327 if RoundItem.RoundType = grtBoard then begin
328 //Board := TBoard( RoundItem.Item );
329 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
330 Board.Round := False;
331 Board.RoundName := '';
332 end else begin
333 //ThreadItem := TThreadItem( RoundItem.Item );
334 RoundList.Delete(ThreadItem);
335 ThreadItem.Round := False;
336 ThreadItem.RoundName := '';
337 end;
338 }
339 GikoForm.ListView.Refresh;
340 end;
341 RoundListView.Selected.Delete;
342 finally
343 RoundListView.OnChange := ListChangeEvent;
344 end;
345 end;
346
347 end.

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