OSDN Git Service

1.57.0.742
[gikonavigoeson/gikonavi.git] / Editor.pas
index f8f81c2..275f8ec 100644 (file)
@@ -205,7 +205,6 @@ type
                FDebugStrReceive: string;
                FDebugStrSend: string;
                FNow: TDateTime;
-               FGestures       : TMouseGesture;
                FInputAssistKey: String;        ///< \93ü\97Í\83A\83V\83X\83g\82Ì\83L\81[
                FResistWords: TStringList;      ///< \93ü\97Í\83A\83V\83X\83g\82Ì\8e«\8f\91\82©\82ç\82Ì\8c\9f\8dõ\8c\8b\89Ê
         FSambaTimer: TSambaTimer;   ///< Samba\91Î\8dô\82Ì\83^\83C\83}\81[
@@ -266,6 +265,8 @@ type
             const PON : string; Board : TBoard) : string;
         //! fusiana\8cx\8d\90\83_\83C\83A\83\8d\83O
         function FusianaMsgBox: Integer;
+        //! sent.ini\83t\83@\83C\83\8b\82Ì\90\90¬
+        function CreateSentIniFile: TMemIniFile;
        protected
                procedure CreateParams(var Params: TCreateParams); override;
        public
@@ -388,19 +389,6 @@ begin
 
        // \83L\81[\90Ý\92è\82Ì\93Ç\82Ý\8d\9e\82Ý
        GikoSys.LoadKeySetting(ActionList, GikoSys.GetEditorKeyFileName);
-       // \83}\83E\83X\83W\83F\83X\83`\83\83\81[\82Ì\83C\83\93\83X\83g\81[\83\8b
-       if GikoSys.Setting.GestureEnabled then begin
-               MouseGesture.UnHook;
-               FGestures := TMouseGesture.Create;
-               GikoSys.Setting.Gestures.ClearGesture;
-
-               GikoSys.Setting.Gestures.LoadGesture(
-                       GikoSys.Setting.GetGestureFileName, ActionList );
-               MouseGesture.OnGestureStart := OnGestureStart;
-               MouseGesture.OnGestureMove := OnGestureMove;
-               MouseGesture.OnGestureEnd := OnGestureEnd;
-               MouseGesture.SetHook( Handle );
-       end;
        SaveNameMailAction.Checked := True;
 end;
 procedure TEditorForm.SetBoard(Item: TBoard);
@@ -633,13 +621,14 @@ end;
 procedure TEditorForm.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
        Action := caFree;
-    FSambaTimer.Free;
 end;
 
 procedure TEditorForm.FormDestroy(Sender: TObject);
 var
        wp: TWindowPlacement;
 begin
+    FSambaTimer.Free;
+    
        //\8dÅ\91å\89»\81E\83E\83B\83\93\83h\83E\88Ê\92u\95Û\91
        wp.length := sizeof(wp);
        GetWindowPlacement(Handle, @wp);
@@ -652,8 +641,6 @@ begin
        //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;      // \83X\83e\83C\8fó\91Ô\82Ì\95Û\91
        GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;   // \94¼\93§\96¾\8fó\91Ô\82Ì\95Û\91
 
-       FGestures.Free;
-
 end;
 
 procedure TEditorForm.SetNameList(sName, sMail: string);
@@ -1021,33 +1008,60 @@ var
        sDate: string;
        ini: TMemIniFile;
 begin
-       ini := TMemIniFile.Create(GikoSys.GetSentFileName);
-       try
-               sDate := IntToStr(GikoSys.DateTimeToInt(Now));
-
-               ini.WriteString(sDate, 'Name', NameComboBox.Text);
-               ini.WriteString(sDate, 'EMail', MailComboBox.Text);
-               ini.WriteString(sDate, 'Body', HttpEncode(BodyEdit.Text));
-               ini.WriteInteger(sDate, 'Status', FStatusCode);
-               ini.WriteDateTime(sDate, 'Date', Now);
-               if FThreadItem = nil then begin
-                       ini.WriteString(sDate, 'Title', MojuUtils.Sanitize(TitleEdit.Text));
-                       //ini.WriteString(sDate, 'BBS', FBoard.BBSID);
-            ini.WriteString(sDate, 'URL', FBoard.URL);
-                       ini.WriteInteger(sDate, 'NewThread', 1);
-               end else begin
-                       ini.WriteString(sDate, 'Title', FThreadItem.Title);
-                       //ini.WriteString(sDate, 'BBS', FThreadItem.ParentBoard.BBSID);
-            ini.WriteString(sDate, 'URL', FThreadItem.URL);
-                       ini.WriteString(sDate, 'Key', ChangeFileExt(FThreadItem.FileName, ''));
-               end;
+       ini := CreateSentIniFile;
+    if (ini <> nil) then begin
+        try
+            sDate := IntToStr(GikoSys.DateTimeToInt(Now));
+
+            ini.WriteString(sDate, 'Name', NameComboBox.Text);
+            ini.WriteString(sDate, 'EMail', MailComboBox.Text);
+            ini.WriteString(sDate, 'Body', HttpEncode(BodyEdit.Text));
+            ini.WriteInteger(sDate, 'Status', FStatusCode);
+            ini.WriteDateTime(sDate, 'Date', Now);
+            if FThreadItem = nil then begin
+                ini.WriteString(sDate, 'Title', MojuUtils.Sanitize(TitleEdit.Text));
+                //ini.WriteString(sDate, 'BBS', FBoard.BBSID);
+                ini.WriteString(sDate, 'URL', FBoard.URL);
+                ini.WriteInteger(sDate, 'NewThread', 1);
+            end else begin
+                ini.WriteString(sDate, 'Title', FThreadItem.Title);
+                //ini.WriteString(sDate, 'BBS', FThreadItem.ParentBoard.BBSID);
+                ini.WriteString(sDate, 'URL', FThreadItem.URL);
+                ini.WriteString(sDate, 'Key', ChangeFileExt(FThreadItem.FileName, ''));
+            end;
 
-               ini.UpdateFile;
-       finally
-               ini.Free;
-       end;
+            ini.UpdateFile;
+        finally
+            ini.Free;
+        end;
+    end;
+end;
+function TEditorForm.CreateSentIniFile: TMemIniFile;
+var
+    maxSize, fileSize, i: Integer;
+    newName: String;
+begin
+    Result := nil;
+    // MB -> bytes
+    maxSize := GikoSys.Setting.SentIniFileSize * 1024 * 1024;
+    // \83t\83@\83C\83\8b\83T\83C\83Y\82ª0\82Ì\8fê\8d\87\82Í\81Asent.ini\82É\8f\91\82«\8d\9e\82Ü\82È\82¢\82Ì\82Ånil\82ð\95Ô\82·
+    if (maxSize > 0) then begin
+        fileSize := GikoSys.GetFileSize(GikoSys.Setting.GetSentFileName);
+        // \8dÅ\91å\83T\83C\83Y\82ð\92´\82¦\82Ä\82¢\82½\8fê\8d\87\82Í\83\8a\83l\81[\83\80\82·\82é
+        if (fileSize >= maxSize) then begin
+            i := 0;
+            // \8d¡\82Ì\8e\9e\8d\8f\82ð\83t\83@\83C\83\8b\96¼\82Ì\8cã\82ë\82É\82Â\82¯\82é
+            repeat
+                // 10\89ñ\88È\8fã\8e¸\94s\82µ\82½\82ç\82 \82«\82ç\82ß\82é
+                if (i > 10) then break;
+                DateTimeToString(newName, 'yyhhnnsszzz', Now());
+                Inc(i);
+            until RenameFile(GikoSys.Setting.GetSentFileName,
+                GikoSys.Setting.GetSentFileName + '.' + newName);
+        end;
+        Result := TMemIniFile.Create(GikoSys.Setting.GetSentFileName);
+    end;
 end;
-
 procedure TEditorForm.SendActionExecute(Sender: TObject);
 const
        TITLE_SAMBA : string = 'Samba24\8cx\8d\90';
@@ -1409,12 +1423,13 @@ end;
 
 procedure TEditorForm.BoardTopClick(Sender: TObject);
 var
-       ini: TIniFile;
+       ini: TMemIniFile;
 begin
-       ini := TIniFile.Create(GikoSys.Setting.GetFileName);
+       ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
        try
                BoardtopTab.TabVisible := BoardTop.Checked;
                ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
+        ini.UpdateFile;
        finally
                ini.Free;
        end;
@@ -1724,11 +1739,13 @@ end;
 
 procedure TEditorForm.FormDeactivate(Sender: TObject);
 begin
-       if GikoSys.Setting.GestureEnabled then begin
-               MouseGesture.UnHook;
-               //MouseGesture.SetHook( GikoForm.Handle );
-       end;
-
+    if GikoSys.Setting.GestureEnabled then begin
+        GikoSys.Setting.Gestures.ClearGesture;
+        MouseGesture.UnHook;
+               MouseGesture.OnGestureStart := nil;
+               MouseGesture.OnGestureMove := nil;
+               MouseGesture.OnGestureEnd := nil;
+    end;
 end;
 
 procedure TEditorForm.OnGestureStart(Sender: TObject);
@@ -1757,6 +1774,7 @@ var
        Action: TAction;
 begin
        s := MouseGesture.GetGestureStr;
+    MouseGesture.Clear;
        Action := GikoSys.Setting.Gestures.GetGestureAction(s);
        if Action <> nil then
                Action.Execute;