OSDN Git Service

終了化で呼び出すダウロードスレッド群の処理を修正
[gikonavigoeson/gikonavi.git] / Editor.pas
index f8f81c2..afd5a03 100644 (file)
@@ -266,6 +266,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
@@ -1021,33 +1023,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 +1438,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;
@@ -1757,6 +1787,7 @@ var
        Action: TAction;
 begin
        s := MouseGesture.GetGestureStr;
+    MouseGesture.Clear;
        Action := GikoSys.Setting.Gestures.GetGestureAction(s);
        if Action <> nil then
                Action.Execute;