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.13 - (hide annotations) (download) (as text)
Fri Jan 14 10:45:09 2005 UTC (19 years, 3 months ago) by genyakun
Branch: MAIN
Changes since 1.12: +8 -26 lines
File MIME type: text/x-pascal
●がないと巡回できない仕様を変更(3分ごとに制限)

1 hi_ 1.1 unit Round;
2    
3     interface
4    
5     uses
6     Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 genyakun 1.13 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil, Dialogs;
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 h677 1.11 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 h677 1.11 procedure RoundListViewColumnClick(Sender: TObject;
40     Column: TListColumn);
41     procedure RoundListViewCompare(Sender: TObject; Item1,
42     Item2: TListItem; Data: Integer; var Compare: Integer);
43 hi_ 1.1 private
44     { Private 鐃緒申鐃緒申 }
45 h677 1.11 FColumnToSort: Integer;
46     FSortOrder: Boolean;
47 hi_ 1.1 function GetRoundCount: Integer;
48     procedure SetRoundItem(RoundName: string);
49     function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
50     public
51     { Public 鐃緒申鐃緒申 }
52     end;
53    
54     //var
55     // RoundDialog: TRoundDialog;
56    
57     implementation
58    
59     uses
60 h677 1.11 Giko, BoardGroup, RoundData, Math;
61 hi_ 1.1
62     {$R *.DFM}
63    
64     procedure TRoundDialog.RoundButtonClick(Sender: TObject);
65     var
66     i: Integer;
67     cnt: Integer;
68     msg: string;
69     Board: TBoard;
70     ThreadItem: TThreadItem;
71     RoundItem: TRoundItem;
72     begin
73 genyakun 1.13 if CompareTime(GikoForm.LastRoundTime, Now, 3) then begin
74     msg := '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
75 hi_ 1.1 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
76     Exit;
77     end;
78 genyakun 1.13 //{$IF Defined(FRCRND) }
79     // Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
80     //{$IFEND}
81 hi_ 1.1
82     cnt := GetRoundCount;
83     if cnt = 0 then begin
84     msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
85     MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
86     Exit;
87     end;
88    
89     for i := 0 to RoundList.Count[grtBoard] - 1 do begin
90     RoundItem := RoundList.Items[i, grtBoard];
91     if not RoundItem.BoolData then Continue;
92     if not Giko.GikoForm.LoginAction.Checked then Exit;
93     if RoundItem.RoundType = grtBoard then begin
94 h677 1.4 //Board := TBoard( RoundItem.Item );
95     Board := BBSsFindBoardFromURL(RoundItem.URL);
96 hi_ 1.1 if Board <> nil then begin
97     if not Board.IsThreadDatRead then
98     GikoSys.ReadSubjectFile(Board);
99     GikoForm.DownloadList(Board);
100     end;
101     end;
102     end;
103     for i := 0 to RoundList.Count[grtItem] - 1 do begin
104     RoundItem := RoundList.Items[i, grtItem];
105     if not RoundItem.BoolData then Continue;
106 genyakun 1.13 // if not Giko.GikoForm.LoginAction.Checked then Exit;
107 yoffy 1.3 if RoundItem.RoundType = grtItem then begin
108 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
109     ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
110 hi_ 1.1 if ThreadItem <> nil then begin
111     // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
112     GikoForm.DownloadContent(ThreadItem);
113     end;
114     end;
115     end;
116 genyakun 1.13 GikoForm.LastRoundTime := Now;
117 hi_ 1.1 Close;
118     end;
119    
120     function TRoundDialog.GetRoundCount: Integer;
121     var
122     i: Integer;
123     RoundItem: TRoundItem;
124     begin
125     Result := 0;
126     for i := 0 to RoundList.Count[grtBoard] - 1 do begin
127     RoundItem := RoundList.Items[i, grtBoard];
128     if RoundItem.BoolData then
129     Result := Result + 1;
130     end;
131     for i := 0 to RoundList.Count[grtItem] - 1 do begin
132     RoundItem := RoundList.Items[i, grtItem];
133     if RoundItem.BoolData then
134     Result := Result + 1;
135     end;
136     end;
137    
138     function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
139     const
140     AMin: Double = (1 / 24 / 60);
141     var
142     d: TDateTime;
143     begin
144     d := Time1 + (AMin * MarginMin);
145     Result := Time2 < d;
146     end;
147    
148     procedure TRoundDialog.FormCreate(Sender: TObject);
149     var
150     i: Integer;
151     begin
152 h677 1.11 FColumnToSort := -1;
153 hi_ 1.1 RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
154     for i := 0 to RoundList.RoundNameList.Count - 1 do
155     RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
156     for i := 0 to RoundList.Count[grtBoard] - 1 do
157     RoundList.Items[i, grtBoard].BoolData := False;
158     for i := 0 to RoundList.Count[grtItem] - 1 do
159     RoundList.Items[i, grtItem].BoolData := False;
160     RoundNameComboBox.ItemIndex := 0;
161     SetRoundItem('');
162 h677 1.12 RoundList.SaveRoundFile;
163 hi_ 1.1 end;
164    
165     procedure TRoundDialog.RoundListViewChange(Sender: TObject;
166     Item: TListItem; Change: TItemChange);
167     var
168     RoundItem: TRoundItem;
169     begin
170     if TObject(Item.Data) is TRoundItem then begin
171     RoundItem := TRoundItem(Item.Data);
172     RoundItem.BoolData := Item.Checked;
173     end;
174     end;
175    
176     procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
177     var
178     i: Integer;
179     RoundItem: TRoundItem;
180     ListChangeEvent: TLVChangeEvent;
181     begin
182     ListChangeEvent := RoundListView.OnChange;
183     RoundListView.OnChange := nil;
184     try
185     for i := 0 to RoundListView.Items.Count - 1 do begin
186     if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
187     RoundItem := TRoundItem(RoundListView.Items[i].Data);
188     RoundItem.BoolData := True;
189     RoundListView.Items[i].Checked := True;
190     end;
191     end;
192     finally
193     RoundListView.OnChange := ListChangeEvent;
194     end;
195     end;
196    
197     procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
198     var
199     i: Integer;
200     RoundItem: TRoundItem;
201     ListChangeEvent: TLVChangeEvent;
202     begin
203     ListChangeEvent := RoundListView.OnChange;
204     RoundListView.OnChange := nil;
205     try
206     for i := 0 to RoundListView.Items.Count - 1 do begin
207     if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
208     RoundItem := TRoundItem(RoundListView.Items[i].Data);
209     RoundItem.BoolData := False;
210     RoundListView.Items[i].Checked := False;
211     end;
212     end;
213     finally
214     RoundListView.OnChange := ListChangeEvent;
215     end;
216     end;
217    
218     procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
219     begin
220     if RoundNameComboBox.ItemIndex = 0 then
221     SetRoundItem('')
222     else
223     SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
224     end;
225    
226     procedure TRoundDialog.SetRoundItem(RoundName: string);
227     var
228     ListItem: TListItem;
229     i: Integer;
230     ListChangeEvent: TLVChangeEvent;
231     begin
232     ListChangeEvent := RoundListView.OnChange;
233     RoundListView.OnChange := nil;
234     try
235     RoundListView.Clear;
236 deux 1.7 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
237 hi_ 1.1 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
238     ListItem := RoundListView.Items.Add;
239     ListItem.Data := RoundList.Items[i, grtBoard];
240     ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
241     ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
242     ListItem.SubItems.Add('-');
243     ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
244     ListItem.ImageIndex := 0;
245     end;
246     end;
247 deux 1.7 for i := 0 to RoundList.Count[grtItem] - 1 do begin
248 hi_ 1.1 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
249     ListItem := RoundListView.Items.Add;
250     ListItem.Data := RoundList.Items[i, grtItem];
251     ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
252     ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
253     ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
254     ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
255     ListItem.ImageIndex := 1;
256     end;
257     end;
258     finally
259     RoundListView.OnChange := ListChangeEvent;
260     end;
261     end;
262    
263     procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
264     var
265 h677 1.8 // Board: TBoard;
266     // ThreadItem: TThreadItem;
267 hi_ 1.1 RoundItem: TRoundItem;
268     ListChangeEvent: TLVChangeEvent;
269     begin
270     ListChangeEvent := RoundListView.OnChange;
271     RoundListView.OnChange := nil;
272     try
273     if RoundListView.Selected = nil then
274     Exit;
275     if TObject(RoundListView.Selected.Data) is TRoundItem then begin
276     RoundItem := TRoundItem(RoundListView.Selected.Data);
277 h677 1.4 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
278     {
279 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
280 h677 1.4 //Board := TBoard( RoundItem.Item );
281     RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
282 hi_ 1.1 Board.Round := False;
283     Board.RoundName := '';
284     end else begin
285 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
286 hi_ 1.1 RoundList.Delete(ThreadItem);
287     ThreadItem.Round := False;
288     ThreadItem.RoundName := '';
289     end;
290 h677 1.4 }
291 hi_ 1.1 GikoForm.ListView.Refresh;
292     end;
293     RoundListView.Selected.Delete;
294     finally
295     RoundListView.OnChange := ListChangeEvent;
296     end;
297     end;
298    
299 h677 1.11 procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
300     Column: TListColumn);
301     begin
302     if FColumnToSort > -1 then
303     (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
304    
305     if FColumnToSort = Column.Index then
306     FSortOrder := not FSortOrder
307     else
308     FSortOrder := false;
309    
310     if FSortOrder then
311     Column.ImageIndex := 3
312     else
313     Column.ImageIndex := 2;
314    
315     FColumnToSort := Column.Index;
316     (Sender as TCustomListView).AlphaSort;
317     end;
318    
319     procedure TRoundDialog.RoundListViewCompare(Sender: TObject; Item1,
320     Item2: TListItem; Data: Integer; var Compare: Integer);
321     var
322     ix: Integer;
323     begin
324     if FColumnToSort = 0 then begin
325     if not FSortOrder then begin
326     Compare := CompareText(Item1.Caption,Item2.Caption);
327     if Compare = 0 then
328     Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
329     end else begin
330     Compare := -CompareText(Item1.Caption,Item2.Caption);
331     if Compare = 0 then
332     Compare := -CompareValue(Item1.ImageIndex,item2.ImageIndex);
333     end;
334     end else begin
335     ix := FColumnToSort - 1;
336     if not FSortOrder then begin
337     Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
338     if Compare = 0 then
339     Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
340     end else begin
341     Compare := -CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
342     if Compare = 0 then
343     Compare := -CompareValue(Item1.ImageIndex, item2.ImageIndex);
344     end;
345     end;
346     end;
347    
348 hi_ 1.1 end.

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