Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/Giko.pas

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

revision 1.511 by h677, Sat Apr 2 03:08:05 2005 UTC revision 1.511.2.21 by h677, Sat Jun 18 16:47:48 2005 UTC
# Line 255  type Line 255  type
255                  N23: TMenuItem;                  N23: TMenuItem;
256                  ListCoolBar: TGikoCoolBar;                  ListCoolBar: TGikoCoolBar;
257                  ListToolBar: TToolBar;                  ListToolBar: TToolBar;
                 ViewNoButton: TToolButton;  
                 IconToolButton: TToolButton;  
                 UpFolderButton: TToolButton;  
                 Sepa01ToolButton: TToolButton;  
                 AllItemToolButton: TToolButton;  
                 LogItemToolButton: TToolButton;  
                 NewItemToolButton: TToolButton;  
                 ListDownloadToolButton: TToolButton;  
                 ListThreadDownloadToolButton: TToolButton;  
                 ToolButton2: TToolButton;  
                 ToolButton1: TToolButton;  
258                  BrowserCoolBar: TGikoCoolBar;                  BrowserCoolBar: TGikoCoolBar;
259                  BrowserToolBar: TToolBar;                  BrowserToolBar: TToolBar;
                 BrowserSizeButton: TToolButton;  
260                  ToolButton3: TToolButton;                  ToolButton3: TToolButton;
                 TopButton: TToolButton;  
                 LastBotton: TToolButton;  
                 NewButton: TToolButton;  
                 KokoButton: TToolButton;  
261                  ToolButton9: TToolButton;                  ToolButton9: TToolButton;
                 EditorButton: TToolButton;  
262                  ToolButton11: TToolButton;                  ToolButton11: TToolButton;
                 IEButton: TToolButton;  
263                  ToolButton5: TToolButton;                  ToolButton5: TToolButton;
                 ItemReloadButton: TToolButton;  
264                  ListNameToolBar: TToolBar;                  ListNameToolBar: TToolBar;
265                  ListNameLabel: TLabel;                  ListNameLabel: TLabel;
266                  FolderImage: TImage;                  FolderImage: TImage;
# Line 305  type Line 286  type
286                  I1: TMenuItem;                  I1: TMenuItem;
287                  BrowserTabToolBar: TToolBar;                  BrowserTabToolBar: TToolBar;
288                  BrowserTab: TTabControl;                  BrowserTab: TTabControl;
                 ToolButton7: TToolButton;  
289                  BrowserMinAction: TAction;                  BrowserMinAction: TAction;
290                  About1: TMenuItem;                  About1: TMenuItem;
291                  N28: TMenuItem;                  N28: TMenuItem;
# Line 345  type Line 325  type
325                  MainCoolBar: TGikoCoolBar;                  MainCoolBar: TGikoCoolBar;
326                  MenuToolBar: TToolBar;                  MenuToolBar: TToolBar;
327                  StdToolBar: TToolBar;                  StdToolBar: TToolBar;
                 RoundToolButton: TToolButton;  
                 ToolButton6: TToolButton;  
                 ToolButton4: TToolButton;  
                 ToolButton13: TToolButton;  
                 AbortToolButton: TToolButton;  
                 LoginToolButton: TToolButton;  
328                  AddressToolBar: TToolBar;                  AddressToolBar: TToolBar;
329                  AddressComboBox: TComboBox;                  AddressComboBox: TComboBox;
330                  MoveToToolButton: TToolButton;                  MoveToToolButton: TToolButton;
# Line 393  type Line 367  type
367                  F2: TMenuItem;                  F2: TMenuItem;
368                  LinkToolBar: TToolBar;                  LinkToolBar: TToolBar;
369                  a10: TMenuItem;                  a10: TMenuItem;
                 ToolButton8: TToolButton;  
                 ToolButton10: TToolButton;  
370                  ThreadEditorAction: TAction;                  ThreadEditorAction: TAction;
371                  N39: TMenuItem;                  N39: TMenuItem;
372                  T6: TMenuItem;                  T6: TMenuItem;
# Line 402  type Line 374  type
374                  LinkBarPopupMenu: TPopupMenu;                  LinkBarPopupMenu: TPopupMenu;
375                  ToolBarSettingAction: TAction;                  ToolBarSettingAction: TAction;
376                  T7: TMenuItem;                  T7: TMenuItem;
                 ToolButton12: TToolButton;  
                 ToolButton14: TToolButton;  
377                  ThreadPopupMenu: TPopupMenu;                  ThreadPopupMenu: TPopupMenu;
378                  MenuItem4: TMenuItem;                  MenuItem4: TMenuItem;
379                  MenuItem5: TMenuItem;                  MenuItem5: TMenuItem;
# Line 442  type Line 412  type
412                  F4: TMenuItem;                  F4: TMenuItem;
413                  N48: TMenuItem;                  N48: TMenuItem;
414                  T14: TMenuItem;                  T14: TMenuItem;
                 SelectItemToolButton: TToolButton;  
                 SelectResToolButton: TToolButton;  
415                  SelectResAction: TAction;                  SelectResAction: TAction;
416                  ToolButton16: TToolButton;                  ToolButton16: TToolButton;
417                  AllResAction: TAction;                  AllResAction: TAction;
# Line 501  type Line 469  type
469                  FavoriteTreeViewLogDeleteAction: TAction;                  FavoriteTreeViewLogDeleteAction: TAction;
470      ResRangeAction: TAction;      ResRangeAction: TAction;
471                  ToolButton20: TToolButton;                  ToolButton20: TToolButton;
         ResRangeButton: TToolButton;  
472                  N60: TMenuItem;                  N60: TMenuItem;
473                  ExportFavoriteFileAction1: TMenuItem;                  ExportFavoriteFileAction1: TMenuItem;
474                  ExportFavoriteFile: TFileSaveAs;                  ExportFavoriteFile: TFileSaveAs;
                 ToolButton21: TToolButton;  
                 CabinetBBSToolButton: TToolButton;  
                 ToolButton23: TToolButton;  
                 ToolButton24: TToolButton;  
475                  N6: TMenuItem;                  N6: TMenuItem;
476                  N17: TMenuItem;                  N17: TMenuItem;
477                  FavoriteTreeViewBrowseBoardAction: TAction;                  FavoriteTreeViewBrowseBoardAction: TAction;
# Line 518  type Line 481  type
481      N20: TMenuItem;      N20: TMenuItem;
482      N24: TMenuItem;      N24: TMenuItem;
483      N62: TMenuItem;      N62: TMenuItem;
484      N61: TMenuItem;          N61: TMenuItem;
485          N63: TMenuItem;          N63: TMenuItem;
486      KoreCopy: TAction;      KoreCopy: TAction;
487      N64: TMenuItem;      N64: TMenuItem;
# Line 527  type Line 490  type
490          N65: TMenuItem;          N65: TMenuItem;
491      BBSSelectPopupMenu: TPopupMenu;      BBSSelectPopupMenu: TPopupMenu;
492                  PlugInMenu: TMenuItem;                  PlugInMenu: TMenuItem;
         TmpToolBar: TToolBar;  
493      TreeSelectNameCopy: TAction;      TreeSelectNameCopy: TAction;
494      TreeSelectNamePupupMenu: TMenuItem;      TreeSelectNamePupupMenu: TMenuItem;
495      BrowserPanel: TPanel;      BrowserPanel: TPanel;
# Line 537  type Line 499  type
499      FileRun1: TFileRun;      FileRun1: TFileRun;
500      ThreadlistMaxAndFocusAction: TAction;      ThreadlistMaxAndFocusAction: TAction;
501      BrowserMaxAndFocusAction: TAction;      BrowserMaxAndFocusAction: TAction;
502          UpBoardButton: TToolButton;          SelectTimer: TTimer;
     SelectTimer: TTimer;  
503      SelectThreadSave: TMenuItem;      SelectThreadSave: TMenuItem;
504      SelectItemSaveForHTML: TAction;      SelectItemSaveForHTML: TAction;
505      FileSaveAs1: TFileSaveAs;      FileSaveAs1: TFileSaveAs;
# Line 558  type Line 519  type
519          N501: TMenuItem;          N501: TMenuItem;
520      N22: TMenuItem;      N22: TMenuItem;
521      OnlyAHundredResAction: TAction;      OnlyAHundredResAction: TAction;
522      OnlyNewResAction: TAction;          OnlyNewResAction: TAction;
523      OnlyKokoResAction: TAction;      OnlyKokoResAction: TAction;
524      A14: TMenuItem;      A14: TMenuItem;
525      BrowsBoradHeadAction: TAction;      BrowsBoradHeadAction: TAction;
# Line 572  type Line 533  type
533      S6: TMenuItem;      S6: TMenuItem;
534      N69: TMenuItem;      N69: TMenuItem;
535      S7: TMenuItem;      S7: TMenuItem;
     ThreadRangeButton: TToolButton;  
536          TabAutoSaveAction: TAction;          TabAutoSaveAction: TAction;
537      TabAutoLoadAction: TAction;      TabAutoLoadAction: TAction;
538      ListColumnPopupMenu: TPopupMenu;      ListColumnPopupMenu: TPopupMenu;
539      JumpToNumOfResAction: TAction;      JumpToNumOfResAction: TAction;
540      FavoriteTreeViewCollapseAction: TAction;      FavoriteTreeViewCollapseAction: TAction;
541      RightTabCloseAction: TAction;          RightTabCloseAction: TAction;
542      LeftTabCloseAction: TAction;      LeftTabCloseAction: TAction;
543      N70: TMenuItem;      N70: TMenuItem;
544      SameIDResAnchorAction: TAction;      SameIDResAnchorAction: TAction;
# Line 594  type Line 554  type
554      IndividualAbonID0Action: TAction;      IndividualAbonID0Action: TAction;
555      N71: TMenuItem;      N71: TMenuItem;
556      MuteAction: TAction;      MuteAction: TAction;
     ToolButton22: TToolButton;  
557      N72: TMenuItem;      N72: TMenuItem;
558      N73: TMenuItem;      N73: TMenuItem;
559      SortActiveColumnAction: TAction;      SortActiveColumnAction: TAction;
560      SortNextColumnAction: TAction;          SortNextColumnAction: TAction;
561      SortPrevColumnAction: TAction;      SortPrevColumnAction: TAction;
562      BeLogInOutAction: TAction;      BeLogInOutAction: TAction;
563                                  procedure FormCreate(Sender: TObject);                                  procedure FormCreate(Sender: TObject);
# Line 918  type Line 877  type
877                  procedure TabsOpenActionExecute(Sender: TObject);                  procedure TabsOpenActionExecute(Sender: TObject);
878      procedure OnlyAHundredResActionExecute(Sender: TObject);      procedure OnlyAHundredResActionExecute(Sender: TObject);
879      procedure OnlyKokoResActionExecute(Sender: TObject);      procedure OnlyKokoResActionExecute(Sender: TObject);
880      procedure OnlyNewResActionExecute(Sender: TObject);          procedure OnlyNewResActionExecute(Sender: TObject);
881          procedure BrowsBoradHeadActionExecute(Sender: TObject);          procedure BrowsBoradHeadActionExecute(Sender: TObject);
882      procedure BrowsBoradHeadActionUpdate(Sender: TObject);      procedure BrowsBoradHeadActionUpdate(Sender: TObject);
883      procedure EditNGActionExecute(Sender: TObject);      procedure EditNGActionExecute(Sender: TObject);
# Line 958  type Line 917  type
917        Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;        Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
918        Stage: TCustomDrawStage; var DefaultDraw: Boolean);        Stage: TCustomDrawStage; var DefaultDraw: Boolean);
919      procedure BeLogInOutActionExecute(Sender: TObject);      procedure BeLogInOutActionExecute(Sender: TObject);
920      procedure BeLogInOutActionUpdate(Sender: TObject);          procedure BeLogInOutActionUpdate(Sender: TObject);
921          private          private
922                  { Private 宣言 }                  { Private 宣言 }
923          //RoundList : TRoundList;          //RoundList : TRoundList;
# Line 1255  implementation Line 1214  implementation
1214    
1215  uses  uses
1216          About, Option, Round, Splash, Sort, ListSelect, Imm,          About, Option, Round, Splash, Sort, ListSelect, Imm,
1217          NewBoard, MojuUtils, Clipbrd, GikoBayesian;          NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter;
1218    
1219  const  const
1220          CAPTION_NAME: string = 'ギコナビ';          CAPTION_NAME: string = 'ギコナビ';
# Line 1344  begin Line 1303  begin
1303          Writeln(' 終了時は、ギコナビウィンドウを閉じてください');          Writeln(' 終了時は、ギコナビウィンドウを閉じてください');
1304          Writeln('============================================================');          Writeln('============================================================');
1305  {$ENDIF}  {$ENDIF}
1306            FTreeType := gttNone;
1307            // 起動時に保存されてしまう対策
1308          FStartUp := true;          FStartUp := true;
1309  //      LockWindowUpdate(Self.Handle);  //      LockWindowUpdate(Self.Handle);
1310          Application.OnDeactivate := AppFormDeactivate;          Application.OnDeactivate := AppFormDeactivate;
1311          //Self.OnDeactivate := AppFormDeactivate;          //Self.OnDeactivate := AppFormDeactivate;
1312          Application.HookMainWindow(Hook);          Application.HookMainWindow(Hook);
1313  //      Application.OnMessage := HandleAppMessage; //なんか無くても大丈夫になった by もじゅ  //      Application.OnMessage := HandleAppMessage; //なんか無くても大丈夫になった by もじゅ
1314          FTreeType := gttNone;          FIsIgnoreResize := rtResizing;
1315    
1316          FSearchDialog := nil;          FSearchDialog := nil;
1317          BrowserNullTab := TBrowserRecord.Create;          BrowserNullTab := TBrowserRecord.Create;
# Line 1358  begin Line 1319  begin
1319          BrowserNullTab.Browser.Navigate(BLANK_HTML);          BrowserNullTab.Browser.Navigate(BLANK_HTML);
1320          FBrowsers := TList.Create;          FBrowsers := TList.Create;
1321          for i := 0 to BROWSER_COUNT -1 do begin          for i := 0 to BROWSER_COUNT -1 do begin
1322                  FBrowsers.Add(TWebBrowser.Create(nil));                  FBrowsers.Add(TWebBrowser.Create(BrowserPanel));
1323                  newBrowser := FBrowsers[FBrowsers.Count - 1];                  newBrowser := FBrowsers[FBrowsers.Count - 1];
1324                  TOleControl(newBrowser).Parent := BrowserPanel;                  TOleControl(newBrowser).Parent := BrowserPanel;
1325                  TOleControl(newBrowser).Align := alNone;                  TOleControl(newBrowser).Align := alNone;
1326                  TOleControl(newBrowser).Left    := 0;                  TOleControl(newBrowser).Left    := 0;
1327                  TOleControl(newBrowser).Top     := 0;                  TOleControl(newBrowser).Top     := 0;
                 //newBrowser.StatusBar  := false;  
                 //newBrowser.MenuBar            := false;  
                 //newBrowser.AddressBar         := false;  
1328                  newBrowser.OnDocumentComplete   := BrowserDocumentComplete;                  newBrowser.OnDocumentComplete   := BrowserDocumentComplete;
1329                  newBrowser.OnBeforeNavigate2    := BrowserBeforeNavigate2;                  newBrowser.OnBeforeNavigate2    := BrowserBeforeNavigate2;
1330                  newBrowser.OnEnter                              := BrowserEnter;                  newBrowser.OnEnter                              := BrowserEnter;
# Line 1374  begin Line 1332  begin
1332                  newBrowser.OnStatusTextChange   := BrowserStatusTextChange;                  newBrowser.OnStatusTextChange   := BrowserStatusTextChange;
1333                  newBrowser.Navigate(BLANK_HTML);                  newBrowser.Navigate(BLANK_HTML);
1334                  ShowWindow(newBrowser.Handle, SW_HIDE);                  ShowWindow(newBrowser.Handle, SW_HIDE);
   
1335          end;          end;
1336          BrowserNullTab.Browser.BringToFront;          BrowserNullTab.Browser.BringToFront;
1337          ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);          ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
1338    
1339          // 起動時に保存されてしまう対策  
1340          FIsIgnoreResize := rtResizing;          //メニューフォント
1341            SetMenuFont;
1342    
1343          //手のカーソル          //手のカーソル
1344          Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');          Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
1345    
   
1346          //アドレス履歴読み込み          //アドレス履歴読み込み
1347          AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);          AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1348    
1349          EnabledCloseButton := True;          EnabledCloseButton := True;
1350    
1351          //リストスタイル          //リストスタイル
1352          ListView.ViewStyle := GikoSys.Setting.ListStyle;          ListView.ViewStyle := GikoSys.Setting.ListStyle;
1353    
         //メインクールバー位置  
 //      MainCoolBar.Top := 0;  
 //      MainCoolBar.Left := 0;  
   
1354          //アニメパネル位置          //アニメパネル位置
1355          AnimePanel.Top := 0;          AnimePanel.Top := 0;
1356          AnimePanel.Left := 0;          AnimePanel.Left := 0;
# Line 1425  begin Line 1378  begin
1378                  TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;                  TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1379                  TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;                  TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1380                  TreeView.Color := GikoSys.Setting.CabinetBackColor;                  TreeView.Color := GikoSys.Setting.CabinetBackColor;
                 {TreeView.Font.Style := [];  
                 if GikoSys.Setting.CabinetFontBold then  
                         TreeView.Font.Style := [fsBold];  
                 if GikoSys.Setting.CabinetFontItalic then  
                         TreeView.Font.Style := TreeView.Font.Style + [fsItalic];  
                 }  
                 //FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;  
                 //FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;  
                 //FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;  
1381                  FavoriteTreeView.Font.Assign(TreeView.Font);                  FavoriteTreeView.Font.Assign(TreeView.Font);
1382                  FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;                  FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
1383    
# Line 1469  begin Line 1413  begin
1413                  BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];                  BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1414          FDragWFirst := false;          FDragWFirst := false;
1415          SetContent(BrowserNullTab);                                                                                                     //ブラウザを空白表示          SetContent(BrowserNullTab);                                                                                                     //ブラウザを空白表示
 //      TreeView.TopItem.Expanded := True;                              //ツリートップ項目だけを開く  
 //      TreeView.Selected := TreeView.Items[0];         //ツリーのトップ項目を選択する  
1416    
1417            //プログレスバーの初期化
1418            ProgressBar.Parent := StatusBar;
1419            ProgressBar.Top := 2;
1420            ProgressBar.Left := 0;
1421            ProgressBar.Width := StatusBar.Panels[0].Width;
1422            ProgressBar.Height := StatusBar.Height - 2;
1423            ProgressBar.Position := 0;
1424    
1425            // 外部板プラグインをロード(ReadBoardFile, LoadHistory より先に行うこと)
1426            InitializeBoardPlugIns;
1427    
1428            // ボードファイル列挙(ReadFavorite より先に行うこと)
1429            GikoSys.ListBoardFile;
1430    
1431            // スプラッシュウィンドウのプログレスバーの設定
1432            SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1433    
1434            // すべてのBBSを読み込んでおく
1435            for i := Length(BBSs) - 1 downto 0 do begin
1436                    if not BBSs[i].IsBoardFileRead then
1437                            GikoSys.ReadBoardFile(BBSs[i]);
1438    
1439                    if SplashWindow <> nil then begin
1440                            SplashWindow.ProgressBar.StepBy(20);
1441                            SplashWindow.Update;
1442                    end;
1443            end;
1444            //巡回データ読み込み
1445            RoundList := TRoundList.Create;
1446            RoundList.LoadRoundBoardFile;
1447            RoundList.LoadRoundThreadFile;
1448    
1449            //TreeViewの邪魔臭いToolTipを非表示
1450            Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1451            Style := Style or TVS_NOTOOLTIPS;
1452            SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1453    
1454            // ツリーをメインだけ表示にして最大化
1455            TreeView.Align := alClient;
1456            FavoriteTreeView.Align := alClient;
1457            FavoriteTreeView.Visible := False;
1458    
1459            // メニューに追加
1460            SetBBSMenu;
1461    
1462          //最大化・ウィンドウ位置復元          //最大化・ウィンドウ位置復元
1463          wp.length := sizeof(wp);          wp.length := sizeof(wp);
# Line 1481  begin Line 1467  begin
1467          wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;          wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1468          wp.showCmd := SW_HIDE;          wp.showCmd := SW_HIDE;
1469          SetWindowPlacement(Handle, @wp);          SetWindowPlacement(Handle, @wp);
1470            //Self.Update;
1471    
 //      SetBounds(GikoSys.Setting.WindowLeft, GikoSys.Setting.WindowTop,  
 //                                              GikoSys.Setting.WindowWidth, GikoSys.Setting.WindowHeight);  
1472          if GikoSys.Setting.WindowMax then          if GikoSys.Setting.WindowMax then
1473                          WindowState := wsMaximized;                  WindowState := wsMaximized;
1474    
1475          //ギコアニメ          //ギコアニメ
1476          try          try
# Line 1503  begin Line 1488  begin
1488          AllItemAction.Checked := True;          AllItemAction.Checked := True;
1489          AllResAction.Checked := True;          AllResAction.Checked := True;
1490    
         //TreeViewの邪魔臭いToolTipを非表示  
         Style := GetWindowLong(TreeView.Handle, GWL_STYLE);  
         Style := Style or TVS_NOTOOLTIPS;  
         SetWindowLong(TreeView.Handle, GWL_STYLE, Style);  
   
         // ツリーをメインだけ表示にして最大化  
         TreeView.Align := alClient;  
         FavoriteTreeView.Align := alClient;  
         FavoriteTreeView.Visible := False;  
   
1491          //ブラウザサイズ変更の初期化          //ブラウザサイズ変更の初期化
 //      FBrowserSizeFlag := False;  
 //      FBrowserSizeHeight := ViewPanel.Height;  
   
1492          FBrowserSizeHeight := GikoSys.Setting.ListHeight;          FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1493          FBrowserSizeWidth := GikoSys.Setting.ListWidth;          FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1494    
         // 外部板プラグインをロード(ReadBoardFile, LoadHistory より先に行うこと)  
         InitializeBoardPlugIns;  
   
         //巡回データ読み込み  
         RoundList := TRoundList.Create;  
         RoundList.LoadRoundBoardFile;  
   
         // ボードファイル列挙(ReadFavorite より先に行うこと)  
         GikoSys.ListBoardFile;  
   
         RoundList.LoadRoundThreadFile;  
   
         if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then  
                 GikoSys.ListBoardFile;  
   
         // メニューに追加  
         SetBBSMenu;  
1495    
1496          // ヒストリリスト(LoadHistory よりも先に行うこと)          // ヒストリリスト(LoadHistory よりも先に行うこと)
1497          FHistoryList := TList.Create;          FHistoryList := TList.Create;
# Line 1545  begin Line 1500  begin
1500          LoadHistory;          LoadHistory;
1501    
1502          //お気に入り読み込み          //お気に入り読み込み
 //      FFavorite := TFavorite.Create(FavoriteTreeView);  
1503          FavoriteDM.SetFavTreeView(FavoriteTreeView);          FavoriteDM.SetFavTreeView(FavoriteTreeView);
1504          FavoriteDM.ReadFavorite;          FavoriteDM.ReadFavorite;
1505    
# Line 1590  begin Line 1544  begin
1544                  end;                  end;
1545          end;          end;
1546    
         //プログレスバーの初期化  
 //      ProgressBar.Visible := False;  
         ProgressBar.Parent := StatusBar;  
         ProgressBar.Top := 2;  
         ProgressBar.Left := 0;  
         ProgressBar.Width := StatusBar.Panels[0].Width;  
         ProgressBar.Height := StatusBar.Height - 2;  
         ProgressBar.Position := 0;  
   
1547          //ダウンロードオブジェクト          //ダウンロードオブジェクト
1548          FControlThread := TThreadControl.Create(True);          FControlThread := TThreadControl.Create(True);
1549          FControlThread.MaxThreadCount := 1;          FControlThread.MaxThreadCount := 1;
# Line 1622  begin Line 1567  begin
1567    
1568          FTabHintIndex := -1;          FTabHintIndex := -1;
1569    
         //リンクバー  
         SetLinkBar;  
   
         //メニューフォント  
         SetMenuFont;  
   
1570          //ツールバーWrapable          //ツールバーWrapable
1571          ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;          ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1572          BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;          BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1573    
         KeepDefaultToolButton(StdToolBar, TmpToolBar);  
         KeepDefaultToolButton(ListToolBar, TmpToolBar);  
         KeepDefaultToolButton(BrowserToolBar, TmpToolBar);  
   
1574          MakeDefaultINIFile();          MakeDefaultINIFile();
1575          //ツールボタン読み込み          //ツールボタン読み込み
1576          ReadToolBarSetting(ActionList, StdToolBar);          ReadToolBarSetting(ActionList, StdToolBar);
# Line 1651  begin Line 1586  begin
1586                                                  if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then                                                  if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1587                                                          ListToolBar.Controls[ i + 1 ].Visible := False;                                                          ListToolBar.Controls[ i + 1 ].Visible := False;
1588    
1589    
1590                                  // スレッド絞込ボタンを隠す                                  // スレッド絞込ボタンを隠す
1591                                  ListToolBar.Controls[ i ].Visible := False;                                  ListToolBar.Controls[ i ].Visible := False;
1592                                  // スレッド絞込フィールドを挿入                                  // スレッド絞込フィールドを挿入
1593    
1594                                  SelectComboBox.Parent := ListToolBar;                                  SelectComboBox.Parent := ListToolBar;
1595                                  SelectComboBox.Left := ListToolBar.Controls[ i ].Left;                                  SelectComboBox.Left :=  ListToolBar.Controls[ i ].Left;
1596                                  SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;                                  SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
1597                    SelectComboBox.Visible := True;
1598                                  // スレッド絞込用独自セパレータを挿入                                  // スレッド絞込用独自セパレータを挿入
1599                                  SelectComboBoxSplitter.Parent := ListToolBar;                                  SelectComboBoxSplitter.Parent := ListToolBar;
1600                                  SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;                                  SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
1601                    SelectComboBoxSplitter.Visible := True;
1602                                  break;                                  break;
1603                          end;                          end;
1604                  end;                  end;
# Line 1669  begin Line 1607  begin
1607          ReadToolBarSetting(ActionList, BrowserToolBar);          ReadToolBarSetting(ActionList, BrowserToolBar);
1608          SetToolBarPopup;          SetToolBarPopup;
1609    
1610            //アドレスバー
1611            AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1612    
1613            //リンクバー
1614            SetLinkBar;
1615    
1616          // レス表示範囲          // レス表示範囲
1617          FResRangeMenuSelect := GikoSys.ResRange;          FResRangeMenuSelect := GikoSys.ResRange;
1618          case GikoSys.ResRange of          case GikoSys.ResRange of
# Line 1710  begin Line 1654  begin
1654                  end;                  end;
1655          end;          end;
1656    
         //アドレスバー  
         AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;  
1657    
1658          //クールバー復元はFormShowに移動した          //クールバー復元はFormShowに移動した
1659    
# Line 1753  begin Line 1695  begin
1695                  PostMessage( Handle, USER_TREECLICK, 0, 0 );                  PostMessage( Handle, USER_TREECLICK, 0, 0 );
1696          end;          end;
1697    
         // 起動時に保存されてしまう対策 3  
         FIsIgnoreResize := rtResizing;  
   
1698    
1699          //引数があったらスレを開く(未取得ならダウンロード)          //引数があったらスレを開く(未取得ならダウンロード)
1700          for i := 1 to ParamCount do     begin          for i := 1 to ParamCount do     begin
1701                  MoveToURL(ParamStr(i));                  MoveToURL(ParamStr(i));
1702          end;          end;
 //      SetStdToolBar;  
 //      SetLinkBar;  
1703    
1704          s := GikoSys.FAbon.NGwordname;          s := GikoSys.FAbon.NGwordname;
1705          StatusBar.Panels[2].Text := s;          StatusBar.Panels[2].Text := s;
# Line 1791  begin Line 1728  begin
1728          if GikoSys.Setting.GestureEnabled then          if GikoSys.Setting.GestureEnabled then
1729                  MouseGesture.SetHook( Handle );                  MouseGesture.SetHook( Handle );
1730    
     //2ch言語読み出し  
     GikoSys.Setting.SetMessages;  
     {  
1731          //2ch言語読み出し          //2ch言語読み出し
1732          if GikoSys.Setting.GengoSupport then begin      GikoSys.Setting.SetMessages;
1733                  if GikoSys.Setting.Gengo = nil then  
                         GikoSys.Setting.Gengo := TStringList.Create;  
                 if FileExists(GikoSys.GetConfigDir + 'language.ini') then  
                         GikoSys.Setting.Gengo.LoadFromFile(GikoSys.GetConfigDir + 'language.ini')  
                 else  
                         GikoSys.Setting.GengoSupport := false;  
         end;  
     }  
1734          //オートログイン          //オートログイン
1735          if GikoSys.Setting.AutoLogin then          if GikoSys.Setting.AutoLogin then
1736                  LoginAction.Execute;                  LoginAction.Execute;
# Line 2133  begin Line 2060  begin
2060          //アドレス履歴保存          //アドレス履歴保存
2061          try          try
2062                  //AddressHistoryDMは自動生成フォームなので、解放は自動的にされる。                  //AddressHistoryDMは自動生成フォームなので、解放は自動的にされる。
2063                  AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);                  AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
2064          except          except
2065          end;          end;
2066    
# Line 2178  begin Line 2105  begin
2105          // TBBS は保持している TCategory, TBoard, TThreadItem すべてを開放する          // TBBS は保持している TCategory, TBoard, TThreadItem すべてを開放する
2106          // TBoard, TThreadItem のデストラクタはプラグインに破棄を伝えるので          // TBoard, TThreadItem のデストラクタはプラグインに破棄を伝えるので
2107          // BoardPluteIns の開放より先に行うこと          // BoardPluteIns の開放より先に行うこと
2108        for i := Length(BoardGroups) - 1 downto 0 do begin
2109            BoardGroups[i].Clear;
2110        end;
2111    
2112          try          try
2113                  for i := Length( BBSs ) - 1 downto 0 do begin                  for i := Length( BBSs ) - 1 downto 0 do begin
2114                          if BBSs[ i ] <> nil then                          if BBSs[ i ] <> nil then
# Line 2187  begin Line 2118  begin
2118          except          except
2119          end;          end;
2120    
2121    
2122          try          try
2123                  for i := Length( BoardPlugIns ) - 1 downto  0 do begin                  for i := Length( BoardPlugIns ) - 1 downto  0 do begin
2124                          if BoardPlugIns[ i ] <> nil then                          if BoardPlugIns[ i ] <> nil then
# Line 2294  begin Line 2226  begin
2226          ActiveList := nil;          ActiveList := nil;
2227    
2228          FTreeType := gttNone;          FTreeType := gttNone;
2229      GikoSys.FBoardURLList.Clear;      //GikoSys.FBoardURLList.Clear;
2230        for i := Length(BoardGroups) - 1 downto 0 do begin
2231            BoardGroups[i].Clear;
2232        end;
2233          GikoSys.ListBoardFile;          //ボードファイル読込          GikoSys.ListBoardFile;          //ボードファイル読込
2234    
2235          // BBS メニューの更新          // BBS メニューの更新
# Line 2314  begin Line 2249  begin
2249    
2250          SetLinkBar;          SetLinkBar;
2251    
2252            // すべてのBBSを読み込んでおく
2253            for i := Length(BBSs) - 1 downto 0 do begin
2254                    if not BBSs[i].IsBoardFileRead then
2255                            GikoSys.ReadBoardFile(BBSs[i]);
2256            end;
2257    
2258            //巡回リスト保存&破棄
2259            try
2260                    RoundList.SaveRoundFile;
2261            except
2262            end;
2263            try
2264                    RoundList.Clear;
2265            except
2266            end;
2267            RoundList.LoadRoundBoardFile;
2268            RoundList.LoadRoundThreadFile;
2269    
2270          //          //
2271          TabsOpenAction.Execute;          TabsOpenAction.Execute;
2272  end;  end;
# Line 2338  begin Line 2291  begin
2291                  if not inBBS.IsBoardFileRead then                  if not inBBS.IsBoardFileRead then
2292                          GikoSys.ReadBoardFile( inBBS );                          GikoSys.ReadBoardFile( inBBS );
2293                  try                  try
2294                          if SplashWindow <> nil then                          //if SplashWindow <> nil then
2295                                  SplashWindow.ProgressBar.Max := inBBS.Count;                                  //SplashWindow.ProgressBar.Max := inBBS.Count;
2296                            //      SplashWindow.ProgressBar.Max := inBBS.Count + Length(BBSs) * 20;
2297                  except                  except
2298                  end;                  end;
2299    
# Line 2396  begin Line 2350  begin
2350    
2351                          CategoryNode.Expanded := Category.NodeExpand;                          CategoryNode.Expanded := Category.NodeExpand;
2352    
2353                          if SplashWindow <> nil then begin                          //if SplashWindow <> nil then begin
2354                                  SplashWindow.ProgressBar.StepIt;                          //      SplashWindow.ProgressBar.StepIt;
2355                                  Application.ProcessMessages;                                  //Application.ProcessMessages;
2356                          end;                          //      SplashWindow.Update;
2357                            //end;
2358                  end;                  end;
2359          finally          finally
2360                  TreeView.Items.EndUpdate;                  TreeView.Items.EndUpdate;
# Line 2508  begin Line 2463  begin
2463                  ListView.Items.Clear;                  ListView.Items.Clear;
2464                  ListView.Items.Count := Category.Count;                  ListView.Items.Count := Category.Count;
2465    
2466                    for i := Category.Count - 1 downto 0 do begin
2467                            if( Category.Items[i].ParentCategory <> Category ) then begin
2468                                    Category.Items[i].ParentCategory        := Category;
2469                                    Category.Items[i].No                            := i + 1;
2470                            end;
2471                    end;
2472  //              UpFolderAction.Enabled := True;  //              UpFolderAction.Enabled := True;
2473  //              AllItemAction.Enabled := False;  //              AllItemAction.Enabled := False;
2474  //              LogItemAction.Enabled := False;  //              LogItemAction.Enabled := False;
# Line 2580  begin Line 2541  begin
2541                  ListView.Items.Count := 0;                  ListView.Items.Count := 0;
2542                  ListView.Items.Clear;                  ListView.Items.Clear;
2543    
2544                  case GikoForm.ViewType of                  {case GikoForm.ViewType of
2545                          gvtAll: ListView.Items.Count := Board.Count;                          gvtAll: ListView.Items.Count := Board.Count;
2546                          gvtLog: ListView.Items.Count := Board.GetLogThreadCount;                          gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
2547                          gvtNew: ListView.Items.Count := Board.GetNewThreadCount;                          gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
2548                          gvtUser: ListView.Items.Count := Board.GetUserThreadCount;                          gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
2549                  end;                  end;
2550                    }
2551                    case GikoForm.ViewType of
2552                            gvtAll: ListView.Items.Count := Board.Count;
2553                            gvtLog:
2554                            begin
2555                                    Board.LogThreadCount := Board.GetLogThreadCount;
2556                                    ListView.Items.Count := Board.LogThreadCount;
2557                            end;
2558                            gvtNew:
2559                            begin
2560                                    Board.NewThreadCount := Board.GetNewThreadCount;
2561                                    ListView.Items.Count := Board.NewThreadCount;
2562                            end;
2563                            gvtUser:
2564                            begin
2565                                    Board.UserThreadCount:= Board.GetUserThreadCount;
2566                                    ListView.Items.Count := Board.UserThreadCount;
2567                            end;
2568                    end;
2569    
2570                  ListNameLabel.Caption := Board.Title;                  ListNameLabel.Caption := Board.Title;
2571                  FolderImage.Picture := nil;                  FolderImage.Picture := nil;
# Line 2669  begin Line 2649  begin
2649    
2650                  if ListNumberVisibleAction.Checked then                  if ListNumberVisibleAction.Checked then
2651                          Item.Caption := IntToStr(Board.No) + ': ' + Board.Title                          Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
2652                            //Item.Caption := IntToStr(Item.Index + 1) + ': ' + Board.Title
2653                  else                  else
2654                          Item.Caption := Board.Title;                          Item.Caption := Board.Title;
2655    
# Line 2717  begin Line 2698  begin
2698                  else                  else
2699                          ListView.StateImages := nil;                          ListView.StateImages := nil;
2700    
2701    
2702                    case GikoForm.ViewType of
2703                            gvtAll: BoardCnt := Board.Count;
2704                            gvtLog: BoardCnt := Board.LogThreadCount;
2705                            gvtNew: BoardCnt := Board.NewThreadCount;
2706                            gvtUser: BoardCnt := Board.UserThreadCount;
2707                            else
2708                                    BoardCnt := 0;
2709                    end;
2710                    {
2711                  case GikoForm.ViewType of                  case GikoForm.ViewType of
2712                          gvtAll: BoardCnt := Board.Count;                          gvtAll: BoardCnt := Board.Count;
2713                          gvtLog: BoardCnt := Board.GetLogThreadCount;                          gvtLog: BoardCnt := Board.GetLogThreadCount;
# Line 2725  begin Line 2716  begin
2716                          else                          else
2717                                  BoardCnt := 0;                                  BoardCnt := 0;
2718                  end;                  end;
2719                    }
2720  //              if Board = nil then Exit;  //              if Board = nil then Exit;
2721                  if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt)                  if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt)
2722                          or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit;                          or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit;
                 //if Item = nil then Exit;  
                 //if Item.Index > BoardCnt then Exit;  
                 //if ListView.Items.Count = 0 then Exit;  
   
 //              if not (Board.Items[Item.Index] is TThreadItem) then Exit;  
2723    
2724                    //改善すべきブロック/////////////////////////////////////////////////////
2725                  ThreadItem := nil;                  ThreadItem := nil;
2726                  case GikoForm.ViewType of                  case GikoForm.ViewType of
2727                          gvtAll: if Item.Index >= Board.Count then Exit else                          gvtAll: if Item.Index >= Board.Count then Exit else
2728                                                                  ThreadItem := TThreadItem(Board.Items[Item.Index]);                                                                  ThreadItem := TThreadItem(Board.Items[Item.Index]);
2729                          gvtLog:         ThreadItem := Board.GetLogThread(Item.Index);                          gvtLog:         ThreadItem := Board.GetLogThread(Item.Index);
2730                          gvtNew:         ThreadItem := Board.GetNewThread(Item.Index);                          gvtNew:         ThreadItem := Board.GetNewThread(Item.Index);
2731                          gvtUser:        ThreadItem := Board.GetUserThread(Item.Index);                          gvtUser:        ThreadItem := Board.GetUserThread(Item.Index);
2732                  end;                  end;
2733                    //////////////////////////////////////////////////////////////////////////
2734                    
2735                  if ThreadItem = nil then Exit;                  if ThreadItem = nil then Exit;
2736    
 //              if ListNumberVisibleAction.Checked then  
 //                      RepStr := IntToStr(ThreadItem.No) + ': ' + ThreadItem.Title  
 //              else  
                 //RepStr := ThreadItem.Title;  
2737                  RepStr := CustomStringReplace(ThreadItem.Title, '&lt;', '<' );                  RepStr := CustomStringReplace(ThreadItem.Title, '&lt;', '<' );
2738                  RepStr := CustomStringReplace(RepStr, '&gt;', '>' );                  RepStr := CustomStringReplace(RepStr, '&gt;', '>' );
2739                  RepStr := CustomStringReplace(RepStr, '&quot;', '"' );                  RepStr := CustomStringReplace(RepStr, '&quot;', '"' );
2740                  RepStr := CustomStringReplace(RepStr, '&amp;', '&' );                  RepStr := CustomStringReplace(RepStr, '&amp;', '&' );
2741                  //RepStr := StringReplace(RepStr, '@`', ',', [rfReplaceAll]);                  //RepStr := StringReplace(RepStr, '@`', ',', [rfReplaceAll]);
   
2742                  if Item.SubItems.Count <> ListView.Columns.Count then begin                  if Item.SubItems.Count <> ListView.Columns.Count then begin
2743                          Item.SubItems.Clear;                          Item.SubItems.Clear;
2744                          Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count;                          Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count;
# Line 2832  begin Line 2815  begin
2815                                  end;                                  end;
2816                                  Inc( idx );                                  Inc( idx );
2817                          end;                          end;
2818    
2819                          if ThreadItem.NewArrival then                          if ThreadItem.NewArrival then
2820                                  Item.ImageIndex := ITEM_ICON_THREADNEW1                                  Item.ImageIndex := ITEM_ICON_THREADNEW1
2821                          else                          else
# Line 2872  begin Line 2856  begin
2856                          else                          else
2857                                  Item.ImageIndex := ITEM_ICON_THREAD1;                                  Item.ImageIndex := ITEM_ICON_THREAD1;
2858                  end;                  end;
2859    
2860                  Item.Data := ThreadItem;                  Item.Data := ThreadItem;
2861    
2862          end;          end;
# Line 2998  begin Line 2983  begin
2983                          end;                          end;
2984                  end else begin                  end else begin
2985                          threadItem := GetActiveContent;                          threadItem := GetActiveContent;
2986              URL := GetRespopupURL(Text, threadItem.URL);                          URL := GetRespopupURL(Text, threadItem.URL);
2987                          PathRec := Gikosys.Parse2chURL2(URL);                          PathRec := Gikosys.Parse2chURL2(URL);
2988                          if (PathRec.FNoParam) then begin                          if (PathRec.FNoParam) then begin
2989                                  PathRec.FSt := 1;                                  PathRec.FSt := 1;
# Line 3044  begin Line 3029  begin
3029    
3030                                  if threadItem <> nil then begin                                  if threadItem <> nil then begin
3031                                          //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);                                          //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
3032                                            //URLの最後に/が付いていないとき用
3033                                            if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
3034                                                    wkIntSt := 1;
3035                                                    wkIntTo := 1;
3036                                            end;
3037                                          FHint.PopupType := gptThread;                                          FHint.PopupType := gptThread;
3038                                          SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );                                          SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
3039                                  end;                                  end;
# Line 3398  begin Line 3388  begin
3388                  end else if TObject(TreeView.Items[i].Data) is TBoard then begin                  end else if TObject(TreeView.Items[i].Data) is TBoard then begin
3389                          IsBoardNode := True;                          IsBoardNode := True;
3390                          Board := TBoard(TreeView.Items[i].Data);                          Board := TBoard(TreeView.Items[i].Data);
3391    
3392                          Cnt := Board.UnRead;                          Cnt := Board.UnRead;
3393                          if Cnt <= 0 then                          if Cnt <= 0 then
3394                                  continue;                                  continue;
# Line 3526  begin Line 3517  begin
3517                  else                  else
3518                          ATitle := Item.ThreadItem.Title;                          ATitle := Item.ThreadItem.Title;
3519                  if ATitle = '' then                  if ATitle = '' then
3520              ATitle := GikoSys.Setting.GetMessage(Ord(gmUnKnown));                          ATitle := GikoSys.Setting.GetMessage(Ord(gmUnKnown));
3521    
3522                  if Item.State in [gdsComplete, gdsDiffComplete] then begin                  if Item.State in [gdsComplete, gdsDiffComplete] then begin
3523                          //正常終了                          //正常終了
3524                          if Item.DownType = gdtBoard then begin                          if Item.DownType = gdtBoard then begin
3525                                  //板                                  //板
3526                                  Item.SaveListFile;                                  Item.SaveListFile;
3527                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureItiran)), nil, gmiOK);                                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureItiran)), nil, gmiOK);
3528                  if GetActiveList = Item.Board then begin                                  if GetActiveList = Item.Board then begin
3529                                          FActiveList := nil;                                          FActiveList := nil;
3530                                          SetActiveList(Item.Board);                                          SetActiveList(Item.Board);
3531                                  end;                                  end;
# Line 3545  begin Line 3536  begin
3536                                  //スレ                                  //スレ
3537                                  Item.SaveItemFile;                                  Item.SaveItemFile;
3538                                  Item.ThreadItem.NewArrival := True;                                  Item.ThreadItem.NewArrival := True;
3539                                  if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin                                  //if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3540                                          boardPlugIn             := Item.ThreadItem.BoardPlugIn;                                  if (Item.ThreadItem.ParentBoard.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3541                                            //boardPlugIn           := Item.ThreadItem.BoardPlugIn;
3542                                            boardPlugIn             := Item.ThreadItem.ParentBoard.BoardPlugIn;
3543                                          Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;                                          Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
3544                                          ATitle := Item.ThreadItem.Title;                                          ATitle := Item.ThreadItem.Title;
3545                                  end else if ATitle = '(名称不明)' then begin                                  end else if ATitle = '(名称不明)' then begin
# Line 3571  begin Line 3564  begin
3564                                          end;                                          end;
3565                                  end else begin                                  end else begin
3566                                          if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then                                          if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
3567                                                  InsertBrowserTab(Item.ThreadItem);                                                                                                  InsertBrowserTab(Item.ThreadItem);
3568                                  end;                                  end;
3569    
3570                                  Application.ProcessMessages;                                                                  Application.ProcessMessages;
3571    
3572                                  if Item.State = gdsComplete then begin                                  if Item.State = gdsComplete then begin
3573                                          PlaySound('New');                                          PlaySound('New');
3574                                          AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureSyutoku)), nil, gmiOK);                                                                                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureSyutoku)), nil, gmiOK);
3575                                          //Add by Genyakun                                                                                  //Add by Genyakun
3576                                          DiffComp := True;                                                                                  DiffComp := True;
3577                                  end else begin                                  end else begin
3578                                          PlaySound('NewDiff');                                          PlaySound('NewDiff');
3579                                          AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureDiff)), nil, gmiOK);                                                                                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureDiff)), nil, gmiOK);
3580                                          //Add by Genyakun                                                                                  //Add by Genyakun
3581                                          DiffComp := True;                                                                                  DiffComp := True;
3582                                  end;                                  end;
3583    
3584                                  //巡回ありの場合&1000超は巡回削除                                  //巡回ありの場合&1000超は巡回削除
3585                                  if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin                                  if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
3586                                          Item.ThreadItem.Round := False;                                          Item.ThreadItem.Round := False;
3587                                          Item.ThreadItem.RoundName := '';                                          //Item.ThreadItem.RoundName := '';
3588                                          AddMessageList('★1000発言を超えたので巡回を削除しました - [' + Item.ThreadItem.Title + ']', nil, gmiOK);                                          AddMessageList('★1000発言を超えたので巡回を削除しました - [' + Item.ThreadItem.Title + ']', nil, gmiOK);
3589                                  end;                                  end;
   
3590                                  TreeView.Refresh;                                  TreeView.Refresh;
3591                                    //ListViewでこのスレが含まれる板を表示しているときの更新処理
3592                                    if (ActiveList <> nil) and (ActiveList is TBoard) then begin
3593                                            TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
3594                                            TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
3595                                            TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
3596                        //ListViewのアイテムの個数も更新
3597                                            case GikoForm.ViewType of
3598                                                    gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
3599                                                    gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
3600                                                    gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
3601                                                    gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
3602                                            end;
3603                                    end;
3604                          end;                          end;
3605                          ListView.Refresh;                          ListView.Refresh;
3606                  end else if Item.State = gdsNotModify then begin                  end else if Item.State = gdsNotModify then begin
# Line 3604  begin Line 3609  begin
3609                                  //SetContent(Item.ThreadItem);                                  //SetContent(Item.ThreadItem);
3610                                  InsertBrowserTab(Item.ThreadItem);                                  InsertBrowserTab(Item.ThreadItem);
3611                          end;}                          end;}
3612                          AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmNotMod)), nil, gmiSAD);                                                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmNotMod)), nil, gmiSAD);
3613                          PlaySound('NoChange');                          PlaySound('NoChange');
3614                          Screen.Cursor := crDefault;                          Screen.Cursor := crDefault;
3615                  end else if Item.State = gdsAbort then begin                  end else if Item.State = gdsAbort then begin
3616                          //中断                          //中断
3617                          AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK);                                                  AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK);
3618                  end else if Item.State = gdsError then begin                  end else if Item.State = gdsError then begin
3619                          //エラー                          //エラー
3620                          s := Item.ErrText;                          s := Item.ErrText;
# Line 3835  var Line 3840  var
3840          ThreadItem: TThreadItem;          ThreadItem: TThreadItem;
3841          Thread: TBrowserRecord;          Thread: TBrowserRecord;
3842          ThreadTitle, ThreadPTitle: string;          ThreadTitle, ThreadPTitle: string;
3843          ThreadScrollTop: Integer;          //ThreadScrollTop: Integer;
3844          ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;          ThreadIsLog, {ThreadUnRead,} ThreadNewArraical: boolean;
3845  begin  begin
3846  //      AddMessageList('SetContent', nil, gmiWhat);  //      AddMessageList('SetContent', nil, gmiWhat);
3847          Thread := inThread;          Thread := inThread;
# Line 3886  begin Line 3891  begin
3891                    
3892          ThreadTitle := Thread.Thread.Title;          ThreadTitle := Thread.Thread.Title;
3893          ThreadPTitle := Thread.Thread.ParentBoard.Title;          ThreadPTitle := Thread.Thread.ParentBoard.Title;
3894          ThreadScrollTop := Thread.Thread.ScrollTop;          //ThreadScrollTop := Thread.Thread.ScrollTop;
3895          ThreadIsLog := Thread.Thread.IsLogFile;          ThreadIsLog := Thread.Thread.IsLogFile;
3896          ThreadItem := Thread.Thread;          ThreadItem := Thread.Thread;
3897          ThreadNewArraical :=  Thread.Thread.NewArrival;          ThreadNewArraical :=  Thread.Thread.NewArrival;
3898          ThreadUnRead := Thread.Thread.UnRead;          //ThreadUnRead := Thread.Thread.UnRead;
3899          BBSID := ThreadItem.ParentBoard.BBSID;          BBSID := ThreadItem.ParentBoard.BBSID;
3900          FileName := ThreadItem.FileName;          FileName := ThreadItem.FileName;
3901    
# Line 4068  begin Line 4073  begin
4073          ViewType := AViewType;          ViewType := AViewType;
4074          if ActiveList is TBoard then begin          if ActiveList is TBoard then begin
4075                  Board := TBoard(ActiveList);                  Board := TBoard(ActiveList);
4076                    case ViewType of
4077                            //gvtAll: ListView.Items.Count := Board.Count;
4078                            gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
4079                            gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
4080                            gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
4081                    end;
4082                    
4083                  SetActiveList(Board);                  SetActiveList(Board);
4084                    //
4085                  //SetThreadListItem(Board); //SetActiveList内で呼ばれるから2重に呼び出す必要なし                  //SetThreadListItem(Board); //SetActiveList内で呼ばれるから2重に呼び出す必要なし
4086          end;          end;
4087  end;  end;
# Line 4230  begin Line 4243  begin
4243          else          else
4244                  FHistoryList.Add( favItem );                  FHistoryList.Add( favItem );
4245  //      SetContent(ThreadItem);  //      SetContent(ThreadItem);
4246          while GikoSys.Setting.AddressHistoryCount < FHistoryList.Count do begin          while GikoSys.Setting.MaxRecordCount < FHistoryList.Count do begin
4247                  i := FHistoryList.Count - 1;                  i := FHistoryList.Count - 1;
4248                  TObject( FHistoryList.Items[ i ] ).Free;                  TObject( FHistoryList.Items[ i ] ).Free;
4249                  FHistoryList.Delete( i );                  FHistoryList.Delete( i );
# Line 4253  begin Line 4266  begin
4266                  Node.ImageIndex := ITEM_ICON_THREADLOG1;                  Node.ImageIndex := ITEM_ICON_THREADLOG1;
4267                  Node.SelectedIndex := ITEM_ICON_THREADLOG2;                  Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4268                  Node.Data := favItem;                  Node.Data := favItem;
4269                  while GikoSys.Setting.AddressHistoryCount < TreeView.Items.Count do begin                  while GikoSys.Setting.MaxRecordCount < TreeView.Items.Count do begin
4270                          i := TreeView.Items.Count - 1;                          i := TreeView.Items.Count - 1;
4271                          TreeView.Items.Item[ i ].Delete;                          TreeView.Items.Item[ i ].Delete;
4272                  end;                  end;
# Line 5287  begin Line 5300  begin
5300  ////            if FTreeType = gtt2ch then  ////            if FTreeType = gtt2ch then
5301  //                      SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);  //                      SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5302  //              //SetActiveList(TBoard(GetActiveList).ParentCategory);  //              //SetActiveList(TBoard(GetActiveList).ParentCategory);
5303                  if TreeView.Selected <> nil then begin                  //if TreeView.Selected <> nil then begin
5304                          if TObject(TreeView.Selected.Parent.Data) is TCategory then                  //      if TObject(TreeView.Selected.Parent.Data) is TCategory then
5305                                  SelectTreeNode(TCategory(TreeView.Selected.Parent.Data), True);                  //              SelectTreeNode(TCategory(TreeView.Selected.Parent.Data), True);
5306                  end;                  //end;
5307                    if TBoard(GetActiveList).ParentCategory <> nil then
5308                            SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5309          end else if GetActiveList is TCategory then begin          end else if GetActiveList is TCategory then begin
5310  //              if FTreeType = gtt2ch then  //              if FTreeType = gtt2ch then
5311                          SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);                          SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);
# Line 6391  begin Line 6406  begin
6406                                  Text := ZenToHan(Text);                                  Text := ZenToHan(Text);
6407    
6408                                  if(AnsiPos('>>', Text) = 1) then begin                                  if(AnsiPos('>>', Text) = 1) then begin
6409                                          Text := Copy(Text, 3, Length(Text) - 2);                                          //Text := Copy(Text, 3, Length(Text) - 2);
6410                                            Delete(Text, 1, 2);
6411                                  end else begin                                  end else begin
6412                                          Text := Copy(Text, 2, Length(Text) - 1);                                          //Text := Copy(Text, 2, Length(Text) - 1);
6413                                            Delete(Text, 1, 1);
6414                                  end;                                  end;
6415                                  if AnsiPos('-', Text) <> 0 then begin                                  if AnsiPos('-', Text) <> 0 then begin
6416                                          wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);                                          wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
# Line 6418  begin Line 6435  begin
6435                          URL := GikoSys.GetHRefText(Html);                          URL := GikoSys.GetHRefText(Html);
6436                          URL := GikoSys.HTMLDecode(URL);                          URL := GikoSys.HTMLDecode(URL);
6437              if AnsiPos('BE:', URL) = 1 then begin              if AnsiPos('BE:', URL) = 1 then begin
6438                  BNum := Copy(URL, 4, AnsiPos('/', URL) - 4);                                  BNum := Copy(URL, 4, AnsiPos('/', URL) - 4);
6439                  BRes := Copy(URL, AnsiPos('/', URL) + 1,  Length(URL));                                  BRes := Copy(URL, AnsiPos('/', URL) + 1,  Length(URL));
6440                  threadItem := FActiveContent.Thread;                  threadItem := FActiveContent.Thread;
6441                  if threadItem = nil then Exit;                  if threadItem = nil then Exit;
6442                  URL := BE_PHP_URL + BNum + '&u=d'                  URL := BE_PHP_URL + BNum + '&u=d'
# Line 6855  begin Line 6872  begin
6872                  Dlg.ShowModal;                  Dlg.ShowModal;
6873                  if Dlg.ModalResult <> mrCancel then begin                  if Dlg.ModalResult <> mrCancel then begin
6874                          s := Trim(Dlg.RoundNameEdit.Text);                          s := Trim(Dlg.RoundNameEdit.Text);
6875                          RoundList.RoundNameList.Add(s);                          //RoundList.RoundNameList.Add(s);
6876                          SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);                          SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
6877              ListView.Refresh;              ListView.Refresh;
6878                  end;                  end;
# Line 6865  begin Line 6882  begin
6882  end;  end;
6883  procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);  procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);
6884  var  var
6885      threadItem : TThreadItem;          threadItem : TThreadItem;
6886    //      i: Integer;
6887  begin  begin
6888      if ParentName <> 'dummy1' then begin          if ParentName <> 'dummy1' then begin
6889          SetSelectItemRound(RoundFlag, RoundName);                  SetSelectItemRound(RoundFlag, RoundName);
6890      end else begin          end else begin
6891          threadItem := GetActiveContent;                  threadItem := GetActiveContent;
6892                  if threadItem <> nil then begin                  if threadItem <> nil then begin
6893                  threadItem.RoundName := RoundName;                          threadItem.RoundName := RoundName;
6894              threadItem.Round := RoundFlag;                          RoundList.RoundNameList.Add(RoundName);
6895          end;                          //RoundList.RoundNameList.Find(RoundName, i);
6896      end;                          //threadItem.RoundName := PChar(RoundList.RoundNameList[i]);
6897                            threadItem.Round := RoundFlag;
6898                    end;
6899            end;
6900  end;  end;
6901    
6902  procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);  procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);
6903  var  var
6904          i: Integer;          i{, idx}: Integer;
6905          List: TList;          List: TList;
6906  begin  begin
6907          List := TList.Create;          List := TList.Create;
# Line 6889  begin Line 6910  begin
6910                  for i := 0 to List.Count - 1 do begin                  for i := 0 to List.Count - 1 do begin
6911                          if TObject(List[i]) is TBoard then begin                          if TObject(List[i]) is TBoard then begin
6912                                  TBoard(List[i]).RoundName := RoundName;                                  TBoard(List[i]).RoundName := RoundName;
6913                                    RoundList.RoundNameList.Add(RoundName);
6914                                    //RoundList.RoundNameList.Find(RoundName, idx);
6915                                    //TBoard(List[i]).RoundName := PChar(RoundList.RoundNameList[idx]);
6916                                  TBoard(List[i]).Round := RoundFlag;                                  TBoard(List[i]).Round := RoundFlag;
6917                          end else if TObject(List[i]) is TThreadItem then begin                          end else if TObject(List[i]) is TThreadItem then begin
6918                                  if TThreadItem(List[i]).IsLogFile then begin                                  if TThreadItem(List[i]).IsLogFile then begin
6919                                          TThreadItem(List[i]).RoundName := RoundName;                                          TThreadItem(List[i]).RoundName := RoundName;
6920                                            RoundList.RoundNameList.Add(RoundName);
6921                                            //RoundList.RoundNameList.Find(RoundName, idx);
6922                                            //TThreadItem(List[i]).RoundName := PChar(RoundList.RoundNameList[idx]);
6923                                          TThreadItem(List[i]).Round := RoundFlag;                                          TThreadItem(List[i]).Round := RoundFlag;
6924                                  end;                                  end;
6925                          end;                          end;
# Line 6976  begin Line 7003  begin
7003                                          LoginAction.Checked := True;                                          LoginAction.Checked := True;
7004                      AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);                      AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
7005                      LoginAction.Caption := 'ログアウト(&L)';                      LoginAction.Caption := 'ログアウト(&L)';
7006                      LoginToolButton.Style := tbsCheck;                                          //LoginToolButton.Style := tbsCheck;
7007                                  end else begin                                  end else begin
7008                  //                      MsgBox(Handle, 'ログイン出来ませんでした', 'エラー', MB_OK or MB_ICONSTOP);                  //                      MsgBox(Handle, 'ログイン出来ませんでした', 'エラー', MB_OK or MB_ICONSTOP);
7009                                          AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);                                          AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
7010                                          PlaySound('Error');                                          PlaySound('Error');
7011                                          LoginAction.Checked := False;                                          LoginAction.Checked := False;
7012                                          LoginToolButton.Down := False;                                          //LoginToolButton.Down := False;
7013                                          LoginToolButton.Style := tbsButton;                                          ///LoginToolButton.Style := tbsButton;
7014                                  end;                                  end;
7015                  end else begin                  end else begin
7016                                  msg := '強制ログインモードでは,サーバの証明書の有効性をチェックしません。' + #13#10                                  msg := '強制ログインモードでは,サーバの証明書の有効性をチェックしません。' + #13#10
# Line 7006  begin Line 7033  begin
7033                          LoginAction.Checked := True;                          LoginAction.Checked := True;
7034                          AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);                          AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
7035                          LoginAction.Caption := 'ログアウト(&L)';                          LoginAction.Caption := 'ログアウト(&L)';
7036                          LoginToolButton.Style := tbsCheck;                          //LoginToolButton.Style := tbsCheck;
7037                          end else begin                          end else begin
7038              //                  MsgBox(Handle, 'ログイン出来ませんでした', 'エラー', MB_OK or MB_ICONSTOP);              //                  MsgBox(Handle, 'ログイン出来ませんでした', 'エラー', MB_OK or MB_ICONSTOP);
7039                          AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);                          AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
7040                          PlaySound('Error');                                                  PlaySound('Error');
7041                          LoginAction.Checked := False;                                                  LoginAction.Checked := False;
7042                          LoginToolButton.Down := False;                                                  //LoginToolButton.Down := False;
7043                          LoginToolButton.Style := tbsButton;                                                  //LoginToolButton.Style := tbsButton;
7044                      end;                      end;
7045                  end else begin                  end else begin
7046                          LoginAction.Checked := False;                          LoginAction.Checked := False;
7047                      LoginToolButton.Down := False;                                          //LoginToolButton.Down := False;
7048                      LoginToolButton.Style := tbsButton;                                          //LoginToolButton.Style := tbsButton;
7049                  end;                  end;
7050              end;              end;
7051                  finally                  finally
# Line 7572  var Line 7599  var
7599          URL, protocol2, host2, path2, document2, port2, bookmark2 : string;          URL, protocol2, host2, path2, document2, port2, bookmark2 : string;
7600          tmp1, tmp2: string;          tmp1, tmp2: string;
7601          BBSID, BBSKey: string;          BBSID, BBSKey: string;
7602          tmpBoard, Board: TBoard;          {tmpBoard,} Board: TBoard;
7603          ThreadItem: TThreadItem;          ThreadItem: TThreadItem;
7604          i, bi                                   : Integer;          i, bi                                   : Integer;
7605          boardURL                        : string;          boardURL                        : string;
# Line 7603  begin Line 7630  begin
7630          //===== プラグイン          //===== プラグイン
7631          try          try
7632                  //作業中//                  //作業中//
7633                  bi := High( BoardPlugIns );                  //bi := High( BoardPlugIns );
7634                  for i := Low( BoardPlugIns ) to bi do begin                  bi := Length(BoardGroups) - 1;
7635                          if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin                  //for i := Low( BoardPlugIns ) to bi do begin
7636                                  case BoardPlugIns[ i ].AcceptURL( inURL ) of                  for i := 1 to bi do begin
7637                            //if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7638                            if (BoardGroups[i].BoardPlugIn <> nil) and (Assigned(Pointer(BoardGroups[i].BoardPlugIn.Module))) then begin
7639                                    case BoardGroups[i].BoardPlugIn.AcceptURL( inURL ) of
7640                                  atThread:                                  atThread:
7641                                          begin                                          begin
7642                                                  tmpThread               := TThreadItem.Create( BoardPlugIns[ i ], inURL );                                                  boardURL        := BoardGroups[i].BoardPlugIn.ExtractBoardURL( inURL );
7643                                                  boardURL                := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );                                                  Board           := BBSsFindBoardFromURL( boardURL );
7644                                                  Board                           := BBSsFindBoardFromURL( boardURL );  
7645    
7646                                                  if Board = nil then begin                                                  if Board = nil then begin
7647                              //break;                                                          //break;
7648                                                          // ※作っても追加するところが無いので激しく保留                                                          // ※作っても追加するところが無いので激しく保留
7649                                                          //GikoSys.OpenBrowser(inURL, gbtUserApp);                                                          //GikoSys.OpenBrowser(inURL, gbtUserApp);
7650                                                          //Exit;                                                          //Exit;
# Line 7623  begin Line 7654  begin
7654                                                                  ShowBBSTree( BBSs[ 1 ] );                                                                  ShowBBSTree( BBSs[ 1 ] );
7655                                                          }                                                          }
7656                                                  end else begin                                                  end else begin
7657                                                            tmpThread               := TThreadItem.Create( BoardGroups[i].BoardPlugIn, Board, inURL );
7658                                                          if not Board.IsThreadDatRead then begin                                                          if not Board.IsThreadDatRead then begin
7659                                                                  GikoSys.ReadSubjectFile( Board );                                                                  GikoSys.ReadSubjectFile( Board );
7660                                                                    tmpThread.Free;
7661                                                                  Exit;                                                                  Exit;
7662                                                          end;                                                          end;
7663                                                          ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );                                                          ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7664                                                          if ThreadItem = nil then begin                                                          if ThreadItem = nil then begin
7665                                                                    //tmpThreadをこっちは開放してはいけない
7666                                                                  ThreadItem := tmpThread;                                                                  ThreadItem := tmpThread;
7667                                                                  Board.Insert( 0, ThreadItem );                                                                  Board.Insert( 0, ThreadItem );
7668                                                                  if ActiveList is TBoard then begin                                                                  if ActiveList is TBoard then begin
# Line 7660  begin Line 7694  begin
7694    
7695                                  atBoard:                                  atBoard:
7696                                          begin                                          begin
7697                                                  tmpBoard := TBoard.Create(BoardPlugIns[ i ], inURL);                                                  Board := BBSsFindBoardFromURL(
7698                                                  Board := BBSsFindBoardFromURL( tmpBoard.URL );                                                                          BoardGroups[i].BoardPlugIn.ExtractBoardURL( inURL )
7699                                                  tmpBoard.Free;                                                                          );
7700                                                  if Board <> nil then begin                                                  if Board <> nil then begin
7701                                                          if FActiveBBS <> Board.ParentCategory.ParenTBBS then                                                          if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7702                                                                  ShowBBSTree( Board.ParentCategory.ParenTBBS );                                                                  ShowBBSTree( Board.ParentCategory.ParenTBBS );
# Line 7681  begin Line 7715  begin
7715          if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin          if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7716                  boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );                  boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
7717                  Board := BBSsFindBoardFromURL( boardURL );                  Board := BBSsFindBoardFromURL( boardURL );
7718                  if Board = nil then                  //if Board = nil then
7719                          Board := BBSsFindBoardFromBBSID( BBSID );                  //      Board := BBSsFindBoardFromBBSID( BBSID );
7720                    { この部分もBBSsFindBoardFromURLに持たせた 20050523
7721                  if Board = nil then begin                  if Board = nil then begin
7722                          // ※作っても追加するところが無いので激しく保留                          // ※作っても追加するところが無いので激しく保留
7723                          // 過去ログ倉庫から、ダウソしたスレが発見できないのでここで探すようにする (2004/01/22)                          // 過去ログ倉庫から、ダウソしたスレが発見できないのでここで探すようにする (2004/01/22)
7724                          Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );                          Board := BBSs[ 0 ].FindBBSID( BBSID );
7725                  end;                  end;
7726                    }
7727                  if Board = nil then begin                  if Board = nil then begin
7728                           // 入るべき板が見つからなかったので、普通のブラウザで開く                           // 入るべき板が見つからなかったので、普通のブラウザで開く
7729                           GikoSys.OpenBrowser(inURL, gbtUserApp);                           GikoSys.OpenBrowser(inURL, gbtUserApp);
# Line 7724  begin Line 7759  begin
7759                                  GikoSys.OpenBrowser(URL1, gbtIE)                                  GikoSys.OpenBrowser(URL1, gbtIE)
7760                          else begin                          else begin
7761                          }                          }
7762                          ThreadItem := TThreadItem.Create( nil, URL );                          ThreadItem := TThreadItem.Create( nil, Board, URL );
7763                          ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');                          ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
7764                          if AnsiPos(Host, Board.URL) = 0 then                          if AnsiPos(Host, Board.URL) = 0 then
7765                                  ThreadItem.DownloadHost := Host                                  ThreadItem.DownloadHost := Host
# Line 7761  begin Line 7796  begin
7796                  end;                  end;
7797          end else begin          end else begin
7798                  Board := BBSsFindBoardFromURL( inURL );                  Board := BBSsFindBoardFromURL( inURL );
7799      if Board = nil then begin                  if Board = nil then begin
7800                          GikoSys.OpenBrowser(inURL, gbtAuto);                          GikoSys.OpenBrowser(inURL, gbtAuto);
7801      end else begin                  end else begin
7802            if FActiveBBS <> Board.ParentCategory.ParenTBBS then                          if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7803          ShowBBSTree( Board.ParentCategory.ParenTBBS );                                  ShowBBSTree( Board.ParentCategory.ParenTBBS );
7804        SelectTreeNode( Board, True );                          SelectTreeNode( Board, True );
7805      end;          end;
7806          end;          end;
7807  end;  end;
7808    
# Line 8135  begin Line 8170  begin
8170                                          FHint.Title := ThreadItem.Title;                                          FHint.Title := ThreadItem.Title;
8171    
8172          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
8173              if ThreadItem.IsBoardPlugInAvailable then begin              //if ThreadItem.IsBoardPlugInAvailable then begin
8174                if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
8175                  //===== プラグインによる表示                  //===== プラグインによる表示
8176                  boardPlugIn             := ThreadItem.BoardPlugIn;                  //boardPlugIn           := ThreadItem.BoardPlugIn;
8177                    boardPlugIn             := ThreadItem.ParentBoard.BoardPlugIn;
8178    
8179                  // フォントやサイズの設定                  // フォントやサイズの設定
8180                  // 文字コードはプラグインに任せる                  // 文字コードはプラグインに任せる
# Line 8298  begin Line 8335  begin
8335                  LinkBarPopupMenu.Items.Clear;                  LinkBarPopupMenu.Items.Clear;
8336                  for i := LinkToolBar.ButtonCount - 1 downto 0 do                  for i := LinkToolBar.ButtonCount - 1 downto 0 do
8337                          //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);                          //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
8338              LinkToolBar.Buttons[i].Free;                          LinkToolBar.Buttons[i].Free;
8339                  for i := 0 to FavoriteTreeView.Items.Count - 1 do begin                  for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8340                          if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin                          if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8341                                  for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin                                  for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
# Line 8883  begin Line 8920  begin
8920                  tssList:                Dlg.ToolBarIndex := 1;                  tssList:                Dlg.ToolBarIndex := 1;
8921                  tssBrowser: Dlg.ToolBarIndex := 2;                  tssBrowser: Dlg.ToolBarIndex := 2;
8922                  end;                  end;
                 {  
                 if ToolBarSettingAction.ActionComponent.GetParentComponent is TPopupMenu then begin  
                         Component := TPopupMenu( ToolBarSettingAction.ActionComponent.GetParentComponent ).PopupComponent;  
   
                         if Component = MainCoolBar then  
                                 Dlg.ToolBarComboBox.ItemIndex := 0  
                         else if Component = ListCoolBar then  
                                 Dlg.ToolBarComboBox.ItemIndex := 1  
                         else if Component = BrowserCoolBar then  
                                 Dlg.ToolBarComboBox.ItemIndex := 2;  
                 end;  
                 }  
8923                  if Dlg.ShowModal = mrOK then begin                  if Dlg.ShowModal = mrOK then begin
8924                          SetToolBarPopup;                          SetToolBarPopup;
8925    
# Line 8911  begin Line 8936  begin
8936                                  BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;                                  BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;
8937                                  BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;                                  BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;
8938                          end;                          end;
8939    
8940                            SelectComboBox.Visible := False;
8941                            SelectComboBoxSplitter.Visible := False;
8942    
8943                          SaveToolBarSetting(StdToolBar);                          SaveToolBarSetting(StdToolBar);
8944                          SaveToolBarSetting(ListToolBar);                          SaveToolBarSetting(ListToolBar);
8945                          for i := ListToolBar.ControlCount - 1 downto 0 do                          for i := ListToolBar.ControlCount - 1 downto 0 do
# Line 8929  begin Line 8958  begin
8958                                          SelectComboBox.Left := ListToolBar.Controls[ i ].Left;                                          SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
8959                                          SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;                                          SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
8960                                          SelectComboBox.Parent := ListToolBar;                                          SelectComboBox.Parent := ListToolBar;
8961                                            SelectComboBox.Visible := True;
8962                                          // スレッド絞込用独自セパレータを挿入                                          // スレッド絞込用独自セパレータを挿入
8963                                          SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;                                          SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
8964                                          SelectComboBoxSplitter.Parent := ListToolBar;                                          SelectComboBoxSplitter.Parent := ListToolBar;
8965                        SelectComboBoxSplitter.Visible := True;
8966                                          break;                                          break;
8967                                  end;                                  end;
8968                          end;                          end;
# Line 9322  begin Line 9352  begin
9352                          ResetBandInfo( ListCoolBar, ListToolBar );                          ResetBandInfo( ListCoolBar, ListToolBar );
9353                  End;                  End;
9354          End;          End;
9355    
9356  end;  end;
9357    
9358  procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;  procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;
# Line 9333  begin Line 9364  begin
9364          pos.X := X;          pos.X := X;
9365          pos.Y := Y;          pos.Y := Y;
9366          DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );          DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );
9367    
9368  end;  end;
9369    
9370  procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;  procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;
9371          Button: TMouseButton; Shift: TShiftState; X, Y: Integer);          Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9372  begin  begin
9373          IsDraggingSelectComboBox := False;          IsDraggingSelectComboBox := False;
9374    
9375  end;  end;
9376    
9377  procedure TGikoForm.StatusBarResize(Sender: TObject);  procedure TGikoForm.StatusBarResize(Sender: TObject);
# Line 10305  begin Line 10338  begin
10338          ThreadItem := GetActiveContent;          ThreadItem := GetActiveContent;
10339    
10340          if ThreadItem <> nil then begin          if ThreadItem <> nil then begin
10341                  if ThreadItem.IsBoardPlugInAvailable then begin                  //if ThreadItem.IsBoardPlugInAvailable then begin
10342            if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
10343                          //===== プラグインによる表示                          //===== プラグインによる表示
10344                          boardPlugIn             := ThreadItem.BoardPlugIn;                          //boardPlugIn           := ThreadItem.BoardPlugIn;
10345                boardPlugIn         := ThreadItem.ParentBoard.BoardPlugIn;
10346    
10347                          // フォントやサイズの設定                          // フォントやサイズの設定
10348                          // 文字コードはプラグインに任せる                          // 文字コードはプラグインに任せる
# Line 10325  begin Line 10360  begin
10360                                  Header := CustomStringReplace(Header, '</b>', '',true);                                  Header := CustomStringReplace(Header, '</b>', '',true);
10361                                  Header := CustomStringReplace(Header, '<b>', '',true);                                  Header := CustomStringReplace(Header, '<b>', '',true);
10362                          end;                          end;
10363                          if ThreadItem.IsBoardPlugInAvailable then begin                          //if ThreadItem.IsBoardPlugInAvailable then begin
10364                if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
10365                                  Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);                                  Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
10366                                  Body := CustomStringReplace(Body, '<br>', #13#10,true);                                  Body := CustomStringReplace(Body, '<br>', #13#10,true);
10367                          end else begin                          end else begin
# Line 11982  var Line 12018  var
12018          msg : String;          msg : String;
12019          ReadList                : TStringList;          ReadList                : TStringList;
12020          wordCount               : TWordCount;          wordCount               : TWordCount;
12021          i : Integer;          {i : Integer;}
12022  begin  begin
12023          IndividualForm := TIndividualAbonForm.Create(Self);          IndividualForm := TIndividualAbonForm.Create(Self);
12024          try          try
# Line 12193  begin Line 12229  begin
12229      Result := '';      Result := '';
12230      if Pos('about:blank..', AText) = 1 then begin      if Pos('about:blank..', AText) = 1 then begin
12231          wkInt := LastDelimiter( '/', AThreadURL );          wkInt := LastDelimiter( '/', AThreadURL );
12232          if Pos( '?', Copy( AThreadURL, wkInt, MaxInt ) ) = 0 then begin                  if Pos( '?', Copy( AThreadURL, wkInt, MaxInt ) ) = 0 then begin
12233              // Thread.URL は PATH_INFO 渡し              // Thread.URL は PATH_INFO 渡し
12234              Result := Copy( AThreadURL, 1,  LastDelimiter( '/', AThreadURL ) );              Result := Copy( AThreadURL, 1,  LastDelimiter( '/', AThreadURL ) );
12235              wkInt := LastDelimiter( '/', AText );              wkInt := LastDelimiter( '/', AText );

Legend:
Removed from v.1.511  
changed lines
  Added in v.1.511.2.21

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