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;
49 // RoundDialog: TRoundDialog;
54 Giko, BoardGroup, RoundData;
58 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
64 ThreadItem: TThreadItem;
65 RoundItem: TRoundItem;
67 // if CompareTime(GikoForm.LastRoundTime, Now, 5) then begin
68 // msg := '
\88ê
\93x
\8f\84\89ñ
\82·
\82é
\82Æ
\82T
\95ª
\8aÔ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';
69 // GikoSys.MsgBox(msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
72 {$IF Defined(FRCRND) }
73 Giko.GikoForm.LoginAction.Checked := true; //
\93®
\8dì
\8e\8e\8c±
\97p
\93r
76 if not Giko.GikoForm.LoginAction.Checked then begin
77 if GikoSys.Setting.UserID <> '' then begin
78 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ' + #13#10
79 + '
\8d¡
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82·
\82©';
80 if MsgBox(Handle, msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
83 Giko.GikoForm.LoginAction.Execute;
87 if not Giko.GikoForm.LoginAction.Checked then begin
88 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';// + #13#10
89 // + '
\95ª
\82©
\82ç
\82È
\82¢
\90l
\82Í
\83M
\83R
\83i
\83r
\83X
\83\8c\83b
\83h
\82Å
\95·
\82¢
\82Ä
\82
\82¾
\82³
\82¢';
90 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
96 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¢';
97 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
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);
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);
128 // GikoForm.LastRoundTime := Now;
132 function TRoundDialog.GetRoundCount: Integer;
135 RoundItem: TRoundItem;
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;
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;
150 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
152 AMin: Double = (1 / 24 / 60);
156 d := Time1 + (AMin * MarginMin);
160 procedure TRoundDialog.FormCreate(Sender: TObject);
164 RoundNameComboBox.Items.Add('
\81i
\82·
\82×
\82Ä
\81j');
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;
175 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
176 Item: TListItem; Change: TItemChange);
178 RoundItem: TRoundItem;
180 if TObject(Item.Data) is TRoundItem then begin
181 RoundItem := TRoundItem(Item.Data);
182 RoundItem.BoolData := Item.Checked;
186 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
189 RoundItem: TRoundItem;
190 ListChangeEvent: TLVChangeEvent;
192 ListChangeEvent := RoundListView.OnChange;
193 RoundListView.OnChange := nil;
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;
203 RoundListView.OnChange := ListChangeEvent;
207 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
210 RoundItem: TRoundItem;
211 ListChangeEvent: TLVChangeEvent;
213 ListChangeEvent := RoundListView.OnChange;
214 RoundListView.OnChange := nil;
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;
224 RoundListView.OnChange := ListChangeEvent;
228 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
230 if RoundNameComboBox.ItemIndex = 0 then
233 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
236 procedure TRoundDialog.SetRoundItem(RoundName: string);
240 ListChangeEvent: TLVChangeEvent;
242 ListChangeEvent := RoundListView.OnChange;
243 RoundListView.OnChange := nil;
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;
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;
269 RoundListView.OnChange := ListChangeEvent;
273 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
276 // ThreadItem: TThreadItem;
277 RoundItem: TRoundItem;
278 ListChangeEvent: TLVChangeEvent;
280 ListChangeEvent := RoundListView.OnChange;
281 RoundListView.OnChange := nil;
283 if RoundListView.Selected = nil then
285 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
286 RoundItem := TRoundItem(RoundListView.Selected.Data);
287 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
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 := '';
295 //ThreadItem := TThreadItem( RoundItem.Item );
296 RoundList.Delete(ThreadItem);
297 ThreadItem.Round := False;
298 ThreadItem.RoundName := '';
301 GikoForm.ListView.Refresh;
303 RoundListView.Selected.Delete;
305 RoundListView.OnChange := ListChangeEvent;