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.4 - (hide 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 hi_ 1.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 yoffy 1.2 + '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
75 hi_ 1.1 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 h677 1.4 //Board := TBoard( RoundItem.Item );
92     Board := BBSsFindBoardFromURL(RoundItem.URL);
93 hi_ 1.1 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 yoffy 1.3 if RoundItem.RoundType = grtItem then begin
105 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
106     ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
107 hi_ 1.1 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 h677 1.4 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
273     {
274 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
275 h677 1.4 //Board := TBoard( RoundItem.Item );
276     RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
277 hi_ 1.1 Board.Round := False;
278     Board.RoundName := '';
279     end else begin
280 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
281 hi_ 1.1 RoundList.Delete(ThreadItem);
282     ThreadItem.Round := False;
283     ThreadItem.RoundName := '';
284     end;
285 h677 1.4 }
286 hi_ 1.1 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