OSDN Git Service

close #17481
[gikonavigoeson/gikonavi.git] / res / ExternalBoardPlugIn / BoardItem.pas
1 unit BoardItem;
2
3 {
4         ExternalBoardPlugIn BoardItem
5         \94Â\8fî\95ñ\82ð\95Û\8e\9d\82·\82é TBoardItem \83N\83\89\83X
6 }
7
8 interface
9
10 uses
11         Windows, SysUtils,
12         PlugInMain, ThreadItem;
13
14 type
15         // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\90Ý\92è\81^\8eæ\93¾ ID
16         TBoardItemProperty = (
17                 bipContext,                                                     // : DWORD                              // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
18                 bipItems,                                                               // : TThreadItem        // \94Â\82É\8cq\82ª\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h
19                 bipNo,                                                                  // : Integer                    // \94Ô\8d\86
20                 bipTitle,                                                               // : string                             // \94Â\83^\83C\83g\83\8b
21                 bipRoundDate,                                           // : TDateTime          // \94Â\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
22                 bipLastModified,                                // : TDateTime          // \94Â\82ª\8dX\90V\82³\82ê\82Ä\82¢\82é\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81j
23                 bipLastGetTime,                                 // : TDateTime          // \83X\83\8c\83b\83h\82Ü\82½\82Í\83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\8cã\82É\8dX\90V\82µ\82½\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81E\8f\91\82«\8d\9e\82Ý\8e\9e\82É\8eg\97p\82·\82é\81j
24                 bipRound,                                                               // : Boolean                    // \8f\84\89ñ\97\\96ñ
25                 bipRoundName,                                           // : string                             // \8f\84\89ñ\96¼
26                 bipIsLogFile,                                           // : Boolean                    // \83\8d\83O\91\8dÝ\83t\83\89\83O
27                 bipUnRead,                                                      // : Integer                    // \83X\83\8c\83b\83h\96¢\93Ç\90\94
28                 bipURL,                                                                 // : string                             // \94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
29                 bipFilePath,                                                    // : string                             // \82±\82Ì\94Â\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
30                 bipIs2ch                                                        // : Boolean            //\83z\83X\83g\82ª2ch\82©\82Ç\82¤\82©
31         );
32
33         // *************************************************************************
34         // \8ae\83X\83\8c\82Ì\8fî\95ñ\82ð\95Ô\8bp
35         // *************************************************************************
36         TBoardItemEnumThreadCallBack = function(
37                 inInstance      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
38                 inURL                           : PChar;        // \83X\83\8c\83b\83h\82Ì URL
39                 inTitle                 : PChar;        // \83X\83\8c\83^\83C
40                 inCount                 : DWORD         // \83\8c\83X\82Ì\90\94
41         ) : Boolean; stdcall;           // \97ñ\8b\93\82ð\91±\82¯\82é\82È\82ç True
42
43
44
45         // =========================================================================
46         // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é API
47         // =========================================================================
48
49         // *************************************************************************
50         // BoardItemGetItems
51         // TBoardItem \83N\83\89\83X\82É\8cq\82ª\82ê\82Ä\82¢\82é TThreadItem \83N\83\89\83X\82ð\8eæ\93¾\82·\82é
52         // *************************************************************************
53         TBoardItemGetItems = function(
54                 inInstance      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
55                 inIndex                 : Integer       // \8eæ\93¾\82·\82é TThreadItem \82Ì\83C\83\93\83f\83b\83N\83X
56         ) : DWORD; stdcall;                     // TThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
57
58         // *************************************************************************
59         // BoardItemGetLong
60         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
61         // *************************************************************************
62         TBoardItemGetLong = function(
63                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
64                 inPropertyID    : TBoardItemProperty    // \8eæ\93¾\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
65         ) : DWORD; stdcall;                                                                             // \96ß\82è\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
66
67         // *************************************************************************
68         // BoardItemSetLong
69         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
70         // *************************************************************************
71         TBoardItemSetLong = procedure(
72                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
73                 inPropertyID    : TBoardItemProperty;   // \90Ý\92è\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
74                 inParam : DWORD                                                                                 // \90Ý\92è\82·\82é\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
75         ); stdcall;
76
77         // *************************************************************************
78         // BoardItemGetDouble
79         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
80         // *************************************************************************
81         TBoardItemGetDouble = function(
82                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
83         inPropertyID    : TBoardItemProperty    // \8eæ\93¾\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
84         ) : Double; stdcall;                                                                    // \96ß\82è\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
85
86         // *************************************************************************
87         // BoardItemSetDouble
88         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
89         // *************************************************************************
90         TBoardItemSetDouble = procedure(
91                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
92                 inPropertyID    : TBoardItemProperty;   // \90Ý\92è\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
93                 inParam                         : Double                                                        // \90Ý\92è\82·\82é\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
94         ); stdcall;
95
96         // *************************************************************************
97         // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
98         // *************************************************************************
99         TBoardItemEnumThread = procedure(
100                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
101                 inCallBack              : TBoardItemEnumThreadCallBack; // \83X\83\8c\82Ì\8fî\95ñ\82ð\95Ô\8bp\82·\82é\83\8b\81[\83`\83\93
102                 inSubjectText   : PChar                                                         // \83t\83@\83C\83\8b\96¼,\83X\83\8c\83^\83C(\83\8c\83X\90\94\82Å\8d\\90¬\82³\82ê\82é\89ü\8ds\8bæ\90Ø\82è\83e\83L\83X\83g
103         ); stdcall;
104
105         // *************************************************************************
106         // BoardItemWork
107         // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
108         // *************************************************************************
109         TBoardItemWork = procedure(
110                 inInstance      : DWORD;                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
111                 inWorkCount     : DWORD                         // \8c»\8dÝ\82Ì\90i\95à\8fó\8bµ(\83J\83E\83\93\83g)
112         ); stdcall;
113
114         // *************************************************************************
115         // BoardItemWorkBegin
116         // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
117         // *************************************************************************
118         TBoardItemWorkBegin = procedure(
119                 inInstance                      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
120                 inWorkCountMax  : DWORD         // \92Ê\90M\82Ì\8fI\82í\82è\82ð\8e¦\82·\83J\83E\83\93\83g
121         ); stdcall;
122
123         // *************************************************************************
124         // BoardItemWorkEnd
125         // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
126         // *************************************************************************
127         TBoardItemWorkEnd = procedure(
128                 inInstance      : DWORD                         // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
129         ); stdcall;
130
131
132
133         // =========================================================================
134         // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é\83C\83x\83\93\83g
135         // =========================================================================
136
137         // *************************************************************************
138         // TBoardItem \82ª\90\90¬\82³\82ê\82½
139         // *************************************************************************
140         TBoardItemOnCreateEvent = procedure(
141                 instance : DWORD
142         );
143
144         // *************************************************************************
145         // TBoardItem \82ª\94j\8aü\82³\82ê\82½
146         // *************************************************************************
147         TBoardItemOnDisposeEvent = procedure(
148                 instance : DWORD
149         );
150
151         // *************************************************************************
152         // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
153         // *************************************************************************
154         TBoardItemOnDownloadEvent = function : TDownloadState of object;
155
156         // *************************************************************************
157         // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
158         // *************************************************************************
159         TBoardItemOnCreateThreadEvent = function(
160                 inSubject       : string;                                       // \83X\83\8c\83^\83C
161                 inName          : string;                                       // \96¼\91O(\83n\83\93\83h\83\8b)
162                 inMail          : string;                                       // \83\81\81[\83\8b\83A\83h\83\8c\83X
163                 inMessage       : string                                        // \96{\95
164         ) : TDownloadState of object;   // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
165
166         // *************************************************************************
167         // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
168         // *************************************************************************
169         TBoardItemOnEnumThreadEvent = procedure(
170                 inCallBack : TBoardItemEnumThreadCallBack
171         ) of object;
172
173         // *************************************************************************
174         // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
175         // *************************************************************************
176         TBoardItemOnFileName2ThreadURLEvent = function(
177                 inFileName : string
178         ) : string of object;
179
180
181         // =========================================================================
182         // TBoardItem \83N\83\89\83X
183         // =========================================================================
184         TBoardItem = class(TObject)
185         private
186                 // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
187                 FInstance                                                       : DWORD;
188
189                 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
190                 FOnDownload                                             : TBoardItemOnDownloadEvent;
191                 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
192                 FOnCreateThread                         : TBoardItemOnCreateThreadEvent;
193                 // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
194                 FOnEnumThread                                   : TBoardItemOnEnumThreadEvent;
195                 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
196                 FOnFileName2ThreadURL   : TBoardItemOnFileName2ThreadURLEvent;
197
198         public
199                 // \83R\83\93\83X\83g\83\89\83N\83^
200                 constructor Create( inInstance : DWORD );
201
202                 // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
203                 procedure       EnumThread( inCallBack : TBoardItemEnumThreadCallBack; inSubjectText : string );
204                 // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
205                 procedure       Work( inWorkCount : Integer );
206                 // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
207                 procedure       WorkBegin( inWorkCountMax : Integer );
208                 // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
209                 procedure       WorkEnd;
210
211         private
212                 // ===== \83v\83\8d\83p\83e\83B\82Ì\8aÇ\97\9d\82ð\93\9d\8a\87\82·\82é\83\89\83b\83p
213                 function        GetLong( propertyID : TBoardItemProperty ) : DWORD;
214                 procedure       SetLong( propertyID : TBoardItemProperty; param : DWORD );
215                 function        GetDouble( propertyID : TBoardItemProperty ) : Double;
216                 procedure       SetDouble( propertyID : TBoardItemProperty; param : Double );
217
218                 // ===== \83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
219                 function        GetItems( index : Integer ) : TThreadItem;
220                 function        GetNo : Integer;
221                 procedure       SetNo( param : Integer );
222                 function        GetTitle : string;
223                 procedure       SetTitle( param : string );
224                 function        GetRoundDate : TDateTime;
225                 procedure       SetRoundDate( param : TDateTime );
226                 function        GetLastModified : TDateTime;
227                 procedure       SetLastModified( param : TDateTime );
228                 function        GetLastGetTime : TDateTime;
229                 procedure       SetLastGetTime( param : TDateTime );
230                 function        GetRound : Boolean;
231                 procedure       SetRound( param : Boolean );
232                 function        GetRoundName : string;
233                 procedure       SetRoundName( param : string );
234                 function        GetIsLogFile : Boolean;
235                 procedure       SetIsLogFile( param : Boolean );
236                 function        GetUnRead : Integer;
237                 procedure       SetUnRead( param : Integer );
238                 function        GetURL : string;
239                 procedure       SetURL( param : string );
240                 function        GetFilePath : string;
241                 procedure       SetFilePath( param : string );
242                 function        GetIs2ch        : Boolean;
243                 procedure       SetIs2ch( param : Boolean );
244
245         protected
246                 property        Instance                        : DWORD                                         read FInstance;
247
248         public
249                 // ===== \83C\83x\83\93\83g
250                 property        OnDownload                      : TBoardItemOnDownloadEvent                     read FOnDownload write FOnDownload;
251                 property        OnCreateThread  : TBoardItemOnCreateThreadEvent read FOnCreateThread write FOnCreateThread;
252                 property        OnEnumThread            : TBoardItemOnEnumThreadEvent           read FOnEnumThread write FOnEnumThread;
253                 property        OnFileName2ThreadURL    : TBoardItemOnFileName2ThreadURLEvent   read FOnFileName2ThreadURL write FOnFileName2ThreadURL;
254
255                 // ===== ThreadItem \82É\8eæ\93¾\81^\90Ý\92è\89Â\94\\82È\83v\83\8d\83p\83e\83B
256                 // \94Â\82É\8cq\82ª\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h
257                 property        Items[index : Integer] : TThreadItem    read GetItems;
258                 // \94Ô\8d\86
259                 property        No                                              : Integer                                       read GetNo write SetNo;
260                 // \94Â\83^\83C\83g\83\8b
261                 property        Title                                   : string                                        read GetTitle write SetTitle;
262                 // \94Â\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
263                 property        RoundDate                       : TDateTime                             read GetRoundDate write SetRoundDate;
264                 // \94Â\82ª\8dX\90V\82³\82ê\82Ä\82¢\82é\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81j
265                 property        LastModified    : TDateTime                             read GetLastModified write SetLastModified;
266                 // \83X\83\8c\83b\83h\82Ü\82½\82Í\83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\8cã\82É\8dX\90V\82µ\82½\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81E\8f\91\82«\8d\9e\82Ý\8e\9e\82É\8eg\97p\82·\82é\81j
267                 property        LastGetTime             : TDateTime                             read GetLastGetTime write SetLastGetTime;
268                 // \8f\84\89ñ\83t\83\89\83O
269                 property        Round                                   : Boolean                                       read GetRound write SetRound;
270                 // \8f\84\89ñ\96¼
271                 property        RoundName                       : string                                        read GetRoundName write SetRoundName;
272                 // \83\8d\83O\91\8dÝ\83t\83\89\83O
273                 property        IsLogFile                       : Boolean                                       read GetIsLogFile write SetIsLogFile;
274                 // \83X\83\8c\83b\83h\96¢\93Ç\90\94
275                 property        UnRead                          : Integer                                       read GetUnRead write SetUnRead;
276                 // \94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
277                 property        URL                                             : string                                        read GetURL write SetURL;
278                 // \82±\82Ì\94Â\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
279                 property        FilePath                        : string                                        read GetFilePath write SetFilePath;
280                 //\83z\83X\83g\82ª2ch\82©\82Ç\82¤\82©
281                 property        Is2ch                           : Boolean               read GetIs2ch write SetIs2ch;
282         end;
283
284 var
285         // ===== API \82Ì\83A\83h\83\8c\83X
286         BoardItemGetItems               : TBoardItemGetItems;
287         BoardItemGetLong                : TBoardItemGetLong;
288         BoardItemSetLong                : TBoardItemSetLong;
289         BoardItemGetDouble      : TBoardItemGetDouble;
290         BoardItemSetDouble      : TBoardItemSetDouble;
291         BoardItemEnumThread     : TBoardItemEnumThread;
292         BoardItemWork                           : TBoardItemWork;
293         BoardItemWorkBegin      : TBoardItemWorkBegin;
294         BoardItemWorkEnd                : TBoardItemWorkEnd;
295         // ===== \83C\83x\83\93\83g\83n\83\93\83h\83\89
296         BoardItemOnCreate               : TBoardItemOnCreateEvent;
297         BoardItemOnDispose      : TBoardItemOnDisposeEvent;
298
299 // ===== TBoardItem \83N\83\89\83X\82ð\8aÇ\97\9d\82·\82é\8aÖ\90\94
300 procedure LoadInternalBoardItemAPI(
301         inModule : HMODULE
302 );
303 procedure BoardItemOnCreateOfTBoardItem(
304         inInstance : DWORD
305 );
306 procedure BoardItemOnDisposeOfTBoardItem(
307         inInstance : DWORD
308 );
309
310 implementation
311
312 // *************************************************************************
313 // TBoardItem \82Ì\83R\83\93\83X\83g\83\89\83N\83^
314 // *************************************************************************
315 constructor TBoardItem.Create(
316         inInstance : DWORD                                                                                      // \83C\83\93\83X\83^\83\93\83X
317 );
318 begin
319
320         inherited Create;
321         FInstance                                               := inInstance;
322         OnDownload                                              := nil;
323         OnCreateThread                          := nil;
324         OnEnumThread                                    := nil;
325         OnFileName2ThreadURL    := nil;
326
327 end;
328
329 // *************************************************************************
330 // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
331 // *************************************************************************
332 procedure       TBoardItem.EnumThread(
333         inCallBack              : TBoardItemEnumThreadCallBack;
334         inSubjectText   : string        // \83t\83@\83C\83\8b\96¼<>\83X\83\8c\83^\83\82Å\8d\\90¬\82³\82ê\82½\89ü\8ds\8bæ\90Ø\82è\83e\83L\83X\83g
335 );
336 begin
337
338         BoardItemEnumThread( FInstance, inCallBack, PChar( inSubjectText ) );
339
340 end;
341
342 // *************************************************************************
343 // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
344 // *************************************************************************
345 procedure       TBoardItem.Work(
346         inWorkCount : Integer                   // \8c»\8dÝ\82Ì\90i\95à\8fó\8bµ(\83J\83E\83\93\83g)
347 );
348 begin
349
350         BoardItemWork( FInstance, inWorkCount );
351
352 end;
353
354 // *************************************************************************
355 // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
356 // *************************************************************************
357 procedure       TBoardItem.WorkBegin(
358         inWorkCountMax : Integer        // \92Ê\90M\82Ì\8fI\82í\82è\82ð\8e¦\82·\83J\83E\83\93\83g
359 );
360 begin
361
362         BoardItemWorkBegin( FInstance, inWorkCountMax );
363
364 end;
365
366 // *************************************************************************
367 // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
368 // *************************************************************************
369 procedure       TBoardItem.WorkEnd;
370 begin
371
372         BoardItemWorkEnd( FInstance );
373
374 end;
375
376
377
378 // =========================================================================
379 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8aÇ\97\9d\82ð\93\9d\8a\87\82·\82é\83\89\83b\83p
380 // =========================================================================
381 function        TBoardItem.GetLong( propertyID : TBoardItemProperty ) : DWORD;
382 begin
383         Result := BoardItemGetLong( FInstance, propertyID );
384 end;
385
386 procedure       TBoardItem.SetLong( propertyID : TBoardItemProperty; param : DWORD );
387 begin
388         BoardItemSetLong( FInstance, propertyID, param );
389 end;
390
391 function        TBoardItem.GetDouble( propertyID : TBoardItemProperty ) : Double;
392 begin
393         Result := BoardItemGetDouble( FInstance, propertyID );
394 end;
395
396 procedure       TBoardItem.SetDouble( propertyID : TBoardItemProperty; param : Double );
397 begin
398         BoardItemSetDouble( FInstance, propertyID, param );
399 end;
400
401
402
403 // =========================================================================
404 // \81«\82±\82±\82©\82ç\81«
405 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
406 // =========================================================================
407 function        TBoardItem.GetItems(
408         index : Integer
409 ) : TThreadItem;
410 var
411         tmp : DWORD;
412 begin
413         tmp                     := BoardItemGetItems( FInstance, index );
414         Result  := TThreadItem( ThreadItemGetLong( tmp, tipContext ) );
415 end;
416
417 function        TBoardItem.GetNo : Integer;
418 begin
419         Result := GetLong( bipNo );
420 end;
421
422 procedure       TBoardItem.SetNo( param : Integer );
423 begin
424         SetLong( bipNo, param );
425 end;
426
427 function        TBoardItem.GetTitle : string;
428 var
429         tmp : PChar;
430 begin
431         tmp                     := PChar( GetLong( bipTitle ) );
432         Result  := string( tmp );
433         DisposeResultString( tmp );
434 end;
435
436 procedure       TBoardItem.SetTitle( param : string );
437 begin
438         SetLong( bipTitle, DWORD( PChar( param ) ) );
439 end;
440
441 function        TBoardItem.GetRoundDate : TDateTime;
442 begin
443         Result := GetDouble( bipRoundDate );
444 end;
445
446 procedure       TBoardItem.SetRoundDate( param : TDateTime );
447 begin
448         SetDouble( bipRoundDate, param );
449 end;
450
451 function        TBoardItem.GetLastModified : TDateTime;
452 begin
453         Result := GetDouble( bipLastModified );
454 end;
455
456 procedure       TBoardItem.SetLastModified( param : TDateTime );
457 begin
458         SetDouble( bipLastModified, param );
459 end;
460
461 function        TBoardItem.GetLastGetTime : TDateTime;
462 begin
463         Result := GetDouble( bipLastGetTime );
464 end;
465
466 procedure       TBoardItem.SetLastGetTime( param : TDateTime );
467 begin
468         SetDouble( bipLastGetTime, param );
469 end;
470
471 function        TBoardItem.GetRound : Boolean;
472 begin
473         Result := Boolean( GetLong( bipRound ) );
474 end;
475
476 procedure       TBoardItem.SetRound( param : Boolean );
477 begin
478         SetLong( bipRound, DWORD( param ) );
479 end;
480
481 function        TBoardItem.GetRoundName : string;
482 var
483         tmp : PChar;
484 begin
485         tmp                     := PChar( GetLong( bipRoundName ) );
486         Result  := string( tmp );
487         DisposeResultString( tmp );
488 end;
489
490 procedure       TBoardItem.SetRoundName( param : string );
491 begin
492         SetLong( bipRoundName, DWORD( PChar( param ) ) );
493 end;
494
495 function        TBoardItem.GetIsLogFile : Boolean;
496 begin
497         Result := Boolean( GetLong( bipIsLogFile ) );
498 end;
499
500 procedure       TBoardItem.SetIsLogFile( param : Boolean );
501 begin
502         SetLong( bipIsLogFile, DWORD( param ) );
503 end;
504
505 function        TBoardItem.GetUnRead : Integer;
506 begin
507         Result := GetLong( bipUnRead );
508 end;
509
510 procedure       TBoardItem.SetUnRead( param : Integer );
511 begin
512         SetLong( bipUnRead, param );
513 end;
514
515 function        TBoardItem.GetURL : string;
516 var
517         tmp : PChar;
518 begin
519         tmp                     := PChar( GetLong( bipURL ) );
520         Result  := string( tmp );
521         DisposeResultString( tmp );
522 end;
523
524 procedure       TBoardItem.SetURL( param : string );
525 begin
526         SetLong( bipURL, DWORD( PChar( param ) ) );
527 end;
528
529 function        TBoardItem.GetFilePath : string;
530 var
531         tmp : PChar;
532 begin
533         tmp                     := PChar( GetLong( bipFilePath ) );
534         Result  := string( tmp );
535         DisposeResultString( tmp );
536 end;
537
538 procedure       TBoardItem.SetFilePath( param : string );
539 begin
540         SetLong( bipFilePath, DWORD( PChar( param ) ) );
541 end;
542
543 function        TBoardItem.GetIs2ch : Boolean;
544 begin
545         Result := Boolean( GetLong( bipIs2ch ) );
546 end;
547
548 procedure       TBoardItem.SetIs2ch( param : Boolean );
549 begin
550         SetLong( bipIs2ch, DWORD( param ) );
551 end;
552
553 // =========================================================================
554 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
555 // \81ª\82±\82±\82Ü\82Å\81ª
556 // =========================================================================
557
558
559
560
561 // =========================================================================
562 // TBoardItem \83N\83\89\83X\82ð\8aÇ\97\9d\82·\82é\8aÖ\90\94
563 // =========================================================================
564
565 // *************************************************************************
566 // TBoardItem \82ª\90\90¬\82³\82ê\82½\8fê\8d\87\82Ì\83f\83t\83H\83\8b\83g\82Ì\8f\88\92u(TBoardItem \82ð\90\90¬\82·\82é)
567 // *************************************************************************
568 procedure BoardItemOnCreateOfTBoardItem(
569         inInstance : DWORD
570 );
571 var
572         boardItem : TBoardItem;
573 begin
574
575         boardItem := TBoardItem.Create( inInstance );
576         boardItemSetLong( inInstance, bipContext, DWORD( BoardItem ) );
577
578 end;
579
580 // *************************************************************************
581 // TBoardItem \82ª\94j\8aü\82³\82ê\82½\8fê\8d\87\82Ì\83f\83t\83H\83\8b\83g\82Ì\8f\88\92u(TBoardItem \82ð\94j\8aü\82·\82é)
582 // *************************************************************************
583 procedure BoardItemOnDisposeOfTBoardItem(
584         inInstance : DWORD
585 );
586 var
587         boardItem : TBoardItem;
588 begin
589
590         boardItem := TBoardItem( BoardItemGetLong( inInstance, bipContext ) );
591         boardItem.Free;
592
593 end;
594
595 // *************************************************************************
596 // PlugInSDK \82Ì TBoardItem \82É\8aÖ\82·\82é API \82ð\8f\89\8aú\89»
597 // *************************************************************************
598 procedure LoadInternalBoardItemAPI(
599         inModule : HMODULE
600 );
601 begin
602
603         // ===== \83C\83\93\83X\83^\83\93\83X\82Ì\83f\83t\83H\83\8b\83g\82Ì\8eæ\82è\88µ\82¢\82ð TBoardItem \82É\82·\82é
604         BoardItemOnCreate       := BoardItemOnCreateOfTBoardItem;
605         BoardItemOnDispose      := BoardItemOnDisposeOfTBoardItem;
606
607         // ===== TBoardItem \83v\83\8d\83p\83e\83B\8eæ\93¾\90Ý\92è\8aÖ\90\94
608         BoardItemGetItems := GetProcAddress( inModule, 'BoardItemGetItems' );
609         if not Assigned( BoardItemGetItems ) then
610                 System.ExitCode := 1;
611         BoardItemGetLong := GetProcAddress( inModule, 'BoardItemGetLong' );
612         if not Assigned( BoardItemGetLong ) then
613                 System.ExitCode := 1;
614         BoardItemSetLong := GetProcAddress( inModule, 'BoardItemSetLong' );
615         if not Assigned( BoardItemSetLong ) then
616                 System.ExitCode := 1;
617         BoardItemGetDouble := GetProcAddress( inModule, 'BoardItemGetDouble' );
618         if not Assigned( BoardItemGetDouble ) then
619                 System.ExitCode := 1;
620         BoardItemSetDouble := GetProcAddress( inModule, 'BoardItemSetDouble' );
621         if not Assigned( BoardItemSetDouble ) then
622                 System.ExitCode := 1;
623         BoardItemEnumThread := GetProcAddress( inModule, 'BoardItemEnumThread' );
624         if not Assigned( BoardItemEnumThread ) then
625                 System.ExitCode := 1;
626         BoardItemWork := GetProcAddress( inModule, 'BoardItemWork' );
627         if not Assigned( BoardItemWork ) then
628                 System.ExitCode := 1;
629         BoardItemWorkBegin := GetProcAddress( inModule, 'BoardItemWorkBegin' );
630         if not Assigned( BoardItemWorkBegin ) then
631                 System.ExitCode := 1;
632         BoardItemWorkEnd := GetProcAddress( inModule, 'BoardItemWorkEnd' );
633         if not Assigned( BoardItemWorkEnd ) then
634                 System.ExitCode := 1;
635
636 end;
637
638
639
640 // =========================================================================
641 // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é\83C\83x\83\93\83g
642 // =========================================================================
643
644 // *************************************************************************
645 // TBoardItem \82ª\90\90¬\82³\82ê\82½
646 // *************************************************************************
647 procedure BoardItemCreate(
648         inInstance : DWORD
649 ); stdcall;
650 begin
651
652         try
653                 BoardItemOnCreate( inInstance );
654         except end;
655
656 end;
657
658 // *************************************************************************
659 // TBoardItem \82ª\94j\8aü\82³\82ê\82½
660 // *************************************************************************
661 procedure BoardItemDispose(
662         inInstance : DWORD
663 ); stdcall;
664 begin
665
666         try
667                 BoardItemOnDispose( inInstance );
668         except end;
669
670 end;
671
672 // *************************************************************************
673 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
674 // *************************************************************************
675 function BoardItemOnDownload(
676         inInstance      : DWORD                                 // \83C\83\93\83X\83^\83\93\83X
677 ) : TDownloadState; stdcall;    // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
678 var
679         context                 : Pointer;
680         boardItem       : TBoardItem;
681 begin
682
683         try
684                 repeat
685                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
686                         if not Assigned( context ) then
687                                 Break;
688
689                         if not (TObject( context ) is TBoardItem) then
690                                 Break;
691
692                         boardItem := TBoardItem( context );
693                         if not Assigned( boardItem.OnDownload ) then
694                                 Break;
695
696                         Result := boardItem.OnDownload;
697                         Exit;
698                 until True;
699         except end;
700
701         Result := dsError;
702
703 end;
704
705 // *************************************************************************
706 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
707 // *************************************************************************
708 function        BoardItemOnCreateThread(
709         inInstance      : DWORD;                                // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
710         inSubject               : PChar;                                // \83X\83\8c\83^\83C
711         inName                  : PChar;                                // \96¼\91O(\83n\83\93\83h\83\8b)
712         inMail                  : PChar;                                // \83\81\81[\83\8b\83A\83h\83\8c\83X
713         inMessage               : PChar                                 // \96{\95
714 ) : TDownloadState; stdcall;    // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
715 var
716         context                 : Pointer;
717         boardItem               : TBoardItem;
718 begin
719
720         try
721                 repeat
722                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
723                         if not Assigned( context ) then
724                                 Break;
725
726                         if not (TObject( context ) is TBoardItem) then
727                                 Break;
728
729                         boardItem := TBoardItem( context );
730                         if not Assigned( boardItem.OnCreateThread ) then
731                                 Break;
732
733                         Result := boardItem.OnCreateThread( string( inSubject ), string( inName ), string( inMail ), string( inMessage ) );
734                         Exit;
735                 until True;
736         except end;
737
738         Result := dsError;
739
740 end;
741
742 // *************************************************************************
743 // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
744 // *************************************************************************
745 procedure BoardItemOnEnumThread(
746         inInstance      : DWORD;                                                                                                // \83C\83\93\83X\83^\83\93\83X
747         inCallBack      : TBoardItemEnumThreadCallBack  // \95Ô\8bp\82·\82×\82«\83R\81[\83\8b\83o\83b\83N
748 ); stdcall;
749 var
750         context                 : Pointer;
751         boardItem       : TBoardItem;
752 begin
753
754         try
755                 repeat
756                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
757                         if not Assigned( context ) then
758                                 Break;
759
760                         if not Assigned( inCallBack ) then
761                                 Break;
762
763                         if not (TObject( context ) is TBoardItem) then
764                                 Break;
765
766                         boardItem := TBoardItem( context );
767                         if not Assigned( boardItem.OnEnumThread ) then
768                                 Break;
769
770                         boardItem.OnEnumThread( inCallBack );
771                         Exit;
772                 until True;
773         except end;
774
775 end;
776
777 // *************************************************************************
778 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
779 // *************************************************************************
780 function BoardItemOnFileName2ThreadURL(
781         inInstance      : DWORD;                                                                                                // \83C\83\93\83X\83^\83\93\83X
782         inFileName      : PChar                                                                                                 // \8c³\82É\82È\82é\83t\83@\83C\83\8b\96¼
783 ) : PChar; stdcall;
784 var
785         context                 : Pointer;
786         boardItem               : TBoardItem;
787 begin
788
789         try
790                 repeat
791                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
792                         if not Assigned( context ) then
793                                 Break;
794
795                         if not (TObject( context ) is TBoardItem) then
796                                 Break;
797
798                         boardItem := TBoardItem( context );
799                         if not Assigned( boardItem.OnFileName2ThreadURL ) then
800                                 Break;
801
802                         Result := CreateResultString( boardItem.OnFileName2ThreadURL( string( inFileName ) ) );
803                         Exit;
804                 until True;
805         except end;
806
807         Result := nil;
808
809 end;
810
811 exports
812         BoardItemCreate,
813         BoardItemDispose,
814         BoardItemOnDownload,
815         BoardItemOnCreateThread,
816         BoardItemOnEnumThread,
817         BoardItemOnFileName2ThreadURL;
818
819 end.