OSDN Git Service

Setting.txt,head.txt, 板トップ画像をローカルに保存するようにした。
authorh677 <h677>
Sun, 11 Jul 2004 15:11:50 +0000 (15:11 +0000)
committerh677 <h677>
Sun, 11 Jul 2004 15:11:50 +0000 (15:11 +0000)
BoardGroup.pas
Editor.dfm
Editor.pas

index 7c818d6..3bada6b 100644 (file)
@@ -176,6 +176,12 @@ type
                FIntData                        : Integer;                      // \8dD\82«\82É\82¢\82\82Á\82Ä\82æ\82µ\81B\82¢\82ë\82ñ\82È\97p\93r\82É\8eg\82¤yo
                FListData                       : TList;                                // \8dD\82«\82É\82¢\82\82Á\82Ä\82æ\82µ\81B\82¢\82ë\82ñ\82È\97p\93r\82É\8eg\82¤yo
 
+               FSETTINGTXTTime: TDateTime;     //SETTING.TXT\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e
+               FIsSETTINGTXT:          boolean;        //SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82é\82©
+               FHEADTXTTime: TDateTime;                //HEAD.TXT\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e
+               FIsHEADTXT:             boolean;        //HEAD.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82é\82©
+        FTitlePictureURL:      string; //top\8aG\82ÌURL
+
                function GetThreadItem(index: integer): TThreadItem;
                procedure SetThreadItem(index: integer; value: TThreadItem);
                procedure SetRound(b: Boolean);
@@ -228,6 +234,9 @@ type
                function GetReadCgiURL: string;
                function GetSubjectFileName: string;
                function GetFolderIndexFileName: string;
+               function GetSETTINGTXTFileName: string;
+               function GETHEADTXTFileName: string;
+               function GetTitlePictureFileName: string;
                function GetSendURL: string;
 
                function GetNewThreadCount: Integer;
@@ -245,6 +254,13 @@ type
                property PON: string read FPON write FPON;
                property KotehanName: string read FKotehanName write SetKotehanName;
                property KotehanMail: string read FKotehanMail write SetKotehanMail;
+
+               property SETTINGTXTTime: TDateTime read FSETTINGTXTTime write FSETTINGTXTTime;
+               property IsSETTINGTXT:  boolean read FIsSETTINGTXT write FIsSETTINGTXT;
+               property HEADTXTTime: TDateTime read FHEADTXTTime write FHEADTXTTime;
+               property IsHEADTXT:     boolean read FIsHEADTXT write FIsHEADTXT;
+        property TitlePictureURL: string read FTitlePictureURL write FTitlePictureURL;
+
        end;
 
        //\83X\83\8c
@@ -377,6 +393,8 @@ const
        FOLDER_INDEX_FILENAME: string   = 'Folder.idx';
        SUBJECT_FILENAME:                       string  = 'subject.txt';
        PATH_DELIM:                                             string  = '\';
+       SETTINGTXT_FILENAME:            string = 'SETTING.TXT';
+    HEADTXT_FILENAME:          string = 'head.txt';
        //DEFAULT_LIST_COUNT:           Integer = 100;
 
 //     COLUMN_CATEGORY:         array[0..0] of string = ('\83J\83e\83S\83\8a\96¼');
@@ -985,40 +1003,27 @@ begin
        try
 //             Round := ini.ReadBool('Status', 'Round', False);
                tmp := ini.ReadString('Status', 'RoundDate', DateTimeToStr(ZERO_DATE));
-        FRoundDate := ConvertDateTimeString(tmp);
-        tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
-        FLastModified := ConvertDateTimeString(tmp);
-        tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
-        FLastGetTime := ConvertDateTimeString(tmp);
-
-        {
-               try
-                       FRoundDate := ini.ReadDateTime('Status', 'RoundDate', ZERO_DATE);
-        except
-            tmp := ini.ReadString('Status', 'RoundDate', DateTimeToStr(ZERO_DATE));
-               FRoundDate := StrToDateTime(ConvertDateTimeString(tmp));
-        end;
-        try
-               FLastModified := ini.ReadDateTime('Status', 'LastModified', ZERO_DATE);
-               except
-            tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
-               FLastModified := StrToDateTime(ConvertDateTimeString(tmp));
-        end;
-        try
-               FLastGetTime := ini.ReadDateTime('Status', 'LastGetTime', ZERO_DATE);
-        except
-            tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
-               FLastGetTime := StrToDateTime(ConvertDateTimeString(tmp));
-        end;
-        }
+               FRoundDate := ConvertDateTimeString(tmp);
+               tmp := ini.ReadString('Status', 'LastModified', DateTimeToStr(ZERO_DATE));
+               FLastModified := ConvertDateTimeString(tmp);
+               tmp := ini.ReadString('Status', 'LastGetTime', DateTimeToStr(ZERO_DATE));
+               FLastGetTime := ConvertDateTimeString(tmp);
+
+               tmp := ini.ReadString('BoardInformation', 'SETTINGTXTTime', DateTimeToStr(ZERO_DATE));
+               FSETTINGTXTTime := ConvertDateTimeString(tmp);
+               tmp := ini.ReadString('BoardInformation', 'HEADTXTTime', DateTimeToStr(ZERO_DATE));
+               FHEADTXTTime := ConvertDateTimeString(tmp);
+
+               FIsSETTINGTXT := ini.ReadBool('BoardInformation', 'IsSETTINGTXT', false);
+               FIsHEADTXT := ini.ReadBool('BoardInformation', 'IsHEADTXT', false);
+               FTitlePictureURL := ini.ReadString('BoardInformation', 'TitlePictureURL', '');
+
                FUnRead := ini.ReadInteger('Status', 'UnRead', 0);
                FSPID := ini.ReadString('Cookie', 'SPID', '');
                FPON := ini.ReadString('Cookie', 'PON', '');
                FKotehanName := ini.ReadString('Kotehan', 'Name', '');
                FKotehanMail := ini.ReadString('Kotehan', 'Mail', '');
-//             ListStyle := TViewStyle(Ord(ini.ReadInteger('Status', 'ListStyle', 3)));
-//             ItemNoVisible := ini.ReadBool('Status', 'ItemNoVisible', True);
-//             ViewType := TGikoViewType(Ord(ini.ReadInteger('Status', 'ViewType', 0)));
+
                if UnRead < 0 then
                        UnRead := 0;
        finally
@@ -1052,6 +1057,13 @@ begin
                ini.WriteString('Cookie', 'PON', FPON);
                ini.WriteString('Kotehan', 'Name', FKotehanName);
                ini.WriteString('Kotehan', 'Mail', FKotehanMail);
+
+               ini.WriteDateTime('BoardInformation', 'SETTINGTXTTime', FSETTINGTXTTime);
+               ini.WriteDateTime('BoardInformation', 'HEADTXTTime', FHEADTXTTime);
+
+               ini.WriteBool('BoardInformation', 'IsSETTINGTXT', FIsSETTINGTXT);
+               ini.WriteBool('BoardInformation', 'IsHEADTXT', FIsHEADTXT);
+               ini.WriteString('BoardInformation', 'TitlePictureURL', FTitlePictureURL);
 //             ini.WriteInteger('Status', 'ListStyle', Ord(ListStyle));
 //             ini.WriteBool('Status', 'ItemNoVisible', ItemNoVisible);
 //             ini.WriteInteger('Status', 'ViewType', Ord(ViewType));
@@ -1145,6 +1157,39 @@ begin
                Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
                                                + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + FOLDER_INDEX_FILENAME;
 end;
+//SETTING.TXT\82Ì\83t\83@\83C\83\8b\96¼\8eæ\93¾
+function TBoard.GetSETTINGTXTFileName: string;
+begin
+       if Length( FilePath ) > 0 then
+               Result := ExtractFilePath( FilePath ) + SETTINGTXT_FILENAME
+       else
+               Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+                                               + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + SETTINGTXT_FILENAME;
+end;
+
+function TBoard.GETHEADTXTFileName: string;
+begin
+       if Length( FilePath ) > 0 then
+               Result := ExtractFilePath( FilePath ) + HEADTXT_FILENAME
+       else
+               Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+                                               + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + HEADTXT_FILENAME;
+end;
+function TBoard.GetTitlePictureFileName: string;
+var
+       tmpName: string;
+begin
+       if FTitlePictureURL = '' then
+               Result := ''
+       else begin
+               tmpName := Copy(FTitlePictureURL, LastDelimiter('/', FTitlePictureURL) + 1, Length(FTitlePictureURL));
+               if Length( FilePath ) > 0 then
+                       Result := ExtractFilePath( FilePath ) + tmpName
+               else
+                       Result := IncludeTrailingPathDelimiter( GikoSys.Setting.LogFolder )
+                                                       + BBS2CH_LOG_FOLDER + PATH_DELIM + BBSID + PATH_DELIM + tmpName;
+       end;
+end;
 
 // \83X\83\8c\97§\82Ä\91\97\90MURL
 function TBoard.GetSendURL: string;
index bb9d41e..09baf6f 100644 (file)
@@ -36,7 +36,7 @@ object EditorForm: TEditorForm
   TextHeight = 12
   object StatusBar: TStatusBar
     Left = 0
-    Top = 327
+    Top = 335
     Width = 632
     Height = 19
     Panels = <
@@ -56,8 +56,8 @@ object EditorForm: TEditorForm
     Left = 0
     Top = 30
     Width = 632
-    Height = 297
-    ActivePage = HEADTab
+    Height = 305
+    ActivePage = BoardtopTab
     Align = alClient
     MultiLine = True
     TabIndex = 3
@@ -69,7 +69,7 @@ object EditorForm: TEditorForm
         Left = 0
         Top = 60
         Width = 624
-        Height = 210
+        Height = 218
         Align = alClient
         ScrollBars = ssBoth
         TabOrder = 0
@@ -168,66 +168,45 @@ object EditorForm: TEditorForm
         Left = 0
         Top = 0
         Width = 624
-        Height = 270
+        Height = 278
         Align = alClient
         TabOrder = 0
         OnStatusTextChange = BrowserStatusTextChange
         ControlData = {
-          4C0000007E400000E81B00000000000000000000000000000000000000000000
+          4C0000007E400000BB1C00000000000000000000000000000000000000000000
           000000004C000000000000000000000001000000E0D057007335CF11AE690800
           2B2E126208000000000000004C0000000114020000000000C000000000000046
           8000000000000000000000000000000000000000000000000000000000000000
           00000000000000000100000000000000000000000000000000000000}
       end
     end
-    object SETTINGTab: TTabSheet
-      Caption = 'SETTING.TXT'
+    object BoardInformationTab: TTabSheet
+      Caption = #26495#24773#22577
       ImageIndex = 2
-      object Browser1: TWebBrowser
+      object BoardInformationMemo: TMemo
         Left = 0
         Top = 0
         Width = 624
-        Height = 270
+        Height = 278
         Align = alClient
+        Lines.Strings = (
+          'BoardInformationMemo')
+        ScrollBars = ssVertical
         TabOrder = 0
-        ControlData = {
-          4C0000007E400000E81B00000000000000000000000000000000000000000000
-          000000004C000000000000000000000001000000E0D057007335CF11AE690800
-          2B2E126208000000000000004C0000000114020000000000C000000000000046
-          8000000000000000000000000000000000000000000000000000000000000000
-          00000000000000000100000000000000000000000000000000000000}
-      end
-    end
-    object HEADTab: TTabSheet
-      Caption = 'HEAD.TXT'
-      ImageIndex = 4
-      object Browser3: TWebBrowser
-        Left = 0
-        Top = 0
-        Width = 624
-        Height = 270
-        Align = alClient
-        TabOrder = 0
-        ControlData = {
-          4C0000007E400000E81B00000100000001020000000000000000000000000000
-          000000004C000000000000000000000001000000E0D057007335CF11AE690800
-          2B2E126208000000000000004C0000000114020000000000C000000000000046
-          8000000000000000000000000000000000000000000000000000000000000000
-          00000000000000000100000000000000000000000000000000000000}
       end
     end
     object BoardtopTab: TTabSheet
       Caption = #26495#12488#12483#12503
       ImageIndex = 3
-      object Browser2: TWebBrowser
+      object TitlePictureBrowser: TWebBrowser
         Left = 0
         Top = 0
         Width = 624
-        Height = 270
+        Height = 278
         Align = alClient
         TabOrder = 0
         ControlData = {
-          4C0000007E400000E81B00000000000000000000000000000000000000000000
+          4C0000007E400000BB1C00000000000000000000000000000000000000000000
           000000004C000000000000000000000001000000E0D057007335CF11AE690800
           2B2E126208000000000000004C0000000114020000000000C000000000000046
           8000000000000000000000000000000000000000000000000000000000000000
@@ -374,17 +353,8 @@ object EditorForm: TEditorForm
         AutoCheck = True
         GroupIndex = 1
       end
-      object SETTINGTXT1: TMenuItem
-        Caption = 'SETTING.TXT'
-        GroupIndex = 1
-        OnClick = SETTINGTXT1Click
-      end
-      object HEADTXT1: TMenuItem
-        Caption = 'HEAD.TXT'
-        GroupIndex = 1
-        OnClick = HEADTXT1Click
-      end
       object BoardTop: TMenuItem
+        AutoCheck = True
         Caption = #26495#12488#12483#12503
         GroupIndex = 1
         OnClick = BoardTopClick
@@ -409,6 +379,18 @@ object EditorForm: TEditorForm
         AutoCheck = True
       end
     end
+    object N3: TMenuItem
+      Caption = #26495#24773#22577
+      object SETTINGTXT2: TMenuItem
+        Action = GetSETTINGTXTAction
+      end
+      object headtxt2: TMenuItem
+        Action = GetheadtxtAction
+      end
+      object OP1: TMenuItem
+        Action = GetTitlePictureAction
+      end
+    end
   end
   object ToolBarImageList: TImageList
     Left = 72
@@ -1628,6 +1610,22 @@ object EditorForm: TEditorForm
       Caption = '&& '#8594' &&&amp;'
       OnExecute = AmpToCharRefActionExecute
     end
+    object GetSETTINGTXTAction: TAction
+      Category = #26495#24773#22577
+      Caption = 'SETTING.TXT'#21462#24471
+      OnExecute = GetSETTINGTXTActionExecute
+    end
+    object GetheadtxtAction: TAction
+      Category = #26495#24773#22577
+      Caption = 'head.txt'#21462#24471
+      OnExecute = GetheadtxtActionExecute
+    end
+    object GetTitlePictureAction: TAction
+      Category = #26495#24773#22577
+      Caption = #26495'TOP'#30011#20687#21462#24471
+      OnExecute = GetTitlePictureActionExecute
+      OnUpdate = GetTitlePictureActionUpdate
+    end
   end
   object IdLogDebug: TIdLogDebug
     OnReceive = IdLogDebugReceive
index 88bbcf8..0d0e0e0 100644 (file)
@@ -29,7 +29,7 @@ type
                CloseMenu: TMenuItem;
                N01: TMenuItem;
                StatusBar: TStatusBar;
-               EditorPage: TPageControl;
+       EditorPage: TPageControl;
                EditorTab: TTabSheet;
                PreviewTab: TTabSheet;
                Browser: TWebBrowser;
@@ -87,23 +87,26 @@ type
                SelectAllAction: TAction;
                N2: TMenuItem;
                SelectAll1: TMenuItem;
-    Timer1: TTimer;
-    QuotePasteAction: TAction;
-    QuotePasteMenuItem: TMenuItem;
-    C1: TMenuItem;
-    SpaceToNBSPAction: TAction;
-    AmpToCharRefAction: TAction;
-    SpaceTabnbsp1: TMenuItem;
-    amp1: TMenuItem;
-    SETTINGTab: TTabSheet; 
-                Browser1: TWebBrowser;
-                BoardtopTab: TTabSheet;
-                Browser2: TWebBrowser;
-    HEADTab: TTabSheet;
-    Browser3: TWebBrowser;
-    SETTINGTXT1: TMenuItem;
-    HEADTXT1: TMenuItem;
-    BoardTop: TMenuItem;
+       Timer1: TTimer;
+       QuotePasteAction: TAction;
+       QuotePasteMenuItem: TMenuItem;
+       C1: TMenuItem;
+       SpaceToNBSPAction: TAction;
+       AmpToCharRefAction: TAction;
+       SpaceTabnbsp1: TMenuItem;
+       amp1: TMenuItem;
+       BoardInformationTab: TTabSheet;
+                               BoardtopTab: TTabSheet;
+    TitlePictureBrowser: TWebBrowser;
+       BoardTop: TMenuItem;
+       BoardInformationMemo: TMemo;
+       GetSETTINGTXTAction: TAction;
+       GetheadtxtAction: TAction;
+       N3: TMenuItem;
+       SETTINGTXT2: TMenuItem;
+       headtxt2: TMenuItem;
+    GetTitlePictureAction: TAction;
+    OP1: TMenuItem;
 
                procedure EditorPageChange(Sender: TObject);
                procedure FormCreate(Sender: TObject);
@@ -137,16 +140,18 @@ type
                procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
                        AStream: TStream);
                procedure SelectAllActionExecute(Sender: TObject);
-    procedure StatusBarResize(Sender: TObject);
-    procedure Timer1Timer(Sender: TObject);
-    procedure FormActivate(Sender: TObject);
-    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+       procedure StatusBarResize(Sender: TObject);
+       procedure Timer1Timer(Sender: TObject);
+       procedure FormActivate(Sender: TObject);
+       procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
                procedure QuotePasteActionExecute(Sender: TObject);
-    procedure SpaceToNBSPActionExecute(Sender: TObject);
-    procedure AmpToCharRefActionExecute(Sender: TObject);
-    procedure SETTINGTXT1Click(Sender: TObject);
-    procedure HEADTXT1Click(Sender: TObject);
-    procedure BoardTopClick(Sender: TObject);
+       procedure SpaceToNBSPActionExecute(Sender: TObject);
+       procedure AmpToCharRefActionExecute(Sender: TObject);
+       procedure BoardTopClick(Sender: TObject);
+       procedure GetSETTINGTXTActionExecute(Sender: TObject);
+       procedure GetheadtxtActionExecute(Sender: TObject);
+    procedure GetTitlePictureActionUpdate(Sender: TObject);
+    procedure GetTitlePictureActionExecute(Sender: TObject);
        private
                FThreadItem: TThreadItem;
                FBoard: TBoard;
@@ -157,11 +162,11 @@ type
                FStatusCode: Integer;
                FDebugStrReceive: string;
                FDebugStrSend: string;
-        FSambaTime: TDateTime;
-        FHost: string;
+               FSambaTime: TDateTime;
+               FHost: string;
                FNow: TDateTime;
-                //Boolean
-                SettingVisible, HeadVisible, BoardTopVisible: Boolean;
+                               //Boolean
+                               SettingVisible, HeadVisible, BoardTopVisible: Boolean;
                procedure Preview;
                function RepHtml(s: string): string;
                function Check: Boolean;
@@ -178,26 +183,29 @@ type
                function GetSPID(CookieLine: string): string;
                function GetPON(CookieLine: string): string;
                function GetResultType(ResponseText: string): TGikoResultType;
-        procedure ReadSambaTime(const AHost: string);
-        procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
-        function ReadSettingTime(const AHost: string): Integer;
-        function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
+               procedure ReadSambaTime(const AHost: string);
+               procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
+               function ReadSettingTime(const AHost: string): Integer;
+               function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
                                procedure SetSamba24(AURL: string);
                /// \88ø\97p\95\84\82Ì\8eæ\93¾
                function GetOEIndentChar : string;
                /// \96{\95\82Ì\8eæ\93¾
                function GetBody : string;
-
+               //IdHttp\82Ì\8f\89\8aú\89»
+               procedure InitIdHTTP(http: TIdHTTP);
+               procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
+               function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+               procedure ShowTitlePicture();
        protected
                procedure CreateParams(var Params: TCreateParams); override;
        public
-                FBBSID: String;
+                               FBBSID: String;
                procedure SetFont;
                procedure SetThreadItem(Item: TThreadItem);
                procedure SetBoard(Item: TBoard);
-                property BBSID: string read FBBSID write FBBSID;
+                               property BBSID: string read FBBSID write FBBSID;
 
-                function GetFileName: string;
        end;
 
 implementation
@@ -363,42 +371,15 @@ begin
        SpaceToNBSPAction.Checked               := GikoSys.Setting.SpaceToNBSP;
        AmpToCharRefAction.Checked      := GikoSys.Setting.AmpToCharRef;
 
-        ini := TIniFile.Create(GetFileName);
-
-        try
-              BSettingTab := ini.ReadBool('EditorForm', 'SettingTab', False);
-              SettingVisible := ini.ReadBool('EditorForm', 'SettingTab', False);
-              BHeadTab :=  ini.ReadBool('EditorForm', 'HeadTab', False);
-              HeadVisible := ini.ReadBool('EditorForm', 'HeadTab', False);
-              BBoardTopTab := ini.Readbool('EditorForm', 'BoardTopTab', False);
-              BoardTopVisible := ini.ReadBool('EditorForm', 'BoardTopTab', False);
-        finally
-                ini.Free;
-        end;
-        //SETTING.TXT,\94Â\83g\83b\83v\81CHEAD.TXT\94ñ\95\\8e¦
-        if BSettingTab then begin
-                SettingTab.TabVisible := True;
-                SettingTxt1.Checked := True;
-        end else begin
-                SettingTab.TabVisible := False;
-                SettingTxt1.Checked := False;
-        end;
+               ini := TIniFile.Create(GikoSys.Setting.GetFileName);
 
-        if BHeadTab then begin
-                HeadTab.TabVisible := True;
-                HeadTxt1.Checked := True;
-        end else begin
-                HeadTab.TabVisible := False;
-                HeadTxt1.Checked := False;
-        end;
+               try
+                       BoardtopTab.TabVisible := ini.Readbool('EditorForm', 'BoardTopTab', False);
+                       BoardTop.Checked := BoardtopTab.TabVisible;
+               finally
+                       ini.Free;
+               end;
 
-        if BBoardTopTab then begin
-                BoardTopTab.TabVisible := True;
-                BoardTop.Checked := True;
-        end else begin
-                BoardTopTab.TabVisible := False;
-                BoardTop.Checked := False;
-        end;
 end;
 
 procedure TEditorForm.SetBoard(Item: TBoard);
@@ -409,7 +390,9 @@ begin
        MailComboBox.Text := FBoard.KotehanMail;
        SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
        TitlePanel.Visible := True;
-    SetSamba24('');
+       SetSamba24('');
+       ShowBoardInformation(FBoard, BoardInformationMemo);
+       ShowTitlePicture();
 end;
 
 procedure TEditorForm.SetThreadItem(Item: TThreadItem);
@@ -420,7 +403,9 @@ begin
        MailComboBox.Text := FThreadItem.ParentBoard.KotehanMail;
        SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
        TitlePanel.Visible := False;
-    SetSamba24(FThreadItem.ParentBoard.URL);
+       SetSamba24(FThreadItem.ParentBoard.URL);
+       ShowBoardInformation(FThreadItem.ParentBoard, BoardInformationMemo);
+       ShowTitlePicture();
 end;
 
 function TEditorForm.GetBody : string;
@@ -533,40 +518,41 @@ begin
        end else begin
                Browser.Navigate('about:blank');
        end;
-
-        if FThreadItem = nil then begin
-                URL := FBoard.GetSendURL;
-                RefURL := GikoSys.UrlToServer(FBoard.URL)
-                        + GikoSys.UrlToID(FBoard.URL)
-                        + '/';
-                RefeURL := RefURL + 'SETTING.TXT';
-                HeadURL := RefURL + 'head.txt';
-        end else begin
-                URL := FThreadItem.GetSendURL;
-                RefURL := GikoSys.UrlToServer(FThreadItem.ParentBoard.URL)
-                        + FThreadItem.ParentBoard.BBSID
-                        + '/';
-                RefeURL := RefURL + 'SETTING.TXT';
-                HeadURL := RefURL + 'head.txt';
-        end;
-
-        if EditorPage.ActivePage = SETTINGTab then begin
-                Browser1.Navigate(RefeURL);
-        end else begin
-                Browser1.Navigate('about:blank');
-        end;
-
-        if EditorPage.ActivePage = BoardtopTab then begin
-                Browser2.Navigate(RefURL);
-        end else begin
-                Browser2.Navigate('about:blank');
-        end;
-
-        if EditorPage.ActivePage = HEADTab then begin
-                Browser3.Navigate(HeadURL);
+{
+               if FThreadItem = nil then begin
+                               URL := FBoard.GetSendURL;
+                               RefURL := GikoSys.UrlToServer(FBoard.URL)
+                                               + GikoSys.UrlToID(FBoard.URL)
+                                               + '/';
+                               RefeURL := RefURL + 'SETTING.TXT';
+                               HeadURL := RefURL + 'head.txt';
+               end else begin
+                               URL := FThreadItem.GetSendURL;
+                               RefURL := GikoSys.UrlToServer(FThreadItem.ParentBoard.URL)
+                                               + FThreadItem.ParentBoard.BBSID
+                                               + '/';
+                               RefeURL := RefURL + 'SETTING.TXT';
+                               HeadURL := RefURL + 'head.txt';
+               end;
+}
+{        if EditorPage.ActivePage = SETTINGTab then begin
+                               Browser1.Navigate(RefeURL);
+               end else begin
+                               Browser1.Navigate('about:blank');
+               end;
+}
+{        if EditorPage.ActivePage = BoardtopTab then begin
+                               TitlePictureBrowser.Navigate(RefURL);
+               end else begin
+                               TitlePictureBrowser.Navigate('about:blank');
+               end;
+}
+{        if EditorPage.ActivePage = HEADTab then begin
+                               Browser3.Navigate(HeadURL);
         end else begin
                 Browser3.Navigate('about:blank');
         end;
+}
 end;
 
 procedure TEditorForm.BrowserStatusTextChange(Sender: TObject;
@@ -681,6 +667,26 @@ begin
                doc.Close;
        end;
 end;
+procedure TEditorForm.InitIdHTTP(http: TIdHTTP);
+begin
+       http.Request.Clear;
+       http.ProxyParams.BasicAuthentication := False;
+       if GikoSys.Setting.WriteProxy then begin
+               http.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
+               http.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
+               http.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
+               http.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
+               if GikoSys.Setting.ReadProxyUserID <> '' then
+                       http.ProxyParams.BasicAuthentication := True;
+       end else begin
+               http.ProxyParams.ProxyServer := '';
+               http.ProxyParams.ProxyPort := 80;
+               http.ProxyParams.ProxyUsername := '';
+               http.ProxyParams.ProxyPassword := '';
+       end;
+       Indy.Request.UserAgent := GikoSys.GetUserAgent;
+       Indy.Request.AcceptEncoding := '';
+end;
 
 procedure TEditorForm.Send(SPID: string; PON: string; FirstWriting: Boolean);
 var
@@ -710,7 +716,7 @@ begin
        else
                Board := FThreadItem.ParentBoard;
 
-       Indy.Request.Clear;
+{      Indy.Request.Clear;
        Indy.ProxyParams.BasicAuthentication := False;
        if GikoSys.Setting.WriteProxy then begin
                Indy.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
@@ -725,6 +731,8 @@ begin
                Indy.ProxyParams.ProxyUsername := '';
                Indy.ProxyParams.ProxyPassword := '';
        end;
+}
+       InitIdHTTP(Indy);
        if FThreadItem = nil then begin
                URL := FBoard.GetSendURL;
                RefURL := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
@@ -732,9 +740,9 @@ begin
                URL := FThreadItem.GetSendURL;
                RefURL := FThreadItem.URL;
        end;
-       Indy.Request.UserAgent := GikoSys.GetUserAgent;
+//     Indy.Request.UserAgent := GikoSys.GetUserAgent;
        Indy.Request.Referer := RefURL;
-       Indy.Request.AcceptEncoding := '';
+//     Indy.Request.AcceptEncoding := '';
 
        Cookie := '';
        if SPID <> '' then
@@ -1523,100 +1531,228 @@ begin
                Preview;
 end;
 
-procedure TEditorForm.SETTINGTXT1Click(Sender: TObject);
+procedure TEditorForm.BoardTopClick(Sender: TObject);
 var
-        ini: TIniFile;
-        SettingVisit: Boolean;
+       ini: TIniFile;
 begin
-        ini := TIniFile.Create(GetFileName);
+       ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+       try
+               BoardtopTab.TabVisible := BoardTop.Checked;
+               ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
+       finally
+               ini.Free;
+       end;
+end;
+
 
-        SettingVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
+var
+       URL, RefURL: string;
+       settingBody: TStringList;
+       tmpBoard: TBoard;
+begin
+       InitIdHTTP(Indy);
+       if FThreadItem = nil then
+               tmpBoard := FBoard
+       else
+               tmpBoard := FThreadItem.ParentBoard;
 
-        if SettingVisit then begin
-                SettingTab.TabVisible := True;
-                Settingtxt1.Checked := True;
+       if tmpBoard = nil then Exit;
 
-                try
-                        ini.WriteBool('EditorForm', 'SettingTab', True);
-                finally
-                        ini.Free;
-                end;
-        end else begin
-                SettingTab.TabVisible := False;
-                Settingtxt1.Checked := False;
-
-                try
-                        ini.WriteBool('EditorForm', 'SettingTab', False);
-                finally
-                        ini.Free;
-                end;
-        end;
+       RefURL  := tmpBoard.URL;
+       if RefURL[Length(RefURL)] <> '/' then
+               URL     := RefURL + '/' + 'SETTING.TXT'
+       else
+               URL     := RefURL + 'SETTING.TXT';
 
+       Indy.Request.LastModified := tmpBoard.SETTINGTXTTime;
+       Indy.Request.Referer := RefURL;
+       Screen.Cursor := crHourGlass;
+       settingBody := TStringList.Create;
+       try
+               StatusBar.Panels[0].Text := 'SETTING.TXT\83_\83E\83\93\83\8d\81[\83h\92\86';
+               settingBody.Text := Indy.Get(URL);
+               if( Indy.ResponseCode = 200 ) then begin
+                       settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
+                       tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
+                       tmpBoard.IsSETTINGTXT := true;
+                       tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
+            tmpBoard.Modified := true;
+               end;
+       finally
+               StatusBar.Panels[0].Text := 'SETTING.TXT (' + IntToStr(Indy.ResponseCode) + ')';
+               settingBody.Free;
+               Screen.Cursor := crDefault;
+       end;
+       ShowBoardInformation(tmpBoard, BoardInformationMemo);
 end;
 
-procedure TEditorForm.HEADTXT1Click(Sender: TObject);
+procedure TEditorForm.GetheadtxtActionExecute(Sender: TObject);
 var
-        ini: TIniFile;
-        HeadVisit: Boolean;
+       URL, RefURL: string;
+       settingBody: TStringList;
+       tmpBoard: TBoard;
 begin
-        ini := TIniFile.Create(GetFileName);
+       InitIdHTTP(Indy);
+       if FThreadItem = nil then
+               tmpBoard := FBoard
+       else
+               tmpBoard := FThreadItem.ParentBoard;
 
-        HeadVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+       if tmpBoard = nil then Exit;
 
-        if HeadVisit then begin
-                HeadTab.TabVisible := True;
-                HeadTXT1.Checked := True;
+       RefURL  := tmpBoard.URL;
+       if RefURL[Length(RefURL)] <> '/' then
+               URL     := RefURL + '/' + 'head.txt'
+       else
+               URL     := RefURL + 'head.txt';
 
-                try
-                        ini.WriteBool('EditorForm', 'HeadTab', True);
-                finally
-                        ini.Free;
-                end;
-        end else begin
-                HeadTab.TabVisible := False;
-                HeadTxt1.Checked := False;
-
-                try
-                        ini.WriteBool('EditorForm', 'HeadTab', False);
-                finally
-                        ini.Free;
-                end;
-        end;
+       Indy.Request.LastModified := tmpBoard.HEADTXTTime;
+       Indy.Request.Referer := RefURL;
+       Screen.Cursor := crHourGlass;
+       settingBody := TStringList.Create;
+       try
+               StatusBar.Panels[0].Text := 'head.txt\83_\83E\83\93\83\8d\81[\83h\92\86';
+               settingBody.Text := Indy.Get(URL);
+               if( Indy.ResponseCode = 200 ) then begin
+                       settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
+                       tmpBoard.HEADTXTTime := Indy.Response.LastModified;
+                       tmpBoard.IsHEADTXT := true;
+                       tmpBoard.Modified := true;
+               end;
+       finally
+               StatusBar.Panels[0].Text := 'head.txt (' + IntToStr(Indy.ResponseCode) + ')';
+               settingBody.Free;
+               Screen.Cursor := crDefault;
+       end;
+       ShowBoardInformation(tmpBoard, BoardInformationMemo);
 end;
 
-procedure TEditorForm.BoardTopClick(Sender: TObject);
+procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
 var
-        ini: TIniFile;
-        BoardTopVisit: Boolean;
+       body: TStringList;
+begin
+       AMemo.Clear;
+       AMemo.Lines.Add('[head.txt]');
+       if ABoard.IsHEADTXT then begin
+               if FileExists(ABoard.GETHEADTXTFileName)  then begin
+                       AMemo.Lines.Add(DateTimeToStr(ABoard.HEADTXTTime) + ' \8dX\90V');
+                       body := TStringList.Create;
+                       try
+                               body.LoadFromFile(ABoard.GETHEADTXTFileName);
+                               CustomStringReplace(body, '<br>', '', true);
+                               AMemo.Lines.AddStrings(body);
+                       finally
+                               body.Free;
+                       end;
+               end else begin
+                       ABoard.IsHEADTXT := false;
+                       ABoard.HEADTXTTime := ZERO_DATE;
+                       AMemo.Lines.Add('Local\82É\95Û\91\82³\82ê\82½head.txt\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+                       AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82­\82¾\82³\82¢\81B');
+               end;
+       end else begin
+               AMemo.Lines.Add('head.txt\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+               AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82­\82¾\82³\82¢\81B');
+       end;
+
+       AMemo.Lines.Add(#13#10 + '[SETTING.TXT]');
+       if ABoard.IsSETTINGTXT then begin
+               if FileExists(ABoard.GetSETTINGTXTFileName)  then begin
+                       AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + ' \8dX\90V');
+                       body := TStringList.Create;
+                       try
+                               body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
+                               AMemo.Lines.AddStrings(body);
+                       finally
+                               body.Free;
+                       end;
+               end else begin
+                       ABoard.IsSETTINGTXT := false;
+                       ABoard.SETTINGTXTTime := ZERO_DATE;
+                       AMemo.Lines.Add('Local\82É\95Û\91\82³\82ê\82½SETTING.TXT\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ');
+                       AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8dÄ\8eæ\93¾\82µ\82Ä\82­\82¾\82³\82¢\81B');
+               end;
+       end else begin
+               AMemo.Lines.Add('SETTING.TXT\82ð\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B');
+               AMemo.Lines.Add('\83\81\83j\83\85\81[\82æ\82è\8eæ\93¾\82µ\82Ä\82­\82¾\82³\82¢\81B');
+       end;
+end;
+function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
+//BBS_TITLE_PICTURE=
+//BBS_FIGUREHEAD=
+var
+       i: Integer;
+       tmp: string;
 begin
-        ini := TIniFile.Create(GetFileName);
-                                
-        BoardTopVisit := ini.ReadBool('EditorForm', 'SettingTab', False);
+       Result := '';
+       for i := 0 to body.Count - 1 do begin
+               if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
+                  (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
+                       tmp := body[i];
+                       Delete(tmp, 1, AnsiPos('=', tmp));
+                       if AnsiPos('../', tmp) > 0 then begin
+                               CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
+                       end;
+                       Result := tmp;
+                       Exit;
+               end;
+       end;
+end;
 
-        if BoardTopVisit then begin
-                BoardTopTab.TabVisible := True;
-                BoardTop.Checked := True;
+procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
+begin
+       if FThreadItem = nil then
+               GetTitlePictureAction.Enabled :=  FBoard.IsSETTINGTXT
+       else
+               GetTitlePictureAction.Enabled :=  FThreadItem.ParentBoard.IsSETTINGTXT;
 
-                try
-                        ini.WriteBool('EditorForm', 'BoardTopTab', True);
-                finally
-                        ini.Free;
-                end;
-        end else begin
-                BoardTopTab.TabVisible := False;
-                Boardtop.Checked := False;
-
-                try
-                        ini.WriteBool('EditorForm', 'BoardTopTab', False);
-                finally
-                        ini.Free;
-                end;
-        end;
 end;
 
-function TEditorForm.GetFileName: string;
+procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
+var
+       memStream: TMemoryStream;
+       tmpBoard: TBoard;
 begin
-       Result := ExtractFilePath(Application.ExeName) + 'gikonavi.ini';
+       InitIdHTTP(Indy);
+       memStream := TMemoryStream.Create;
+       try
+               if FThreadItem = nil then
+                       tmpBoard := FBoard
+               else
+                       tmpBoard := FThreadItem.ParentBoard;
+
+               Indy.Request.Referer := tmpBoard.URL;
+               if      tmpBoard.TitlePictureURL <> '' then begin
+                       StatusBar.Panels[0].Text := '\94ÂTOP\89æ\91\9c\83_\83E\83\93\83\8d\81[\83h\92\86';
+                       Screen.Cursor := crHourGlass;
+                       Indy.Get(tmpBoard.TitlePictureURL, memStream);
+                       if Indy.ResponseCode = 200 then begin
+                               memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
+                               ShowTitlePicture();
+                               tmpBoard.Modified := true;
+                  end;
+               end;
+       finally
+        Screen.Cursor := crDefault;
+               StatusBar.Panels[0].Text := '\94ÂTOP\89æ\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
+               memStream.Free;
+       end;
+
 end;
+procedure TEditorForm.ShowTitlePicture();
+var
+       tmpBoard: TBoard;
+begin
+       if FThreadItem = nil then
+               tmpBoard := FBoard
+       else
+               tmpBoard := FThreadItem.ParentBoard;
 
+       if FileExists(tmpBoard.GetTitlePictureFileName) then begin
+       TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
+       end else begin
+        TitlePictureBrowser.Navigate('about:blank');
+       end;
+end;
 end.