Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/ExternalThreadItem.pas

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


Revision 1.3 - (show annotations) (download) (as text)
Wed Nov 19 06:32:17 2003 UTC (20 years, 5 months ago) by yoffy
Branch: MAIN
Changes since 1.2: +34 -11 lines
File MIME type: text/x-pascal
・CSS を使用していない場合の体裁を調整。

1 unit ExternalThreadItem;
2
3 interface
4
5 uses
6 Windows, Classes, SysUtils,
7 IdComponent,
8 ExternalBoardPlugInMain;
9
10 type
11 // TThreadItem ???????????h┃絎?鐚??緇? ID
12 TThreadItemProperty = (
13 tipContext, // : DWORD // ???宴??┃絎???????????/span>
14 tipNo, // : Integer // ???/span>
15 tipFileName, // : string // ?鴻?????????<?ゃ????
16 tipTitle, // : string // ?鴻???????帥?ゃ????/span>
17 tipRoundDate, // : TDateTime // ?鴻??????????緇??????ユ??鐚?綏≦???ユ??鐚?
18 tipLastModified, // : TDateTime // ?鴻?????????贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
19 tipCount, // : Integer // ?鴻???????????潟??鐚????若?????
20 tipAllResCount, // : Integer // ?鴻???????????潟??鐚??泣?若??鐚?
21 tipNewResCount, // : Integer // ?鴻???????亥????/span>
22 tipSize, // : Integer // ?鴻???????泣?ゃ??/span>
23 tipRound, // : Boolean // 綏≦????????/span>
24 tipRoundName, // : string // 綏≦????
25 tipIsLogFile, // : Boolean // ???医?????????/span>
26 tipKokomade, // : Integer // ?潟?潟?障?ц????????/span>
27 tipNewReceive, // : Integer // ?潟?潟?????域???篆?/span>
28 tipNewArrival, // : Boolean // ?亥??
29 tipUnRead, // : Boolean // ?????????/span>
30 tipScrollTop, // : Integer // ?鴻?????若???臀?/span>
31 tipDownloadHost, // : string // 篁??????鴻?????????翫???????鴻??
32 tipAgeSage, // : TThreadAgeSage // ?≪?ゃ?????????筝???
33 tipURL, // : string // ?鴻???????????????吟?ц;腓冴??????? URL
34 tipFilePath // : string // ?????鴻????篆?絖???????????????/span>
35 );
36
37 // *************************************************************************
38 // TThreadItem ????????????
39 // *************************************************************************
40 TThreadItemCreate = procedure(
41 inInstance : DWORD
42 ); stdcall;
43
44 // *************************************************************************
45 // TThreadItem ???贋???????
46 // *************************************************************************
47 TThreadItemDispose = procedure(
48 inInstance : DWORD
49 ); stdcall;
50
51 // *************************************************************************
52 // ?????潟???若??????腓?/span>
53 // *************************************************************************
54 TThreadItemOnDownload = function(
55 inInstance : DWORD // ?ゃ?潟?鴻?帥?潟??/span>
56 ) : TDownloadState; stdcall; // ?????潟???若????????????????????
57
58 // *************************************************************************
59 // ?吾??莨若?帥????腓?/span>
60 // *************************************************************************
61 TThreadItemOnWrite = function(
62 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
63 inName : PChar; // ????(??潟????
64 inMail : PChar; // ?<?若???≪??????/span>
65 inMessage : PChar // ????
66 ) : TDownloadState; stdcall; // ?吾??莨若?帥??????????????????
67
68 // *************************************************************************
69 // ???合?? n ??????? html ??荀?羆?
70 // *************************************************************************
71 TThreadItemOnGetRes = function(
72 inInstance : DWORD; // ?ゃ?潟?鴻?帥?潟??/span>
73 inNo : DWORD // 茵?ず???????合???/span>
74 ) : PChar; stdcall; // 茵?ず???? HTML
75
76 // *************************************************************************
77 // ?鴻?????????????? html ??荀?羆?
78 // *************************************************************************
79 TThreadItemOnGetHeader = function(
80 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
81 inOptionalHeader : PChar // 菴遵??????????
82 ) : PChar; stdcall; // ?翫就?????? HTML
83
84 // *************************************************************************
85 // ?鴻????????????? html ??荀?羆?
86 // *************************************************************************
87 TThreadItemOnGetFooter = function(
88 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
89 inOptionalFooter : PChar // 菴遵??????????/span>
90 ) : PChar; stdcall; // ?翫就?????? HTML
91
92 // *************************************************************************
93 // ??? ThreadItem ??絮??????帥? URL ??荀?羆?
94 // *************************************************************************
95 TThreadItemOnGetBoardURL = function(
96 inInstance : DWORD // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
97 ) : PChar; stdcall; // ?帥? URL
98
99 function ThreadItemDat2HTML(
100 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
101 inDatRes : PChar; // ????<>?<?若??lt;>?ヤ?ID<>????<> ?ф??????????????鴻??
102 inResNo : DWORD; // ???合???/span>
103 inIsNew : Boolean // ?亥?????鴻???? True
104 ) : PChar; stdcall; // ?翫就?????? HTML
105
106 implementation
107
108 uses ExternalBoardManager, GikoSystem, BoardGroup;
109
110 // *************************************************************************
111 // TThreadItem ?????鴻???????????c????緇?????
112 // *************************************************************************
113 function ThreadItemGetLong(
114 instance : DWORD;
115 propertyID : TThreadItemProperty
116 ) : DWORD; stdcall;
117 var
118 threadItem : TThreadItem;
119 begin
120
121 threadItem := TThreadItem( instance );
122 case propertyID of
123 tipContext: // : DWORD // ???宴??┃絎???????????/span>
124 Result := threadItem.Context;
125 tipNo: // : Integer // ???/span>
126 Result := threadItem.No;
127 tipFileName: // : string // ?鴻?????????<?ゃ????
128 Result := DWORD( CreateResultString( threadItem.FileName ) );
129 tipTitle: // : string // ?鴻???????帥?ゃ????/span>
130 Result := DWORD( CreateResultString( threadItem.Title ) );
131 tipCount: // : Integer // ?鴻???????????潟??鐚????若?????
132 Result := threadItem.Count;
133 tipAllResCount: // : Integer // ?鴻???????????潟??鐚??泣?若??鐚?
134 Result := threadItem.AllResCount;
135 tipNewResCount: // : Integer // ?鴻???????亥????/span>
136 Result := threadItem.NewResCount;
137 tipSize: // : Integer // ?鴻???????泣?ゃ??/span>
138 Result := threadItem.Size;
139 tipRound: // : Boolean // 綏≦????????/span>
140 Result := DWORD( threadItem.Round );
141 tipRoundName: // : string // 綏≦????
142 Result := DWORD( CreateResultString( threadItem.RoundName ) );
143 tipIsLogFile: // : Boolean // ???医?????????/span>
144 Result := DWORD( threadItem.IsLogFile );
145 tipKokomade: // : Integer // ?潟?潟?障?ц????????/span>
146 Result := threadItem.Kokomade;
147 tipNewReceive: // : Integer // ?潟?潟?????域???篆?/span>
148 Result := threadItem.NewReceive;
149 tipNewArrival: // : Boolean // ?亥??
150 Result := DWORD( threadItem.NewArrival );
151 tipUnRead: // : Boolean // ?????????/span>
152 Result := DWORD( threadItem.UnRead );
153 tipScrollTop: // : Integer // ?鴻?????若???臀?/span>
154 Result := threadItem.ScrollTop;
155 tipDownloadHost: // : string // 篁??????鴻?????????翫???????鴻??
156 Result := DWORD( CreateResultString( threadItem.DownloadHost ) );
157 tipAgeSage: // : TThreadAgeSage // ?≪?ゃ?????????筝???
158 Result := DWORD( threadItem.AgeSage );
159 tipURL: // : string // ?鴻???????????????吟?ц;腓冴??????? URL
160 Result := DWORD( CreateResultString( threadItem.URL ) );
161 tipFilePath: // ?????鴻????篆?絖???????????????/span>
162 Result := DWORD( CreateResultString( threadItem.FilePath ) );
163 else
164 Result := 0;
165 end;
166 end;
167
168 // *************************************************************************
169 // TThreadItem ?????鴻???????????c??荐??????
170 // *************************************************************************
171 procedure ThreadItemSetLong(
172 instance : DWORD;
173 propertyID : TThreadItemProperty;
174 param : DWORD
175 ); stdcall;
176 var
177 threadItem : TThreadItem;
178 begin
179
180 threadItem := TThreadItem( instance );
181 case propertyID of
182 tipContext: // : DWORD // ???宴??┃絎???????????/span>
183 threadItem.Context := param;
184 tipNo: // : Integer // ???/span>
185 threadItem.No := param;
186 tipFileName: // : string // ?鴻?????????<?ゃ????
187 threadItem.FileName := string( PChar( param ) );
188 tipTitle: // : string // ?鴻???????帥?ゃ????/span>
189 threadItem.Title := string( PChar( param ) );
190 tipCount: // : Integer // ?鴻???????????潟??鐚????若?????
191 threadItem.Count := param;
192 tipAllResCount: // : Integer // ?鴻???????????潟??鐚??泣?若??鐚?
193 threadItem.AllResCount := param;
194 tipNewResCount: // : Integer // ?鴻???????亥????/span>
195 threadItem.NewResCount := param;
196 tipSize: // : Integer // ?鴻???????泣?ゃ??/span>
197 threadItem.Size := param;
198 tipRound: // : Boolean // 綏≦????????/span>
199 threadItem.Round := Boolean( param );
200 tipRoundName: // : string // 綏≦????
201 threadItem.RoundName := string( PChar( param ) );
202 tipIsLogFile: // : Boolean // ???医?????????/span>
203 threadItem.IsLogFile := Boolean( param );
204 tipKokomade: // : Integer // ?潟?潟?障?ц????????/span>
205 threadItem.Kokomade := param;
206 tipNewReceive: // : Integer // ?潟?潟?????域???篆?/span>
207 threadItem.NewReceive := param;
208 tipNewArrival: // : Boolean // ?亥??
209 threadItem.NewArrival := Boolean( param );
210 tipUnRead: // : Boolean // ?????????/span>
211 threadItem.UnRead := Boolean( param );
212 tipScrollTop: // : Integer // ?鴻?????若???臀?/span>
213 threadItem.ScrollTop := param;
214 tipDownloadHost: // : string // 篁??????鴻?????????翫???????鴻??
215 threadItem.DownloadHost := string( PChar( param ) );
216 tipAgeSage: // : TThreadAgeSage // ?≪?ゃ?????????筝???
217 threadItem.AgeSage := TGikoAgeSage( param );
218 tipURL: // : string // ?鴻???????????????吟?ц;腓冴??????? URL
219 threadItem.URL := string( PChar( param ) );
220 tipFilePath: // : string // ?????鴻????篆?絖???????????????/span>
221 threadItem.FilePath := string( PChar( param ) );
222 end;
223
224 end;
225
226 // *************************************************************************
227 // TThreadItem ?????鴻???????????c????緇?????
228 // *************************************************************************
229 function ThreadItemGetDouble(
230 instance : DWORD;
231 propertyID : TThreadItemProperty
232 ) : Double; stdcall;
233 var
234 threadItem : TThreadItem;
235 begin
236
237 threadItem := TThreadItem( instance );
238 case propertyID of
239 tipRoundDate: // : TDateTime // ?鴻??????????緇??????ユ??鐚?綏≦???ユ??鐚?
240 Result := threadItem.RoundDate;
241 tipLastModified: // : TDateTime // ?鴻?????????贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
242 Result := threadItem.LastModified;
243 else
244 Result := 0;
245 end;
246
247 end;
248
249 // *************************************************************************
250 // TThreadItem ?????鴻???????????c??荐??????
251 // *************************************************************************
252 procedure ThreadItemSetDouble(
253 instance : DWORD;
254 propertyID : TThreadItemProperty;
255 param : Double
256 ); stdcall;
257 var
258 threadItem : TThreadItem;
259 begin
260
261 threadItem := TThreadItem( instance );
262 case propertyID of
263 tipRoundDate: // : TDateTime // ?鴻??????????緇??????ユ??鐚?綏≦???ユ??鐚?
264 threadItem.RoundDate := param;
265 tipLastModified: // : TDateTime // ?鴻?????????贋?違???????????ユ??鐚??泣?若???贋?ユ??鐚?
266 threadItem.LastModified := param;
267 end;
268
269 end;
270
271 // *************************************************************************
272 // TThreadItem ?????鴻????????<????????? dat 綵√? 1 茵??? HTML ?????????
273 // *************************************************************************
274 function ThreadItemDat2HTML(
275 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
276 inDatRes : PChar; // ????<>?<?若??lt;>?ヤ?ID<>????<> ?ф??????????????鴻??
277 inResNo : DWORD; // ???合???/span>
278 inIsNew : Boolean // ?亥?????鴻???? True
279 ) : PChar; stdcall; // ?翫就?????? HTML
280 var
281 threadItem : TThreadItem;
282 res : TResRec;
283 no : string;
284 begin
285
286 {$IFDEF DEBUG}
287 Writeln('ExternalBoardManager.ThreadItemDat2HTML');
288 {$ENDIF}
289 threadItem := TThreadItem( inInstance );
290 // 綣??違????茹?/span>
291 res := GikoSys.DivideStrLine( string( inDatRes ) );
292 res.FBody := GikoSys.AddAnchorTag( res.FBody );
293 no := IntToStr( inResNo );
294
295 try
296 if GikoSys.Setting.UseSkin then begin
297 // ?鴻????/span>
298 if inIsNew then
299 Result := CreateResultString( GikoSys.SkinedRes(
300 GikoSys.LoadFromSkin(
301 GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.SizeByte
302 ), res, no
303 ) )
304 else
305 Result := CreateResultString( GikoSys.SkinedRes(
306 GikoSys.LoadFromSkin(
307 GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.SizeByte
308 ), res, no
309 ) );
310 end else if GikoSys.Setting.UseCSS then begin
311 // CSS
312 if res.FName = '' then
313 res.FName := '&nbsp;';
314 if res.FMailTo = '' then
315 Result := CreateResultString( '<a name="' + no + '"></a>'
316 + '<div class="header"><span class="no"><a href="menu:' + No + '">' + no + '</a></span> '
317 + '<span class="name_label">????鐚?</span> '
318 + '<span class="name"><b>' + res.FName + '</b></span> '
319 + '<span class="date_label">??腮炊?ワ?</span> '
320 + '<span class="date">' + res.FDateTime+ '</span></div>'
321 + '<div class="mes">' + res.FBody + ' </div>' )
322 else if GikoSys.Setting.ShowMail then
323 Result := CreateResultString( '<a name="' + no + '"></a>'
324 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
325 + '<span class="name_label"> ????鐚? </span>'
326 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
327 + '<b>' + res.FName + '</b></a><span class="mail"> [' + res.FMailTo + ']</span>'
328 + '<span class="date_label"> ??腮炊?ワ?</span>'
329 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
330 + '<div class="mes">' + res.FBody + ' </div>' )
331 else
332 Result := CreateResultString( '<a name="' + no + '"></a>'
333 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
334 + '<span class="name_label"> ????鐚? </span>'
335 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
336 + '<b>' + res.FName + '</b></a>'
337 + '<span class="date_label"> ??腮炊?ワ?</span>'
338 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
339 + '<div class="mes">' + res.FBody + ' </div>' );
340 end else begin
341 // ??????????
342 if res.FMailTo = '' then
343 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> ????鐚?<font color="forestgreen"><b> ' + res.FName + ' </b></font> ??腮炊?ワ? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
344 else if GikoSys.Setting.ShowMail then
345 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> ????鐚?<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> [' + res.FMailTo + '] ??腮炊?ワ? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
346 else
347 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> ????鐚?<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> ??腮炊?ワ? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' );
348 end;
349 except
350 Result := nil;
351 end;
352
353 end;
354
355 // *************************************************************************
356 // TThreadItem ?????鴻???????鴻??????????????????緇?????
357 // *************************************************************************
358 function ThreadItemGetHeader(
359 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
360 inOptionalHeader : PChar // 菴遵??????????
361 ) : PChar; stdcall; // ?翫就?????? HTML
362 var
363 threadItem : TThreadItem;
364 skinHeader : string;
365 optionalHeader : string;
366 begin
367
368 {$IFDEF DEBUG}
369 Writeln('ExternalBoardManager.ThreadItemGetHeader');
370 {$ENDIF}
371 threadItem := TThreadItem( inInstance );
372 optionalHeader := string( inOptionalHeader );
373
374 try
375 if GikoSys.Setting.UseSkin then begin
376 // ?鴻????/span>
377 skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.SizeByte );
378 if Length( optionalHeader ) > 0 then
379 skinHeader :=
380 StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
381 end else if GikoSys.Setting.UseCSS then begin
382 // CSS
383 skinHeader :=
384 '<html><head>' +
385 '<title>' + threadItem.Title + '</title>' +
386 '<link rel="stylesheet" href="'+ GikoSys.Setting.GetStyleSheetDir + GikoSys.Setting.CSSFileName +'" type="text/css">' +
387 optionalHeader +
388 '</head>' +
389 '<body>' +
390 '<a name="top"></a>' +
391 '<div class="title">' + threadItem.Title + '</div>';
392 end else begin
393 // ??????????
394 skinHeader :=
395 '<html><head>' +
396 '<title>' + threadItem.Title + '</title>' +
397 optionalHeader +
398 '</head>' +
399 '<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' +
400 '<a name="top"></a>' +
401 '<font size=+1 color="#FF0000">' + threadItem.Title + '</font>' +
402 '<dl>';
403 end;
404 except
405 end;
406
407 Result := CreateResultString( skinHeader );
408
409 end;
410
411 // *************************************************************************
412 // TThreadItem ?????鴻???????鴻?????????????帥????緇?????
413 // *************************************************************************
414 function ThreadItemGetFooter(
415 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
416 inOptionalFooter : PChar // 菴遵??????????/span>
417 ) : PChar; stdcall; // ?翫就?????? HTML
418 var
419 threadItem : TThreadItem;
420 skinFooter : string;
421 optionalFooter : string;
422 begin
423
424 {$IFDEF DEBUG}
425 Writeln('ExternalBoardManager.ThreadItemGetFooter');
426 {$ENDIF}
427 threadItem := TThreadItem( inInstance );
428 optionalFooter := string( inOptionalFooter );
429
430 try
431 if GikoSys.Setting.UseSkin then begin
432 // ?鴻????/span>
433 skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.SizeByte );
434 if Length( optionalFooter ) > 0 then
435 skinFooter :=
436 StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
437 end else if GikoSys.Setting.UseCSS then begin
438 // CSS
439 skinFooter :=
440 '<a name="bottom"></a>' +
441 optionalFooter +
442 '</body></html>' +
443 '<a name="last"></a>' +
444 '</body></html>';
445 end else begin
446 // ??????????
447 skinFooter :=
448 '</dl>' +
449 '<a name="bottom"></a>' +
450 optionalFooter +
451 '</body></html>' +
452 '<a name="last"></a>' +
453 '</body></html>';
454 end;
455 except
456 end;
457
458 Result := CreateResultString( skinFooter );
459
460 end;
461
462 // *************************************************************************
463 // ?鴻?????????????潟???若?????画?????
464 // *************************************************************************
465 procedure ThreadItemWork(
466 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
467 inWorkCount : Integer // ?上?????我??倶?(?????潟??)
468 ); stdcall;
469 begin
470
471 if Assigned( OnWork ) then
472 OnWork( TObject( inInstance ), wmRead, inWorkCount );
473
474 end;
475
476 // *************************************************************************
477 // ?鴻?????????????潟???若????紮??障?c??
478 // *************************************************************************
479 procedure ThreadItemWorkBegin(
480 inInstance : DWORD; // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
481 inWorkCountMax : Integer // ??篆<????????腓冴???????潟??
482 ); stdcall;
483 begin
484
485 if Assigned( OnWorkBegin ) then
486 OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
487
488 end;
489
490 // *************************************************************************
491 // ?鴻?????????????潟???若????腟???c??
492 // *************************************************************************
493 procedure ThreadItemWorkEnd(
494 inInstance : DWORD // ThreadItem ???ゃ?潟?鴻?帥?潟??/span>
495 ); stdcall;
496 begin
497
498 if Assigned( OnWorkEnd ) then
499 OnWorkEnd( TObject( inInstance ), wmRead );
500
501 end;
502
503 exports
504 ThreadItemGetLong,
505 ThreadItemSetLong,
506 ThreadItemGetDouble,
507 ThreadItemSetDouble,
508 ThreadItemDat2HTML,
509 ThreadItemGetHeader,
510 ThreadItemGetFooter,
511 ThreadItemWork,
512 ThreadItemWorkBegin,
513 ThreadItemWorkEnd;
514
515 end.
516

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