ギコナビ
リビジョン | a6195bc646f63a1b3a8a75a8133ce19c2a7f5dbb (tree) |
---|---|
日時 | 2005-12-28 02:12:57 |
作者 | cvs2git <cvs2git> |
コミッター | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_51_0_624'.
@@ -374,6 +374,7 @@ var | ||
374 | 374 | pos : Integer; |
375 | 375 | buftoken : String; |
376 | 376 | begin |
377 | + pos := 0; | |
377 | 378 | bufstl := TStringList.Create; |
378 | 379 | try |
379 | 380 | if Length(argline) > 0 then begin |
@@ -90,7 +90,6 @@ type | ||
90 | 90 | property NodeExpand: Boolean read FExpand write FExpand; |
91 | 91 | end; |
92 | 92 | |
93 | - | |
94 | 93 | // Â(Xbh URL ÌXg) |
95 | 94 | // TBoard = class(THashedStringList) |
96 | 95 | TBoard = class(TStringList) |
@@ -459,11 +458,10 @@ function BBSsFindThreadFromURL( | ||
459 | 458 | ) : TThreadItem; |
460 | 459 | var |
461 | 460 | board : TBoard; |
462 | - tmpThread : TThreadItem; | |
463 | 461 | boardURL : string; |
464 | 462 | protocol, host, path, document, port, bookmark : string; |
465 | 463 | BBSID, BBSKey : string; |
466 | - i, bi : Integer; | |
464 | +// i : Integer; | |
467 | 465 | begin |
468 | 466 | |
469 | 467 | boardURL := GikoSys.GetThreadURL2BoardURL( inURL ); |
@@ -477,26 +475,6 @@ begin | ||
477 | 475 | GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark ); |
478 | 476 | GikoSys.Parse2chURL( inURL, path, document, BBSID, BBSKey ); |
479 | 477 | Result := board.FindThreadFromFileName(BBSKey + '.dat'); |
480 | - end else if (Result = nil) and not (board.Is2ch) then begin | |
481 | - //vOCnÌTõiåÉURLªrÅÏXÉÈÁ½Þ) | |
482 | - try | |
483 | - bi := Length(BoardGroups) - 1; | |
484 | - for i := 1 to bi do begin | |
485 | - if (BoardGroups[i].BoardPlugIn <> nil) and (Assigned(Pointer(BoardGroups[i].BoardPlugIn.Module))) then begin | |
486 | - if BoardGroups[i].BoardPlugIn.AcceptURL( inURL ) = atThread then begin | |
487 | - tmpThread := TThreadItem.Create( BoardGroups[i].BoardPlugIn, Board, inURL ); | |
488 | - if not board.IsThreadDatRead then begin | |
489 | - GikoSys.ReadSubjectFile( board ); | |
490 | - end; | |
491 | - Result := Board.FindThreadFromFileName( tmpThread.FileName ); | |
492 | - tmpThread.Free; | |
493 | - Break; | |
494 | - end; | |
495 | - end; | |
496 | - end; | |
497 | - except | |
498 | - Result := nil; | |
499 | - end; | |
500 | 478 | end; |
501 | 479 | end; |
502 | 480 |
@@ -1905,14 +1883,8 @@ procedure TThreadItem.SetUnRead(b: Boolean); | ||
1905 | 1883 | begin |
1906 | 1884 | if FUnRead = b then Exit; |
1907 | 1885 | FUnRead := b; |
1908 | - if FUpdate and (ParentBoard <> nil) then begin | |
1886 | + if FUpdate and (ParentBoard <> nil) then | |
1909 | 1887 | ParentBoard.FModified := True; |
1910 | - if FUnRead then begin | |
1911 | - ParentBoard.UnRead := ParentBoard.UnRead + 1; | |
1912 | - end else begin | |
1913 | - ParentBoard.UnRead := ParentBoard.UnRead - 1; | |
1914 | - end; | |
1915 | - end; | |
1916 | 1888 | end; |
1917 | 1889 | |
1918 | 1890 | procedure TThreadItem.SetScrollTop(i: Integer); |
@@ -106,7 +106,7 @@ object EditorForm: TEditorForm | ||
106 | 106 | Width = 149 |
107 | 107 | Height = 20 |
108 | 108 | DropDownCount = 20 |
109 | - ItemHeight = 12 | |
109 | + ItemHeight = 0 | |
110 | 110 | TabOrder = 0 |
111 | 111 | end |
112 | 112 | object MailComboBox: TComboBox |
@@ -115,7 +115,7 @@ object EditorForm: TEditorForm | ||
115 | 115 | Width = 149 |
116 | 116 | Height = 20 |
117 | 117 | DropDownCount = 20 |
118 | - ItemHeight = 12 | |
118 | + ItemHeight = 0 | |
119 | 119 | TabOrder = 1 |
120 | 120 | OnChange = MailComboBoxChange |
121 | 121 | end |
@@ -358,12 +358,6 @@ object EditorForm: TEditorForm | ||
358 | 358 | object N01: TMenuItem |
359 | 359 | Caption = '-' |
360 | 360 | end |
361 | - object Samba241: TMenuItem | |
362 | - Action = UpdateSambaAction | |
363 | - end | |
364 | - object N7: TMenuItem | |
365 | - Caption = '-' | |
366 | - end | |
367 | 361 | object CloseMenu: TMenuItem |
368 | 362 | Action = CloseAction |
369 | 363 | end |
@@ -1726,13 +1720,6 @@ object EditorForm: TEditorForm | ||
1726 | 1720 | OnExecute = BeLogInOutEActionExecute |
1727 | 1721 | OnUpdate = BeLogInOutEActionUpdate |
1728 | 1722 | end |
1729 | - object UpdateSambaAction: TAction | |
1730 | - Category = #12501#12449#12452#12523 | |
1731 | - Caption = 'Samba24'#12398#35373#23450#20516#12434#26356#26032#12377#12427 | |
1732 | - Hint = 'Samba24'#12398#35373#23450#20516#12434#26356#26032#12377#12427 | |
1733 | - OnExecute = UpdateSambaActionExecute | |
1734 | - OnUpdate = UpdateSambaActionUpdate | |
1735 | - end | |
1736 | 1723 | end |
1737 | 1724 | object IdLogDebug: TIdLogDebug |
1738 | 1725 | OnReceive = IdLogDebugReceive |
@@ -124,9 +124,6 @@ type | ||
124 | 124 | SaveNameMailAction: TAction; |
125 | 125 | ToolButton7: TToolButton; |
126 | 126 | BeLogInOutEAction: TAction; |
127 | - UpdateSambaAction: TAction; | |
128 | - Samba241: TMenuItem; | |
129 | - N7: TMenuItem; | |
130 | 127 | |
131 | 128 | procedure EditorPageChange(Sender: TObject); |
132 | 129 | procedure FormCreate(Sender: TObject); |
@@ -179,8 +176,6 @@ type | ||
179 | 176 | procedure SaveNameMailActionExecute(Sender: TObject); |
180 | 177 | procedure BeLogInOutEActionExecute(Sender: TObject); |
181 | 178 | procedure BeLogInOutEActionUpdate(Sender: TObject); |
182 | - procedure UpdateSambaActionUpdate(Sender: TObject); | |
183 | - procedure UpdateSambaActionExecute(Sender: TObject); | |
184 | 179 | private |
185 | 180 | FThreadItem: TThreadItem; |
186 | 181 | FBoard: TBoard; |
@@ -210,18 +205,24 @@ type | ||
210 | 205 | procedure SaveSendFile; |
211 | 206 | procedure SetContent(Content: string; ABrowser: TWebBrowser); |
212 | 207 | function GetResultType(ResponseText: string): TGikoResultType; |
208 | + | |
209 | + procedure ReadSambaTime(const AHost: string); overload; | |
210 | + procedure WriteSambaTime(const AHost: string; ATime: TDateTime); overload; | |
211 | + function ReadSettingTime(const AHost: string): Integer; overload; | |
212 | + function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean; overload; | |
213 | + procedure SetSamba24(AURL: string); overload; | |
214 | + | |
213 | 215 | //SambaÌÔðÇÝÞ |
214 | - procedure ReadSambaTime(const AHost: string); | |
216 | + procedure ReadSambaTime(); overload; | |
215 | 217 | //SambaÉÔð«Þ |
216 | - procedure WriteSambaTime(const AHost: string; ATime: TDateTime); | |
218 | + procedure WriteSambaTime(ATime: TDateTime); overload; | |
217 | 219 | //SambaÌÝèlðÇÝÞ |
218 | - function ReadSettingTime(const AHost: string): Integer; | |
220 | + function ReadSettingTime(): Integer ; overload; | |
219 | 221 | //SambaÉøÁ©©é©¸·é |
220 | - function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean; | |
222 | + function CheckSambaTime(ATime: TDateTime): Boolean; overload; | |
221 | 223 | //SambaÌÝèlð«Þ |
222 | - procedure SetSamba24(AURL: string); | |
223 | - //SambaÌÝèlðXV·é | |
224 | - procedure UpdateSamba(const AHost: String; value: Integer); | |
224 | + procedure SetSamba24(); overload; | |
225 | + | |
225 | 226 | /// øpÌæ¾ |
226 | 227 | function GetOEIndentChar : string; |
227 | 228 | /// {¶Ìæ¾ |
@@ -258,7 +259,7 @@ type | ||
258 | 259 | implementation |
259 | 260 | |
260 | 261 | uses |
261 | - Giko, ItemDownload, MojuUtils, IdGlobal, GikoMessage; | |
262 | + Giko, ItemDownload, MojuUtils, IdGlobal; | |
262 | 263 | const |
263 | 264 | CAPTION_NAME_NEW: string = 'MRir X§ÄGfB^'; |
264 | 265 | CAPTION_NAME_RES: string = 'MRir XGfB^'; |
@@ -967,7 +968,7 @@ begin | ||
967 | 968 | if MsgResult = IDNO then begin |
968 | 969 | Board.SPID := ''; |
969 | 970 | Board.PON := ''; |
970 | - FWork := false; | |
971 | + FWork := false; | |
971 | 972 | EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED); |
972 | 973 | DrawMenuBar(Handle); |
973 | 974 | Exit; |
@@ -976,7 +977,7 @@ begin | ||
976 | 977 | end; |
977 | 978 | |
978 | 979 | if ResultType = grtOK then begin |
979 | - if (GikoSys.Setting.UseSamba) and (Timer1.Enabled) then | |
980 | + if GikoSys.Setting.UseSamba then | |
980 | 981 | WriteSambaTime(FHost, Now()); |
981 | 982 | State := gdsComplete; |
982 | 983 | end else if ResultType = grtCookie then begin |
@@ -1045,8 +1046,8 @@ begin | ||
1045 | 1046 | Exit; |
1046 | 1047 | end; |
1047 | 1048 | end else begin |
1048 | - if (GikoSys.Setting.UseSamba) and (Timer1.Enabled) then | |
1049 | - WriteSambaTime(FHost, Now()); | |
1049 | + if GikoSys.Setting.UseSamba then | |
1050 | + WriteSambaTime(FHost, Now()); | |
1050 | 1051 | State := gdsError; |
1051 | 1052 | raise Exception.Create(''); |
1052 | 1053 | end; |
@@ -1097,9 +1098,9 @@ begin | ||
1097 | 1098 | GikoForm.PlaySound('ResEnd'); |
1098 | 1099 | SaveSendFile; |
1099 | 1100 | if FThreadItem = nil then |
1100 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1101 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1101 | 1102 | else |
1102 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1103 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1103 | 1104 | Close; |
1104 | 1105 | Exit; |
1105 | 1106 | end; |
@@ -1107,20 +1108,20 @@ begin | ||
1107 | 1108 | GikoForm.PlaySound('ResEnd'); |
1108 | 1109 | SaveSendFile; |
1109 | 1110 | if FThreadItem = nil then |
1110 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1111 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1111 | 1112 | else |
1112 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1113 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1113 | 1114 | Close; |
1114 | 1115 | end else if State = gdsError then begin |
1115 | 1116 | if FThreadItem = nil then |
1116 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1117 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1117 | 1118 | else |
1118 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1119 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1119 | 1120 | |
1120 | 1121 | EditorPage.ActivePage := PreviewTab; |
1121 | 1122 | SetContent(ResponseText, Browser); |
1122 | 1123 | end else if State = gdsAbort then begin |
1123 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiSAD); | |
1124 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiSAD); | |
1124 | 1125 | end; |
1125 | 1126 | end; |
1126 | 1127 |
@@ -1279,13 +1280,13 @@ begin | ||
1279 | 1280 | if state = gdsComplete then begin |
1280 | 1281 | GikoForm.PlaySound('ResEnd'); |
1281 | 1282 | SaveSendFile; |
1282 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK); | |
1283 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK); | |
1283 | 1284 | FWork := False; |
1284 | 1285 | Close; |
1285 | 1286 | end else if State = gdsError then begin |
1286 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmSureError), nil, gmiNG); | |
1287 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureError)), nil, gmiNG); | |
1287 | 1288 | end else if State = gdsAbort then begin |
1288 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiNG); | |
1289 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiNG); | |
1289 | 1290 | end; |
1290 | 1291 | end else begin |
1291 | 1292 | // X |
@@ -1295,13 +1296,13 @@ begin | ||
1295 | 1296 | if state = gdsComplete then begin |
1296 | 1297 | GikoForm.PlaySound('ResEnd'); |
1297 | 1298 | SaveSendFile; |
1298 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1299 | - FWork := False; | |
1299 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1300 | + FWork := False; | |
1300 | 1301 | Close; |
1301 | 1302 | end else if State = gdsError then begin |
1302 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmResError), nil, gmiOK); | |
1303 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmResError)), nil, gmiOK); | |
1303 | 1304 | end else if State = gdsAbort then begin |
1304 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK); | |
1305 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK); | |
1305 | 1306 | end; |
1306 | 1307 | end; |
1307 | 1308 | end else begin |
@@ -1596,8 +1597,6 @@ begin | ||
1596 | 1597 | ini.WriteInteger('Setting', AHost, 0); |
1597 | 1598 | ini.UpdateFile; |
1598 | 1599 | end; |
1599 | - //StatusBarɱÌIÌKèlð\¦·é | |
1600 | - StatusBar.Panels[2].Text := 'Samba24Kèl' + IntToStr(Result); | |
1601 | 1600 | finally |
1602 | 1601 | ini.Free; |
1603 | 1602 | end; |
@@ -1633,7 +1632,8 @@ begin | ||
1633 | 1632 | Host := Copy(Host, 1, AnsiPos('.', Host) - 1); |
1634 | 1633 | FHost := Host; //FHost=I¼ |
1635 | 1634 | ReadSambaTime(FHost); //ÈOÌ«ÝÔðÇÝÞ |
1636 | - ReadSettingTime(FHost); //SambaÌÝèðÇÝÞ | |
1635 | + //StatusBarɱÌIÌKèlð\¦·é | |
1636 | + StatusBar.Panels[2].Text := 'Samba24Kèl' + IntToStr(ReadSettingTime(FHost)); | |
1637 | 1637 | end; |
1638 | 1638 | end; |
1639 | 1639 | procedure TEditorForm.FormCloseQuery(Sender: TObject; |
@@ -2098,8 +2098,8 @@ begin | ||
2098 | 2098 | |
2099 | 2099 | if ABoard = nil then Exit; |
2100 | 2100 | |
2101 | - URL := ABoard.GETHEADTXTFileName; | |
2102 | - GikoSys.OpenBrowser(URL, gbtAuto); | |
2101 | + URL := ABoard.GETHEADTXTFileName; | |
2102 | + GikoSys.OpenBrowser(URL, gbtAuto); | |
2103 | 2103 | end; |
2104 | 2104 | |
2105 | 2105 | procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject); |
@@ -2112,8 +2112,8 @@ function TEditorForm.LFusianaGet(s: String): Boolean; | ||
2112 | 2112 | var |
2113 | 2113 | i: Integer; |
2114 | 2114 | begin |
2115 | - i := AnsiPos('fusianasan', s); | |
2116 | - if (i > 0) then Result := True else Result := False; | |
2115 | + i := AnsiPos('fusianasan', s); | |
2116 | + if (i > 0) then Result := True else Result := False; | |
2117 | 2117 | end; |
2118 | 2118 | |
2119 | 2119 | procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject); |
@@ -2166,49 +2166,101 @@ begin | ||
2166 | 2166 | end; |
2167 | 2167 | end; |
2168 | 2168 | |
2169 | -//! SambaÌÝèlðXV·é | |
2170 | -procedure TEditorForm.UpdateSamba(const AHost: String; value: Integer); | |
2169 | +//SambaÌÔðÇÝÞ | |
2170 | +procedure TEditorForm.ReadSambaTime(); | |
2171 | 2171 | var |
2172 | 2172 | ini :TMemIniFile; |
2173 | + skey: String; | |
2174 | + board: TBoard; | |
2175 | + tmp: string; | |
2173 | 2176 | begin |
2177 | + Timer1.Enabled := false; //oßb\¦TimerðOffÉ·éi±êªONÌÆ«Samba24ÎôOnj | |
2174 | 2178 | ini := TMemIniFile.Create(GikoSys.GetSambaFileName); |
2175 | 2179 | try |
2176 | - ini.WriteInteger('Setting', AHost, value); | |
2177 | - ini.UpdateFile; | |
2180 | + //¶ñÅÇÝæÁÄAÏ·ÖÅTDateTimeÖ | |
2181 | + if( FThreadItem <> nil ) then | |
2182 | + board := FThreadItem.ParentBoard | |
2183 | + else | |
2184 | + board := FBoard; | |
2185 | + | |
2186 | + if (board <> nil) then begin | |
2187 | + //BBSIDÆzXg¼ªêvµÄ¢½ç BBSID@zXg¼ | |
2188 | + if( board.BBSID = FHost ) then | |
2189 | + skey := board.BBSID + '@' + FHost | |
2190 | + else | |
2191 | + skey := board.BBSID; | |
2192 | + | |
2193 | + tmp := ini.ReadString('Send', skey, DateTimeToStr(ZERO_DATE)); | |
2194 | + | |
2195 | + //BBSIDÌL[ª³¢ÈçFHostÉØèÖ¦ÄÝé | |
2196 | + if (tmp = DateTimeToStr(ZERO_DATE)) then begin | |
2197 | + tmp := ini.ReadString('Send', FHost, DateTimeToStr(ZERO_DATE)); | |
2198 | + end; | |
2199 | + FSambaTime := ConvertDateTimeString(tmp); | |
2200 | + end; | |
2178 | 2201 | finally |
2179 | 2202 | ini.Free; |
2180 | 2203 | end; |
2204 | + FNow := Now(); //»ÝÔðæ¾iTimer\¦pÅACheck·éÆ«ÍÄÑNow()ðÄÔj | |
2205 | + Timer1.Enabled := true; //oßb\¦TimerðOnÉ·éi±êªONÌÆ«Samba24ÎôOnj | |
2181 | 2206 | end; |
2182 | 2207 | |
2183 | -//! ToXVÌANVÌUpdateCxg@ÈP̽ß^C}[Ư¶ÉµÄ¨ | |
2184 | -procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject); | |
2208 | +//SambaÉÔð«Þ | |
2209 | +procedure TEditorForm.WriteSambaTime(ATime: TDateTime); | |
2210 | +var | |
2211 | + ini :TMemIniFile; | |
2185 | 2212 | begin |
2186 | - UpdateSambaAction.Enabled := Timer1.Enabled; | |
2213 | + ini := TMemIniFile.Create(GikoSys.GetSambaFileName); | |
2214 | + try | |
2215 | +// ini.WriteDateTime('Send', AHost, ATime); | |
2216 | + ini.UpdateFile; | |
2217 | + finally | |
2218 | + ini.Free; | |
2219 | + end; | |
2187 | 2220 | end; |
2188 | - | |
2189 | -//! ToXVANV | |
2190 | -procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject); | |
2221 | +//SambaÌÝèlðÇÝÞ | |
2222 | +function TEditorForm.ReadSettingTime(): Integer ; | |
2191 | 2223 | var |
2192 | - input : String; | |
2193 | - i : Integer; | |
2194 | -begin | |
2195 | - if InputQuery('Samba24ÝèlXV', 'Vµ¢Ýèlðü͵ľ³¢', input) then begin | |
2196 | - input := ZenToHan(input); | |
2197 | - if GikoSys.IsNumeric(input) then begin | |
2198 | - UpdateSamba(FHost, StrToInt(input)); | |
2199 | - //SÄÌtH[©çA¯¶zXgÌGfB^ÉÇÝÝw¦ | |
2200 | - for i := 0 to Screen.FormCount - 1 do begin | |
2201 | - if Screen.Forms[i] is TEditorForm then begin | |
2202 | - if FHost = TEditorForm(Screen.Forms[i]).FHost then begin | |
2203 | - TEditorForm(Screen.Forms[i]).ReadSettingTime(FHost); | |
2204 | - end; | |
2205 | - end; | |
2224 | + ini :TMemIniFile; | |
2225 | + skey: String; | |
2226 | + board: TBoard; | |
2227 | +begin | |
2228 | + ini := TMemIniFile.Create(GikoSys.GetSambaFileName); | |
2229 | + try | |
2230 | + if( FThreadItem <> nil ) then | |
2231 | + board := FThreadItem.ParentBoard | |
2232 | + else | |
2233 | + board := FBoard; | |
2234 | + | |
2235 | + if (board <> nil) then begin | |
2236 | + //BBSIDÆzXg¼ªêvµÄ¢½ç BBSID@zXg¼ | |
2237 | + if( board.BBSID = FHost ) then | |
2238 | + skey := board.BBSID + '@' + FHost | |
2239 | + else | |
2240 | + skey := board.BBSID; | |
2241 | + | |
2242 | + Result := ini.ReadInteger('Setting', skey, -1); | |
2243 | + //BBSIDÌL[ª³¢ÈçFHostðg¤ | |
2244 | + if( Result = -1 ) then | |
2245 | + Result := ini.ReadInteger('Setting', FHost, -1); | |
2246 | + | |
2247 | + //KèlªÝè³êĢȢƫÍAt@CÉ«½·B | |
2248 | + if Result = -1 then begin | |
2249 | + ini.WriteInteger('Setting', FHost, 0); | |
2250 | + ini.UpdateFile; | |
2206 | 2251 | end; |
2207 | - end else begin | |
2208 | - ShowMessage('lðü͵ľ³¢'); | |
2209 | - UpdateSambaActionExecute(Sender); | |
2210 | - end; | |
2252 | + end; | |
2253 | + finally | |
2254 | + ini.Free; | |
2211 | 2255 | end; |
2212 | 2256 | end; |
2257 | +//SambaÉøÁ©©é©¸·é | |
2258 | +function TEditorForm.CheckSambaTime(ATime: TDateTime): Boolean; | |
2259 | +begin | |
2260 | +end; | |
2261 | +//SambaÌÝèlð«Þ | |
2262 | +procedure TEditorForm.SetSamba24(); | |
2263 | +begin | |
2264 | +end; | |
2213 | 2265 | |
2214 | 2266 | end. |
@@ -290,35 +290,32 @@ var | ||
290 | 290 | threadItem : TThreadItem; |
291 | 291 | res : TResRec; |
292 | 292 | no : string; |
293 | - resLink : TResLinkRec; | |
294 | 293 | begin |
295 | 294 | |
296 | 295 | threadItem := TThreadItem( inInstance ); |
297 | 296 | // øðªð |
298 | - THTMLCreate.DivideStrLine( string( inDatRes ) , @res); | |
299 | - if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin | |
300 | - res.FBody := THTMLCreate.DeleteLink(res.FBody); | |
301 | - resLink.FBbs := threadItem.ParentBoard.BBSID; | |
302 | - resLink.FKey := ChangeFileExt( threadItem.FileName, '' ); | |
303 | - HTMLCreater.AddAnchorTag( @res ); | |
304 | - HTMLCreater.ConvRes( @res, @resLink ); | |
305 | - | |
306 | - no := IntToStr( inResNo ); | |
307 | - | |
308 | - try | |
309 | - if GikoSys.Setting.UseSkin then begin | |
310 | - // XL | |
311 | - if inIsNew then | |
297 | + res := DivideStrLine( string( inDatRes ) ); | |
298 | + if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin | |
299 | + res.FBody := GikoSys.DeleteLink(res.FBody); | |
300 | + res.FBody := HTMLCreater.AddAnchorTag( res.FBody ); | |
301 | + res.FBody := HTMLCreater.ConvRes( res.FBody, threadItem.ParentBoard.BBSID, ChangeFileExt( threadItem.FileName, '' ), 'bbs', 'key', 'st', 'to', 'nofirst', 'true'); | |
302 | + | |
303 | + no := IntToStr( inResNo ); | |
304 | + | |
305 | + try | |
306 | + if GikoSys.Setting.UseSkin then begin | |
307 | + // XL | |
308 | + if inIsNew then | |
312 | 309 | Result := CreateResultString( HTMLCreater.SkinedRes( |
313 | 310 | HTMLCreater.LoadFromSkin( |
314 | 311 | GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.Size |
315 | - ), @res, no | |
312 | + ), res, no | |
316 | 313 | ) ) |
317 | 314 | else |
318 | 315 | Result := CreateResultString( HTMLCreater.SkinedRes( |
319 | 316 | HTMLCreater.LoadFromSkin( |
320 | 317 | GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.Size |
321 | - ), @res, no | |
318 | + ), res, no | |
322 | 319 | ) ); |
323 | 320 | end else if GikoSys.Setting.UseCSS then begin |
324 | 321 | // CSS |
@@ -4,44 +4,42 @@ interface | ||
4 | 4 | |
5 | 5 | uses |
6 | 6 | Messages, SysUtils, Classes, Contnrs, ComCtrls, {HttpApp,} YofUtils, |
7 | - GikoSystem{, XMLIntf, XMLDoc}, GikoXMLDoc, BoardGroup, windows; | |
7 | + GikoSystem{, XMLIntf, XMLDoc}, GikoXMLDoc, BoardGroup, windows, | |
8 | + MojuUtils; | |
8 | 9 | {SAX, SAXHelpers, SAXComps, SAXKW;} |
9 | 10 | |
10 | 11 | type |
11 | 12 | TFavoriteFolder = class |
12 | 13 | end; |
13 | 14 | |
14 | - TFavoriteItem = class(TObject) | |
15 | + TFavoriteBoardItem = class | |
15 | 16 | private |
17 | + FItem : TBoard; | |
16 | 18 | FURL : string; |
17 | 19 | FTitle : string; |
18 | - public | |
19 | - function GetItemTitle : string; virtual;abstract; | |
20 | - property URL : string read FURL write FURL; // Item ªæ¾Å«ÈÄà URL ÍíÉÛ³êé | |
21 | - property Title : string read FTitle write FTitle; | |
22 | - end; | |
23 | - TFavoriteBoardItem = class(TFavoriteItem) | |
24 | - private | |
25 | - FItem : TBoard; | |
26 | 20 | function GetItem : TBoard; |
27 | 21 | public |
28 | 22 | constructor Create( inURL : string; inTitle : string = ''; inItem : TBoard = nil ); |
29 | 23 | constructor CreateWithItem( inItem : TBoard ); |
30 | - destructor Destory; | |
31 | - function GetItemTitle : string; override; | |
24 | + destructor Destory; | |
32 | 25 | property Item : TBoard read GetItem write FItem; |
26 | + property URL : string read FURL write FURL; // Item ªæ¾Å«ÈÄà URL ÍíÉÛ³êé | |
27 | + property Title : string read FTitle write FTitle; | |
33 | 28 | end; |
34 | 29 | |
35 | - TFavoriteThreadItem = class(TFavoriteItem) | |
30 | + TFavoriteThreadItem = class | |
36 | 31 | private |
37 | 32 | FItem : TThreadItem; |
33 | + FURL : string; | |
34 | + FTitle : string; | |
38 | 35 | function GetItem : TThreadItem; |
39 | 36 | public |
40 | 37 | constructor Create( inURL : string; inTitle : string = ''; inItem : TThreadItem = nil ); |
41 | 38 | constructor CreateWithItem( inItem : TThreadItem ); |
42 | - destructor Destory; | |
43 | - function GetItemTitle : string; override; | |
39 | + destructor Destory; | |
44 | 40 | property Item : TThreadItem read GetItem write FItem; |
41 | + property URL : string read FURL write FURL; // Item ªæ¾Å«ÈÄà URL ÍíÉÛ³êé | |
42 | + property Title : string read FTitle write FTitle; | |
45 | 43 | end; |
46 | 44 | |
47 | 45 | TFavoriteDM = class(TDataModule) |
@@ -50,7 +48,7 @@ type | ||
50 | 48 | { Private é¾ } |
51 | 49 | FStack: TStack; |
52 | 50 | FTreeView: TTreeView; |
53 | - FModified: boolean; | |
51 | + | |
54 | 52 | procedure ReadNode(Node: IXMLNode); |
55 | 53 | procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
56 | 54 | // procedure AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); |
@@ -61,15 +59,14 @@ type | ||
61 | 59 | // procedure SAXCharacters(Sender: TObject; const PCh: SAXString); |
62 | 60 | public |
63 | 61 | { Public é¾ } |
64 | - procedure Clear; | |
65 | - function GetFavoriteFilePath() : String; | |
66 | - function SaveFavoriteFile(FileName: String) : Boolean; | |
62 | + procedure Clear; | |
63 | + function GetFavoriteFilePath() : String; | |
64 | + function SaveFavoriteFile(FileName: String) : Boolean; | |
67 | 65 | procedure SetFavTreeView(TreeView: TTreeView); |
68 | 66 | procedure ReadFavorite; |
69 | 67 | procedure WriteFavorite; |
70 | - procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); | |
68 | + procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); | |
71 | 69 | property TreeView: TTreeView read FTreeView; |
72 | - property Modified: boolean read FModified write FModified; | |
73 | 70 | end; |
74 | 71 | |
75 | 72 | var |
@@ -79,7 +76,7 @@ const | ||
79 | 76 | |
80 | 77 | implementation |
81 | 78 | |
82 | -uses ExternalBoardManager, ExternalBoardPlugInMain, MojuUtils; | |
79 | +uses ExternalBoardManager, ExternalBoardPlugInMain; | |
83 | 80 | |
84 | 81 | const |
85 | 82 | FAVORITE_ROOT_NAME = '¨CÉüè'; |
@@ -116,30 +113,15 @@ begin | ||
116 | 113 | FItem.Free; |
117 | 114 | inherited; |
118 | 115 | end; |
119 | -//! ۵ĢéÂÌ^CgðÔ· | |
120 | -function TFavoriteBoardItem.GetItemTitle : string; | |
121 | -begin | |
122 | - Result := ''; | |
123 | - //êxàÂðJ¢Ä¢È¢Æ«iN®ÉLrlbgð¨CÉüèÆ©j | |
124 | - //ÌÆ«ÉFItemªnilÈÌÅ»ÌÆ«Í×ÁÆõ | |
125 | - if FItem = nil then begin | |
126 | - FItem := BBSsFindBoardFromURL(URL); | |
127 | - end; | |
128 | - if FItem <> nil then begin | |
129 | - try | |
130 | - if not FItem.IsThreadDatRead then begin | |
131 | - GikoSys.ReadSubjectFile(FItem); | |
132 | - end; | |
133 | - except | |
134 | - end; | |
135 | - Result := FItem.Title; | |
136 | - end; | |
137 | -end; | |
138 | 116 | function TFavoriteBoardItem.GetItem : TBoard; |
139 | 117 | var |
140 | 118 | protocol, host, path, document, port, bookmark : string; |
141 | - BBSID : string; | |
142 | - tmpURL : string; | |
119 | + BBSID{, BBSKey} : string; | |
120 | + tmpURL{, boardURL} : string; | |
121 | +// category : TCategory; | |
122 | + {i, bi: Integer;} | |
123 | + {tmpThread: TThreadItem;} | |
124 | + {tmpBoard: TBoard;} | |
143 | 125 | begin |
144 | 126 | |
145 | 127 | if FItem = nil then begin |
@@ -194,17 +176,6 @@ begin | ||
194 | 176 | FItem.Free; |
195 | 177 | inherited; |
196 | 178 | end; |
197 | -//! ۵ĢéXÌ^CgðÔ· | |
198 | -function TFavoriteThreadItem.GetItemTitle : string; | |
199 | -begin | |
200 | - Result := ''; | |
201 | - if FItem = nil then begin | |
202 | - FItem := BBSsFindThreadFromURL(URL); | |
203 | - end; | |
204 | - if FItem <> nil then begin | |
205 | - Result := FItem.Title; | |
206 | - end; | |
207 | -end; | |
208 | 179 | |
209 | 180 | function TFavoriteThreadItem.GetItem : TThreadItem; |
210 | 181 | var |
@@ -288,8 +259,7 @@ begin | ||
288 | 259 | end; |
289 | 260 | TreeView.Items.Clear; |
290 | 261 | TreeView.Items.EndUpdate; |
291 | - | |
292 | - FavoriteDM.Modified := true; | |
262 | + //TreeView.Free; | |
293 | 263 | end; |
294 | 264 | |
295 | 265 | procedure TFavoriteDM.SetFavTreeView(TreeView: TTreeView); |
@@ -307,7 +277,7 @@ var | ||
307 | 277 | FavFolder: TFavoriteFolder; |
308 | 278 | LinkExists: Boolean; |
309 | 279 | begin |
310 | - FavoriteDM.Modified := true; | |
280 | + | |
311 | 281 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
312 | 282 | |
313 | 283 | FavFolder := TFavoriteFolder.Create; |
@@ -479,7 +449,6 @@ var | ||
479 | 449 | SaveList: TStringList; |
480 | 450 | |
481 | 451 | begin |
482 | - FavoriteDM.Modified := true; | |
483 | 452 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
484 | 453 | if FileExists(FileName) then begin |
485 | 454 | tmpFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME; |
@@ -491,10 +460,7 @@ begin | ||
491 | 460 | try |
492 | 461 | SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); |
493 | 462 | SaveList.Add('<favorite>'); |
494 | - try | |
495 | - AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
496 | - except | |
497 | - end; | |
463 | + AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
498 | 464 | SaveList.Add('</favorite>'); |
499 | 465 | SaveList.SaveToFile(FileName); |
500 | 466 | finally |
@@ -130,6 +130,10 @@ begin | ||
130 | 130 | FLastTime := GetTickCount; |
131 | 131 | FLastPoint := Point(x, y); |
132 | 132 | end; |
133 | + //}EXðÄÝè | |
134 | + if (hwnd <> 0) and (hwnd <> FHandle) then | |
135 | + SetCapture(hwnd); | |
136 | + | |
133 | 137 | Result := True; |
134 | 138 | end; |
135 | 139 | end; |
@@ -139,7 +143,7 @@ begin | ||
139 | 143 | FLastTime := 0; |
140 | 144 | FLastPoint := Point(x, y); |
141 | 145 | FStartPoint := Point(x, y); |
142 | - Result := True; | |
146 | + CheckAction := True; | |
143 | 147 | SetCapture(FHandle); |
144 | 148 | end; |
145 | 149 | end; |
@@ -1,6 +1,6 @@ | ||
1 | 1 | object GikoForm: TGikoForm |
2 | - Left = 363 | |
3 | - Top = 92 | |
2 | + Left = 332 | |
3 | + Top = 101 | |
4 | 4 | HorzScrollBar.Visible = False |
5 | 5 | VertScrollBar.Visible = False |
6 | 6 | AutoScroll = False |
@@ -39,9 +39,6 @@ object GikoForm: TGikoForm | ||
39 | 39 | Width = 500 |
40 | 40 | end |
41 | 41 | item |
42 | - Width = 80 | |
43 | - end | |
44 | - item | |
45 | 42 | Width = 50 |
46 | 43 | end> |
47 | 44 | SimplePanel = False |
@@ -98,6 +95,7 @@ object GikoForm: TGikoForm | ||
98 | 95 | Height = 167 |
99 | 96 | BorderStyle = bsNone |
100 | 97 | ChangeDelay = 50 |
98 | + DragMode = dmAutomatic | |
101 | 99 | HideSelection = False |
102 | 100 | Images = ItemIcon16 |
103 | 101 | Indent = 19 |
@@ -106,12 +104,16 @@ object GikoForm: TGikoForm | ||
106 | 104 | RightClickSelect = True |
107 | 105 | ShowRoot = False |
108 | 106 | TabOrder = 0 |
107 | + OnClick = TreeViewClick | |
109 | 108 | OnCollapsed = TreeViewCollapsed |
109 | + OnCollapsing = TreeViewCollapsing | |
110 | 110 | OnCustomDraw = TreeViewCustomDraw |
111 | 111 | OnCustomDrawItem = TreeViewCustomDrawItem |
112 | + OnDblClick = TreeViewDblClick | |
113 | + OnExpanding = TreeViewExpanding | |
112 | 114 | OnExpanded = TreeViewExpanded |
113 | 115 | OnKeyDown = TreeViewKeyDown |
114 | - OnMouseDown = TreeViewMouseDown | |
116 | + OnMouseUp = TreeViewMouseUp | |
115 | 117 | end |
116 | 118 | object Panel3: TPanel |
117 | 119 | Left = 0 |
@@ -226,13 +228,18 @@ object GikoForm: TGikoForm | ||
226 | 228 | RightClickSelect = True |
227 | 229 | ShowRoot = False |
228 | 230 | TabOrder = 3 |
231 | + OnClick = FavoriteTreeViewClick | |
232 | + OnCollapsing = FavoriteTreeViewCollapsing | |
233 | + OnDblClick = FavoriteTreeViewDblClick | |
229 | 234 | OnDragDrop = FavoriteTreeViewDragDrop |
230 | 235 | OnDragOver = FavoriteTreeViewDragOver |
231 | 236 | OnEdited = FavoriteTreeViewEdited |
232 | 237 | OnEditing = FavoriteTreeViewEditing |
233 | 238 | OnEndDrag = FavoriteTreeViewEndDrag |
239 | + OnExpanding = FavoriteTreeViewExpanding | |
234 | 240 | OnKeyDown = FavoriteTreeViewKeyDown |
235 | 241 | OnMouseDown = FavoriteTreeViewMouseDown |
242 | + OnMouseUp = FavoriteTreeViewMouseUp | |
236 | 243 | end |
237 | 244 | object FavoriteToolBar: TToolBar |
238 | 245 | Left = 0 |
@@ -20,10 +20,6 @@ uses | ||
20 | 20 | ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection, |
21 | 21 | IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord; |
22 | 22 | |
23 | -const | |
24 | - NGWORDNAME_PANEL = 3; | |
25 | - THREADSIZE_PANEL = 2; | |
26 | - | |
27 | 23 | type |
28 | 24 | TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite); |
29 | 25 | TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser); |
@@ -358,7 +354,7 @@ type | ||
358 | 354 | N63: TMenuItem; |
359 | 355 | N64: TMenuItem; |
360 | 356 | dummy1: TMenuItem; |
361 | - TreeSelectLogDeletePopupMenu: TMenuItem; | |
357 | + TreeSelectLogDeletePopupMenu: TMenuItem; | |
362 | 358 | N65: TMenuItem; |
363 | 359 | BBSSelectPopupMenu: TPopupMenu; |
364 | 360 | PlugInMenu: TMenuItem; |
@@ -378,7 +374,7 @@ type | ||
378 | 374 | ResRangeKokoPMenuItem: TMenuItem; |
379 | 375 | ResRangeNewPMenuItem: TMenuItem; |
380 | 376 | ResRangeAllPMenuItem: TMenuItem; |
381 | - BrowsBoradHeadAction1: TMenuItem; | |
377 | + BrowsBoradHeadAction1: TMenuItem; | |
382 | 378 | ThreadRangePopupMenu: TPopupMenu; |
383 | 379 | A15: TMenuItem; |
384 | 380 | L8: TMenuItem; |
@@ -398,7 +394,7 @@ type | ||
398 | 394 | N73: TMenuItem; |
399 | 395 | SelectComboBoxPanel: TPanel; |
400 | 396 | SelectComboBoxSplitter: TImage; |
401 | - ToolButton1: TToolButton; | |
397 | + ToolButton1: TToolButton; | |
402 | 398 | N74: TMenuItem; |
403 | 399 | WikiFAQ: TMenuItem; |
404 | 400 | GikoApplicationEvents: TApplicationEvents; |
@@ -423,6 +419,7 @@ type | ||
423 | 419 | procedure TreeViewCustomDrawItem(Sender: TCustomTreeView; |
424 | 420 | Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); |
425 | 421 | procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode); |
422 | + procedure TreeViewDblClick(Sender: TObject); | |
426 | 423 | procedure ListViewCustomDraw(Sender: TCustomListView; |
427 | 424 | const ARect: TRect; var DefaultDraw: Boolean); |
428 | 425 | procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton; |
@@ -494,6 +491,7 @@ type | ||
494 | 491 | procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word; |
495 | 492 | Shift: TShiftState); |
496 | 493 | procedure FavoriteTreePopupMenuPopup(Sender: TObject); |
494 | + procedure FavoriteTreeViewDblClick(Sender: TObject); | |
497 | 495 | procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer); |
498 | 496 | procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton; |
499 | 497 | Shift: TShiftState; X, Y: Integer); |
@@ -512,12 +510,15 @@ type | ||
512 | 510 | var Handled: Boolean); |
513 | 511 | procedure BrowserTabPopupMenuPopup(Sender: TObject); |
514 | 512 | procedure BrowserTabResize(Sender: TObject); |
513 | + procedure TreeViewClick(Sender: TObject); | |
515 | 514 | procedure TreeViewKeyDown(Sender: TObject; var Key: Word; |
516 | 515 | Shift: TShiftState); |
517 | 516 | procedure FavoriteTreeViewMouseDown(Sender: TObject; |
518 | 517 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
519 | 518 | procedure MessagePanelResize(Sender: TObject); |
520 | 519 | procedure OnResized; |
520 | + procedure FavoriteTreeViewMouseUp(Sender: TObject; | |
521 | + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
521 | 522 | procedure SelectTimerTimer(Sender: TObject); |
522 | 523 | procedure ListViewColumnRightClick(Sender: TObject; |
523 | 524 | Column: TListColumn; Point: TPoint); |
@@ -533,16 +534,27 @@ type | ||
533 | 534 | Shift: TShiftState); |
534 | 535 | procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode; |
535 | 536 | var AllowEdit: Boolean); |
536 | - procedure CabinetCloseSpeedButtonClick(Sender: TObject); | |
537 | + procedure CabinetCloseSpeedButtonClick(Sender: TObject); | |
537 | 538 | procedure FavoriteArrangeToolButtonClick(Sender: TObject); |
538 | 539 | procedure GikoApplicationEventsMessage(var Msg: tagMSG; |
539 | 540 | var Handled: Boolean); |
540 | 541 | procedure GikoApplicationEventsDeactivate(Sender: TObject); |
541 | 542 | procedure GikoApplicationEventsException(Sender: TObject; E: Exception); |
542 | - procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton; | |
543 | + procedure FavoriteTreeViewClick(Sender: TObject); | |
544 | + procedure FavoriteTreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
545 | + var AllowCollapse: Boolean); | |
546 | + procedure FavoriteTreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
547 | + var AllowExpansion: Boolean); | |
548 | + procedure TreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
549 | + var AllowCollapse: Boolean); | |
550 | + procedure TreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
551 | + var AllowExpansion: Boolean); | |
552 | + procedure TreeViewMouseUp(Sender: TObject; Button: TMouseButton; | |
543 | 553 | Shift: TShiftState; X, Y: Integer); |
544 | 554 | private |
545 | 555 | { Private é¾ } |
556 | + FSortIndex: Integer; | |
557 | + FSortOrder: Boolean; | |
546 | 558 | FEnabledCloseButton: Boolean; |
547 | 559 | FClickNode: TTreeNode; |
548 | 560 | FHttpState: Boolean; |
@@ -588,7 +600,6 @@ type | ||
588 | 600 | FIsHandledWheel : Boolean; ///< ùÉó¯æÁ½ WM_MOUSEWHEEL ©Ç¤© |
589 | 601 | DiffComp: Boolean; //Add by Genyakun XªXV³ê½Æ«ÉTrueÉÈé |
590 | 602 | FOrigenCaption: String; //¨CÉüèc[ÌACeÒWÌÒWO̶ñ |
591 | - FPreviewBrowserRect: TRect; ///< vr [Ì\¦ÊuðL¯·é | |
592 | 603 | procedure DownloadEnd(Sender: TObject; Item: TDownloadItem); |
593 | 604 | procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon); |
594 | 605 | procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string); |
@@ -689,6 +700,8 @@ type | ||
689 | 700 | property ToolBarSettingSender : TToolBarSettingSenderType |
690 | 701 | read FToolBarSettingSender write FToolBarSettingSender; |
691 | 702 | property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor; |
703 | + property SortIndex: Integer read FSortIndex write FSortIndex; | |
704 | + property SortOrder: Boolean read FSortOrder write FSortOrder; | |
692 | 705 | property ActiveBBS : TBBS read FActiveBBS write FActiveBBS; |
693 | 706 | property WorkCount: Integer read FWorkCount write FWorkCount; |
694 | 707 | procedure SetContent(inThread: TBrowserRecord); |
@@ -820,17 +833,31 @@ uses | ||
820 | 833 | FavoriteArrange, AddressHistory, Preview, Gesture, |
821 | 834 | About, Option, Round, Splash, Sort, ListSelect, Imm, |
822 | 835 | NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter, |
823 | - HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage; | |
836 | + HTMLCreate, ListViewUtils, GikoDataModule; | |
824 | 837 | |
825 | 838 | const |
839 | + CAPTION_NAME: string = 'MRir'; | |
826 | 840 | BLANK_HTML: string = 'about:blank'; |
827 | 841 | BROWSER_COUNT = 5; //uEUÌ |
828 | 842 | //D&Dèl |
829 | 843 | DandD_THRESHOLD = 5; //D&DÌèlipixcel) |
830 | 844 | //vr [t@C¼ |
831 | 845 | HTML_FILE_NAME = 'temp_preview.html'; |
846 | + //XbhiÝ{bNX | |
847 | + SELECTCOMBOBOX_NAME: string = ''; // 'Xbhiõ'; | |
848 | + SELECTCOMBOBOX_COLOR: TColor = clWindow; | |
849 | + //c[o[ACR | |
850 | + TOOL_ICON_HEIGHT_MAX = 16; //³ÅåACR | |
851 | + TOOL_ICON_HEIGHT_MIN = 17; //³Å¬ACR | |
852 | + TOOL_ICON_HEIGHT_NORMAL = 18; //³WACR | |
853 | + TOOL_ICON_WIDTH_MAX = 19; //ÅåACR | |
854 | + TOOL_ICON_WIDTH_MIN = 20; //ŬACR | |
855 | + TOOL_ICON_WIDTH_NORMAL = 21; //WACR | |
832 | 856 | ITEM_ICON_THREADLOG1 = 6; //XACRiO èj |
833 | 857 | ITEM_ICON_THREADLOG2 = 7; //XACRiO èj |
858 | + TOOL_ICON_FAV_FOLDER = 30; //¨CÉüètH_ACR | |
859 | + TOOL_ICON_FAV_BOARD = 31; //¨CÉüèÂACR | |
860 | + TOOL_ICON_FAV_THREAD = 32; //¨CÉüèXACR | |
834 | 861 | //bZ[WID |
835 | 862 | USER_TREECLICK = WM_USER + 2000; |
836 | 863 | USER_RESIZED = WM_USER + 2001; |
@@ -859,6 +886,7 @@ var | ||
859 | 886 | msg: string; |
860 | 887 | i: Integer; |
861 | 888 | wp: TWindowPlacement; |
889 | + s: string; | |
862 | 890 | begin |
863 | 891 | {$IFDEF DEBUG} |
864 | 892 | AllocConsole; |
@@ -885,6 +913,7 @@ begin | ||
885 | 913 | Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND'); |
886 | 914 | |
887 | 915 | //AhXðÇÝÝ |
916 | + //AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount); | |
888 | 917 | AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount); |
889 | 918 | |
890 | 919 | EnabledCloseButton := True; |
@@ -1047,36 +1076,36 @@ begin | ||
1047 | 1076 | case GikoSys.Setting.ListWidthState of |
1048 | 1077 | glsMax: begin |
1049 | 1078 | ViewPanel.Width := 1; |
1050 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL; | |
1051 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN; | |
1079 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
1080 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
1052 | 1081 | end; |
1053 | 1082 | glsMin: begin |
1054 | 1083 | ViewPanel.Width := GikoSys.Setting.ListWidth; |
1055 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX; | |
1056 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL; | |
1084 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
1085 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
1057 | 1086 | end; |
1058 | 1087 | else begin |
1059 | 1088 | ViewPanel.Width := GikoSys.Setting.ListWidth; |
1060 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX; | |
1061 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN; | |
1089 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
1090 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
1062 | 1091 | end; |
1063 | 1092 | end; |
1064 | 1093 | end else begin |
1065 | 1094 | case GikoSys.Setting.ListHeightState of |
1066 | 1095 | glsMax: begin |
1067 | 1096 | ViewPanel.Height := 1; |
1068 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL; | |
1069 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN; | |
1097 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
1098 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
1070 | 1099 | end; |
1071 | 1100 | glsMin: begin |
1072 | 1101 | ViewPanel.Height := GikoSys.Setting.ListHeight; |
1073 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX; | |
1074 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL; | |
1102 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
1103 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
1075 | 1104 | end; |
1076 | 1105 | else begin |
1077 | 1106 | ViewPanel.Height := GikoSys.Setting.ListHeight; |
1078 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX; | |
1079 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN; | |
1107 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
1108 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
1080 | 1109 | end; |
1081 | 1110 | end; |
1082 | 1111 | end; |
@@ -1127,7 +1156,7 @@ begin | ||
1127 | 1156 | end; |
1128 | 1157 | |
1129 | 1158 | //L[ÝèÇÝÝ |
1130 | - GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName); | |
1159 | + GikoSys.LoadKeySetting(GikoDM.GikoFormActionList); | |
1131 | 1160 | |
1132 | 1161 | //ÅIñÔ |
1133 | 1162 | // FLastRoundTime := 0; |
@@ -1162,7 +1191,9 @@ begin | ||
1162 | 1191 | MoveToURL(ParamStr(i)); |
1163 | 1192 | end; |
1164 | 1193 | |
1165 | - GikoDM.RepaintStatusBar; | |
1194 | + s := GikoSys.FAbon.NGwordname; | |
1195 | + StatusBar.Panels[2].Text := s; | |
1196 | + StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100); | |
1166 | 1197 | StatusBarResize(Sender); |
1167 | 1198 | |
1168 | 1199 | dummy1.Caption := ItemReservPMenu.Caption; |
@@ -1188,7 +1219,7 @@ begin | ||
1188 | 1219 | MouseGesture.SetHook( Handle ); |
1189 | 1220 | |
1190 | 1221 | //2ch¾êÇÝoµ |
1191 | - GikoSys.SetGikoMessage; | |
1222 | + GikoSys.Setting.SetMessages; | |
1192 | 1223 | |
1193 | 1224 | //I[gOC |
1194 | 1225 | if GikoSys.Setting.AutoLogin then |
@@ -1200,7 +1231,6 @@ begin | ||
1200 | 1231 | FavoriteAddToolButton.Caption := 'ÇÁ...'; |
1201 | 1232 | AntiIndivAbonMenuItem.Caption := 'ÂÊ Ú`ñð'; |
1202 | 1233 | |
1203 | - | |
1204 | 1234 | end; |
1205 | 1235 | |
1206 | 1236 | // CoolBar ÌÝèðÏÉÛ¶ |
@@ -1521,6 +1551,7 @@ begin | ||
1521 | 1551 | //AhXðÛ¶ |
1522 | 1552 | try |
1523 | 1553 | //AddressHistoryDMÍ©®¶¬tH[ÈÌÅAðúÍ©®IɳêéB |
1554 | + //AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount); | |
1524 | 1555 | AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount); |
1525 | 1556 | except |
1526 | 1557 | end; |
@@ -1655,6 +1686,7 @@ begin | ||
1655 | 1686 | GikoSys.Setting.ShowDialogForAllTabClose := false; |
1656 | 1687 | GikoDM.AllTabCloseAction.Execute; |
1657 | 1688 | GikoSys.Setting.ShowDialogForAllTabClose := tmpBool; |
1689 | + | |
1658 | 1690 | SetContent(BrowserNullTab); |
1659 | 1691 | //TreeViewNAiBBS2ch.FreeÌãÉNA·éÆXPX^CÉG[oéj |
1660 | 1692 | TreeView.Items.Clear; |
@@ -1985,35 +2017,27 @@ procedure TGikoForm.ListViewColumnClick(Sender: TObject; | ||
1985 | 2017 | var |
1986 | 2018 | id, idx : Integer; |
1987 | 2019 | orderList : TList; |
1988 | - vSortIndex : Integer; | |
1989 | - vSortOrder : Boolean; | |
1990 | 2020 | begin |
1991 | 2021 | idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag; |
1992 | - if TObject( FActiveList ) is TBBS then begin | |
1993 | - orderList := GikoSys.Setting.BBSColumnOrder; | |
1994 | - vSortIndex := GikoSys.Setting.BBSSortIndex; | |
1995 | - vSortOrder := GikoSys.Setting.BBSSortOrder; | |
1996 | - end else if TObject( FActiveList ) is TCategory then begin | |
1997 | - orderList := GikoSys.Setting.CategoryColumnOrder; | |
1998 | - vSortIndex := GikoSys.Setting.CategorySortIndex; | |
1999 | - vSortOrder := GikoSys.Setting.CategorySortOrder; | |
2000 | - end else if TObject( FActiveList ) is TBoard then begin | |
2001 | - orderList := GikoSys.Setting.BoardColumnOrder; | |
2002 | - vSortIndex := GikoSys.Setting.BoardSortIndex; | |
2003 | - vSortOrder := GikoSys.Setting.BoardSortOrder; | |
2004 | - end else | |
2022 | + | |
2023 | + if TObject( FActiveList ) is TBBS then | |
2024 | + orderList := GikoSys.Setting.BBSColumnOrder | |
2025 | + else if TObject( FActiveList ) is TCategory then | |
2026 | + orderList := GikoSys.Setting.CategoryColumnOrder | |
2027 | + else if TObject( FActiveList ) is TBoard then | |
2028 | + orderList := GikoSys.Setting.BoardColumnOrder | |
2029 | + else | |
2005 | 2030 | Exit; |
2006 | 2031 | |
2007 | 2032 | id := Integer( orderList[ idx ] ); |
2008 | 2033 | |
2009 | - | |
2010 | - if vSortIndex = id then | |
2011 | - vSortOrder := not vSortOrder | |
2034 | + if FSortIndex = id then | |
2035 | + FSortOrder := not FSortOrder | |
2012 | 2036 | else begin |
2013 | - vSortOrder := id = 0; | |
2037 | + FSortOrder := id = 0; | |
2014 | 2038 | end; |
2015 | 2039 | |
2016 | - TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder); | |
2040 | + TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, FSortOrder, FSortIndex ); | |
2017 | 2041 | end; |
2018 | 2042 | |
2019 | 2043 | procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar; |
@@ -2212,13 +2236,31 @@ begin | ||
2212 | 2236 | ListView.SetFocus; |
2213 | 2237 | ListView.SelectAll; |
2214 | 2238 | end; |
2239 | +// ************************************************************************* | |
2240 | +//! c[r [Ì_uNbNCxg | |
2241 | +// ************************************************************************* | |
2242 | +procedure TGikoForm.TreeViewDblClick(Sender: TObject); | |
2243 | +var | |
2244 | + pos : TPoint; | |
2245 | + rect: TRect; | |
2246 | +begin | |
2247 | + pos := FMouseDownPos; | |
2248 | + if (FClickNode <> nil) and (FClickNode = TreeView.GetNodeAt(pos.X, pos.Y)) then begin | |
2249 | + //}EXªnodeÌãÉ¢é© | |
2250 | + rect := FClickNode.DisplayRect(true); | |
2251 | + if ((rect.Left <= pos.X) and (rect.Right >= pos.X)) and | |
2252 | + ((rect.Bottom >= pos.Y) and (rect.Top <= pos.Y)) then begin | |
2253 | + TreeDoubleClick( FClickNode ); | |
2254 | + FClickNode := nil; | |
2255 | + end; | |
2256 | + end; | |
2257 | +end; | |
2258 | + | |
2215 | 2259 | procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon); |
2216 | 2260 | begin |
2217 | 2261 | AddMessageList(Msg, nil, Icon); |
2218 | 2262 | end; |
2219 | -// ************************************************************************* | |
2220 | -//! _E[hª®¹µ½Æ«É¶·éCxg | |
2221 | -// ************************************************************************* | |
2263 | + | |
2222 | 2264 | procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem); |
2223 | 2265 | var |
2224 | 2266 | ATitle: string; |
@@ -2226,7 +2268,6 @@ var | ||
2226 | 2268 | boardPlugIn : TBoardPlugIn; |
2227 | 2269 | i: Integer; |
2228 | 2270 | browserRec : TBrowserRecord; |
2229 | - Res : TResRec; | |
2230 | 2271 | begin |
2231 | 2272 | try |
2232 | 2273 | if Item.DownType = gdtBoard then |
@@ -2234,21 +2275,16 @@ begin | ||
2234 | 2275 | else |
2235 | 2276 | ATitle := Item.ThreadItem.Title; |
2236 | 2277 | if ATitle = '' then |
2237 | - ATitle := GikoSys.GetGikoMessage(gmUnKnown); | |
2278 | + ATitle := GikoSys.Setting.GetMessage(Ord(gmUnKnown)); | |
2238 | 2279 | |
2239 | 2280 | if Item.State in [gdsComplete, gdsDiffComplete] then begin |
2240 | 2281 | //³íI¹ |
2241 | 2282 | if Item.DownType = gdtBoard then begin |
2242 | 2283 | //Â |
2243 | 2284 | Item.SaveListFile; |
2244 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK); | |
2285 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureItiran)), nil, gmiOK); | |
2245 | 2286 | if GetActiveList = Item.Board then begin |
2246 | 2287 | FActiveList := nil; |
2247 | - //©®\[gÌêÂêÌ\[gðNA·é | |
2248 | - if (GikoSys.Setting.AutoSortThreadList) then begin | |
2249 | - GikoSys.Setting.BoardSortIndex := 0; | |
2250 | - GikoSys.Setting.BoardSortOrder := True; | |
2251 | - end; | |
2252 | 2288 | SetActiveList(Item.Board); |
2253 | 2289 | end; |
2254 | 2290 | Item.Board.Modified := True; |
@@ -2262,12 +2298,10 @@ begin | ||
2262 | 2298 | if (Item.ThreadItem.ParentBoard.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin |
2263 | 2299 | //boardPlugIn := Item.ThreadItem.BoardPlugIn; |
2264 | 2300 | boardPlugIn := Item.ThreadItem.ParentBoard.BoardPlugIn; |
2265 | - THTMLCreate.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 ), @Res); | |
2266 | - Item.ThreadItem.Title := Res.FTitle; | |
2301 | + Item.ThreadItem.Title := DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle; | |
2267 | 2302 | ATitle := Item.ThreadItem.Title; |
2268 | 2303 | end else if ATitle = 'i¼Ìs¾j' then begin |
2269 | - THTMLCreate.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1), @Res); | |
2270 | - ATitle := Res.FTitle; | |
2304 | + ATitle := DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle; | |
2271 | 2305 | end; |
2272 | 2306 | for i := BrowserTab.Tabs.Count - 1 downto 0 do begin |
2273 | 2307 | if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin |
@@ -2295,12 +2329,12 @@ begin | ||
2295 | 2329 | |
2296 | 2330 | if Item.State = gdsComplete then begin |
2297 | 2331 | PlaySound('New'); |
2298 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK); | |
2332 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureSyutoku)), nil, gmiOK); | |
2299 | 2333 | //Add by Genyakun |
2300 | 2334 | DiffComp := True; |
2301 | 2335 | end else begin |
2302 | 2336 | PlaySound('NewDiff'); |
2303 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK); | |
2337 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureDiff)), nil, gmiOK); | |
2304 | 2338 | //Add by Genyakun |
2305 | 2339 | DiffComp := True; |
2306 | 2340 | end; |
@@ -2333,18 +2367,18 @@ begin | ||
2333 | 2367 | //SetContent(Item.ThreadItem); |
2334 | 2368 | InsertBrowserTab(Item.ThreadItem); |
2335 | 2369 | end;} |
2336 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD); | |
2370 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmNotMod)), nil, gmiSAD); | |
2337 | 2371 | PlaySound('NoChange'); |
2338 | 2372 | Screen.Cursor := crDefault; |
2339 | 2373 | end else if Item.State = gdsAbort then begin |
2340 | 2374 | //f |
2341 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK); | |
2375 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK); | |
2342 | 2376 | end else if Item.State = gdsError then begin |
2343 | 2377 | //G[ |
2344 | 2378 | s := Item.ErrText; |
2345 | 2379 | if s <> '' then |
2346 | 2380 | s := ':' + s; |
2347 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmError) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG); | |
2381 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmError)) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG); | |
2348 | 2382 | // if Item.ResponseCode = 302 then |
2349 | 2383 | // AddMessageList('ªÚ]µ½©àµêÈ¢ÌÅÂXVðsÁľ³¢B', nil, gmiNG); |
2350 | 2384 | PlaySound('Error'); |
@@ -2524,9 +2558,6 @@ begin | ||
2524 | 2558 | BrowserNullTab := TBrowserRecord.Create; |
2525 | 2559 | BrowserNullTab.Browser := Browser; |
2526 | 2560 | end; |
2527 | - if BrowserNullTab.thread <> ThreadItem then begin | |
2528 | - BrowserNullTab.Movement := ''; | |
2529 | - end; | |
2530 | 2561 | BrowserNullTab.thread := ThreadItem; |
2531 | 2562 | Result := BrowserNullTab; |
2532 | 2563 | BrowserTab.TabIndex := -1; |
@@ -2556,7 +2587,6 @@ begin | ||
2556 | 2587 | idx := BrowserTab.TabIndex; |
2557 | 2588 | if (FActiveContent <> nil) and |
2558 | 2589 | (FActiveContent.Thread <> Thread.Thread) and |
2559 | - (FActiveContent.Browser <> nil) and | |
2560 | 2590 | (Assigned(FActiveContent.Browser.Document)) then begin |
2561 | 2591 | try |
2562 | 2592 | try |
@@ -2575,7 +2605,7 @@ begin | ||
2575 | 2605 | ItemBoardImage.Picture := nil; |
2576 | 2606 | BrowserNameLabel.Caption := ''; |
2577 | 2607 | ItemImage.Picture := nil; |
2578 | - BrowserNullTab.Thread := nil; | |
2608 | + BrowserNullTab.Thread := nil; | |
2579 | 2609 | //TOleControl(BrowserNullTab.Browser).Visible := true; |
2580 | 2610 | ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW); |
2581 | 2611 | FActiveContent := nil; |
@@ -2631,9 +2661,7 @@ begin | ||
2631 | 2661 | FActiveContent := Thread; |
2632 | 2662 | |
2633 | 2663 | if not ThreadIsLog then begin |
2634 | - Self.Caption := GikoDataModule.CAPTION_NAME ; | |
2635 | - //Xe[^Xo[É\¦µÄ¢éXÌeÊðÁ | |
2636 | - StatusBar.Panels[THREADSIZE_PANEL].Text := ''; | |
2664 | + Self.Caption := CAPTION_NAME ; | |
2637 | 2665 | try |
2638 | 2666 | s := '<HTML><BODY><CENTER>±ÌXbhÍ澵Ģܹñ</CENTER></BODY></HTML>'; |
2639 | 2667 | doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2; |
@@ -2644,11 +2672,7 @@ begin | ||
2644 | 2672 | finally |
2645 | 2673 | end; |
2646 | 2674 | end else begin |
2647 | - Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']'; | |
2648 | - //Xe[^Xo[É\¦µÄ¢éXÌeÊð\¦ | |
2649 | - StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]); | |
2650 | - StatusBar.Panels[THREADSIZE_PANEL].Width := | |
2651 | - Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70); | |
2675 | + Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']'; | |
2652 | 2676 | //Thread.RepaintÍAXLÌÝèðÏXµ½Æ«AThreadð_E[hµ½Æ« |
2653 | 2677 | //VKÉThreadðJ¢½Æ«É^ÉÈÁÄ¢éB |
2654 | 2678 | if Thread.Repaint then begin |
@@ -2660,7 +2684,7 @@ begin | ||
2660 | 2684 | //GikoSys.CreateHTML2(doc, ThreadItem, sTitle); |
2661 | 2685 | HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle); |
2662 | 2686 | Thread.Browser.OnStatusTextChange := BrowserStatusTextChange; |
2663 | - | |
2687 | + | |
2664 | 2688 | if ThreadItem = nil then begin |
2665 | 2689 | FActiveContent := nil; |
2666 | 2690 | BrowserTab.Repaint; |
@@ -2728,20 +2752,10 @@ begin | ||
2728 | 2752 | ListView.Selected := nil; |
2729 | 2753 | // ListView.Columns.Clear; |
2730 | 2754 | if (FActiveContent <> nil) and (FActiveContent.Thread <> nil) |
2731 | - and (FActiveContent.Thread.IsLogFile) then begin | |
2732 | - try | |
2733 | - Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']' | |
2734 | - except | |
2735 | - on E: Exception do begin | |
2736 | - //XêDLãÈÇÉFActiveContentÌÂThreadª | |
2737 | - //í³êÄ¢éêª éÌű±Ä·é | |
2738 | - ReleaseBrowser(FActiveContent); | |
2739 | - FActiveContent.Thread := nil; | |
2740 | - Self.Caption := GikoDataModule.CAPTION_NAME; | |
2741 | - end; | |
2742 | - end; | |
2743 | - end else | |
2744 | - Self.Caption := GikoDataModule.CAPTION_NAME; | |
2755 | + and (FActiveContent.Thread.IsLogFile) then | |
2756 | + Self.Caption := CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']' | |
2757 | + else | |
2758 | + Self.Caption := CAPTION_NAME; | |
2745 | 2759 | //Application.Title := CAPTION_NAME; |
2746 | 2760 | |
2747 | 2761 | // ActiveListColumnSave; |
@@ -2749,11 +2763,14 @@ begin | ||
2749 | 2763 | Screen.Cursor := crHourGlass; |
2750 | 2764 | try |
2751 | 2765 | if Obj is TBBS then begin |
2752 | - TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked); | |
2766 | + TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked, | |
2767 | + FSortIndex, FSortOrder); | |
2753 | 2768 | end else if Obj is TCategory then begin |
2754 | - TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked); | |
2769 | + TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked, | |
2770 | + FSortIndex, FSortOrder); | |
2755 | 2771 | end else if Obj is TBoard then begin |
2756 | - TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked); | |
2772 | + TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked, | |
2773 | + FSortIndex, FSortOrder); | |
2757 | 2774 | end; |
2758 | 2775 | finally |
2759 | 2776 | Screen.Cursor := crDefault; |
@@ -3497,9 +3514,6 @@ begin | ||
3497 | 3514 | end else if TObject(Node.Data) is TBoard then begin |
3498 | 3515 | TBoard(Node.Data).NodeExpand := False; |
3499 | 3516 | end; |
3500 | - if (TreeView.Selected <> nil) and (TreeView.Selected = Node) then begin | |
3501 | - TreeClick(TreeView.Selected); | |
3502 | - end; | |
3503 | 3517 | end; |
3504 | 3518 | |
3505 | 3519 | procedure TGikoForm.MessageListViewResize(Sender: TObject); |
@@ -3706,6 +3720,8 @@ begin | ||
3706 | 3720 | AddRoundNameMenu(ListReservPMenu); |
3707 | 3721 | end; |
3708 | 3722 | |
3723 | + | |
3724 | +//ActiveListªTBoard©TCategoryÅXêÅPÂÈãIðµÄ¢éÆLøÉÈéActionde¤Ê | |
3709 | 3725 | procedure TGikoForm.TreePopupMenuPopup(Sender: TObject); |
3710 | 3726 | begin |
3711 | 3727 | FClickNode := TreeView.Selected; |
@@ -3801,6 +3817,7 @@ var | ||
3801 | 3817 | idx: Integer; |
3802 | 3818 | wkIntSt: Integer; |
3803 | 3819 | wkIntTo: Integer; |
3820 | + document: IHTMLDocument2; | |
3804 | 3821 | BNum, BRes: string; |
3805 | 3822 | threadItem: TThreadItem; |
3806 | 3823 | begin |
@@ -3888,31 +3905,31 @@ begin | ||
3888 | 3905 | if GikoSys.Setting.ListOrientation = gloHorizontal then begin |
3889 | 3906 | if ViewPanel.Width < 2 then begin |
3890 | 3907 | ViewPanel.Width := 1; |
3891 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL; | |
3892 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN; | |
3908 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
3909 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
3893 | 3910 | GikoSys.Setting.ListWidthState := glsMax; |
3894 | 3911 | end else if ViewPanel.Width > (ThreadMainPanel.Width - 80) then begin |
3895 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX; | |
3896 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL; | |
3912 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
3913 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
3897 | 3914 | GikoSys.Setting.ListWidthState := glsMin; |
3898 | 3915 | end else begin |
3899 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX; | |
3900 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN; | |
3916 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
3917 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
3901 | 3918 | GikoSys.Setting.ListWidthState := glsNormal; |
3902 | 3919 | end; |
3903 | 3920 | end else begin |
3904 | 3921 | if ViewPanel.Height < 2 then begin |
3905 | 3922 | ViewPanel.Height := 1; |
3906 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL; | |
3907 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN; | |
3923 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
3924 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
3908 | 3925 | GikoSys.Setting.ListHeightState := glsMax; |
3909 | 3926 | end else if ViewPanel.Height > (ThreadMainPanel.Height - BrowserCoolBar.Height - 7) then begin |
3910 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX; | |
3911 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL; | |
3927 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
3928 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
3912 | 3929 | GikoSys.Setting.ListHeightState := glsMin; |
3913 | 3930 | end else begin |
3914 | - GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX; | |
3915 | - GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN; | |
3931 | + GikoDM.BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
3932 | + GikoDM.BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
3916 | 3933 | GikoSys.Setting.ListHeightState := glsNormal; |
3917 | 3934 | end; |
3918 | 3935 | end; |
@@ -3928,11 +3945,14 @@ var | ||
3928 | 3945 | idx: Integer; |
3929 | 3946 | begin |
3930 | 3947 | |
3948 | +// if NewTab = -1 then | |
3949 | +// ThreadItem := nil; | |
3931 | 3950 | if not BrowserTab.Dragging then begin |
3932 | 3951 | FTabHintIndex := -1; |
3933 | 3952 | BrowserTab.Hint := ''; |
3934 | 3953 | idx := BrowserTab.TabIndex; |
3935 | 3954 | if idx = -1 then begin |
3955 | + BrowserNullTab.Thread := nil; | |
3936 | 3956 | SetContent(BrowserNullTab); |
3937 | 3957 | |
3938 | 3958 | end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin |
@@ -3958,6 +3978,8 @@ begin | ||
3958 | 3978 | end; |
3959 | 3979 | MoveWindow(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser.Handle, 0, 0, BrowserPanel.Width, BrowserPanel.Height, false); |
3960 | 3980 | TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront; |
3981 | +// GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred; | |
3982 | +// OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred; | |
3961 | 3983 | SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx])); |
3962 | 3984 | |
3963 | 3985 | if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then |
@@ -4144,11 +4166,6 @@ begin | ||
4144 | 4166 | FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2); |
4145 | 4167 | FEvent.OnContextMenu := OnDocumentContextMenu; |
4146 | 4168 | FEvent.OnClick := WebBrowserClick; //ÇÁµ½OnClickCxg |
4147 | - end else begin | |
4148 | - if FEvent <> nil then begin | |
4149 | - FEvent.Free; | |
4150 | - FEvent := nil; | |
4151 | - end; | |
4152 | 4169 | end; |
4153 | 4170 | |
4154 | 4171 | end; |
@@ -4160,19 +4177,17 @@ begin | ||
4160 | 4177 | if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin |
4161 | 4178 | if threadItem.UnRead then begin |
4162 | 4179 | threadItem.UnRead := False; |
4180 | + threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1; | |
4181 | + if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0; | |
4163 | 4182 | TreeView.Refresh; |
4164 | 4183 | ListView.Refresh; |
4165 | 4184 | end; |
4166 | - // XN[æªæ¾OÌXÌÍI[ÉÚ® | |
4167 | - if (StrToIntDef(BrowserRecord.Movement, 0) <= BrowserRecord.Thread.Count) then begin | |
4168 | - BrowserRecord.Move(BrowserRecord.Movement); | |
4169 | - BrowserRecord.Movement := ''; | |
4170 | - end else begin | |
4171 | - BrowserRecord.Move(IntToStr(BrowserRecord.Thread.Count)); | |
4172 | - end; | |
4173 | - | |
4185 | + BrowserRecord.Move(BrowserRecord.Movement); | |
4186 | + BrowserRecord.Movement := ''; | |
4174 | 4187 | end else if threadItem.UnRead then begin |
4175 | 4188 | threadItem.UnRead := False; |
4189 | + threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1; | |
4190 | + if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0; | |
4176 | 4191 | TreeView.Refresh; |
4177 | 4192 | BrowserRecord.Move('new'); |
4178 | 4193 | ListView.Refresh; |
@@ -4322,52 +4337,47 @@ procedure TGikoForm.FavoriteMenuClick(Sender: TObject); | ||
4322 | 4337 | var |
4323 | 4338 | NewMenu: TMenuItem; |
4324 | 4339 | begin |
4325 | - if FavoriteDM.Modified then begin | |
4326 | - FavoriteMenu.Clear; | |
4340 | + FavoriteMenu.Clear; | |
4327 | 4341 | |
4328 | - //¨CÉüèÌÇÁ | |
4329 | - NewMenu := TMenuItem.Create(MainMenu); | |
4330 | - NewMenu.Action := GikoDM.FavoriteAddAction; | |
4331 | - FavoriteMenu.Add(NewMenu); | |
4332 | - //¨CÉüèÌ® | |
4333 | - NewMenu := TMenuItem.Create(FavoriteMenu); | |
4334 | - NewMenu.Action := GikoDM.FavoriteArrangeAction; | |
4335 | - FavoriteMenu.Add(NewMenu); | |
4336 | - //Zp[^ | |
4337 | - FavoriteMenu.InsertNewLineAfter(NewMenu); | |
4338 | - CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu); | |
4339 | - FavoriteDM.Modified := false; | |
4340 | - end; | |
4342 | + //¨CÉüèÌÇÁ | |
4343 | + NewMenu := TMenuItem.Create(MainMenu); | |
4344 | + NewMenu.Action := GikoDM.FavoriteAddAction; | |
4345 | + FavoriteMenu.Add(NewMenu); | |
4346 | + //¨CÉüèÌ® | |
4347 | + NewMenu := TMenuItem.Create(FavoriteMenu); | |
4348 | + NewMenu.Action := GikoDM.FavoriteArrangeAction; | |
4349 | + FavoriteMenu.Add(NewMenu); | |
4350 | + //Zp[^ | |
4351 | + NewMenu := TMenuItem.Create(FavoriteMenu); | |
4352 | + NewMenu.Caption := '-'; | |
4353 | + FavoriteMenu.Add(NewMenu); | |
4354 | + | |
4355 | + CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu); | |
4341 | 4356 | end; |
4342 | 4357 | |
4343 | 4358 | procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem); |
4344 | 4359 | var |
4345 | 4360 | i: Integer; |
4346 | - NewMenu: array of TMenuItem; | |
4361 | + NewMenu: TMenuItem; | |
4347 | 4362 | begin |
4348 | - SetLength(NewMenu, Node.Count); | |
4349 | - Node := Node.getFirstChild; | |
4350 | - i := 0; | |
4351 | - while ( Node <> nil ) do begin | |
4352 | - NewMenu[i] := TFavoriteMenuItem.Create(nil); | |
4353 | - NewMenu[i].AutoHotkeys := maAutomatic; | |
4354 | - NewMenu[i].Caption := CustomStringReplace(Node.Text, '&', '&&'); | |
4355 | - TFavoriteMenuItem(NewMenu[i]).Data := Node.Data; | |
4363 | + for i := 0 to Node.Count - 1 do begin | |
4364 | + NewMenu := TFavoriteMenuItem.Create(Self); | |
4365 | + NewMenu.AutoHotkeys := maAutomatic; | |
4366 | + NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&'); | |
4367 | + TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data; | |
4368 | + MenuItem.Add(NewMenu); | |
4356 | 4369 | |
4357 | - if TObject(Node.Data) is TFavoriteFolder then begin | |
4358 | - NewMenu[i].ImageIndex := GikoDataModule.TOOL_ICON_FAV_FOLDER; | |
4359 | - CreateFavMenu(Node, NewMenu[i]); | |
4360 | - end else if TObject(Node.Data) is TFavoriteBoardItem then begin | |
4361 | - NewMenu[i].ImageIndex := GikoDataModule.TOOL_ICON_FAV_BOARD; | |
4362 | - NewMenu[i].OnClick := FavoriteClick; | |
4363 | - end else if TObject(Node.Data) is TFavoriteThreadItem then begin | |
4364 | - NewMenu[i].ImageIndex := GikoDataModule.TOOL_ICON_FAV_THREAD; | |
4365 | - NewMenu[i].OnClick := FavoriteClick; | |
4370 | + if TObject(Node.Item[i].Data) is TFavoriteFolder then begin | |
4371 | + NewMenu.ImageIndex := TOOL_ICON_FAV_FOLDER; | |
4372 | + CreateFavMenu(Node.Item[i], NewMenu); | |
4373 | + end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin | |
4374 | + NewMenu.ImageIndex := TOOL_ICON_FAV_BOARD; | |
4375 | + NewMenu.OnClick := FavoriteClick; | |
4376 | + end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin | |
4377 | + NewMenu.ImageIndex := TOOL_ICON_FAV_THREAD; | |
4378 | + NewMenu.OnClick := FavoriteClick; | |
4366 | 4379 | end; |
4367 | - Inc(i); | |
4368 | - Node := Node.getNextSibling; | |
4369 | 4380 | end; |
4370 | - MenuItem.Add(NewMenu); | |
4371 | 4381 | end; |
4372 | 4382 | |
4373 | 4383 | procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject ); |
@@ -4431,7 +4441,9 @@ end; | ||
4431 | 4441 | |
4432 | 4442 | procedure TGikoForm.FavoriteClick(Sender: TObject); |
4433 | 4443 | begin |
4444 | + | |
4434 | 4445 | FavoriteClick( Sender, True ); |
4446 | + | |
4435 | 4447 | end; |
4436 | 4448 | |
4437 | 4449 | procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean); |
@@ -4533,8 +4545,11 @@ begin | ||
4533 | 4545 | //===== vOC |
4534 | 4546 | try |
4535 | 4547 | //ìÆ// |
4548 | + //bi := High( BoardPlugIns ); | |
4536 | 4549 | bi := Length(BoardGroups) - 1; |
4550 | + //for i := Low( BoardPlugIns ) to bi do begin | |
4537 | 4551 | for i := 1 to bi do begin |
4552 | + //if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin | |
4538 | 4553 | if (BoardGroups[i].BoardPlugIn <> nil) and (Assigned(Pointer(BoardGroups[i].BoardPlugIn.Module))) then begin |
4539 | 4554 | case BoardGroups[i].BoardPlugIn.AcceptURL( inURL ) of |
4540 | 4555 | atThread: |
@@ -4580,12 +4595,8 @@ begin | ||
4580 | 4595 | GikoSys.GetPopupResNumber( inURL, stRes, edRes ); |
4581 | 4596 | browserRec := InsertBrowserTab( ThreadItem ); |
4582 | 4597 | if ThreadItem.IsLogFile then begin |
4583 | - if (browserRec <> nil) and (stRes > 0) then begin | |
4584 | - browserRec.Movement := IntToStr( stRes ); | |
4585 | - if (stRes > ThreadItem.Count) then begin | |
4586 | - DownloadContent( ThreadItem ); | |
4587 | - end; | |
4588 | - end; | |
4598 | + if (browserRec <> nil) and (stRes > 0) then | |
4599 | + browserRec.Move(IntToStr( stRes )); | |
4589 | 4600 | end else begin |
4590 | 4601 | if (browserRec <> nil) and (stRes > 0) then |
4591 | 4602 | browserRec.Movement := IntToStr( stRes ); |
@@ -4684,12 +4695,8 @@ begin | ||
4684 | 4695 | if ThreadItem.IsLogFile then begin |
4685 | 4696 | GikoSys.GetPopupResNumber( inURL, stRes, edRes ); |
4686 | 4697 | browserRec := InsertBrowserTab(ThreadItem); |
4687 | - if (browserRec <> nil) and (stRes > 0) then begin | |
4698 | + if (browserRec <> nil) and (stRes > 0) then | |
4688 | 4699 | browserRec.Movement := IntToStr( stRes ); |
4689 | - if (stRes > ThreadItem.Count) then begin | |
4690 | - DownloadContent(ThreadItem); | |
4691 | - end; | |
4692 | - end; | |
4693 | 4700 | end else begin |
4694 | 4701 | if AnsiPos(Host, Board.URL) = 0 then |
4695 | 4702 | ThreadItem.DownloadHost := Host |
@@ -4950,42 +4957,26 @@ begin | ||
4950 | 4957 | |
4951 | 4958 | SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW); |
4952 | 4959 | ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE); |
4953 | - FPreviewBrowserRect := ARect; | |
4960 | + | |
4954 | 4961 | // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE); |
4955 | 4962 | // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW); |
4956 | 4963 | |
4957 | 4964 | end; |
4958 | 4965 | |
4959 | 4966 | procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor); |
4960 | -var | |
4961 | - Pos : TPoint; | |
4962 | 4967 | begin |
4963 | - | |
4964 | 4968 | if PreviewTimer.Enabled then |
4965 | 4969 | PreviewTimer.Enabled := False; |
4966 | 4970 | if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin |
4967 | 4971 | FHint.ReleaseHandle; |
4968 | 4972 | FHint.ClearAllRes; |
4969 | 4973 | end; |
4970 | - | |
4971 | - if (FPreviewBrowser <> nil) | |
4972 | - and (IsWindowVisible(FPreviewBrowser.Handle)) then begin | |
4973 | - //±±ÅÁ³êé̪âè | |
4974 | - //½Ôñ±êÅ\¦ÍÍ»èÅ«Ä¢é͸ | |
4975 | - Pos := Mouse.CursorPos; | |
4976 | - Pos.X := Pos.X + Left; | |
4977 | - Pos.Y := Pos.Y + Top; | |
4978 | - if (FPreviewBrowserRect.Left > Pos.X) or | |
4979 | - (FPreviewBrowserRect.Right < Pos.X) or | |
4980 | - (FPreviewBrowserRect.Top > Pos.Y) or | |
4981 | - (FPreviewBrowserRect.Bottom < Pos.Y) then begin | |
4982 | - ShowWindow(FPreviewBrowser.Handle, SW_HIDE); | |
4983 | - end; | |
4984 | - end; | |
4985 | - | |
4974 | + if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then | |
4975 | + ShowWindow(FPreviewBrowser.Handle, SW_HIDE); | |
4986 | 4976 | Message.Result := 1; |
4987 | 4977 | inherited; |
4988 | 4978 | end; |
4979 | + | |
4989 | 4980 | procedure TGikoForm.MessageHideButtonClick(Sender: TObject); |
4990 | 4981 | begin |
4991 | 4982 | GikoDM.MsgBarCloseAction.Execute; |
@@ -5105,12 +5096,12 @@ begin | ||
5105 | 5096 | CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem); |
5106 | 5097 | LinkBarPopupMenu.Items.Add(MenuItem); |
5107 | 5098 | ToolButton.MenuItem := MenuItem; |
5108 | - ToolButton.ImageIndex := GikoDataModule.TOOL_ICON_FAV_FOLDER; | |
5099 | + ToolButton.ImageIndex := TOOL_ICON_FAV_FOLDER; | |
5109 | 5100 | end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteBoardItem then begin |
5110 | - ToolButton.ImageIndex := GikoDataModule.TOOL_ICON_FAV_BOARD; | |
5101 | + ToolButton.ImageIndex := TOOL_ICON_FAV_BOARD; | |
5111 | 5102 | ToolButton.OnClick := FavoriteClick; |
5112 | 5103 | end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteThreadItem then begin |
5113 | - ToolButton.ImageIndex := GikoDataModule.TOOL_ICON_FAV_THREAD; | |
5104 | + ToolButton.ImageIndex := TOOL_ICON_FAV_THREAD; | |
5114 | 5105 | ToolButton.OnClick := FavoriteClick; |
5115 | 5106 | end; |
5116 | 5107 | ToolButton.Caption := FavoriteTreeView.Items[i].Item[j].Text; |
@@ -5658,13 +5649,16 @@ function TGikoForm.FindToolBarButton( bar : TToolBar; action : TAction ) : TTool | ||
5658 | 5649 | var |
5659 | 5650 | i : Integer; |
5660 | 5651 | begin |
5661 | - Result := nil; | |
5652 | + | |
5662 | 5653 | for i := bar.ButtonCount - 1 downto 0 do begin |
5663 | 5654 | if bar.Buttons[ i ].Action = action then begin |
5664 | 5655 | Result := bar.Buttons[ i ]; |
5665 | - Break; | |
5656 | + Exit; | |
5666 | 5657 | end; |
5667 | 5658 | end; |
5659 | + | |
5660 | + Result := nil; | |
5661 | + | |
5668 | 5662 | end; |
5669 | 5663 | |
5670 | 5664 | procedure TGikoForm.SetToolBarPopup; |
@@ -5818,8 +5812,8 @@ begin | ||
5818 | 5812 | |
5819 | 5813 | if Length( SelectComboBox.Text ) = 0 then |
5820 | 5814 | begin |
5821 | - SelectComboBox.Text := GikoDataModule.SELECTCOMBOBOX_NAME; | |
5822 | - SelectComboBox.Color := GikoDataModule.SELECTCOMBOBOX_COLOR; | |
5815 | + SelectComboBox.Text := SELECTCOMBOBOX_NAME; | |
5816 | + SelectComboBox.Color := SELECTCOMBOBOX_COLOR; | |
5823 | 5817 | end; |
5824 | 5818 | |
5825 | 5819 | end; |
@@ -5854,6 +5848,7 @@ begin | ||
5854 | 5848 | end; |
5855 | 5849 | |
5856 | 5850 | |
5851 | +// SÄÌXð\¦ | |
5857 | 5852 | procedure TGikoForm.SelectComboBoxSplitterMouseMove(Sender: TObject; |
5858 | 5853 | Shift: TShiftState; X, Y: Integer); |
5859 | 5854 | var |
@@ -5913,15 +5908,14 @@ end; | ||
5913 | 5908 | procedure TGikoForm.StatusBarResize(Sender: TObject); |
5914 | 5909 | begin |
5915 | 5910 | StatusBar.Panels[1].Width := StatusBar.Width - |
5916 | - StatusBar.Panels[0].Width - | |
5917 | - StatusBar.Panels[THREADSIZE_PANEL].Width - | |
5918 | - StatusBar.Panels[NGWORDNAME_PANEL].Width; | |
5911 | + StatusBar.Panels[0].Width - | |
5912 | + StatusBar.Panels[2].Width; | |
5919 | 5913 | end; |
5920 | 5914 | procedure TGikoForm.SelectComboBoxEnter(Sender: TObject); |
5921 | 5915 | begin |
5922 | 5916 | |
5923 | 5917 | if (Length( SelectComboBox.Text ) = 0) or |
5924 | - (SelectComboBox.Text = GikoDataModule.SELECTCOMBOBOX_NAME) then | |
5918 | + (SelectComboBox.Text = SELECTCOMBOBOX_NAME) then | |
5925 | 5919 | begin |
5926 | 5920 | SelectComboBox.Text := ''; |
5927 | 5921 | SelectComboBox.Color := clWindow; |
@@ -5929,6 +5923,7 @@ begin | ||
5929 | 5923 | |
5930 | 5924 | end; |
5931 | 5925 | |
5926 | +//¼õ | |
5932 | 5927 | procedure TGikoForm.FavoriteMoveTo( SenderNode, SourceNode: TTreeNode ); |
5933 | 5928 | begin |
5934 | 5929 |
@@ -6053,8 +6048,6 @@ begin | ||
6053 | 6048 | FDropSpaceNode := nil; |
6054 | 6049 | end; |
6055 | 6050 | end; |
6056 | - //XVµ½±Æð³¦é | |
6057 | - FavoriteDM.Modified := true; | |
6058 | 6051 | |
6059 | 6052 | SetLinkBar; |
6060 | 6053 |
@@ -6063,8 +6056,6 @@ end; | ||
6063 | 6056 | procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject; |
6064 | 6057 | Node: TTreeNode; var S: String); |
6065 | 6058 | begin |
6066 | - //XVµ½±Æð³¦é | |
6067 | - FavoriteDM.Modified := true; | |
6068 | 6059 | |
6069 | 6060 | FavoriteTreeView.ReadOnly := True; |
6070 | 6061 | SetLinkBar; |
@@ -6092,10 +6083,7 @@ begin | ||
6092 | 6083 | FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded; |
6093 | 6084 | end; |
6094 | 6085 | VK_SPACE: |
6095 | - begin | |
6096 | - FClickNode := FavoriteTreeView.Selected; | |
6097 | - GikoDM.FavoriteTreeViewReloadActionExecute( Sender ); | |
6098 | - end; | |
6086 | + FavoriteTreeViewDblClick( Sender ); | |
6099 | 6087 | end; |
6100 | 6088 | end else begin |
6101 | 6089 | //ÒWÉESCðµ½çAÒWðI¹µÄA³Ì¶ñÉß· |
@@ -6228,6 +6216,27 @@ begin | ||
6228 | 6216 | end; |
6229 | 6217 | |
6230 | 6218 | end; |
6219 | +// ************************************************************************* | |
6220 | +//! ¨CÉüèc[Ì_uNbNCxg | |
6221 | +// ************************************************************************* | |
6222 | +procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject); | |
6223 | +var | |
6224 | + pos : TPoint; | |
6225 | + rect: TRect; | |
6226 | +begin | |
6227 | + //NbNÌIðCxgƯ¶Èç_uNbNÀs | |
6228 | + pos := FMouseDownPos; | |
6229 | + if (FClickNode <> nil) and (FClickNode = FavoriteTreeView.GetNodeAt(pos.X, pos.Y)) then begin | |
6230 | + //}EXªnodeÌãÉ¢é© | |
6231 | + rect := FClickNode.DisplayRect(true); | |
6232 | + if ((rect.Left <= pos.X) and (rect.Right >= pos.X)) and | |
6233 | + ((rect.Bottom >= pos.Y) and (rect.Top <= pos.Y)) then begin | |
6234 | + GikoDM.FavoriteTreeViewReloadActionExecute( Sender ); | |
6235 | + FClickNode := nil; | |
6236 | + end; | |
6237 | + end; | |
6238 | +end; | |
6239 | + | |
6231 | 6240 | function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode; |
6232 | 6241 | var |
6233 | 6242 | Found: TTreeNode; |
@@ -6313,8 +6322,6 @@ begin | ||
6313 | 6322 | finally |
6314 | 6323 | FDropSpaceNode := nil; |
6315 | 6324 | end; |
6316 | - //XVµ½±Æð³¦é | |
6317 | - FavoriteDM.Modified := true; | |
6318 | 6325 | SetLinkBar; |
6319 | 6326 | end; |
6320 | 6327 |
@@ -6423,7 +6430,7 @@ begin | ||
6423 | 6430 | tmp := GikoSys.ReadThreadFile(FileName, Number); |
6424 | 6431 | end; |
6425 | 6432 | if tmp <> '' then begin |
6426 | - THTMLCreate.DivideStrLine(tmp, @Res); | |
6433 | + Res := DivideStrLine(tmp); | |
6427 | 6434 | |
6428 | 6435 | Header := IntToStr(Number) + ' F' + Res.FName + ' F' + Res.FDateTime + #13#10; |
6429 | 6436 | if ReplaceTag then begin |
@@ -6445,7 +6452,7 @@ begin | ||
6445 | 6452 | end; |
6446 | 6453 | Body := CustomStringReplace(Body, '</a>', '',true); |
6447 | 6454 | |
6448 | - Body := HTMLCreater.DeleteLink(Body); | |
6455 | + Body := GikoSys.DeleteLink(Body); | |
6449 | 6456 | if ReplaceTag then begin |
6450 | 6457 | Body := CustomStringReplace(Body, '<', '<'); |
6451 | 6458 | Body := CustomStringReplace(Body, '>', '>'); |
@@ -6658,8 +6665,13 @@ begin | ||
6658 | 6665 | |
6659 | 6666 | end; |
6660 | 6667 | // ************************************************************************* |
6661 | -//! c[r [ÌKeyDownCxg | |
6668 | +//! c[r [ÌNbNCxg | |
6662 | 6669 | // ************************************************************************* |
6670 | +procedure TGikoForm.TreeViewClick(Sender: TObject); | |
6671 | +begin | |
6672 | + FClickNode := TreeView.Selected; | |
6673 | + FMouseDownPos := TreeView.ScreenToClient(Mouse.CursorPos); | |
6674 | +end; | |
6663 | 6675 | procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word; |
6664 | 6676 | Shift: TShiftState); |
6665 | 6677 | begin |
@@ -6672,35 +6684,21 @@ begin | ||
6672 | 6684 | TreeView.Selected.Expanded := not TreeView.Selected.Expanded; |
6673 | 6685 | end; |
6674 | 6686 | end; |
6675 | -//! ¨CÉüèÌMouseDownCxg | |
6687 | + | |
6676 | 6688 | procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject; |
6677 | 6689 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
6678 | 6690 | var |
6679 | 6691 | favItem : TTreeNode; |
6680 | 6692 | favThreadItem : TFavoriteThreadItem; |
6681 | - rect: TRect; | |
6682 | 6693 | begin |
6694 | + | |
6683 | 6695 | case Button of |
6684 | - mbLeft: | |
6696 | +{ mbLeft: | |
6685 | 6697 | begin |
6686 | - if not (ssAlt in Shift) and (FavoriteTreeView.Selected <> nil) and | |
6687 | - (FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y)) then begin | |
6688 | - //}EXªnodeÌãÉ¢é© | |
6689 | - rect := FavoriteTreeView.Selected.DisplayRect(true); | |
6690 | - if ((rect.Left <= X) and (rect.Right >= X)) and | |
6691 | - ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin | |
6692 | - if ssDouble in Shift then begin | |
6693 | - FClickNode := FavoriteTreeView.Selected; | |
6694 | - GikoDM.FavoriteTreeViewReloadActionExecute(Sender); | |
6695 | - FClickNode := nil; | |
6696 | - end else begin | |
6697 | - FavoriteClick( | |
6698 | - TObject(FavoriteTreeView.Selected)); | |
6699 | - end; | |
6700 | - end; | |
6701 | - end; | |
6698 | + FMouseDownPos.X := X; | |
6699 | + FMouseDownPos.Y := Y; | |
6702 | 6700 | end; |
6703 | - mbMiddle: | |
6701 | +} mbMiddle: | |
6704 | 6702 | begin |
6705 | 6703 | favItem := FavoriteTreeView.GetNodeAt( X, Y ); |
6706 | 6704 | if favItem = nil then Exit; |
@@ -6760,6 +6758,16 @@ end; | ||
6760 | 6758 | // ************************************************************************* |
6761 | 6759 | //! ¨CÉüèc[Ì}EXAbvCxg |
6762 | 6760 | // ************************************************************************* |
6761 | +procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject; | |
6762 | + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
6763 | +begin | |
6764 | + if (Button = mbLeft) and not (ssDouble in Shift) then begin | |
6765 | + if (FClickNode <> nil) and (FClickNode = FavoriteTreeView.GetNodeAt(X, Y)) then begin | |
6766 | + FavoriteClick( TObject( FClickNode ) ); | |
6767 | + end; | |
6768 | + end; | |
6769 | +end; | |
6770 | + | |
6763 | 6771 | function TGikoForm.WebBrowserClick(Sender: TObject): WordBool; |
6764 | 6772 | var |
6765 | 6773 | p : TPoint; |
@@ -6838,21 +6846,18 @@ var | ||
6838 | 6846 | rec : TBrowserRecord; |
6839 | 6847 | i, bound : Integer; |
6840 | 6848 | begin |
6841 | - bound := BrowserTab.Tabs.Count -1; | |
6849 | + bound := BrowserTab.Tabs.Count -1; | |
6842 | 6850 | if bound = -1 then begin |
6843 | 6851 | Result := False; |
6844 | 6852 | Exit; //forÉòÎÈ¢Åìð²¯é |
6845 | - end; | |
6853 | + end; | |
6846 | 6854 | |
6847 | - for i := 0 to bound do begin | |
6848 | - try | |
6849 | - rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] ); | |
6850 | - if( rec <> nil) and (rec.Thread <> nil) then | |
6851 | - AStringList.Add( rec.Thread.URL ); | |
6852 | - except | |
6853 | - end; | |
6854 | - end; | |
6855 | - Result := True; | |
6855 | + for i := 0 to bound do begin | |
6856 | + rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] ); | |
6857 | + if( rec <> nil) and (rec.Thread <> nil) then | |
6858 | + AStringList.Add( rec.Thread.URL ); | |
6859 | + end; | |
6860 | + Result := True; | |
6856 | 6861 | end; |
6857 | 6862 | |
6858 | 6863 | function TGikoForm.SaveTabURLs : Boolean; |
@@ -6867,15 +6872,12 @@ begin | ||
6867 | 6872 | SaveStringList := TStringList.Create; |
6868 | 6873 | try |
6869 | 6874 | if GetTabURLs(SaveStringList) then begin |
6870 | - try | |
6871 | - if FileExists( GikoSys.GetAppDir + Filename) then begin | |
6872 | - if FileExists( GikoSys.GetAppDir + bFilename) then | |
6873 | - DeleteFile(GikoSys.GetAppDir + bFilename); | |
6875 | + if FileExists( GikoSys.GetAppDir + Filename) then begin | |
6876 | + if FileExists( GikoSys.GetAppDir + bFilename) then | |
6877 | + DeleteFile(GikoSys.GetAppDir + bFilename); | |
6874 | 6878 | |
6875 | - //obNAbvðìéB | |
6876 | - RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename); | |
6877 | - end; | |
6878 | - except | |
6879 | + //obNAbvðìéB | |
6880 | + RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename); | |
6879 | 6881 | end; |
6880 | 6882 | SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename); |
6881 | 6883 | Result := true; |
@@ -6886,8 +6888,6 @@ begin | ||
6886 | 6888 | end; |
6887 | 6889 | |
6888 | 6890 | function TGikoForm.LoadTabURLs : Boolean; |
6889 | -const | |
6890 | - TABFILE = 'tab.sav'; | |
6891 | 6891 | var |
6892 | 6892 | i, bound : Integer; |
6893 | 6893 | item : TThreadItem; |
@@ -6896,7 +6896,7 @@ var | ||
6896 | 6896 | fileName : string; |
6897 | 6897 | begin |
6898 | 6898 | |
6899 | - fileName := ExtractFilePath(Application.ExeName) + TABFILE; | |
6899 | + fileName := ExtractFilePath(Application.ExeName) + 'tab.sav'; | |
6900 | 6900 | URLs := TStringList.Create(); |
6901 | 6901 | GikoTab := GikoSys.Setting.BrowserTabAppend; |
6902 | 6902 | try |
@@ -6912,10 +6912,6 @@ begin | ||
6912 | 6912 | if item <> nil then |
6913 | 6913 | InsertBrowserTab( item, false ); |
6914 | 6914 | end; |
6915 | - //ÅÌPÉÝè AhXÌÝè̽ßÌJÄÑ | |
6916 | - if BrowserTab.Tabs.Count > 0 then begin | |
6917 | - BrowserTab.OnChange(nil); | |
6918 | - end; | |
6919 | 6915 | end else |
6920 | 6916 | Result := False; |
6921 | 6917 | end else |
@@ -7635,6 +7631,61 @@ begin | ||
7635 | 7631 | end; |
7636 | 7632 | end; |
7637 | 7633 | // ************************************************************************* |
7634 | +//! ¨CÉüèc[ÌNbNCxg | |
7635 | +// ************************************************************************* | |
7636 | +procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject); | |
7637 | +begin | |
7638 | + //»ÝIð³êÄ¢éACeðÛ¶ | |
7639 | + FClickNode := FavoriteTreeView.Selected; | |
7640 | + FMouseDownPos := FavoriteTreeView.ScreenToClient(Mouse.CursorPos); | |
7641 | +end; | |
7642 | +// ************************************************************************* | |
7643 | +//! ¨CÉüèc[ÌACeÌk¬Cxg | |
7644 | +// ************************************************************************* | |
7645 | +procedure TGikoForm.FavoriteTreeViewCollapsing(Sender: TObject; | |
7646 | + Node: TTreeNode; var AllowCollapse: Boolean); | |
7647 | +begin | |
7648 | + //k¬³ê½çÛ¶³êÄ¢éNbNIðACeðNA | |
7649 | + FClickNode := nil; | |
7650 | +end; | |
7651 | +// ************************************************************************* | |
7652 | +//! ¨CÉüèc[ÌACeÌWJCxg | |
7653 | +// ************************************************************************* | |
7654 | +procedure TGikoForm.FavoriteTreeViewExpanding(Sender: TObject; | |
7655 | + Node: TTreeNode; var AllowExpansion: Boolean); | |
7656 | +begin | |
7657 | + //WJ³ê½çÛ¶³êÄ¢éNbNIðACeðNA | |
7658 | + FClickNode := nil; | |
7659 | +end; | |
7660 | +// ************************************************************************* | |
7661 | +//! c[r [ÌACeÌk¬Cxg | |
7662 | +// ************************************************************************* | |
7663 | +procedure TGikoForm.TreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
7664 | + var AllowCollapse: Boolean); | |
7665 | +begin | |
7666 | + FClickNode := nil; | |
7667 | +end; | |
7668 | +// ************************************************************************* | |
7669 | +//! c[r [ÌACeÌWJCxg | |
7670 | +// ************************************************************************* | |
7671 | +procedure TGikoForm.TreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
7672 | + var AllowExpansion: Boolean); | |
7673 | +begin | |
7674 | + FClickNode := nil; | |
7675 | +end; | |
7676 | +// ************************************************************************* | |
7677 | +//! c[r [Ì}EXAbvCxg | |
7678 | +// ************************************************************************* | |
7679 | +procedure TGikoForm.TreeViewMouseUp(Sender: TObject; Button: TMouseButton; | |
7680 | + Shift: TShiftState; X, Y: Integer); | |
7681 | +begin | |
7682 | + if (Button = mbLeft) and not (ssDouble in Shift) then begin | |
7683 | + if (FClickNode <> nil) and (FClickNode = TreeView.GetNodeAt(X, Y)) then begin | |
7684 | + TreeClick(FClickNode); | |
7685 | + end; | |
7686 | + end; | |
7687 | +end; | |
7688 | +// ************************************************************************* | |
7638 | 7689 | //! _E[hRg[Xbh̶¬ |
7639 | 7690 | // ************************************************************************* |
7640 | 7691 | procedure TGikoForm.CreateControlThread(); |
@@ -7742,32 +7793,6 @@ begin | ||
7742 | 7793 | except |
7743 | 7794 | end; |
7744 | 7795 | end; |
7745 | -//! LrlbgÌ}EX_ECxg | |
7746 | -procedure TGikoForm.TreeViewMouseDown(Sender: TObject; | |
7747 | - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
7748 | -var | |
7749 | - rect : TRect; | |
7750 | -begin | |
7751 | - case Button of | |
7752 | - mbLeft: | |
7753 | - begin | |
7754 | - if (TreeView.Selected <> nil) and | |
7755 | - (TreeView.Selected = TreeView.GetNodeAt(X, Y)) then begin | |
7756 | - //}EXªnodeÌãÉ¢é© | |
7757 | - rect := TreeView.Selected.DisplayRect(true); | |
7758 | - if ((rect.Left <= X) and (rect.Right >= X)) and | |
7759 | - ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin | |
7760 | - // NbNÆ_uNbNðRRÅ»è | |
7761 | - if ssDouble in Shift then begin | |
7762 | - TreeDoubleClick( TreeView.Selected ); | |
7763 | - end else begin | |
7764 | - TreeClick(TreeView.Selected); | |
7765 | - end; | |
7766 | - end; | |
7767 | - end; | |
7768 | - end; | |
7769 | - end; | |
7770 | -end; | |
7771 | 7796 | |
7772 | 7797 | initialization |
7773 | 7798 | OleInitialize(nil); |
@@ -1030,6 +1030,13 @@ object GikoDM: TGikoDM | ||
1030 | 1030 | ImageIndex = 44 |
1031 | 1031 | OnExecute = SelectItemSaveForDatExecute |
1032 | 1032 | end |
1033 | + object FileSaveAs1: TFileSaveAs | |
1034 | + Tag = -1 | |
1035 | + Category = #12501#12449#12452#12523 | |
1036 | + Caption = #21517#21069#12434#20184#12369#12390#20445#23384'(&A)...' | |
1037 | + Hint = #21029#21517#12391#20445#23384'|'#29694#22312#12398#12501#12449#12452#12523#12395#26032#12375#12356#21517#21069#12434#12388#12369#12390#20445#23384 | |
1038 | + ImageIndex = 44 | |
1039 | + end | |
1033 | 1040 | object LogFolderOpenAction: TAction |
1034 | 1041 | Category = #26495 |
1035 | 1042 | Caption = 'Explorer'#12391'Log'#12501#12457#12523#12480#12434#38283#12367 |
@@ -1195,12 +1202,6 @@ object GikoDM: TGikoDM | ||
1195 | 1202 | Hint = #12462#12467#12490#12499'Wiki'#12398'FAQ'#12434#34920#31034#12377#12427 |
1196 | 1203 | OnExecute = WikiFAQWebPageActionExecute |
1197 | 1204 | end |
1198 | - object ThreadSizeCalcForFileAction: TAction | |
1199 | - Category = #12484#12540#12523 | |
1200 | - Caption = #12473#12524#12483#12489#12398#23481#37327#12434#12501#12449#12452#12523#12363#12425#20877#35336#31639#12377#12427 | |
1201 | - Hint = #12473#12524#12483#12489#12398#23481#37327#12434#12501#12449#12452#12523#12363#12425#20877#35336#31639#12377#12427 | |
1202 | - OnExecute = ThreadSizeCalcForFileActionExecute | |
1203 | - end | |
1204 | 1205 | end |
1205 | 1206 | object ToobarImageList: TImageList |
1206 | 1207 | Left = 44 |
@@ -3193,8 +3194,4 @@ object GikoDM: TGikoDM | ||
3193 | 3194 | F81FE0FFE007FFFFF83FFFFFF81FFFFF00000000000000000000000000000000 |
3194 | 3195 | 000000000000} |
3195 | 3196 | end |
3196 | - object SaveDialog: TSaveDialog | |
3197 | - Left = 48 | |
3198 | - Top = 128 | |
3199 | - end | |
3200 | 3197 | end |
@@ -11,38 +11,7 @@ uses | ||
11 | 11 | SHDocVw_TLB, |
12 | 12 | MSHTML_TLB, |
13 | 13 | {$IFEND} |
14 | - ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs; | |
15 | - | |
16 | -const | |
17 | - CAPTION_NAME: string = 'MRir'; | |
18 | - USER_SETLINKBAR = WM_USER + 2003; | |
19 | - | |
20 | - ITEM_ICON_SORT1 = 12; //!< \[gACR | |
21 | - ITEM_ICON_SORT2 = 13; //!< \[gACR | |
22 | - | |
23 | - //c[o[ACR | |
24 | - TOOL_ICON_HEIGHT_MAX = 16; //!< ³ÅåACR | |
25 | - TOOL_ICON_HEIGHT_MIN = 17; //!< ³Å¬ACR | |
26 | - TOOL_ICON_HEIGHT_NORMAL = 18; //!< ³WACR | |
27 | - TOOL_ICON_WIDTH_MAX = 19; //!< ÅåACR | |
28 | - TOOL_ICON_WIDTH_MIN = 20; //!< ŬACR | |
29 | - TOOL_ICON_WIDTH_NORMAL = 21; //!< WACR | |
30 | - | |
31 | - TOOL_ICON_FAV_FOLDER = 30; //!< ¨CÉüètH_ACR | |
32 | - TOOL_ICON_FAV_BOARD = 31; //!< ¨CÉüèÂACR | |
33 | - TOOL_ICON_FAV_THREAD = 32; //!< ¨CÉüèXACR | |
34 | - | |
35 | - //! MRirTCgÌURL | |
36 | - URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/'; | |
37 | - //! MonazillaTCgÌURL | |
38 | - URL_MONAZILLA: string = 'http://www.monazilla.org/'; | |
39 | - //! 2¿áñËéÌURL | |
40 | - URL_2ch: string = 'http://www.2ch.net/'; | |
41 | - //! MRirWikiÌURL | |
42 | - URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ'; | |
43 | - | |
44 | - SELECTCOMBOBOX_NAME: string = ''; // 'Xbhiõ'; | |
45 | - SELECTCOMBOBOX_COLOR: TColor = clWindow; | |
14 | + ComCtrls, BrowserRecord; | |
46 | 15 | |
47 | 16 | |
48 | 17 | type |
@@ -185,6 +154,7 @@ type | ||
185 | 154 | BrowserMaxAndFocusAction: TAction; |
186 | 155 | SelectItemSaveForHTML: TAction; |
187 | 156 | SelectItemSaveForDat: TAction; |
157 | + FileSaveAs1: TFileSaveAs; | |
188 | 158 | LogFolderOpenAction: TAction; |
189 | 159 | TabsSaveAction: TAction; |
190 | 160 | TabsOpenAction: TAction; |
@@ -210,8 +180,6 @@ type | ||
210 | 180 | UnSelectedListViewAction: TAction; |
211 | 181 | WikiFAQWebPageAction: TAction; |
212 | 182 | ToobarImageList: TImageList; |
213 | - SaveDialog: TSaveDialog; | |
214 | - ThreadSizeCalcForFileAction: TAction; | |
215 | 183 | procedure EditNGActionExecute(Sender: TObject); |
216 | 184 | procedure ReloadActionExecute(Sender: TObject); |
217 | 185 | procedure GoFowardActionExecute(Sender: TObject); |
@@ -393,22 +361,10 @@ type | ||
393 | 361 | procedure MidokuActionExecute(Sender: TObject); |
394 | 362 | procedure AllSelectActionExecute(Sender: TObject); |
395 | 363 | procedure AllSelectActionUpdate(Sender: TObject); |
396 | - procedure ThreadSizeCalcForFileActionExecute(Sender: TObject); | |
397 | 364 | private |
398 | 365 | { Private é¾ } |
399 | - procedure ClearResFilter; | |
400 | - procedure SetResRange(range: Integer); | |
401 | - procedure SetThreadAreaHorNormal; | |
402 | - procedure SetThreadAreaHorizontal(gls : TGikoListState); | |
403 | - procedure SetThreadAreaVerNormal; | |
404 | - procedure SetThreadAreaVertical(gls : TGikoListState); | |
405 | - procedure SetThreadReadProperty(read: Boolean); | |
406 | - procedure SelectThreadSaveToFile(dat: Boolean); | |
407 | - function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean; | |
408 | - procedure RecalcThreadSize(limit : Integer); | |
409 | 366 | public |
410 | 367 | { Public é¾ } |
411 | - procedure RepaintStatusBar; | |
412 | 368 | published |
413 | 369 | { Published é¾ } |
414 | 370 | //! TActionÅGetActiveContentªnilÈOÅLøÉÈé |
@@ -426,16 +382,46 @@ var | ||
426 | 382 | implementation |
427 | 383 | |
428 | 384 | uses |
429 | - Windows, Math, Clipbrd, | |
385 | + Windows, Math, Messages, Dialogs, Clipbrd, | |
430 | 386 | Giko, GikoSystem, GikoUtil, BoardGroup, |
431 | - FavoriteArrange, Favorite, MojuUtils, | |
387 | + FavoriteArrange, Favorite, Setting, MojuUtils, | |
432 | 388 | Editor, ListSelect, Search, Option, Round, |
433 | 389 | KeySetting, Gesture, Kotehan, ToolBarSetting, |
434 | 390 | ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon, |
435 | - GikoBayesian, About, ShellAPI, | |
391 | + GikoBayesian, About, ShellAPI, Graphics, | |
436 | 392 | RoundName, RoundData, Menus, ListViewUtils, |
437 | - ThreadControl, GikoMessage; | |
393 | + ThreadControl; | |
438 | 394 | |
395 | +const | |
396 | + CAPTION_NAME: string = 'MRir'; | |
397 | + USER_SETLINKBAR = WM_USER + 2003; | |
398 | + | |
399 | + ITEM_ICON_SORT1 = 12; //!< \[gACR | |
400 | + ITEM_ICON_SORT2 = 13; //!< \[gACR | |
401 | + | |
402 | + //c[o[ACR | |
403 | + TOOL_ICON_HEIGHT_MAX = 16; //!< ³ÅåACR | |
404 | + TOOL_ICON_HEIGHT_MIN = 17; //!< ³Å¬ACR | |
405 | + TOOL_ICON_HEIGHT_NORMAL = 18; //!< ³WACR | |
406 | + TOOL_ICON_WIDTH_MAX = 19; //!< ÅåACR | |
407 | + TOOL_ICON_WIDTH_MIN = 20; //!< ŬACR | |
408 | + TOOL_ICON_WIDTH_NORMAL = 21; //!< WACR | |
409 | + | |
410 | + TOOL_ICON_FAV_FOLDER = 30; //!< ¨CÉüètH_ACR | |
411 | + TOOL_ICON_FAV_BOARD = 31; //!< ¨CÉüèÂACR | |
412 | + TOOL_ICON_FAV_THREAD = 32; //!< ¨CÉüèXACR | |
413 | + | |
414 | + //! MRirTCgÌURL | |
415 | + URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/'; | |
416 | + //! MonazillaTCgÌURL | |
417 | + URL_MONAZILLA: string = 'http://www.monazilla.org/'; | |
418 | + //! 2¿áñËéÌURL | |
419 | + URL_2ch: string = 'http://www.2ch.net/'; | |
420 | + //! MRirWikiÌURL | |
421 | + URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ'; | |
422 | + | |
423 | + SELECTCOMBOBOX_NAME: string = ''; // 'Xbhiõ'; | |
424 | + SELECTCOMBOBOX_COLOR: TColor = clWindow; | |
439 | 425 | |
440 | 426 | {$R *.dfm} |
441 | 427 | // ************************************************************************* |
@@ -485,13 +471,19 @@ end; | ||
485 | 471 | //! NG[hÇÝÝiêÂãëj |
486 | 472 | // ************************************************************************* |
487 | 473 | procedure TGikoDM.GoFowardActionExecute(Sender: TObject); |
474 | +var | |
475 | + s: string; | |
488 | 476 | begin |
489 | 477 | //êÂãëÌÇÝÝ@¸sµ½çbZ[WoÍ |
490 | 478 | if GikoSys.FAbon.GoBack =false then begin |
491 | 479 | MsgBox(GikoForm.Handle, 'êÂãëÌNG[ht@CÌÇÝÝɸsµÜµ½', 'G[', MB_OK or MB_ICONEXCLAMATION); |
492 | 480 | end else begin |
493 | 481 | //Xe[^XÉ\¦³êéNG[ht@C¼ðXV |
494 | - RepaintStatusBar; | |
482 | + s := GikoSys.FAbon.NGwordname; | |
483 | + GikoForm.StatusBar.Panels.Items[2].Text := s; | |
484 | + //Xe[^XÌ\¦TCYÌTCY | |
485 | + GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); | |
486 | + GikoForm.StatusBarResize(Sender); | |
495 | 487 | //SÄÌ^uÉÄ`æðÝè |
496 | 488 | GikoForm.RepaintAllTabsBrowser(); |
497 | 489 | end; |
@@ -500,33 +492,24 @@ end; | ||
500 | 492 | //! NG[hÇÝÝiêÂOj |
501 | 493 | // ************************************************************************* |
502 | 494 | procedure TGikoDM.GoBackActionExecute(Sender: TObject); |
495 | +var | |
496 | + s: string; | |
503 | 497 | begin |
504 | 498 | //êÂãëÌÇÝÝ@¸sµ½çbZ[WoÍ |
505 | 499 | if GikoSys.FAbon.GoForward =false then begin |
506 | 500 | MsgBox(GikoForm.Handle, 'êÂOÌNG[ht@CÌÇÝÝɸsµÜµ½', 'G[', MB_OK or MB_ICONEXCLAMATION); |
507 | 501 | end else begin |
508 | - //Xe[^XÉ\¦³êéNG[ht@C¼ðXV | |
509 | - RepaintStatusBar; | |
510 | - //SÄÌ^uÉÄ`æðÝè | |
502 | + //Xe[^XÉ\¦³êéNG[ht@C¼ðXV | |
503 | + s := GikoSys.FAbon.NGwordname; | |
504 | + GikoForm.StatusBar.Panels.Items[2].Text := s; | |
505 | + //Xe[^XÌ\¦TCYÌTCY | |
506 | + GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); | |
507 | + GikoForm.StatusBarResize(Sender); | |
508 | + //SÄÌ^uÉÄ`æðÝè | |
511 | 509 | GikoForm.RepaintAllTabsBrowser(); |
512 | 510 | end; |
513 | 511 | end; |
514 | 512 | // ************************************************************************* |
515 | -//! NG[hðÏXµ½ãÌXe[^Xo[ÌXV | |
516 | -// ************************************************************************* | |
517 | -procedure TGikoDM.RepaintStatusBar; | |
518 | -var | |
519 | - s : String; | |
520 | -begin | |
521 | - //Xe[^XÉ\¦³êéNG[ht@C¼ðXV | |
522 | - s := GikoSys.FAbon.NGwordname; | |
523 | - GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s; | |
524 | - //Xe[^XÌ\¦TCYÌTCY | |
525 | - GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width | |
526 | - := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100); | |
527 | - GikoForm.StatusBarResize(nil); | |
528 | -end; | |
529 | -// ************************************************************************* | |
530 | 513 | //! AhXo[É\¦µÄ¢éAhXÖÚ®·é |
531 | 514 | // ************************************************************************* |
532 | 515 | procedure TGikoDM.MoveToActionExecute(Sender: TObject); |
@@ -615,8 +598,7 @@ begin | ||
615 | 598 | end else begin |
616 | 599 | GikoForm.ClickNode.Text := InputBox( '¼OÌÏX', '¨CÉüèÌVµ¢¼Oðü͵ľ³¢', GikoForm.ClickNode.Text ); |
617 | 600 | end; |
618 | - //XVµ½±Æð³¦é | |
619 | - FavoriteDM.Modified := true; | |
601 | + | |
620 | 602 | GikoForm.SetLinkBar; |
621 | 603 | end; |
622 | 604 | // ************************************************************************* |
@@ -644,8 +626,6 @@ begin | ||
644 | 626 | // FClickNode.Selected.Expanded := True; |
645 | 627 | GikoForm.FavoriteTreeView.Selected := Node; |
646 | 628 | GikoForm.ClickNode := Node; |
647 | - //XVµ½±Æð³¦é | |
648 | - FavoriteDM.Modified := true; | |
649 | 629 | FavoriteTreeViewRenameAction.Execute; |
650 | 630 | finally |
651 | 631 | end; |
@@ -676,8 +656,6 @@ begin | ||
676 | 656 | end; |
677 | 657 | |
678 | 658 | GikoForm.ClickNode.Delete; |
679 | - //XVµ½±Æð³¦é | |
680 | - FavoriteDM.Modified := true; | |
681 | 659 | |
682 | 660 | GikoForm.SetLinkBar; |
683 | 661 |
@@ -695,21 +673,26 @@ end; | ||
695 | 673 | // ************************************************************************* |
696 | 674 | procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject); |
697 | 675 | var |
676 | + ThreadItem: TThreadItem; | |
698 | 677 | FavThread: TFavoriteThreadItem; |
678 | + Board: TBoard; | |
699 | 679 | FavBoard: TFavoriteBoardItem; |
700 | 680 | shiftDown: Boolean; |
701 | 681 | begin |
702 | - if (GikoForm.ClickNode = nil) then Exit; | |
682 | + | |
683 | + if GikoForm.ClickNode = nil then Exit; | |
703 | 684 | |
704 | 685 | shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001); |
705 | 686 | |
706 | 687 | if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin |
707 | 688 | FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); |
708 | - if FavThread.Item <> nil then | |
709 | - GikoForm.DownloadContent(FavThread.Item, shiftDown); | |
689 | + ThreadItem := FavThread.Item; | |
690 | + if ThreadItem <> nil then | |
691 | + GikoForm.DownloadContent(ThreadItem, shiftDown); | |
710 | 692 | end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin |
711 | 693 | FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); |
712 | - GikoForm.DownloadList(FavBoard.Item, shiftDown); | |
694 | + Board := FavBoard.Item; | |
695 | + GikoForm.DownloadList(Board, shiftDown); | |
713 | 696 | end; |
714 | 697 | |
715 | 698 | end; |
@@ -717,26 +700,73 @@ end; | ||
717 | 700 | //! Ið³êÄ¢éXbhÌURLðRs[·é |
718 | 701 | // ************************************************************************* |
719 | 702 | procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject); |
703 | +var | |
704 | + FavThread : TFavoriteThreadItem; | |
705 | + FavBoard : TFavoriteBoardItem; | |
706 | + s : string; | |
720 | 707 | begin |
721 | 708 | |
722 | 709 | if GikoForm.ClickNode = nil then Exit; |
723 | 710 | |
724 | - if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin | |
725 | - Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10; | |
711 | + if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin | |
712 | + | |
713 | + FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); | |
714 | + s := FavThread.URL + #13#10; | |
715 | + if s <> '' then | |
716 | + Clipboard.AsText := s; | |
717 | + | |
718 | + end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin | |
719 | + | |
720 | + FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); | |
721 | + s := FavBoard.URL + #13#10; | |
722 | + if s <> '' then | |
723 | + Clipboard.AsText := s; | |
724 | + | |
726 | 725 | end; |
727 | 726 | end; |
728 | 727 | // ************************************************************************* |
729 | 728 | //! Ið³êÄ¢éÂ̼OðRs[·é |
730 | 729 | // ************************************************************************* |
731 | 730 | procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject); |
731 | +var | |
732 | + ThreadItem: TThreadItem; | |
733 | + FavThread: TFavoriteThreadItem; | |
734 | + Board: TBoard; | |
735 | + FavBoard: TFavoriteBoardItem; | |
736 | + s: string; | |
732 | 737 | begin |
733 | 738 | |
734 | 739 | if GikoForm.ClickNode = nil then Exit; |
735 | 740 | |
736 | - if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin | |
737 | - Clipboard.AsText := | |
738 | - TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10; | |
741 | + if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin | |
742 | + | |
743 | + FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); | |
744 | + ThreadItem := FavThread.Item; | |
745 | + | |
746 | + try | |
747 | + s := ThreadItem.Title + #13#10; | |
748 | + if s <> '' then | |
749 | + Clipboard.AsText := s; | |
750 | + finally | |
751 | + end; | |
752 | + | |
753 | + end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin | |
754 | + | |
755 | + FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); | |
756 | + Board := FavBoard.Item; | |
757 | + if Board <> nil then | |
758 | + if not Board.IsThreadDatRead then | |
759 | + GikoSys.ReadSubjectFile(Board); | |
760 | + | |
761 | + try | |
762 | + s := Board.Title + #13#10; | |
763 | + if s <> '' then | |
764 | + Clipboard.AsText := s; | |
765 | + finally | |
766 | + end; | |
767 | + | |
739 | 768 | end; |
769 | + | |
740 | 770 | end; |
741 | 771 | // ************************************************************************* |
742 | 772 | //! Ið³êÄ¢éXbh̼OÆURLðRs[·é |
@@ -744,15 +774,42 @@ end; | ||
744 | 774 | procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute( |
745 | 775 | Sender: TObject); |
746 | 776 | var |
747 | - favItem : TFavoriteItem; | |
777 | + ThreadItem: TThreadItem; | |
778 | + FavThread: TFavoriteThreadItem; | |
779 | + Board: TBoard; | |
780 | + FavBoard: TFavoriteBoardItem; | |
781 | + s: string; | |
748 | 782 | begin |
749 | 783 | |
750 | 784 | if GikoForm.ClickNode = nil then Exit; |
751 | 785 | |
752 | - if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin | |
753 | - favItem := TFavoriteItem(GikoForm.ClickNode.Data); | |
754 | - Clipboard.AsText := favItem.GetItemTitle + #13#10 + | |
755 | - favItem.URL + #13#10; | |
786 | + if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin | |
787 | + | |
788 | + FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data ); | |
789 | + ThreadItem := FavThread.Item; | |
790 | + | |
791 | + try | |
792 | + s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10; | |
793 | + if s <> '' then | |
794 | + Clipboard.AsText := s; | |
795 | + finally | |
796 | + end; | |
797 | + | |
798 | + end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin | |
799 | + | |
800 | + FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); | |
801 | + Board := FavBoard.Item; | |
802 | + if Board <> nil then | |
803 | + if not Board.IsThreadDatRead then | |
804 | + GikoSys.ReadSubjectFile(Board); | |
805 | + | |
806 | + try | |
807 | + s := Board.Title + #13#10 + Board.URL + #13#10; | |
808 | + if s <> '' then | |
809 | + Clipboard.AsText := s; | |
810 | + finally | |
811 | + end; | |
812 | + | |
756 | 813 | end; |
757 | 814 | |
758 | 815 | end; |
@@ -810,50 +867,41 @@ begin | ||
810 | 867 | |
811 | 868 | end; |
812 | 869 | end; |
813 | -//! XÌiÝtB^[ðóÉ·é | |
814 | -procedure TGikoDM.ClearResFilter; | |
815 | -var | |
816 | - FilterList : TStringList; | |
817 | -begin | |
818 | - // tB^¶ñðóÉ·é | |
819 | - FilterList := TStringList.Create; | |
820 | - try | |
821 | - GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); | |
822 | - GikoSys.FSelectResFilter.Reverse := False; | |
823 | - finally | |
824 | - FilterList.Free; | |
825 | - end; | |
826 | - GikoForm.SelectResWord := ''; | |
827 | -end; | |
828 | -// ************************************************************************* | |
829 | -//! XÌ\¦ÍÍðÝè·é | |
830 | -// ************************************************************************* | |
831 | -procedure TGikoDM.SetResRange(range: Integer); | |
832 | -begin | |
833 | - if GikoSys.ResRange <> range then begin | |
834 | - GikoSys.ResRange := range; | |
835 | - // tB^¶ñðóÉ·é | |
836 | - ClearResFilter; | |
837 | - GikoForm.RepaintAllTabsBrowser(); | |
838 | - end; | |
839 | -end; | |
840 | 870 | // ************************************************************************* |
841 | 871 | //! ÅV100XÌÝ\¦ |
842 | 872 | // ************************************************************************* |
843 | 873 | procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject); |
874 | +var | |
875 | + FilterList : TStringList; | |
844 | 876 | begin |
845 | 877 | if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) |
846 | 878 | and (GikoForm.ActiveContent.Browser.Busy) then Exit; |
847 | 879 | |
848 | 880 | GikoForm.ResRangeMenuSelect := 100; |
849 | 881 | OnlyAHundredResAction.Checked := True; |
850 | - //@\¦ÍÍðÝè·é | |
851 | - SetResRange(100); | |
882 | + | |
883 | + if GikoSys.ResRange <> 100 then begin | |
884 | + GikoSys.ResRange := 100; | |
885 | + | |
886 | + // tB^¶ñðóÉ·é | |
887 | + FilterList := TStringList.Create; | |
888 | + try | |
889 | + GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); | |
890 | + GikoSys.FSelectResFilter.Reverse := False; | |
891 | + finally | |
892 | + FilterList.Free; | |
893 | + end; | |
894 | + | |
895 | + GikoForm.SelectResWord := ''; | |
896 | + GikoForm.RepaintAllTabsBrowser(); | |
897 | + end; | |
852 | 898 | end; |
853 | 899 | // ************************************************************************* |
854 | 900 | //! ¢ÇXÌÝ\¦ |
855 | 901 | // ************************************************************************* |
856 | 902 | procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject); |
903 | +var | |
904 | + FilterList : TStringList; | |
857 | 905 | begin |
858 | 906 | if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) |
859 | 907 | and (GikoForm.ActiveContent.Browser.Busy) then Exit; |
@@ -861,13 +909,28 @@ begin | ||
861 | 909 | GikoForm.ResRangeMenuSelect := Ord( grrKoko ); |
862 | 910 | OnlyKokoResAction.Checked := True; |
863 | 911 | |
864 | - //@\¦ÍÍðÝè·é | |
865 | - SetResRange(Ord( grrKoko )); | |
912 | + if GikoSys.ResRange <> Ord( grrKoko ) then begin | |
913 | + GikoSys.ResRange := Ord( grrKoko ); | |
914 | + | |
915 | + // tB^¶ñðóÉ·é | |
916 | + FilterList := TStringList.Create; | |
917 | + try | |
918 | + GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); | |
919 | + GikoSys.FSelectResFilter.Reverse := False; | |
920 | + finally | |
921 | + FilterList.Free; | |
922 | + end; | |
923 | + | |
924 | + GikoForm.SelectResWord := ''; | |
925 | + GikoForm.RepaintAllTabsBrowser(); | |
926 | + end; | |
866 | 927 | end; |
867 | 928 | // ************************************************************************* |
868 | 929 | //! V XÌÝ\¦ |
869 | 930 | // ************************************************************************* |
870 | 931 | procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject); |
932 | +var | |
933 | + FilterList : TStringList; | |
871 | 934 | begin |
872 | 935 | if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) |
873 | 936 | and (GikoForm.ActiveContent.Browser.Busy) then Exit; |
@@ -875,85 +938,21 @@ begin | ||
875 | 938 | GikoForm.ResRangeMenuSelect := Ord( grrNew ); |
876 | 939 | OnlyNewResAction.Checked := True; |
877 | 940 | |
878 | - //@\¦ÍÍðÝè·é | |
879 | - SetResRange(Ord( grrNew )); | |
880 | -end; | |
881 | -// ************************************************************************* | |
882 | -//! Xbh\¦GAÊí\¦É·é )ListOrientation = gloHorizontal@ | |
883 | -// ************************************************************************* | |
884 | -procedure TGikoDM.SetThreadAreaHorNormal; | |
885 | -begin | |
886 | - //Êí\¦É·é | |
887 | - if GikoForm.ActiveContent <> nil then | |
888 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
889 | - GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; | |
890 | - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
891 | - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
892 | - GikoSys.Setting.ListWidthState := glsNormal; | |
893 | - if GikoForm.ActiveContent <> nil then | |
894 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
895 | -end; | |
896 | -// ************************************************************************* | |
897 | -//! Xbh\¦GAÅå/Ŭ\¦É·é )ListOrientation = gloHorizontal@ | |
898 | -// ************************************************************************* | |
899 | -procedure TGikoDM.SetThreadAreaHorizontal(gls : TGikoListState); | |
900 | -begin | |
901 | - if GikoForm.ActiveContent <> nil then | |
902 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
903 | - if GikoSys.Setting.ListWidthState = glsNormal then | |
904 | - GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; | |
905 | - //Åå\¦ | |
906 | - if (gls = glsMax) then begin | |
907 | - GikoForm.ViewPanel.Width := 1; | |
908 | - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
909 | - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
910 | - GikoSys.Setting.ListWidthState := glsMax; | |
911 | - end else if (gls = glsMin) then begin | |
912 | - GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80; | |
913 | - BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
914 | - BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
915 | - GikoSys.Setting.ListWidthState := glsMin; | |
916 | - end; | |
917 | - if GikoForm.ActiveContent <> nil then | |
918 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
919 | -end; | |
920 | -// ************************************************************************* | |
921 | -//! Xbh\¦GAÊí\¦É·é )ListOrientation = gloVertical | |
922 | -// ************************************************************************* | |
923 | -procedure TGikoDM.SetThreadAreaVerNormal; | |
924 | -begin | |
925 | - //Êí\¦É·é | |
926 | - if GikoForm.ActiveContent <> nil then | |
927 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
928 | - GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; | |
929 | - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
930 | - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
931 | - GikoSys.Setting.ListHeightState := glsNormal; | |
932 | - if GikoForm.ActiveContent <> nil then | |
933 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
934 | -end; | |
935 | -// ************************************************************************* | |
936 | -//! Xbh\¦GAÅå/Ŭ\¦É·é )ListOrientation = gloVertical | |
937 | -// ************************************************************************* | |
938 | -procedure TGikoDM.SetThreadAreaVertical(gls : TGikoListState); | |
939 | -begin | |
940 | - if GikoForm.ActiveContent <> nil then | |
941 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
942 | - if GikoSys.Setting.ListHeightState = glsNormal then | |
943 | - GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; | |
944 | - if (gls = glsMin) then begin | |
945 | - GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7; | |
946 | - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
947 | - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
948 | - GikoSys.Setting.ListHeightState := glsMin; | |
949 | - end else if (gls = glsMax) then begin | |
950 | - GikoForm.ViewPanel.Height := 1; | |
951 | - BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
952 | - BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
953 | - GikoSys.Setting.ListHeightState := glsMax; | |
941 | + if GikoSys.ResRange <> Ord( grrNew ) then begin | |
942 | + GikoSys.ResRange := Ord( grrNew ); | |
943 | + | |
944 | + // tB^¶ñðóÉ·é | |
945 | + FilterList := TStringList.Create; | |
946 | + try | |
947 | + GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); | |
948 | + GikoSys.FSelectResFilter.Reverse := False; | |
949 | + finally | |
950 | + FilterList.Free; | |
951 | + end; | |
952 | + | |
953 | + GikoForm.SelectResWord := ''; | |
954 | + GikoForm.RepaintAllTabsBrowser(); | |
954 | 955 | end; |
955 | - if GikoForm.ActiveContent <> nil then | |
956 | - SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
957 | 956 | end; |
958 | 957 | // ************************************************************************* |
959 | 958 | //! Xbh\¦GAðå«\¦·é |
@@ -964,22 +963,54 @@ begin | ||
964 | 963 | case GikoSys.Setting.ListWidthState of |
965 | 964 | glsMax: begin |
966 | 965 | //Êí\¦É·é |
967 | - SetThreadAreaHorNormal; | |
966 | + if GikoForm.ActiveContent <> nil then | |
967 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
968 | + GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; | |
969 | + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
970 | + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
971 | + GikoSys.Setting.ListWidthState := glsNormal; | |
972 | + if GikoForm.ActiveContent <> nil then | |
973 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
968 | 974 | end; |
969 | 975 | glsMin, glsNormal: begin |
970 | 976 | //Åå\¦É·é |
971 | - SetThreadAreaHorizontal(glsMax); | |
977 | + if GikoForm.ActiveContent <> nil then | |
978 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
979 | + if GikoSys.Setting.ListWidthState = glsNormal then | |
980 | + GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; | |
981 | + if GikoForm.ActiveContent <> nil then | |
982 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
983 | + GikoForm.ViewPanel.Width := 1; | |
984 | + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
985 | + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
986 | + GikoSys.Setting.ListWidthState := glsMax; | |
972 | 987 | end; |
973 | 988 | end; |
974 | 989 | end else begin |
975 | 990 | case GikoSys.Setting.ListHeightState of |
976 | 991 | glsMax: begin |
977 | 992 | //Êí\¦É·é |
978 | - SetThreadAreaVerNormal; | |
993 | + if GikoForm.ActiveContent <> nil then | |
994 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
995 | + GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; | |
996 | + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
997 | + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
998 | + GikoSys.Setting.ListHeightState := glsNormal; | |
999 | + if GikoForm.ActiveContent <> nil then | |
1000 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
979 | 1001 | end; |
980 | 1002 | glsMin, glsNormal: begin |
981 | 1003 | //Åå\¦É·é |
982 | - SetThreadAreaVertical(glsMax); | |
1004 | + if GikoForm.ActiveContent <> nil then | |
1005 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
1006 | + if GikoSys.Setting.ListHeightState = glsNormal then | |
1007 | + GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; | |
1008 | + if GikoForm.ActiveContent <> nil then | |
1009 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
1010 | + GikoForm.ViewPanel.Height := 1; | |
1011 | + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
1012 | + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
1013 | + GikoSys.Setting.ListHeightState := glsMax; | |
983 | 1014 | end; |
984 | 1015 | end; |
985 | 1016 | end; |
@@ -993,22 +1024,54 @@ begin | ||
993 | 1024 | case GikoSys.Setting.ListWidthState of |
994 | 1025 | glsMax, glsNormal: begin |
995 | 1026 | //Ŭ\¦É·é |
996 | - SetThreadAreaHorizontal(glsMin); | |
1027 | + if GikoForm.ActiveContent <> nil then | |
1028 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
1029 | + if GikoSys.Setting.ListWidthState = glsNormal then | |
1030 | + GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width; | |
1031 | + if GikoForm.ActiveContent <> nil then | |
1032 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
1033 | + GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80; | |
1034 | + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
1035 | + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL; | |
1036 | + GikoSys.Setting.ListWidthState := glsMin; | |
997 | 1037 | end; |
998 | 1038 | glsMin: begin |
999 | 1039 | //Êí\¦É·é |
1000 | - SetThreadAreaHorNormal; | |
1040 | + if GikoForm.ActiveContent <> nil then | |
1041 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
1042 | + GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth; | |
1043 | + BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX; | |
1044 | + BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN; | |
1045 | + GikoSys.Setting.ListWidthState := glsNormal; | |
1046 | + if GikoForm.ActiveContent <> nil then | |
1047 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
1001 | 1048 | end; |
1002 | 1049 | end; |
1003 | 1050 | end else begin |
1004 | 1051 | case GikoSys.Setting.ListHeightState of |
1005 | 1052 | glsMax, glsNormal: begin |
1006 | 1053 | //Ŭ\¦É·é |
1007 | - SetThreadAreaVertical(glsMin); | |
1054 | + if GikoForm.ActiveContent <> nil then | |
1055 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
1056 | + if GikoSys.Setting.ListHeightState = glsNormal then | |
1057 | + GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height; | |
1058 | + GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7; | |
1059 | + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
1060 | + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL; | |
1061 | + GikoSys.Setting.ListHeightState := glsMin; | |
1062 | + if GikoForm.ActiveContent <> nil then | |
1063 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
1008 | 1064 | end; |
1009 | 1065 | glsMin: begin |
1010 | 1066 | //Êí\¦É·é |
1011 | - SetThreadAreaVerNormal; | |
1067 | + if GikoForm.ActiveContent <> nil then | |
1068 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //`æâ~ | |
1069 | + GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight; | |
1070 | + BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX; | |
1071 | + BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN; | |
1072 | + GikoSys.Setting.ListHeightState := glsNormal; | |
1073 | + if GikoForm.ActiveContent <> nil then | |
1074 | + SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //`æ | |
1012 | 1075 | end; |
1013 | 1076 | end; |
1014 | 1077 | end; |
@@ -1062,7 +1125,7 @@ begin | ||
1062 | 1125 | if Item = nil then Exit; |
1063 | 1126 | Editor := TEditorForm.Create(GikoForm.GetMainForm); |
1064 | 1127 | Editor.SetThreadItem(Item); |
1065 | - GikoSys.LoadKeySetting(Editor.ActionList, GikoSys.GetEditorKeyFileName); | |
1128 | + GikoSys.LoadEditorKeySetting(Editor.ActionList); | |
1066 | 1129 | Editor.Show; |
1067 | 1130 | Editor.BodyEdit.SetFocus; |
1068 | 1131 | end; |
@@ -1403,6 +1466,8 @@ end; | ||
1403 | 1466 | //! SÄÌXð\¦·é |
1404 | 1467 | // ************************************************************************* |
1405 | 1468 | procedure TGikoDM.AllResActionExecute(Sender: TObject); |
1469 | +var | |
1470 | + FilterList : TStringList; | |
1406 | 1471 | begin |
1407 | 1472 | if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil ) |
1408 | 1473 | and (GikoForm.ActiveContent.Browser.Busy) then Exit; |
@@ -1410,8 +1475,22 @@ begin | ||
1410 | 1475 | GikoForm.ResRangeMenuSelect := Ord( grrAll ); |
1411 | 1476 | AllResAction.Checked := True; |
1412 | 1477 | |
1413 | - //@\¦ÍÍðÝè·é | |
1414 | - SetResRange(Ord( grrAll )); | |
1478 | + if GikoSys.ResRange <> Ord( grrAll ) then begin | |
1479 | + GikoSys.ResRange := Ord( grrAll ); | |
1480 | + | |
1481 | + // tB^¶ñðóÉ·é | |
1482 | + FilterList := TStringList.Create; | |
1483 | + try | |
1484 | + GikoSys.FSelectResFilter.LoadFromStringList( FilterList ); | |
1485 | + GikoSys.FSelectResFilter.Reverse := False; | |
1486 | + finally | |
1487 | + FilterList.Free; | |
1488 | + end; | |
1489 | + | |
1490 | + GikoForm.SelectResWord := ''; | |
1491 | + | |
1492 | + GikoForm.RepaintAllTabsBrowser(); | |
1493 | + end; | |
1415 | 1494 | end; |
1416 | 1495 | // ************************************************************************* |
1417 | 1496 | //! XÌ\¦ÍÍðÝè |
@@ -1562,8 +1641,8 @@ begin | ||
1562 | 1641 | Dlg := TKeySettingForm.Create(GikoForm); |
1563 | 1642 | try |
1564 | 1643 | if Dlg.ShowModal = mrOk then begin |
1565 | - GikoSys.SaveKeySetting(GikoFormActionList, Setting.KEY_SETTING_FILE_NAME); | |
1566 | - GikoSys.SaveKeySetting(Dlg.EditorForm.ActionList, Setting.KEY_SETTING_FILE_NAME); | |
1644 | + GikoSys.SaveKeySetting(GikoFormActionList); | |
1645 | + GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList); | |
1567 | 1646 | GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName ); |
1568 | 1647 | end; |
1569 | 1648 |
@@ -1822,7 +1901,7 @@ begin | ||
1822 | 1901 | //OAEg |
1823 | 1902 | GikoSys.Dolib.Disconnect; |
1824 | 1903 | LoginAction.Checked := False; |
1825 | - GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK); | |
1904 | + GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK); | |
1826 | 1905 | LoginAction.Caption := 'OC(&L)'; |
1827 | 1906 | end else begin |
1828 | 1907 | TmpCursor := GikoForm.ScreenCursor; |
@@ -1842,7 +1921,7 @@ begin | ||
1842 | 1921 | end; |
1843 | 1922 | if GikoSys.Dolib.Connect then begin |
1844 | 1923 | LoginAction.Checked := True; |
1845 | - GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK); | |
1924 | + GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK); | |
1846 | 1925 | LoginAction.Caption := 'OAEg(&L)'; |
1847 | 1926 | //LoginToolButton.Style := tbsCheck; |
1848 | 1927 | end else begin |
@@ -1872,7 +1951,7 @@ begin | ||
1872 | 1951 | GikoSys.Dolib.ForcedConnect; |
1873 | 1952 | if GikoSys.Dolib.Connect then begin |
1874 | 1953 | LoginAction.Checked := True; |
1875 | - GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK); | |
1954 | + GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK); | |
1876 | 1955 | LoginAction.Caption := 'OAEg(&L)'; |
1877 | 1956 | //LoginToolButton.Style := tbsCheck; |
1878 | 1957 | end else begin |
@@ -2043,9 +2122,9 @@ begin | ||
2043 | 2122 | end; |
2044 | 2123 | end; |
2045 | 2124 | // ************************************************************************* |
2046 | -//! IðXbhðt@CÉÛ¶·é | |
2125 | +//! IðXbhðHTML»µÄÛ¶ | |
2047 | 2126 | // ************************************************************************* |
2048 | -procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean); | |
2127 | +procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject); | |
2049 | 2128 | var |
2050 | 2129 | List: TList; |
2051 | 2130 | i: Integer; |
@@ -2064,34 +2143,20 @@ begin | ||
2064 | 2143 | else if(List.Count = 0) then |
2065 | 2144 | ShowMessage('XbhðIðµÄ¾³¢') |
2066 | 2145 | else begin |
2067 | - if dat then begin | |
2068 | - SaveDialog.Title := 'IðXbhðdatÌÜÜÛ¶'; | |
2069 | - SaveDialog.Filter := 'DATt@C(*.dat)|*.dat'; | |
2070 | - end else begin | |
2071 | - SaveDialog.Title := 'IðXbhðHTML»µÄÛ¶'; | |
2072 | - SaveDialog.Filter := 'HTMLt@C(*.html)|*.html'; | |
2073 | - end; | |
2146 | + FileSaveAs1.Dialog.Title := 'IðXbhðHTML»µÄÛ¶'; | |
2147 | + FileSaveAs1.Dialog.Filter := 'HTMLt@C(*.html)|*.html'; | |
2074 | 2148 | for i := 0 to List.Count - 1 do begin |
2075 | 2149 | if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin |
2076 | - if dat then begin | |
2077 | - SaveDialog.FileName := TThreadItem(List[i]).FileName; | |
2078 | - end else begin | |
2079 | - SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html'; | |
2080 | - end; | |
2081 | - if SaveDialog.Execute then begin | |
2082 | - if dat then begin | |
2083 | - CopyFile(PChar(TThreadItem(List[i]).FilePath), | |
2084 | - PChar(SaveDialog.FileName), true); | |
2085 | - end else begin | |
2086 | - html := TStringList.Create; | |
2087 | - title := TThreadItem(List[i]).Title; | |
2088 | - try | |
2089 | - HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title); | |
2090 | - html.SaveToFile(SaveDialog.FileName); | |
2091 | - THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName)); | |
2092 | - finally | |
2093 | - html.Free; | |
2094 | - end; | |
2150 | + FileSaveAs1.Dialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html'; | |
2151 | + if FileSaveAs1.Dialog.Execute then begin | |
2152 | + html := TStringList.Create; | |
2153 | + title := TThreadItem(List[i]).Title; | |
2154 | + try | |
2155 | + HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title); | |
2156 | + html.SaveToFile(FileSaveAs1.Dialog.FileName); | |
2157 | + THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName)); | |
2158 | + finally | |
2159 | + html.Free; | |
2095 | 2160 | end; |
2096 | 2161 | end; |
2097 | 2162 | end; |
@@ -2103,18 +2168,42 @@ begin | ||
2103 | 2168 | end; |
2104 | 2169 | end; |
2105 | 2170 | // ************************************************************************* |
2106 | -//! IðXbhðHTML»µÄÛ¶ | |
2107 | -// ************************************************************************* | |
2108 | -procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject); | |
2109 | -begin | |
2110 | - SelectThreadSaveToFile(false); | |
2111 | -end; | |
2112 | -// ************************************************************************* | |
2113 | 2171 | //! IðXbhðDAT`®ÌÜÜÛ¶ |
2114 | 2172 | // ************************************************************************* |
2115 | 2173 | procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject); |
2174 | +var | |
2175 | + List: TList; | |
2176 | + i: Integer; | |
2116 | 2177 | begin |
2117 | - SelectThreadSaveToFile(true); | |
2178 | + List := TList.Create; | |
2179 | + try | |
2180 | + GikoForm.ScreenCursor := crHourGlass; | |
2181 | + GikoForm.SelectListItem(List); | |
2182 | + if ((GikoSys.Setting.ListOrientation = gloVertical) and | |
2183 | + (GikoSys.Setting.ListHeightState = glsMax)) or | |
2184 | + ((GikoSys.Setting.ListOrientation = gloHorizontal) and | |
2185 | + (GikoSys.Setting.ListWidthState = glsMax)) then | |
2186 | + ShowMessage('Xbhêð\¦µÄ¾³¢') | |
2187 | + else if(List.Count = 0) then | |
2188 | + ShowMessage('XbhðIðµÄ¾³¢') | |
2189 | + else begin | |
2190 | + FileSaveAs1.Dialog.Title := 'IðXbhðdatÌÜÜÛ¶'; | |
2191 | + FileSaveAs1.Dialog.Filter := 'DATt@C(*.dat)|*.dat'; | |
2192 | + for i := 0 to List.Count - 1 do begin | |
2193 | + if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin | |
2194 | + FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName; | |
2195 | + if FileSaveAs1.Dialog.Execute then begin | |
2196 | + CopyFile(PChar(TThreadItem(List[i]).FilePath), | |
2197 | + PChar(FileSaveAs1.Dialog.FileName), true); | |
2198 | + end; | |
2199 | + end; | |
2200 | + end; | |
2201 | + end; | |
2202 | + finally | |
2203 | + GikoForm.ScreenCursor := crDefault; | |
2204 | + List.Free; | |
2205 | + end; | |
2206 | + | |
2118 | 2207 | end; |
2119 | 2208 | // ************************************************************************* |
2120 | 2209 | //! ^uÌÔðÛ¶ |
@@ -2227,7 +2316,7 @@ begin | ||
2227 | 2316 | |
2228 | 2317 | Editor := TEditorForm.Create(GikoForm); |
2229 | 2318 | Editor.SetThreadItem(Item); |
2230 | - GikoSys.LoadKeySetting(Editor.ActionList, GikoSys.GetEditorKeyFileName); | |
2319 | + GikoSys.LoadEditorKeySetting(Editor.ActionList); | |
2231 | 2320 | Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10; |
2232 | 2321 | Editor.Show; |
2233 | 2322 | Editor.BodyEdit.SetFocus; |
@@ -3048,44 +3137,26 @@ begin | ||
3048 | 3137 | |
3049 | 3138 | end; |
3050 | 3139 | // ************************************************************************* |
3051 | -//! XêÌ\¦µÄ¢éàeɵ½ªÁÄA\[gJÌÊuÆûüðæ¾·é | |
3052 | -// ************************************************************************* | |
3053 | -function TGikoDM.GetSortProperties(List: TObject; | |
3054 | - var vSortOrder: Boolean): Boolean; | |
3055 | -begin | |
3056 | - Result := True; | |
3057 | - if (List <> nil) then begin | |
3058 | - if (List is TBBS) then begin | |
3059 | - vSortOrder := GikoSys.Setting.BBSSortOrder; | |
3060 | - end else if (List is TCategory) then begin | |
3061 | - vSortOrder := GikoSys.Setting.CategorySortOrder; | |
3062 | - end else if (List is TBoard) then begin | |
3063 | - vSortOrder := GikoSys.Setting.BoardSortOrder; | |
3064 | - end else begin | |
3065 | - Result := False; | |
3066 | - end; | |
3067 | - end else begin | |
3068 | - Result := False; | |
3069 | - end; | |
3070 | -end; | |
3071 | -// ************************************************************************* | |
3072 | 3140 | //! »ÝÌJð\[g·é |
3073 | 3141 | // ************************************************************************* |
3074 | 3142 | procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject); |
3075 | 3143 | var |
3076 | 3144 | i : Integer; |
3077 | 3145 | so : boolean; |
3146 | + si : Integer; | |
3078 | 3147 | begin |
3079 | - if GetSortProperties(GikoForm.GetActiveList, so) then begin | |
3080 | - for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin | |
3081 | - if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or | |
3082 | - (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin | |
3083 | - so := not so; | |
3084 | - TListViewUtils.ListViewSort(nil, GikoForm.ListView, | |
3085 | - GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked, | |
3086 | - so); | |
3087 | - break; | |
3088 | - end; | |
3148 | + for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin | |
3149 | + if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or | |
3150 | + (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin | |
3151 | + GikoForm.SortOrder := not GikoForm.SortOrder; | |
3152 | + so := GikoForm.SortOrder; | |
3153 | + si := GikoForm.SortIndex; | |
3154 | + TListViewUtils.ListViewSort(nil, GikoForm.ListView, | |
3155 | + GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked, | |
3156 | + so, si ); | |
3157 | + GikoForm.SortIndex := si; | |
3158 | + GikoForm.SortOrder := so; | |
3159 | + break; | |
3089 | 3160 | end; |
3090 | 3161 | end; |
3091 | 3162 | end; |
@@ -3095,6 +3166,8 @@ end; | ||
3095 | 3166 | procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject); |
3096 | 3167 | var |
3097 | 3168 | i, id : Integer; |
3169 | + so : boolean; | |
3170 | + si : Integer; | |
3098 | 3171 | begin |
3099 | 3172 | for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin |
3100 | 3173 | if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or |
@@ -3102,9 +3175,14 @@ begin | ||
3102 | 3175 | id := i + 1; |
3103 | 3176 | if id > GikoForm.ListView.Columns.Count - 1 then |
3104 | 3177 | id := 0; |
3178 | + GikoForm.SortOrder := id = 0; | |
3179 | + so := GikoForm.SortOrder; | |
3180 | + si := GikoForm.SortIndex; | |
3105 | 3181 | TListViewUtils.ListViewSort( nil, GikoForm.ListView, |
3106 | 3182 | GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, |
3107 | - id = 0); | |
3183 | + so, si ); | |
3184 | + GikoForm.SortIndex := si; | |
3185 | + GikoForm.SortOrder := so; | |
3108 | 3186 | break; |
3109 | 3187 | end; |
3110 | 3188 | end; |
@@ -3115,6 +3193,8 @@ end; | ||
3115 | 3193 | procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject); |
3116 | 3194 | var |
3117 | 3195 | i, id : Integer; |
3196 | + so : boolean; | |
3197 | + si : Integer; | |
3118 | 3198 | begin |
3119 | 3199 | for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin |
3120 | 3200 | if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or |
@@ -3122,9 +3202,14 @@ begin | ||
3122 | 3202 | id := i - 1; |
3123 | 3203 | if id < 0 then |
3124 | 3204 | id := GikoForm.ListView.Columns.Count - 1; |
3205 | + GikoForm.SortOrder := id = 0; | |
3206 | + so := GikoForm.SortOrder; | |
3207 | + si := GikoForm.SortIndex; | |
3125 | 3208 | TListViewUtils.ListViewSort( nil, GikoForm.ListView, |
3126 | 3209 | GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, |
3127 | - id = 0); | |
3210 | + so, si ); | |
3211 | + GikoForm.SortIndex := si; | |
3212 | + GikoForm.SortOrder := so; | |
3128 | 3213 | break; |
3129 | 3214 | end; |
3130 | 3215 | end; |
@@ -3649,20 +3734,33 @@ end; | ||
3649 | 3734 | //! Ið³êÄ¢éXbhðùÇÉ·é |
3650 | 3735 | // ************************************************************************* |
3651 | 3736 | procedure TGikoDM.KidokuActionExecute(Sender: TObject); |
3737 | +var | |
3738 | + List: TList; | |
3739 | + i: Integer; | |
3652 | 3740 | begin |
3653 | - SetThreadReadProperty(true); | |
3741 | + List := TList.Create; | |
3742 | + try | |
3743 | + GikoForm.SelectListItem(List); | |
3744 | + for i := 0 to List.Count - 1 do begin | |
3745 | + if TObject(List[i]) is TThreadItem then begin | |
3746 | + if (TThreadItem(List[i]).UnRead) then begin | |
3747 | + TThreadItem(List[i]).UnRead := false; | |
3748 | + TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1; | |
3749 | + end; | |
3750 | + end; | |
3751 | + end; | |
3752 | + if GikoForm.TreeView.Visible then | |
3753 | + GikoForm.TreeView.Refresh; | |
3754 | + if GikoForm.ListView.Visible then | |
3755 | + GikoForm.ListView.Refresh; | |
3756 | + finally | |
3757 | + List.Free; | |
3758 | + end; | |
3654 | 3759 | end; |
3655 | 3760 | // ************************************************************************* |
3656 | 3761 | //! Ið³êÄ¢éXbhð¢ÇÉ·é |
3657 | 3762 | // ************************************************************************* |
3658 | 3763 | procedure TGikoDM.MidokuActionExecute(Sender: TObject); |
3659 | -begin | |
3660 | - SetThreadReadProperty(false); | |
3661 | -end; | |
3662 | -// ************************************************************************* | |
3663 | -//! Ið³êÄ¢éXbhÌ¢ÇEùÇðÝè·é true : ùÇ false : ¢Ç | |
3664 | -// ************************************************************************* | |
3665 | -procedure TGikoDM.SetThreadReadProperty(read: Boolean); | |
3666 | 3764 | var |
3667 | 3765 | List: TList; |
3668 | 3766 | i: Integer; |
@@ -3672,8 +3770,9 @@ begin | ||
3672 | 3770 | GikoForm.SelectListItem(List); |
3673 | 3771 | for i := 0 to List.Count - 1 do begin |
3674 | 3772 | if TObject(List[i]) is TThreadItem then begin |
3675 | - if (TThreadItem(List[i]).IsLogFile) then begin | |
3676 | - TThreadItem(List[i]).UnRead := not read; | |
3773 | + if (TThreadItem(List[i]).IsLogFile) and (not TThreadItem(List[i]).UnRead) then begin | |
3774 | + TThreadItem(List[i]).UnRead := true; | |
3775 | + TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1; | |
3677 | 3776 | end; |
3678 | 3777 | end; |
3679 | 3778 | end; |
@@ -3700,88 +3799,5 @@ begin | ||
3700 | 3799 | AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0; |
3701 | 3800 | end; |
3702 | 3801 | ////////////////////////////////ÒWÜŨµÜ¢///////////////////// |
3703 | -//! XbhÌTCYðÄvZ·é | |
3704 | -procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject); | |
3705 | -const | |
3706 | - RECALC_MES : String = 'XbhÌeÊðt@C©çÄvZµÜ·B'#13#10 + | |
3707 | - '±ÌìAMRir̼Ììð·éÆf[^ªjó³êé°êª èÜ·B' + | |
3708 | - 'ܽ±ÌìÍAñíÉÔª©©éêª èÜ·ªAæ뵢ŷ©H'; | |
3709 | - RECALC_TITLE : String = 'XbhÌeÊðt@C©çÄvZ'; | |
3710 | - LIMIT_SIZE = 1024; | |
3711 | -var | |
3712 | - limitSize : Integer; | |
3713 | - limitStr : String; | |
3714 | -begin | |
3715 | -{ ܸAÔª©©é±Æðx·ébZ[WðoÍ | |
3716 | - ÄvZ·éXbhÌTCYÌèliftHg1024B)ðmF | |
3717 | - vOCðpµÈ¢Æ±ëÅSÄÌOLèXbhðõ | |
3718 | - èlȺÌTCYÌêADATÌt@CTCYÆärA¸êÄ¢êÎA | |
3719 | - DATÌt@CTCYÅXV·é | |
3720 | -} | |
3721 | - if MsgBox(GikoForm.Handle, RECALC_MES, | |
3722 | - RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin | |
3723 | - //èlÌmF | |
3724 | - limitSize := LIMIT_SIZE; | |
3725 | - limitStr := IntToStr(limitSize); | |
3726 | - if InputQuery('èlüÍ', 'wèµ½l BȺÌeÊÌXbhÌÝÄvZµÜ·', limitStr) then begin | |
3727 | - limitSize := StrToInt(MojuUtils.ZenToHan(limitStr)); | |
3728 | - if (limitSize < 0) then begin | |
3729 | - ShowMessage('èlÉÍwèūܹñI'); | |
3730 | - ThreadSizeCalcForFileActionExecute(nil); | |
3731 | - end else begin | |
3732 | - RecalcThreadSize(limitSize); | |
3733 | - end; | |
3734 | - end; | |
3735 | - end; | |
3736 | -end; | |
3737 | -//! limitæèàTCY̬³¢XbhÌeÊðDATt@C©çvZ | |
3738 | -procedure TGikoDM.RecalcThreadSize(limit : Integer); | |
3739 | -var | |
3740 | - i, j, tmpSize : Integer; | |
3741 | - Obj : TObject; | |
3742 | - Board : TBoard; | |
3743 | - Thread: TThreadItem; | |
3744 | - dat : TStringList; | |
3745 | -begin | |
3746 | - // ÄvZX^[g@vOCðpµÈ¢Æ±ëðS©éI | |
3747 | - GikoForm.ScreenCursor := crHourGlass; | |
3748 | - try | |
3749 | - GikoForm.ProgressBar.Max := BoardGroups[0].Count; | |
3750 | - for i := 0 to BoardGroups[0].Count - 1 do begin | |
3751 | - Obj := BoardGroups[0].Objects[i]; | |
3752 | - if (Obj <> nil) then begin | |
3753 | - Board := TBoard(Obj); | |
3754 | - if not Board.IsThreadDatRead then begin | |
3755 | - GikoSys.ReadSubjectFile(Board); | |
3756 | - end; | |
3757 | - for j := 0 to Board.Count - 1 do begin | |
3758 | - Thread := Board.Items[j]; | |
3759 | - if (Thread <> nil) and (Thread.IsLogFile) | |
3760 | - and (Thread.Size <= limit) then begin | |
3761 | - dat := TStringList.Create; | |
3762 | - try | |
3763 | - tmpSize := Thread.Size; | |
3764 | - try | |
3765 | - dat.LoadFromFile(Thread.GetThreadFileName); | |
3766 | - tmpSize := Length(dat.Text); | |
3767 | - tmpSize := tmpSize - dat.Count; | |
3768 | - except | |
3769 | - end; | |
3770 | - Thread.Size := tmpSize; | |
3771 | - finally | |
3772 | - dat.Free; | |
3773 | - end; | |
3774 | - end; | |
3775 | - end; | |
3776 | - end; | |
3777 | - GikoForm.ProgressBar.StepBy(1); | |
3778 | - end; | |
3779 | - finally | |
3780 | - GikoForm.ScreenCursor := crDefault; | |
3781 | - end; | |
3782 | - GikoForm.ProgressBar.Position := 0; | |
3783 | - ShowMessage('vZI¹µÜµ½B'); | |
3784 | -end; | |
3785 | - | |
3786 | 3802 | end. |
3787 | 3803 |
@@ -1,68 +0,0 @@ | ||
1 | -unit GikoMessage; | |
2 | - | |
3 | -interface | |
4 | - | |
5 | -uses | |
6 | - Classes, IniFiles; | |
7 | - | |
8 | -type | |
9 | - //! MessageList | |
10 | - TGikoMessageListType = (gmLogout, gmLogin, gmForceLogin, gmSureItiran, | |
11 | - gmUnKnown, gmSureSyutoku, gmSureDiff, gmNotMod, gmAbort, gmError, | |
12 | - gmNewRes, gmNewSure, gmResError, gmSureError); | |
13 | - | |
14 | - TGikoMessage = class(THashedStringList) | |
15 | - private | |
16 | - public | |
17 | - constructor Create; | |
18 | - function GetMessage(MesType: TGikoMessageListType): String; | |
19 | - end; | |
20 | - | |
21 | -implementation | |
22 | - | |
23 | -const | |
24 | - DEF_MESSAGES : array[0..13] of string = ( 'OAEgµÜµ½', | |
25 | - 'OCµÜµ½ - ', | |
26 | - '§OCµÜµ½ - ', | |
27 | - '[Xêæ¾®¹]', | |
28 | - '(¼Ìs¾j', | |
29 | - '[Xæ¾®¹]', | |
30 | - '[X·ªæ¾®¹]', | |
31 | - '[¢XV]', | |
32 | - '[f]', | |
33 | - '[G[]', | |
34 | - '[XMI¹]', | |
35 | - '[VXMI¹]', | |
36 | - '[XM¸s]', | |
37 | - '[VXM¸s]'); | |
38 | - | |
39 | - MESSAGE_KEYS : array[0..13] of String = ( 'Logout', 'Login', | |
40 | - 'ForceLogin', 'SureItiran', | |
41 | - 'UnKnown', 'SureSyutoku', | |
42 | - 'SureDiff', 'NotMod', | |
43 | - 'Abort', 'Error', | |
44 | - 'NewRes', 'NewSure', | |
45 | - 'ResError', 'SureError'); | |
46 | - | |
47 | -constructor TGikoMessage.Create; | |
48 | -begin | |
49 | - inherited Create; | |
50 | - Self.Sorted := true; | |
51 | - Self.Duplicates := dupIgnore; | |
52 | -end; | |
53 | -//! MesTypeÅwè³ê½bZ[W¶ñðæ¾·é | |
54 | -function TGikoMessage.GetMessage(MesType: TGikoMessageListType): String; | |
55 | -begin | |
56 | - Result := ''; | |
57 | - if MesType in [gmLogout..gmSureError] then begin | |
58 | - //KeyÅõµÄ©Â©êλêðÔ· | |
59 | - Result := Self.Values[MESSAGE_KEYS[Ord(MesType)]]; | |
60 | - if Result = '' then begin | |
61 | - //©Â©çÈ¢ÌÅAftHgÅÔ· | |
62 | - Result := DEF_MESSAGES[Ord(MesType)]; | |
63 | - end; | |
64 | - end; | |
65 | -end; | |
66 | - | |
67 | -end. | |
68 | - | |
\ No newline at end of file |
@@ -4,7 +4,7 @@ interface | ||
4 | 4 | |
5 | 5 | uses |
6 | 6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, |
7 | - ComCtrls, {IniFiles,} ShellAPI, ActnList, Math, | |
7 | + ComCtrls, IniFiles, ShellAPI, ActnList, Math, | |
8 | 8 | {$IF Defined(DELPRO) } |
9 | 9 | SHDocVw, |
10 | 10 | MSHTML, |
@@ -12,10 +12,10 @@ uses | ||
12 | 12 | SHDocVw_TLB, |
13 | 13 | MSHTML_TLB, |
14 | 14 | {$IFEND} |
15 | - {HttpApp,} URLMon, IdGlobal, IdURI, {Masks,} | |
15 | + {HttpApp,} YofUtils, URLMon, IdGlobal, IdURI, {Masks,} | |
16 | 16 | Setting, BoardGroup, gzip, Dolib, bmRegExp, AbonUnit, |
17 | 17 | ExternalBoardManager, ExternalBoardPlugInMain, |
18 | - GikoBayesian, GikoMessage; | |
18 | + Sort, GikoBayesian; | |
19 | 19 | |
20 | 20 | type |
21 | 21 | TVerResourceKey = ( |
@@ -76,9 +76,6 @@ type | ||
76 | 76 | FCount: Integer; |
77 | 77 | end; |
78 | 78 | |
79 | - //! XR[hÖÌ|C^ | |
80 | - PResRec = ^TResRec; | |
81 | - | |
82 | 79 | //! XR[h |
83 | 80 | TResRec = record |
84 | 81 | FTitle: string; |
@@ -102,6 +99,11 @@ type | ||
102 | 99 | FNoParam: Boolean; //!< XÔp[^ȵ |
103 | 100 | end; |
104 | 101 | |
102 | + //! MessageList | |
103 | + TGikoMessageListType = (gmLogout, gmLogin, gmForceLogin, gmSureItiran, | |
104 | + gmUnKnown, gmSureSyutoku, gmSureDiff, gmNotMod, gmAbort, gmError, | |
105 | + gmNewRes, gmNewSure, gmResError, gmSureError); | |
106 | + | |
105 | 107 | TGikoSys = class(TObject) |
106 | 108 | private |
107 | 109 | { Private é¾ } |
@@ -111,7 +113,8 @@ type | ||
111 | 113 | FResRange : Longint; |
112 | 114 | FBayesian : TGikoBayesian; //!< xCWAtB^ |
113 | 115 | FVersion : String; //!< t@Co[W |
114 | - FGikoMessage: TGikoMessage; | |
116 | +// FExitWrite: TStringList; | |
117 | +// function StrToFloatDef(s: string; Default: Double): Double; | |
115 | 118 | public |
116 | 119 | { Public é¾ } |
117 | 120 | FAbon : TAbon; |
@@ -150,8 +153,6 @@ type | ||
150 | 153 | function GetUserAgent: string; |
151 | 154 | function GetSambaFileName : string; |
152 | 155 | |
153 | - function GetMainKeyFileName : String; | |
154 | - function GetEditorKeyFileName: String; | |
155 | 156 | procedure ReadSubjectFile(Board: TBoard); |
156 | 157 | procedure CreateThreadDat(Board: TBoard); |
157 | 158 | procedure WriteThreadDat(Board: TBoard); |
@@ -172,6 +173,7 @@ type | ||
172 | 173 | |
173 | 174 | function GetFileSize(FileName : string) : longint; |
174 | 175 | function GetFileLineCount(FileName : string): longint; |
176 | + function Get2chDate(aDate: TDateTime): string; | |
175 | 177 | function IntToDateTime(val: Int64): TDateTime; |
176 | 178 | function DateTimeToInt(ADate: TDateTime): Int64; |
177 | 179 |
@@ -181,13 +183,17 @@ type | ||
181 | 183 | |
182 | 184 | function RemoveToken(var s:string; const delimiter:string):string; |
183 | 185 | function GetTokenIndex(s: string; delimiter: string; index: Integer): string; |
186 | + function DeleteLink(const s: string): string; | |
184 | 187 | |
185 | 188 | function GetShortName(const LongName: string; ALength: integer): string; |
186 | 189 | function BoolToInt(b: Boolean): Integer; |
187 | 190 | function IntToBool(i: Integer): Boolean; |
188 | 191 | function GzipDecompress(ResStream: TStream; ContentEncoding: string): string; |
189 | - procedure LoadKeySetting(ActionList: TActionList; FileName: String); | |
190 | - procedure SaveKeySetting(ActionList: TActionList; FileName: String); | |
192 | + procedure LoadKeySetting(ActionList: TActionList); | |
193 | + procedure SaveKeySetting(ActionList: TActionList); | |
194 | + procedure LoadEditorKeySetting(ActionList: TActionList); | |
195 | + procedure SaveEditorKeySetting(ActionList: TActionList); | |
196 | + | |
191 | 197 | procedure CreateProcess(const AppPath: string; const Param: string); |
192 | 198 | procedure OpenBrowser(URL: string; BrowserType: TGikoBrowserType); |
193 | 199 | function HTMLDecode(const AStr: String): String; |
@@ -241,10 +247,6 @@ type | ||
241 | 247 | //! IEÌo[WîñÌæ¾ |
242 | 248 | function GetIEVersion: string; |
243 | 249 | function SetUserOptionalStyle(): string; |
244 | - //! MRirÌbZ[WðÝè·é | |
245 | - procedure SetGikoMessage; | |
246 | - //! MRirÌbZ[Wðæ¾·é | |
247 | - function GetGikoMessage(MesType: TGikoMessageListType): String; | |
248 | 250 | end; |
249 | 251 | |
250 | 252 | var |
@@ -263,8 +265,7 @@ const | ||
263 | 265 | implementation |
264 | 266 | |
265 | 267 | uses |
266 | - Giko, RoundData, Favorite, Registry, HTMLCreate, MojuUtils, Sort, YofUtils, | |
267 | - IniFiles; | |
268 | + Giko, RoundData, Favorite, Registry, HTMLCreate, MojuUtils; | |
268 | 269 | |
269 | 270 | const |
270 | 271 | FOLDER_INDEX_VERSION = '1.01'; |
@@ -321,8 +322,6 @@ begin | ||
321 | 322 | FVersion := Trim(GetVersionInfo(vrFileVersion)); |
322 | 323 | FBayesian := TGikoBayesian.Create; |
323 | 324 | //FBoardURLList := TStringList.Create; |
324 | - //bZ[WÌì¬ | |
325 | - FGikoMessage := TGikoMessage.Create; | |
326 | 325 | end; |
327 | 326 | |
328 | 327 | // ************************************************************************* |
@@ -343,7 +342,6 @@ begin | ||
343 | 342 | FDolib.Free; |
344 | 343 | FAbon.Free; |
345 | 344 | FSelectResFilter.Free; |
346 | - FGikoMessage.Free; | |
347 | 345 | //FBoardURLList.Free; |
348 | 346 | //e|HTMLðí |
349 | 347 | FileList := TStringList.Create; |
@@ -525,6 +523,19 @@ begin | ||
525 | 523 | end; |
526 | 524 | |
527 | 525 | {! |
526 | +\brief Q¿áñËéû®æ¾ | |
527 | +\param Ï··é | |
528 | +\return 2¿áñËéû®Åð\µ½¶ñ | |
529 | +} | |
530 | +function TGikoSys.Get2chDate(aDate: TDateTime): string; | |
531 | +var | |
532 | + d2: TDateTime; | |
533 | +begin | |
534 | + d2 := aDate - EncodeTime(9, 0, 0, 0); | |
535 | + Result := FloatToStr(Trunc((d2 - ZERO_DATE) * 86400)); | |
536 | +end; | |
537 | + | |
538 | +{! | |
528 | 539 | \brief oßbð TDateTime ÉÏ· |
529 | 540 | \param val 1970/1/1/ 00:00:00 ©çÌoßb |
530 | 541 | \return val 𦷠TDateTime |
@@ -699,13 +710,13 @@ begin | ||
699 | 710 | Board.BoardPlugIn, |
700 | 711 | Board, |
701 | 712 | Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), FileList[i] ) ); |
702 | - THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec); | |
713 | + ResRec := DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 )); | |
703 | 714 | end else begin |
704 | 715 | ThreadItem := TThreadItem.Create( |
705 | 716 | nil, |
706 | 717 | Board, |
707 | 718 | Get2chBoard2ThreadURL( Board, ChangeFileExt( FileList[i], '' ) ) ); |
708 | - THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec); | |
719 | + ResRec := DivideStrLine(ReadThreadFile(FileName, 1)); | |
709 | 720 | end; |
710 | 721 | |
711 | 722 | ThreadItem.BeginUpdate; |
@@ -720,7 +731,7 @@ begin | ||
720 | 731 | ThreadItem.RoundDate := ZERO_DATE; |
721 | 732 | ThreadItem.LastModified := ZERO_DATE; |
722 | 733 | ThreadItem.Kokomade := -1; |
723 | - ThreadItem.NewReceive := 0; | |
734 | + ThreadItem.NewReceive := ThreadItem.Count; | |
724 | 735 | ThreadItem.ParentBoard := Board; |
725 | 736 | ThreadItem.IsLogFile := True; |
726 | 737 | ThreadItem.Round := False; |
@@ -1405,6 +1416,39 @@ begin | ||
1405 | 1416 | Result := RemoveToken(s, delimiter); |
1406 | 1417 | end; |
1407 | 1418 | |
1419 | +{! | |
1420 | +\brief HTML ©çAJ[^Oðí | |
1421 | +\param s ³ÉÈé HTML | |
1422 | +\return AJ[^Oªí³ê½ HTML | |
1423 | +} | |
1424 | +function TGikoSys.DeleteLink(const s: string): string; | |
1425 | +var | |
1426 | + s1: string; | |
1427 | + s2: string; | |
1428 | + idx: Integer; | |
1429 | + i: Integer; | |
1430 | +begin | |
1431 | + i := 0; | |
1432 | + Result := ''; | |
1433 | + while True do begin | |
1434 | + s1 := GetTokenIndex(s, '<a href="', i); | |
1435 | + s2 := GetTokenIndex(s, '<a href="', i + 1); | |
1436 | + | |
1437 | + idx := Pos('">', s1); | |
1438 | + if idx <> 0 then | |
1439 | + Delete(s1, 1, idx + 1); | |
1440 | + idx := Pos('">', s2); | |
1441 | + if idx <> 0 then | |
1442 | + Delete(s2, 1, idx + 1); | |
1443 | + | |
1444 | + Result := Result + s1 + s2; | |
1445 | + | |
1446 | + if s2 = '' then | |
1447 | + Break; | |
1448 | + | |
1449 | + inc(i, 2); | |
1450 | + end; | |
1451 | +end; | |
1408 | 1452 | |
1409 | 1453 | //CfbNX¢XVobt@ðtbV I |
1410 | 1454 | {procedure TGikoSys.FlashExitWrite; |
@@ -1554,9 +1598,11 @@ end; | ||
1554 | 1598 | {! |
1555 | 1599 | \brief ANVÉV[gJbgL[ðÝè |
1556 | 1600 | \param ActionList Ýè·éANVê |
1557 | -\param FileName Init@C̼O | |
1601 | +\todo STD_SEC ð GetXXXFileName() ÉÇ¢o¹ | |
1602 | + | |
1603 | +KeySetting.ini ÉÛ¶³êÄ¢éV[gJbgL[ð ActionList ÉÝèµÜ·B | |
1558 | 1604 | } |
1559 | -procedure TGikoSys.LoadKeySetting(ActionList: TActionList; FileName: String); | |
1605 | +procedure TGikoSys.LoadKeySetting(ActionList: TActionList); | |
1560 | 1606 | const |
1561 | 1607 | STD_SEC = 'KeySetting'; |
1562 | 1608 | var |
@@ -1567,10 +1613,10 @@ var | ||
1567 | 1613 | SecList: TStringList; |
1568 | 1614 | Component: TComponent; |
1569 | 1615 | begin |
1570 | - if not FileExists(fileName) then | |
1616 | + if not FileExists(GetConfigDir + KEY_SETTING_FILE_NAME) then | |
1571 | 1617 | Exit; |
1572 | 1618 | SecList := TStringList.Create; |
1573 | - ini := TMemIniFile.Create(fileName); | |
1619 | + ini := TMemIniFile.Create(GetConfigDir + KEY_SETTING_FILE_NAME); | |
1574 | 1620 | try |
1575 | 1621 | ini.ReadSection(STD_SEC, SecList); |
1576 | 1622 | for i := 0 to SecList.Count - 1 do begin |
@@ -1592,18 +1638,18 @@ end; | ||
1592 | 1638 | {! |
1593 | 1639 | \brief ANVÉÝè³êÄ¢éV[gJbgL[ðt@CÉÛ¶ |
1594 | 1640 | \param ActionList Û¶·éANVê |
1595 | -\param FileName Init@C¼ | |
1641 | +\todo STD_SEC ð GetXXXFileName() ÉÇ¢o¹ | |
1596 | 1642 | |
1597 | -ActionList ÉÝè³êÄ¢éV[gJbgL[ð FileName ÉÛ¶µÜ·B | |
1643 | +ActionList ÉÝè³êÄ¢éV[gJbgL[ð KeySetting.ini ÉÛ¶µÜ·B | |
1598 | 1644 | } |
1599 | -procedure TGikoSys.SaveKeySetting(ActionList: TActionList; FileName: String); | |
1645 | +procedure TGikoSys.SaveKeySetting(ActionList: TActionList); | |
1600 | 1646 | const |
1601 | 1647 | STD_SEC = 'KeySetting'; |
1602 | 1648 | var |
1603 | 1649 | i: Integer; |
1604 | 1650 | ini: TMemIniFile; |
1605 | 1651 | begin |
1606 | - ini := TMemIniFile.Create(GetConfigDir + FileName); | |
1652 | + ini := TMemIniFile.Create(GetConfigDir + KEY_SETTING_FILE_NAME); | |
1607 | 1653 | try |
1608 | 1654 | for i := 0 to ActionList.ActionCount - 1 do begin |
1609 | 1655 | if ActionList.Actions[i].Tag = -1 then |
@@ -1616,6 +1662,74 @@ begin | ||
1616 | 1662 | end; |
1617 | 1663 | end; |
1618 | 1664 | |
1665 | +{! | |
1666 | +\brief XGfB^ÌANVÉV[gJbgðÝè | |
1667 | +\param ActionList Ýè·éANVê | |
1668 | +\todo STD_SEC, EKEY_SETTING_FILE_NAME ð GetXXXFileName() ÉÇ¢o¹ | |
1669 | +\todo LoadKeySetting ƹæ | |
1670 | + | |
1671 | +t@CÉÛ¶³êÄ¢éV[gJbgL[ð ActionList ÉÝèµÜ·B | |
1672 | +} | |
1673 | +procedure TGikoSys.LoadEditorKeySetting(ActionList: TActionList); | |
1674 | +const | |
1675 | + STD_SEC = 'KeySetting'; | |
1676 | +var | |
1677 | + i: Integer; | |
1678 | + ini: TMemIniFile; | |
1679 | + ActionName: string; | |
1680 | + ActionKey: Integer; | |
1681 | + SecList: TStringList; | |
1682 | + Component: TComponent; | |
1683 | +begin | |
1684 | + if not FileExists(GetConfigDir + EKEY_SETTING_FILE_NAME) then | |
1685 | + Exit; | |
1686 | + SecList := TStringList.Create; | |
1687 | + ini := TMemIniFile.Create(GetConfigDir + EKEY_SETTING_FILE_NAME); | |
1688 | + try | |
1689 | + ini.ReadSection(STD_SEC, SecList); | |
1690 | + for i := 0 to SecList.Count - 1 do begin | |
1691 | + ActionName := SecList[i]; | |
1692 | + ActionKey := ini.ReadInteger(STD_SEC, ActionName, -1); | |
1693 | + if ActionKey <> -1 then begin | |
1694 | + Component := ActionList.Owner.FindComponent(ActionName); | |
1695 | + if TObject(Component) is TAction then begin | |
1696 | + TAction(Component).ShortCut := ActionKey; | |
1697 | + end; | |
1698 | + end; | |
1699 | + end; | |
1700 | + finally | |
1701 | + ini.Free; | |
1702 | + SecList.Free; | |
1703 | + end; | |
1704 | +end; | |
1705 | + | |
1706 | +{! | |
1707 | +\brief XGfB^ÉÝè³êÄ¢éV[gJbgL[ðt@CÉÛ¶ | |
1708 | +\param ActionList Û¶·éANVê | |
1709 | +\todo STD_SEC, EKEY_SETTING_FILE_NAME ð GetXXXFileName() ÉÇ¢o¹ | |
1710 | +\todo LoadKeySetting ƹæ | |
1711 | + | |
1712 | +ActionList ÉÝè³êÄ¢éV[gJbgL[ðt@CÉÛ¶µÜ·B | |
1713 | +} | |
1714 | +procedure TGikoSys.SaveEditorKeySetting(ActionList: TActionList); | |
1715 | +const | |
1716 | + STD_SEC = 'KeySetting'; | |
1717 | +var | |
1718 | + i: Integer; | |
1719 | + ini: TMemIniFile; | |
1720 | +begin | |
1721 | + ini := TMemIniFile.Create(GetConfigDir + EKEY_SETTING_FILE_NAME); | |
1722 | + try | |
1723 | + for i := 0 to ActionList.ActionCount - 1 do begin | |
1724 | + if ActionList.Actions[i].Tag = -1 then | |
1725 | + Continue; | |
1726 | + ini.WriteInteger(STD_SEC, ActionList.Actions[i].Name, TAction(ActionList.Actions[i]).ShortCut); | |
1727 | + end; | |
1728 | + ini.UpdateFile; | |
1729 | + finally | |
1730 | + ini.Free; | |
1731 | + end; | |
1732 | +end; | |
1619 | 1733 | |
1620 | 1734 | {! |
1621 | 1735 | \brief vZX̶¬ |
@@ -2805,11 +2919,7 @@ begin | ||
2805 | 2919 | finally |
2806 | 2920 | body.Free; |
2807 | 2921 | end; |
2808 | - | |
2809 | - Result := HTMLCreater.ConvRes( | |
2810 | - Result, | |
2811 | - ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), | |
2812 | - 'bbs', 'key', 'st', 'to', 'nofirst', 'true', false); | |
2922 | + Result := HTMLCreater.ConvRes(Result, ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true', false); | |
2813 | 2923 | end; |
2814 | 2924 | end; |
2815 | 2925 |
@@ -2836,7 +2946,7 @@ begin | ||
2836 | 2946 | |
2837 | 2947 | for i := 0 to threadItem.Count - 1 do begin |
2838 | 2948 | // X |
2839 | - THTMLCreate.DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), i + 1), @Res); | |
2949 | + Res := DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), i + 1)); | |
2840 | 2950 | if(AnsiPos(AID, Res.FDateTime) > 0) then begin |
2841 | 2951 | body.Add(IntToStr(i+1)); |
2842 | 2952 | end; |
@@ -2846,7 +2956,7 @@ begin | ||
2846 | 2956 | try |
2847 | 2957 | ReadList.LoadFromFile(ThreadItem.GetThreadFileName); |
2848 | 2958 | for i := 0 to ReadList.Count - 1 do begin |
2849 | - THTMLCreate.DivideStrLine(ReadList[i], @Res); | |
2959 | + Res := DivideStrLine(ReadList[i]); | |
2850 | 2960 | if AnsiPos(AID, Res.FDateTime) > 0 then begin |
2851 | 2961 | body.Add(IntToStr(i+1)); |
2852 | 2962 | end; |
@@ -2888,11 +2998,7 @@ begin | ||
2888 | 2998 | finally |
2889 | 2999 | body.Free; |
2890 | 3000 | end; |
2891 | - Result := HTMLCreater.ConvRes( | |
2892 | - Result, ThreadItem.ParentBoard.BBSID, | |
2893 | - ChangeFileExt(ThreadItem.FileName, ''), | |
2894 | - 'bbs', 'key', 'st', 'to', 'nofirst', 'true', | |
2895 | - false); | |
3001 | + Result := HTMLCreater.ConvRes(Result, ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true', false); | |
2896 | 3002 | end; |
2897 | 3003 | end; |
2898 | 3004 |
@@ -2917,9 +3023,9 @@ begin | ||
2917 | 3023 | //===== vOCÉæé\¦ |
2918 | 3024 | //boardPlugIn := ThreadItem.BoardPlugIn; |
2919 | 3025 | boardPlugIn := ThreadItem.ParentBoard.BoardPlugIn; |
2920 | - THTMLCreate.DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), AIDNum), @Res); | |
3026 | + Res := DivideStrLine(boardPlugIn.GetDat(DWORD( threadItem ), AIDNum)); | |
2921 | 3027 | end else begin |
2922 | - THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res); | |
3028 | + Res := DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum)); | |
2923 | 3029 | end; |
2924 | 3030 | AID := Res.FDateTime; |
2925 | 3031 | if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin |
@@ -3238,44 +3344,7 @@ begin | ||
3238 | 3344 | R.Free; |
3239 | 3345 | end; |
3240 | 3346 | end; |
3241 | -//! maintH[ÌV[gJbgL[ÌInit@C¼ | |
3242 | -function TGikoSys.GetMainKeyFileName : String; | |
3243 | -begin | |
3244 | - Result := Setting.GetMainKeyFileName; | |
3245 | -end; | |
3246 | -//! EditortH[ÌV[gJbgL[ÌInit@C¼ | |
3247 | -function TGikoSys.GetEditorKeyFileName: String; | |
3248 | -begin | |
3249 | - Result := Setting.GetEditorKeyFileName; | |
3250 | -end; | |
3251 | 3347 | |
3252 | -//! MRirÌbZ[WðÝè·é | |
3253 | -procedure TGikoSys.SetGikoMessage; | |
3254 | -begin | |
3255 | - if FGikoMessage = nil then begin | |
3256 | - FGikoMessage := TGikoMessage.Create; | |
3257 | - end else begin | |
3258 | - FGikoMessage.Clear; | |
3259 | - end; | |
3260 | - | |
3261 | - if (Setting.GengoSupport) then begin | |
3262 | - try | |
3263 | - if (FileExists(Setting.GetLanguageFileName)) then begin | |
3264 | - FGikoMessage.LoadFromFile(Setting.GetLanguageFileName); | |
3265 | - end; | |
3266 | - except | |
3267 | - FGikoMessage.Clear; | |
3268 | - end; | |
3269 | - end; | |
3270 | -end; | |
3271 | -//! MRirÌbZ[Wðæ¾·é | |
3272 | -function TGikoSys.GetGikoMessage(MesType: TGikoMessageListType): String; | |
3273 | -begin | |
3274 | - Result := ''; | |
3275 | - if FGikoMessage <> nil then begin | |
3276 | - Result := FGikoMessage.GetMessage(MesType); | |
3277 | - end; | |
3278 | -end; | |
3279 | 3348 | |
3280 | 3349 | initialization |
3281 | 3350 | GikoSys := TGikoSys.Create; |
@@ -18,13 +18,6 @@ uses | ||
18 | 18 | {Sort,} ,GikoBayesian, HintWindow; |
19 | 19 | |
20 | 20 | type |
21 | - | |
22 | - PResLinkRec = ^TResLinkRec; | |
23 | - TResLinkRec = record | |
24 | - FBbs: string; | |
25 | - FKey : string; | |
26 | - end; | |
27 | - | |
28 | 21 | THTMLCreate = class(TObject) |
29 | 22 | private |
30 | 23 | { Private é¾ } |
@@ -42,18 +35,15 @@ type | ||
42 | 35 | procedure CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList); |
43 | 36 | procedure CreateUseCSSHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string ); |
44 | 37 | procedure CreateDefaultHTML (doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string ); |
45 | - procedure ConvertResAnchor(PRes: PResRec); | |
38 | + function ConvertResAnchor(res: string): string; | |
46 | 39 | procedure separateNumber(var st: String; var et: String; const Text, Separator: String); |
47 | - function checkComma(const s : String; var j : Integer; var No : String) : boolean; | |
48 | - function addResAnchor(PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean; | |
49 | - var s : String; j : Integer; const No: String) : string; | |
50 | 40 | public |
51 | 41 | { Public é¾ } |
52 | - procedure AddAnchorTag(PRes: PResRec); | |
42 | + function AddAnchorTag(s: string): string; | |
53 | 43 | function LoadFromSkin(fileName: string; ThreadItem: TThreadItem; SizeByte: Integer): string; |
54 | - function SkinedRes(const skin: string; PRes: PResRec; const No: string): string; | |
55 | - procedure ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); overload; | |
44 | + function SkinedRes(skin: string; Res: TResRec; No: string): string; | |
56 | 45 | function ConvRes(const Body, Bbs, Key, ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload; |
46 | +// function ConvRes(const Body, Bbs, Key, ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue, FullURL : string): string; overload; | |
57 | 47 | procedure CreateHTML2(doc: Variant; ThreadItem: TThreadItem; var sTitle: string); |
58 | 48 | procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string); |
59 | 49 | //X|bvAbvÌì¬ |
@@ -62,10 +52,6 @@ type | ||
62 | 52 | class function GetRespopupURL(AText, AThreadURL : string): string; |
63 | 53 | //wèµ½pXÉXLàµÍCSSÌt@CÌRs[ðìé |
64 | 54 | class procedure SkinorCSSFilesCopy(path: string); |
65 | - //datPsðXɪð·é | |
66 | - class procedure DivideStrLine(Line: string; PRes: PResRec); | |
67 | - //HTML©çN^Oðí·é | |
68 | - class function DeleteLink(const s: string): string; | |
69 | 55 | end; |
70 | 56 | |
71 | 57 | var |
@@ -170,70 +156,58 @@ end; | ||
170 | 156 | |
171 | 157 | // XÌlðu··é |
172 | 158 | function THTMLCreate.SkinedRes( |
173 | - const skin: string; | |
174 | - PRes: PResRec; | |
175 | - const No: string | |
159 | + skin: string; | |
160 | + Res: TResRec; | |
161 | + No: string | |
176 | 162 | ): string; |
177 | -const | |
178 | - FORMT_NAME = '<b>%s</b>'; | |
179 | - FORMT_NUM = '<a href="menu:%s" name="%s">%s</a>'; | |
180 | - FORMT_MAILNAME = '<a href="mailto:%s"><b>%s</b></a>'; | |
181 | 163 | var |
182 | 164 | spamminess : Extended; |
183 | -{$IFDEF SPAM_FILTER_ENABLED} | |
184 | 165 | wordCount : TWordCount; |
185 | -{$ENDIF} | |
186 | 166 | begin |
187 | -{$IFDEF SPAM_FILTER_ENABLED} | |
167 | + | |
188 | 168 | wordCount := TWordCount.Create; |
189 | 169 | try |
190 | 170 | spamminess := Floor( GikoSys.SpamParse( |
191 | 171 | Res.FName + '<>' + Res.FMailTo + '<>' + Res.FBody, wordCount ) * 100 ); |
192 | -{$ELSE} | |
193 | - spamminess := 0; | |
194 | -{$ENDIF} | |
195 | - Result := CustomStringReplace( skin, '<SPAMMINESS/>', FloatToStr( spamminess ) ); | |
196 | - Result := CustomStringReplace( Result, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) ); | |
197 | - Result := CustomStringReplace( Result, '<MAIL/>', PRes.FMailTo); | |
198 | - Result := CustomStringReplace( Result, '<DATE/>', PRes.FDateTime); | |
199 | - Result := CustomStringReplace( Result, '<PLAINNUMBER/>', No); | |
200 | - Result := CustomStringReplace( Result, '<NAME/>', | |
201 | - Format(FORMT_NAME, [PRes.FName])); | |
202 | - Result := CustomStringReplace( Result, '<NUMBER/>', | |
203 | - Format(FORMT_NUM, [No, No, No])); | |
204 | - Result := CustomStringReplace( Result, '<MAILNAME/>', | |
205 | - Format(FORMT_MAILNAME,[PRes.FMailTo, PRes.FName])); | |
206 | - Result := CustomStringReplace( Result, '<MESSAGE/>', PRes.FBody); | |
172 | + | |
173 | + Skin := CustomStringReplace( Skin, '<NUMBER/>', | |
174 | + Format('<a href="menu:%s" name="%s">%s</a>', [No, No, No])); | |
175 | + Skin := CustomStringReplace( Skin, '<PLAINNUMBER/>', No); | |
176 | + Skin := CustomStringReplace( Skin, '<NAME/>', '<b>' + Res.FName + '</b>'); | |
177 | + Skin := CustomStringReplace( Skin, '<MAILNAME/>', | |
178 | + Format('<a href="mailto:%s"><b>%s</b></a>',[Res.FMailTo, Res.FName])); | |
179 | + Skin := CustomStringReplace( Skin, '<MAIL/>', Res.FMailTo); | |
180 | + Skin := CustomStringReplace( Skin, '<DATE/>', Res.FDateTime); | |
181 | + Skin := CustomStringReplace( Skin, '<MESSAGE/>', Res.FBody); | |
182 | + Skin := CustomStringReplace( Skin, '<SPAMMINESS/>', FloatToStr( spamminess ) ); | |
183 | + Skin := CustomStringReplace( Skin, '<NONSPAMMINESS/>', FloatToStr( 100 - spamminess ) ); | |
207 | 184 | |
208 | 185 | //----- ©¿ã`µáÝ·pBRgAEgµÄàæµ |
209 | 186 | if GikoSys.Setting.UseKatjushaType then begin |
210 | - Result := CustomStringReplace( Result, '&NUMBER', | |
187 | + Skin := CustomStringReplace( Skin, '&NUMBER', | |
211 | 188 | '<a href="menu:' + No + '" name="' + No + '">' + No + '</a>'); |
212 | - Result := CustomStringReplace( Result, '&PLAINNUMBER', No); | |
213 | - Result := CustomStringReplace( Result, '&NAME', '<b>' + PRes.FName + '</b>'); | |
214 | - Result := CustomStringReplace( Result, '&MAILNAME', | |
215 | - '<a href="mailto:' + PRes.FMailTo + '"><b>' + PRes.FName + '</b></a>'); | |
216 | - Result := CustomStringReplace( Result, '&MAIL', PRes.FMailTo); | |
217 | - Result := CustomStringReplace( Result, '&DATE', PRes.FDateTime); | |
218 | - Result := CustomStringReplace( Result, '&MESSAGE', PRes.FBody); | |
219 | - Result := CustomStringReplace( Result, '&SPAMMINESS', FloatToStr( spamminess ) ); | |
220 | - Result := CustomStringReplace( Result, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) ); | |
189 | + Skin := CustomStringReplace( Skin, '&PLAINNUMBER', No); | |
190 | + Skin := CustomStringReplace( Skin, '&NAME', '<b>' + Res.FName + '</b>'); | |
191 | + Skin := CustomStringReplace( Skin, '&MAILNAME', | |
192 | + '<a href="mailto:' + Res.FMailTo + '"><b>' + Res.FName + '</b></a>'); | |
193 | + Skin := CustomStringReplace( Skin, '&MAIL', Res.FMailTo); | |
194 | + Skin := CustomStringReplace( Skin, '&DATE', Res.FDateTime); | |
195 | + Skin := CustomStringReplace( Skin, '&MESSAGE', Res.FBody); | |
196 | + Skin := CustomStringReplace( Skin, '&SPAMMINESS', FloatToStr( spamminess ) ); | |
197 | + Skin := CustomStringReplace( Skin, '&NONSPAMMINESS', FloatToStr( 100 - spamminess ) ); | |
221 | 198 | end; |
222 | 199 | //----- ±±ÜÅ |
223 | -{$IFDEF SPAM_FILTER_ENABLED} | |
200 | + | |
201 | + Result := Skin; | |
224 | 202 | finally |
225 | 203 | wordCount.Free; |
226 | 204 | end; |
227 | -{$ENDIF} | |
228 | 205 | |
229 | 206 | end; |
230 | 207 | (************************************************************************* |
231 | 208 | *http://̶ñðanchor^Ot«É·éB |
232 | 209 | *************************************************************************) |
233 | -procedure THTMLCreate.AddAnchorTag(PRes: PResRec); | |
234 | -const | |
235 | - _HEAD : array[0..9] of String = | |
236 | - ('', 'h', 'ht', '', 'htt', '', 'http://', '', '', ''); | |
210 | +function THTMLCreate.AddAnchorTag(s: string): string; | |
237 | 211 | var |
238 | 212 | url: string; |
239 | 213 | href: string; |
@@ -242,14 +216,10 @@ var | ||
242 | 216 | idx, idx2: Integer; |
243 | 217 | pos : PChar; |
244 | 218 | pp, pe : PChar; |
245 | - s : String; | |
246 | - len : Integer; | |
247 | 219 | begin |
248 | - s := PRes.FBody; | |
249 | - PRes.FBody := ''; | |
220 | + Result := ''; | |
250 | 221 | |
251 | - //while True do begin | |
252 | - repeat | |
222 | + while True do begin | |
253 | 223 | idx := MaxInt; |
254 | 224 | idx2 := MaxInt; |
255 | 225 | pp := PChar(s); |
@@ -266,62 +236,63 @@ begin | ||
266 | 236 | |
267 | 237 | if idx = MaxInt then begin |
268 | 238 | //Nª³¢æB |
269 | - len := Length(PRes.FBody); | |
270 | - SetLength(PRes.FBody, Length(s) + len); | |
271 | - Move(pp^, PRes.FBody[len + 1], Length(s)); | |
272 | - end else begin | |
273 | - if (idx > anchorLen) and | |
274 | - (AnsiStrPosEx(pp + idx - 1 - anchorLen, pp + idx, pANCHORs, pANCHORe) <> nil) then begin | |
275 | - //ùÉN^OªÂ¢Ä¢éÁۢƫÍV | |
276 | - //</a></A>ðT·A¬¶Å©Â©çȯêÎå¶Åõ | |
277 | - pos := AnsiStrPosEx(pp + idx, pe, pCTAGLs, pCTAGLe); | |
278 | - if pos = nil then | |
279 | - pos := AnsiStrPosEx(pp + idx, pe, pCTAGUs, pCTAGUe); | |
280 | - if pos = nil then | |
281 | - b := Length(REF_MARK[idx2]) | |
282 | - else | |
283 | - b := pos - pp + 1; | |
239 | + Result := Result + s; | |
240 | + Break; | |
241 | + end; | |
284 | 242 | |
285 | - len := Length(PRes.FBody); | |
286 | - SetLength(PRes.FBody, len + idx + b); | |
287 | - Move(pp^, PRes.FBody[len + 1], idx + b); | |
288 | - Delete(s, 1, idx + b); | |
289 | - end else begin | |
290 | - pp := PChar(s); | |
291 | - len := Length(PRes.FBody); | |
292 | - SetLength(PRes.FBody, len + idx - 1); | |
293 | - Move(pp^, PRes.FBody[len + 1], idx - 1); | |
294 | - | |
295 | - Delete(s, 1, idx - 1); | |
296 | - b := Length( s ) + 1; | |
297 | - pp := PChar(s); | |
298 | - for i := 1 to b do begin | |
299 | - //PoCg¶ÅURLÉg¦È¢¶Èç | |
300 | - if (AnsiStrPosEx(pURLCHARs, pURLCHARe, pp, pp + 1) = nil) then begin | |
301 | - url := Copy(s, 1, i - 1); | |
302 | - Delete(s, 1, i - 1); | |
303 | - href := Format('%s%s', [_HEAD[idx2], url]); | |
304 | - PRes.FBody | |
305 | - := Format('%s<a href="%s" target="_blank">%s</a>', [PRes.FBody, href, url]); | |
306 | - Break; | |
307 | - end; | |
308 | - //ê¶ißéB | |
309 | - Inc(pp); | |
243 | + if (idx > 1) and (idx > anchorLen) and | |
244 | + (AnsiStrPosEx(pp + idx - 1 - anchorLen, pp + idx, pANCHORs, pANCHORe) <> nil) then begin | |
245 | + //ùÉN^OªÂ¢Ä¢éÁۢƫÍV | |
246 | + //</a></A>ðT·A¬¶Å©Â©çȯêÎå¶Åõ | |
247 | + pos := AnsiStrPosEx(pp + idx, pe, pCTAGLs, pCTAGLe); | |
248 | + if pos = nil then | |
249 | + pos := AnsiStrPosEx(pp + idx, pe, pCTAGUs, pCTAGUe); | |
250 | + if pos = nil then | |
251 | + b := Length(REF_MARK[idx2]) | |
252 | + else | |
253 | + b := pos - pp + 1; | |
254 | + | |
255 | + Result := Result + Copy(s, 1, idx + b); | |
256 | + Delete(s, 1, idx + b); | |
257 | + Continue; | |
258 | + end; | |
259 | + | |
260 | + Result := Result + Copy(s, 1, idx - 1); | |
261 | + Delete(s, 1, idx - 1); | |
262 | + b := Length( s ) + 1; | |
263 | + pp := PChar(s); | |
264 | + for i := 1 to b do begin | |
265 | + pe := AnsiStrPosEx(pURLCHARs, pURLCHARe, pp, pp + 1); | |
266 | + | |
267 | + if pe = nil then begin | |
268 | + //URL¶áÈ¢¶©IÆ©A¶ªÈÈÁ½B | |
269 | + url := Copy(s, 1, i - 1); | |
270 | + case idx2 of | |
271 | + 1 : href := 'h' + url; | |
272 | + 2 : href := 'ht' + url; | |
273 | + 4 : href := 'htt' + url; | |
274 | + 6 : href := 'http://' + url; | |
275 | + else | |
276 | + href := url; | |
310 | 277 | end; |
278 | + | |
279 | + Result := Result + '<a href="' + href + '" target="_blank">' + url + '</a>'; | |
280 | + Delete(s, 1, i - 1); | |
281 | + Break; | |
311 | 282 | end; |
283 | + //ê¶ißéB | |
284 | + Inc(pp); | |
312 | 285 | end; |
313 | - until idx = MaxInt; | |
286 | + end; | |
314 | 287 | end; |
315 | 288 | |
316 | 289 | //øAAIDFÎÛÆÈéútID¶ñAANum:XÔ AURLF»ÌXbhÌURL |
317 | 290 | function THTMLCreate.AddBeProfileLink(AID : string; ANum: Integer):string ; |
318 | -const | |
319 | - BE_MARK : string = 'BE:'; | |
320 | 291 | var |
321 | 292 | p : integer; |
322 | 293 | BNum, BMark : string; |
323 | 294 | begin |
324 | - p := AnsiPos(BE_MARK, AnsiUpperCase(AID)); | |
295 | + p := AnsiPos('BE:', AnsiUpperCase(AID)); | |
325 | 296 | if p > 0 then begin |
326 | 297 | BNum := Copy(AID, p, Length(AID)); |
327 | 298 | AID := Copy(AID, 1, p - 1); |
@@ -336,7 +307,7 @@ begin | ||
336 | 307 | end else |
337 | 308 | Result := AID; |
338 | 309 | end; |
339 | -procedure THTMLCreate.separateNumber(var st: String; var et: String; const Text:String; const Separator: String); | |
310 | +procedure THTMLCreate.separateNumber(var st: String; var et: String; const Text, Separator: String); | |
340 | 311 | var |
341 | 312 | p : Integer; |
342 | 313 | begin |
@@ -349,203 +320,6 @@ begin | ||
349 | 320 | et := Text; |
350 | 321 | end; |
351 | 322 | end; |
352 | -procedure THTMLCreate.ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); | |
353 | -const | |
354 | - GT = '>'; | |
355 | - SN = '0123456789'; | |
356 | - //õÎÛ̶ñS | |
357 | - TOKEN : array[0..5] of string = (GT+GT, GT, '', '', '<a ', '<A '); | |
358 | -var | |
359 | - i : integer; | |
360 | - s : string; | |
361 | - sw: boolean; | |
362 | - cm: boolean; | |
363 | - No: string; | |
364 | - oc : string; | |
365 | - pos, pmin : integer; | |
366 | - j : integer; | |
367 | - ch : string; | |
368 | - db : boolean; | |
369 | - len : integer; | |
370 | - rink : string; | |
371 | - | |
372 | - procedure getNumberString; | |
373 | - begin | |
374 | - while (j <= len) do begin | |
375 | - if (ByteType(s, j) = mbSingleByte) then begin | |
376 | - //1byte¶ | |
377 | - ch := s[j]; | |
378 | - Inc(j); | |
379 | - db := false; | |
380 | - end else begin | |
381 | - //2byte¶ | |
382 | - ch := ZenToHan(Copy(s, j, 2)); | |
383 | - Inc(j, 2); | |
384 | - db := true; | |
385 | - end; | |
386 | - | |
387 | - if System.Pos(ch, SN) > 0 then begin | |
388 | - No := No + ch; | |
389 | - end else if (ch = '-') then begin | |
390 | - if sw then break; | |
391 | - if No = '' then break; | |
392 | - No := No + ch; | |
393 | - sw := true; | |
394 | - end else begin | |
395 | - break; | |
396 | - end; | |
397 | - end; | |
398 | - end; | |
399 | - | |
400 | -begin | |
401 | - //s É{¶ðSüêé | |
402 | - s := PRes.FBody; | |
403 | - //ÊðNA | |
404 | - PRes.FBody := ''; | |
405 | - | |
406 | - // | |
407 | - while Length(s) > 2 do begin | |
408 | - pmin := Length(s) + 1; | |
409 | - i := Length(token); | |
410 | - for j := 0 to 5 do begin | |
411 | - pos := AnsiPos(TOKEN[j], s); | |
412 | - if pos <> 0 then begin | |
413 | - if pos < pmin then begin | |
414 | - //ÇêÅqbgµ½©Û¶ | |
415 | - i := j; | |
416 | - //ŬlðXV | |
417 | - pmin := pos; | |
418 | - end; | |
419 | - end; | |
420 | - end; | |
421 | - | |
422 | - //qbgµ½¶ñÌêÂèOÜÅÊÉRs[ | |
423 | - PRes.FBody := PRes.FBody + Copy(s, 1, pmin - 1); | |
424 | - Delete(s, 1, pmin - 1); | |
425 | - | |
426 | - if i = 6 then begin | |
427 | - //qbgȵ | |
428 | - end else if (i = 4) or (i = 5) then begin | |
429 | - //'<a ' or '<A' Åqbg '</a>' or '</A>' ÜÅRs[ | |
430 | - pmin := AnsiPos('</a>' , s); | |
431 | - pos := AnsiPos('</A>' , s); | |
432 | - if (pmin <> 0) and (pos <> 0) then begin | |
433 | - if (pmin > pos) then begin | |
434 | - pmin := pos; | |
435 | - end; | |
436 | - end else if (pos <> 0) then begin | |
437 | - pmin := pos; | |
438 | - end; | |
439 | - rink := Copy(s, 1, pmin + 3); | |
440 | - PRes.FBody := PRes.FBody + rink; | |
441 | - Delete(s, 1, pmin + 3); | |
442 | - | |
443 | - pmin := Length(rink); | |
444 | - i := Length(TOKEN); | |
445 | - for j := 0 to 3 do begin | |
446 | - pos := AnsiPos(TOKEN[j], rink); | |
447 | - if pos <> 0 then begin | |
448 | - if pos < pmin then begin | |
449 | - //ÇêÅqbgµ½©Û¶ | |
450 | - i := j; | |
451 | - //ŬlðXV | |
452 | - pmin := pos; | |
453 | - end; | |
454 | - end; | |
455 | - end; | |
456 | - // XAJ[ªÜÜêÄ¢½ç,ª±ÀèAJ[Ƶĵ¤ | |
457 | - if i <= 3 then begin | |
458 | - No := ''; | |
459 | - j := 1; | |
460 | - len := Length(s); | |
461 | - cm := checkComma(s, j, No); | |
462 | - len := Length(s); | |
463 | - while cm do begin | |
464 | - oc := ''; | |
465 | - No := ''; | |
466 | - sw := false; | |
467 | - db := false; | |
468 | - getNumberString; | |
469 | - //I[ÜÅsÁÄÌI¹©`FbN | |
470 | - if j <= len then begin | |
471 | - if db then j := j - 2 | |
472 | - else j := j - 1; | |
473 | - end; | |
474 | - addResAnchor(PRes, PResLink, DatToHTML, s, j, No); | |
475 | - j := 1; | |
476 | - len := Length(s); | |
477 | - cm := checkComma(s, j, No); | |
478 | - end; | |
479 | - end; | |
480 | - end else begin | |
481 | - //½©µç©Â©Á½p^[ | |
482 | - j := Length(TOKEN[i]) + 1; | |
483 | - oc := ''; | |
484 | - No := ''; | |
485 | - sw := false; | |
486 | - db := false; | |
487 | - len := Length(s); | |
488 | - getNumberString; | |
489 | - //I[ÜÅsÁÄÌI¹©`FbN | |
490 | - if j <= len then begin | |
491 | - if db then j := j - 2 | |
492 | - else j := j - 1; | |
493 | - end; | |
494 | - addResAnchor(PRes, PResLink, DatToHTML, s, j, No); | |
495 | - end; | |
496 | - end; | |
497 | - if Length(s) > 0 then begin | |
498 | - PRes.FBody := PRes.FBody + s; | |
499 | - end; | |
500 | -end; | |
501 | -function THTMLCreate.checkComma( | |
502 | - const s : String; | |
503 | - var j : Integer; | |
504 | - var No : String | |
505 | -) : boolean; | |
506 | -var | |
507 | - bType : TMbcsByteType; | |
508 | -begin | |
509 | - Result := false; | |
510 | - if (Length(s) > 0) then begin | |
511 | - bType := ByteType(s, j); | |
512 | - if ((bType = mbSingleByte) and (s[j] = ',') or | |
513 | - ((bType = mbLeadByte) and (ZenToHan(Copy(s, j ,2)) = ','))) then begin | |
514 | - Result := true; | |
515 | - if (bType = mbSingleByte) then | |
516 | - Inc(j) | |
517 | - else | |
518 | - Inc(j, 2); | |
519 | - No := ''; | |
520 | - end; | |
521 | - end; | |
522 | -end; | |
523 | -function THTMLCreate.addResAnchor( | |
524 | - PAddRes: PResRec; PResLink : PResLinkRec; dat : boolean; | |
525 | - var s : String; j : Integer; const No: String) : string; | |
526 | -const | |
527 | - FORMAT_LINK = '<a href="../test/read.cgi?bbs=%s&key=%s&st=%s&to=%s&nofirst=true" target="_blank">'; | |
528 | -var | |
529 | - st,et : string; | |
530 | -begin | |
531 | - | |
532 | - //½àª©Â©çȢƫ | |
533 | - if No = '' then begin | |
534 | - PAddRes.FBody := PAddRes.FBody + Copy(s, 1, j - 1); | |
535 | - end else begin | |
536 | - separateNumber(st, et, No, '-'); | |
537 | - | |
538 | - if not dat then begin | |
539 | - PAddRes.FBody := PAddRes.FBody + | |
540 | - Format(FORMAT_LINK, [PResLink.FBbs, PResLink.FKey, st, et]); | |
541 | - end else begin | |
542 | - PAddRes.FBody := PAddRes.FBody + Format('<a href="#%s">', [st]); | |
543 | - end; | |
544 | - PAddRes.FBody := PAddRes.FBody + Copy(s, 1, j - 1) + '</a>'; | |
545 | - end; | |
546 | - Delete(s, 1, j - 1); | |
547 | -end; | |
548 | - | |
549 | 323 | (************************************************************************* |
550 | 324 | * |
551 | 325 | * from HotZonu |
@@ -727,7 +501,7 @@ begin | ||
727 | 501 | Result := Result + s; |
728 | 502 | end; |
729 | 503 | |
730 | -procedure THTMLCreate.ConvertResAnchor(PRes: PResRec); | |
504 | +function THTMLCreate.ConvertResAnchor(res: string): string; | |
731 | 505 | const |
732 | 506 | _HEAD : string = '<a href="../'; |
733 | 507 | _TAIL : string = ' target="_blank">'; |
@@ -738,17 +512,15 @@ const | ||
738 | 512 | var |
739 | 513 | i, j, k: Integer; |
740 | 514 | tmp: string; |
741 | - res: string; | |
742 | 515 | begin |
743 | - res := PRes.FBody; | |
744 | - PRes.FBody := ''; | |
516 | + Result := ''; | |
745 | 517 | i := AnsiPos(_HEAD, res); |
746 | 518 | while i <> 0 do begin |
747 | - PRes.FBody := PRes.FBody + Copy(res, 1, i -1); | |
519 | + Result := Result + Copy(res, 1, i -1); | |
748 | 520 | Delete(res, 1, i - 1); |
749 | 521 | j := AnsiPos(_TAIL, res); |
750 | 522 | if j = 0 then begin |
751 | - PRes.FBody := PRes.FBody + res; | |
523 | + Result := Result + res; | |
752 | 524 | Exit; |
753 | 525 | end; |
754 | 526 | tmp := Copy(res, 1, j - 1); |
@@ -756,11 +528,11 @@ begin | ||
756 | 528 | if (AnsiPos(_ST, tmp) <> 0) and (AnsiPos(_TO, tmp) <> 0) then begin |
757 | 529 | Delete(tmp, 1, AnsiPos(_ST, tmp) + 3); |
758 | 530 | Delete(tmp, AnsiPos(_TO, tmp), Length(tmp)); |
759 | - PRes.FBody := PRes.FBody + '<a href="#' + tmp + '">'; | |
531 | + Result := Result + '<a href="#' + tmp + '">'; | |
760 | 532 | end else if (AnsiPos(_STA, tmp) <> 0) and (AnsiPos(_END, tmp) <> 0) then begin |
761 | 533 | Delete(tmp, 1, AnsiPos(_STA, tmp) + 6); |
762 | 534 | Delete(tmp, AnsiPos(_END, tmp), Length(tmp)); |
763 | - PRes.FBody := PRes.FBody + '<a href="#' + tmp + '">'; | |
535 | + Result := Result + '<a href="#' + tmp + '">'; | |
764 | 536 | end else begin |
765 | 537 | k := LastDelimiter('/', tmp); |
766 | 538 | Delete(tmp, 1, k); |
@@ -769,11 +541,11 @@ begin | ||
769 | 541 | else |
770 | 542 | Delete(tmp, AnsiPos('"', tmp), Length(tmp)); |
771 | 543 | |
772 | - PRes.FBody := PRes.FBody + '<a href="#' + tmp + '">'; | |
544 | + Result := Result + '<a href="#' + tmp + '">'; | |
773 | 545 | end; |
774 | 546 | i := AnsiPos(_HEAD, res); |
775 | 547 | end; |
776 | - PRes.FBody := PRes.FBody + res; | |
548 | + Result := Result + res; | |
777 | 549 | |
778 | 550 | end; |
779 | 551 |
@@ -794,8 +566,8 @@ begin | ||
794 | 566 | doc.open; |
795 | 567 | // wb_ |
796 | 568 | doc.Write( boardPlugIn.GetHeader( DWORD( threadItem ), |
797 | - '<style type="text/css">body {' + UserOptionalStyle + '}</style>' )); | |
798 | - doc.Write('<p id="idSearch"></p>'); | |
569 | + '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ) + #13#10 ); | |
570 | + doc.Write('<p id="idSearch"></p>'#13#10 ); | |
799 | 571 | |
800 | 572 | for i := 0 to threadItem.Count - 1 do begin |
801 | 573 | // 1 ÍK¸\¦ |
@@ -819,24 +591,24 @@ begin | ||
819 | 591 | try |
820 | 592 | if GikoSys.Setting.UseSkin then begin |
821 | 593 | if FileExists( GikoSys.GetSkinNewmarkFileName ) then |
822 | - doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )) | |
594 | + doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 ) | |
823 | 595 | else |
824 | - doc.Write( '<a name="new"></a>'); | |
596 | + doc.Write( '<a name="new"></a>'#13#10 ); | |
825 | 597 | end else if GikoSys.Setting.UseCSS then begin |
826 | - doc.Write('<a name="new"></a><div class="new">V X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>'); | |
598 | + doc.Write('<a name="new"></a><div class="new">V X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>'#13#10); | |
827 | 599 | end else begin |
828 | 600 | doc.Write('</dl>'); |
829 | 601 | doc.Write('<a name="new"></a>'); |
830 | 602 | doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>V X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>'); |
831 | - doc.Write('<dl>'); | |
603 | + doc.Write('<dl>'#13#10); | |
832 | 604 | end; |
833 | 605 | except |
834 | - doc.Write( '<a name="new"></a>'); | |
606 | + doc.Write( '<a name="new"></a>'#13#10); | |
835 | 607 | end; |
836 | 608 | end; |
837 | 609 | |
838 | 610 | // X |
839 | - doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 )); | |
611 | + doc.Write( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ) + #13#10 ); | |
840 | 612 | |
841 | 613 | if ThreadItem.Kokomade = (i + 1) then begin |
842 | 614 | // ±±ÜÅÇñ¾ |
@@ -845,23 +617,23 @@ begin | ||
845 | 617 | if FileExists( GikoSys.GetSkinBookmarkFileName ) then |
846 | 618 | doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 ) |
847 | 619 | else |
848 | - doc.Write( '<a name="koko"></a>'); | |
620 | + doc.Write( '<a name="koko"></a>'#13#10 ); | |
849 | 621 | end else if GikoSys.Setting.UseCSS then begin |
850 | - doc.Write('<a name="koko"></a><div class="koko">RRÜÅÇñ¾</div>'); | |
622 | + doc.Write('<a name="koko"></a><div class="koko">RRÜÅÇñ¾</div>'#13#10 ); | |
851 | 623 | end else begin |
852 | 624 | doc.Write('</dl>'); |
853 | 625 | doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>RRÜÅÇñ¾</b></font></td></tr></table>'); |
854 | - doc.Write('<dl>'); | |
626 | + doc.Write('<dl>'#13#10 ); | |
855 | 627 | end; |
856 | 628 | except |
857 | - doc.Write( '<a name="koko"></a>'); | |
629 | + doc.Write( '<a name="koko"></a>'#13#10 ); | |
858 | 630 | end; |
859 | 631 | end; |
860 | 632 | end; |
861 | 633 | |
862 | 634 | |
863 | 635 | // XL(tb^) |
864 | - doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' )); | |
636 | + doc.Write( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ) + #13#10 ); | |
865 | 637 | finally |
866 | 638 | doc.Close; |
867 | 639 | end; |
@@ -869,27 +641,29 @@ end; | ||
869 | 641 | |
870 | 642 | |
871 | 643 | procedure THTMLCreate.CreateUseSKINHTML(doc: Variant; ThreadItem: TThreadItem; ReadList: TStringList); |
872 | -const | |
873 | - KOKO_TAG = '<a name="koko"></a>'; | |
874 | - NEW_TAG = '<a name="new"></a>'; | |
875 | 644 | var |
876 | 645 | i: integer; |
646 | + No: string; | |
647 | + CSSFileName: string; | |
877 | 648 | NewReceiveNo: Integer; |
878 | 649 | Res: TResRec; |
879 | 650 | UserOptionalStyle: string; |
880 | 651 | SkinHeader: string; |
881 | 652 | SkinNewRes: string; |
882 | 653 | SkinRes: string; |
654 | + strTmp : string; | |
883 | 655 | ThreadName : string; |
884 | - ResLink :TResLinkRec; | |
656 | + function ReplaceRes( skin: string ): string; | |
657 | + begin | |
658 | + Result := SkinedRes( skin, Res, No ); | |
659 | + end; | |
885 | 660 | begin |
886 | 661 | NewReceiveNo := ThreadItem.NewReceive; |
887 | 662 | // tHgâTCYÌÝè |
888 | 663 | UserOptionalStyle := GikoSys.SetUserOptionalStyle; |
664 | + CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName; | |
889 | 665 | ThreadName := ChangeFileExt(ThreadItem.FileName, ''); |
890 | - ResLink.FBbs := ThreadItem.ParentBoard.BBSID; | |
891 | - ResLink.FKey := ThreadName; | |
892 | - //, | |
666 | + | |
893 | 667 | doc.open; |
894 | 668 | try |
895 | 669 | doc.charset := 'Shift_JIS'; |
@@ -904,8 +678,15 @@ begin | ||
904 | 678 | except |
905 | 679 | end; |
906 | 680 | |
907 | - SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size); | |
908 | - SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size ); | |
681 | + try | |
682 | + SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size); | |
683 | + except | |
684 | + end; | |
685 | + | |
686 | + try | |
687 | + SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size ); | |
688 | + except | |
689 | + end; | |
909 | 690 | |
910 | 691 | doc.Write('<p id="idSearch"></p>'#13#10'<a name="top"></a>'); |
911 | 692 |
@@ -928,38 +709,55 @@ begin | ||
928 | 709 | |
929 | 710 | // V }[N |
930 | 711 | if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin |
931 | - if FileExists( GikoSys.GetSkinNewmarkFileName ) then | |
932 | - doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )) | |
933 | - else | |
934 | - doc.Write( NEW_TAG ); | |
712 | + try | |
713 | + if FileExists( GikoSys.GetSkinNewmarkFileName ) then | |
714 | + doc.Write( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size )) | |
715 | + else | |
716 | + doc.Write( '<a name="new"></a>'); | |
717 | + except | |
718 | + doc.Write( '<a name="new"></a>' ); | |
719 | + end; | |
935 | 720 | end; |
936 | 721 | |
937 | 722 | if (Trim(ReadList[i]) <> '') then begin |
938 | - DivideStrLine(ReadList[i], @Res); | |
939 | - AddAnchorTag(@Res); | |
940 | - ConvRes(@Res, @ResLink); | |
723 | + No := IntToStr(i + 1); | |
724 | + | |
725 | + Res := DivideStrLine(ReadList[i]); | |
726 | + Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ThreadName, 'bbs', 'key', 'st', 'to', 'nofirst', 'true'); | |
941 | 727 | Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1); |
942 | 728 | |
943 | - if NewReceiveNo <= (i + 1) then | |
944 | - // V X | |
945 | - doc.Write(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1))) | |
946 | - else | |
947 | - // ÊíÌX | |
948 | - doc.Write(SkinedRes(SkinRes, @Res, IntToStr(i + 1))); | |
729 | + try | |
730 | + if NewReceiveNo <= (i + 1) then | |
731 | + // V X | |
732 | + strTmp := ReplaceRes( SkinNewRes ) | |
733 | + else | |
734 | + // ÊíÌX | |
735 | + strTmp := ReplaceRes( SkinRes ); | |
736 | + | |
737 | + doc.Write( strTmp ); | |
738 | + except | |
739 | + end; | |
949 | 740 | end; |
950 | 741 | |
951 | 742 | if ThreadItem.Kokomade = (i + 1) then begin |
952 | 743 | // ±±ÜÅÇñ¾ |
953 | - if FileExists( GikoSys.GetSkinBookmarkFileName ) then | |
954 | - doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 ) | |
955 | - else | |
956 | - doc.Write( KOKO_TAG ); | |
744 | + try | |
745 | + if FileExists( GikoSys.GetSkinBookmarkFileName ) then | |
746 | + doc.Write( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ) + #13#10 ) | |
747 | + else | |
748 | + doc.Write( '<a name="koko"></a>' ); | |
749 | + except | |
750 | + doc.Write( '<a name="koko"></a>' ); | |
751 | + end; | |
957 | 752 | end; |
958 | 753 | end; |
959 | 754 | |
960 | 755 | doc.Write('<a name="bottom"></a>'); |
961 | 756 | // XL(tb^) |
962 | - doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) ); | |
757 | + try | |
758 | + doc.Write( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) ); | |
759 | + except | |
760 | + end; | |
963 | 761 | finally |
964 | 762 | doc.close; |
965 | 763 | end; |
@@ -989,16 +787,11 @@ var | ||
989 | 787 | NewReceiveNo: Integer; |
990 | 788 | Res: TResRec; |
991 | 789 | UserOptionalStyle: string; |
992 | - ThreadName :String; | |
993 | - ResLink :TResLinkRec; | |
994 | 790 | begin |
995 | 791 | doc.open; |
996 | 792 | try |
997 | 793 | doc.charset := 'Shift_JIS'; |
998 | 794 | NewReceiveNo := ThreadItem.NewReceive; |
999 | - ThreadName := ChangeFileExt(ThreadItem.FileName, ''); | |
1000 | - ResLink.FBbs := ThreadItem.ParentBoard.BBSID; | |
1001 | - ResLink.FKey := ThreadName; | |
1002 | 795 | // tHgâTCYÌÝè |
1003 | 796 | UserOptionalStyle := GikoSys.SetUserOptionalStyle; |
1004 | 797 | CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName; |
@@ -1036,9 +829,8 @@ begin | ||
1036 | 829 | |
1037 | 830 | if (Trim(ReadList[i]) <> '') then begin |
1038 | 831 | No := IntToStr(i + 1); |
1039 | - DivideStrLine(ReadList[i], @Res); | |
1040 | - AddAnchorTag(@Res); | |
1041 | - ConvRes(@Res, @ResLink); | |
832 | + Res := DivideStrLine(ReadList[i]); | |
833 | + Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true'); | |
1042 | 834 | Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1); |
1043 | 835 | if Res.FMailTo = '' then |
1044 | 836 | doc.Write(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody])) |
@@ -1069,16 +861,11 @@ var | ||
1069 | 861 | No: string; |
1070 | 862 | NewReceiveNo: Integer; |
1071 | 863 | Res: TResRec; |
1072 | - ThreadName: String; | |
1073 | - ResLink : TResLinkRec; | |
1074 | 864 | begin |
1075 | 865 | doc.open; |
1076 | 866 | try |
1077 | 867 | doc.charset := 'Shift_JIS'; |
1078 | 868 | NewReceiveNo := ThreadItem.NewReceive; |
1079 | - ThreadName := ChangeFileExt(ThreadItem.FileName, ''); | |
1080 | - ResLink.FBbs := ThreadItem.ParentBoard.BBSID; | |
1081 | - ResLink.FKey := ThreadName; | |
1082 | 869 | doc.Write('<html><head>'#13#10); |
1083 | 870 | doc.Write('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">'#13#10); |
1084 | 871 | doc.Write('<title>' + sTitle + '</title></head>'#13#10); |
@@ -1105,17 +892,16 @@ begin | ||
1105 | 892 | end; |
1106 | 893 | |
1107 | 894 | if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin |
1108 | - doc.Write('</dl>'); | |
1109 | - doc.Write('<a name="new"></a>'); | |
1110 | - doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>V X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>'); | |
1111 | - doc.Write('<dl>'); | |
895 | + doc.Write('</dl>'#13#10); | |
896 | + doc.Write('<a name="new"></a>'#13#10); | |
897 | + doc.Write('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>V X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>'#13#10); | |
898 | + doc.Write('<dl>'#13#10); | |
1112 | 899 | end; |
1113 | 900 | |
1114 | 901 | if (Trim(ReadList[i]) <> '') then begin |
1115 | 902 | No := IntToStr(i + 1); |
1116 | - DivideStrLine(ReadList[i], @Res); | |
1117 | - AddAnchorTag(@Res); | |
1118 | - ConvRes(@Res, @ResLink); | |
903 | + Res := DivideStrLine(ReadList[i]); | |
904 | + Res.FBody := ConvRes(AddAnchorTag(Res.FBody), ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true'); | |
1119 | 905 | Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1); |
1120 | 906 | if Res.FMailTo = '' then |
1121 | 907 | doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> ¼OF<font color="forestgreen"><b> ' + Res.FName + ' </b></font> eúF <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10) |
@@ -1125,12 +911,14 @@ begin | ||
1125 | 911 | doc.Write('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> ¼OF<a href="mailto:' + Res.FMailTo + '"><b> ' + Res.FName + ' </B></a> eúF <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10); |
1126 | 912 | end; |
1127 | 913 | if ThreadItem.Kokomade = (i + 1) then begin |
1128 | - doc.Write('</dl>'); | |
1129 | - doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>RRÜÅÇñ¾</b></font></td></tr></table>'); | |
1130 | - doc.Write('<dl>'); | |
914 | + doc.Write('</dl>'#13#10); | |
915 | + doc.Write('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>RRÜÅÇñ¾</b></font></td></tr></table>'#13#10); | |
916 | + doc.Write('<dl>'#13#10); | |
1131 | 917 | end; |
1132 | 918 | end; |
1133 | - doc.Write('</dl>'#13#10'<a name="bottom"></a>'#13#10'</body></html>'); | |
919 | + doc.Write('</dl>'#13#10); | |
920 | + doc.Write('<a name="bottom"></a>'#13#10); | |
921 | + doc.Write('</body></html>'#13#10); | |
1134 | 922 | finally |
1135 | 923 | doc.Close; |
1136 | 924 | end; |
@@ -1162,15 +950,13 @@ begin | ||
1162 | 950 | ReadList := TStringList.Create; |
1163 | 951 | try |
1164 | 952 | if ThreadItem.IsLogFile then begin |
1165 | - ReadList.BeginUpdate; | |
1166 | 953 | FileName := ThreadItem.GetThreadFileName; |
1167 | 954 | ReadList.LoadFromFile(FileName); |
1168 | - ReadList.EndUpdate; | |
1169 | 955 | GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG')); |
1170 | 956 | GikoSys.FAbon.Execute(ReadList); // Ú`ñµÄ |
1171 | 957 | GikoSys.FSelectResFilter.Execute(ReadList); //XÌtB^Oð·é |
1172 | 958 | if ThreadItem.Title = '' then begin |
1173 | - DivideStrLine(ReadList[0], @Res); | |
959 | + Res := DivideStrLine(ReadList[0]); | |
1174 | 960 | sTitle := Res.FTitle; |
1175 | 961 | end else |
1176 | 962 | sTitle := ThreadItem.Title |
@@ -1186,7 +972,6 @@ begin | ||
1186 | 972 | end else begin |
1187 | 973 | CreateDefaultHTML(doc, ThreadItem, ReadList, sTitle); |
1188 | 974 | end; |
1189 | - | |
1190 | 975 | finally |
1191 | 976 | ReadList.Free; |
1192 | 977 | end; |
@@ -1216,23 +1001,18 @@ var | ||
1216 | 1001 | SkinHeader: string; |
1217 | 1002 | SkinRes: string; |
1218 | 1003 | tmp, tmp1: string; |
1219 | - ThreadName: String; | |
1220 | - ResLink : TResLinkRec; | |
1221 | 1004 | function LoadSkin( fileName: string ): string; |
1222 | 1005 | begin |
1223 | 1006 | Result := LoadFromSkin( fileName, ThreadItem, ThreadItem.Size ); |
1224 | 1007 | end; |
1225 | 1008 | function ReplaceRes( skin: string ): string; |
1226 | 1009 | begin |
1227 | - Result := SkinedRes( skin, @Res, No ); | |
1010 | + Result := SkinedRes( skin, Res, No ); | |
1228 | 1011 | end; |
1229 | 1012 | |
1230 | 1013 | begin |
1231 | 1014 | if ThreadItem <> nil then begin |
1232 | 1015 | CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName; |
1233 | - ThreadName := ChangeFileExt(ThreadItem.FileName, ''); | |
1234 | - ResLink.FBbs := ThreadItem.ParentBoard.BBSID; | |
1235 | - ResLink.FKey := ThreadName; | |
1236 | 1016 | html.Clear; |
1237 | 1017 | html.BeginUpdate; |
1238 | 1018 | //if ThreadItem.IsBoardPlugInAvailable then begin |
@@ -1264,9 +1044,7 @@ begin | ||
1264 | 1044 | for i := 0 to threadItem.Count - 1 do begin |
1265 | 1045 | |
1266 | 1046 | // X |
1267 | - Res.FBody := boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ); | |
1268 | - ConvertResAnchor(@Res); | |
1269 | - html.Append( Res.FBody ); | |
1047 | + html.Append( ConvertResAnchor(boardPlugIn.GetRes( DWORD( threadItem ), i + 1 )) ); | |
1270 | 1048 | |
1271 | 1049 | end; |
1272 | 1050 | // XL(tb^) |
@@ -1289,7 +1067,7 @@ begin | ||
1289 | 1067 | GikoSys.FAbon.IndividualAbon(ReadList, ChangeFileExt(FileName,'.NG')); |
1290 | 1068 | GikoSys.FAbon.Execute(ReadList); // Ú`ñµÄ |
1291 | 1069 | GikoSys.FSelectResFilter.Execute(ReadList); //XÌtB^Oð·é |
1292 | - DivideStrLine(ReadList[0], @Res); | |
1070 | + Res := DivideStrLine(ReadList[0]); | |
1293 | 1071 | //Res.FTitle := CustomStringReplace(Res.FTitle, 'M', ','); |
1294 | 1072 | sTitle := Res.FTitle; |
1295 | 1073 | end else begin |
@@ -1324,10 +1102,9 @@ begin | ||
1324 | 1102 | if (Trim(ReadList[i]) <> '') then begin |
1325 | 1103 | No := IntToStr(i + 1); |
1326 | 1104 | |
1327 | - DivideStrLine(ReadList[i], @Res); | |
1328 | - AddAnchorTag(@Res); | |
1329 | - ConvRes(@Res, @ResLink, true); | |
1330 | - ConvertResAnchor(@Res); | |
1105 | + Res := DivideStrLine(ReadList[i]); | |
1106 | + Res.FBody := AddAnchorTag(Res.FBody); | |
1107 | + Res.FBody := ConvertResAnchor(ConvRes(Res.FBody, ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true', true)); | |
1331 | 1108 | |
1332 | 1109 | try |
1333 | 1110 | html.Append( ReplaceRes( SkinRes ) ); |
@@ -1363,10 +1140,9 @@ begin | ||
1363 | 1140 | for i := 0 to ReadList.Count - 1 do begin |
1364 | 1141 | if (Trim(ReadList[i]) <> '') then begin |
1365 | 1142 | No := IntToStr(i + 1); |
1366 | - DivideStrLine(ReadList[i], @Res); | |
1367 | - AddAnchorTag(@Res); | |
1368 | - ConvRes(@Res, @ResLink, true); | |
1369 | - ConvertResAnchor(@Res); | |
1143 | + Res := DivideStrLine(ReadList[i]); | |
1144 | + Res.FBody := AddAnchorTag(Res.FBody); | |
1145 | + Res.FBody := ConvertResAnchor(ConvRes(Res.FBody, ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true', true)); | |
1370 | 1146 | if Res.FMailTo = '' then |
1371 | 1147 | html.Append('<a name="' + No + '"></a>' |
1372 | 1148 | + '<div class="header"><span class="no"><a href="menu:' + No + '">' + No + '</a></span> ' |
@@ -1410,10 +1186,9 @@ begin | ||
1410 | 1186 | for i := 0 to ReadList.Count - 1 do begin |
1411 | 1187 | if (Trim(ReadList[i]) <> '') then begin |
1412 | 1188 | No := IntToStr(i + 1); |
1413 | - DivideStrLine(ReadList[i], @Res); | |
1414 | - AddAnchorTag(@Res); | |
1415 | - ConvRes(@Res, @ResLink, true); | |
1416 | - ConvertResAnchor(@Res); | |
1189 | + Res := DivideStrLine(ReadList[i]); | |
1190 | + Res.FBody := AddAnchorTag(Res.FBody); | |
1191 | + Res.FBody := ConvertResAnchor(ConvRes(Res.FBody, ThreadItem.ParentBoard.BBSID, ChangeFileExt(ThreadItem.FileName, ''), 'bbs', 'key', 'st', 'to', 'nofirst', 'true', true)); | |
1417 | 1192 | if Res.FMailTo = '' then |
1418 | 1193 | html.Append('<a name="' + No + '"></a><dt><a href="menu:' + No + '">' + No + '</a> ¼OF<font color="forestgreen"><b> ' + Res.FName + ' </b></font> eúF ' + Res.FDateTime+ '<br><dd>' + Res.Fbody + ' <br><br><br>') |
1419 | 1194 | else if GikoSys.Setting.ShowMail then |
@@ -1480,7 +1255,7 @@ begin | ||
1480 | 1255 | //±±ÅQ¿áñËéÌdatÌ`®ÅPsÇÝßêÎ¥¥¥B«Çßéæ¤ÉÈÁ½ |
1481 | 1256 | tmp := boardPlugIn.GetDat( DWORD( threadItem ), i ); |
1482 | 1257 | if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin |
1483 | - DivideStrLine(tmp, @Res); | |
1258 | + Res := DivideStrLine(tmp); | |
1484 | 1259 | if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then |
1485 | 1260 | Header := IntToStr(Line) + ' ¼OF ' + Res.FName + ' eúF ' + Res.FDateTime |
1486 | 1261 | else |
@@ -1491,7 +1266,7 @@ begin | ||
1491 | 1266 | Body := CustomStringReplace(Res.FBody, '<br> ', #10,true); |
1492 | 1267 | Body := CustomStringReplace(Body, '<br>', #10,true); |
1493 | 1268 | Body := CustomStringReplace(Body, '</a>', '',true); |
1494 | - Body := THTMLCreate.DeleteLink(Body); | |
1269 | + Body := GikoSys.DeleteLink(Body); | |
1495 | 1270 | Body := CustomStringReplace(Body, '<', '<'); |
1496 | 1271 | Body := CustomStringReplace(Body, '>', '>'); |
1497 | 1272 | Body := CustomStringReplace(Body, '"', '"'); |
@@ -1507,7 +1282,7 @@ begin | ||
1507 | 1282 | FileName := ThreadItem.FilePath; |
1508 | 1283 | tmp := GikoSys.ReadThreadFile(FileName, Line); |
1509 | 1284 | if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin |
1510 | - DivideStrLine(tmp, @Res); | |
1285 | + Res := DivideStrLine(tmp); | |
1511 | 1286 | if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then |
1512 | 1287 | Header := IntToStr(Line) + ' ¼OF ' + Res.FName + ' eúF ' + Res.FDateTime |
1513 | 1288 | else |
@@ -1517,7 +1292,7 @@ begin | ||
1517 | 1292 | Body := CustomStringReplace(Body, '<br> ', #10,true); |
1518 | 1293 | Body := CustomStringReplace(Body, '<br>', #10,true); |
1519 | 1294 | Body := CustomStringReplace(Body, '</a>', '',true); |
1520 | - Body := THTMLCreate.DeleteLink(Body); | |
1295 | + Body := GikoSys.DeleteLink(Body); | |
1521 | 1296 | Body := CustomStringReplace(Body, '<', '<'); |
1522 | 1297 | Body := CustomStringReplace(Body, '>', '>'); |
1523 | 1298 | Body := CustomStringReplace(Body, '"', '"'); |
@@ -1598,9 +1373,9 @@ begin | ||
1598 | 1373 | for i := 0 to dirs.Count - 1 do begin |
1599 | 1374 | files := TStringList.Create; |
1600 | 1375 | try |
1601 | - files.BeginUpdate; | |
1376 | + files.BeginUpdate; | |
1602 | 1377 | gikoSys.GetFileList(dirs[i], '*.*', files, true); |
1603 | - files.EndUpdate; | |
1378 | + files.EndUpdate; | |
1604 | 1379 | tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path); |
1605 | 1380 | if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then |
1606 | 1381 | ForceDirectories(tmpD); |
@@ -1631,80 +1406,6 @@ begin | ||
1631 | 1406 | finally |
1632 | 1407 | dirs.Free; |
1633 | 1408 | end; |
1634 | -end;{! | |
1635 | -\brief datt@CÌêCðªð | |
1636 | -\param Line datt@Cð\¬·é 1 s | |
1637 | -\return Xîñ | |
1638 | -} | |
1639 | -class procedure THTMLCreate.DivideStrLine(Line: string; PRes: PResRec); | |
1640 | -const | |
1641 | - delimiter = '<>'; | |
1642 | -var | |
1643 | - pds, pde : PChar; | |
1644 | - pss, pse : PChar; | |
1645 | - ppos : PChar; | |
1646 | -begin | |
1647 | - //Åè | |
1648 | - PRes.FType := glt2chNew; | |
1649 | - | |
1650 | - pss := PChar(Line); | |
1651 | - pse := pss + Length(Line); | |
1652 | - pds := PChar(delimiter); | |
1653 | - pde := pds + Length(delimiter); | |
1654 | - | |
1655 | - ppos := AnsiStrPosEx(pss, pse, pds, pde); | |
1656 | - if (ppos = nil) then begin | |
1657 | - Line := CustomStringReplace(Line, '<>', '<>'); | |
1658 | - Line := CustomStringReplace(Line, ',', '<>'); | |
1659 | - Line := CustomStringReplace(Line, 'M', ','); | |
1660 | - end; | |
1661 | - //TrimµÄÍ¢¯È¢Cª·é@byà¶ã | |
1662 | - PRes.FName := RemoveToken(Line, delimiter); | |
1663 | - PRes.FMailTo := RemoveToken(Line, delimiter); | |
1664 | - PRes.FDateTime := RemoveToken(Line, delimiter); | |
1665 | - PRes.FBody := RemoveToken(Line, delimiter); | |
1666 | - //Q¿áñËéÆ©¾ÆA{¶ÌæªÉP¼póªüÁÄ¢éÌÅí·é | |
1667 | - //¼Ìf¦ÂÅAX©ÌÌó©àµêÈ¢¯Ç»êÍúßé | |
1668 | - PRes.FBody := TrimLeft(PRes.FBody); | |
1669 | - //ó¾ÆâèªN«é©çAóðÝè·é | |
1670 | - if PRes.FBody = '' then | |
1671 | - PRes.FBody := ' '; | |
1672 | - | |
1673 | - PRes.FTitle := RemoveToken(Line, delimiter); | |
1674 | -end; | |
1675 | - | |
1676 | -{! | |
1677 | -\brief HTML ©çAJ[^Oðí | |
1678 | -\param s ³ÉÈé HTML | |
1679 | -\return AJ[^Oªí³ê½ HTML | |
1680 | -} | |
1681 | -class function THTMLCreate.DeleteLink(const s: string): string; | |
1682 | -var | |
1683 | - s1: string; | |
1684 | - s2: string; | |
1685 | - idx: Integer; | |
1686 | - i: Integer; | |
1687 | -begin | |
1688 | - i := 0; | |
1689 | - Result := ''; | |
1690 | - while True do begin | |
1691 | - s1 := GikoSys.GetTokenIndex(s, '<a href="', i); | |
1692 | - s2 := GikoSys.GetTokenIndex(s, '<a href="', i + 1); | |
1693 | - | |
1694 | - idx := Pos('">', s1); | |
1695 | - if idx <> 0 then | |
1696 | - Delete(s1, 1, idx + 1); | |
1697 | - idx := Pos('">', s2); | |
1698 | - if idx <> 0 then | |
1699 | - Delete(s2, 1, idx + 1); | |
1700 | - | |
1701 | - Result := Result + s1 + s2; | |
1702 | - | |
1703 | - if s2 = '' then | |
1704 | - Break; | |
1705 | - | |
1706 | - inc(i, 2); | |
1707 | - end; | |
1708 | 1409 | end; |
1709 | 1410 | |
1710 | 1411 |
@@ -53,9 +53,7 @@ type | ||
53 | 53 | function ParseCgiStatus(Content: string): TCgiStatus; |
54 | 54 | function CgiDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime): Boolean; |
55 | 55 | function DatDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime; RangeStart: Integer; AdjustLen: Integer): Boolean; |
56 | - procedure DeleteStatusLine(Item: TDownloadItem); | |
57 | - procedure InitHttpClient(client: TIdHttp); | |
58 | - procedure ClearHttpClient(client: TIdHttp); | |
56 | + function DeleteStatusLine(Content: string): string; | |
59 | 57 | protected |
60 | 58 | procedure Execute; override; |
61 | 59 | public |
@@ -106,7 +104,7 @@ type | ||
106 | 104 | implementation |
107 | 105 | |
108 | 106 | uses |
109 | - Y_TextConverter, MojuUtils, HTMLCreate; | |
107 | + Y_TextConverter, MojuUtils; | |
110 | 108 | |
111 | 109 | constructor TDownloadThread.Create(CreateSuspended: Boolean); |
112 | 110 | begin |
@@ -120,7 +118,13 @@ end; | ||
120 | 118 | |
121 | 119 | destructor TDownloadThread.Destroy; |
122 | 120 | begin |
123 | - ClearHttpClient(FIndy); | |
121 | + FIndy.Request.CustomHeaders.Clear; | |
122 | + FIndy.Request.RawHeaders.Clear; | |
123 | + FIndy.Request.Clear; | |
124 | + FIndy.Response.CustomHeaders.Clear; | |
125 | + FIndy.Response.RawHeaders.Clear; | |
126 | + FIndy.Response.Clear; | |
127 | + FIndy.ProxyParams.Clear; | |
124 | 128 | FIndy.Free; |
125 | 129 | inherited; |
126 | 130 | end; |
@@ -142,65 +146,7 @@ begin | ||
142 | 146 | [Day, Copy(StrMonth, 1 + 3 * (Month - 1), 3), |
143 | 147 | Year, Hour, Min, Sec]); |
144 | 148 | end; |
145 | -// ****************************************************************** | |
146 | -// HTTPClientÌú» | |
147 | -// ****************************************************************** | |
148 | -procedure TDownloadThread.InitHttpClient(client: TIdHttp); | |
149 | -begin | |
150 | - ClearHttpClient(client); | |
151 | - client.Disconnect; | |
152 | - client.Request.UserAgent := GikoSys.GetUserAgent; | |
153 | - client.RecvBufferSize := Gikosys.Setting.RecvBufferSize; | |
154 | - client.ProxyParams.BasicAuthentication := False; | |
155 | - client.ReadTimeout := GikoSys.Setting.ReadTimeOut; | |
156 | - {$IFDEF DEBUG} | |
157 | - Writeln('------------------------------------------------------------'); | |
158 | - {$ENDIF} | |
159 | - //FIndy.AllowCookies := False; | |
160 | - if GikoSys.Setting.ReadProxy then begin | |
161 | - if GikoSys.Setting.ProxyProtocol then | |
162 | - client.ProtocolVersion := pv1_1 | |
163 | - else | |
164 | - client.ProtocolVersion := pv1_0; | |
165 | - client.ProxyParams.ProxyServer := GikoSys.Setting.ReadProxyAddress; | |
166 | - client.ProxyParams.ProxyPort := GikoSys.Setting.ReadProxyPort; | |
167 | - client.ProxyParams.ProxyUsername := GikoSys.Setting.ReadProxyUserID; | |
168 | - client.ProxyParams.ProxyPassword := GikoSys.Setting.ReadProxyPassword; | |
169 | - if GikoSys.Setting.ReadProxyUserID <> '' then | |
170 | - client.ProxyParams.BasicAuthentication := True; | |
171 | - {$IFDEF DEBUG} | |
172 | - Writeln('vLVÝè è'); | |
173 | - Writeln('zXg: ' + GikoSys.Setting.ReadProxyAddress); | |
174 | - Writeln('|[g: ' + IntToStr(GikoSys.Setting.ReadProxyPort)); | |
175 | - {$ENDIF} | |
176 | - end else begin | |
177 | - if GikoSys.Setting.Protocol then | |
178 | - client.ProtocolVersion := pv1_1 | |
179 | - else | |
180 | - client.ProtocolVersion := pv1_0; | |
181 | - client.ProxyParams.ProxyServer := ''; | |
182 | - client.ProxyParams.ProxyPort := 80; | |
183 | - client.ProxyParams.ProxyUsername := ''; | |
184 | - client.ProxyParams.ProxyPassword := ''; | |
185 | - {$IFDEF DEBUG} | |
186 | - Writeln('vLVÝèȵ'); | |
187 | - {$ENDIF} | |
188 | - end; | |
189 | -end; | |
190 | -// ****************************************************************** | |
191 | -// HTTPClientÌNGXgÆX|XÌf[^ÌÁ | |
192 | -// ****************************************************************** | |
193 | -procedure TDownloadThread.ClearHttpClient(client: TIdHttp); | |
194 | -begin | |
195 | - client.Request.CustomHeaders.Clear; | |
196 | - client.Request.RawHeaders.Clear; | |
197 | - client.Request.Clear; | |
198 | - client.Response.CustomHeaders.Clear; | |
199 | - client.Response.RawHeaders.Clear; | |
200 | - client.Response.Clear; | |
201 | - | |
202 | - client.ProxyParams.Clear; | |
203 | -end; | |
149 | + | |
204 | 150 | procedure TDownloadThread.Execute; |
205 | 151 | var |
206 | 152 | ResStream: TMemoryStream; |
@@ -244,11 +190,11 @@ begin | ||
244 | 190 | begin |
245 | 191 | FDownloadTitle := FItem.FThreadItem.Title; |
246 | 192 | if FItem.FThreadItem <> nil then begin |
247 | - if FItem.FThreadItem.ParentBoard.IsBoardPlugInAvailable then begin | |
248 | - boardPlugIn := FItem.FThreadItem.ParentBoard.BoardPlugIn; | |
249 | - Item.State := TGikoDownloadState( boardPlugIn.DownloadThread( DWORD( FItem.FThreadItem ) ) ); | |
250 | - end; | |
251 | - //if FItem.FThreadItem.IsBoardPlugInAvailable then begin | |
193 | + if FItem.FThreadItem.ParentBoard.IsBoardPlugInAvailable then begin | |
194 | + boardPlugIn := FItem.FThreadItem.ParentBoard.BoardPlugIn; | |
195 | + Item.State := TGikoDownloadState( boardPlugIn.DownloadThread( DWORD( FItem.FThreadItem ) ) ); | |
196 | + end; | |
197 | + //if FItem.FThreadItem.IsBoardPlugInAvailable then begin | |
252 | 198 | // boardPlugIn := FItem.FThreadItem.BoardPlugIn; |
253 | 199 | // Item.State := TGikoDownloadState( boardPlugIn.DownloadThread( DWORD( FItem.FThreadItem ) ) ); |
254 | 200 | //end; |
@@ -271,9 +217,51 @@ begin | ||
271 | 217 | Continue; |
272 | 218 | end; |
273 | 219 | |
274 | - FAbort := False; | |
275 | 220 | //===== vOCðgpµÈ¢ê |
276 | - InitHttpClient(FIndy); | |
221 | + FAbort := False; | |
222 | + FIndy.Request.CustomHeaders.Clear; | |
223 | + FIndy.Response.Clear; | |
224 | + FIndy.Request.Clear; | |
225 | + FIndy.ProxyParams.Clear; | |
226 | + FIndy.Disconnect; | |
227 | + FIndy.Request.UserAgent := GikoSys.GetUserAgent; | |
228 | + FIndy.RecvBufferSize := Gikosys.Setting.RecvBufferSize; | |
229 | + FIndy.ProxyParams.BasicAuthentication := False; | |
230 | + FIndy.ReadTimeout := GikoSys.Setting.ReadTimeOut; | |
231 | + {$IFDEF DEBUG} | |
232 | + Writeln('------------------------------------------------------------'); | |
233 | + {$ENDIF} | |
234 | + //FIndy.AllowCookies := False; | |
235 | + if GikoSys.Setting.ReadProxy then begin | |
236 | + if GikoSys.Setting.ProxyProtocol then | |
237 | + FIndy.ProtocolVersion := pv1_1 | |
238 | + else | |
239 | + FIndy.ProtocolVersion := pv1_0; | |
240 | + FIndy.ProxyParams.ProxyServer := GikoSys.Setting.ReadProxyAddress; | |
241 | + FIndy.ProxyParams.ProxyPort := GikoSys.Setting.ReadProxyPort; | |
242 | + FIndy.ProxyParams.ProxyUsername := GikoSys.Setting.ReadProxyUserID; | |
243 | + FIndy.ProxyParams.ProxyPassword := GikoSys.Setting.ReadProxyPassword; | |
244 | + if GikoSys.Setting.ReadProxyUserID <> '' then | |
245 | + FIndy.ProxyParams.BasicAuthentication := True; | |
246 | + {$IFDEF DEBUG} | |
247 | + Writeln('vLVÝè è'); | |
248 | + Writeln('zXg: ' + GikoSys.Setting.ReadProxyAddress); | |
249 | + Writeln('|[g: ' + IntToStr(GikoSys.Setting.ReadProxyPort)); | |
250 | + {$ENDIF} | |
251 | + end else begin | |
252 | + if GikoSys.Setting.Protocol then | |
253 | + FIndy.ProtocolVersion := pv1_1 | |
254 | + else | |
255 | + FIndy.ProtocolVersion := pv1_0; | |
256 | + FIndy.ProxyParams.ProxyServer := ''; | |
257 | + FIndy.ProxyParams.ProxyPort := 80; | |
258 | + FIndy.ProxyParams.ProxyUsername := ''; | |
259 | + FIndy.ProxyParams.ProxyPassword := ''; | |
260 | + {$IFDEF DEBUG} | |
261 | + Writeln('vLVÝèȵ'); | |
262 | + {$ENDIF} | |
263 | + end; | |
264 | + | |
277 | 265 | adjustMargin := 0; |
278 | 266 | if Item.DownType = gdtThread then begin |
279 | 267 | if FileExists( Item.ThreadItem.GetThreadFileName ) then begin |
@@ -532,7 +520,8 @@ begin | ||
532 | 520 | Writeln('CGIStatus: OK'); |
533 | 521 | {$ENDIF} |
534 | 522 | Item.ResponseCode := 200; |
535 | - DeleteStatusLine(Item); | |
523 | + Item.Content := DeleteStatusLine(Item.Content); | |
524 | + Item.ContentLength := CgiStatus.FSize; | |
536 | 525 | end; |
537 | 526 | gcsINCR: begin |
538 | 527 | //¡Í è¦È¢ |
@@ -540,7 +529,8 @@ begin | ||
540 | 529 | Writeln('CGIStatus: 206'); |
541 | 530 | {$ENDIF} |
542 | 531 | Item.ResponseCode := 206; |
543 | - DeleteStatusLine(Item); | |
532 | + Item.Content := DeleteStatusLine(Item.Content); | |
533 | + Item.ContentLength := CgiStatus.FSize; | |
544 | 534 | end; |
545 | 535 | gcsERR: begin |
546 | 536 | {$IFDEF DEBUG} |
@@ -605,9 +595,68 @@ begin | ||
605 | 595 | else |
606 | 596 | Item.State := gdsError; |
607 | 597 | end; |
598 | +{ | |
599 | + //³¢Æv¤¯ÇBBB | |
600 | + if (Item.ResponseCode in [200, 206]) and (Item.Content = '') then | |
601 | + Item.State := gdsError; | |
602 | + Item.LastModified := FIndy.Response.LastModified; | |
603 | + //·ªæ¾ÅPoCgO©çÆÁÄ«½Æ«Í}CiX·é | |
604 | + Item.ContentLength := FIndy.Response.ContentLength + AdjustLen; | |
605 | + try | |
606 | + ResStream.Clear; | |
607 | + FIndy.Get(URL, ResStream); | |
608 | + Item.Content := GikoSys.GzipDecompress(ResStream, FIndy.Response.ContentEncoding); | |
609 | + if (Item.DownType = gdtThread) and (AdjustLen = -1) and (Item.Content[1] <> #10) then begin | |
610 | + //·ªæ¾©ÂPoCgÚªLFÅÈ¢êÍu Ú[ñv³êÄ¢é©àµêñÌÅÄæ¾ | |
611 | + //±±ÅbZ[W\¦Cxg | |
612 | + //event | |
613 | + FMsg := 'u Ú[ñvðoµ½ÌÅÄæ¾ðs¢Ü·'; | |
614 | + if Assigned(OnDownloadMsg) then | |
615 | + Synchronize(FireDownloadMsg); | |
616 | + FIndy.Request.ContentRangeStart := 0; | |
617 | + FIndy.Request.ContentRangeEnd := 0; | |
618 | + AdjustLen := 0; | |
619 | + ResStream.Clear; | |
620 | + FIndy.Get(URL, ResStream); | |
621 | + Item.Content := GikoSys.GzipDecompress(ResStream, FIndy.Response.ContentEncoding); | |
622 | + end else if (Item.DownType = gdtThread) and (AdjustLen = -1) and (Item.Content[1] = #10) then begin | |
623 | + //·ªæ¾©ÂPoCgÚªLFÌêi³íæ¾jͪÌLFðí | |
624 | + Item.Content := Copy(Item.Content, 2, Length(Item.Content)); | |
625 | + end; | |
626 | + except | |
627 | + Item.State := gdsError; | |
628 | + end; | |
629 | + Item.ResponseCode := FIndy.ResponseCode; | |
630 | +} | |
631 | +{ | |
632 | + try | |
633 | + ResStream.Clear; | |
634 | + FIndy.Get(URL, ResStream); | |
635 | + Item.Content := GikoSys.GzipDecompress(ResStream, FIndy.Response.ContentEncoding); | |
636 | + except | |
637 | + Item.State := gdsError; | |
638 | + end; | |
639 | + | |
640 | + CgiStatus := ParseCgiStatus(Item.Content); | |
641 | + if CgiStatus.FStatus = gcsOK then begin | |
642 | + if CgiStatus.FSize = 0 then | |
643 | + Item.State := gdsNotModify | |
644 | + else if Item.DownType = gdtBoard then | |
645 | + Item.State := gdsComplete | |
646 | + else | |
647 | + Item.State := gdsDiffComplete; | |
648 | + end else if CgiStatus.FStatus = gcsINCR then begin | |
649 | + Item.State := gdsComplete; | |
650 | + end else if CgiStatus.FStatus = gcsERR then begin | |
651 | + Item.State := gdsError; | |
652 | + Item.ErrText := CgiStatus.FErrText; | |
653 | + end; | |
654 | + Item.ContentLength := CgiStatus.FSize; | |
655 | + } | |
608 | 656 | except |
609 | 657 | Item.State := gdsError; |
610 | 658 | end; |
659 | + //Item.ResponseCode := FIndy.ResponseCode; | |
611 | 660 | if FAbort then |
612 | 661 | Item.State := gdsAbort; |
613 | 662 | finally |
@@ -616,7 +665,13 @@ begin | ||
616 | 665 | ResStream.Free; |
617 | 666 | end; |
618 | 667 | |
619 | - ClearHttpClient(FIndy); | |
668 | + FIndy.Request.CustomHeaders.Clear; | |
669 | + FIndy.Request.RawHeaders.Clear; | |
670 | + FIndy.Request.Clear; | |
671 | + FIndy.Response.CustomHeaders.Clear; | |
672 | + FIndy.Response.RawHeaders.Clear; | |
673 | + FIndy.Response.Clear; | |
674 | + FIndy.ProxyParams.Clear; | |
620 | 675 | |
621 | 676 | if Terminated then Break; |
622 | 677 | Suspend; |
@@ -708,6 +763,8 @@ var | ||
708 | 763 | begin |
709 | 764 | ResponseCode := -1; |
710 | 765 | if (ItemType = gdtThread) and (RangeStart > 0) then begin |
766 | +// if (ItemType = gdtThread) and (Item.ThreadItem.Size > 0) then begin | |
767 | +// FIndy.Request.ContentRangeStart := Item.ThreadItem.Size + AdjustLen; | |
711 | 768 | FIndy.Request.ContentRangeStart := RangeStart + AdjustLen; |
712 | 769 | FIndy.Request.ContentRangeEnd := 0; |
713 | 770 | end else begin |
@@ -720,7 +777,9 @@ begin | ||
720 | 777 | FIndy.Request.CustomHeaders.Add('Pragma: no-cache'); |
721 | 778 | if (Modified <> 0) and (Modified <> ZERO_DATE) then begin |
722 | 779 | FIndy.Request.LastModified := modified - OffsetFromUTC; |
780 | + //FIndy.Request.CustomHeaders.Add('If-Modified-Since: ' + RFC1123_Date(modified - OffsetFromUTC) + ' GMT'); | |
723 | 781 | end; |
782 | +// FIndy.Request.AcceptEncoding := 'gzip'; | |
724 | 783 | if RangeStart = 0 then |
725 | 784 | FIndy.Request.AcceptEncoding := 'gzip' |
726 | 785 | else |
@@ -889,20 +948,17 @@ begin | ||
889 | 948 | end; |
890 | 949 | end; |
891 | 950 | |
892 | -//PsÚðÁµÄARecTCYðÝè·é | |
893 | -procedure TDownloadThread.DeleteStatusLine(Item: TDownloadItem); | |
951 | +//貫ÈÅ1sÚðÁ· | |
952 | +function TDownloadThread.DeleteStatusLine(Content: string): string; | |
894 | 953 | var |
895 | 954 | SList: TStringList; |
896 | 955 | begin |
897 | 956 | SList := TStringList.Create; |
898 | 957 | try |
899 | - SList.Text := Item.Content; | |
900 | - //1sÚðí | |
958 | + SList.Text := Content; | |
901 | 959 | if SList.Count > 1 then |
902 | 960 | SList.Delete(0); |
903 | - Item.Content := SList.Text; | |
904 | - //üsR[hðCRLF -> LFÆl¦ÄAsª¾¯}CiX | |
905 | - Item.ContentLength := Length(SList.Text) - SList.Count; | |
961 | + Result := SList.Text; | |
906 | 962 | finally |
907 | 963 | SList.Free; |
908 | 964 | end; |
@@ -1194,6 +1250,11 @@ var | ||
1194 | 1250 | NewRes: Integer; |
1195 | 1251 | finish : Boolean; |
1196 | 1252 | loopCnt : Integer; |
1253 | +// KokoTxt : string; | |
1254 | +// KokoIdx : Integer; | |
1255 | +// NewTxt : string; | |
1256 | +// NewIdx : Integer; | |
1257 | +// LastTxt : string; | |
1197 | 1258 | LastIdx : Integer; |
1198 | 1259 | begin |
1199 | 1260 | FileName := ThreadItem.GetThreadFileName; |
@@ -1292,7 +1353,7 @@ begin | ||
1292 | 1353 | Body.SaveToFile(FileName); |
1293 | 1354 | |
1294 | 1355 | if ThreadItem.Title = '' then begin |
1295 | - THTMLCreate.DivideStrLine(Body[0], @Res); | |
1356 | + Res := DivideStrLine(Body[0]); | |
1296 | 1357 | ThreadItem.Title := Res.FTitle; |
1297 | 1358 | end; |
1298 | 1359 | ThreadItem.Size := 0; |
@@ -1314,6 +1375,7 @@ begin | ||
1314 | 1375 | ThreadItem.RoundDate := Now; |
1315 | 1376 | if not ThreadItem.UnRead then begin |
1316 | 1377 | ThreadItem.UnRead := True; |
1378 | + ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead + 1; | |
1317 | 1379 | end; |
1318 | 1380 | // if ThreadItem.RoundNo = 6 then |
1319 | 1381 | // ThreadItem.RoundNo := 0; |
@@ -4,8 +4,8 @@ interface | ||
4 | 4 | |
5 | 5 | uses |
6 | 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
7 | - Dialogs, ComCtrls, StdCtrls, ExtCtrls, ActnList, Menus, | |
8 | - Editor; | |
7 | + Dialogs, ComCtrls, StdCtrls, ExtCtrls, ActnList, Menus, GikoSystem, GikoUtil, | |
8 | + Editor; | |
9 | 9 | |
10 | 10 | type |
11 | 11 | TKeySettingItem = class(TObject) |
@@ -64,7 +64,7 @@ type | ||
64 | 64 | { Private é¾ } |
65 | 65 | public |
66 | 66 | { Public é¾ } |
67 | - EditorForm: TEditorForm; | |
67 | + EditorForm: TEditorForm; | |
68 | 68 | end; |
69 | 69 | |
70 | 70 | //var |
@@ -72,8 +72,7 @@ type | ||
72 | 72 | |
73 | 73 | implementation |
74 | 74 | |
75 | -uses | |
76 | - Giko, GikoUtil, Gesture, GikoDataModule, GikoSystem; | |
75 | +uses Giko, Gesture, GikoDataModule; | |
77 | 76 | |
78 | 77 | const |
79 | 78 | GUESTURE_NOTHING = 'ȵ'; |
@@ -111,7 +110,7 @@ begin | ||
111 | 110 | if ListView.Items.Count > 0 then |
112 | 111 | ListView.Selected := ListView.Items[0]; |
113 | 112 | EditorForm := TEditorForm.Create(Self); |
114 | - GikoSys.LoadKeySetting(EditorForm.ActionList, GikoSys.GetEditorKeyFileName); | |
113 | + GikoSys.LoadEditorKeySetting(EditorForm.ActionList); | |
115 | 114 | try |
116 | 115 | for i := 0 to EditorForm.ActionList.ActionCount - 1 do begin |
117 | 116 | if EditorForm.ActionList.Actions[i] is TAction then begin |
@@ -136,7 +136,7 @@ begin | ||
136 | 136 | GikoSys.Setting.TimeAdjust := PutPostTimeRadioButton.Checked; |
137 | 137 | //2ch¾êT|[g |
138 | 138 | GikoSys.Setting.GengoSupport := GengoSupport.Checked; |
139 | - GikoSys.SetGikoMessage; | |
139 | + GikoSys.Setting.SetMessages; | |
140 | 140 | //[JE[g̼±Åx |
141 | 141 | GikoSys.Setting.LocalTrapAtt := LocalTrapAtt.Checked; |
142 | 142 | GikoSys.Setting.RemoteTrapAtt := RemoteTrapAtt.Checked; |
@@ -10,24 +10,20 @@ type | ||
10 | 10 | TListViewUtils = class(TObject) |
11 | 11 | private |
12 | 12 | {Private é¾} |
13 | - class procedure DrawCategoryItem(BBS: TBBS; Item: TListItem; ListView: TListView); | |
14 | - class procedure DrawBoardItem(Category: TCategory; Item: TListItem; ListView: TListView); | |
15 | - class procedure DrawThreadItem(Board: TBoard; Item: TListItem; ListView: TListView); | |
16 | - class procedure DrawItemLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
17 | - class procedure DrawItemNoLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
18 | 13 | public |
19 | 14 | {Public é¾} |
20 | 15 | class procedure SetBoardTreeNode(inBBS : TBBS; treeView: TTreeView); |
21 | 16 | class function SetCategoryListItem(ABBS2ch: TBBS; ListView: TListView; |
22 | - NumberVisible: Boolean): Integer; | |
17 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
23 | 18 | class procedure ListViewSort(Sender: TObject; ListView: TListView; Column: TListColumn; |
24 | - NumberVisible: Boolean; vSortOrder: Boolean); | |
19 | + NumberVisible: Boolean; var vSortOrder: Boolean; var vSortIndex: Integer); | |
25 | 20 | class function ActiveListTrueColumn( column : TListColumn ) : TListColumn; |
26 | 21 | class function SetBoardListItem(Category: TCategory; ListView: TListView; |
27 | - NumberVisible: Boolean): Integer; | |
22 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
28 | 23 | class function SetThreadListItem(Board: TBoard; ListView: TListView; |
29 | - NumberVisible: Boolean): Integer; | |
24 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
30 | 25 | class procedure ListViewData(Sender: TObject; Item: TListItem); |
26 | + | |
31 | 27 | end; |
32 | 28 | |
33 | 29 |
@@ -141,7 +137,9 @@ end; | ||
141 | 137 | class function TListViewUtils.SetCategoryListItem( |
142 | 138 | ABBS2ch: TBBS; |
143 | 139 | ListView: TListView; |
144 | - NumberVisible: Boolean | |
140 | + NumberVisible: Boolean; | |
141 | + var vSortIndex: Integer; | |
142 | + var vSortOrder: Boolean | |
145 | 143 | ): Integer; |
146 | 144 | var |
147 | 145 | TitleColumn : TListColumn; |
@@ -181,13 +179,12 @@ begin | ||
181 | 179 | GikoForm.FolderImage.Picture := nil; |
182 | 180 | GikoForm.ItemIcon16.GetBitmap(1, GikoForm.FolderImage.Picture.Bitmap); |
183 | 181 | |
182 | + vSortIndex := GikoSys.Setting.BBSSortIndex; | |
183 | + vSortOrder := GikoSys.Setting.BBSSortOrder; | |
184 | 184 | for i := ListView.Columns.Count - 1 downto 0 do begin |
185 | - if (GikoSys.Setting.BBSSortIndex | |
186 | - = Integer(GikoSys.Setting.BBSColumnOrder[ ListView.Column[ i ].Tag ])) then begin | |
187 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
188 | - NumberVisible, GikoSys.Setting.BBSSortOrder); | |
189 | - Break; | |
190 | - end; | |
185 | + idx := ListView.Column[ i ].Tag; | |
186 | + if vSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then | |
187 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
191 | 188 | end; |
192 | 189 | |
193 | 190 | Result := ABBS2ch.Count; |
@@ -201,10 +198,11 @@ class procedure TListViewUtils.ListViewSort( | ||
201 | 198 | ListView: TListView; |
202 | 199 | Column: TListColumn; |
203 | 200 | NumberVisible: Boolean; |
204 | - vSortOrder: Boolean | |
201 | + var vSortOrder: Boolean; | |
202 | + var vSortIndex: Integer | |
205 | 203 | ); |
206 | 204 | var |
207 | - i, idx : Integer; | |
205 | + i, id, idx : Integer; | |
208 | 206 | orderList : TList; |
209 | 207 | wkBBS: TBBS; |
210 | 208 | wkCategory: TCategory; |
@@ -215,41 +213,53 @@ begin | ||
215 | 213 | for i := 0 to ListView.Columns.Count - 1 do begin |
216 | 214 | ListView.Column[i].ImageIndex := -1; |
217 | 215 | end; |
218 | - if vSortOrder then | |
216 | + | |
217 | + if SortOrder then | |
219 | 218 | ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1 |
220 | 219 | else |
221 | 220 | ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2; |
222 | 221 | |
223 | - | |
224 | 222 | Sort.SortNoFlag := NumberVisible; |
225 | 223 | |
224 | + //if TObject(TreeView.Selected.Data) is TBBS then begin | |
226 | 225 | if TObject( GikoForm.ActiveList ) is TBBS then begin |
226 | + //wkBBS := TBBS(TreeView.Selected.Data); | |
227 | 227 | wkBBS := TBBS( GikoForm.ActiveList ); |
228 | 228 | orderList := GikoSys.Setting.BBSColumnOrder; |
229 | + id := Integer( orderList[ idx ] ); | |
229 | 230 | Sort.SortOrder := vSortOrder; |
230 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
231 | - GikoSys.Setting.BBSSortIndex := Sort.SortIndex; | |
232 | - GikoSys.Setting.BBSSortOrder := Sort.SortOrder; | |
231 | + Sort.SortIndex := id; | |
232 | + GikoSys.Setting.BBSSortIndex := id; | |
233 | + GikoSys.Setting.BBSSortOrder := vSortOrder; | |
233 | 234 | wkBBS.Sort(Sort.CategorySortProc); |
235 | + //end else if TObject(TreeView.Selected.Data) is TCategory then begin | |
234 | 236 | end else if TObject( GikoForm.ActiveList ) is TCategory then begin |
237 | + //wkCategory := TCategory(TreeView.Selected.Data); | |
235 | 238 | wkCategory := TCategory( GikoForm.ActiveList ); |
236 | 239 | orderList := GikoSys.Setting.CategoryColumnOrder; |
240 | + id := Integer( orderList[ idx ] ); | |
237 | 241 | Sort.SortOrder := vSortOrder; |
238 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
239 | - GikoSys.Setting.CategorySortIndex := Sort.SortIndex; | |
240 | - GikoSys.Setting.CategorySortOrder := Sort.SortOrder; | |
242 | + Sort.SortIndex := id; | |
243 | + GikoSys.Setting.CategorySortIndex := id; | |
244 | + GikoSys.Setting.CategorySortOrder := vSortOrder; | |
241 | 245 | wkCategory.CustomSort(BoardSortProc); |
246 | + //end else if TObject(TreeView.Selected.Data) is TBoard then begin | |
242 | 247 | end else if TObject( GikoForm.ActiveList ) is TBoard then begin |
248 | + //wkBoard := TBoard(TreeView.Selected.Data); | |
243 | 249 | wkBoard := TBoard( GikoForm.ActiveList ); |
244 | 250 | orderList := GikoSys.Setting.BoardColumnOrder; |
251 | + id := Integer( orderList[ idx ] ); | |
245 | 252 | Sort.SortOrder := vSortOrder; |
246 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
247 | - GikoSys.Setting.BoardSortIndex := Sort.SortIndex; | |
248 | - GikoSys.Setting.BoardSortOrder := Sort.SortOrder; | |
253 | + Sort.SortIndex := id; | |
254 | + GikoSys.Setting.BoardSortIndex := id; | |
255 | + GikoSys.Setting.BoardSortOrder := vSortOrder; | |
249 | 256 | wkBoard.CustomSort(ThreadItemSortProc); |
257 | + end else begin | |
258 | + id := 0; | |
250 | 259 | end; |
251 | 260 | |
252 | 261 | ListView.Refresh; |
262 | + vSortIndex := id; | |
253 | 263 | end; |
254 | 264 | |
255 | 265 | {! |
@@ -259,16 +269,49 @@ Delphi 6 Personal | ||
259 | 269 | ³µ¢Jªn³êÈ¢½ßA³µ¢JÉÏ·µÜ·B |
260 | 270 | } |
261 | 271 | class function TListViewUtils.ActiveListTrueColumn( column : TListColumn ) : TListColumn; |
272 | +{* | |
273 | +var | |
274 | + i, idx : Integer; | |
275 | + orderList : TList; | |
276 | +*} | |
262 | 277 | begin |
278 | + | |
263 | 279 | // ³µÏ··éû@ªª©çÈ¢ÌÅÛ¯ |
264 | 280 | Result := column; |
265 | 281 | Exit; |
282 | +{* | |
283 | + Result := column; | |
284 | + | |
285 | + if TObject( FActiveList ) is TBBS then | |
286 | + orderList := GikoSys.Setting.BBSColumnOrder | |
287 | + else if TObject( FActiveList ) is TCategory then | |
288 | + orderList := GikoSys.Setting.CategoryColumnOrder | |
289 | + else if TObject( FActiveList ) is TBoard then | |
290 | + orderList := GikoSys.Setting.BoardColumnOrder | |
291 | + else | |
292 | + Exit; | |
293 | + | |
294 | + idx := column.Tag; | |
295 | + | |
296 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
297 | + if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin | |
298 | + if idx = 0 then | |
299 | + Result := ListView.Column[ i ] | |
300 | + else if idx <= i then | |
301 | + Result := ListView.Column[ idx - 1 ]; | |
302 | + Exit; | |
303 | + end; | |
304 | + end; | |
305 | +*} | |
306 | + | |
266 | 307 | end; |
267 | 308 | //ListViewÉBoardItemðÝè·é |
268 | 309 | class function TListViewUtils.SetBoardListItem( |
269 | 310 | Category: TCategory; |
270 | 311 | ListView: TListView; |
271 | - NumberVisible: Boolean | |
312 | + NumberVisible: Boolean; | |
313 | + var vSortIndex: Integer; | |
314 | + var vSortOrder: Boolean | |
272 | 315 | ): Integer; |
273 | 316 | var |
274 | 317 | TitleColumn : TListColumn; |
@@ -323,13 +366,12 @@ begin | ||
323 | 366 | GikoForm.FolderImage.Picture := nil; |
324 | 367 | GikoForm.ItemIcon16.GetBitmap(3, GikoForm.FolderImage.Picture.Bitmap); |
325 | 368 | |
369 | + vSortIndex := GikoSys.Setting.CategorySortIndex; | |
370 | + vSortOrder := GikoSys.Setting.CategorySortOrder; | |
326 | 371 | for i := ListView.Columns.Count - 1 downto 0 do begin |
327 | - if (GikoSys.Setting.CategorySortIndex = | |
328 | - Integer( GikoSys.Setting.CategoryColumnOrder[ ListView.Columns[i].Tag ] )) then begin | |
329 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
330 | - NumberVisible, GikoSys.Setting.CategorySortOrder); | |
331 | - Break; | |
332 | - end; | |
372 | + idx := ListView.Column[ i ].Tag; | |
373 | + if vSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then | |
374 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
333 | 375 | end; |
334 | 376 | |
335 | 377 | Result := Category.Count; |
@@ -341,7 +383,9 @@ end; | ||
341 | 383 | class function TListViewUtils.SetThreadListItem( |
342 | 384 | Board: TBoard; |
343 | 385 | ListView: TListView; |
344 | - NumberVisible: Boolean | |
386 | + NumberVisible: Boolean; | |
387 | + var vSortIndex: Integer; | |
388 | + var vSortOrder: Boolean | |
345 | 389 | ): Integer; |
346 | 390 | var |
347 | 391 | TitleColumn : TListColumn; |
@@ -416,13 +460,12 @@ begin | ||
416 | 460 | GikoForm.FolderImage.Picture := nil; |
417 | 461 | GikoForm.ItemIcon16.GetBitmap(5, GikoForm.FolderImage.Picture.Bitmap); |
418 | 462 | |
463 | + vSortIndex := GikoSys.Setting.BoardSortIndex; | |
464 | + vSortOrder := GikoSys.Setting.BoardSortOrder; | |
419 | 465 | for i := ListView.Columns.Count - 1 downto 0 do begin |
420 | - if (GikoSys.Setting.BoardSortIndex | |
421 | - = Integer( GikoSys.Setting.BoardColumnOrder[ ListView.Columns[ i ].Tag ] )) then begin | |
422 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
423 | - NumberVisible, GikoSys.Setting.BoardSortOrder); | |
424 | - Break; | |
425 | - end; | |
466 | + idx := ListView.Column[ i ].Tag; | |
467 | + if vSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then | |
468 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
426 | 469 | end; |
427 | 470 | |
428 | 471 | Result := Board.Count; |
@@ -433,268 +476,285 @@ end; | ||
433 | 476 | |
434 | 477 | class procedure TListViewUtils.ListViewData(Sender: TObject; Item: TListItem); |
435 | 478 | var |
436 | - ActivListObj : TObject; | |
479 | +// FileName: string; | |
480 | +// DateTime: TDateTime; | |
481 | + BoardCnt: Integer; | |
482 | + BBS: TBBS; | |
483 | + Category: TCategory; | |
484 | + Board: TBoard; | |
485 | + ThreadItem: TThreadItem; | |
486 | + RepStr: string; | |
487 | + ActivListObj : TObject; | |
488 | + i, idx : Integer; | |
437 | 489 | ListView : TListView; |
438 | 490 | begin |
439 | 491 | if (Sender <> nil) and (Sender is TListView) then begin |
440 | - ListView := TListView(Sender); | |
441 | - ActivListObj := GikoForm.ActiveList; | |
442 | - if ActivListObj is TBBS then begin | |
443 | - DrawCategoryItem(TBBS(ActivListObj), Item, ListView); | |
444 | - end else if ActivListObj is TCategory then begin | |
445 | - DrawBoardItem(TCategory(ActivListObj), Item, ListView); | |
446 | - end else if ActivListObj is TBoard then begin | |
447 | - DrawThreadItem(TBoard(ActivListObj), Item, ListView); | |
448 | - end; | |
492 | + ListView := TListView(Sender) | |
493 | + end else begin | |
494 | + Exit; | |
449 | 495 | end; |
450 | -end; | |
451 | -//! Xgr [ÌACeð`æ·éiJeS[pj | |
452 | -class procedure TListViewUtils.DrawCategoryItem( | |
453 | - BBS: TBBS; Item: TListItem; ListView: TListView | |
454 | -); | |
455 | -var | |
456 | - Category : TCategory; | |
457 | -begin | |
458 | 496 | |
459 | - //===== JeSXg ===== | |
460 | - ListView.StateImages := nil; | |
497 | + ActivListObj := GikoForm.ActiveList; | |
498 | + if ActivListObj is TBBS then begin | |
499 | + //===== JeSXg ===== | |
500 | + BBS := TBBS(ActivListObj); | |
461 | 501 | |
462 | - if (BBS = nil) or (BBS.Count <= 0) or (Item = nil) | |
463 | - or (Item.Index >= BBS.Count) or (ListView.Items.Count = 0) | |
464 | - or (not (BBS.Items[Item.index] is TCategory)) then Exit; | |
502 | + GikoForm.ListView.StateImages := nil; | |
465 | 503 | |
466 | - Category := TCategory(BBS.Items[Item.index]); | |
504 | + if (BBS = nil) or (BBS.Count <= 0) or (Item = nil) | |
505 | + or (Item.Index >= BBS.Count) or (ListView.Items.Count = 0) | |
506 | + or (not (BBS.Items[Item.index] is TCategory)) then Exit; | |
507 | + //if BBS.Count <= 0 then Exit; | |
508 | + //if Item = nil then Exit; | |
509 | + //if Item.Index >= BBS.Count then Exit; | |
510 | + //if ListView.Items.Count = 0 then Exit; | |
467 | 511 | |
468 | - if (Category = nil) then Exit; | |
512 | + //if not (BBS.Items[Item.index] is TCategory) then Exit; | |
513 | + Category := TCategory(BBS.Items[Item.index]); | |
469 | 514 | |
470 | - if GikoDM.ListNumberVisibleAction.Checked then | |
471 | - Item.Caption := IntToStr(Category.No) + ': ' + Category.Title | |
472 | - else | |
473 | - Item.Caption := Category.Title; | |
515 | + if Category = nil then Exit; | |
474 | 516 | |
475 | - Item.ImageIndex := ITEM_ICON_CATEGORY1; | |
476 | - Item.Data := Category; | |
477 | -end; | |
478 | -//! Xgr [ÌACeð`æ·éiÂpj | |
479 | -class procedure TListViewUtils.DrawBoardItem( | |
480 | - Category: TCategory; Item: TListItem; ListView: TListView | |
481 | -); | |
482 | -var | |
483 | - Board: TBoard; | |
484 | - i, idx : Integer; | |
485 | -begin | |
486 | - //===== ÂXg ===== | |
487 | - ListView.StateImages := nil; | |
517 | + if GikoDM.ListNumberVisibleAction.Checked then | |
518 | + Item.Caption := IntToStr(Category.No) + ': ' + Category.Title | |
519 | + else | |
520 | + Item.Caption := Category.Title; | |
488 | 521 | |
489 | - if (Category = nil) or (Category.Count <= 0) or (Item = nil) | |
490 | - or (Item.Index >= Category.Count) or (ListView.Items.Count = 0) | |
491 | - or (not (Category.Items[Item.Index] is TBoard)) then Exit; | |
522 | + Item.ImageIndex := ITEM_ICON_CATEGORY1; | |
523 | + Item.Data := Category; | |
492 | 524 | |
493 | - Board := TBoard(Category.Items[Item.Index]); | |
525 | + end else if ActivListObj is TCategory then begin | |
494 | 526 | |
495 | - if (Board = nil) then Exit; | |
527 | + //===== ÂXg ===== | |
528 | + Category := TCategory(ActivListObj); | |
496 | 529 | |
497 | - if GikoDM.ListNumberVisibleAction.Checked then | |
498 | - Item.Caption := IntToStr(Board.No) + ': ' + Board.Title | |
499 | - else | |
500 | - Item.Caption := Board.Title; | |
530 | + ListView.StateImages := nil; | |
501 | 531 | |
502 | - if Item.SubItems.Count <> ListView.Columns.Count then begin | |
503 | - Item.SubItems.Clear; | |
504 | - Item.SubItems.Capacity := GikoSys.Setting.CategoryColumnOrder.Count; | |
505 | - for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do | |
506 | - Item.SubItems.Add(''); | |
507 | - end; | |
532 | + if (Category = nil) or (Category.Count <= 0) or (Item = nil) | |
533 | + or (Item.Index >= Category.Count) or (ListView.Items.Count = 0) | |
534 | + or (not (Category.Items[Item.Index] is TBoard)) then Exit; | |
535 | + //if Category.Count <= 0 then Exit; | |
536 | + //if Item = nil then Exit; | |
537 | + //if Item.Index >= Category.Count then Exit; | |
538 | + //if ListView.Items.Count = 0 then Exit; | |
508 | 539 | |
509 | - Item.ImageIndex := ITEM_ICON_BOARD1; | |
510 | - idx := 0; | |
511 | - for i := 0 to ListView.Columns.Count - 1 do begin | |
512 | - if GikoSys.Setting.CategoryColumnOrder.Count <= i then | |
513 | - Break; | |
514 | - case GikoSys.Setting.CategoryColumnOrder[ i ] of | |
515 | - gccTitle: | |
516 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
517 | - Dec( idx ); | |
518 | - | |
519 | - gccRoundName: | |
520 | - if Board.Round then | |
521 | - Item.SubItems[ idx ] := Board.RoundName // '\ñ' | |
522 | - else | |
523 | - Item.SubItems[ idx ] := ''; | |
540 | + //if not (Category.Items[Item.Index] is TBoard) then Exit; | |
541 | + Board := TBoard(Category.Items[Item.Index]); | |
524 | 542 | |
525 | - gccLastModified: | |
526 | - if Board.RoundDate = ZERO_DATE then begin | |
527 | - Item.SubItems[ idx ] := ''; | |
528 | - end else | |
529 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate); | |
530 | - end; | |
531 | - Inc( idx ); | |
532 | - end; | |
543 | + if Board = nil then Exit; | |
533 | 544 | |
534 | - Item.Data := Board; | |
545 | + if GikoDM.ListNumberVisibleAction.Checked then | |
546 | + Item.Caption := IntToStr(Board.No) + ': ' + Board.Title | |
547 | + //Item.Caption := IntToStr(Item.Index + 1) + ': ' + Board.Title | |
548 | + else | |
549 | + Item.Caption := Board.Title; | |
535 | 550 | |
536 | -end; | |
537 | -//! Xgr [ÌACeð`æ·éiXbhpj | |
538 | -class procedure TListViewUtils.DrawThreadItem( | |
539 | - Board: TBoard; Item: TListItem;ListView : TListView | |
540 | -); | |
541 | -var | |
542 | - ThreadItem: TThreadItem; | |
543 | - BoardCnt: Integer; | |
544 | - RepStr: String; | |
545 | - i: Integer; | |
546 | -begin | |
547 | - //===== XXg ===== | |
548 | - if GikoSys.Setting.ListIconVisible then | |
549 | - ListView.StateImages := GikoForm.StateIconImageList | |
550 | - else | |
551 | - ListView.StateImages := nil; | |
551 | + if Item.SubItems.Count <> ListView.Columns.Count then begin | |
552 | + Item.SubItems.Clear; | |
553 | + Item.SubItems.Capacity := GikoSys.Setting.CategoryColumnOrder.Count; | |
554 | + for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do | |
555 | + Item.SubItems.Add(''); | |
556 | + end; | |
552 | 557 | |
558 | + Item.ImageIndex := ITEM_ICON_BOARD1; | |
559 | + idx := 0; | |
560 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
561 | + if GikoSys.Setting.CategoryColumnOrder.Count <= i then | |
562 | + Break; | |
563 | +// case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of | |
564 | + case GikoSys.Setting.CategoryColumnOrder[ i ] of | |
565 | + gccTitle: | |
566 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
567 | + Dec( idx ); | |
568 | + | |
569 | + gccRoundName: | |
570 | + if Board.Round then | |
571 | + Item.SubItems[ idx ] := Board.RoundName // '\ñ' | |
572 | + else | |
573 | + Item.SubItems[ idx ] := ''; | |
574 | + | |
575 | + gccLastModified: | |
576 | + if Board.RoundDate = ZERO_DATE then begin | |
577 | + Item.SubItems[ idx ] := ''; | |
578 | + end else | |
579 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate); | |
580 | + end; | |
581 | + Inc( idx ); | |
582 | + end; | |
553 | 583 | |
554 | - case GikoForm.ViewType of | |
555 | - gvtAll: BoardCnt := Board.Count; | |
556 | - gvtLog: BoardCnt := Board.LogThreadCount; | |
557 | - gvtNew: BoardCnt := Board.NewThreadCount; | |
558 | - gvtUser: BoardCnt := Board.UserThreadCount; | |
559 | - else | |
560 | - BoardCnt := 0; | |
561 | - end; | |
584 | + Item.Data := Board; | |
562 | 585 | |
563 | - if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt) | |
564 | - or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit; | |
565 | - | |
566 | - //üP·×«ubN///////////////////////////////////////////////////// | |
567 | - ThreadItem := nil; | |
568 | - case GikoForm.ViewType of | |
569 | - gvtAll: if Item.Index >= Board.Count then Exit else | |
570 | - ThreadItem := TThreadItem(Board.Items[Item.Index]); | |
571 | - gvtLog: ThreadItem := Board.GetLogThread(Item.Index); | |
572 | - gvtNew: ThreadItem := Board.GetNewThread(Item.Index); | |
573 | - gvtUser: ThreadItem := Board.GetUserThread(Item.Index); | |
574 | - end; | |
575 | - ////////////////////////////////////////////////////////////////////////// | |
576 | - | |
577 | - if (ThreadItem = nil) then Exit; | |
578 | - | |
579 | - RepStr := CustomStringReplace(ThreadItem.Title, '<', '<' ); | |
580 | - RepStr := CustomStringReplace(RepStr, '>', '>' ); | |
581 | - RepStr := CustomStringReplace(RepStr, '"', '"' ); | |
582 | - RepStr := CustomStringReplace(RepStr, '&', '&' ); | |
583 | - //RepStr := StringReplace(RepStr, 'M', ',', [rfReplaceAll]); | |
584 | - if Item.SubItems.Count <> ListView.Columns.Count then begin | |
585 | - Item.SubItems.Clear; | |
586 | - Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count; | |
587 | - for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do | |
588 | - Item.SubItems.Add(''); | |
589 | - end; | |
586 | + end else if ActivListObj is TBoard then begin | |
590 | 587 | |
591 | - if GikoDM.ListNumberVisibleAction.Checked then | |
592 | - Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr | |
593 | - else | |
594 | - Item.Caption := RepStr; | |
588 | + //===== XXg ===== | |
589 | + Board := TBoard(ActivListObj); | |
595 | 590 | |
596 | - case ThreadItem.AgeSage of | |
597 | - gasNone: Item.StateIndex := -1; | |
598 | - gasNew: Item.StateIndex := 0; | |
599 | - gasAge: Item.StateIndex := 1; | |
600 | - gasSage: Item.StateIndex := 2; | |
601 | - end; | |
591 | + if GikoSys.Setting.ListIconVisible then | |
592 | + ListView.StateImages := GikoForm.StateIconImageList | |
593 | + else | |
594 | + ListView.StateImages := nil; | |
602 | 595 | |
603 | - if ThreadItem.IsLogFile then begin | |
604 | - DrawItemLogThread(ThreadItem, Item, ListView.Columns.Count); | |
605 | - end else begin | |
606 | - DrawItemNoLogThread(ThreadItem, Item, GikoSys.Setting.BoardColumnOrder.Count); | |
607 | - end; | |
608 | 596 | |
609 | - Item.Data := ThreadItem; | |
610 | -end; | |
611 | -//! OLèXbhð`æ·é | |
612 | -class procedure TListViewUtils.DrawItemLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
613 | -var | |
614 | - i, idx : Integer; | |
615 | -begin | |
616 | - idx := 0; | |
617 | - for i := 0 to ColumnCount - 1 do begin | |
618 | - if GikoSys.Setting.BoardColumnOrder.Count <= i then | |
619 | - Break; | |
620 | - | |
621 | - case GikoSys.Setting.BoardColumnOrder[ i ] of | |
622 | - gbcTitle: | |
623 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
624 | - Dec( idx ); | |
625 | - gbcAllCount: | |
626 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount); | |
627 | - gbcLocalCount: | |
628 | - Item.SubItems[ idx ] := IntToStr(Thread.Count); | |
629 | - gbcNonAcqCount: | |
630 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount - Thread.Count); | |
631 | - gbcNewCount: | |
632 | - if Thread.NewResCount = 0 then | |
633 | - Item.SubItems[ idx ] := '' | |
597 | + case GikoForm.ViewType of | |
598 | + gvtAll: BoardCnt := Board.Count; | |
599 | + gvtLog: BoardCnt := Board.LogThreadCount; | |
600 | + gvtNew: BoardCnt := Board.NewThreadCount; | |
601 | + gvtUser: BoardCnt := Board.UserThreadCount; | |
634 | 602 | else |
635 | - Item.SubItems[ idx ] := IntToStr(Thread.NewResCount); | |
636 | - gbcUnReadCount: | |
637 | - Item.SubItems[ idx ] := ''; | |
638 | - gbcRoundName: | |
639 | - if Thread.Round then | |
640 | - Item.SubItems[ idx ] := Thread.RoundName | |
603 | + BoardCnt := 0; | |
604 | + end; | |
605 | + { | |
606 | + case GikoForm.ViewType of | |
607 | + gvtAll: BoardCnt := Board.Count; | |
608 | + gvtLog: BoardCnt := Board.GetLogThreadCount; | |
609 | + gvtNew: BoardCnt := Board.GetNewThreadCount; | |
610 | + gvtUser: BoardCnt := Board.GetUserThreadCount; | |
641 | 611 | else |
642 | - Item.SubItems[ idx ] := ''; | |
643 | - gbcRoundDate://gbcLastModified: | |
644 | - if (Thread.RoundDate = ZERO_DATE) then begin | |
645 | - Item.SubItems[ idx ] := ''; | |
646 | - end else | |
647 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.RoundDate); | |
648 | - gbcCreated: | |
649 | - if Thread.CreateDate = ZERO_DATE then begin | |
650 | - Item.SubItems[ idx ] := ''; | |
651 | - end else | |
652 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.CreateDate); | |
653 | - gbcLastModified: | |
654 | - if (Thread.LastModified = ZERO_DATE) then begin | |
655 | - Item.SubItems[ idx ] := ''; | |
656 | - end else | |
657 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.LastModified); | |
612 | + BoardCnt := 0; | |
658 | 613 | end; |
659 | - Inc( idx ); | |
660 | - end; | |
614 | + } | |
615 | +// if Board = nil then Exit; | |
616 | + if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt) | |
617 | + or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit; | |
661 | 618 | |
662 | - if Thread.NewArrival then | |
663 | - Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
664 | - else | |
665 | - Item.ImageIndex := ITEM_ICON_THREADLOG1; | |
666 | -end; | |
667 | -//! OȵXbhð`æ·é | |
668 | -class procedure TListViewUtils.DrawItemNoLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
669 | -var | |
670 | - i, idx: Integer; | |
671 | -begin | |
672 | - idx := 0; | |
673 | - for i := 0 to ColumnCount - 1do begin | |
674 | - case GikoSys.Setting.BoardColumnOrder[ i ] of | |
675 | - gbcTitle: | |
676 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
677 | - Dec( idx ); | |
678 | - gbcAllCount: | |
679 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount); | |
680 | - gbcRoundDate://gbcLastModified: | |
681 | - Item.SubItems[ idx ] := ''; | |
682 | - gbcCreated: | |
683 | - if Thread.CreateDate = ZERO_DATE then begin | |
684 | - Item.SubItems[ idx ] := ''; | |
685 | - end else | |
686 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.CreateDate); | |
687 | - gbcLastModified: | |
688 | - Item.SubItems[ idx ] := ''; | |
619 | + //üP·×«ubN///////////////////////////////////////////////////// | |
620 | + ThreadItem := nil; | |
621 | + case GikoForm.ViewType of | |
622 | + gvtAll: if Item.Index >= Board.Count then Exit else | |
623 | + ThreadItem := TThreadItem(Board.Items[Item.Index]); | |
624 | + gvtLog: ThreadItem := Board.GetLogThread(Item.Index); | |
625 | + gvtNew: ThreadItem := Board.GetNewThread(Item.Index); | |
626 | + gvtUser: ThreadItem := Board.GetUserThread(Item.Index); | |
627 | + end; | |
628 | + ////////////////////////////////////////////////////////////////////////// | |
629 | + | |
630 | + if ThreadItem = nil then Exit; | |
631 | + | |
632 | + RepStr := CustomStringReplace(ThreadItem.Title, '<', '<' ); | |
633 | + RepStr := CustomStringReplace(RepStr, '>', '>' ); | |
634 | + RepStr := CustomStringReplace(RepStr, '"', '"' ); | |
635 | + RepStr := CustomStringReplace(RepStr, '&', '&' ); | |
636 | + //RepStr := StringReplace(RepStr, 'M', ',', [rfReplaceAll]); | |
637 | + if Item.SubItems.Count <> ListView.Columns.Count then begin | |
638 | + Item.SubItems.Clear; | |
639 | + Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count; | |
640 | + for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do | |
641 | + Item.SubItems.Add(''); | |
642 | + end; | |
643 | + | |
644 | + if GikoDM.ListNumberVisibleAction.Checked then | |
645 | + Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr | |
689 | 646 | else |
690 | - Item.SubItems[ idx ] := ''; | |
647 | + Item.Caption := RepStr; | |
648 | + | |
649 | + case ThreadItem.AgeSage of | |
650 | + gasNone: Item.StateIndex := -1; | |
651 | + gasNew: Item.StateIndex := 0; | |
652 | + gasAge: Item.StateIndex := 1; | |
653 | + gasSage: Item.StateIndex := 2; | |
654 | + end; | |
655 | + | |
656 | + if ThreadItem.IsLogFile then begin | |
657 | + idx := 0; | |
658 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
659 | + if GikoSys.Setting.BoardColumnOrder.Count <= i then | |
660 | + Break; | |
661 | +// case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of | |
662 | + case GikoSys.Setting.BoardColumnOrder[ i ] of | |
663 | + gbcTitle: | |
664 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
665 | + Dec( idx ); | |
666 | + | |
667 | + gbcAllCount: | |
668 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount); | |
669 | + | |
670 | + gbcLocalCount: | |
671 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.Count); | |
672 | + | |
673 | + gbcNonAcqCount: | |
674 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count); | |
675 | + | |
676 | + gbcNewCount: | |
677 | + if ThreadItem.NewResCount = 0 then | |
678 | + Item.SubItems[ idx ] := '' | |
679 | + else | |
680 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount); | |
681 | + | |
682 | + gbcUnReadCount: | |
683 | + Item.SubItems[ idx ] := ''; | |
684 | + | |
685 | + gbcRoundName: | |
686 | + if ThreadItem.Round then | |
687 | + Item.SubItems[ idx ] := ThreadItem.RoundName | |
688 | + else | |
689 | + Item.SubItems[ idx ] := ''; | |
690 | + | |
691 | + gbcRoundDate://gbcLastModified: | |
692 | + if (ThreadItem.RoundDate = ZERO_DATE) then begin | |
693 | + Item.SubItems[ idx ] := ''; | |
694 | + end else | |
695 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate); | |
696 | + | |
697 | + gbcCreated: | |
698 | + if ThreadItem.CreateDate = ZERO_DATE then begin | |
699 | + Item.SubItems[ idx ] := ''; | |
700 | + end else | |
701 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate); | |
702 | + | |
703 | + gbcLastModified: | |
704 | + if (ThreadItem.LastModified = ZERO_DATE) then begin | |
705 | + Item.SubItems[ idx ] := ''; | |
706 | + end else | |
707 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.LastModified); | |
708 | + | |
709 | + | |
710 | + end; | |
711 | + Inc( idx ); | |
712 | + end; | |
713 | + | |
714 | + if ThreadItem.NewArrival then | |
715 | + Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
716 | + else | |
717 | + Item.ImageIndex := ITEM_ICON_THREADLOG1; | |
718 | + | |
719 | + | |
720 | + end else begin | |
721 | + idx := 0; | |
722 | + for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin | |
723 | +// case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of | |
724 | + case GikoSys.Setting.BoardColumnOrder[ i ] of | |
725 | + gbcTitle: | |
726 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
727 | + Dec( idx ); | |
728 | + | |
729 | + gbcAllCount: | |
730 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount); | |
731 | + | |
732 | + gbcRoundDate://gbcLastModified: | |
733 | + Item.SubItems[ idx ] := ''; | |
734 | + | |
735 | + gbcCreated: | |
736 | + if ThreadItem.CreateDate = ZERO_DATE then begin | |
737 | + Item.SubItems[ idx ] := ''; | |
738 | + end else | |
739 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate); | |
740 | + | |
741 | + gbcLastModified: | |
742 | + Item.SubItems[ idx ] := ''; | |
743 | + | |
744 | + else | |
745 | + Item.SubItems[ idx ] := ''; | |
746 | + end; | |
747 | + Inc( idx ); | |
748 | + end; | |
749 | + if ThreadItem.NewArrival then | |
750 | + Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
751 | + else | |
752 | + Item.ImageIndex := ITEM_ICON_THREAD1; | |
691 | 753 | end; |
692 | - Inc( idx ); | |
754 | + | |
755 | + Item.Data := ThreadItem; | |
756 | + | |
693 | 757 | end; |
694 | - if Thread.NewArrival then | |
695 | - Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
696 | - else | |
697 | - Item.ImageIndex := ITEM_ICON_THREAD1; | |
698 | 758 | end; |
699 | 759 | |
700 | 760 | end. |
@@ -14,23 +14,24 @@ unit MojuUtils; | ||
14 | 14 | interface |
15 | 15 | |
16 | 16 | uses |
17 | - Windows, Classes, SysUtils; | |
17 | + Windows, Classes, SysUtils, GikoSystem; | |
18 | 18 | |
19 | 19 | function StrPosEx(StrStart, StrEnd, SubstrStart, SubstrEnd: PChar): PChar; |
20 | 20 | function AnsiStrPosEx(StrStart, StrEnd, SubstrStart, SubstrEnd: PChar): PChar; |
21 | - function ReplaceString(const S: String; const OldPattern: String; const NewPattern: string): String; | |
22 | - function IgnoCaseReplaceString(const S: String; const OldPattern:String; const NewPattern: string): String; | |
21 | + function ReplaceString(const S, OldPattern, NewPattern: string): string; | |
22 | + function IgnoCaseReplaceString(const S, OldPattern, NewPattern: string): string; | |
23 | 23 | |
24 | - function CustomStringReplace(const S: String; const OldPattern: String; const NewPattern: string; IgnoreCase : Boolean = False): String; overload; | |
25 | - procedure CustomStringReplace(var S : TStringList;const OldPattern: String;const NewPattern: string; IgnoreCase : Boolean = False); overload; | |
24 | + function CustomStringReplace(S , OldPattern: String;const NewPattern: string; IgnoreCase : Boolean = False): String; overload; | |
25 | + procedure CustomStringReplace(var S : TStringList; OldPattern: String;const NewPattern: string; IgnoreCase : Boolean = False); overload; | |
26 | 26 | |
27 | 27 | function ZenToHan(const s: string): string; |
28 | - function VaguePos(const Substr: String; const S: string): Integer; | |
28 | + function VaguePos(const Substr, S: string): Integer; | |
29 | 29 | |
30 | 30 | function ReplaseNoValidateChar( inVal : String): String; |
31 | 31 | function IsNoValidID( inID :String): Boolean; |
32 | 32 | //<font>^OðSÄí·é |
33 | - function DeleteFontTag( inSource : string) : string; | |
33 | + function DeleteFontTag( inSource : string) : string; | |
34 | + function DivideStrLine(Line: string): TResRec; | |
34 | 35 | function RemoveToken(var s: string;const delimiter: string): string; |
35 | 36 | |
36 | 37 | implementation |
@@ -110,49 +111,48 @@ begin | ||
110 | 111 | Result := nil; |
111 | 112 | end; |
112 | 113 | |
114 | +{$R-} | |
113 | 115 | //¬¶ñu·Öi嶬¶Ìá¢ð³µÈ¢j |
114 | -function ReplaceString(const S: String; const OldPattern: String; const NewPattern: string): String; | |
116 | +function ReplaceString(const S, OldPattern, NewPattern: string): string; | |
115 | 117 | var |
116 | - ReplaceCount: Integer; | |
117 | - DestIndex: Integer; | |
118 | - i, l: Integer; | |
119 | - p, e, ps, pe: PChar; | |
120 | - Count: Integer; | |
121 | - olen: Integer; | |
118 | + ReplaceCount: Integer; | |
119 | + DestIndex: Integer; | |
120 | + i, l: Integer; | |
121 | + p, e, ps, pe: PChar; | |
122 | + Count: Integer; | |
122 | 123 | begin |
123 | - Result := S; | |
124 | - olen := Length(OldPattern); | |
125 | - if olen = 0 then Exit; | |
124 | + Result := S; | |
125 | + if OldPattern = '' then Exit; | |
126 | 126 | p := PChar(S); |
127 | 127 | e := p + Length(S); |
128 | 128 | ps := PChar(OldPattern); |
129 | - pe := ps + olen; | |
129 | + pe := ps + Length(OldPattern); | |
130 | 130 | ReplaceCount := 0; |
131 | 131 | while p < e do begin |
132 | 132 | p := AnsiStrPosEx(p, e, ps, pe); |
133 | 133 | if p = nil then Break; |
134 | 134 | Inc(ReplaceCount); |
135 | - Inc(p, olen); | |
135 | + Inc(p, Length(OldPattern)); | |
136 | 136 | end; |
137 | 137 | if ReplaceCount = 0 then Exit; |
138 | 138 | SetString(Result, nil, Length(S) + |
139 | - (Length(NewPattern) - olen) * ReplaceCount); | |
140 | - p := PChar(S); | |
141 | - DestIndex := 1; | |
142 | - l := Length( NewPattern ); | |
143 | - for i := 0 to ReplaceCount - 1 do begin | |
144 | - Count := AnsiStrPosEx(p, e, ps, pe) - p; | |
145 | - Move(p^, Result[DestIndex], Count); | |
146 | - Inc(p, Count);//p := pp; | |
147 | - Inc(DestIndex, Count); | |
148 | - Move(NewPattern[1], Result[DestIndex], l); | |
149 | - Inc(p, olen); | |
150 | - Inc(DestIndex, l); | |
151 | - end; | |
152 | - Move(p^, Result[DestIndex], e - p); | |
139 | + (Length(NewPattern) - Length(OldPattern)) * ReplaceCount); | |
140 | + p := PChar(S); | |
141 | + DestIndex := 1; | |
142 | + l := Length( NewPattern ); | |
143 | + for i := 0 to ReplaceCount - 1 do begin | |
144 | + Count := AnsiStrPosEx(p, e, ps, pe) - p; | |
145 | + Move(p^, Result[DestIndex], Count); | |
146 | + Inc(p, Count);//p := pp; | |
147 | + Inc(DestIndex, Count); | |
148 | + Move(NewPattern[1], Result[DestIndex], l); | |
149 | + Inc(p, Length(OldPattern)); | |
150 | + Inc(DestIndex, l); | |
151 | + end; | |
152 | + Move(p^, Result[DestIndex], e - p); | |
153 | 153 | end; |
154 | 154 | //¬¶ñu·Öi嶬¶Ìá¢ð³·éj |
155 | -function IgnoCaseReplaceString(const S: String;const OldPattern:String;const NewPattern: string): String; | |
155 | +function IgnoCaseReplaceString(const S, OldPattern, NewPattern: string): string; | |
156 | 156 | var |
157 | 157 | ReplaceCount: Integer; |
158 | 158 | DestIndex: Integer; |
@@ -203,14 +203,18 @@ begin | ||
203 | 203 | end; |
204 | 204 | Move(p^, Result[DestIndex], e - p); |
205 | 205 | end; |
206 | +{$IFDEF DEBUG} | |
207 | +{$R+} | |
208 | +{$ENDIF} | |
209 | + | |
206 | 210 | //¬¶ñu·ÖiÄpÅPj |
207 | 211 | function CustomStringReplace( |
208 | - const S :String; | |
209 | - const OldPattern: String; | |
212 | + S , OldPattern: String; | |
210 | 213 | const NewPattern: string; |
211 | 214 | IgnoreCase : Boolean |
212 | 215 | ): String; |
213 | 216 | begin |
217 | + Result := ''; | |
214 | 218 | if not IgnoreCase then begin |
215 | 219 | Result := ReplaceString(S,OldPattern,NewPattern); |
216 | 220 | end else begin |
@@ -221,7 +225,7 @@ end; | ||
221 | 225 | //¬¶ñu·ÖiÄpÅQj |
222 | 226 | procedure CustomStringReplace( |
223 | 227 | var S : TStringList; |
224 | - const OldPattern: String; | |
228 | + OldPattern: String; | |
225 | 229 | const NewPattern: string; |
226 | 230 | IgnoreCase : Boolean |
227 | 231 | ); |
@@ -265,7 +269,7 @@ end; | ||
265 | 269 | (************************************************************************* |
266 | 270 | * Sp¼pÐçªÈ©½©ÈðæʵȢ¦¢Pos |
267 | 271 | *************************************************************************) |
268 | -function VaguePos(const Substr:String; const S: string): Integer; | |
272 | +function VaguePos(const Substr, S: string): Integer; | |
269 | 273 | begin |
270 | 274 | Result := AnsiPos(ZenToHan(Substr), ZenToHan(S)); |
271 | 275 | end; |
@@ -331,6 +335,45 @@ begin | ||
331 | 335 | end; |
332 | 336 | // ************************************************************************* |
333 | 337 | |
338 | +{! | |
339 | +\brief datt@CÌêCðªð | |
340 | +\param Line datt@Cð\¬·é 1 s | |
341 | +\return Xîñ | |
342 | +} | |
343 | +function DivideStrLine(Line: string): TResRec; | |
344 | +const | |
345 | + delimiter = '<>'; | |
346 | +var | |
347 | + pds, pde : PChar; | |
348 | + pss, pse : PChar; | |
349 | +begin | |
350 | + pss := PChar(Line); | |
351 | + pse := pss + Length(Line); | |
352 | + pds := PChar(delimiter); | |
353 | + pde := pds + Length(delimiter); | |
354 | + | |
355 | + if AnsiStrPosEx(pss, pse, pds, pde) = nil then begin | |
356 | + Line := CustomStringReplace(Line, '<>', '<>'); | |
357 | + Line := CustomStringReplace(Line, ',', '<>'); | |
358 | + Line := CustomStringReplace(Line, 'M', ','); | |
359 | + end; | |
360 | + //Delim := '<>'; | |
361 | + Result.FType := glt2chNew; | |
362 | + //TrimµÄÍ¢¯È¢Cª·é@byà¶ã | |
363 | + Result.FName := RemoveToken(Line, delimiter); | |
364 | + Result.FMailTo := RemoveToken(Line, delimiter); | |
365 | + Result.FDateTime := RemoveToken(Line, delimiter); | |
366 | + Result.FBody := RemoveToken(Line, delimiter); | |
367 | + //Q¿áñËéÆ©¾ÆA{¶ÌæªÉP¼póªüÁÄ¢éÌÅí·é | |
368 | + //¼Ìf¦ÂÅAX©ÌÌó©àµêÈ¢¯Ç»êÍúßé | |
369 | + Result.FBody := TrimLeft(Result.FBody); | |
370 | + //ó¾ÆâèªN«é©çAóðÝè·é | |
371 | + if Result.FBody = '' then | |
372 | + Result.FBody := ' '; | |
373 | + | |
374 | + Result.FTitle := RemoveToken(Line, delimiter); | |
375 | + | |
376 | +end; | |
334 | 377 | |
335 | 378 | (************************************************************************* |
336 | 379 | * |
@@ -36,9 +36,8 @@ type | ||
36 | 36 | { Private é¾ } |
37 | 37 | IgnoreLists : TStringList; |
38 | 38 | FAbort: Boolean; |
39 | - function BoardDownload(const URL: String): TNewBoardItem; | |
40 | - function BoardLoardFromFile(const FilePath: String): String; | |
41 | - function UpdateURL(s: string): boolean; | |
39 | + function BoardDownload: TNewBoardItem; | |
40 | + procedure UpdateURL(s: string); | |
42 | 41 | procedure SetIgnoreCategory(b: boolean); |
43 | 42 | procedure EditIgnoreList(Sender: TObject); |
44 | 43 | procedure UpdateIgnoreList(Sender: TObject); |
@@ -59,24 +58,15 @@ uses Giko, IdHeaderList, MojuUtils, GikoDataModule; | ||
59 | 58 | procedure TNewBoardDialog.UpdateButtonClick(Sender: TObject); |
60 | 59 | var |
61 | 60 | Item: TNewBoardItem; |
62 | - URL : String; | |
63 | - protocol, host, path, document, port, bookmark: String; | |
64 | 61 | begin |
65 | 62 | try |
66 | - MessageMemo.Clear; | |
67 | 63 | GikoSys.Setting.BoardURLSelected := BoardURLComboBox.ItemIndex + 1; |
68 | 64 | FAbort := False; |
69 | 65 | UpdateButton.Enabled := False; |
70 | 66 | StopButton.Enabled := True; |
71 | 67 | CloseButton.Enabled := False; |
72 | 68 | EditIgnoreListsButton.Enabled := False; |
73 | - URL := BoardURLComboBox.Text; | |
74 | - GikoSys.ParseURI(URL, protocol, host, path, document, port, bookmark); | |
75 | - if (protocol = '') then begin | |
76 | - Item.FContent := BoardLoardFromFile(URL); | |
77 | - end else if (AnsiPos('http', protocol) > 0) then begin | |
78 | - Item := BoardDownload(URL); | |
79 | - end; | |
69 | + Item := BoardDownload; | |
80 | 70 | StopButton.Enabled := False; |
81 | 71 | if FAbort then |
82 | 72 | Exit; |
@@ -84,9 +74,8 @@ begin | ||
84 | 74 | GikoDM.TabsSaveAction.Tag := 1; |
85 | 75 | GikoDM.TabsOpenAction.Tag := 1; |
86 | 76 | GikoDM.TabsSaveAction.Execute; |
87 | - if (UpdateURL(Item.FContent)) then begin | |
88 | - GikoForm.ReloadBBS; | |
89 | - end; | |
77 | + UpdateURL(Item.FContent); | |
78 | + GikoForm.ReloadBBS; | |
90 | 79 | GikoDM.TabsSaveAction.Tag := 0; |
91 | 80 | GikoDM.TabsOpenAction.Tag := 0; |
92 | 81 | end else |
@@ -110,12 +99,14 @@ begin | ||
110 | 99 | Close; |
111 | 100 | end; |
112 | 101 | |
113 | -function TNewBoardDialog.BoardDownload(const URL: String): TNewBoardItem; | |
102 | +function TNewBoardDialog.BoardDownload: TNewBoardItem; | |
114 | 103 | var |
104 | + URL: string; | |
115 | 105 | Stream: TMemoryStream; |
116 | 106 | s: string; |
117 | 107 | i: Integer; |
118 | 108 | begin |
109 | + MessageMemo.Clear; | |
119 | 110 | Indy.Request.Clear; |
120 | 111 | Indy.RecvBufferSize := Gikosys.Setting.RecvBufferSize; |
121 | 112 | Indy.ProxyParams.BasicAuthentication := False; |
@@ -141,7 +132,7 @@ begin | ||
141 | 132 | Indy.ProxyParams.ProxyPassword := ''; |
142 | 133 | end; |
143 | 134 | //URL := GikoSys.Setting.BoardURL2ch; |
144 | - //URL := BoardURLComboBox.Text; | |
135 | + URL := BoardURLComboBox.Text; | |
145 | 136 | Indy.Request.UserAgent := GikoSys.GetUserAgent; |
146 | 137 | Indy.Request.Referer := ''; |
147 | 138 | Indy.Request.AcceptEncoding := 'gzip'; |
@@ -196,9 +187,10 @@ begin | ||
196 | 187 | end; |
197 | 188 | end; |
198 | 189 | |
199 | -function TNewBoardDialog.UpdateURL(s: string): boolean; | |
190 | +procedure TNewBoardDialog.UpdateURL(s: string); | |
200 | 191 | var |
201 | 192 | i: Integer; |
193 | +// j: Integer; | |
202 | 194 | idx: Integer; |
203 | 195 | idx1: Integer; |
204 | 196 | idx2: Integer; |
@@ -334,7 +326,6 @@ begin | ||
334 | 326 | oldURLs.Free; |
335 | 327 | newURLs.Free; |
336 | 328 | end; |
337 | - Result := Change; | |
338 | 329 | end; |
339 | 330 | |
340 | 331 | procedure TNewBoardDialog.FormCreate(Sender: TObject); |
@@ -413,21 +404,5 @@ procedure TNewBoardDialog.FormClose(Sender: TObject; | ||
413 | 404 | begin |
414 | 405 | IgnoreLists.Free; |
415 | 406 | end; |
416 | -//! [Jt@Cð[h·é | |
417 | -function TNewBoardDialog.BoardLoardFromFile(const FilePath: String): String; | |
418 | -var | |
419 | - html : TStringList; | |
420 | -begin | |
421 | - Result := ''; | |
422 | - // t@Cª¶ÝµÄ¢é©`FbN | |
423 | - if (FileExists(FilePath)) then begin | |
424 | - html := TStringList.Create(); | |
425 | - try | |
426 | - html.LoadFromFile(FilePath); | |
427 | - Result := html.Text; | |
428 | - finally | |
429 | - html.Free; | |
430 | - end; | |
431 | - end; | |
432 | -end; | |
407 | + | |
433 | 408 | end. |
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog | ||
61 | 61 | Top = 4 |
62 | 62 | Width = 509 |
63 | 63 | Height = 389 |
64 | - ActivePage = TabSheet3 | |
64 | + ActivePage = CSSTabSheet | |
65 | 65 | MultiLine = True |
66 | - TabIndex = 3 | |
66 | + TabIndex = 2 | |
67 | 67 | TabOrder = 3 |
68 | 68 | OnChange = OptionTabChange |
69 | 69 | object ConnectSheet: TTabSheet |
@@ -687,7 +687,7 @@ object OptionDialog: TOptionDialog | ||
687 | 687 | Left = 12 |
688 | 688 | Top = 52 |
689 | 689 | Width = 477 |
690 | - Height = 45 | |
690 | + Height = 64 | |
691 | 691 | Caption = #12473#12524#20316#25104#26085#26178#34920#31034#35373#23450 |
692 | 692 | TabOrder = 1 |
693 | 693 | object CreationTimeLogsCheckBox: TCheckBox |
@@ -699,8 +699,8 @@ object OptionDialog: TOptionDialog | ||
699 | 699 | TabOrder = 0 |
700 | 700 | end |
701 | 701 | object FutureThreadCheckBox: TCheckBox |
702 | - Left = 204 | |
703 | - Top = 16 | |
702 | + Left = 12 | |
703 | + Top = 40 | |
704 | 704 | Width = 265 |
705 | 705 | Height = 17 |
706 | 706 | Caption = #26085#20184#12364#26410#26469#12398#12418#12398#12399#34920#31034#12375#12394#12356#65288'492'#12473#12524#31995#65289 |
@@ -709,7 +709,7 @@ object OptionDialog: TOptionDialog | ||
709 | 709 | end |
710 | 710 | object GroupBox5: TGroupBox |
711 | 711 | Left = 12 |
712 | - Top = 105 | |
712 | + Top = 121 | |
713 | 713 | Width = 477 |
714 | 714 | Height = 86 |
715 | 715 | Caption = #12502#12521#12454#12470#12398#26368#22823#21270 |
@@ -737,35 +737,35 @@ object OptionDialog: TOptionDialog | ||
737 | 737 | end |
738 | 738 | object GroupBox17: TGroupBox |
739 | 739 | Left = 12 |
740 | - Top = 196 | |
740 | + Top = 212 | |
741 | 741 | Width = 477 |
742 | - Height = 45 | |
742 | + Height = 63 | |
743 | 743 | Caption = #12502#12521#12454#12470#12479#12502#38750#34920#31034#26178#35373#23450 |
744 | 744 | TabOrder = 3 |
745 | 745 | object SelectIntervalLabel: TLabel |
746 | - Left = 10 | |
747 | - Top = 20 | |
746 | + Left = 13 | |
747 | + Top = 24 | |
748 | 748 | Width = 199 |
749 | 749 | Height = 12 |
750 | 750 | Caption = #12459#12540#12477#12523#12461#12540#12391#12398#31227#21205#26178#12398#28961#21453#24540#26178#38291 |
751 | 751 | end |
752 | 752 | object Label4: TLabel |
753 | - Left = 271 | |
754 | - Top = 20 | |
753 | + Left = 292 | |
754 | + Top = 24 | |
755 | 755 | Width = 29 |
756 | 756 | Height = 12 |
757 | 757 | Caption = #12511#12522#31186 |
758 | 758 | end |
759 | 759 | object Label6: TLabel |
760 | - Left = 305 | |
761 | - Top = 20 | |
760 | + Left = 14 | |
761 | + Top = 40 | |
762 | 762 | Width = 164 |
763 | 763 | Height = 12 |
764 | 764 | Caption = #65288'55'#12511#12522#31186#20197#19978#12395#35373#23450#12375#12390#19979#12373#12356#65289 |
765 | 765 | end |
766 | 766 | object SelectIntervalEdit: TEdit |
767 | - Left = 214 | |
768 | - Top = 16 | |
767 | + Left = 235 | |
768 | + Top = 20 | |
769 | 769 | Width = 49 |
770 | 770 | Height = 20 |
771 | 771 | ImeMode = imClose |
@@ -775,7 +775,7 @@ object OptionDialog: TOptionDialog | ||
775 | 775 | end |
776 | 776 | object GroupBox18: TGroupBox |
777 | 777 | Left = 12 |
778 | - Top = 246 | |
778 | + Top = 278 | |
779 | 779 | Width = 477 |
780 | 780 | Height = 43 |
781 | 781 | Caption = 'dat'#33853#12385#12473#12524#12477#12540#12488#38918 |
@@ -800,29 +800,6 @@ object OptionDialog: TOptionDialog | ||
800 | 800 | #12473#12524#26368#32066#26356#26032#26085#26178#65288#38477#38918#65289) |
801 | 801 | end |
802 | 802 | end |
803 | - object GroupBox20: TGroupBox | |
804 | - Left = 12 | |
805 | - Top = 291 | |
806 | - Width = 477 | |
807 | - Height = 41 | |
808 | - Caption = #12473#12524#12483#12489#19968#35239#12480#12454#12531#12525#12540#12489#24460#12398#21205#20316 | |
809 | - TabOrder = 5 | |
810 | - object Label24: TLabel | |
811 | - Left = 219 | |
812 | - Top = 18 | |
813 | - Width = 142 | |
814 | - Height = 12 | |
815 | - Caption = #65288#12481#12455#12483#12463#12375#12394#12356#22580#21512#28961#20966#29702#65289 | |
816 | - end | |
817 | - object AutoSortCheckBox: TCheckBox | |
818 | - Left = 10 | |
819 | - Top = 16 | |
820 | - Width = 207 | |
821 | - Height = 17 | |
822 | - Caption = #33258#21205#12391#12473#12524#12483#12489#21517#12391#26119#38918#12477#12540#12488#12377#12427 | |
823 | - TabOrder = 0 | |
824 | - end | |
825 | - end | |
826 | 803 | end |
827 | 804 | object ThreadSheet: TTabSheet |
828 | 805 | Caption = #12473#12524#12483#12489#65297 |
@@ -202,9 +202,6 @@ type | ||
202 | 202 | UnFocusedBoldCheckBox: TCheckBox; |
203 | 203 | IgnoreKanaCheckBox: TCheckBox; |
204 | 204 | UseKatjuTypeSkinCheckBox: TCheckBox; |
205 | - GroupBox20: TGroupBox; | |
206 | - AutoSortCheckBox: TCheckBox; | |
207 | - Label24: TLabel; | |
208 | 205 | procedure FormCreate(Sender: TObject); |
209 | 206 | procedure FormDestroy(Sender: TObject); |
210 | 207 | procedure ApplyButtonClick(Sender: TObject); |
@@ -356,7 +353,7 @@ begin | ||
356 | 353 | FClose := False; |
357 | 354 | Exit; |
358 | 355 | end; |
359 | - SetAbonpropertys; | |
356 | + SetAbonpropertys; | |
360 | 357 | SaveSetting; |
361 | 358 | SettingApply; |
362 | 359 |
@@ -824,8 +821,7 @@ begin | ||
824 | 821 | else |
825 | 822 | DatOchiSortCombo.ItemIndex := 0; |
826 | 823 | end; |
827 | - AutoSortCheckBox.Checked := GikoSys.Setting.AutoSortThreadList; | |
828 | - | |
824 | + | |
829 | 825 | // Ú`ñ |
830 | 826 | RloCheckBox.Checked := GikoSys.Setting.AbonDeleterlo; |
831 | 827 | ReplaceulCheckBox.Checked := GikoSys.Setting.AbonReplaceul; |
@@ -1102,7 +1098,6 @@ begin | ||
1102 | 1098 | GikoSys.Setting.DatOchiSortIndex := Ord( gbcLastModified );{gbcLastModified} |
1103 | 1099 | end; |
1104 | 1100 | end; |
1105 | - GikoSys.Setting.AutoSortThreadList := AutoSortCheckBox.Checked; | |
1106 | 1101 | |
1107 | 1102 | GikoSys.Setting.WriteSystemSettingFile; |
1108 | 1103 | GikoSys.Setting.WriteBoardURLSettingFile; |
@@ -1551,8 +1546,8 @@ begin | ||
1551 | 1546 | html := |
1552 | 1547 | HTMLCreater.LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, 0 ) + |
1553 | 1548 | '<a name="top"></a>' + |
1554 | - HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, 0 ), @Res[0], '1' ) + | |
1555 | - HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, 0 ), @Res[1], '2' ) + | |
1549 | + HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, 0 ), Res[0], '1' ) + | |
1550 | + HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, 0 ), Res[1], '2' ) + | |
1556 | 1551 | '<a name="bottom"></a>' + |
1557 | 1552 | HTMLCreater.LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, 0 ); |
1558 | 1553 |
@@ -1,10 +1,9 @@ | ||
1 | 1 | unit Setting; |
2 | 2 | |
3 | - | |
4 | 3 | interface |
5 | 4 | |
6 | 5 | uses |
7 | - SysUtils, Classes, Graphics, Forms, {Math, IniFiles, UCryptAuto, UBase64,} | |
6 | + SysUtils, Classes, Graphics, Forms, Math, IniFiles, UCryptAuto, UBase64, | |
8 | 7 | ComCtrls, GestureModel; |
9 | 8 | |
10 | 9 | const |
@@ -12,7 +11,33 @@ const | ||
12 | 11 | LIST_COOLBAND_COUNT = 2; //ÂCoolBandÌ |
13 | 12 | BROWSER_COOLBAND_COUNT = 3; //uEUCoolBandÌ |
14 | 13 | |
15 | - | |
14 | + BOARD_FILE_NAME = 'board.2ch'; | |
15 | + CUSTOMBOARD_FILE_NAME = 'custom.2ch'; | |
16 | + BOARD_DIR_NAME = 'Board'; | |
17 | + KEY_SETTING_FILE_NAME = 'key.ini'; | |
18 | + EKEY_SETTING_FILE_NAME = 'Ekey.ini'; | |
19 | + TEMP_FOLDER = 'Temp'; | |
20 | + OUTBOX_FILE_NAME = 'outbox.ini'; | |
21 | + SENT_FILE_NAME = 'sent.ini'; | |
22 | + CONFIG_DIR_NAME = 'config'; | |
23 | + CSS_DIR_NAME = 'css'; | |
24 | + SKIN_DIR_NAME = 'skin'; | |
25 | + SKIN_HEADER_FILE_NAME = 'Header.html'; | |
26 | + SKIN_FOOTER_FILE_NAME = 'Footer.html'; | |
27 | + SKIN_NEWRES_FILE_NAME = 'NewRes.html'; | |
28 | + SKIN_RES_FILE_NAME = 'Res.html'; | |
29 | + SKIN_BOOKMARK_FILE_NAME = 'Bookmark.html'; | |
30 | + SKIN_NEWMARK_FILE_NAME = 'Newmark.html'; | |
31 | + NGWORDs_DIR_NAME : String = 'NGwords'; | |
32 | + BOARD_PLUGIN_DIR_NAME = 'BoardPlugin'; | |
33 | + SAMBATIME_FILE_NAME : String = 'Samba.ini'; | |
34 | + IGNORE_FILE_NAME : String = 'Ignore.txt'; | |
35 | +// DOLIB_LOGIN_URL = '/~tora3n2c/futen.cgi'; | |
36 | + MAX_POPUP_RES : Integer = 10; | |
37 | + GESTURE_FILE_NAME = 'Gestures.ini'; | |
38 | + SPAMFILTER_FILE_NAME = 'SpamFilter.ini'; | |
39 | + LANGUAGE_FILE_NAME = 'language.ini'; | |
40 | + | |
16 | 41 | type |
17 | 42 | TGikoTabPosition = (gtpTop, gtpBottom); // ^uÊu |
18 | 43 | TGikoTabAppend = (gtaFirst, gtpLast); // ^uÇÁÊu |
@@ -399,6 +424,9 @@ type | ||
399 | 424 | //! }EXWFX`[ðgp·é©Ç¤© |
400 | 425 | FGestureEnabled : Boolean; |
401 | 426 | |
427 | + //2ch¾êÝè | |
428 | + //F2chLanguage : TStringList; | |
429 | + | |
402 | 430 | //tVAigbvÝè |
403 | 431 | FLocalTrapAtt : Boolean; |
404 | 432 | FRemoteTrapAtt : Boolean; |
@@ -410,6 +438,8 @@ type | ||
410 | 438 | FMute: Boolean; |
411 | 439 | //XiÝÅ¢mè¶àLøÉ·é© |
412 | 440 | FUseUndecided: Boolean; |
441 | + //MessageListÉoͳêébZ[W | |
442 | + FMessageList : array[0..13] of string; | |
413 | 443 | |
414 | 444 | //Be2ch |
415 | 445 | //FØp[UIDEpX[h |
@@ -420,8 +450,6 @@ type | ||
420 | 450 | //ðÌÅåÛ¶ |
421 | 451 | FMaxRecordCount : Integer; |
422 | 452 | |
423 | - //Xbhêð_E[hãÉ\[g·é© | |
424 | - FAutoSortThreadList : Boolean; | |
425 | 453 | function GetMainCoolSet(Index: Integer): TCoolSet; |
426 | 454 | function GetBoardCoolSet(Index: Integer): TCoolSet; |
427 | 455 | function GetBrowserCoolSet(Index: Integer): TCoolSet; |
@@ -487,9 +515,9 @@ type | ||
487 | 515 | function GetIgnoreFileName: string; |
488 | 516 | function GetGestureFileName : string; |
489 | 517 | function GetSpamFilterFileName : string; |
490 | - function GetLanguageFileName: string; | |
491 | - function GetMainKeyFileName: String; | |
492 | - function GetEditorKeyFileName: String; | |
518 | + function GetLanguageFileName: string; | |
519 | + procedure SetMessages; | |
520 | + function GetMessage(AType :Integer): string; | |
493 | 521 | procedure WriteLogFolder(AVal : String); |
494 | 522 | |
495 | 523 | //óMobt@TCY |
@@ -737,50 +765,13 @@ type | ||
737 | 765 | property BeAutoLogin: Boolean read FBeAutoLogin write FBeAutoLogin; |
738 | 766 | property BeLogin: Boolean read FBeLogin write FBeLogin; |
739 | 767 | property MaxRecordCount : Integer read FMaxRecordCount write FMaxRecordCount; |
740 | - //! Xbhê_E[hãÉXbh¼Å¸\[g·é© | |
741 | - property AutoSortThreadList : Boolean read FAutoSortThreadList write FAutoSortThreadList; | |
742 | -end; | |
743 | 768 | |
744 | - | |
745 | -const | |
746 | -// MAIN_COOLBAND_COUNT = 4; //CCoolBandÌ | |
747 | -// LIST_COOLBAND_COUNT = 2; //ÂCoolBandÌ | |
748 | -// BROWSER_COOLBAND_COUNT = 3; //uEUCoolBandÌ | |
749 | - | |
750 | - BOARD_FILE_NAME = 'board.2ch'; | |
751 | - CUSTOMBOARD_FILE_NAME = 'custom.2ch'; | |
752 | - BOARD_DIR_NAME = 'Board'; | |
753 | - KEY_SETTING_FILE_NAME = 'key.ini'; | |
754 | - EKEY_SETTING_FILE_NAME = 'Ekey.ini'; | |
755 | - TEMP_FOLDER = 'Temp'; | |
756 | - OUTBOX_FILE_NAME = 'outbox.ini'; | |
757 | - SENT_FILE_NAME = 'sent.ini'; | |
758 | - CONFIG_DIR_NAME = 'config'; | |
759 | - CSS_DIR_NAME = 'css'; | |
760 | - SKIN_DIR_NAME = 'skin'; | |
761 | - SKIN_HEADER_FILE_NAME = 'Header.html'; | |
762 | - SKIN_FOOTER_FILE_NAME = 'Footer.html'; | |
763 | - SKIN_NEWRES_FILE_NAME = 'NewRes.html'; | |
764 | - SKIN_RES_FILE_NAME = 'Res.html'; | |
765 | - SKIN_BOOKMARK_FILE_NAME = 'Bookmark.html'; | |
766 | - SKIN_NEWMARK_FILE_NAME = 'Newmark.html'; | |
767 | - NGWORDs_DIR_NAME : String = 'NGwords'; | |
768 | - BOARD_PLUGIN_DIR_NAME = 'BoardPlugin'; | |
769 | - SAMBATIME_FILE_NAME : String = 'Samba.ini'; | |
770 | - IGNORE_FILE_NAME : String = 'Ignore.txt'; | |
771 | -// DOLIB_LOGIN_URL = '/~tora3n2c/futen.cgi'; | |
772 | - MAX_POPUP_RES : Integer = 10; | |
773 | - GESTURE_FILE_NAME = 'Gestures.ini'; | |
774 | - SPAMFILTER_FILE_NAME = 'SpamFilter.ini'; | |
775 | - LANGUAGE_FILE_NAME = 'language.ini'; | |
769 | +end; | |
776 | 770 | |
777 | 771 | |
778 | 772 | |
779 | 773 | implementation |
780 | 774 | |
781 | -uses | |
782 | - Math, IniFiles, UCryptAuto, UBase64; | |
783 | - | |
784 | 775 | type |
785 | 776 | TSoundName = record |
786 | 777 | Name: string; |
@@ -798,8 +789,26 @@ const | ||
798 | 789 | DEFAULT_TAB_FONT_NAME: string = 'lr oSVbN'; |
799 | 790 | DEFAULT_TAB_FONT_SIZE: Integer = 9; |
800 | 791 | DEFAULT_2CH_BOARD_URL1: string = 'http://menu.2ch.net/bbsmenu.html'; |
792 | + //OCNðíµÜµ½ | |
793 | + //DEFAULT_2CH_BOARD_URL2: string = 'http://menu.2ch.net/bbsmenu.html'; | |
794 | + //2005/10/1Éiij4uÌûÍÁÅ //'http://www.2ch.net/newbbsmenu.html'; | |
801 | 795 | GIKO_ENCRYPT_TEXT: string = 'gikoNaviEncryptText'; |
802 | 796 | |
797 | + DEF_MESSAGES : array[0..13] of string = ( 'OAEgµÜµ½', | |
798 | + 'OCµÜµ½ - ', | |
799 | + '§OCµÜµ½ - ', | |
800 | + '[Xêæ¾®¹]', | |
801 | + '(¼Ìs¾j', | |
802 | + '[Xæ¾®¹]', | |
803 | + '[X·ªæ¾®¹]', | |
804 | + '[¢XV]', | |
805 | + '[f]', | |
806 | + '[G[]', | |
807 | + '[XMI¹]', | |
808 | + '[VXMI¹]', | |
809 | + '[XM¸s]', | |
810 | + '[VXM¸s]'); | |
811 | + | |
803 | 812 | var |
804 | 813 | SOUND_NAME: array[0..4] of TSoundName = ( |
805 | 814 | (Name: 'New'; ViewName: '澬÷'; FileName: ''), |
@@ -1256,8 +1265,6 @@ begin | ||
1256 | 1265 | FCategorySortOrder := ini.ReadBool('ThreadList', 'CategorySortOrder', True); |
1257 | 1266 | FBoardSortIndex := ini.ReadInteger('ThreadList', 'BoardSortIndex', 0); |
1258 | 1267 | FBoardSortOrder := ini.ReadBool('ThreadList', 'BoardSortOrder', True); |
1259 | - // DLãÌ©®\[g | |
1260 | - FAutoSortThreadList := ini.ReadBool('ThreadList', 'AutoSort', True); | |
1261 | 1268 | //Dat¿X\[g |
1262 | 1269 | FDatOchiSortIndex := ini.ReadInteger('ThreadList', 'DatOchiSortIndex', -1); |
1263 | 1270 | FDatOchiSortOrder := ini.ReadBool('ThreadList', 'DatOchiSortOrder', False); |
@@ -1592,8 +1599,6 @@ begin | ||
1592 | 1599 | ini.WriteBool('ThreadList', 'BoardSortOrder', FBoardSortOrder); |
1593 | 1600 | ini.WriteInteger('ThreadList', 'DatOchiSortIndex', FDatOchiSortIndex); |
1594 | 1601 | ini.WriteBool('ThreadList', 'DatOchiSortOrder', FDatOchiSortOrder); |
1595 | - // DLãÌ©®\[g | |
1596 | - ini.WriteBool('ThreadList', 'AutoSort', FAutoSortThreadList); | |
1597 | 1602 | |
1598 | 1603 | //«Ý}VgpÝè |
1599 | 1604 | ini.WriteBool('PostTime', 'UseMachineTime', FUseMachineTime); |
@@ -2164,19 +2169,68 @@ function TSetting.GetLanguageFileName: string; | ||
2164 | 2169 | begin |
2165 | 2170 | Result := GetConfigDir + LANGUAGE_FILE_NAME; |
2166 | 2171 | end; |
2172 | +//MessagelistÉoͳêébZ[WÌÝè | |
2173 | +procedure TSetting.SetMessages; | |
2174 | +var | |
2175 | + i :Integer; | |
2176 | + ini : TMemIniFile; | |
2177 | +begin | |
2178 | + //2ch¾êÇÝoµ | |
2179 | + if (GengoSupport) and (FileExists(GetLanguageFileName)) then begin | |
2180 | + ini := TmemIniFile.Create(GetLanguageFileName); | |
2181 | + try | |
2182 | + { | |
2183 | + 'OAEgµÜµ½', | |
2184 | + 'OCµÜµ½ - ', | |
2185 | + '§OCµÜµ½ - ', | |
2186 | + '[Xêæ¾®¹]', | |
2187 | + '(¼Ìs¾j', | |
2188 | + '[Xæ¾®¹]', | |
2189 | + '[X·ªæ¾®¹]', | |
2190 | + '[¢XV]', | |
2191 | + '[f]', | |
2192 | + '[G[]', | |
2193 | + '[XMI¹]', | |
2194 | + '[VXMI¹]', | |
2195 | + '[XM¸s]', | |
2196 | + '[VXM¸s]'); } | |
2197 | + FMessageList[0] := ini.ReadString('Language', 'Logout', DEF_MESSAGES[0]); | |
2198 | + FMessageList[1] := ini.ReadString('Language', 'Login', DEF_MESSAGES[1]); | |
2199 | + FMessageList[2] := ini.ReadString('Language', 'ForceLogin', DEF_MESSAGES[2]); | |
2200 | + FMessageList[3] := ini.ReadString('Language', 'ThreadList', DEF_MESSAGES[3]); | |
2201 | + FMessageList[4] := ini.ReadString('Language', 'UnKnown', DEF_MESSAGES[4]); | |
2202 | + FMessageList[5] := ini.ReadString('Language', 'ThreadGet', DEF_MESSAGES[5]); | |
2203 | + FMessageList[6] := ini.ReadString('Language', 'ThreadDiffGet', DEF_MESSAGES[6]); | |
2204 | + FMessageList[7] := ini.ReadString('Language', 'NotMod', DEF_MESSAGES[7]); | |
2205 | + FMessageList[8] := ini.ReadString('Language', 'Abort', DEF_MESSAGES[8]); | |
2206 | + FMessageList[9] := ini.ReadString('Language', 'Error', DEF_MESSAGES[9]); | |
2207 | + FMessageList[10] := ini.ReadString('Language', 'NewReply', DEF_MESSAGES[10]); | |
2208 | + FMessageList[11] := ini.ReadString('Language', 'NewThread', DEF_MESSAGES[11]); | |
2209 | + FMessageList[12] := ini.ReadString('Language', 'ReplyError', DEF_MESSAGES[12]); | |
2210 | + FMessageList[13] := ini.ReadString('Language', 'ThreadError', DEF_MESSAGES[13]); | |
2211 | + finally | |
2212 | + ini.Free; | |
2213 | + end; | |
2214 | + | |
2215 | + end else begin | |
2216 | + for i := 0 to 13 do begin | |
2217 | + FMessageList[i] := DEF_MESSAGES[i]; | |
2218 | + end; | |
2219 | + end; | |
2220 | +end; | |
2221 | +function TSetting.GetMessage(AType :Integer): string; | |
2222 | +begin | |
2223 | + if (AType >= 0) and (AType <= Length(FMessageList)) then | |
2224 | + Result := FMessageList[AType] | |
2225 | + else | |
2226 | + Result := ''; | |
2227 | +end; | |
2167 | 2228 | procedure TSetting.WriteLogFolder(AVal : String); |
2168 | 2229 | begin |
2169 | 2230 | FLogFolder := AVal; |
2170 | 2231 | FLogFolderP := IncludeTrailingPathDelimiter(LogFolder); |
2171 | 2232 | end; |
2172 | -function TSetting.GetMainKeyFileName: String; | |
2173 | -begin | |
2174 | - Result := GetConfigDir + KEY_SETTING_FILE_NAME; | |
2175 | -end; | |
2176 | -function TSetting.GetEditorKeyFileName: String; | |
2177 | -begin | |
2178 | - Result := GetConfigDir + EKEY_SETTING_FILE_NAME; | |
2179 | -end; | |
2233 | + | |
2180 | 2234 | end. |
2181 | 2235 | |
2182 | 2236 |
@@ -70,8 +70,7 @@ uses | ||
70 | 70 | HTMLCreate in 'HTMLCreate.pas', |
71 | 71 | ListViewUtils in 'ListViewUtils.pas', |
72 | 72 | GikoDataModule in 'GikoDataModule.pas' {GikoDM: TDataModule}, |
73 | - BrowserRecord in 'BrowserRecord.pas', | |
74 | - GikoMessage in 'GikoMessage.pas'; | |
73 | + BrowserRecord in 'BrowserRecord.pas'; | |
75 | 74 | |
76 | 75 | {$R *.RES} |
77 | 76 | {$R gikoResource.res} |
@@ -1,15 +0,0 @@ | ||
1 | -[Language] | |
2 | -Logout=OAEgµÜ·½ | |
3 | -Login=OCµÜ·½ - | |
4 | -ForceLogin=§OCµÜ·½ - | |
5 | -SureItiran=[Xê澵ܷ½] | |
6 | -Unknown=i¼Ìs¾ÅÂj | |
7 | -SureSyutoku=[Xæ¾®¹µÜ·½] | |
8 | -SureDiff=[X·ªæ¾®¹µÜ·½] | |
9 | -NotMod=[¢XV@࿯Â] | |
10 | -Abort=[f¥¥¥Q|P|] | |
11 | -Error=[G[¶·Àª(ßÍß)ª!!] | |
12 | -NewRes=[VXMI¹µÜ·½(M¥Ö¥L)] | |
13 | -NewSure=[VXMI¹µÜ·½(M¥Ö¥L)] | |
14 | -ResError=[XM¸s(L¥Ö¥`)] | |
15 | -SureError= [VXM¸s(L¥Ö¥`)] |
@@ -109,19 +109,6 @@ LICENSE | ||
109 | 109 | ------------------------------ |
110 | 110 | 200X/XX/XX |
111 | 111 | Version ÊÞÀ51 |
112 | -@Xbh`æÌÅK» | |
113 | -@XÔwèURLðNbNµ½Æ«Ì®ìÅAæ¾ÏÝOÌXÔÌê©®ÅDL·éæ¤ÉÏX | |
114 | -@XGfB^©çSambaÌÝèlðÏXÅ«éæ¤ÉÏX | |
115 | -@LrlbgãÅNbNE_uNbNCxgªßèɶ·ésïÌC³ | |
116 | -@}EXWFX`[LøÉvr [ãÅENbNÅ«È¢sïÌC³ | |
117 | -@CtH[ãÅÌV[gJbgL[ÌDæʪMRir©ÌªÅãÊÉÏX | |
118 | -@Cj [̨CÉüèÌ`æ̬» | |
119 | -@Xe[^Xo[É»Ý\¦µÄ¢éXbhÌeÊð\¦·éæ¤Éµ½ | |
120 | -@DAT¿µ½XÌeÊðæ¾Å«È¢sïÌC³ | |
121 | -@ÂXVÅ[Jt@CðwèÅ«éæ¤ÉÏX | |
122 | -@Xbhê_E[hãÌ\[gðIvV» | |
123 | -@NG[hÉS¼pÐçªÈJ^JiÌá¢ð¯ê·éIvVÌÇÁ | |
124 | -@XÌiÝÅS¼pÐçªÈJ^J^Ìá¢ð³·éæ¤ÉÏX | |
125 | 112 | |
126 | 113 | 2005/10/10 |
127 | 114 | Version ÊÞÀ50 [X3 |