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.1.1.1 - (show annotations) (download) (as text) (vendor branch)
Sat Aug 9 13:51:10 2003 UTC (20 years, 8 months ago) by hi_
Branch: hi
CVS Tags: b33
Changes since 1.1: +0 -0 lines
File MIME type: text/x-pascal
ソキオャコ?ョ

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 := '?ス?ス?スx?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スT?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス?ス?ス?ス?ス?ス?ス';
69 // GikoSys.MsgBox(msg, '?スG?ス?ス?ス[', MB_OK or MB_ICONSTOP);
70 // Exit;
71 // end;
72
73 if not Giko.GikoForm.LoginAction.Checked then begin
74 msg := '?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス?ス?ス?ス?ス?ス?ス' + #13#10
75 + '?スu?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH?スv?ス?ス?ス?ス?ス?ス?スl?ス?ス?スM?スR?スi?スr?スX?ス?ス?ス?ス?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス';
76 MsgBox(Handle, msg, '?スG?ス?ス?ス[', MB_OK or MB_ICONSTOP);
77 Exit;
78 end;
79
80 cnt := GetRoundCount;
81 if cnt = 0 then begin
82 msg := '?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?ス?ス?ス?ス?ス?ス?ス`?スF?スb?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス';
83 MsgBox(Handle, msg, '?スG?ス?ス?ス[', MB_OK or MB_ICONSTOP);
84 Exit;
85 end;
86
87 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
88 RoundItem := RoundList.Items[i, grtBoard];
89 if not RoundItem.BoolData then Continue;
90 if not Giko.GikoForm.LoginAction.Checked then Exit;
91 if RoundItem.RoundType = grtBoard then begin
92 Board := BBS2ch.FindBBSID(RoundItem.BBSID);
93 if Board <> nil then begin
94 if not Board.IsThreadDatRead then
95 GikoSys.ReadSubjectFile(Board);
96 GikoForm.DownloadList(Board);
97 end;
98 end;
99 end;
100 for i := 0 to RoundList.Count[grtItem] - 1 do begin
101 RoundItem := RoundList.Items[i, grtItem];
102 if not RoundItem.BoolData then Continue;
103 if not Giko.GikoForm.LoginAction.Checked then Exit;
104 Board := BBS2ch.FindBBSID(RoundItem.BBSID);
105 if Board <> nil then begin
106 if not Board.IsThreadDatRead then
107 GikoSys.ReadSubjectFile(Board);
108 ThreadItem := BBS2ch.FindThreadItem(RoundItem.BBSID, RoundItem.FileName);
109 if ThreadItem <> nil then begin
110 // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
111 GikoForm.DownloadContent(ThreadItem);
112 end;
113 end;
114 end;
115 // GikoForm.LastRoundTime := Now;
116 Close;
117 end;
118
119 function TRoundDialog.GetRoundCount: Integer;
120 var
121 i: Integer;
122 RoundItem: TRoundItem;
123 begin
124 Result := 0;
125 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
126 RoundItem := RoundList.Items[i, grtBoard];
127 if RoundItem.BoolData then
128 Result := Result + 1;
129 end;
130 for i := 0 to RoundList.Count[grtItem] - 1 do begin
131 RoundItem := RoundList.Items[i, grtItem];
132 if RoundItem.BoolData then
133 Result := Result + 1;
134 end;
135 end;
136
137 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
138 const
139 AMin: Double = (1 / 24 / 60);
140 var
141 d: TDateTime;
142 begin
143 d := Time1 + (AMin * MarginMin);
144 Result := Time2 < d;
145 end;
146
147 procedure TRoundDialog.FormCreate(Sender: TObject);
148 var
149 i: Integer;
150 begin
151 RoundNameComboBox.Items.Add('?スi?ス?ス?ス?ス?ス?ス?スj');
152 for i := 0 to RoundList.RoundNameList.Count - 1 do
153 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
154 for i := 0 to RoundList.Count[grtBoard] - 1 do
155 RoundList.Items[i, grtBoard].BoolData := False;
156 for i := 0 to RoundList.Count[grtItem] - 1 do
157 RoundList.Items[i, grtItem].BoolData := False;
158 RoundNameComboBox.ItemIndex := 0;
159 SetRoundItem('');
160 end;
161
162 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
163 Item: TListItem; Change: TItemChange);
164 var
165 RoundItem: TRoundItem;
166 begin
167 if TObject(Item.Data) is TRoundItem then begin
168 RoundItem := TRoundItem(Item.Data);
169 RoundItem.BoolData := Item.Checked;
170 end;
171 end;
172
173 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
174 var
175 i: Integer;
176 RoundItem: TRoundItem;
177 ListChangeEvent: TLVChangeEvent;
178 begin
179 ListChangeEvent := RoundListView.OnChange;
180 RoundListView.OnChange := nil;
181 try
182 for i := 0 to RoundListView.Items.Count - 1 do begin
183 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
184 RoundItem := TRoundItem(RoundListView.Items[i].Data);
185 RoundItem.BoolData := True;
186 RoundListView.Items[i].Checked := True;
187 end;
188 end;
189 finally
190 RoundListView.OnChange := ListChangeEvent;
191 end;
192 end;
193
194 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
195 var
196 i: Integer;
197 RoundItem: TRoundItem;
198 ListChangeEvent: TLVChangeEvent;
199 begin
200 ListChangeEvent := RoundListView.OnChange;
201 RoundListView.OnChange := nil;
202 try
203 for i := 0 to RoundListView.Items.Count - 1 do begin
204 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
205 RoundItem := TRoundItem(RoundListView.Items[i].Data);
206 RoundItem.BoolData := False;
207 RoundListView.Items[i].Checked := False;
208 end;
209 end;
210 finally
211 RoundListView.OnChange := ListChangeEvent;
212 end;
213 end;
214
215 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
216 begin
217 if RoundNameComboBox.ItemIndex = 0 then
218 SetRoundItem('')
219 else
220 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
221 end;
222
223 procedure TRoundDialog.SetRoundItem(RoundName: string);
224 var
225 ListItem: TListItem;
226 i: Integer;
227 ListChangeEvent: TLVChangeEvent;
228 begin
229 ListChangeEvent := RoundListView.OnChange;
230 RoundListView.OnChange := nil;
231 try
232 RoundListView.Clear;
233 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
234 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
235 ListItem := RoundListView.Items.Add;
236 ListItem.Data := RoundList.Items[i, grtBoard];
237 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
238 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
239 ListItem.SubItems.Add('-');
240 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
241 ListItem.ImageIndex := 0;
242 end;
243 end;
244 for i := 0 to RoundList.Count[grtItem] - 1 do begin
245 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
246 ListItem := RoundListView.Items.Add;
247 ListItem.Data := RoundList.Items[i, grtItem];
248 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
249 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
250 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
251 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
252 ListItem.ImageIndex := 1;
253 end;
254 end;
255 finally
256 RoundListView.OnChange := ListChangeEvent;
257 end;
258 end;
259
260 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
261 var
262 Board: TBoard;
263 ThreadItem: TThreadItem;
264 RoundItem: TRoundItem;
265 ListChangeEvent: TLVChangeEvent;
266 begin
267 ListChangeEvent := RoundListView.OnChange;
268 RoundListView.OnChange := nil;
269 try
270 if RoundListView.Selected = nil then
271 Exit;
272 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
273 RoundItem := TRoundItem(RoundListView.Selected.Data);
274 Board := BBS2ch.FindBBSID(RoundItem.BBSID);
275 if RoundItem.RoundType = grtBoard then begin
276 RoundList.Delete(Board);
277 Board.Round := False;
278 Board.RoundName := '';
279 end else begin
280 if not Board.IsThreadDatRead then
281 GikoSys.ReadSubjectFile(Board);
282 ThreadItem := BBS2ch.FindThreadItem(RoundItem.BBSID, RoundItem.FileName);
283 RoundList.Delete(ThreadItem);
284 ThreadItem.Round := False;
285 ThreadItem.RoundName := '';
286 end;
287 GikoForm.ListView.Refresh;
288 end;
289 RoundListView.Selected.Delete;
290 finally
291 RoundListView.OnChange := ListChangeEvent;
292 end;
293 end;
294
295 end.

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