6 Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
10 TRoundDialog = class(TForm)
11 RoundPopupMenu: TPopupMenu;
16 ItemIcon16: TImageList;
20 RoundNameComboBox: TComboBox;
23 AllSelectButton: TButton;
24 AllCancelButton: TButton;
25 RoundDeleteButton: TButton;
29 StatusBar1: TStatusBar;
30 RoundListView: TListView;
31 procedure RoundButtonClick(Sender: TObject);
32 procedure FormCreate(Sender: TObject);
33 procedure RoundListViewChange(Sender: TObject; Item: TListItem;
35 procedure AllSelectButtonClick(Sender: TObject);
36 procedure AllCancelButtonClick(Sender: TObject);
37 procedure RoundNameComboBoxChange(Sender: TObject);
38 procedure RoundDeleteButtonClick(Sender: TObject);
41 function GetRoundCount: Integer;
42 procedure SetRoundItem(RoundName: string);
43 function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
52 Giko, BoardGroup, RoundData;
56 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
62 ThreadItem: TThreadItem;
63 RoundItem: TRoundItem;
65 {$IF Defined(FRCRND) }
66 Giko.GikoForm.LoginAction.Checked := true; //
\93®
\8dì
\8e\8e\8c±
\97p
\93r
69 {$IFNDEF LOOSENUP} //
\8f\84\89ñ
\90§
\8cÀ
\82ð
\8aÉ
\82ß
\82é
\82±
\82Æ
\82É
\82µ
\82Ä
\82½
\82ç{$ELSE}
\82Ì
\95û
\82ð
\8eg
\82¤
70 if not Giko.GikoForm.LoginAction.Checked then begin
71 if GikoSys.Setting.UserID <> '' then begin
72 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ' + #13#10
73 + '
\8d¡
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82·
\82©';
74 if MsgBox(Handle, msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
77 Giko.GikoForm.LoginAction.Execute;
79 if not Giko.GikoForm.LoginAction.Checked then begin
80 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';
81 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
86 //
\8bK
\90§
\82ð
\8aÉ
\82ß
\82½
\82Ù
\82¤
\82Í
\81A
\83X
\83\8c\88ê
\97\97\82Ì
\82Ý
\8f\84\89ñ
\89Â
\94\
87 if not Giko.GikoForm.LoginAction.Checked then begin
88 if GikoSys.Setting.UserID <> '' then begin
89 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ' + #13#10
90 + '
\8d¡
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82·
\82©';
91 if MsgBox(Handle, msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
94 Giko.GikoForm.LoginAction.Execute;
97 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í15
\95ª
\88È
\8fã
\82Ì
\8aÔ
\8au
\82ð
\95K
\97v
\82Æ
\82·
\82é
98 if not Giko.GikoForm.LoginAction.Checked then begin
99 if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
100 msg := '
\88ê
\93x
\8f\84\89ñ
\82·
\82é
\82Æ
\82R
\82O
\95ª
\8aÔ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';
101 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
107 //
\88ê
\82Â
\82à
\8f\84\89ñ
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82È
\82©
\82Á
\82½
\82ç
\83G
\83\89\81[
\82É
\82·
\82é
108 cnt := GetRoundCount;
109 if cnt = 0 then begin
110 msg := '
\8f\84\89ñ
\82µ
\82½
\82¢
\8d\80\96Ú
\82É
\82P
\82Â
\88È
\8fã
\83`
\83F
\83b
\83N
\82ð
\93ü
\82ê
\82Ä
\82
\82¾
\82³
\82¢';
111 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
116 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í
\82P
\93x
\82É100
\8cÂ
\82Ü
\82Å
\82É
\82·
\82é
117 if not Giko.GikoForm.LoginAction.Checked then begin
118 if cnt > 100 then begin
119 msg := '
\82P
\82O
\82O
\8cÂ
\88È
\8fã
\82Í
\88ê
\93x
\82É
\8f\84\89ñ
\82Å
\82«
\82Ü
\82¹
\82ñ';
120 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
126 //
\8f\84\89ñ
\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82é
\94Â
\82Ì
\90\94\82¾
\82¯
\82Ü
\82í
\82·
127 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
128 RoundItem := RoundList.Items[i, grtBoard];
129 //
\8f\84\89ñ
\82Ì
\83`
\83F
\83b
\83N
\82ª
\82Â
\82¢
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\83X
\83\8b\81[
130 if not RoundItem.BoolData then Continue;
131 //
\8am
\8eÀ
\82É
\94Â
\82Ì
\82Í
\82¸
\82¾
\82¯
\82Ç
\83`
\83F
\83b
\83N
132 if RoundItem.RoundType = grtBoard then begin
133 Board := TBoard( RoundItem.Item );
134 //Board
\82Ì
\83I
\83u
\83W
\83F
\83N
\83g
\82ª
\91¶
\8dÝ
\82·
\82ê
\82Î
\81ADL
\82·
\82é
135 if Board <> nil then begin
136 if not Board.IsThreadDatRead then
137 GikoSys.ReadSubjectFile(Board);
138 GikoForm.DownloadList(Board);
142 for i := 0 to RoundList.Count[grtItem] - 1 do begin
143 RoundItem := RoundList.Items[i, grtItem];
144 //
\8f\84\89ñ
\82Ì
\83`
\83F
\83b
\83N
\82ª
\82Â
\82¢
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\83X
\83\8b\81[
145 if not RoundItem.BoolData then Continue;
147 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í
\83X
\83\8c\83b
\83h
\82Í
\82Å
\82«
\82È
\82¢
\82±
\82Æ
\82É
\82·
\82é
148 if not Giko.GikoForm.LoginAction.Checked then begin
149 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\8f\84\89ñ
\82Í
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B';
150 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
154 if RoundItem.RoundType = grtItem then begin
155 ThreadItem := TThreadItem( RoundItem.Item );
156 if ThreadItem <> nil then begin
157 GikoForm.DownloadContent(ThreadItem);
161 GikoForm.LastRoundTime := Now;
165 function TRoundDialog.GetRoundCount: Integer;
168 RoundItem: TRoundItem;
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;
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;
183 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
185 AMin: Double = (1 / 24 / 60);
189 d := Time1 + (AMin * MarginMin);
193 procedure TRoundDialog.FormCreate(Sender: TObject);
197 RoundNameComboBox.Items.Add('
\81i
\82·
\82×
\82Ä
\81j');
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;
208 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
209 Item: TListItem; Change: TItemChange);
211 RoundItem: TRoundItem;
213 if TObject(Item.Data) is TRoundItem then begin
214 RoundItem := TRoundItem(Item.Data);
215 RoundItem.BoolData := Item.Checked;
219 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
222 RoundItem: TRoundItem;
223 ListChangeEvent: TLVChangeEvent;
225 ListChangeEvent := RoundListView.OnChange;
226 RoundListView.OnChange := nil;
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;
236 RoundListView.OnChange := ListChangeEvent;
240 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
243 RoundItem: TRoundItem;
244 ListChangeEvent: TLVChangeEvent;
246 ListChangeEvent := RoundListView.OnChange;
247 RoundListView.OnChange := nil;
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;
257 RoundListView.OnChange := ListChangeEvent;
261 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
263 if RoundNameComboBox.ItemIndex = 0 then
266 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
269 procedure TRoundDialog.SetRoundItem(RoundName: string);
273 ListChangeEvent: TLVChangeEvent;
275 ListChangeEvent := RoundListView.OnChange;
276 RoundListView.OnChange := nil;
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;
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;
302 RoundListView.OnChange := ListChangeEvent;
306 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
309 // ThreadItem: TThreadItem;
310 RoundItem: TRoundItem;
311 ListChangeEvent: TLVChangeEvent;
313 ListChangeEvent := RoundListView.OnChange;
314 RoundListView.OnChange := nil;
316 if RoundListView.Selected = nil then
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;
325 //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
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 := '';
333 //ThreadItem := TThreadItem( RoundItem.Item );
334 RoundList.Delete(ThreadItem);
335 ThreadItem.Round := False;
336 ThreadItem.RoundName := '';
339 GikoForm.ListView.Refresh;
341 RoundListView.Selected.Delete;
343 RoundListView.OnChange := ListChangeEvent;