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

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