OSDN Git Service

スレッドのレス番号のポップアップメニューのこのIDをNGワードに追加機能を追加
authorh677 <h677>
Sun, 5 Aug 2007 12:43:24 +0000 (12:43 +0000)
committerh677 <h677>
Sun, 5 Aug 2007 12:43:24 +0000 (12:43 +0000)
AbonUnit.pas
BoardGroup.pas
Giko.dfm
Giko.pas
GikoDataModule.dfm
GikoDataModule.pas
GikoSystem.pas
gikoNavi.res

index 484b75d..927c368 100644 (file)
@@ -115,6 +115,7 @@ type
        //--
        function TreatSyria(AString: string): string;
     //--
+    function AddToken(AString: string; Invisible: Boolean): Boolean;
   end;
 var
        Abon1 :TAbon;
@@ -905,6 +906,32 @@ begin
        Result := Result + AString;
 end;
 
+// NG\83\8f\81[\83h\83t\83@\83C\83\8b\82É\92Ç\89Á \92Ç\89Á\82³\82ê\82½\8fê\8d\87\81ATrue\82ª\82©\82¦\82é
+function TAbon.AddToken(AString: string; Invisible: Boolean): Boolean;
+var
+       bufStringList : TStringList;
+    ngword: String;
+begin
+    Result := False;
+    if FileExists(GetNGwordpath) then begin
+        bufStringList := TStringList.Create;
+        try
+            bufStringList.LoadFromFile(GetNGwordpath);
+            if (Invisible) then begin
+                ngword := #9 + AString;
+            end else begin
+                ngword := AString;
+            end;
+            if (bufStringList.IndexOf(ngword) = -1) then begin
+                bufStringList.Add(ngword);
+                bufStringList.SaveToFile(GetNGwordpath);
+                Result := True;
+            end;
+        finally
+            bufStringList.Free;
+        end;
+    end;
+end;
 
 
 end.
index d2ca8f4..f189df0 100644 (file)
@@ -1777,9 +1777,6 @@ begin
 end;
 
 function TThreadItem.GetCreateDate: TDateTime;
-var
-       unixtime: Int64;
-    tmp: string;
 begin
        // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\8dì\90¬\93ú\8e\9e\82ð\8b\81\82ß\82é
        try
index 628c9f0..3fcc5f0 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -8419,6 +8419,17 @@ object GikoForm: TGikoForm
       object N71: TMenuItem
         Action = GikoDM.IndividualAbonID0Action
       end
+      object N82: TMenuItem
+        Caption = '-'
+      end
+      object IDNG1: TMenuItem
+        Action = GikoDM.AddIDtoNGWord1Action
+        Caption = 'NG'#12527#12540#12489#12395#36861#21152
+      end
+      object IDNG2: TMenuItem
+        Action = GikoDM.AddIDtoNGWord0Action
+        Caption = 'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
+      end
     end
     object N52: TMenuItem
       Caption = #20491#21029#12354#12412#65374#12435#35299#38500
index 4544e12..b680e87 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -419,6 +419,9 @@ type
     N80: TMenuItem;
     SameBoardThreadItem: TMenuItem;
     N81: TMenuItem;
+    N82: TMenuItem;
+    IDNG1: TMenuItem;
+    IDNG2: TMenuItem;
                                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure BrowserStatusTextChange(Sender: TObject;
@@ -760,6 +763,8 @@ type
                procedure IndividualAbonID(Atype : Integer);
                //\82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ
                procedure IndividualAbon(Atag, Atype : Integer);
+        //\93¯\88êID\82ðNG\83\8f\81[\83h\82É\93o\98^
+        procedure AddIDtoNGWord(invisible : boolean);
                //\83u\83\89\83E\83U\82Ì\8dÄ\95`\89æ true:\91S\82Ä\82Ì\83^\83u false:\83A\83N\83e\83B\83u\82È\83^\83u\82Ì\82Ý
                procedure RepaintAllTabsBrowser();
                //\83\8a\83\93\83N\83o\81[\90Ý\92è
@@ -6631,7 +6636,7 @@ begin
 
 end;
 // *************************************************************************
-//! \82¨\8bC\82É\93ü\82è\83c\83\8a\81[\82Ì\83}\83E\83X\83A\83b\83v\83C\83x\83\93\83g
+//! \83X\83\8c\83b\83h\83u\83\89\83E\83U\83N\83\8a\83b\83N\83C\83x\83\93\83g
 // *************************************************************************
 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
 const
@@ -7112,6 +7117,60 @@ begin
        if ThreadItem <> nil then
                InsertBrowserTab( ThreadItem, True );
 end;
+//\93¯\88êID\82ðNG\83\8f\81[\83h\82É\93o\98^
+procedure TGikoForm.AddIDtoNGWord(invisible : boolean);
+var
+       ThreadItem : TThreadItem;
+       No : Integer;
+{$IFDEF SPAM_FILTER_ENABLED}
+       body : TStringList;
+       ReadList                : TStringList;
+       wordCount               : TWordCount;
+{$ENDIF}
+    id: String;
+begin
+       No := KokoPopupMenu.Tag;
+       if No = 0 then Exit;
+       ThreadItem := GetActiveContent(True);
+       if ThreadItem = nil then Exit;
+
+    id := GikoSys.GetResID(No, ThreadItem);
+    if (id <> '') and (not IsNoValidID(id)) then begin
+        if (GikoSys.FAbon.AddToken(id, invisible)) then begin
+            GikoSys.FAbon.ReLoadFromNGwordFile;
+            FActiveContent.Repaint := True;
+        end;
+    end else begin
+        ShowMessage('ID\82ð\8eæ\93¾\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B');
+    end;
+{$IFDEF SPAM_FILTER_ENABLED}
+    body := TStringList.Create;
+    try
+        GikoSys.GetSameIDRes(id, ThreadItem, body);
+        ReadList               := TStringList.Create;
+        wordCount              := TWordCount.Create;
+        try
+            // \83X\83p\83\80\82É\90Ý\92è
+            ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
+            for i := 0 to body.Count - 1 do begin
+                GikoSys.SpamCountWord( ReadList[ i ], wordCount );
+                GikoSys.SpamForget( wordCount, False );        // \83n\83\80\82ð\89ð\8f\9c
+                GikoSys.SpamLearn( wordCount, True );          // \83X\83p\83\80\82É\90Ý\92è
+            end;
+        finally
+            wordCount.Free;
+            ReadList.Free;
+        end;
+    finally
+        body.Free;
+    end;
+{$ENDIF}
+    if (FActiveContent.Repaint) then begin
+        ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
+        if ThreadItem <> nil then
+            InsertBrowserTab( ThreadItem, True );
+    end;
+end;
 
 //\93¯\88êID\82Ì\82 \82Ú\81`\82ñ
 procedure TGikoForm.IndividualAbonID(Atype : Integer);
index 8146ce4..5b4cf81 100644 (file)
@@ -1344,6 +1344,18 @@ object GikoDM: TGikoDM
       OnExecute = NewLinkToClipboardActionExecute
       OnUpdate = DependActiveCntentActionUpdate
     end
+    object AddIDtoNGWord0Action: TAction
+      Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
+      Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')'
+      Hint = #12524#12473#12398'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427#65288#36879#26126#65289
+      OnExecute = AddIDtoNGWord0ActionExecute
+    end
+    object AddIDtoNGWord1Action: TAction
+      Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503
+      Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152
+      Hint = 'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427
+      OnExecute = AddIDtoNGWord1ActionExecute
+    end
   end
   object ToobarImageList: TImageList
     Left = 44
index 49c09ad..a73086e 100644 (file)
@@ -237,6 +237,8 @@ type
     ScrollPageUpAction: TAction;
     AllLinkToClipboardAction: TAction;
     NewLinkToClipboardAction: TAction;
+    AddIDtoNGWord0Action: TAction;
+    AddIDtoNGWord1Action: TAction;
        procedure EditNGActionExecute(Sender: TObject);
        procedure ReloadActionExecute(Sender: TObject);
        procedure GoFowardActionExecute(Sender: TObject);
@@ -444,6 +446,8 @@ type
     procedure ScrollPageUpActionExecute(Sender: TObject);
     procedure AllLinkToClipboardActionExecute(Sender: TObject);
     procedure NewLinkToClipboardActionExecute(Sender: TObject);
+    procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
+    procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
   private
        { Private \90é\8c¾ }
        procedure ClearResFilter;
@@ -4436,6 +4440,16 @@ begin
 end;
 
 
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
+procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
+begin
+    GikoForm.AddIDtoNGWord(true);
+end;
+//! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
+procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
+begin
+    GikoForm.AddIDtoNGWord(false);
+end;
 
 end.
 
index 6e99c33..572526f 100644 (file)
@@ -219,7 +219,7 @@ type
                procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload;
                function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload;
                function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload;
-
+        function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
                //! \92P\8cê\89ð\90Í
                procedure SpamCountWord( const text : string; wordCount : TWordCount );
                //! \8aw\8fK\83N\83\8a\83A
@@ -2890,12 +2890,27 @@ end;
 }
 procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList);
 var
+       AID : String;
+begin
+    AID := GetResID(AIDNum, ThreadItem);
+    if not IsNoValidID(AID) then begin
+           GetSameIDRes(AID, ThreadItem, body);
+       end;
+end;
+{!
+\brief \93\8a\8de ID \8eæ\93¾
+\param AIDNum     \93\8a\8d\83\8c\83X\94Ô\8d\86
+\param ThreadItem \93\8a\8de\83X\83\8c\83b\83h
+\param body       OUT:\93\8a\8deID
+}
+function TGikoSys.GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String;
+var
        Res: TResRec;
        boardPlugIn : TBoardPlugIn;
-       AID : String;
        stList: TStringList;
        i : Integer;
 begin
+    Result := '';
        if (ThreadItem <> nil) and (ThreadItem.IsLogFile)
                and (AIDNum > 0) and (AIDNum <= ThreadItem.Count) then begin
                //if ThreadItem.IsBoardPlugInAvailable then begin
@@ -2907,21 +2922,21 @@ begin
                end else begin
                        THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res);
                end;
-               AID := Res.FDateTime;
-               if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin
-                       AID := Copy(AID, AnsiPos('id', AnsiLowerCase(AID)) - 1, 11);
-            if AnsiPos(' be:', AnsiLowerCase(AID)) > 0 then begin
-               AID := Copy(AID, 1, AnsiPos(' BE:', AnsiLowerCase(AID)) - 1)
+               Result := Res.FDateTime;
+               if AnsiPos('id', AnsiLowerCase(Result)) > 0 then begin
+                       Result := Copy(Result, AnsiPos('id', AnsiLowerCase(Result)) - 1, 11);
+            if AnsiPos(' be:', AnsiLowerCase(Result)) > 0 then begin
+               Result := Copy(Result, 1, AnsiPos(' BE:', AnsiLowerCase(Result)) - 1)
             end;
                end else begin
                        stlist := TStringList.Create;
                        try
-                               stList.DelimitedText := AID;
-                AID := '';
+                               stList.DelimitedText := Result;
+                Result := '';
                                for i := 0 to stList.Count - 1 do
                                        if Length(WideString(stList[i])) = 8 then begin
                                                if NotDateorTimeString(stList[i]) then begin
-                                                       AID := stList[i];
+                                                       Result := stList[i];
                                                        break;
                                                end;
                                        end;
@@ -2929,11 +2944,8 @@ begin
                                stList.Free;
                        end;
                end;
-        if not IsNoValidID(AID) then
-                       GetSameIDRes(AID, ThreadItem, body);
        end;
 end;
-
 {!
 \brief \93¯\82\93\8a\8de ID \82ð\8e\9d\82Â\83\8c\83X\82ð\83J\83E\83\93\83g
 \param AID        \8cÂ\90l\82ð\93Á\92è\82·\82é\93\8a\8de ID
index 98df00f..81e63ba 100644 (file)
Binary files a/gikoNavi.res and b/gikoNavi.res differ