• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ギコナビ


Commit MetaInfo

Revision5c2b9e640c1427fd769849cbd5272e640eec802a (tree)
Time2005-12-28 02:12:59
Authorcvs2git <cvs2git>
Commitercvs2git

Log Message

This commit was manufactured by cvs2svn to create tag 'v1_51_0_626'.

Change Summary

Incremental Difference

--- a/Editor.dfm
+++ b/Editor.dfm
@@ -106,7 +106,7 @@ object EditorForm: TEditorForm
106106 Width = 149
107107 Height = 20
108108 DropDownCount = 20
109- ItemHeight = 12
109+ ItemHeight = 0
110110 TabOrder = 0
111111 end
112112 object MailComboBox: TComboBox
@@ -115,7 +115,7 @@ object EditorForm: TEditorForm
115115 Width = 149
116116 Height = 20
117117 DropDownCount = 20
118- ItemHeight = 12
118+ ItemHeight = 0
119119 TabOrder = 1
120120 OnChange = MailComboBoxChange
121121 end
@@ -358,12 +358,6 @@ object EditorForm: TEditorForm
358358 object N01: TMenuItem
359359 Caption = '-'
360360 end
361- object Samba241: TMenuItem
362- Action = UpdateSambaAction
363- end
364- object N7: TMenuItem
365- Caption = '-'
366- end
367361 object CloseMenu: TMenuItem
368362 Action = CloseAction
369363 end
@@ -1726,13 +1720,6 @@ object EditorForm: TEditorForm
17261720 OnExecute = BeLogInOutEActionExecute
17271721 OnUpdate = BeLogInOutEActionUpdate
17281722 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
17361723 end
17371724 object IdLogDebug: TIdLogDebug
17381725 OnReceive = IdLogDebugReceive
--- a/Editor.pas
+++ b/Editor.pas
@@ -124,9 +124,6 @@ type
124124 SaveNameMailAction: TAction;
125125 ToolButton7: TToolButton;
126126 BeLogInOutEAction: TAction;
127- UpdateSambaAction: TAction;
128- Samba241: TMenuItem;
129- N7: TMenuItem;
130127
131128 procedure EditorPageChange(Sender: TObject);
132129 procedure FormCreate(Sender: TObject);
@@ -179,8 +176,6 @@ type
179176 procedure SaveNameMailActionExecute(Sender: TObject);
180177 procedure BeLogInOutEActionExecute(Sender: TObject);
181178 procedure BeLogInOutEActionUpdate(Sender: TObject);
182- procedure UpdateSambaActionUpdate(Sender: TObject);
183- procedure UpdateSambaActionExecute(Sender: TObject);
184179 private
185180 FThreadItem: TThreadItem;
186181 FBoard: TBoard;
@@ -210,18 +205,24 @@ type
210205 procedure SaveSendFile;
211206 procedure SetContent(Content: string; ABrowser: TWebBrowser);
212207 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+
213215 //Samba‚ÌŽžŠÔ‚ð“ǂݍž‚Þ
214- procedure ReadSambaTime(const AHost: string);
216+ procedure ReadSambaTime(); overload;
215217 //Samba‚ÉŽžŠÔ‚ð‘‚«ž‚Þ
216- procedure WriteSambaTime(const AHost: string; ATime: TDateTime);
218+ procedure WriteSambaTime(ATime: TDateTime); overload;
217219 //Samba‚̐ݒè’l‚ð“ǂݍž‚Þ
218- function ReadSettingTime(const AHost: string): Integer;
220+ function ReadSettingTime(): Integer ; overload;
219221 //Samba‚Ɉø‚Á‚©‚©‚é‚©ŒŸ¸‚·‚é
220- function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean;
222+ function CheckSambaTime(ATime: TDateTime): Boolean; overload;
221223 //Samba‚̐ݒè’l‚ð‘‚«ž‚Þ
222- procedure SetSamba24(AURL: string);
223- //Samba‚̐ݒè’l‚ðXV‚·‚é
224- procedure UpdateSamba(const AHost: String; value: Integer);
224+ procedure SetSamba24(); overload;
225+
225226 /// ˆø—p•„‚̎擾
226227 function GetOEIndentChar : string;
227228 /// –{•¶‚̎擾
@@ -258,7 +259,7 @@ type
258259 implementation
259260
260261 uses
261- Giko, ItemDownload, MojuUtils, IdGlobal, GikoMessage;
262+ Giko, ItemDownload, MojuUtils, IdGlobal;
262263 const
263264 CAPTION_NAME_NEW: string = 'ƒMƒRƒiƒr ƒXƒŒ—§‚ăGƒfƒBƒ^';
264265 CAPTION_NAME_RES: string = 'ƒMƒRƒiƒr ƒŒƒXƒGƒfƒBƒ^';
@@ -967,7 +968,7 @@ begin
967968 if MsgResult = IDNO then begin
968969 Board.SPID := '';
969970 Board.PON := '';
970- FWork := false;
971+ FWork := false;
971972 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
972973 DrawMenuBar(Handle);
973974 Exit;
@@ -976,7 +977,7 @@ begin
976977 end;
977978
978979 if ResultType = grtOK then begin
979- if (GikoSys.Setting.UseSamba) and (Timer1.Enabled) then
980+ if GikoSys.Setting.UseSamba then
980981 WriteSambaTime(FHost, Now());
981982 State := gdsComplete;
982983 end else if ResultType = grtCookie then begin
@@ -1045,8 +1046,8 @@ begin
10451046 Exit;
10461047 end;
10471048 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());
10501051 State := gdsError;
10511052 raise Exception.Create('');
10521053 end;
@@ -1097,9 +1098,9 @@ begin
10971098 GikoForm.PlaySound('ResEnd');
10981099 SaveSendFile;
10991100 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)
11011102 else
1102- GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK);
1103+ GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
11031104 Close;
11041105 Exit;
11051106 end;
@@ -1107,20 +1108,20 @@ begin
11071108 GikoForm.PlaySound('ResEnd');
11081109 SaveSendFile;
11091110 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)
11111112 else
1112- GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK);
1113+ GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
11131114 Close;
11141115 end else if State = gdsError then begin
11151116 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)
11171118 else
1118- GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK);
1119+ GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK);
11191120
11201121 EditorPage.ActivePage := PreviewTab;
11211122 SetContent(ResponseText, Browser);
11221123 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);
11241125 end;
11251126 end;
11261127
@@ -1279,13 +1280,13 @@ begin
12791280 if state = gdsComplete then begin
12801281 GikoForm.PlaySound('ResEnd');
12811282 SaveSendFile;
1282- GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK);
1283+ GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK);
12831284 FWork := False;
12841285 Close;
12851286 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);
12871288 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);
12891290 end;
12901291 end else begin
12911292 // ƒŒƒX
@@ -1295,13 +1296,13 @@ begin
12951296 if state = gdsComplete then begin
12961297 GikoForm.PlaySound('ResEnd');
12971298 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;
13001301 Close;
13011302 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);
13031304 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);
13051306 end;
13061307 end;
13071308 end else begin
@@ -1596,8 +1597,6 @@ begin
15961597 ini.WriteInteger('Setting', AHost, 0);
15971598 ini.UpdateFile;
15981599 end;
1599- //StatusBar‚É‚±‚ÌŽI‚Ì‹K’è’l‚ð•\Ž¦‚·‚é
1600- StatusBar.Panels[2].Text := 'Samba24‹K’è’l' + IntToStr(Result);
16011600 finally
16021601 ini.Free;
16031602 end;
@@ -1633,7 +1632,8 @@ begin
16331632 Host := Copy(Host, 1, AnsiPos('.', Host) - 1);
16341633 FHost := Host; //FHost=ŽI–¼
16351634 ReadSambaTime(FHost); //ˆÈ‘O‚̏‘‚«ž‚ÝŽžŠÔ‚ð“ǂݍž‚Þ
1636- ReadSettingTime(FHost); //Samba‚̐ݒè‚ð“ǂݍž‚Þ
1635+ //StatusBar‚É‚±‚ÌŽI‚Ì‹K’è’l‚ð•\Ž¦‚·‚é
1636+ StatusBar.Panels[2].Text := 'Samba24‹K’è’l' + IntToStr(ReadSettingTime(FHost));
16371637 end;
16381638 end;
16391639 procedure TEditorForm.FormCloseQuery(Sender: TObject;
@@ -2098,8 +2098,8 @@ begin
20982098
20992099 if ABoard = nil then Exit;
21002100
2101- URL := ABoard.GETHEADTXTFileName;
2102- GikoSys.OpenBrowser(URL, gbtAuto);
2101+ URL := ABoard.GETHEADTXTFileName;
2102+ GikoSys.OpenBrowser(URL, gbtAuto);
21032103 end;
21042104
21052105 procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject);
@@ -2112,8 +2112,8 @@ function TEditorForm.LFusianaGet(s: String): Boolean;
21122112 var
21132113 i: Integer;
21142114 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;
21172117 end;
21182118
21192119 procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject);
@@ -2166,49 +2166,101 @@ begin
21662166 end;
21672167 end;
21682168
2169-//! Samba‚̐ݒè’l‚ðXV‚·‚é
2170-procedure TEditorForm.UpdateSamba(const AHost: String; value: Integer);
2169+//Samba‚ÌŽžŠÔ‚ð“ǂݍž‚Þ
2170+procedure TEditorForm.ReadSambaTime();
21712171 var
21722172 ini :TMemIniFile;
2173+ skey: String;
2174+ board: TBoard;
2175+ tmp: string;
21732176 begin
2177+ Timer1.Enabled := false; //Œo‰ß•b”•\Ž¦Timer‚ðOff‚É‚·‚éi‚±‚ꂪON‚Ì‚Æ‚«Samba24‘΍ôOnj
21742178 ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
21752179 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‚ƃzƒXƒg–¼‚ªˆê’v‚µ‚Ä‚¢‚½‚ç BBSID@ƒzƒXƒg–¼
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;
21782201 finally
21792202 ini.Free;
21802203 end;
2204+ FNow := Now(); //Œ»ÝŽžŠÔ‚ðŽæ“¾iTimer•\Ž¦—p‚ŁACheck‚·‚é‚Æ‚«‚͍ĂÑNow()‚ðŒÄ‚ԁj
2205+ Timer1.Enabled := true; //Œo‰ß•b”•\Ž¦Timer‚ðOn‚É‚·‚éi‚±‚ꂪON‚Ì‚Æ‚«Samba24‘΍ôOnj
21812206 end;
21822207
2183-//! ƒTƒ“ƒoXV‚̃AƒNƒVƒ‡ƒ“‚ÌUpdateƒCƒxƒ“ƒg@ŠÈ’P‚Ì‚½‚߃^ƒCƒ}[‚Æ“¯‚¶‚É‚µ‚Ä‚¨‚­
2184-procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject);
2208+//Samba‚ÉŽžŠÔ‚ð‘‚«ž‚Þ
2209+procedure TEditorForm.WriteSambaTime(ATime: TDateTime);
2210+var
2211+ ini :TMemIniFile;
21852212 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;
21872220 end;
2188-
2189-//! ƒTƒ“ƒoXVƒAƒNƒVƒ‡ƒ“
2190-procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject);
2221+//Samba‚̐ݒè’l‚ð“ǂݍž‚Þ
2222+function TEditorForm.ReadSettingTime(): Integer ;
21912223 var
2192- input : String;
2193- i : Integer;
2194-begin
2195- if InputQuery('Samba24Ý’è’lXV', 'V‚µ‚¢Ý’è’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢', input) then begin
2196- input := ZenToHan(input);
2197- if GikoSys.IsNumeric(input) then begin
2198- UpdateSamba(FHost, StrToInt(input));
2199- //‘S‚ẴtƒH[ƒ€‚©‚çA“¯‚¶ƒzƒXƒg‚̃GƒfƒBƒ^‚ɓǂݍž‚ÝŽ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‚ƃzƒXƒg–¼‚ªˆê’v‚µ‚Ä‚¢‚½‚ç BBSID@ƒzƒXƒg–¼
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‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚́Aƒtƒ@ƒCƒ‹‚ɏ‘‚«‚½‚·B
2248+ if Result = -1 then begin
2249+ ini.WriteInteger('Setting', FHost, 0);
2250+ ini.UpdateFile;
22062251 end;
2207- end else begin
2208- ShowMessage('”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢');
2209- UpdateSambaActionExecute(Sender);
2210- end;
2252+ end;
2253+ finally
2254+ ini.Free;
22112255 end;
22122256 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;
22132265
22142266 end.
--- a/Favorite.pas
+++ b/Favorite.pas
@@ -50,7 +50,7 @@ type
5050 { Private éŒ¾ }
5151 FStack: TStack;
5252 FTreeView: TTreeView;
53- FModified: boolean;
53+
5454 procedure ReadNode(Node: IXMLNode);
5555 procedure AddSaveString(Node: TTreeNode; SaveList: TStringList);
5656 // procedure AddSaveString(Node: TTreeNode; XMLNode: IXMLNode);
@@ -61,15 +61,14 @@ type
6161 // procedure SAXCharacters(Sender: TObject; const PCh: SAXString);
6262 public
6363 { Public éŒ¾ }
64- procedure Clear;
65- function GetFavoriteFilePath() : String;
66- function SaveFavoriteFile(FileName: String) : Boolean;
64+ procedure Clear;
65+ function GetFavoriteFilePath() : String;
66+ function SaveFavoriteFile(FileName: String) : Boolean;
6767 procedure SetFavTreeView(TreeView: TTreeView);
6868 procedure ReadFavorite;
6969 procedure WriteFavorite;
70- procedure URLReplace(oldURLs: TStringList; newURLs: TStringList);
70+ procedure URLReplace(oldURLs: TStringList; newURLs: TStringList);
7171 property TreeView: TTreeView read FTreeView;
72- property Modified: boolean read FModified write FModified;
7372 end;
7473
7574 var
@@ -288,8 +287,7 @@ begin
288287 end;
289288 TreeView.Items.Clear;
290289 TreeView.Items.EndUpdate;
291-
292- FavoriteDM.Modified := true;
290+ //TreeView.Free;
293291 end;
294292
295293 procedure TFavoriteDM.SetFavTreeView(TreeView: TTreeView);
@@ -307,7 +305,7 @@ var
307305 FavFolder: TFavoriteFolder;
308306 LinkExists: Boolean;
309307 begin
310- FavoriteDM.Modified := true;
308+
311309 FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME;
312310
313311 FavFolder := TFavoriteFolder.Create;
@@ -479,7 +477,6 @@ var
479477 SaveList: TStringList;
480478
481479 begin
482- FavoriteDM.Modified := true;
483480 FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME;
484481 if FileExists(FileName) then begin
485482 tmpFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME;
@@ -491,10 +488,7 @@ begin
491488 try
492489 SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
493490 SaveList.Add('<favorite>');
494- try
495- AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList);
496- except
497- end;
491+ AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList);
498492 SaveList.Add('</favorite>');
499493 SaveList.SaveToFile(FileName);
500494 finally
--- a/Gesture.pas
+++ b/Gesture.pas
@@ -130,6 +130,10 @@ begin
130130 FLastTime := GetTickCount;
131131 FLastPoint := Point(x, y);
132132 end;
133+ //ƒ}ƒEƒX‚ðÄÝ’è
134+ if (hwnd <> 0) and (hwnd <> FHandle) then
135+ SetCapture(hwnd);
136+
133137 Result := True;
134138 end;
135139 end;
@@ -139,7 +143,7 @@ begin
139143 FLastTime := 0;
140144 FLastPoint := Point(x, y);
141145 FStartPoint := Point(x, y);
142- Result := True;
146+ CheckAction := True;
143147 SetCapture(FHandle);
144148 end;
145149 end;
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,6 +1,6 @@
11 object GikoForm: TGikoForm
2- Left = 363
3- Top = 92
2+ Left = 332
3+ Top = 101
44 HorzScrollBar.Visible = False
55 VertScrollBar.Visible = False
66 AutoScroll = False
@@ -39,9 +39,6 @@ object GikoForm: TGikoForm
3939 Width = 500
4040 end
4141 item
42- Width = 80
43- end
44- item
4542 Width = 50
4643 end>
4744 SimplePanel = False
@@ -98,6 +95,7 @@ object GikoForm: TGikoForm
9895 Height = 167
9996 BorderStyle = bsNone
10097 ChangeDelay = 50
98+ DragMode = dmAutomatic
10199 HideSelection = False
102100 Images = ItemIcon16
103101 Indent = 19
@@ -106,12 +104,16 @@ object GikoForm: TGikoForm
106104 RightClickSelect = True
107105 ShowRoot = False
108106 TabOrder = 0
107+ OnClick = TreeViewClick
109108 OnCollapsed = TreeViewCollapsed
109+ OnCollapsing = TreeViewCollapsing
110110 OnCustomDraw = TreeViewCustomDraw
111111 OnCustomDrawItem = TreeViewCustomDrawItem
112+ OnDblClick = TreeViewDblClick
113+ OnExpanding = TreeViewExpanding
112114 OnExpanded = TreeViewExpanded
113115 OnKeyDown = TreeViewKeyDown
114- OnMouseDown = TreeViewMouseDown
116+ OnMouseUp = TreeViewMouseUp
115117 end
116118 object Panel3: TPanel
117119 Left = 0
@@ -226,13 +228,18 @@ object GikoForm: TGikoForm
226228 RightClickSelect = True
227229 ShowRoot = False
228230 TabOrder = 3
231+ OnClick = FavoriteTreeViewClick
232+ OnCollapsing = FavoriteTreeViewCollapsing
233+ OnDblClick = FavoriteTreeViewDblClick
229234 OnDragDrop = FavoriteTreeViewDragDrop
230235 OnDragOver = FavoriteTreeViewDragOver
231236 OnEdited = FavoriteTreeViewEdited
232237 OnEditing = FavoriteTreeViewEditing
233238 OnEndDrag = FavoriteTreeViewEndDrag
239+ OnExpanding = FavoriteTreeViewExpanding
234240 OnKeyDown = FavoriteTreeViewKeyDown
235241 OnMouseDown = FavoriteTreeViewMouseDown
242+ OnMouseUp = FavoriteTreeViewMouseUp
236243 end
237244 object FavoriteToolBar: TToolBar
238245 Left = 0
--- a/Giko.pas
+++ b/Giko.pas
@@ -20,10 +20,6 @@ uses
2020 ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection,
2121 IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord;
2222
23-const
24- NGWORDNAME_PANEL = 3;
25- THREADSIZE_PANEL = 2;
26-
2723 type
2824 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
2925 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
@@ -358,7 +354,7 @@ type
358354 N63: TMenuItem;
359355 N64: TMenuItem;
360356 dummy1: TMenuItem;
361- TreeSelectLogDeletePopupMenu: TMenuItem;
357+ TreeSelectLogDeletePopupMenu: TMenuItem;
362358 N65: TMenuItem;
363359 BBSSelectPopupMenu: TPopupMenu;
364360 PlugInMenu: TMenuItem;
@@ -378,7 +374,7 @@ type
378374 ResRangeKokoPMenuItem: TMenuItem;
379375 ResRangeNewPMenuItem: TMenuItem;
380376 ResRangeAllPMenuItem: TMenuItem;
381- BrowsBoradHeadAction1: TMenuItem;
377+ BrowsBoradHeadAction1: TMenuItem;
382378 ThreadRangePopupMenu: TPopupMenu;
383379 A15: TMenuItem;
384380 L8: TMenuItem;
@@ -398,7 +394,7 @@ type
398394 N73: TMenuItem;
399395 SelectComboBoxPanel: TPanel;
400396 SelectComboBoxSplitter: TImage;
401- ToolButton1: TToolButton;
397+ ToolButton1: TToolButton;
402398 N74: TMenuItem;
403399 WikiFAQ: TMenuItem;
404400 GikoApplicationEvents: TApplicationEvents;
@@ -423,6 +419,7 @@ type
423419 procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
424420 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
425421 procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
422+ procedure TreeViewDblClick(Sender: TObject);
426423 procedure ListViewCustomDraw(Sender: TCustomListView;
427424 const ARect: TRect; var DefaultDraw: Boolean);
428425 procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
@@ -494,6 +491,7 @@ type
494491 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
495492 Shift: TShiftState);
496493 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
494+ procedure FavoriteTreeViewDblClick(Sender: TObject);
497495 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
498496 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
499497 Shift: TShiftState; X, Y: Integer);
@@ -512,12 +510,15 @@ type
512510 var Handled: Boolean);
513511 procedure BrowserTabPopupMenuPopup(Sender: TObject);
514512 procedure BrowserTabResize(Sender: TObject);
513+ procedure TreeViewClick(Sender: TObject);
515514 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
516515 Shift: TShiftState);
517516 procedure FavoriteTreeViewMouseDown(Sender: TObject;
518517 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
519518 procedure MessagePanelResize(Sender: TObject);
520519 procedure OnResized;
520+ procedure FavoriteTreeViewMouseUp(Sender: TObject;
521+ Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
521522 procedure SelectTimerTimer(Sender: TObject);
522523 procedure ListViewColumnRightClick(Sender: TObject;
523524 Column: TListColumn; Point: TPoint);
@@ -533,16 +534,27 @@ type
533534 Shift: TShiftState);
534535 procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
535536 var AllowEdit: Boolean);
536- procedure CabinetCloseSpeedButtonClick(Sender: TObject);
537+ procedure CabinetCloseSpeedButtonClick(Sender: TObject);
537538 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
538539 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
539540 var Handled: Boolean);
540541 procedure GikoApplicationEventsDeactivate(Sender: TObject);
541542 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;
543553 Shift: TShiftState; X, Y: Integer);
544554 private
545555 { Private éŒ¾ }
556+ FSortIndex: Integer;
557+ FSortOrder: Boolean;
546558 FEnabledCloseButton: Boolean;
547559 FClickNode: TTreeNode;
548560 FHttpState: Boolean;
@@ -588,7 +600,6 @@ type
588600 FIsHandledWheel : Boolean; ///< Šù‚Ɏ󂯎æ‚Á‚½ WM_MOUSEWHEEL ‚©‚Ç‚¤‚©
589601 DiffComp: Boolean; //Add by Genyakun ƒXƒŒ‚ªXV‚³‚ꂽ‚Æ‚«‚ÉTrue‚É‚È‚é
590602 FOrigenCaption: String; //‚¨‹C‚É“ü‚èƒcƒŠ[‚̃AƒCƒeƒ€•ÒWŽž‚̕ҏW‘O‚Ì•¶Žš—ñ
591- FPreviewBrowserRect: TRect; ///< ƒvƒŒƒrƒ…[‚Ì•\Ž¦ˆÊ’u‚ð‹L‰¯‚·‚é
592603 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
593604 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
594605 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
@@ -689,6 +700,8 @@ type
689700 property ToolBarSettingSender : TToolBarSettingSenderType
690701 read FToolBarSettingSender write FToolBarSettingSender;
691702 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
703+ property SortIndex: Integer read FSortIndex write FSortIndex;
704+ property SortOrder: Boolean read FSortOrder write FSortOrder;
692705 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
693706 property WorkCount: Integer read FWorkCount write FWorkCount;
694707 procedure SetContent(inThread: TBrowserRecord);
@@ -820,7 +833,7 @@ uses
820833 FavoriteArrange, AddressHistory, Preview, Gesture,
821834 About, Option, Round, Splash, Sort, ListSelect, Imm,
822835 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
823- HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage;
836+ HTMLCreate, ListViewUtils, GikoDataModule;
824837
825838 const
826839 BLANK_HTML: string = 'about:blank';
@@ -859,6 +872,7 @@ var
859872 msg: string;
860873 i: Integer;
861874 wp: TWindowPlacement;
875+ s: string;
862876 begin
863877 {$IFDEF DEBUG}
864878 AllocConsole;
@@ -885,6 +899,7 @@ begin
885899 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
886900
887901 //ƒAƒhƒŒƒX—š—ð“ǂݍž‚Ý
902+ //AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
888903 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
889904
890905 EnabledCloseButton := True;
@@ -1162,7 +1177,9 @@ begin
11621177 MoveToURL(ParamStr(i));
11631178 end;
11641179
1165- GikoDM.RepaintStatusBar;
1180+ s := GikoSys.FAbon.NGwordname;
1181+ StatusBar.Panels[2].Text := s;
1182+ StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
11661183 StatusBarResize(Sender);
11671184
11681185 dummy1.Caption := ItemReservPMenu.Caption;
@@ -1188,7 +1205,7 @@ begin
11881205 MouseGesture.SetHook( Handle );
11891206
11901207 //2chŒ¾Œê“ǂݏo‚µ
1191- GikoSys.SetGikoMessage;
1208+ GikoSys.Setting.SetMessages;
11921209
11931210 //ƒI[ƒgƒƒOƒCƒ“
11941211 if GikoSys.Setting.AutoLogin then
@@ -1200,7 +1217,6 @@ begin
12001217 FavoriteAddToolButton.Caption := '’ljÁ...';
12011218 AntiIndivAbonMenuItem.Caption := 'ŒÂ•Ê‚ ‚ځ`‚ñ‰ðœ';
12021219
1203-
12041220 end;
12051221
12061222 // CoolBar ‚̐ݒè‚ð•Ï”‚É•Û‘¶
@@ -1521,6 +1537,7 @@ begin
15211537 //ƒAƒhƒŒƒX—š—ð•Û‘¶
15221538 try
15231539 //AddressHistoryDM‚ÍŽ©“®¶¬ƒtƒH[ƒ€‚Ȃ̂ŁA‰ð•ú‚ÍŽ©“®“I‚É‚³‚ê‚éB
1540+ //AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
15241541 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
15251542 except
15261543 end;
@@ -1655,6 +1672,7 @@ begin
16551672 GikoSys.Setting.ShowDialogForAllTabClose := false;
16561673 GikoDM.AllTabCloseAction.Execute;
16571674 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1675+
16581676 SetContent(BrowserNullTab);
16591677 //TreeViewƒNƒŠƒAiBBS2ch.Free‚ÌŒã‚ɃNƒŠƒA‚·‚é‚ÆXPƒXƒ^ƒCƒ‹Žž‚ɃGƒ‰[o‚éj
16601678 TreeView.Items.Clear;
@@ -1985,35 +2003,27 @@ procedure TGikoForm.ListViewColumnClick(Sender: TObject;
19852003 var
19862004 id, idx : Integer;
19872005 orderList : TList;
1988- vSortIndex : Integer;
1989- vSortOrder : Boolean;
19902006 begin
19912007 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
2008+
2009+ if TObject( FActiveList ) is TBBS then
2010+ orderList := GikoSys.Setting.BBSColumnOrder
2011+ else if TObject( FActiveList ) is TCategory then
2012+ orderList := GikoSys.Setting.CategoryColumnOrder
2013+ else if TObject( FActiveList ) is TBoard then
2014+ orderList := GikoSys.Setting.BoardColumnOrder
2015+ else
20052016 Exit;
20062017
20072018 id := Integer( orderList[ idx ] );
20082019
2009-
2010- if vSortIndex = id then
2011- vSortOrder := not vSortOrder
2020+ if FSortIndex = id then
2021+ FSortOrder := not FSortOrder
20122022 else begin
2013- vSortOrder := id = 0;
2023+ FSortOrder := id = 0;
20142024 end;
20152025
2016- TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2026+ TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, FSortOrder, FSortIndex );
20172027 end;
20182028
20192029 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
@@ -2212,13 +2222,31 @@ begin
22122222 ListView.SetFocus;
22132223 ListView.SelectAll;
22142224 end;
2225+// *************************************************************************
2226+//! ƒcƒŠ[ƒrƒ…[‚̃_ƒuƒ‹ƒNƒŠƒbƒNƒCƒxƒ“ƒg
2227+// *************************************************************************
2228+procedure TGikoForm.TreeViewDblClick(Sender: TObject);
2229+var
2230+ pos : TPoint;
2231+ rect: TRect;
2232+begin
2233+ pos := FMouseDownPos;
2234+ if (FClickNode <> nil) and (FClickNode = TreeView.GetNodeAt(pos.X, pos.Y)) then begin
2235+ //ƒ}ƒEƒX‚ªnode‚̏ã‚É‚¢‚é‚©
2236+ rect := FClickNode.DisplayRect(true);
2237+ if ((rect.Left <= pos.X) and (rect.Right >= pos.X)) and
2238+ ((rect.Bottom >= pos.Y) and (rect.Top <= pos.Y)) then begin
2239+ TreeDoubleClick( FClickNode );
2240+ FClickNode := nil;
2241+ end;
2242+ end;
2243+end;
2244+
22152245 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
22162246 begin
22172247 AddMessageList(Msg, nil, Icon);
22182248 end;
2219-// *************************************************************************
2220-//! ƒ_ƒEƒ“ƒ[ƒh‚ªŠ®—¹‚µ‚½‚Æ‚«‚É”­¶‚·‚éƒCƒxƒ“ƒg
2221-// *************************************************************************
2249+
22222250 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
22232251 var
22242252 ATitle: string;
@@ -2234,21 +2262,16 @@ begin
22342262 else
22352263 ATitle := Item.ThreadItem.Title;
22362264 if ATitle = '' then
2237- ATitle := GikoSys.GetGikoMessage(gmUnKnown);
2265+ ATitle := GikoSys.Setting.GetMessage(Ord(gmUnKnown));
22382266
22392267 if Item.State in [gdsComplete, gdsDiffComplete] then begin
22402268 //³íI—¹
22412269 if Item.DownType = gdtBoard then begin
22422270 //”Â
22432271 Item.SaveListFile;
2244- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK);
2272+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureItiran)), nil, gmiOK);
22452273 if GetActiveList = Item.Board then begin
22462274 FActiveList := nil;
2247- //Ž©“®ƒ\[ƒg‚̏ꍇ”ˆꗗ‚̃\[ƒg‡‚ðƒNƒŠƒA‚·‚é
2248- if (GikoSys.Setting.AutoSortThreadList) then begin
2249- GikoSys.Setting.BoardSortIndex := 0;
2250- GikoSys.Setting.BoardSortOrder := True;
2251- end;
22522275 SetActiveList(Item.Board);
22532276 end;
22542277 Item.Board.Modified := True;
@@ -2295,12 +2318,12 @@ begin
22952318
22962319 if Item.State = gdsComplete then begin
22972320 PlaySound('New');
2298- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK);
2321+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureSyutoku)), nil, gmiOK);
22992322 //Add by Genyakun
23002323 DiffComp := True;
23012324 end else begin
23022325 PlaySound('NewDiff');
2303- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK);
2326+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureDiff)), nil, gmiOK);
23042327 //Add by Genyakun
23052328 DiffComp := True;
23062329 end;
@@ -2333,18 +2356,18 @@ begin
23332356 //SetContent(Item.ThreadItem);
23342357 InsertBrowserTab(Item.ThreadItem);
23352358 end;}
2336- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD);
2359+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmNotMod)), nil, gmiSAD);
23372360 PlaySound('NoChange');
23382361 Screen.Cursor := crDefault;
23392362 end else if Item.State = gdsAbort then begin
23402363 //’†’f
2341- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
2364+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK);
23422365 end else if Item.State = gdsError then begin
23432366 //ƒGƒ‰[
23442367 s := Item.ErrText;
23452368 if s <> '' then
23462369 s := ':' + s;
2347- AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmError) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG);
2370+ AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmError)) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG);
23482371 // if Item.ResponseCode = 302 then
23492372 // AddMessageList('”‚ªˆÚ“]‚µ‚½‚©‚à‚µ‚ê‚È‚¢‚̂ŔXV‚ðs‚Á‚Ä‚­‚¾‚³‚¢B', nil, gmiNG);
23502373 PlaySound('Error');
@@ -2524,9 +2547,6 @@ begin
25242547 BrowserNullTab := TBrowserRecord.Create;
25252548 BrowserNullTab.Browser := Browser;
25262549 end;
2527- if BrowserNullTab.thread <> ThreadItem then begin
2528- BrowserNullTab.Movement := '';
2529- end;
25302550 BrowserNullTab.thread := ThreadItem;
25312551 Result := BrowserNullTab;
25322552 BrowserTab.TabIndex := -1;
@@ -2556,7 +2576,6 @@ begin
25562576 idx := BrowserTab.TabIndex;
25572577 if (FActiveContent <> nil) and
25582578 (FActiveContent.Thread <> Thread.Thread) and
2559- (FActiveContent.Browser <> nil) and
25602579 (Assigned(FActiveContent.Browser.Document)) then begin
25612580 try
25622581 try
@@ -2575,7 +2594,7 @@ begin
25752594 ItemBoardImage.Picture := nil;
25762595 BrowserNameLabel.Caption := '';
25772596 ItemImage.Picture := nil;
2578- BrowserNullTab.Thread := nil;
2597+ BrowserNullTab.Thread := nil;
25792598 //TOleControl(BrowserNullTab.Browser).Visible := true;
25802599 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
25812600 FActiveContent := nil;
@@ -2632,8 +2651,6 @@ begin
26322651
26332652 if not ThreadIsLog then begin
26342653 Self.Caption := GikoDataModule.CAPTION_NAME ;
2635- //ƒXƒe[ƒ^ƒXƒo[‚É•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒ‚Ì—e—Ê‚ðÁ‹Ž
2636- StatusBar.Panels[THREADSIZE_PANEL].Text := '';
26372654 try
26382655 s := '<HTML><BODY><CENTER>‚±‚̃XƒŒƒbƒh‚͎擾‚µ‚Ä‚¢‚Ü‚¹‚ñ</CENTER></BODY></HTML>';
26392656 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
@@ -2645,10 +2662,6 @@ begin
26452662 end;
26462663 end else begin
26472664 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
2648- //ƒXƒe[ƒ^ƒXƒo[‚É•\Ž¦‚µ‚Ä‚¢‚éƒ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);
26522665 //Thread.Repaint‚́AƒXƒLƒ““™‚̐ݒè‚ð•ÏX‚µ‚½‚Æ‚«AThread‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚½‚Æ‚«
26532666 //V‹K‚ÉThread‚ðŠJ‚¢‚½‚Æ‚«‚ɐ^‚É‚È‚Á‚Ä‚¢‚éB
26542667 if Thread.Repaint then begin
@@ -2660,7 +2673,7 @@ begin
26602673 //GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
26612674 HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle);
26622675 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
2663-
2676+
26642677 if ThreadItem = nil then begin
26652678 FActiveContent := nil;
26662679 BrowserTab.Repaint;
@@ -2728,19 +2741,9 @@ begin
27282741 ListView.Selected := nil;
27292742 // ListView.Columns.Clear;
27302743 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+ and (FActiveContent.Thread.IsLogFile) then
2745+ Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']'
2746+ else
27442747 Self.Caption := GikoDataModule.CAPTION_NAME;
27452748 //Application.Title := CAPTION_NAME;
27462749
@@ -2749,11 +2752,14 @@ begin
27492752 Screen.Cursor := crHourGlass;
27502753 try
27512754 if Obj is TBBS then begin
2752- TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2755+ TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked,
2756+ FSortIndex, FSortOrder);
27532757 end else if Obj is TCategory then begin
2754- TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2758+ TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked,
2759+ FSortIndex, FSortOrder);
27552760 end else if Obj is TBoard then begin
2756- TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2761+ TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked,
2762+ FSortIndex, FSortOrder);
27572763 end;
27582764 finally
27592765 Screen.Cursor := crDefault;
@@ -3497,9 +3503,6 @@ begin
34973503 end else if TObject(Node.Data) is TBoard then begin
34983504 TBoard(Node.Data).NodeExpand := False;
34993505 end;
3500- if (TreeView.Selected <> nil) and (TreeView.Selected = Node) then begin
3501- TreeClick(TreeView.Selected);
3502- end;
35033506 end;
35043507
35053508 procedure TGikoForm.MessageListViewResize(Sender: TObject);
@@ -3928,11 +3931,14 @@ var
39283931 idx: Integer;
39293932 begin
39303933
3934+// if NewTab = -1 then
3935+// ThreadItem := nil;
39313936 if not BrowserTab.Dragging then begin
39323937 FTabHintIndex := -1;
39333938 BrowserTab.Hint := '';
39343939 idx := BrowserTab.TabIndex;
39353940 if idx = -1 then begin
3941+ BrowserNullTab.Thread := nil;
39363942 SetContent(BrowserNullTab);
39373943
39383944 end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
@@ -3958,6 +3964,8 @@ begin
39583964 end;
39593965 MoveWindow(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser.Handle, 0, 0, BrowserPanel.Width, BrowserPanel.Height, false);
39603966 TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
3967+// GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
3968+// OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
39613969 SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
39623970
39633971 if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
@@ -4144,11 +4152,6 @@ begin
41444152 FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
41454153 FEvent.OnContextMenu := OnDocumentContextMenu;
41464154 FEvent.OnClick := WebBrowserClick; //’ljÁ‚µ‚½OnClickƒCƒxƒ“ƒg
4147- end else begin
4148- if FEvent <> nil then begin
4149- FEvent.Free;
4150- FEvent := nil;
4151- end;
41524155 end;
41534156
41544157 end;
@@ -4322,52 +4325,47 @@ procedure TGikoForm.FavoriteMenuClick(Sender: TObject);
43224325 var
43234326 NewMenu: TMenuItem;
43244327 begin
4325- if FavoriteDM.Modified then begin
4326- FavoriteMenu.Clear;
4328+ FavoriteMenu.Clear;
43274329
4328- //‚¨‹C‚É“ü‚è‚̒ljÁ
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- //ƒZƒpƒŒ[ƒ^
4337- FavoriteMenu.InsertNewLineAfter(NewMenu);
4338- CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
4339- FavoriteDM.Modified := false;
4340- end;
4330+ //‚¨‹C‚É“ü‚è‚̒ljÁ
4331+ NewMenu := TMenuItem.Create(MainMenu);
4332+ NewMenu.Action := GikoDM.FavoriteAddAction;
4333+ FavoriteMenu.Add(NewMenu);
4334+ //‚¨‹C‚É“ü‚è‚̐®—
4335+ NewMenu := TMenuItem.Create(FavoriteMenu);
4336+ NewMenu.Action := GikoDM.FavoriteArrangeAction;
4337+ FavoriteMenu.Add(NewMenu);
4338+ //ƒZƒpƒŒ[ƒ^
4339+ NewMenu := TMenuItem.Create(FavoriteMenu);
4340+ NewMenu.Caption := '-';
4341+ FavoriteMenu.Add(NewMenu);
4342+
4343+ CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
43414344 end;
43424345
43434346 procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
43444347 var
43454348 i: Integer;
4346- NewMenu: array of TMenuItem;
4349+ NewMenu: TMenuItem;
43474350 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;
4351+ for i := 0 to Node.Count - 1 do begin
4352+ NewMenu := TFavoriteMenuItem.Create(Self);
4353+ NewMenu.AutoHotkeys := maAutomatic;
4354+ NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&');
4355+ TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data;
4356+ MenuItem.Add(NewMenu);
43564357
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;
4358+ if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
4359+ NewMenu.ImageIndex := GikoDataModule.TOOL_ICON_FAV_FOLDER;
4360+ CreateFavMenu(Node.Item[i], NewMenu);
4361+ end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
4362+ NewMenu.ImageIndex := GikoDataModule.TOOL_ICON_FAV_BOARD;
4363+ NewMenu.OnClick := FavoriteClick;
4364+ end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
4365+ NewMenu.ImageIndex := GikoDataModule.TOOL_ICON_FAV_THREAD;
4366+ NewMenu.OnClick := FavoriteClick;
43664367 end;
4367- Inc(i);
4368- Node := Node.getNextSibling;
43694368 end;
4370- MenuItem.Add(NewMenu);
43714369 end;
43724370
43734371 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
@@ -4431,7 +4429,9 @@ end;
44314429
44324430 procedure TGikoForm.FavoriteClick(Sender: TObject);
44334431 begin
4432+
44344433 FavoriteClick( Sender, True );
4434+
44354435 end;
44364436
44374437 procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean);
@@ -4950,42 +4950,26 @@ begin
49504950
49514951 SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW);
49524952 ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE);
4953- FPreviewBrowserRect := ARect;
4953+
49544954 // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE);
49554955 // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW);
49564956
49574957 end;
49584958
49594959 procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor);
4960-var
4961- Pos : TPoint;
49624960 begin
4963-
49644961 if PreviewTimer.Enabled then
49654962 PreviewTimer.Enabled := False;
49664963 if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin
49674964 FHint.ReleaseHandle;
49684965 FHint.ClearAllRes;
49694966 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-
4967+ if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then
4968+ ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
49864969 Message.Result := 1;
49874970 inherited;
49884971 end;
4972+
49894973 procedure TGikoForm.MessageHideButtonClick(Sender: TObject);
49904974 begin
49914975 GikoDM.MsgBarCloseAction.Execute;
@@ -5913,9 +5897,8 @@ end;
59135897 procedure TGikoForm.StatusBarResize(Sender: TObject);
59145898 begin
59155899 StatusBar.Panels[1].Width := StatusBar.Width -
5916- StatusBar.Panels[0].Width -
5917- StatusBar.Panels[THREADSIZE_PANEL].Width -
5918- StatusBar.Panels[NGWORDNAME_PANEL].Width;
5900+ StatusBar.Panels[0].Width -
5901+ StatusBar.Panels[2].Width;
59195902 end;
59205903 procedure TGikoForm.SelectComboBoxEnter(Sender: TObject);
59215904 begin
@@ -6053,8 +6036,6 @@ begin
60536036 FDropSpaceNode := nil;
60546037 end;
60556038 end;
6056- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
6057- FavoriteDM.Modified := true;
60586039
60596040 SetLinkBar;
60606041
@@ -6063,8 +6044,6 @@ end;
60636044 procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject;
60646045 Node: TTreeNode; var S: String);
60656046 begin
6066- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
6067- FavoriteDM.Modified := true;
60686047
60696048 FavoriteTreeView.ReadOnly := True;
60706049 SetLinkBar;
@@ -6092,10 +6071,7 @@ begin
60926071 FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
60936072 end;
60946073 VK_SPACE:
6095- begin
6096- FClickNode := FavoriteTreeView.Selected;
6097- GikoDM.FavoriteTreeViewReloadActionExecute( Sender );
6098- end;
6074+ FavoriteTreeViewDblClick( Sender );
60996075 end;
61006076 end else begin
61016077 //•ÒW’†‚ÉESC‚ð‰Ÿ‚µ‚½‚çA•ÒW‚ðI—¹‚µ‚āAŒ³‚Ì•¶Žš—ñ‚É–ß‚·
@@ -6228,6 +6204,27 @@ begin
62286204 end;
62296205
62306206 end;
6207+// *************************************************************************
6208+//! ‚¨‹C‚É“ü‚èƒcƒŠ[‚̃_ƒuƒ‹ƒNƒŠƒbƒNƒCƒxƒ“ƒg
6209+// *************************************************************************
6210+procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject);
6211+var
6212+ pos : TPoint;
6213+ rect: TRect;
6214+begin
6215+ //ƒNƒŠƒbƒNŽž‚Ì‘I‘ðƒCƒxƒ“ƒg‚Æ“¯‚¶‚È‚çƒ_ƒuƒ‹ƒNƒŠƒbƒNŽÀs
6216+ pos := FMouseDownPos;
6217+ if (FClickNode <> nil) and (FClickNode = FavoriteTreeView.GetNodeAt(pos.X, pos.Y)) then begin
6218+ //ƒ}ƒEƒX‚ªnode‚̏ã‚É‚¢‚é‚©
6219+ rect := FClickNode.DisplayRect(true);
6220+ if ((rect.Left <= pos.X) and (rect.Right >= pos.X)) and
6221+ ((rect.Bottom >= pos.Y) and (rect.Top <= pos.Y)) then begin
6222+ GikoDM.FavoriteTreeViewReloadActionExecute( Sender );
6223+ FClickNode := nil;
6224+ end;
6225+ end;
6226+end;
6227+
62316228 function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
62326229 var
62336230 Found: TTreeNode;
@@ -6313,8 +6310,6 @@ begin
63136310 finally
63146311 FDropSpaceNode := nil;
63156312 end;
6316- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
6317- FavoriteDM.Modified := true;
63186313 SetLinkBar;
63196314 end;
63206315
@@ -6658,8 +6653,13 @@ begin
66586653
66596654 end;
66606655 // *************************************************************************
6661-//! ƒcƒŠ[ƒrƒ…[‚ÌKeyDownƒCƒxƒ“ƒg
6656+//! ƒcƒŠ[ƒrƒ…[‚̃NƒŠƒbƒNƒCƒxƒ“ƒg
66626657 // *************************************************************************
6658+procedure TGikoForm.TreeViewClick(Sender: TObject);
6659+begin
6660+ FClickNode := TreeView.Selected;
6661+ FMouseDownPos := TreeView.ScreenToClient(Mouse.CursorPos);
6662+end;
66636663 procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word;
66646664 Shift: TShiftState);
66656665 begin
@@ -6672,35 +6672,21 @@ begin
66726672 TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
66736673 end;
66746674 end;
6675-//! ‚¨‹C‚É“ü‚è‚ÌMouseDownƒCƒxƒ“ƒg
6675+
66766676 procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
66776677 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
66786678 var
66796679 favItem : TTreeNode;
66806680 favThreadItem : TFavoriteThreadItem;
6681- rect: TRect;
66826681 begin
6682+
66836683 case Button of
6684- mbLeft:
6684+{ mbLeft:
66856685 begin
6686- if not (ssAlt in Shift) and (FavoriteTreeView.Selected <> nil) and
6687- (FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y)) then begin
6688- //ƒ}ƒEƒX‚ª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;
6686+ FMouseDownPos.X := X;
6687+ FMouseDownPos.Y := Y;
67026688 end;
6703- mbMiddle:
6689+} mbMiddle:
67046690 begin
67056691 favItem := FavoriteTreeView.GetNodeAt( X, Y );
67066692 if favItem = nil then Exit;
@@ -6760,6 +6746,16 @@ end;
67606746 // *************************************************************************
67616747 //! ‚¨‹C‚É“ü‚èƒcƒŠ[‚̃}ƒEƒXƒAƒbƒvƒCƒxƒ“ƒg
67626748 // *************************************************************************
6749+procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject;
6750+ Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
6751+begin
6752+ if (Button = mbLeft) and not (ssDouble in Shift) then begin
6753+ if (FClickNode <> nil) and (FClickNode = FavoriteTreeView.GetNodeAt(X, Y)) then begin
6754+ FavoriteClick( TObject( FClickNode ) );
6755+ end;
6756+ end;
6757+end;
6758+
67636759 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
67646760 var
67656761 p : TPoint;
@@ -6838,21 +6834,18 @@ var
68386834 rec : TBrowserRecord;
68396835 i, bound : Integer;
68406836 begin
6841- bound := BrowserTab.Tabs.Count -1;
6837+ bound := BrowserTab.Tabs.Count -1;
68426838 if bound = -1 then begin
68436839 Result := False;
68446840 Exit; //for‚É”ò‚΂Ȃ¢‚Å‘€ì‚𔲂¯‚é
6845- end;
6841+ end;
68466842
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;
6843+ for i := 0 to bound do begin
6844+ rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
6845+ if( rec <> nil) and (rec.Thread <> nil) then
6846+ AStringList.Add( rec.Thread.URL );
6847+ end;
6848+ Result := True;
68566849 end;
68576850
68586851 function TGikoForm.SaveTabURLs : Boolean;
@@ -6867,15 +6860,12 @@ begin
68676860 SaveStringList := TStringList.Create;
68686861 try
68696862 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);
6863+ if FileExists( GikoSys.GetAppDir + Filename) then begin
6864+ if FileExists( GikoSys.GetAppDir + bFilename) then
6865+ DeleteFile(GikoSys.GetAppDir + bFilename);
68746866
6875- //ƒoƒbƒNƒAƒbƒv‚ðì‚éB
6876- RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename);
6877- end;
6878- except
6867+ //ƒoƒbƒNƒAƒbƒv‚ðì‚éB
6868+ RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename);
68796869 end;
68806870 SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
68816871 Result := true;
@@ -6886,8 +6876,6 @@ begin
68866876 end;
68876877
68886878 function TGikoForm.LoadTabURLs : Boolean;
6889-const
6890- TABFILE = 'tab.sav';
68916879 var
68926880 i, bound : Integer;
68936881 item : TThreadItem;
@@ -6896,7 +6884,7 @@ var
68966884 fileName : string;
68976885 begin
68986886
6899- fileName := ExtractFilePath(Application.ExeName) + TABFILE;
6887+ fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
69006888 URLs := TStringList.Create();
69016889 GikoTab := GikoSys.Setting.BrowserTabAppend;
69026890 try
@@ -6912,10 +6900,6 @@ begin
69126900 if item <> nil then
69136901 InsertBrowserTab( item, false );
69146902 end;
6915- //Å‰‚Ì‚P–‡‚ÉÝ’è ƒAƒhƒŒƒX‚̐ݒè‚Ì‚½‚߂̃Jƒ‰ŒÄ‚Ñ
6916- if BrowserTab.Tabs.Count > 0 then begin
6917- BrowserTab.OnChange(nil);
6918- end;
69196903 end else
69206904 Result := False;
69216905 end else
@@ -7635,6 +7619,61 @@ begin
76357619 end;
76367620 end;
76377621 // *************************************************************************
7622+//! ‚¨‹C‚É“ü‚èƒcƒŠ[‚̃NƒŠƒbƒNƒCƒxƒ“ƒg
7623+// *************************************************************************
7624+procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject);
7625+begin
7626+ //Œ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚éƒAƒCƒeƒ€‚ð•Û‘¶
7627+ FClickNode := FavoriteTreeView.Selected;
7628+ FMouseDownPos := FavoriteTreeView.ScreenToClient(Mouse.CursorPos);
7629+end;
7630+// *************************************************************************
7631+//! ‚¨‹C‚É“ü‚èƒcƒŠ[‚̃AƒCƒeƒ€‚̏k¬ŽžƒCƒxƒ“ƒg
7632+// *************************************************************************
7633+procedure TGikoForm.FavoriteTreeViewCollapsing(Sender: TObject;
7634+ Node: TTreeNode; var AllowCollapse: Boolean);
7635+begin
7636+ //k¬‚³‚ꂽ‚ç•Û‘¶‚³‚ê‚Ä‚¢‚éƒNƒŠƒbƒNŽž‘I‘ðƒAƒCƒeƒ€‚ðƒNƒŠƒA
7637+ FClickNode := nil;
7638+end;
7639+// *************************************************************************
7640+//! ‚¨‹C‚É“ü‚èƒcƒŠ[‚̃AƒCƒeƒ€‚Ì“WŠJŽžƒCƒxƒ“ƒg
7641+// *************************************************************************
7642+procedure TGikoForm.FavoriteTreeViewExpanding(Sender: TObject;
7643+ Node: TTreeNode; var AllowExpansion: Boolean);
7644+begin
7645+ //“WŠJ‚³‚ꂽ‚ç•Û‘¶‚³‚ê‚Ä‚¢‚éƒNƒŠƒbƒNŽž‘I‘ðƒAƒCƒeƒ€‚ðƒNƒŠƒA
7646+ FClickNode := nil;
7647+end;
7648+// *************************************************************************
7649+//! ƒcƒŠ[ƒrƒ…[‚̃AƒCƒeƒ€‚̏k¬ŽžƒCƒxƒ“ƒg
7650+// *************************************************************************
7651+procedure TGikoForm.TreeViewCollapsing(Sender: TObject; Node: TTreeNode;
7652+ var AllowCollapse: Boolean);
7653+begin
7654+ FClickNode := nil;
7655+end;
7656+// *************************************************************************
7657+//! ƒcƒŠ[ƒrƒ…[‚̃AƒCƒeƒ€‚Ì“WŠJŽžƒCƒxƒ“ƒg
7658+// *************************************************************************
7659+procedure TGikoForm.TreeViewExpanding(Sender: TObject; Node: TTreeNode;
7660+ var AllowExpansion: Boolean);
7661+begin
7662+ FClickNode := nil;
7663+end;
7664+// *************************************************************************
7665+//! ƒcƒŠ[ƒrƒ…[‚̃}ƒEƒXƒAƒbƒvƒCƒxƒ“ƒg
7666+// *************************************************************************
7667+procedure TGikoForm.TreeViewMouseUp(Sender: TObject; Button: TMouseButton;
7668+ Shift: TShiftState; X, Y: Integer);
7669+begin
7670+ if (Button = mbLeft) and not (ssDouble in Shift) then begin
7671+ if (FClickNode <> nil) and (FClickNode = TreeView.GetNodeAt(X, Y)) then begin
7672+ TreeClick(FClickNode);
7673+ end;
7674+ end;
7675+end;
7676+// *************************************************************************
76387677 //! ƒ_ƒEƒ“ƒ[ƒhƒRƒ“ƒgƒ[ƒ‹ƒXƒŒƒbƒh‚̐¶¬
76397678 // *************************************************************************
76407679 procedure TGikoForm.CreateControlThread();
@@ -7742,32 +7781,6 @@ begin
77427781 except
77437782 end;
77447783 end;
7745-//! ƒLƒƒƒrƒlƒbƒg‚̃}ƒEƒXƒ_ƒEƒ“ƒCƒxƒ“ƒg
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- //ƒ}ƒEƒX‚ª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- // ƒNƒŠƒbƒN‚ƃ_ƒuƒ‹ƒNƒŠƒbƒN‚ðƒRƒR‚Å”»’è
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;
77717784
77727785 initialization
77737786 OleInitialize(nil);
--- a/GikoDataModule.dfm
+++ b/GikoDataModule.dfm
@@ -1195,12 +1195,6 @@ object GikoDM: TGikoDM
11951195 Hint = #12462#12467#12490#12499'Wiki'#12398'FAQ'#12434#34920#31034#12377#12427
11961196 OnExecute = WikiFAQWebPageActionExecute
11971197 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
12041198 end
12051199 object ToobarImageList: TImageList
12061200 Left = 44
--- a/GikoDataModule.pas
+++ b/GikoDataModule.pas
@@ -211,7 +211,6 @@ type
211211 WikiFAQWebPageAction: TAction;
212212 ToobarImageList: TImageList;
213213 SaveDialog: TSaveDialog;
214- ThreadSizeCalcForFileAction: TAction;
215214 procedure EditNGActionExecute(Sender: TObject);
216215 procedure ReloadActionExecute(Sender: TObject);
217216 procedure GoFowardActionExecute(Sender: TObject);
@@ -393,9 +392,9 @@ type
393392 procedure MidokuActionExecute(Sender: TObject);
394393 procedure AllSelectActionExecute(Sender: TObject);
395394 procedure AllSelectActionUpdate(Sender: TObject);
396- procedure ThreadSizeCalcForFileActionExecute(Sender: TObject);
397395 private
398396 { Private éŒ¾ }
397+ procedure RepaintStatusBar;
399398 procedure ClearResFilter;
400399 procedure SetResRange(range: Integer);
401400 procedure SetThreadAreaHorNormal;
@@ -404,11 +403,8 @@ type
404403 procedure SetThreadAreaVertical(gls : TGikoListState);
405404 procedure SetThreadReadProperty(read: Boolean);
406405 procedure SelectThreadSaveToFile(dat: Boolean);
407- function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;
408- procedure RecalcThreadSize(limit : Integer);
409406 public
410407 { Public éŒ¾ }
411- procedure RepaintStatusBar;
412408 published
413409 { Published éŒ¾ }
414410 //! TAction‚ÅGetActiveContent‚ªnilˆÈŠO‚Å—LŒø‚É‚È‚é
@@ -434,7 +430,7 @@ uses
434430 ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
435431 GikoBayesian, About, ShellAPI,
436432 RoundName, RoundData, Menus, ListViewUtils,
437- ThreadControl, GikoMessage;
433+ ThreadControl;
438434
439435
440436 {$R *.dfm}
@@ -520,10 +516,9 @@ var
520516 begin
521517 //ƒXƒe[ƒ^ƒX‚É•\Ž¦‚³‚ê‚éNGƒ[ƒhƒtƒ@ƒCƒ‹–¼‚ðXV
522518 s := GikoSys.FAbon.NGwordname;
523- GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s;
519+ GikoForm.StatusBar.Panels.Items[2].Text := s;
524520 //ƒXƒe[ƒ^ƒX‚Ì•\Ž¦ƒTƒCƒY‚̃ŠƒTƒCƒY
525- GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width
526- := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
521+ GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
527522 GikoForm.StatusBarResize(nil);
528523 end;
529524 // *************************************************************************
@@ -615,8 +610,7 @@ begin
615610 end else begin
616611 GikoForm.ClickNode.Text := InputBox( '–¼‘O‚̕ύX', '‚¨‹C‚É“ü‚è‚̐V‚µ‚¢–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢', GikoForm.ClickNode.Text );
617612 end;
618- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
619- FavoriteDM.Modified := true;
613+
620614 GikoForm.SetLinkBar;
621615 end;
622616 // *************************************************************************
@@ -644,8 +638,6 @@ begin
644638 // FClickNode.Selected.Expanded := True;
645639 GikoForm.FavoriteTreeView.Selected := Node;
646640 GikoForm.ClickNode := Node;
647- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
648- FavoriteDM.Modified := true;
649641 FavoriteTreeViewRenameAction.Execute;
650642 finally
651643 end;
@@ -676,8 +668,6 @@ begin
676668 end;
677669
678670 GikoForm.ClickNode.Delete;
679- //XV‚µ‚½‚±‚Æ‚ð‹³‚¦‚é
680- FavoriteDM.Modified := true;
681671
682672 GikoForm.SetLinkBar;
683673
@@ -695,21 +685,26 @@ end;
695685 // *************************************************************************
696686 procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
697687 var
688+ ThreadItem: TThreadItem;
698689 FavThread: TFavoriteThreadItem;
690+ Board: TBoard;
699691 FavBoard: TFavoriteBoardItem;
700692 shiftDown: Boolean;
701693 begin
702- if (GikoForm.ClickNode = nil) then Exit;
694+
695+ if GikoForm.ClickNode = nil then Exit;
703696
704697 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
705698
706699 if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
707700 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
708- if FavThread.Item <> nil then
709- GikoForm.DownloadContent(FavThread.Item, shiftDown);
701+ ThreadItem := FavThread.Item;
702+ if ThreadItem <> nil then
703+ GikoForm.DownloadContent(ThreadItem, shiftDown);
710704 end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
711705 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
712- GikoForm.DownloadList(FavBoard.Item, shiftDown);
706+ Board := FavBoard.Item;
707+ GikoForm.DownloadList(Board, shiftDown);
713708 end;
714709
715710 end;
@@ -1822,7 +1817,7 @@ begin
18221817 //ƒƒOƒAƒEƒg
18231818 GikoSys.Dolib.Disconnect;
18241819 LoginAction.Checked := False;
1825- GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK);
1820+ GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK);
18261821 LoginAction.Caption := 'ƒƒOƒCƒ“(&L)';
18271822 end else begin
18281823 TmpCursor := GikoForm.ScreenCursor;
@@ -1842,7 +1837,7 @@ begin
18421837 end;
18431838 if GikoSys.Dolib.Connect then begin
18441839 LoginAction.Checked := True;
1845- GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1840+ GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
18461841 LoginAction.Caption := 'ƒƒOƒAƒEƒg(&L)';
18471842 //LoginToolButton.Style := tbsCheck;
18481843 end else begin
@@ -1872,7 +1867,7 @@ begin
18721867 GikoSys.Dolib.ForcedConnect;
18731868 if GikoSys.Dolib.Connect then begin
18741869 LoginAction.Checked := True;
1875- GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1870+ GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
18761871 LoginAction.Caption := 'ƒƒOƒAƒEƒg(&L)';
18771872 //LoginToolButton.Style := tbsCheck;
18781873 end else begin
@@ -3048,44 +3043,26 @@ begin
30483043
30493044 end;
30503045 // *************************************************************************
3051-//! ƒXƒŒˆê——‚Ì•\Ž¦‚µ‚Ä‚¢‚é“à—e‚É‚µ‚½‚ª‚Á‚āAƒ\[ƒgƒJƒ‰ƒ€‚̈ʒ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-// *************************************************************************
30723046 //! Œ»Ý‚̃Jƒ‰ƒ€‚ðƒ\[ƒg‚·‚é
30733047 // *************************************************************************
30743048 procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject);
30753049 var
30763050 i : Integer;
30773051 so : boolean;
3052+ si : Integer;
30783053 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;
3054+ for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3055+ if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3056+ (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3057+ GikoForm.SortOrder := not GikoForm.SortOrder;
3058+ so := GikoForm.SortOrder;
3059+ si := GikoForm.SortIndex;
3060+ TListViewUtils.ListViewSort(nil, GikoForm.ListView,
3061+ GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked,
3062+ so, si );
3063+ GikoForm.SortIndex := si;
3064+ GikoForm.SortOrder := so;
3065+ break;
30893066 end;
30903067 end;
30913068 end;
@@ -3095,6 +3072,8 @@ end;
30953072 procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject);
30963073 var
30973074 i, id : Integer;
3075+ so : boolean;
3076+ si : Integer;
30983077 begin
30993078 for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
31003079 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
@@ -3102,9 +3081,14 @@ begin
31023081 id := i + 1;
31033082 if id > GikoForm.ListView.Columns.Count - 1 then
31043083 id := 0;
3084+ GikoForm.SortOrder := id = 0;
3085+ so := GikoForm.SortOrder;
3086+ si := GikoForm.SortIndex;
31053087 TListViewUtils.ListViewSort( nil, GikoForm.ListView,
31063088 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3107- id = 0);
3089+ so, si );
3090+ GikoForm.SortIndex := si;
3091+ GikoForm.SortOrder := so;
31083092 break;
31093093 end;
31103094 end;
@@ -3115,6 +3099,8 @@ end;
31153099 procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject);
31163100 var
31173101 i, id : Integer;
3102+ so : boolean;
3103+ si : Integer;
31183104 begin
31193105 for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
31203106 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
@@ -3122,9 +3108,14 @@ begin
31223108 id := i - 1;
31233109 if id < 0 then
31243110 id := GikoForm.ListView.Columns.Count - 1;
3111+ GikoForm.SortOrder := id = 0;
3112+ so := GikoForm.SortOrder;
3113+ si := GikoForm.SortIndex;
31253114 TListViewUtils.ListViewSort( nil, GikoForm.ListView,
31263115 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3127- id = 0);
3116+ so, si );
3117+ GikoForm.SortIndex := si;
3118+ GikoForm.SortOrder := so;
31283119 break;
31293120 end;
31303121 end;
@@ -3700,88 +3691,5 @@ begin
37003691 AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;
37013692 end;
37023693 ////////////////////////////////•ÒW‚Ü‚Å‚¨‚µ‚Ü‚¢/////////////////////
3703-//! ƒXƒŒƒbƒh‚̃TƒCƒY‚ðÄŒvŽZ‚·‚é
3704-procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject);
3705-const
3706- RECALC_MES : String = 'ƒXƒŒƒbƒh‚Ì—e—Ê‚ðƒtƒ@ƒCƒ‹‚©‚çÄŒvŽZ‚µ‚Ü‚·B'#13#10 +
3707- '‚±‚Ì‘€ì’†AƒMƒRƒiƒr‚Ì‘¼‚Ì‘€ì‚ð‚·‚é‚ƃf[ƒ^‚ª”j‰ó‚³‚ê‚é‹°‚ꂪ‚ ‚è‚Ü‚·B' +
3708- '‚Ü‚½‚±‚Ì‘€ì‚́A”ñí‚ÉŽžŠÔ‚ª‚©‚©‚éê‡‚ª‚ ‚è‚Ü‚·‚ªA‚æ‚낵‚¢‚Å‚·‚©H';
3709- RECALC_TITLE : String = 'ƒXƒŒƒbƒh‚Ì—e—Ê‚ðƒtƒ@ƒCƒ‹‚©‚çÄŒvŽZ';
3710- LIMIT_SIZE = 1024;
3711-var
3712- limitSize : Integer;
3713- limitStr : String;
3714-begin
3715-{ ‚Ü‚¸AŽžŠÔ‚ª‚©‚©‚邱‚Æ‚ðŒx‚·‚郁ƒbƒZ[ƒW‚ðo—Í
3716- ÄŒvŽZ‚·‚éƒXƒŒƒbƒh‚̃TƒCƒY‚Ì臒liƒfƒtƒHƒ‹ƒg1024B)‚ðŠm”F
3717- ƒvƒ‰ƒOƒCƒ“‚ð—˜—p‚µ‚È‚¢‚Æ‚±‚ë‚Å‘S‚ẴƒO—L‚èƒXƒŒƒbƒh‚ðŒŸõ
3718- 臒lˆÈ‰º‚̃TƒCƒY‚̏ꍇADAT‚̃tƒ@ƒCƒ‹ƒTƒCƒY‚Æ”äŠrA‚¸‚ê‚Ä‚¢‚ê‚΁A
3719- DAT‚̃tƒ@ƒCƒ‹ƒTƒCƒY‚ōXV‚·‚é
3720-}
3721- if MsgBox(GikoForm.Handle, RECALC_MES,
3722- RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin
3723- //臒l‚ÌŠm”F
3724- limitSize := LIMIT_SIZE;
3725- limitStr := IntToStr(limitSize);
3726- if InputQuery('臒l“ü—Í', 'Žw’肵‚½”’l BˆÈ‰º‚Ì—e—ʂ̃XƒŒƒbƒh‚̂ݍČvŽZ‚µ‚Ü‚·', 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‚æ‚è‚àƒTƒCƒY‚̏¬‚³‚¢ƒXƒŒƒbƒh‚Ì—e—Ê‚ðDATƒtƒ@ƒCƒ‹‚©‚çŒvŽZ
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- // ÄŒvŽZƒXƒ^[ƒg@ƒvƒ‰ƒOƒCƒ“‚ð—˜—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('ŒvŽZI—¹‚µ‚Ü‚µ‚½B');
3784-end;
3785-
37863694 end.
37873695
--- a/GikoMessage.pas
+++ /dev/null
@@ -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 = ( 'ƒƒOƒAƒEƒg‚µ‚Ü‚µ‚½',
25- 'ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
26- '‹­§ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
27- '[ƒXƒŒˆê——Žæ“¾Š®—¹]',
28- '(–¼Ì•s–¾j',
29- '[ƒXƒŒŽæ“¾Š®—¹]',
30- '[ƒXƒŒ·•ªŽæ“¾Š®—¹]',
31- '[–¢XV]',
32- '[’†’f]',
33- '[ƒGƒ‰[]',
34- '[ƒŒƒX‘—MI—¹]',
35- '[VƒXƒŒ‘—MI—¹]',
36- '[ƒŒƒX‘—MŽ¸”s]',
37- '[VƒXƒŒ‘—MŽ¸”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’肳‚ꂽƒƒbƒZ[ƒ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- //Œ©‚‚©‚ç‚È‚¢‚̂ŁAƒfƒtƒHƒ‹ƒg‚Å•Ô‚·
62- Result := DEF_MESSAGES[Ord(MesType)];
63- end;
64- end;
65-end;
66-
67-end.
68-
\ No newline at end of file
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -15,7 +15,7 @@ uses
1515 {HttpApp,} URLMon, IdGlobal, IdURI, {Masks,}
1616 Setting, BoardGroup, gzip, Dolib, bmRegExp, AbonUnit,
1717 ExternalBoardManager, ExternalBoardPlugInMain,
18- GikoBayesian, GikoMessage;
18+ GikoBayesian;
1919
2020 type
2121 TVerResourceKey = (
@@ -102,6 +102,11 @@ type
102102 FNoParam: Boolean; //!< ƒŒƒX”Ôƒpƒ‰ƒ[ƒ^‚È‚µ
103103 end;
104104
105+ //! MessageList
106+ TGikoMessageListType = (gmLogout, gmLogin, gmForceLogin, gmSureItiran,
107+ gmUnKnown, gmSureSyutoku, gmSureDiff, gmNotMod, gmAbort, gmError,
108+ gmNewRes, gmNewSure, gmResError, gmSureError);
109+
105110 TGikoSys = class(TObject)
106111 private
107112 { Private éŒ¾ }
@@ -111,7 +116,8 @@ type
111116 FResRange : Longint;
112117 FBayesian : TGikoBayesian; //!< ƒxƒCƒWƒAƒ“ƒtƒBƒ‹ƒ^
113118 FVersion : String; //!< ƒtƒ@ƒCƒ‹ƒo[ƒWƒ‡ƒ“
114- FGikoMessage: TGikoMessage;
119+// FExitWrite: TStringList;
120+// function StrToFloatDef(s: string; Default: Double): Double;
115121 public
116122 { Public éŒ¾ }
117123 FAbon : TAbon;
@@ -241,10 +247,7 @@ type
241247 //! IE‚̃o[ƒWƒ‡ƒ“î•ñ‚̎擾
242248 function GetIEVersion: string;
243249 function SetUserOptionalStyle(): string;
244- //! ƒMƒRƒiƒr‚̃ƒbƒZ[ƒW‚ðÝ’è‚·‚é
245- procedure SetGikoMessage;
246- //! ƒMƒRƒiƒr‚̃ƒbƒZ[ƒW‚ðŽæ“¾‚·‚é
247- function GetGikoMessage(MesType: TGikoMessageListType): String;
250+
248251 end;
249252
250253 var
@@ -321,8 +324,6 @@ begin
321324 FVersion := Trim(GetVersionInfo(vrFileVersion));
322325 FBayesian := TGikoBayesian.Create;
323326 //FBoardURLList := TStringList.Create;
324- //ƒƒbƒZ[ƒW‚̍쐬
325- FGikoMessage := TGikoMessage.Create;
326327 end;
327328
328329 // *************************************************************************
@@ -343,7 +344,6 @@ begin
343344 FDolib.Free;
344345 FAbon.Free;
345346 FSelectResFilter.Free;
346- FGikoMessage.Free;
347347 //FBoardURLList.Free;
348348 //ƒeƒ“ƒ|ƒ‰ƒŠHTML‚ðíœ
349349 FileList := TStringList.Create;
@@ -720,7 +720,7 @@ begin
720720 ThreadItem.RoundDate := ZERO_DATE;
721721 ThreadItem.LastModified := ZERO_DATE;
722722 ThreadItem.Kokomade := -1;
723- ThreadItem.NewReceive := 0;
723+ ThreadItem.NewReceive := ThreadItem.Count;
724724 ThreadItem.ParentBoard := Board;
725725 ThreadItem.IsLogFile := True;
726726 ThreadItem.Round := False;
@@ -3249,33 +3249,6 @@ begin
32493249 Result := Setting.GetEditorKeyFileName;
32503250 end;
32513251
3252-//! ƒMƒRƒiƒr‚̃ƒbƒZ[ƒ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-//! ƒMƒRƒiƒr‚̃ƒbƒZ[ƒ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;
32793252
32803253 initialization
32813254 GikoSys := TGikoSys.Create;
--- a/HTMLCreate.pas
+++ b/HTMLCreate.pas
@@ -506,18 +506,17 @@ function THTMLCreate.checkComma(
506506 var
507507 bType : TMbcsByteType;
508508 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;
509+ bType := ByteType(s, j);
510+ if ((bType = mbSingleByte) and (s[j] = ',') or
511+ ((bType = mbLeadByte) and (ZenToHan(Copy(s, j ,2)) = ','))) then begin
512+ Result := true;
513+ if (bType = mbSingleByte) then
514+ Inc(j)
515+ else
516+ Inc(j, 2);
517+ No := '';
518+ end else begin
519+ Result := false;
521520 end;
522521 end;
523522 function THTMLCreate.addResAnchor(
--- a/ItemDownload.pas
+++ b/ItemDownload.pas
@@ -53,7 +53,7 @@ type
5353 function ParseCgiStatus(Content: string): TCgiStatus;
5454 function CgiDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime): Boolean;
5555 function DatDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime; RangeStart: Integer; AdjustLen: Integer): Boolean;
56- procedure DeleteStatusLine(Item: TDownloadItem);
56+ function DeleteStatusLine(Content: string): string;
5757 procedure InitHttpClient(client: TIdHttp);
5858 procedure ClearHttpClient(client: TIdHttp);
5959 protected
@@ -532,7 +532,8 @@ begin
532532 Writeln('CGIStatus: OK');
533533 {$ENDIF}
534534 Item.ResponseCode := 200;
535- DeleteStatusLine(Item);
535+ Item.Content := DeleteStatusLine(Item.Content);
536+ Item.ContentLength := CgiStatus.FSize;
536537 end;
537538 gcsINCR: begin
538539 //¡‚Í‚ ‚肦‚È‚¢
@@ -540,7 +541,8 @@ begin
540541 Writeln('CGIStatus: 206');
541542 {$ENDIF}
542543 Item.ResponseCode := 206;
543- DeleteStatusLine(Item);
544+ Item.Content := DeleteStatusLine(Item.Content);
545+ Item.ContentLength := CgiStatus.FSize;
544546 end;
545547 gcsERR: begin
546548 {$IFDEF DEBUG}
@@ -889,20 +891,17 @@ begin
889891 end;
890892 end;
891893
892-//‚Ps–Ú‚ðÁ‚µ‚āAƒRƒ“ƒeƒ“ƒcƒTƒCƒY‚ðÝ’è‚·‚é
893-procedure TDownloadThread.DeleteStatusLine(Item: TDownloadItem);
894+//Žè”²‚«‚ȏˆ—‚Å1s–Ú‚ðÁ‚·
895+function TDownloadThread.DeleteStatusLine(Content: string): string;
894896 var
895897 SList: TStringList;
896898 begin
897899 SList := TStringList.Create;
898900 try
899- SList.Text := Item.Content;
900- //1s–Ú‚ðíœ
901+ SList.Text := Content;
901902 if SList.Count > 1 then
902903 SList.Delete(0);
903- Item.Content := SList.Text;
904- //‰üsƒR[ƒh‚ðCRLF -> LF‚ƍl‚¦‚āAs”•ª‚¾‚¯ƒ}ƒCƒiƒX
905- Item.ContentLength := Length(SList.Text) - SList.Count;
904+ Result := SList.Text;
906905 finally
907906 SList.Free;
908907 end;
--- a/KuroutSetting.pas
+++ b/KuroutSetting.pas
@@ -136,7 +136,7 @@ begin
136136 GikoSys.Setting.TimeAdjust := PutPostTimeRadioButton.Checked;
137137 //2chŒ¾ŒêƒTƒ|[ƒg
138138 GikoSys.Setting.GengoSupport := GengoSupport.Checked;
139- GikoSys.SetGikoMessage;
139+ GikoSys.Setting.SetMessages;
140140 //ƒ[ƒJƒ‹EƒŠƒ‚[ƒg̼±ÅŒx
141141 GikoSys.Setting.LocalTrapAtt := LocalTrapAtt.Checked;
142142 GikoSys.Setting.RemoteTrapAtt := RemoteTrapAtt.Checked;
--- a/ListViewUtils.pas
+++ b/ListViewUtils.pas
@@ -10,24 +10,20 @@ type
1010 TListViewUtils = class(TObject)
1111 private
1212 {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);
1813 public
1914 {Public éŒ¾}
2015 class procedure SetBoardTreeNode(inBBS : TBBS; treeView: TTreeView);
2116 class function SetCategoryListItem(ABBS2ch: TBBS; ListView: TListView;
22- NumberVisible: Boolean): Integer;
17+ NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
2318 class procedure ListViewSort(Sender: TObject; ListView: TListView; Column: TListColumn;
24- NumberVisible: Boolean; vSortOrder: Boolean);
19+ NumberVisible: Boolean; var vSortOrder: Boolean; var vSortIndex: Integer);
2520 class function ActiveListTrueColumn( column : TListColumn ) : TListColumn;
2621 class function SetBoardListItem(Category: TCategory; ListView: TListView;
27- NumberVisible: Boolean): Integer;
22+ NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
2823 class function SetThreadListItem(Board: TBoard; ListView: TListView;
29- NumberVisible: Boolean): Integer;
24+ NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
3025 class procedure ListViewData(Sender: TObject; Item: TListItem);
26+
3127 end;
3228
3329
@@ -141,7 +137,9 @@ end;
141137 class function TListViewUtils.SetCategoryListItem(
142138 ABBS2ch: TBBS;
143139 ListView: TListView;
144- NumberVisible: Boolean
140+ NumberVisible: Boolean;
141+ var vSortIndex: Integer;
142+ var vSortOrder: Boolean
145143 ): Integer;
146144 var
147145 TitleColumn : TListColumn;
@@ -181,13 +179,12 @@ begin
181179 GikoForm.FolderImage.Picture := nil;
182180 GikoForm.ItemIcon16.GetBitmap(1, GikoForm.FolderImage.Picture.Bitmap);
183181
182+ vSortIndex := GikoSys.Setting.BBSSortIndex;
183+ vSortOrder := GikoSys.Setting.BBSSortOrder;
184184 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 );
191188 end;
192189
193190 Result := ABBS2ch.Count;
@@ -201,10 +198,11 @@ class procedure TListViewUtils.ListViewSort(
201198 ListView: TListView;
202199 Column: TListColumn;
203200 NumberVisible: Boolean;
204- vSortOrder: Boolean
201+ var vSortOrder: Boolean;
202+ var vSortIndex: Integer
205203 );
206204 var
207- i, idx : Integer;
205+ i, id, idx : Integer;
208206 orderList : TList;
209207 wkBBS: TBBS;
210208 wkCategory: TCategory;
@@ -215,41 +213,53 @@ begin
215213 for i := 0 to ListView.Columns.Count - 1 do begin
216214 ListView.Column[i].ImageIndex := -1;
217215 end;
218- if vSortOrder then
216+
217+ if SortOrder then
219218 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1
220219 else
221220 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2;
222221
223-
224222 Sort.SortNoFlag := NumberVisible;
225223
224+ //if TObject(TreeView.Selected.Data) is TBBS then begin
226225 if TObject( GikoForm.ActiveList ) is TBBS then begin
226+ //wkBBS := TBBS(TreeView.Selected.Data);
227227 wkBBS := TBBS( GikoForm.ActiveList );
228228 orderList := GikoSys.Setting.BBSColumnOrder;
229+ id := Integer( orderList[ idx ] );
229230 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;
233234 wkBBS.Sort(Sort.CategorySortProc);
235+ //end else if TObject(TreeView.Selected.Data) is TCategory then begin
234236 end else if TObject( GikoForm.ActiveList ) is TCategory then begin
237+ //wkCategory := TCategory(TreeView.Selected.Data);
235238 wkCategory := TCategory( GikoForm.ActiveList );
236239 orderList := GikoSys.Setting.CategoryColumnOrder;
240+ id := Integer( orderList[ idx ] );
237241 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;
241245 wkCategory.CustomSort(BoardSortProc);
246+ //end else if TObject(TreeView.Selected.Data) is TBoard then begin
242247 end else if TObject( GikoForm.ActiveList ) is TBoard then begin
248+ //wkBoard := TBoard(TreeView.Selected.Data);
243249 wkBoard := TBoard( GikoForm.ActiveList );
244250 orderList := GikoSys.Setting.BoardColumnOrder;
251+ id := Integer( orderList[ idx ] );
245252 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;
249256 wkBoard.CustomSort(ThreadItemSortProc);
257+ end else begin
258+ id := 0;
250259 end;
251260
252261 ListView.Refresh;
262+ vSortIndex := id;
253263 end;
254264
255265 {!
@@ -259,16 +269,49 @@ Delphi 6 Personal
259269 ³‚µ‚¢ƒJƒ‰ƒ€‚ª“n‚³‚ê‚È‚¢‚½‚߁A³‚µ‚¢ƒJƒ‰ƒ€‚É•ÏŠ·‚µ‚Ü‚·B
260270 }
261271 class function TListViewUtils.ActiveListTrueColumn( column : TListColumn ) : TListColumn;
272+{*
273+var
274+ i, idx : Integer;
275+ orderList : TList;
276+*}
262277 begin
278+
263279 // ³‚µ‚­•ÏŠ·‚·‚é•û–@‚ª•ª‚©‚ç‚È‚¢‚Ì‚Å•Û—¯
264280 Result := column;
265281 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+
266307 end;
267308 //ListView‚ÉBoardItem‚ðÝ’è‚·‚é
268309 class function TListViewUtils.SetBoardListItem(
269310 Category: TCategory;
270311 ListView: TListView;
271- NumberVisible: Boolean
312+ NumberVisible: Boolean;
313+ var vSortIndex: Integer;
314+ var vSortOrder: Boolean
272315 ): Integer;
273316 var
274317 TitleColumn : TListColumn;
@@ -323,13 +366,12 @@ begin
323366 GikoForm.FolderImage.Picture := nil;
324367 GikoForm.ItemIcon16.GetBitmap(3, GikoForm.FolderImage.Picture.Bitmap);
325368
369+ vSortIndex := GikoSys.Setting.CategorySortIndex;
370+ vSortOrder := GikoSys.Setting.CategorySortOrder;
326371 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 );
333375 end;
334376
335377 Result := Category.Count;
@@ -341,7 +383,9 @@ end;
341383 class function TListViewUtils.SetThreadListItem(
342384 Board: TBoard;
343385 ListView: TListView;
344- NumberVisible: Boolean
386+ NumberVisible: Boolean;
387+ var vSortIndex: Integer;
388+ var vSortOrder: Boolean
345389 ): Integer;
346390 var
347391 TitleColumn : TListColumn;
@@ -416,13 +460,12 @@ begin
416460 GikoForm.FolderImage.Picture := nil;
417461 GikoForm.ItemIcon16.GetBitmap(5, GikoForm.FolderImage.Picture.Bitmap);
418462
463+ vSortIndex := GikoSys.Setting.BoardSortIndex;
464+ vSortOrder := GikoSys.Setting.BoardSortOrder;
419465 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 );
426469 end;
427470
428471 Result := Board.Count;
@@ -433,268 +476,285 @@ end;
433476
434477 class procedure TListViewUtils.ListViewData(Sender: TObject; Item: TListItem);
435478 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;
437489 ListView : TListView;
438490 begin
439491 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;
449495 end;
450-end;
451-//! ƒŠƒXƒgƒrƒ…[‚̃AƒCƒeƒ€‚ð•`‰æ‚·‚éiƒJƒeƒSƒŠ[—pj
452-class procedure TListViewUtils.DrawCategoryItem(
453- BBS: TBBS; Item: TListItem; ListView: TListView
454-);
455-var
456- Category : TCategory;
457-begin
458496
459- //===== ƒJƒeƒSƒŠƒŠƒXƒg =====
460- ListView.StateImages := nil;
497+ ActivListObj := GikoForm.ActiveList;
498+ if ActivListObj is TBBS then begin
499+ //===== ƒJƒeƒSƒŠƒŠƒXƒg =====
500+ BBS := TBBS(ActivListObj);
461501
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;
465503
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;
467511
468- if (Category = nil) then Exit;
512+ //if not (BBS.Items[Item.index] is TCategory) then Exit;
513+ Category := TCategory(BBS.Items[Item.index]);
469514
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;
474516
475- Item.ImageIndex := ITEM_ICON_CATEGORY1;
476- Item.Data := Category;
477-end;
478-//! ƒŠƒXƒgƒrƒ…[‚̃AƒCƒeƒ€‚ð•`‰æ‚·‚éi”—pj
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- //===== ”ƒŠƒXƒg =====
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;
488521
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;
492524
493- Board := TBoard(Category.Items[Item.Index]);
525+ end else if ActivListObj is TCategory then begin
494526
495- if (Board = nil) then Exit;
527+ //===== ”ƒŠƒXƒg =====
528+ Category := TCategory(ActivListObj);
496529
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;
501531
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;
508539
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]);
524542
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;
533544
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;
535550
536-end;
537-//! ƒŠƒXƒgƒrƒ…[‚̃AƒCƒeƒ€‚ð•`‰æ‚·‚éiƒXƒŒƒbƒh—pj
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- //===== ƒXƒŒƒŠƒXƒg =====
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;
552557
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;
553583
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;
562585
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‚·‚ׂ«ƒuƒƒbƒN/////////////////////////////////////////////////////
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, '&lt;', '<' );
580- RepStr := CustomStringReplace(RepStr, '&gt;', '>' );
581- RepStr := CustomStringReplace(RepStr, '&quot;', '"' );
582- RepStr := CustomStringReplace(RepStr, '&amp;', '&' );
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
590587
591- if GikoDM.ListNumberVisibleAction.Checked then
592- Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
593- else
594- Item.Caption := RepStr;
588+ //===== ƒXƒŒƒŠƒXƒg =====
589+ Board := TBoard(ActivListObj);
595590
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;
602595
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;
608596
609- Item.Data := ThreadItem;
610-end;
611-//! ƒƒO—L‚èƒXƒŒƒbƒh‚ð•`‰æ‚·‚é
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;
634602 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;
641611 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;
658613 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;
661618
662- if Thread.NewArrival then
663- Item.ImageIndex := ITEM_ICON_THREADNEW1
664- else
665- Item.ImageIndex := ITEM_ICON_THREADLOG1;
666-end;
667-//! ƒƒO‚È‚µƒXƒŒƒbƒh‚ð•`‰æ‚·‚é
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‚·‚ׂ«ƒuƒƒbƒN/////////////////////////////////////////////////////
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, '&lt;', '<' );
633+ RepStr := CustomStringReplace(RepStr, '&gt;', '>' );
634+ RepStr := CustomStringReplace(RepStr, '&quot;', '"' );
635+ RepStr := CustomStringReplace(RepStr, '&amp;', '&' );
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
689646 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;
691753 end;
692- Inc( idx );
754+
755+ Item.Data := ThreadItem;
756+
693757 end;
694- if Thread.NewArrival then
695- Item.ImageIndex := ITEM_ICON_THREADNEW1
696- else
697- Item.ImageIndex := ITEM_ICON_THREAD1;
698758 end;
699759
700760 end.
--- a/NewBoard.pas
+++ b/NewBoard.pas
@@ -36,9 +36,8 @@ type
3636 { Private éŒ¾ }
3737 IgnoreLists : TStringList;
3838 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);
4241 procedure SetIgnoreCategory(b: boolean);
4342 procedure EditIgnoreList(Sender: TObject);
4443 procedure UpdateIgnoreList(Sender: TObject);
@@ -59,24 +58,15 @@ uses Giko, IdHeaderList, MojuUtils, GikoDataModule;
5958 procedure TNewBoardDialog.UpdateButtonClick(Sender: TObject);
6059 var
6160 Item: TNewBoardItem;
62- URL : String;
63- protocol, host, path, document, port, bookmark: String;
6461 begin
6562 try
66- MessageMemo.Clear;
6763 GikoSys.Setting.BoardURLSelected := BoardURLComboBox.ItemIndex + 1;
6864 FAbort := False;
6965 UpdateButton.Enabled := False;
7066 StopButton.Enabled := True;
7167 CloseButton.Enabled := False;
7268 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;
8070 StopButton.Enabled := False;
8171 if FAbort then
8272 Exit;
@@ -84,9 +74,8 @@ begin
8474 GikoDM.TabsSaveAction.Tag := 1;
8575 GikoDM.TabsOpenAction.Tag := 1;
8676 GikoDM.TabsSaveAction.Execute;
87- if (UpdateURL(Item.FContent)) then begin
88- GikoForm.ReloadBBS;
89- end;
77+ UpdateURL(Item.FContent);
78+ GikoForm.ReloadBBS;
9079 GikoDM.TabsSaveAction.Tag := 0;
9180 GikoDM.TabsOpenAction.Tag := 0;
9281 end else
@@ -110,12 +99,14 @@ begin
11099 Close;
111100 end;
112101
113-function TNewBoardDialog.BoardDownload(const URL: String): TNewBoardItem;
102+function TNewBoardDialog.BoardDownload: TNewBoardItem;
114103 var
104+ URL: string;
115105 Stream: TMemoryStream;
116106 s: string;
117107 i: Integer;
118108 begin
109+ MessageMemo.Clear;
119110 Indy.Request.Clear;
120111 Indy.RecvBufferSize := Gikosys.Setting.RecvBufferSize;
121112 Indy.ProxyParams.BasicAuthentication := False;
@@ -141,7 +132,7 @@ begin
141132 Indy.ProxyParams.ProxyPassword := '';
142133 end;
143134 //URL := GikoSys.Setting.BoardURL2ch;
144- //URL := BoardURLComboBox.Text;
135+ URL := BoardURLComboBox.Text;
145136 Indy.Request.UserAgent := GikoSys.GetUserAgent;
146137 Indy.Request.Referer := '';
147138 Indy.Request.AcceptEncoding := 'gzip';
@@ -196,9 +187,10 @@ begin
196187 end;
197188 end;
198189
199-function TNewBoardDialog.UpdateURL(s: string): boolean;
190+procedure TNewBoardDialog.UpdateURL(s: string);
200191 var
201192 i: Integer;
193+// j: Integer;
202194 idx: Integer;
203195 idx1: Integer;
204196 idx2: Integer;
@@ -334,7 +326,6 @@ begin
334326 oldURLs.Free;
335327 newURLs.Free;
336328 end;
337- Result := Change;
338329 end;
339330
340331 procedure TNewBoardDialog.FormCreate(Sender: TObject);
@@ -413,21 +404,5 @@ procedure TNewBoardDialog.FormClose(Sender: TObject;
413404 begin
414405 IgnoreLists.Free;
415406 end;
416-//! ƒ[ƒJƒ‹ƒtƒ@ƒCƒ‹‚ðƒ[ƒh‚·‚é
417-function TNewBoardDialog.BoardLoardFromFile(const FilePath: String): String;
418-var
419- html : TStringList;
420-begin
421- Result := '';
422- // ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚Ä‚¢‚é‚©ƒ`ƒFƒbƒN
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+
433408 end.
--- a/Option.dfm
+++ b/Option.dfm
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog
6161 Top = 4
6262 Width = 509
6363 Height = 389
64- ActivePage = TabSheet3
64+ ActivePage = CSSTabSheet
6565 MultiLine = True
66- TabIndex = 3
66+ TabIndex = 2
6767 TabOrder = 3
6868 OnChange = OptionTabChange
6969 object ConnectSheet: TTabSheet
@@ -687,7 +687,7 @@ object OptionDialog: TOptionDialog
687687 Left = 12
688688 Top = 52
689689 Width = 477
690- Height = 45
690+ Height = 64
691691 Caption = #12473#12524#20316#25104#26085#26178#34920#31034#35373#23450
692692 TabOrder = 1
693693 object CreationTimeLogsCheckBox: TCheckBox
@@ -699,8 +699,8 @@ object OptionDialog: TOptionDialog
699699 TabOrder = 0
700700 end
701701 object FutureThreadCheckBox: TCheckBox
702- Left = 204
703- Top = 16
702+ Left = 12
703+ Top = 40
704704 Width = 265
705705 Height = 17
706706 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
709709 end
710710 object GroupBox5: TGroupBox
711711 Left = 12
712- Top = 105
712+ Top = 121
713713 Width = 477
714714 Height = 86
715715 Caption = #12502#12521#12454#12470#12398#26368#22823#21270
@@ -737,35 +737,35 @@ object OptionDialog: TOptionDialog
737737 end
738738 object GroupBox17: TGroupBox
739739 Left = 12
740- Top = 196
740+ Top = 212
741741 Width = 477
742- Height = 45
742+ Height = 63
743743 Caption = #12502#12521#12454#12470#12479#12502#38750#34920#31034#26178#35373#23450
744744 TabOrder = 3
745745 object SelectIntervalLabel: TLabel
746- Left = 10
747- Top = 20
746+ Left = 13
747+ Top = 24
748748 Width = 199
749749 Height = 12
750750 Caption = #12459#12540#12477#12523#12461#12540#12391#12398#31227#21205#26178#12398#28961#21453#24540#26178#38291
751751 end
752752 object Label4: TLabel
753- Left = 271
754- Top = 20
753+ Left = 292
754+ Top = 24
755755 Width = 29
756756 Height = 12
757757 Caption = #12511#12522#31186
758758 end
759759 object Label6: TLabel
760- Left = 305
761- Top = 20
760+ Left = 14
761+ Top = 40
762762 Width = 164
763763 Height = 12
764764 Caption = #65288'55'#12511#12522#31186#20197#19978#12395#35373#23450#12375#12390#19979#12373#12356#65289
765765 end
766766 object SelectIntervalEdit: TEdit
767- Left = 214
768- Top = 16
767+ Left = 235
768+ Top = 20
769769 Width = 49
770770 Height = 20
771771 ImeMode = imClose
@@ -775,7 +775,7 @@ object OptionDialog: TOptionDialog
775775 end
776776 object GroupBox18: TGroupBox
777777 Left = 12
778- Top = 246
778+ Top = 278
779779 Width = 477
780780 Height = 43
781781 Caption = 'dat'#33853#12385#12473#12524#12477#12540#12488#38918
@@ -800,29 +800,6 @@ object OptionDialog: TOptionDialog
800800 #12473#12524#26368#32066#26356#26032#26085#26178#65288#38477#38918#65289)
801801 end
802802 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
826803 end
827804 object ThreadSheet: TTabSheet
828805 Caption = #12473#12524#12483#12489#65297
--- a/Option.pas
+++ b/Option.pas
@@ -202,9 +202,6 @@ type
202202 UnFocusedBoldCheckBox: TCheckBox;
203203 IgnoreKanaCheckBox: TCheckBox;
204204 UseKatjuTypeSkinCheckBox: TCheckBox;
205- GroupBox20: TGroupBox;
206- AutoSortCheckBox: TCheckBox;
207- Label24: TLabel;
208205 procedure FormCreate(Sender: TObject);
209206 procedure FormDestroy(Sender: TObject);
210207 procedure ApplyButtonClick(Sender: TObject);
@@ -356,7 +353,7 @@ begin
356353 FClose := False;
357354 Exit;
358355 end;
359- SetAbonpropertys;
356+ SetAbonpropertys;
360357 SaveSetting;
361358 SettingApply;
362359
@@ -824,8 +821,7 @@ begin
824821 else
825822 DatOchiSortCombo.ItemIndex := 0;
826823 end;
827- AutoSortCheckBox.Checked := GikoSys.Setting.AutoSortThreadList;
828-
824+
829825 //‚ ‚ځ`‚ñ
830826 RloCheckBox.Checked := GikoSys.Setting.AbonDeleterlo;
831827 ReplaceulCheckBox.Checked := GikoSys.Setting.AbonReplaceul;
@@ -1102,7 +1098,6 @@ begin
11021098 GikoSys.Setting.DatOchiSortIndex := Ord( gbcLastModified );{gbcLastModified}
11031099 end;
11041100 end;
1105- GikoSys.Setting.AutoSortThreadList := AutoSortCheckBox.Checked;
11061101
11071102 GikoSys.Setting.WriteSystemSettingFile;
11081103 GikoSys.Setting.WriteBoardURLSettingFile;
--- a/Setting.pas
+++ b/Setting.pas
@@ -1,6 +1,5 @@
11 unit Setting;
22
3-
43 interface
54
65 uses
@@ -12,7 +11,33 @@ const
1211 LIST_COOLBAND_COUNT = 2; //”ÂCoolBand‚̐”
1312 BROWSER_COOLBAND_COUNT = 3; //ƒuƒ‰ƒEƒUCoolBand‚̐”
1413
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+
1641 type
1742 TGikoTabPosition = (gtpTop, gtpBottom); // ƒ^ƒuˆÊ’u
1843 TGikoTabAppend = (gtaFirst, gtpLast); // ƒ^ƒu’ljÁˆÊ’u
@@ -399,6 +424,9 @@ type
399424 //! ƒ}ƒEƒXƒWƒFƒXƒ`ƒƒ[‚ðŽg—p‚·‚é‚©‚Ç‚¤‚©
400425 FGestureEnabled : Boolean;
401426
427+ //2chŒ¾ŒêÝ’è
428+ //F2chLanguage : TStringList;
429+
402430 //ƒtƒVƒAƒiƒgƒ‰ƒbƒvÝ’è
403431 FLocalTrapAtt : Boolean;
404432 FRemoteTrapAtt : Boolean;
@@ -410,6 +438,8 @@ type
410438 FMute: Boolean;
411439 //ƒXƒŒiž‚Ý‚Å–¢Šm’蕶Žš‚à—LŒø‚É‚·‚é‚©
412440 FUseUndecided: Boolean;
441+ //MessageList‚ɏo—Í‚³‚ê‚郁ƒbƒZ[ƒW
442+ FMessageList : array[0..13] of string;
413443
414444 //Be2ch
415445 //”FØ—pƒ†[ƒUIDEƒpƒXƒ[ƒh
@@ -420,8 +450,6 @@ type
420450 //—š—ð‚̍őå•Û‘¶Œ”
421451 FMaxRecordCount : Integer;
422452
423- //ƒXƒŒƒbƒhˆê——‚ðƒ_ƒEƒ“ƒ[ƒhŒã‚Ƀ\[ƒg‚·‚é‚©
424- FAutoSortThreadList : Boolean;
425453 function GetMainCoolSet(Index: Integer): TCoolSet;
426454 function GetBoardCoolSet(Index: Integer): TCoolSet;
427455 function GetBrowserCoolSet(Index: Integer): TCoolSet;
@@ -487,7 +515,9 @@ type
487515 function GetIgnoreFileName: string;
488516 function GetGestureFileName : string;
489517 function GetSpamFilterFileName : string;
490- function GetLanguageFileName: string;
518+ function GetLanguageFileName: string;
519+ procedure SetMessages;
520+ function GetMessage(AType :Integer): string;
491521 function GetMainKeyFileName: String;
492522 function GetEditorKeyFileName: String;
493523 procedure WriteLogFolder(AVal : String);
@@ -737,42 +767,8 @@ type
737767 property BeAutoLogin: Boolean read FBeAutoLogin write FBeAutoLogin;
738768 property BeLogin: Boolean read FBeLogin write FBeLogin;
739769 property MaxRecordCount : Integer read FMaxRecordCount write FMaxRecordCount;
740- //! ƒXƒŒƒbƒhˆê——ƒ_ƒEƒ“ƒ[ƒhŒã‚ɃXƒŒƒbƒh–¼‚ŏ¸‡ƒ\[ƒg‚·‚é‚©
741- property AutoSortThreadList : Boolean read FAutoSortThreadList write FAutoSortThreadList;
742-end;
743770
744-
745-const
746-// MAIN_COOLBAND_COUNT = 4; //ƒƒCƒ“CoolBand‚̐”
747-// LIST_COOLBAND_COUNT = 2; //”ÂCoolBand‚̐”
748-// BROWSER_COOLBAND_COUNT = 3; //ƒuƒ‰ƒEƒUCoolBand‚̐”
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';
771+end;
776772
777773
778774
@@ -798,8 +794,25 @@ const
798794 DEFAULT_TAB_FONT_NAME: string = '‚l‚r ‚oƒSƒVƒbƒN';
799795 DEFAULT_TAB_FONT_SIZE: Integer = 9;
800796 DEFAULT_2CH_BOARD_URL1: string = 'http://menu.2ch.net/bbsmenu.html';
797+ //OCN‚ðíœ‚µ‚Ü‚µ‚½
798+ //DEFAULT_2CH_BOARD_URL2: string = 'http://menu.2ch.net/bbsmenu.html';
799+ //2005/10/1‚Éiij4u‚Ì•û‚͏Á–Å //'http://www.2ch.net/newbbsmenu.html';
801800 GIKO_ENCRYPT_TEXT: string = 'gikoNaviEncryptText';
802801
802+ DEF_MESSAGES : array[0..13] of string = ( 'ƒƒOƒAƒEƒg‚µ‚Ü‚µ‚½',
803+ 'ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
804+ '‹­§ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
805+ '[ƒXƒŒˆê——Žæ“¾Š®—¹]',
806+ '(–¼Ì•s–¾j',
807+ '[ƒXƒŒŽæ“¾Š®—¹]',
808+ '[ƒXƒŒ·•ªŽæ“¾Š®—¹]',
809+ '[–¢XV]',
810+ '[’†’f]',
811+ '[ƒGƒ‰[]',
812+ '[ƒŒƒX‘—MI—¹]',
813+ '[VƒXƒŒ‘—MI—¹]',
814+ '[ƒŒƒX‘—MŽ¸”s]',
815+ '[VƒXƒŒ‘—MŽ¸”s]');
803816 var
804817 SOUND_NAME: array[0..4] of TSoundName = (
805818 (Name: 'New'; ViewName: 'Žæ“¾¬Œ÷'; FileName: ''),
@@ -1256,8 +1269,6 @@ begin
12561269 FCategorySortOrder := ini.ReadBool('ThreadList', 'CategorySortOrder', True);
12571270 FBoardSortIndex := ini.ReadInteger('ThreadList', 'BoardSortIndex', 0);
12581271 FBoardSortOrder := ini.ReadBool('ThreadList', 'BoardSortOrder', True);
1259- // DLŒã‚ÌŽ©“®ƒ\[ƒg
1260- FAutoSortThreadList := ini.ReadBool('ThreadList', 'AutoSort', True);
12611272 //Dat—Ž‚¿ƒXƒŒƒ\[ƒg‡
12621273 FDatOchiSortIndex := ini.ReadInteger('ThreadList', 'DatOchiSortIndex', -1);
12631274 FDatOchiSortOrder := ini.ReadBool('ThreadList', 'DatOchiSortOrder', False);
@@ -1592,8 +1603,6 @@ begin
15921603 ini.WriteBool('ThreadList', 'BoardSortOrder', FBoardSortOrder);
15931604 ini.WriteInteger('ThreadList', 'DatOchiSortIndex', FDatOchiSortIndex);
15941605 ini.WriteBool('ThreadList', 'DatOchiSortOrder', FDatOchiSortOrder);
1595- // DLŒã‚ÌŽ©“®ƒ\[ƒg
1596- ini.WriteBool('ThreadList', 'AutoSort', FAutoSortThreadList);
15971606
15981607 //‘‚«ž‚ÝŽžƒ}ƒVƒ“ŽžŽg—pÝ’è
15991608 ini.WriteBool('PostTime', 'UseMachineTime', FUseMachineTime);
@@ -2164,6 +2173,62 @@ function TSetting.GetLanguageFileName: string;
21642173 begin
21652174 Result := GetConfigDir + LANGUAGE_FILE_NAME;
21662175 end;
2176+//Messagelist‚ɏo—Í‚³‚ê‚郁ƒbƒZ[ƒW‚̐ݒè
2177+procedure TSetting.SetMessages;
2178+var
2179+ i :Integer;
2180+ ini : TMemIniFile;
2181+begin
2182+ //2chŒ¾Œê“ǂݏo‚µ
2183+ if (GengoSupport) and (FileExists(GetLanguageFileName)) then begin
2184+ ini := TmemIniFile.Create(GetLanguageFileName);
2185+ try
2186+ {
2187+ 'ƒƒOƒAƒEƒg‚µ‚Ü‚µ‚½',
2188+ 'ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
2189+ '‹­§ƒƒOƒCƒ“‚µ‚Ü‚µ‚½ - ',
2190+ '[ƒXƒŒˆê——Žæ“¾Š®—¹]',
2191+ '(–¼Ì•s–¾j',
2192+ '[ƒXƒŒŽæ“¾Š®—¹]',
2193+ '[ƒXƒŒ·•ªŽæ“¾Š®—¹]',
2194+ '[–¢XV]',
2195+ '[’†’f]',
2196+ '[ƒGƒ‰[]',
2197+ '[ƒŒƒX‘—MI—¹]',
2198+ '[VƒXƒŒ‘—MI—¹]',
2199+ '[ƒŒƒX‘—MŽ¸”s]',
2200+ '[VƒXƒŒ‘—MŽ¸”s]'); }
2201+ FMessageList[0] := ini.ReadString('Language', 'Logout', DEF_MESSAGES[0]);
2202+ FMessageList[1] := ini.ReadString('Language', 'Login', DEF_MESSAGES[1]);
2203+ FMessageList[2] := ini.ReadString('Language', 'ForceLogin', DEF_MESSAGES[2]);
2204+ FMessageList[3] := ini.ReadString('Language', 'ThreadList', DEF_MESSAGES[3]);
2205+ FMessageList[4] := ini.ReadString('Language', 'UnKnown', DEF_MESSAGES[4]);
2206+ FMessageList[5] := ini.ReadString('Language', 'ThreadGet', DEF_MESSAGES[5]);
2207+ FMessageList[6] := ini.ReadString('Language', 'ThreadDiffGet', DEF_MESSAGES[6]);
2208+ FMessageList[7] := ini.ReadString('Language', 'NotMod', DEF_MESSAGES[7]);
2209+ FMessageList[8] := ini.ReadString('Language', 'Abort', DEF_MESSAGES[8]);
2210+ FMessageList[9] := ini.ReadString('Language', 'Error', DEF_MESSAGES[9]);
2211+ FMessageList[10] := ini.ReadString('Language', 'NewReply', DEF_MESSAGES[10]);
2212+ FMessageList[11] := ini.ReadString('Language', 'NewThread', DEF_MESSAGES[11]);
2213+ FMessageList[12] := ini.ReadString('Language', 'ReplyError', DEF_MESSAGES[12]);
2214+ FMessageList[13] := ini.ReadString('Language', 'ThreadError', DEF_MESSAGES[13]);
2215+ finally
2216+ ini.Free;
2217+ end;
2218+
2219+ end else begin
2220+ for i := 0 to 13 do begin
2221+ FMessageList[i] := DEF_MESSAGES[i];
2222+ end;
2223+ end;
2224+end;
2225+function TSetting.GetMessage(AType :Integer): string;
2226+begin
2227+ if (AType >= 0) and (AType <= Length(FMessageList)) then
2228+ Result := FMessageList[AType]
2229+ else
2230+ Result := '';
2231+end;
21672232 procedure TSetting.WriteLogFolder(AVal : String);
21682233 begin
21692234 FLogFolder := AVal;
--- a/gikoNavi.dpr
+++ b/gikoNavi.dpr
@@ -70,8 +70,7 @@ uses
7070 HTMLCreate in 'HTMLCreate.pas',
7171 ListViewUtils in 'ListViewUtils.pas',
7272 GikoDataModule in 'GikoDataModule.pas' {GikoDM: TDataModule},
73- BrowserRecord in 'BrowserRecord.pas',
74- GikoMessage in 'GikoMessage.pas';
73+ BrowserRecord in 'BrowserRecord.pas';
7574
7675 {$R *.RES}
7776 {$R gikoResource.res}
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/language.ini
+++ /dev/null
@@ -1,15 +0,0 @@
1-[Language]
2-Logout=ƒƒOƒAƒEƒg‚µ‚Ü‚·‚½
3-Login=ƒƒOƒCƒ“‚µ‚Ü‚·‚½ -
4-ForceLogin=‹­§ƒƒOƒCƒ“‚µ‚Ü‚·‚½ -
5-SureItiran=[ƒXƒŒˆê——Žæ“¾‚µ‚Ü‚·‚½]
6-Unknown=i–¼Ì•s–¾‚łj
7-SureSyutoku=[ƒXƒŒŽæ“¾Š®—¹‚µ‚Ü‚·‚½]
8-SureDiff=[ƒXƒŒ·•ªŽæ“¾Š®—¹‚µ‚Ü‚·‚½]
9-NotMod=[–¢XV@‚à‚¿‚¯‚Â]
10-Abort=[’†’f¥¥¥Q|P|›]
11-Error=[ƒGƒ‰[”­¶·À„ª(߁Íß)„ª!!]
12-NewRes=[VƒŒƒX‘—MI—¹‚µ‚Ü‚·‚½(M¥ƒÖ¥L)]
13-NewSure=[VƒXƒŒ‘—MI—¹‚µ‚Ü‚·‚½(M¥ƒÖ¥L)]
14-ResError=[ƒŒƒX‘—MŽ¸”s(L¥ƒÖ¥`)]
15-SureError= [VƒXƒŒ‘—MŽ¸”s(L¥ƒÖ¥`)]
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -109,19 +109,6 @@ LICENSE
109109 ------------------------------
110110 200X/XX/XX
111111 Version ÊÞÀ51
112-@ƒXƒŒƒbƒh•`‰æˆ—‚̍œK‰»
113-@ƒŒƒX”ÔŽw’èURL‚ðƒNƒŠƒbƒN‚µ‚½‚Æ‚«‚Ì“®ì‚ŁAŽæ“¾Ï‚ÝŠO‚̃ŒƒX”Ԃ̏ꍇŽ©“®‚ÅDL‚·‚é‚悤‚ɕύX
114-@ƒŒƒXƒGƒfƒBƒ^‚©‚çSamba‚̐ݒè’l‚ð•ÏX‚Å‚«‚é‚悤‚ɕύX
115-@ƒLƒƒƒrƒlƒbƒgã‚ŃNƒŠƒbƒNEƒ_ƒuƒ‹ƒNƒŠƒbƒNƒCƒxƒ“ƒg‚ª‰ßè‚É”­¶‚·‚é•s‹ï‡‚̏C³
116-@ƒ}ƒEƒXƒWƒFƒXƒ`ƒƒ[—LŒøŽž‚ɃvƒŒƒrƒ…[ã‚ʼnEƒNƒŠƒbƒN‚Å‚«‚È‚¢•s‹ï‡‚̏C³
117-@ƒƒCƒ“ƒtƒH[ƒ€ã‚ł̃Vƒ‡[ƒgƒJƒbƒgƒL[‚Ì—Dæ‡ˆÊ‚ªƒMƒRƒiƒrŽ©‘Ì‚ªÅãˆÊ‚ɕύX
118-@ƒƒCƒ“ƒƒjƒ…[‚Ì‚¨‹C‚É“ü‚è‚Ì•`‰æ‚̍‚‘¬‰»
119-@ƒXƒe[ƒ^ƒXƒo[‚ÉŒ»Ý•\Ž¦‚µ‚Ä‚¢‚éƒXƒŒƒbƒh‚Ì—e—Ê‚ð•\Ž¦‚·‚é‚悤‚É‚µ‚½
120-@DAT—Ž‚¿‚µ‚½ƒXƒŒ‚Ì—e—Ê‚ðŽæ“¾‚Å‚«‚È‚¢•s‹ï‡‚̏C³
121-@”XV‚э[ƒJƒ‹ƒtƒ@ƒCƒ‹‚ðŽw’è‚Å‚«‚é‚悤‚ɕύX
122-@ƒXƒŒƒbƒhˆê——ƒ_ƒEƒ“ƒ[ƒhŒã‚̃\[ƒg‚ðƒIƒvƒVƒ‡ƒ“‰»
123-@NGƒ[ƒh‚É‘S”¼Šp‚Ђ炪‚ȃJƒ^ƒJƒi‚̈Ⴂ‚𓯈ꎋ‚·‚éƒIƒvƒVƒ‡ƒ“‚̒ljÁ
124-@ƒŒƒX‚̍iž‚Ý‚Å‘S”¼Šp‚Ђ炪‚ȃJƒ^ƒJƒ^‚̈Ⴂ‚𖳎‹‚·‚é‚悤‚ɕύX
125112
126113 2005/10/10
127114 Version ÊÞÀ50 ƒŠƒŠ[ƒX3