Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/ExternalBoardItem.pas

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


Revision 1.2 - (hide annotations) (download) (as text)
Mon Nov 17 16:04:13 2003 UTC (20 years, 5 months ago) by yoffy
Branch: MAIN
CVS Tags: b49, b48, v1_50_0_572, bv1_49_0_564, bv1_49_0_563, v1_50_0_557, v1_49_0_548, v1_49_0_540, v1_49_0_542, v1_49_0_545, v1_49_0_544, v1_49_0_547, b47, v1_48_0_530, b44, v1_49_0_554, v1_49_0_551, v1_48_0_510, bv1_49_0_565, v1_48_0_535, v1_49_0_552, v1_50_0_574, v1_49_0_553, v1_49_0_546, v1_50_0_573, v1_48_0_539, v1_48_0_538, b46, v1_48_0_533, v1_50_0_571, v1_48_0_537, v1_49_2_569, v1_48_0_536, root-of-remodel, v1_49_0_541, v1_50_0_561
Branch point for: remodeling, BRANCH_TORA, Bb49, stable
Changes since 1.1: +11 -0 lines
File MIME type: text/x-pascal
・スレ立てを実装。

1 yoffy 1.1 unit ExternalBoardItem;
2    
3     interface
4    
5     uses
6     Windows, Classes, SysUtils,
7     IdComponent,
8     ExternalBoardPlugInMain;
9    
10     type
11     // TBoardItem ???????????h┃絎?鐚??緇? ID
12     TBoardItemProperty = (
13     bipContext, // : DWORD // ???宴??┃絎???????????/span>
14     bipItems, // : TThreadItem // ?帥??????????????鴻??????
15     bipNo, // : Integer // ???/span>
16     bipTitle, // : string // ?帥?帥?ゃ????/span>
17     bipRoundDate, // : TDateTime // ?帥????緇??????ユ??鐚?綏≦???ユ??鐚?
18     bipLastModified, // : TDateTime // ?帥???贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
19     bipLastGetTime, // : TDateTime // ?鴻???????障?????鴻??????筝?荀с????緇????贋?違?????ユ??鐚??泣?若???贋?ユ???紙?吾??莨若?炊????戎??????鐚?
20     bipRound, // : Boolean // 綏≦??篋?膣?
21     bipRoundName, // : string // 綏≦????
22     bipIsLogFile, // : Boolean // ???医?????????/span>
23     bipUnRead, // : Integer // ?鴻???????????/span>
24     bipURL, // : string // ?帥?????????吟?ц;腓冴??????? URL
25     bipFilePath // : string // ?????帥??篆?絖???????????????/span>
26     );
27    
28     // *************************************************************************
29     // TBoardItem ????????????
30     // *************************************************************************
31     TBoardItemCreate = procedure(
32     inInstance : DWORD
33     ); stdcall;
34    
35     // *************************************************************************
36     // TBoardItem ???贋???????
37     // *************************************************************************
38     TBoardItemDispose = procedure(
39     inInstance : DWORD
40     ); stdcall;
41    
42     // *************************************************************************
43     // ?????潟???若??????腓冴??????
44     // *************************************************************************
45     TBoardItemOnDownload = function(
46     inInstance : DWORD // ?ゃ?潟?鴻?帥?潟??/span>
47     ) : TDownloadState; stdcall; // ?????潟???若????????????????????
48    
49     // *************************************************************************
50 yoffy 1.2 // ?鴻?????????腓?/span>
51     // *************************************************************************
52     TBoardItemOnCreateThread = function(
53     inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
54     inSubject : PChar; // ?鴻???帥??/span>
55     inName : PChar; // ????(??潟????
56     inMail : PChar; // ?<?若???≪??????/span>
57     inMessage : PChar // ????
58     ) : TDownloadState; stdcall; // ?吾??莨若?帥??????????????????
59    
60     // *************************************************************************
61 yoffy 1.1 // ???鴻???????宴??菴???/span>
62     // *************************************************************************
63     TBoardItemEnumThreadCallBack = function(
64     inInstance : DWORD; // TBoardItem ???ゃ?潟?鴻?帥?潟??/span>
65     inURL : PChar; // ?鴻??????? URL
66     inTitle : PChar; // ?鴻???帥??/span>
67     inCount : DWORD // ???鴻????/span>
68     ) : Boolean; stdcall; // ??????膓????????? True
69    
70     // *************************************************************************
71     // ?????帥??????????????鴻????????
72     // *************************************************************************
73     TBoardItemOnEnumThread = procedure(
74     inInstance : DWORD; // ?ゃ?潟?鴻?帥?潟??/span>
75     inCallBack : TBoardItemEnumThreadCallBack // 菴??眼???鴻???潟?若????????/span>
76     ); stdcall;
77    
78     // *************************************************************************
79     // ???<?ゃ?????????鴻??????? URL ??荀?羆???????
80     // *************************************************************************
81     TBoardItemOnFileName2ThreadURL = function(
82     inInstance : DWORD; // ?ゃ?潟?鴻?帥?潟??/span>
83     inFileName : PChar // ???????????<?ゃ????
84     ) : PChar; stdcall;
85    
86     implementation
87    
88     uses ExternalBoardManager, GikoSystem, BoardGroup;
89    
90     // *************************************************************************
91     // TBoardItem ?????鴻???????????c????緇?????
92     // *************************************************************************
93     function BoardItemGetLong(
94     instance : DWORD;
95     propertyID : TBoardItemProperty
96     ) : DWORD; stdcall;
97     var
98     boardItem : TBoard;
99     begin
100    
101     boardItem := TBoard( instance );
102     case propertyID of
103     bipContext: // : DWORD // ???宴??┃絎???????????/span>
104     Result := boardItem.Context;
105     bipNo: // : Integer // ???/span>
106     Result := boardItem.No;
107     bipTitle: // : string // ?鴻???????帥?ゃ????/span>
108     Result := DWORD( CreateResultString( boardItem.Title ) );
109     bipRound: // : Boolean // 綏≦????????/span>
110     Result := DWORD( boardItem.Round );
111     bipRoundName: // : string // 綏≦????
112     Result := DWORD( CreateResultString( boardItem.RoundName ) );
113     bipIsLogFile: // : Boolean // ???医?????????/span>
114     Result := DWORD( boardItem.IsLogFile );
115     bipUnRead: // : Integer // ?鴻???????????/span>
116     Result := DWORD( boardItem.UnRead );
117     bipURL: // : string // ?鴻???????????????吟?ц;腓冴??????? URL
118     Result := DWORD( CreateResultString( boardItem.URL ) );
119     bipFilePath: // ?????鴻????篆?絖???????????????/span>
120     Result := DWORD( CreateResultString( boardItem.FilePath ) );
121     else
122     Result := 0;
123     end;
124     end;
125    
126     // *************************************************************************
127     // TBoardItem ?????鴻???????????c??荐??????
128     // *************************************************************************
129     procedure BoardItemSetLong(
130     instance : DWORD;
131     propertyID : TBoardItemProperty;
132     param : DWORD
133     ); stdcall;
134     var
135     boardItem : TBoard;
136     begin
137    
138     boardItem := TBoard( instance );
139     case propertyID of
140     bipContext: // : DWORD // ???宴??┃絎???????????/span>
141     boardItem.Context := param;
142     bipNo: // : Integer // ???/span>
143     boardItem.No := param;
144     bipTitle: // : string // ?鴻???????帥?ゃ????/span>
145     boardItem.Title := string( PChar( param ) );
146     bipRound: // : Boolean // 綏≦????????/span>
147     boardItem.Round := Boolean( param );
148     bipRoundName: // : string // 綏≦????
149     boardItem.RoundName := string( PChar( param ) );
150     bipIsLogFile: // : Boolean // ???医?????????/span>
151     boardItem.IsLogFile := Boolean( param );
152     bipUnRead: // : Integer // ?鴻???????????/span>
153     boardItem.UnRead := Integer( param );
154     bipURL: // : string // ?鴻???????????????吟?ц;腓冴??????? URL
155     boardItem.URL := string( PChar( param ) );
156     bipFilePath: // : string // ?????鴻????篆?絖???????????????/span>
157     boardItem.FilePath := string( PChar( param ) );
158     end;
159    
160     end;
161    
162     // *************************************************************************
163     // TBoardItem ?????鴻???????????c????緇?????
164     // *************************************************************************
165     function BoardItemGetDouble(
166     instance : DWORD;
167     propertyID : TBoardItemProperty
168     ) : Double; stdcall;
169     var
170     boardItem : TBoard;
171     begin
172    
173     boardItem := TBoard( instance );
174     case propertyID of
175     bipRoundDate: // : TDateTime // ?鴻??????????緇??????ユ??鐚?綏≦???ユ??鐚?
176     Result := boardItem.RoundDate;
177     bipLastModified: // : TDateTime // ?鴻?????????贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
178     Result := boardItem.LastModified;
179     bipLastGetTime: // : TDateTime // ?鴻???????障?????鴻??????筝?荀с????緇????贋?違?????ユ??鐚??泣?若???贋?ユ???紙?吾??莨若?炊????戎??????鐚?
180     Result := boardItem.LastGetTime;
181     else
182     Result := 0;
183     end;
184    
185     end;
186    
187     // *************************************************************************
188     // TBoardItem ?????鴻???????????c??荐??????
189     // *************************************************************************
190     procedure BoardItemSetDouble(
191     instance : DWORD;
192     propertyID : TBoardItemProperty;
193     param : Double
194     ); stdcall;
195     var
196     boardItem : TBoard;
197     begin
198    
199     boardItem := TBoard( instance );
200     case propertyID of
201     bipRoundDate: // : TDateTime // ?鴻??????????緇??????ユ??鐚?綏≦???ユ??鐚?
202     boardItem.RoundDate := param;
203     bipLastModified: // : TDateTime // ?鴻?????????贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
204     boardItem.LastModified := param;
205     bipLastGetTime: // : TDateTime // ?鴻???????障?????鴻??????筝?荀с????緇????贋?違?????ユ??鐚??泣?若???贋?ユ???紙?吾??莨若?炊????戎??????鐚?
206     boardItem.LastGetTime := param;
207     end;
208    
209     end;
210    
211     // *************************************************************************
212     // TBoardItem ?????鴻????????????? TThreadItem ?????鴻????緇?????
213     // *************************************************************************
214     function BoardItemGetItems(
215     instance : DWORD;
216     index : Integer
217     ) : DWORD; stdcall;
218     var
219     boardItem : TBoard;
220     begin
221    
222     boardItem := TBoard( instance );
223     Result := DWORD( boardItem.Items[ index ] );
224    
225     end;
226    
227     // *************************************************************************
228     // ?帥???????潟???若?????画?????
229     // *************************************************************************
230     procedure BoardItemWork(
231     inInstance : DWORD; // ?????鴻???ゃ?潟?鴻?帥?潟??/span>
232     inWorkCount : Integer // ?上?????我??倶?(?????潟??)
233     ); stdcall;
234     begin
235    
236     if Assigned( OnWork ) then
237     OnWork( TObject( inInstance ), wmRead, inWorkCount );
238    
239     end;
240    
241     // *************************************************************************
242     // ?帥???????潟???若????紮??障?c??
243     // *************************************************************************
244     procedure BoardItemWorkBegin(
245     inInstance : DWORD; // ?????鴻???ゃ?潟?鴻?帥?潟??/span>
246     inWorkCountMax : Integer // ??篆<????????腓冴???????潟??
247     ); stdcall;
248     begin
249    
250     if Assigned( OnWorkBegin ) then
251     OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
252    
253     end;
254    
255     // *************************************************************************
256     // ?帥???????潟???若????腟???c??
257     // *************************************************************************
258     procedure BoardItemWorkEnd(
259     inInstance : DWORD // ?????鴻???ゃ?潟?鴻?帥?潟??/span>
260     ); stdcall;
261     begin
262    
263     if Assigned( OnWorkEnd ) then
264     OnWorkEnd( TObject( inInstance ), wmRead );
265    
266     end;
267    
268     // *************************************************************************
269     // ?帥??篆????????鴻???荀с?????????????????違?????????算??????
270     // *************************************************************************
271     procedure BoardItemEnumThread(
272     inInstance : DWORD;
273     inCallBack : TBoardItemEnumThreadCallBack;
274     inSubjectText : PChar
275     ); stdcall;
276     var
277     board : TBoard;
278     subject : TStringList;
279     i : Integer;
280     rec : TSubjectRec;
281     isContinue : Boolean;
282     begin
283    
284     {$IFDEF DEBUG}
285     Writeln('ExternalBoardManager.BoardItemEnumThread');
286     {$ENDIF}
287     try
288     board := TBoard( inInstance );
289     subject := TStringList.Create;
290     try
291     subject.Text := inSubjectText;
292    
293     for i := 0 to subject.Count - 1 do begin
294     rec := GikoSys.DivideSubject( subject[i] );
295     rec.FFileName := Trim(rec.FFileName);
296     if (rec.FTitle = '') and (rec.FCount = 0) then
297     Continue;
298    
299     isContinue := inCallBack(
300     inInstance,
301     PChar( board.BoardPlugIn.FileName2ThreadURL( DWORD( board ), rec.FFileName ) ),
302     PChar( rec.FTitle ),
303     DWORD( rec.FCount ) );
304    
305     if ( not isContinue ) then
306     Break;
307     end;
308     finally
309     subject.Free;
310     end;
311     except
312     end;
313    
314     end;
315    
316     exports
317     BoardItemGetLong,
318     BoardItemSetLong,
319     BoardItemGetDouble,
320     BoardItemSetDouble,
321     BoardItemGetItems,
322     BoardItemEnumThread,
323     BoardItemWork,
324     BoardItemWorkBegin,
325     BoardItemWorkEnd;
326    
327     end.
328    

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