Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/Round.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.16 - (hide annotations) (download) (as text)
Tue Feb 8 09:48:51 2005 UTC (19 years, 2 months ago) by genyakun
Branch: MAIN
CVS Tags: v1_50_0_572, v1_50_0_574, v1_50_0_573, v1_50_0_571
Changes since 1.15: +28 -72 lines
File MIME type: text/x-pascal
復元

1 hi_ 1.1 unit Round;
2    
3     interface
4    
5     uses
6     Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 genyakun 1.16 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
8 hi_ 1.1
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 genyakun 1.16 RoundListView: TListView;
31 hi_ 1.1 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 genyakun 1.16 Giko, BoardGroup, RoundData;
55 hi_ 1.1
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 genyakun 1.16 // 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 Defined(FRCRND) }
73     Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
74     {$IFEND}
75    
76     if not Giko.GikoForm.LoginAction.Checked then begin
77     if GikoSys.Setting.UserID <> '' then begin
78     msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
79     + '鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
80     if MsgBox(Handle, msg, '鐃?鐃?', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
81     Exit;
82     end;
83     Giko.GikoForm.LoginAction.Execute;
84     end;
85     end;
86    
87     if not Giko.GikoForm.LoginAction.Checked then begin
88     msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';// + #13#10
89     // + '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
90 hi_ 1.1 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
91     Exit;
92     end;
93    
94     cnt := GetRoundCount;
95     if cnt = 0 then begin
96     msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
97     MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
98     Exit;
99     end;
100    
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 h677 1.4 //Board := TBoard( RoundItem.Item );
107     Board := BBSsFindBoardFromURL(RoundItem.URL);
108 hi_ 1.1 if Board <> nil then begin
109     if not Board.IsThreadDatRead then
110     GikoSys.ReadSubjectFile(Board);
111     GikoForm.DownloadList(Board);
112     end;
113     end;
114     end;
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 genyakun 1.16 if not Giko.GikoForm.LoginAction.Checked then Exit;
119 yoffy 1.3 if RoundItem.RoundType = grtItem then begin
120 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
121     ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
122 hi_ 1.1 if ThreadItem <> nil then begin
123     // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
124     GikoForm.DownloadContent(ThreadItem);
125     end;
126     end;
127     end;
128 genyakun 1.16 // GikoForm.LastRoundTime := Now;
129 hi_ 1.1 Close;
130     end;
131    
132     function TRoundDialog.GetRoundCount: Integer;
133     var
134     i: Integer;
135     RoundItem: TRoundItem;
136     begin
137     Result := 0;
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;
142     end;
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;
147     end;
148     end;
149    
150     function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
151     const
152     AMin: Double = (1 / 24 / 60);
153     var
154     d: TDateTime;
155     begin
156     d := Time1 + (AMin * MarginMin);
157     Result := Time2 < d;
158     end;
159    
160     procedure TRoundDialog.FormCreate(Sender: TObject);
161     var
162     i: Integer;
163     begin
164     RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
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;
172     SetRoundItem('');
173     end;
174    
175     procedure TRoundDialog.RoundListViewChange(Sender: TObject;
176     Item: TListItem; Change: TItemChange);
177     var
178     RoundItem: TRoundItem;
179     begin
180     if TObject(Item.Data) is TRoundItem then begin
181     RoundItem := TRoundItem(Item.Data);
182     RoundItem.BoolData := Item.Checked;
183     end;
184     end;
185    
186     procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
187     var
188     i: Integer;
189     RoundItem: TRoundItem;
190     ListChangeEvent: TLVChangeEvent;
191     begin
192     ListChangeEvent := RoundListView.OnChange;
193     RoundListView.OnChange := nil;
194     try
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;
200     end;
201     end;
202     finally
203     RoundListView.OnChange := ListChangeEvent;
204     end;
205     end;
206    
207     procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
208     var
209     i: Integer;
210     RoundItem: TRoundItem;
211     ListChangeEvent: TLVChangeEvent;
212     begin
213     ListChangeEvent := RoundListView.OnChange;
214     RoundListView.OnChange := nil;
215     try
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;
221     end;
222     end;
223     finally
224     RoundListView.OnChange := ListChangeEvent;
225     end;
226     end;
227    
228     procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
229     begin
230     if RoundNameComboBox.ItemIndex = 0 then
231     SetRoundItem('')
232     else
233     SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
234     end;
235    
236     procedure TRoundDialog.SetRoundItem(RoundName: string);
237     var
238     ListItem: TListItem;
239     i: Integer;
240     ListChangeEvent: TLVChangeEvent;
241     begin
242     ListChangeEvent := RoundListView.OnChange;
243     RoundListView.OnChange := nil;
244     try
245     RoundListView.Clear;
246 deux 1.7 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
247 hi_ 1.1 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;
255     end;
256     end;
257 deux 1.7 for i := 0 to RoundList.Count[grtItem] - 1 do begin
258 hi_ 1.1 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;
266     end;
267     end;
268     finally
269     RoundListView.OnChange := ListChangeEvent;
270     end;
271     end;
272    
273     procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
274     var
275 h677 1.8 // Board: TBoard;
276     // ThreadItem: TThreadItem;
277 hi_ 1.1 RoundItem: TRoundItem;
278     ListChangeEvent: TLVChangeEvent;
279     begin
280     ListChangeEvent := RoundListView.OnChange;
281     RoundListView.OnChange := nil;
282     try
283     if RoundListView.Selected = nil then
284     Exit;
285     if TObject(RoundListView.Selected.Data) is TRoundItem then begin
286     RoundItem := TRoundItem(RoundListView.Selected.Data);
287 h677 1.4 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
288     {
289 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
290 h677 1.4 //Board := TBoard( RoundItem.Item );
291     RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
292 hi_ 1.1 Board.Round := False;
293     Board.RoundName := '';
294     end else begin
295 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
296 hi_ 1.1 RoundList.Delete(ThreadItem);
297     ThreadItem.Round := False;
298     ThreadItem.RoundName := '';
299     end;
300 h677 1.4 }
301 hi_ 1.1 GikoForm.ListView.Refresh;
302     end;
303     RoundListView.Selected.Delete;
304     finally
305     RoundListView.OnChange := ListChangeEvent;
306     end;
307     end;
308    
309     end.

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