*\97\9a\97ð\82P\81@\81@\81F\90V\8bK\8dì\90¬
*************************************************************************)
procedure TBBS2ch.ReadBoardFile;
+type
+ // \8dÅ\8f\89\82Ì\88ê\82Â(\93Y\82¦\8e\9a 0)\82ª BBS \96¼\82Å\81A\82»\82Ì\8cã\82É\83J\83e\83S\83\8a\82ª\91±\82
+ TCategories = array of TCategory;
var
i, j, k: integer;
- kbound: Integer;
+ jbound, kbound: Integer;
idx: Integer;
ini: TMemIniFile;
CategoryList: TStringList;
RoundItem: TRoundItem;
BBSList: TStringList;
CustomList: TStringList;
- BoardFileList: TStringList;
+ BoardFileList: TStringList;
+
+ plugInBBSs : array of TCategories;
+ plugInCategories : TCategories;
+ agent : string;
+ major : DWORD;
+ minor : DWORD;
+ release : string;
+ revision : DWORD;
+ plugInIndex : Integer;
+const
+ BBS_NAME_SIGNATURE = #$1B; // \90â\91Î\82É\94Â\96¼\82Æ\82µ\82Ä\82 \82è\93¾\82È\82¢\8bL\8d\86\82ð\8eg\82¤
begin
ini := TMemIniFile.Create('');
BBSList := TStringList.Create;
CustomList := TStringList.Create;
BoardFileList := TStringList.Create;
try
+ // \94Â\83\8a\83X\83g\82Ì\93Ç\82Ý\8d\9e\82Ý
+ // \81¦\96{\93\96\82Í TBBS2ch \82ð\8cf\8e¦\94Â\82Ì\90\94\82¾\82¯\90¶\90¬\82·\82é\82×\82«\82¾\82ª
+ // \81@\8dÅ\8f\89\82©\82ç BBS2ch \82ª 1 \82Â\91O\92ñ\82Å\8dì\82ç\82ê\82Ä\82¢\82é\82½\82ß\81A
+ // \81@\83v\83\89\83O\83C\83\93\82ª\95Ï\82í\82é\82²\82Æ\82É\83_\83~\81[\82Ì TCategory \82ð\8b²\82ñ\82Å\91Î\8f\88\82·\82é
+
+ // \82Q\82¿\82á\82ñ\82Ë\82é
if FileExists(GikoSys.GetBoardFileName) then
BBSList.LoadFromFile(GikoSys.GetBoardFileName);
+ // \83J\83X\83^\83\80
if FileExists(GikoSys.GetCustomBoardFileName) then
CustomList.LoadFromFile(GikoSys.GetCustomBoardFileName);
BBSList.AddStrings(CustomList);
+ // Board \83t\83H\83\8b\83_
if DirectoryExists(GikoSys.Setting.GetBoardDir) then begin
GikoSys.GetFileList( GikoSys.Setting.GetBoardDir, '*', BoardFileList, True, True );
for i := BoardFileList.Count - 1 downto 0 do begin
end;
ini.SetStrings(BBSList);
+ // \83v\83\89\83O\83C\83\93\97p\82Ì\83_\83~\81[\83J\83e\83S\83\8a\82ð\90¶\90¬
+ try
+ k := Low( BoardPlugIns );
+ kbound := High( BoardPlugIns );
+ SetLength(
+ plugInBBSs,
+ Max( 0, kbound - k + 1 ) );
+ for k := k to kbound do begin
+ SetLength( plugInBBSs[ k ], 1 );
+ if Assigned( Pointer( BoardPlugIns[ k ].Module ) ) then begin
+ // BBS \96¼\82Ì\91ã\82í\82è\82É\82Æ\82è\82 \82¦\82¸\83v\83\89\83O\83C\83\93\96¼\82ð\93ü\82ê\82Ä\82¨\82
+ // \81¦\8d¡\8cã BBS \96¼\82ð\93ü\82ê\82é\82æ\82¤\82É\89ü\97Ç\82·\82é\82±\82Æ
+ plugInBBSs[ k ][ 0 ] := TCategory.Create;
+ BoardPlugIns[ k ].VersionInfo( agent, major, minor, release, revision );
+ plugInBBSs[ k ][ 0 ].Title := BBS_NAME_SIGNATURE + agent;
+ end;
+ end;
+ except
+ end;
+
+ // \82Q\82¿\82á\82ñ\82Ë\82é\82ð\92Ç\89Á
+ Category := TCategory.Create;
+ Category.Title := BBS_NAME_SIGNATURE + '\82Q\82¿\82á\82ñ\82Ë\82é';
+ BBS2ch.Add( Category );
+
CategoryList := TStringList.Create;
BoardList := TStringList.Create;
try
Category := TCategory.Create;
Category.No := i + 1;
Category.Title := CategoryList[i];
+ plugInIndex := -1;
for j := 0 to BoardList.Count - 1 do begin
Board := nil;
if Assigned( Pointer( BoardPlugIns[ k ].Module ) ) then begin
if BoardPlugIns[ k ].AcceptURL( inistr ) then begin
Board := TBoard.Create( BoardPlugIns[ k ], inistr );
+ plugInIndex := k;
Break;
end;
Category.Add(Board);
Board.EndUpdate;
end;
- BBS2ch.Add(Category);
+ if plugInIndex >= 0 then begin
+ k := High( plugInBBSs[ plugInIndex ] ) + 1;
+ SetLength( plugInBBSs[ plugInIndex ], k + 1 );
+ plugInBBSs[ plugInIndex ][ k ] := Category;
+ end else begin
+ BBS2ch.Add(Category);
+ end;
end;
finally
BoardList.Free;
CategoryList.Free;
end;
+
+ // \83v\83\89\83O\83C\83\93\97p\82Ì\83_\83~\81[\83J\83e\83S\83\8a\82ð\96\96\94ö\82É\92Ç\89Á
+ try
+ k := Low( plugInBBSs );
+ kbound := High( plugInBBSs );
+ for k := k to kbound do begin
+ j := Low( plugInBBSs[ k ] );
+ jbound := High( plugInBBSs[ k ] );
+ for j := j to jbound do begin
+ BBS2ch.Add( plugInBBSs[ k ][ j ] );
+ end;
+ end;
+ except
+ end;
finally
BBSList.Free;
CustomList.Free;
BoardNode: TTreeNode;
Category: TCategory;
Board: TBoard;
+const
+ BBS_NAME_SIGNATURE = #$1B; // \90â\91Î\82É\94Â\96¼\82Æ\82µ\82Ä\82 \82è\93¾\82È\82¢\8bL\8d\86\82ð\8eg\82¤
begin
+ // \94Â\83\8a\83X\83g\82Ì\90Ý\92è
+ // \81¦\96{\93\96\82Í TBBS2ch \82ð\8cf\8e¦\94Â\82Ì\90\94\82¾\82¯\90¶\90¬\82·\82é\82×\82«\82¾\82ª
+ // \81@\8dÅ\8f\89\82©\82ç BBS2ch \82ª 1 \82Â\91O\92ñ\82Å\8dì\82ç\82ê\82Ä\82¢\82é\82½\82ß\81A
+ // \81@\83v\83\89\83O\83C\83\93\82ª\95Ï\82í\82é\82²\82Æ\82É\83_\83~\81[\82Ì TCategory \82ð\8b²\82ñ\82Å\91Î\8f\88\82·\82é
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
try
- Root := TreeView.Items.Add(nil, BBS2ch.Title);
- Root.ImageIndex := ITEM_ICON_2CH1;
- Root.SelectedIndex := ITEM_ICON_2CH2;
- Root.Data := BBS2ch;
if SplashWindow <> nil then
SplashWindow.ProgressBar.Max := BoardGroup.BBS2ch.Count;
for i := 0 to BoardGroup.BBS2ch.Count - 1 do begin
- Category := TCategory(BoardGroup.BBS2ch.Items[i]);
- CategoryNode := TreeView.Items.AddChild(Root, Category.Title);
- CategoryNode.Data := Category;
- CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
- CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
-
- for j := 0 to Category.Count - 1 do begin
- Board := TBoard(Category.Items[j]);
- Board.BeginUpdate;
- BoardNode := TreeView.Items.AddChild(CategoryNode, Board.Title);
- BoardNode.Data := Board;
- BoardNode.ImageIndex := ITEM_ICON_BOARD1;
- BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
- Board.LoadSettings;
- Board.EndUpdate;
- end;
+ if LeftStr( BoardGroup.BBS2ch.Items[ i ].Title, 1 ) = BBS_NAME_SIGNATURE then begin
+ // \83_\83~\81[\82Ì\83J\83e\83S\83\8a\82ð\8c\9f\8fo\82µ\82½\82Ì\82Å BBS \82ð\92Ç\89Á\82·\82é
+ Root := TreeView.Items.Add(
+ nil,
+ Copy( BBS2ch.Items[ i ].Title, 2, Length( BBS2ch.Items[ i ].Title ) ) );
+ Root.ImageIndex := ITEM_ICON_2CH1;
+ Root.SelectedIndex := ITEM_ICON_2CH2;
+ Root.Data := BBS2ch;
+ end else begin
+ Category := TCategory(BoardGroup.BBS2ch.Items[i]);
+ CategoryNode := TreeView.Items.AddChild(Root, Category.Title);
+ CategoryNode.Data := Category;
+ CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
+ CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
+
+ for j := 0 to Category.Count - 1 do begin
+ Board := TBoard(Category.Items[j]);
+ Board.BeginUpdate;
+ BoardNode := TreeView.Items.AddChild(CategoryNode, Board.Title);
+ BoardNode.Data := Board;
+ BoardNode.ImageIndex := ITEM_ICON_BOARD1;
+ BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
+ Board.LoadSettings;
+ Board.EndUpdate;
+ end;
- CategoryNode.Expanded := Category.NodeExpand;
+ CategoryNode.Expanded := Category.NodeExpand;
- if SplashWindow <> nil then begin
- SplashWindow.ProgressBar.StepIt;
- Application.ProcessMessages;
+ if SplashWindow <> nil then begin
+ SplashWindow.ProgressBar.StepIt;
+ Application.ProcessMessages;
+ end;
end;
-
end;
finally
TreeView.Items.EndUpdate;