OSDN Git Service

終了化で呼び出すダウロードスレッド群の処理を修正
[gikonavigoeson/gikonavi.git] / Option.pas
index 9b927bf..6d32fcc 100644 (file)
@@ -116,10 +116,7 @@ type
                 OpenMailerCheckBox: TCheckBox;
                 GroupBox6: TGroupBox;
                 LogDeleteMessageCheckBox: TCheckBox;
-                ResAnchorGroupBox: TGroupBox;
-                ResAnchorCheckBox: TCheckBox;
                 TabSheet1: TTabSheet;
-                PopupPositionRadioGroup: TRadioGroup;
                TabAddRadioGroup: TRadioGroup;
                 GroupBox8: TGroupBox;
                 Label14: TLabel;
@@ -205,6 +202,23 @@ type
     GroupBox20: TGroupBox;
     AutoSortCheckBox: TCheckBox;
     Label24: TLabel;
+    GroupBox21: TGroupBox;
+    StoredTaskTrayCB: TCheckBox;
+    GroupBox22: TGroupBox;
+    LoopBrowserTabsCB: TCheckBox;
+    GroupBox23: TGroupBox;
+    IgnoreContextCheckBox: TCheckBox;
+    GroupBox24: TGroupBox;
+    gppRightTopRB: TRadioButton;
+    gppTopRB: TRadioButton;
+    gppLeftTopRB: TRadioButton;
+    gppLeftRB: TRadioButton;
+    gppRightRB: TRadioButton;
+    gppLeftBottomRB: TRadioButton;
+    gppBottomRB: TRadioButton;
+    gppRighBottomRB: TRadioButton;
+    ResAnchorCheckBox: TCheckBox;
+    IgnoreLimitResCountCheckBox: TCheckBox;
                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure ApplyButtonClick(Sender: TObject);
@@ -271,6 +285,10 @@ type
                procedure SetAbonpropertys;
                procedure CSSSetContent(Content: string);
                procedure CSSPreview;
+               //! CSS\83v\83\8c\83r\83\85\81[\97pHTMLBody\90\90¬
+               function CreatePreviewBody(Res: array of TResRec): string;
+               //! CSS/SKIN\83v\83\8c\83r\83\85\81[\97pStyle\95\8e\9a\97ñ\8eæ\93¾
+               function GetPreviewUserStyle(): string;
        public
                { Public \90é\8c¾ }
        end;
@@ -295,6 +313,7 @@ const
        DEFAULT_TABFONT_NAME: string = '\82l\82\82o\83S\83V\83b\83N';
        DEFAULT_TABFONT_SIZE: Integer = 9;
        URL_TORA3: WideString = 'http://2ch.tora3.net/';
+       DEFAULT_CSS_FILENAME = 'default.css';
 
 {$R *.DFM}
 
@@ -661,7 +680,7 @@ begin
                FileList.Sort;
                for i := 0 to FileList.Count - 1 do begin
                        //s := ExtractFileName(FileList[i]);
-                       if LowerCase(FileList[i]) = 'default.css' then
+                       if LowerCase(FileList[i]) = DEFAULT_CSS_FILENAME then
                                Item := CSSListView.Items.Insert(0)
                        else
                                Item := CSSListView.Items.Add;
@@ -747,6 +766,8 @@ begin
 
        //\83\8d\83O\8dí\8f\9c\8e\9e\83\81\83b\83Z\81[\83W
        LogDeleteMessageCheckBox.Checked := GikoSys.Setting.DeleteMsg;
+    //\93¯ID\83\8c\83X\83A\83\93\83J\81[\95\\8e¦\82Ì\90§\8cÀ\90\94\89z\82¦\83\81\83b\83Z\81[\83W
+    IgnoreLimitResCountCheckBox.Checked := GikoSys.Setting.LimitResCountMessage;
 
        //\8fI\97¹\8e\9e\8am\94F\83_\83C\83A\83\8d\83O
        ShowDialogForEndCheckBox.Checked := GikoSys.Setting.ShowDialogForEnd;
@@ -759,15 +780,15 @@ begin
        BrowserMaxCombo.ItemIndex := Ord( GikoSys.Setting.BrowserAutoMaximize );
        //\83|\83b\83v\83A\83b\83v\88Ê\92u
        case GikoSys.Setting.PopupPosition of
-               gppRightTop:            PopupPositionRadioGroup.ItemIndex := 0;
-               gppRight:                       PopupPositionRadioGroup.ItemIndex := 1;
-               gppRightBottom: PopupPositionRadioGroup.ItemIndex := 2;
-               gppTop:                                 PopupPositionRadioGroup.ItemIndex := 3;
-               gppCenter:                      PopupPositionRadioGroup.ItemIndex := 4;
-               gppBottom:                      PopupPositionRadioGroup.ItemIndex := 5;
-               gppLeftTop:             PopupPositionRadioGroup.ItemIndex := 6;
-               gppLeft:                                PopupPositionRadioGroup.ItemIndex := 7;
-               gppLeftBottom:  PopupPositionRadioGroup.ItemIndex := 8;
+               gppRightTop:            gppRightTopRB.Checked := True;
+               gppRight:                       gppRightRB.Checked := True;
+               gppRightBottom:     gppRighBottomRB.Checked := True;
+               gppTop:                         gppTopRB.Checked := True;
+               gppCenter:                      gppTopRB.Checked := True; // \93Ç\82Ý\8d\9e\82Ý\82Å\95Ï\8a·\82µ\82Ä\82é\82Í\82¸
+               gppBottom:                      gppBottomRB.Checked := True;
+               gppLeftTop:             gppLeftTopRB.Checked := True;
+               gppLeft:                        gppLeftRB.Checked := True;
+               gppLeftBottom:      gppLeftBottomRB.Checked := True;
        end;
 
        //\94ñ\83A\83N\83e\83B\83u\8e\9e\83|\83b\83v\83A\83b\83v\95\\8e¦
@@ -859,6 +880,12 @@ begin
        BeAutoLoginCheckBox.Checked := GikoSys.Setting.BeAutoLogin;
        //\97\9a\97ð\82Ì\8dÅ\91å\95Û\91\90\94
        MaxRecordCountEdit.Text := IntToStr(GikoSys.Setting.MaxRecordCount);
+    // \8dÅ\8f¬\89»\8e\9e\82É\83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é\82©
+    StoredTaskTrayCB.Checked := GikoSys.Setting.StoredTaskTray;
+    // \83u\83\89\83E\83U\83^\83u\82Ì\88Ú\93®\82Å\83\8b\81[\83v\82ð\8b\96\89Â\82·\82é\82©
+    LoopBrowserTabsCB.Checked := GikoSys.Setting.LoopBrowserTabs;
+    //
+    IgnoreContextCheckBox.Checked := GikoSys.Setting.GestureIgnoreContext;
 end;
 
 procedure TOptionDialog.SaveSetting;
@@ -922,7 +949,7 @@ begin
        GikoSys.Setting.UseKatjushaType := UseKatjuTypeSkinCheckBox.Checked;
        //CSS\83t\83@\83C\83\8b\96¼
        tmp := GikoSys.Setting.CSSFileName;
-       GikoSys.Setting.CSSFileName := 'default.css';
+       GikoSys.Setting.CSSFileName := DEFAULT_CSS_FILENAME;
        if CSSListView.Items.Count > 0 then begin
                try
                        if CSSListView.Items[CSSListView.ItemIndex].Data <> nil then
@@ -1006,6 +1033,8 @@ begin
 
        GikoSys.Setting.OpenMailer := OpenMailerCheckBox.Checked;
        GikoSys.Setting.DeleteMsg := LogDeleteMessageCheckBox.Checked;
+    GikoSys.Setting.LimitResCountMessage := IgnoreLimitResCountCheckBox.Checked;
+
        //\8fI\97¹\8e\9e\8am\94F\83_\83C\83A\83\8d\83O
        GikoSys.Setting.ShowDialogForEnd := ShowDialogForEndCheckBox.Checked;
        //AllTabClose
@@ -1016,18 +1045,14 @@ begin
        // \83u\83\89\83E\83U\8dÅ\91å\89»
        GikoSys.Setting.BrowserAutoMaximize := TGikoBrowserAutoMaximize( BrowserMaxCombo.ItemIndex );
        //\83|\83b\83v\83A\83b\83v\88Ê\92u
-       case PopupPositionRadioGroup.ItemIndex of
-               0: GikoSys.Setting.PopupPosition := gppRightTop;
-               1: GikoSys.Setting.PopupPosition := gppRight;
-               2: GikoSys.Setting.PopupPosition := gppRightBottom;
-               3: GikoSys.Setting.PopupPosition := gppTop;
-               4: GikoSys.Setting.PopupPosition := gppCenter;
-               5: GikoSys.Setting.PopupPosition := gppBottom;
-               6: GikoSys.Setting.PopupPosition := gppLeftTop;
-               7: GikoSys.Setting.PopupPosition := gppLeft;
-               8: GikoSys.Setting.PopupPosition := gppLeftBottom;
-       end;
-
+    if (gppRightTopRB.Checked) then GikoSys.Setting.PopupPosition := gppRightTop;
+    if (gppRightRB.Checked) then GikoSys.Setting.PopupPosition := gppRight;
+    if (gppRighBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppRightBottom;
+    if (gppTopRB.Checked) then GikoSys.Setting.PopupPosition := gppTop;
+    if (gppBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppBottom;
+    if (gppLeftTopRB.Checked) then GikoSys.Setting.PopupPosition := gppLeftTop;
+    if (gppLeftRB.Checked) then GikoSys.Setting.PopupPosition := gppLeft;
+    if (gppLeftBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppLeftBottom;
        //\94ñ\83A\83N\83e\83B\83u\8e\9e\83|\83b\83v\83A\83b\83v\95\\8e¦
        GikoSys.Setting.UnActivePopup := UnActivePopupCheckBox.Checked;
        //\83\8c\83X\83|\83b\83v\83A\83b\83v\83{\81[\83\8b\83h\95\\8e¦
@@ -1146,6 +1171,10 @@ begin
                GikoSys.Setting.BeAutoLogin := BeAutoLoginCheckBox.Checked;
        //\97\9a\97ð\82Ì\8dÅ\91å\95Û\91\90\94
        GikoSys.Setting.MaxRecordCount := Max(StrToInt64Def(MaxRecordCountEdit.Text,100),1);
+    GikoSys.Setting.StoredTaskTray := StoredTaskTrayCB.Checked;
+    GikoSys.Setting.LoopBrowserTabs := LoopBrowserTabsCB.Checked;
+
+    GikoSys.Setting.GestureIgnoreContext := IgnoreContextCheckBox.Checked;
 end;
 
 procedure TOptionDialog.SettingApply;
@@ -1258,7 +1287,7 @@ end;
 function TOptionDialog.CheckFolder: Boolean;
 begin
        if Trim(LogFolderEdit.Text) = '' then
-               LogFolderEdit.Text := ExtractFilePath(Application.ExeName) + 'Log';
+               LogFolderEdit.Text := GikoSys.GetAppDir + 'Log';
 
        if DirectoryExists(LogFolderEdit.Text) then begin
                Result := True;
@@ -1481,14 +1510,12 @@ var
        ThreadItem: TThreadItem;
        html: string;
        Res: array [0..1] of TResRec;
-       UserOptionalStyle: string;
-       i: Integer;
        fileName: string;
 begin
 
        fileName := GikoSys.Setting.CSSFileName;
 
-       GikoSys.Setting.CSSFileName := 'default.css';
+       GikoSys.Setting.CSSFileName := DEFAULT_CSS_FILENAME;
        if CSSListView.Items.Count > 0 then begin
                try
                        if CSSListView.ItemIndex >= 0 then begin
@@ -1496,7 +1523,7 @@ begin
                                        GikoSys.Setting.CSSFileName := string( CSSListView.Items[CSSListView.ItemIndex].data )
                                else
                                        GikoSys.Setting.CSSFileName := CSSListView.Items[CSSListView.ItemIndex].Caption + '.css';
-                        end;
+                                               end;
                except
                end;
        end;
@@ -1521,31 +1548,6 @@ begin
                Res[1].FDateTime := 'ID:Sample';
                Res[1].FBody := '\83I\83}\83G\83\82\83i\81[';
 
-               // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
-               if CSSFontCheckBox.Checked then begin
-                       i := ColorToRGB( FCSSFont.Color );
-                       i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
-
-                       UserOptionalStyle := UserOptionalStyle +
-                               'font-family:"' + FCSSFont.Name + '";' +
-                               'font-size:' + IntToStr( FCSSFont.Size ) + 'pt;' +
-                               'color:#' + IntToHex( i, 6 ) + ';';
-                       if fsBold in FCSSFont.Style then
-                               UserOptionalStyle := UserOptionalStyle + 'font-weight:bold;'
-                       else
-                               UserOptionalStyle := UserOptionalStyle + 'font-weight:normal;';
-                       if fsItalic in FCSSFont.Style then
-                               UserOptionalStyle := UserOptionalStyle + 'font-style:italic;'
-                       else
-                               UserOptionalStyle := UserOptionalStyle + 'font-style:normal;';
-               end;
-               if CSSBackColorCheckBox.Checked then begin
-                       i := ColorToRGB( FCSSBackColor );
-                       i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
-
-                       UserOptionalStyle := UserOptionalStyle +
-                               'background-color:#' + IntToHex( i, 6 ) + ';';
-               end;
 
                if FileExists( GikoSys.GetSkinHeaderFileName ) then begin
                        html :=
@@ -1557,30 +1559,16 @@ begin
                                HTMLCreater.LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, 0 );
 
                        html := StringReplace( html, '</head>',
-                               '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>', [rfReplaceAll] );
+                               '<style type="text/css">body {' + GetPreviewUserStyle + '}</style></head>', [rfReplaceAll] );
                end else begin
                        html :=
-                               '<html><head>' +
-                               '<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' +
+                               '<html><head><meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' +
                                '<title>' + ThreadItem.Title + '</title>' +
                                '<link rel="stylesheet" href="' + GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName + '" type="text/css">' +
-                               '<style type="text/css">body {' + UserOptionalStyle + '}</style>' +
-                               '</head><body>' +
-                               '<div class="title">' + ThreadItem.Title + '</div>';
-
-                               for i := 0 to High( Res ) do
-                               begin
-                                       html := html +
-                                               '<div class="header"><span class="no">' + IntToStr( i + 1 ) + '</span>' +
-                                               '<span class="name_label"> \96¼\91O\81F </span>' +
-                                               '<a class="name_mail" href="mailto:' + Res[i].FMailTo + '">' +
-                                               '<b>' + Res[i].FName + '</b></a><span class="mail"> [' + Res[i].FMailTo + ']</span>' +
-                                               '<span class="date_label"> \93\8a\8de\93ú\81F</span>' +
-                                               '<span class="date"> ' + Res[i].FDateTime+ '</span></div>' +
-                                               '<div class="mes">' + Res[i].FBody + ' </div>';
-                               end;
-
-                               html := html + '</body></html>';
+                               '<style type="text/css">body {' + GetPreviewUserStyle + '}</style>' +
+                               '</head><body><div class="title">' + ThreadItem.Title + '</div>';
+
+                       html := html + CreatePreviewBody(Res) + '</body></html>';
                end;
 
                try
@@ -1595,7 +1583,57 @@ begin
        end;
 
 end;
+function TOptionDialog.CreatePreviewBody(Res: array of TResRec): string;
+var
+       i : Integer;
+begin
+       Result := '';
+       for i := 0 to High( Res ) do
+       begin
+               Result := Result +
+                       '<div class="header"><span class="no">' + IntToStr( i + 1 ) + '</span>' +
+                       '<span class="name_label"> \96¼\91O\81F </span>' +
+                       '<a class="name_mail" href="mailto:' + Res[i].FMailTo + '">' +
+                       '<b>' + Res[i].FName + '</b></a><span class="mail"> [' + Res[i].FMailTo + ']</span>' +
+                       '<span class="date_label"> \93\8a\8de\93ú\81F</span>' +
+                       '<span class="date"> ' + Res[i].FDateTime+ '</span></div>' +
+                       '<div class="mes">' + Res[i].FBody + ' </div>';
+       end;
+end;
+
+function TOptionDialog.GetPreviewUserStyle(): string;
+var
+       i : Integer;
+
+begin
+       Result := '';
+       // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
+       if CSSFontCheckBox.Checked then begin
+               i := ColorToRGB( FCSSFont.Color );
+               i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
+
+               Result := Result +
+                       'font-family:"' + FCSSFont.Name + '";' +
+                       'font-size:' + IntToStr( FCSSFont.Size ) + 'pt;' +
+                       'color:#' + IntToHex( i, 6 ) + ';';
+               if fsBold in FCSSFont.Style then
+                       Result := Result + 'font-weight:bold;'
+               else
+                       Result := Result + 'font-weight:normal;';
+               if fsItalic in FCSSFont.Style then
+                       Result := Result + 'font-style:italic;'
+               else
+                       Result := Result + 'font-style:normal;';
+       end;
+       if CSSBackColorCheckBox.Checked then begin
+               i := ColorToRGB( FCSSBackColor );
+               i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
+
+               Result := Result +
+                       'background-color:#' + IntToHex( i, 6 ) + ';';
+       end;
 
+end;
 procedure TOptionDialog.CSSListViewChange(Sender: TObject; Item: TListItem;
        Change: TItemChange);
 begin