OSDN Git Service

・メニューの開放に Delete ではなく Free を使うように。
[gikonavigoeson/gikonavi.git] / Editor.pas
index 72b1f44..c569832 100644 (file)
@@ -5,7 +5,12 @@ interface
 uses
        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, OleCtrls,
-       SHDocVw_TLB, ActiveX, {HTTPApp,} YofUtils, IniFiles, StrUtils,
+{$IF Defined(DELPRO) }
+       SHDocVw,
+{$ELSE}
+       SHDocVw_TLB,
+{$IFEND}
+       ActiveX, {HTTPApp,} YofUtils, Trip, IniFiles, StrUtils,
        GikoSystem, GikoUtil, ImgList, Clipbrd, BoardGroup,
        IdAntiFreezeBase,       IdAntiFreeze, IdBaseComponent, IdComponent,
        IdTCPConnection, IdTCPClient, IdHTTP, ActnList, StdActns, IdIntercept,
@@ -76,12 +81,12 @@ type
                TransAction: TAction;
                A1: TMenuItem;
                KotehanCheckBox: TCheckBox;
-    TitlePanel: TPanel;
+               TitlePanel: TPanel;
                Label1: TLabel;
                TitleEdit: TEdit;
-    SelectAllAction: TAction;
-    N2: TMenuItem;
-    SelectAll1: TMenuItem;
+               SelectAllAction: TAction;
+               N2: TMenuItem;
+               SelectAll1: TMenuItem;
                procedure EditorPageChange(Sender: TObject);
                procedure FormCreate(Sender: TObject);
                procedure BrowserStatusTextChange(Sender: TObject;
@@ -113,7 +118,7 @@ type
                        AStream: TStream);
                procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
                        AStream: TStream);
-    procedure SelectAllActionExecute(Sender: TObject);
+               procedure SelectAllActionExecute(Sender: TObject);
        private
                FThreadItem: TThreadItem;
                FBoard: TBoard;
@@ -204,9 +209,8 @@ end;}
 
 procedure TEditorForm.FormCreate(Sender: TObject);
 var
-//     i: Integer;
-       u32: Boolean;
        wp: TWindowPlacement;
+               hUser32 : HINST;
 begin
        FWork := False;
        Browser.Navigate('about:blank');
@@ -259,8 +263,14 @@ begin
        NameComboBox.Items.Assign(GikoSys.Setting.NameList);
        MailComboBox.Items.Assign(GikoSys.Setting.MailList);
        SetFont;
-       u32 := GetModuleHandle('User32.dll') <> 0;
-       TransAction.Enabled := u32;
+       //u32 := GetModuleHandle('User32.dll') <> 0;
+               hUser32 := LoadLibrary('User32.dll');
+               if hUser32 <> 0 then
+                       TransAction.Enabled := true
+               else
+                               TransAction.Enabled := false;
+               FreeLibrary(hUser32);
+
 end;
 
 procedure TEditorForm.SetBoard(Item: TBoard);
@@ -301,8 +311,8 @@ var
        Body: string;
        s: string;
 
-        posTrip : Integer;
-        temp1, temp2 : string;
+                               posTrip : Integer;
+                               tripOrigin : string;
 begin
        if FThreadItem = nil then begin
                No := '1';
@@ -329,19 +339,18 @@ begin
                        + '<BODY text="#000000" bgcolor="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' + #13#10
                        + '<FONT COLOR="#FF0000">' + title + '</FONT>' + #13#10
                        + '<DL>' + #13#10;
-        posTrip := Pos( '#', Namae );
-        if posTrip > 0 then
-        begin
-                //Namae := LeftStr( Namae, posTrip - 1 ) + '\81\9f' + get_2ch_trip( PChar( Copy( Namae, posTrip + 1, Length( Namae ) ) ) );
-                temp1 := Copy( Namae, 1, posTrip - 1 ) + '\81\9f';
-                temp2 := Copy( Namae, posTrip + 1, Length( Namae ) );
-                temp2 := get_2ch_trip( PChar( temp2 ) );
-                Namae := temp1 + temp2;
-        end;
+                               posTrip := Pos( '#', Namae );
+                               if posTrip > 0 then
+                               begin
+                                                               tripOrigin := Copy( Namae, posTrip + 1, Length( Namae ) );
+                                                               Namae :=
+                                                                                               Copy( Namae, 1, posTrip - 1 ) + '</B> \81\9f' +
+                                                                                               get_2ch_trip( PChar( tripOrigin ) ) + '<B>';
+                               end;
        if Mail = '' then
-               s := s + '<DT>' + No + ' \96¼\91O\81F <FONT color="forestgreen"><B>' + Namae + '</B></FONT> \93\8a\8de\93ú\81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10
+               s := s + '<DT>' + No + ' \81F <FONT color="forestgreen"><B>' + Namae + '</B></FONT> \81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10
        else
-               s := s + '<DT>' + No + ' \96¼\91O\81F <A href="mailto:' + Mail + '"><B>' + Namae + '</B></A> \93\8a\8de\93ú\81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10;
+               s := s + '<DT>' + No + ' \81F <A href="mailto:' + Mail + '"><B>' + Namae + '</B></A> [' + Mail + ']\81F ' + DateTime+ '<BR><DD>' + Body + '<BR><BR><BR>' + #13#10;
        s := s + '</BODY></HTML>';
        SetContent(s);
 end;
@@ -351,7 +360,7 @@ begin
 //     s := StringReplace(s, '&', '&amp;', [rfReplaceAll]);
        s := StringReplace(s, '<', '&lt;', [rfReplaceAll]);
        s := StringReplace(s, '>', '&gt;', [rfReplaceAll]);
-//     s := StringReplace(s, ' ', '&nbsp;', [rfReplaceAll]);  //\8ed\97l\95Ï\8dX\82É\82æ\82è&nbsp;\8eg\97p\95s\89Â
+//     s := StringReplace(s, ' ', '&nbsp;', [rfReplaceAll]);   //\8ed\97l\95Ï\8dX\82É\82æ\82è&nbsp;\8eg\97p\95s\89Â
        s := StringReplace(s, '"', '&quot;', [rfReplaceAll]);
        Result := s;
 end;
@@ -513,11 +522,7 @@ begin
                RefURL := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
        end else begin
                URL := FThreadItem.GetSendURL;
-               RefURL := GikoSys.UrlToServer(FThreadItem.ParentBoard.URL)
-                                               + 'test/read.cgi/'
-                                               + FThreadItem.ParentBoard.BBSID
-                                               + '/' + ChangeFileExt(FThreadItem.FileName, '')
-                                               + '/l50';
+               RefURL := FThreadItem.URL;
        end;
        Indy.Request.UserAgent := GikoSys.GetUserAgent;
        Indy.Request.Referer := RefURL;
@@ -670,17 +675,17 @@ begin
        if AnsiPos('\8f\91\82«\82±\82Ý\82ª\8fI\82í\82è\82Ü\82µ\82½', ResponseText) <> 0 then
                Result := grtOK
        else if (AnsiPos('\83N\83b\83L\81[\82ª\82È\82¢\82©\8aú\8cÀ\90Ø\82ê\82Å\82·', ResponseText) > 0) or
-                                       (AnsiPos('<title>\83N\83b\83L\81[\8am\94F\81I</title>', ResponseText) > 0)  or
-                                       (AnsiPos('<title>\81¡\83N\83b\83L\81[\8am\94F\81I\81¡</title>', ResponseText) > 0)  or
+                                       (AnsiPos('<title>\83N\83b\83L\81[\8am\94F\81I</title>', ResponseText) > 0)    or
+                                       (AnsiPos('<title>\81¡\83N\83b\83L\81[\8am\94F\81I\81¡</title>', ResponseText) > 0)        or
                                        //(AnsiPos('\83N\83b\83L\81[\8am\94F', ResponseText) > 0) or
-                                       (AnsiPos(RES2CH_COOKIE, ResponseText) > 0)  then
+                                       (AnsiPos(RES2CH_COOKIE, ResponseText) > 0)      then
                Result := grtCookie
-       else if (AnsiPos('<font size=+2 color=#FF0000>\8f\91\82«\8d\9e\82Ý\83`\83F\83b\83N\81I </font>', ResponseText) > 0)  or
-                                       (AnsiPos('<title>\81¡ \8f\91\82«\8d\9e\82Ý\8am\94F\82µ\82Ü\82· \81¡</title>', ResponseText) > 0)  or
-                                       (AnsiPos('<title>\93\8a\8de\8am\94F</title>', ResponseText) > 0)  or
-                                       (AnsiPos('<b>\8f\91\82«\82±\82Ý\8am\94F</b>', ResponseText) > 0)  or
-                                       (AnsiPos('="../test/subbbs.cgi">', ResponseText) > 0)  or
-                                       (AnsiPos(RES2CH_FALSE, ResponseText) > 0)  then
+       else if (AnsiPos('<font size=+2 color=#FF0000>\8f\91\82«\8d\9e\82Ý\83`\83F\83b\83N\81I </font>', ResponseText) > 0)   or
+                                       (AnsiPos('<title>\81¡ \8f\91\82«\8d\9e\82Ý\8am\94F\82µ\82Ü\82· \81¡</title>', ResponseText) > 0)  or
+                                       (AnsiPos('<title>\93\8a\8de\8am\94F</title>', ResponseText) > 0)  or
+                                       (AnsiPos('<b>\8f\91\82«\82±\82Ý\8am\94F</b>', ResponseText) > 0)      or
+                                       (AnsiPos('="../test/subbbs.cgi">', ResponseText) > 0)   or
+                                       (AnsiPos(RES2CH_FALSE, ResponseText) > 0)       then
                Result := grtCheck
        else
                Result := grtError;
@@ -767,6 +772,7 @@ procedure TEditorForm.SendActionExecute(Sender: TObject);
 var
        Board: TBoard;
        rc: Integer;
+       state : TGikoDownloadState;
 begin
        if FWork then
                Exit;
@@ -798,7 +804,42 @@ begin
                        Board.KotehanName := NameComboBox.Text;
                        Board.KotehanMail := MailComboBox.Text;
                end;
-               Send(Board.SPID, Board.PON, True);
+
+               if Board.IsBoardPlugInAvailable then begin
+                       if FThreadItem = nil then begin
+                               // \83X\83\8c\97§\82Ä
+                               state := TGikoDownloadState( Board.BoardPlugIn.CreateThread(
+                                       DWORD( Board ), TitleEdit.Text, NameComboBox.Text, MailComboBox.Text, BodyEdit.Text ) );
+
+                               if state = gdsComplete then begin
+                                       GikoForm.PlaySound('ResEnd');
+                                       SaveSendFile;
+                                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8fI\97¹]', nil, gmiOK);
+                                       Close;
+                               end else if State = gdsError then begin
+                                       GikoForm.AddMessageList(FBoard.Title + ' [\90V\83X\83\8c\91\97\90M\8e¸\94s]', nil, gmiNG);
+                               end else if State = gdsAbort then begin
+                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
+                               end;
+                       end else begin
+                               // \83\8c\83X
+                               state := TGikoDownloadState( FThreadItem.BoardPlugIn.WriteThread(
+                                       DWORD( FThreadItem ), NameComboBox.Text, MailComboBox.Text, BodyEdit.Text ) );
+
+                               if state = gdsComplete then begin
+                                       GikoForm.PlaySound('ResEnd');
+                                       SaveSendFile;
+                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8fI\97¹]', nil, gmiOK);
+                                       Close;
+                               end else if State = gdsError then begin
+                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\83\8c\83X\91\97\90M\8e¸\94s]', nil, gmiNG);
+                               end else if State = gdsAbort then begin
+                                       GikoForm.AddMessageList(FThreadItem.Title + ' [\92\86\92f]', nil, gmiSAD);
+                               end;
+                       end;
+               end else begin
+                       Send(Board.SPID, Board.PON, True);
+               end;
        finally
                FWork := False;
        end;