ギコナビ
Revision | 5c2b9e640c1427fd769849cbd5272e640eec802a (tree) |
---|---|
Time | 2005-12-28 02:12:59 |
Author | cvs2git <cvs2git> |
Commiter | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_51_0_626'.
@@ -106,7 +106,7 @@ object EditorForm: TEditorForm | ||
106 | 106 | Width = 149 |
107 | 107 | Height = 20 |
108 | 108 | DropDownCount = 20 |
109 | - ItemHeight = 12 | |
109 | + ItemHeight = 0 | |
110 | 110 | TabOrder = 0 |
111 | 111 | end |
112 | 112 | object MailComboBox: TComboBox |
@@ -115,7 +115,7 @@ object EditorForm: TEditorForm | ||
115 | 115 | Width = 149 |
116 | 116 | Height = 20 |
117 | 117 | DropDownCount = 20 |
118 | - ItemHeight = 12 | |
118 | + ItemHeight = 0 | |
119 | 119 | TabOrder = 1 |
120 | 120 | OnChange = MailComboBoxChange |
121 | 121 | end |
@@ -358,12 +358,6 @@ object EditorForm: TEditorForm | ||
358 | 358 | object N01: TMenuItem |
359 | 359 | Caption = '-' |
360 | 360 | end |
361 | - object Samba241: TMenuItem | |
362 | - Action = UpdateSambaAction | |
363 | - end | |
364 | - object N7: TMenuItem | |
365 | - Caption = '-' | |
366 | - end | |
367 | 361 | object CloseMenu: TMenuItem |
368 | 362 | Action = CloseAction |
369 | 363 | end |
@@ -1726,13 +1720,6 @@ object EditorForm: TEditorForm | ||
1726 | 1720 | OnExecute = BeLogInOutEActionExecute |
1727 | 1721 | OnUpdate = BeLogInOutEActionUpdate |
1728 | 1722 | end |
1729 | - object UpdateSambaAction: TAction | |
1730 | - Category = #12501#12449#12452#12523 | |
1731 | - Caption = 'Samba24'#12398#35373#23450#20516#12434#26356#26032#12377#12427 | |
1732 | - Hint = 'Samba24'#12398#35373#23450#20516#12434#26356#26032#12377#12427 | |
1733 | - OnExecute = UpdateSambaActionExecute | |
1734 | - OnUpdate = UpdateSambaActionUpdate | |
1735 | - end | |
1736 | 1723 | end |
1737 | 1724 | object IdLogDebug: TIdLogDebug |
1738 | 1725 | OnReceive = IdLogDebugReceive |
@@ -124,9 +124,6 @@ type | ||
124 | 124 | SaveNameMailAction: TAction; |
125 | 125 | ToolButton7: TToolButton; |
126 | 126 | BeLogInOutEAction: TAction; |
127 | - UpdateSambaAction: TAction; | |
128 | - Samba241: TMenuItem; | |
129 | - N7: TMenuItem; | |
130 | 127 | |
131 | 128 | procedure EditorPageChange(Sender: TObject); |
132 | 129 | procedure FormCreate(Sender: TObject); |
@@ -179,8 +176,6 @@ type | ||
179 | 176 | procedure SaveNameMailActionExecute(Sender: TObject); |
180 | 177 | procedure BeLogInOutEActionExecute(Sender: TObject); |
181 | 178 | procedure BeLogInOutEActionUpdate(Sender: TObject); |
182 | - procedure UpdateSambaActionUpdate(Sender: TObject); | |
183 | - procedure UpdateSambaActionExecute(Sender: TObject); | |
184 | 179 | private |
185 | 180 | FThreadItem: TThreadItem; |
186 | 181 | FBoard: TBoard; |
@@ -210,18 +205,24 @@ type | ||
210 | 205 | procedure SaveSendFile; |
211 | 206 | procedure SetContent(Content: string; ABrowser: TWebBrowser); |
212 | 207 | function GetResultType(ResponseText: string): TGikoResultType; |
208 | + | |
209 | + procedure ReadSambaTime(const AHost: string); overload; | |
210 | + procedure WriteSambaTime(const AHost: string; ATime: TDateTime); overload; | |
211 | + function ReadSettingTime(const AHost: string): Integer; overload; | |
212 | + function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean; overload; | |
213 | + procedure SetSamba24(AURL: string); overload; | |
214 | + | |
213 | 215 | //SambaÌÔðÇÝÞ |
214 | - procedure ReadSambaTime(const AHost: string); | |
216 | + procedure ReadSambaTime(); overload; | |
215 | 217 | //SambaÉÔð«Þ |
216 | - procedure WriteSambaTime(const AHost: string; ATime: TDateTime); | |
218 | + procedure WriteSambaTime(ATime: TDateTime); overload; | |
217 | 219 | //SambaÌÝèlðÇÝÞ |
218 | - function ReadSettingTime(const AHost: string): Integer; | |
220 | + function ReadSettingTime(): Integer ; overload; | |
219 | 221 | //SambaÉøÁ©©é©¸·é |
220 | - function CheckSambaTime(const AHost: string; ATime: TDateTime): Boolean; | |
222 | + function CheckSambaTime(ATime: TDateTime): Boolean; overload; | |
221 | 223 | //SambaÌÝèlð«Þ |
222 | - procedure SetSamba24(AURL: string); | |
223 | - //SambaÌÝèlðXV·é | |
224 | - procedure UpdateSamba(const AHost: String; value: Integer); | |
224 | + procedure SetSamba24(); overload; | |
225 | + | |
225 | 226 | /// øpÌæ¾ |
226 | 227 | function GetOEIndentChar : string; |
227 | 228 | /// {¶Ìæ¾ |
@@ -258,7 +259,7 @@ type | ||
258 | 259 | implementation |
259 | 260 | |
260 | 261 | uses |
261 | - Giko, ItemDownload, MojuUtils, IdGlobal, GikoMessage; | |
262 | + Giko, ItemDownload, MojuUtils, IdGlobal; | |
262 | 263 | const |
263 | 264 | CAPTION_NAME_NEW: string = 'MRir X§ÄGfB^'; |
264 | 265 | CAPTION_NAME_RES: string = 'MRir XGfB^'; |
@@ -967,7 +968,7 @@ begin | ||
967 | 968 | if MsgResult = IDNO then begin |
968 | 969 | Board.SPID := ''; |
969 | 970 | Board.PON := ''; |
970 | - FWork := false; | |
971 | + FWork := false; | |
971 | 972 | EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED); |
972 | 973 | DrawMenuBar(Handle); |
973 | 974 | Exit; |
@@ -976,7 +977,7 @@ begin | ||
976 | 977 | end; |
977 | 978 | |
978 | 979 | if ResultType = grtOK then begin |
979 | - if (GikoSys.Setting.UseSamba) and (Timer1.Enabled) then | |
980 | + if GikoSys.Setting.UseSamba then | |
980 | 981 | WriteSambaTime(FHost, Now()); |
981 | 982 | State := gdsComplete; |
982 | 983 | end else if ResultType = grtCookie then begin |
@@ -1045,8 +1046,8 @@ begin | ||
1045 | 1046 | Exit; |
1046 | 1047 | end; |
1047 | 1048 | end else begin |
1048 | - if (GikoSys.Setting.UseSamba) and (Timer1.Enabled) then | |
1049 | - WriteSambaTime(FHost, Now()); | |
1049 | + if GikoSys.Setting.UseSamba then | |
1050 | + WriteSambaTime(FHost, Now()); | |
1050 | 1051 | State := gdsError; |
1051 | 1052 | raise Exception.Create(''); |
1052 | 1053 | end; |
@@ -1097,9 +1098,9 @@ begin | ||
1097 | 1098 | GikoForm.PlaySound('ResEnd'); |
1098 | 1099 | SaveSendFile; |
1099 | 1100 | if FThreadItem = nil then |
1100 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1101 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1101 | 1102 | else |
1102 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1103 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1103 | 1104 | Close; |
1104 | 1105 | Exit; |
1105 | 1106 | end; |
@@ -1107,20 +1108,20 @@ begin | ||
1107 | 1108 | GikoForm.PlaySound('ResEnd'); |
1108 | 1109 | SaveSendFile; |
1109 | 1110 | if FThreadItem = nil then |
1110 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1111 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1111 | 1112 | else |
1112 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1113 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1113 | 1114 | Close; |
1114 | 1115 | end else if State = gdsError then begin |
1115 | 1116 | if FThreadItem = nil then |
1116 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1117 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK) | |
1117 | 1118 | else |
1118 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1119 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1119 | 1120 | |
1120 | 1121 | EditorPage.ActivePage := PreviewTab; |
1121 | 1122 | SetContent(ResponseText, Browser); |
1122 | 1123 | end else if State = gdsAbort then begin |
1123 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiSAD); | |
1124 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiSAD); | |
1124 | 1125 | end; |
1125 | 1126 | end; |
1126 | 1127 |
@@ -1279,13 +1280,13 @@ begin | ||
1279 | 1280 | if state = gdsComplete then begin |
1280 | 1281 | GikoForm.PlaySound('ResEnd'); |
1281 | 1282 | SaveSendFile; |
1282 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK); | |
1283 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewSure)), nil, gmiOK); | |
1283 | 1284 | FWork := False; |
1284 | 1285 | Close; |
1285 | 1286 | end else if State = gdsError then begin |
1286 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmSureError), nil, gmiNG); | |
1287 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureError)), nil, gmiNG); | |
1287 | 1288 | end else if State = gdsAbort then begin |
1288 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiNG); | |
1289 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiNG); | |
1289 | 1290 | end; |
1290 | 1291 | end else begin |
1291 | 1292 | // X |
@@ -1295,13 +1296,13 @@ begin | ||
1295 | 1296 | if state = gdsComplete then begin |
1296 | 1297 | GikoForm.PlaySound('ResEnd'); |
1297 | 1298 | SaveSendFile; |
1298 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1299 | - FWork := False; | |
1299 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmNewRes)), nil, gmiOK); | |
1300 | + FWork := False; | |
1300 | 1301 | Close; |
1301 | 1302 | end else if State = gdsError then begin |
1302 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmResError), nil, gmiOK); | |
1303 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmResError)), nil, gmiOK); | |
1303 | 1304 | end else if State = gdsAbort then begin |
1304 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK); | |
1305 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK); | |
1305 | 1306 | end; |
1306 | 1307 | end; |
1307 | 1308 | end else begin |
@@ -1596,8 +1597,6 @@ begin | ||
1596 | 1597 | ini.WriteInteger('Setting', AHost, 0); |
1597 | 1598 | ini.UpdateFile; |
1598 | 1599 | end; |
1599 | - //StatusBarɱÌIÌKèlð\¦·é | |
1600 | - StatusBar.Panels[2].Text := 'Samba24Kèl' + IntToStr(Result); | |
1601 | 1600 | finally |
1602 | 1601 | ini.Free; |
1603 | 1602 | end; |
@@ -1633,7 +1632,8 @@ begin | ||
1633 | 1632 | Host := Copy(Host, 1, AnsiPos('.', Host) - 1); |
1634 | 1633 | FHost := Host; //FHost=I¼ |
1635 | 1634 | ReadSambaTime(FHost); //ÈOÌ«ÝÔðÇÝÞ |
1636 | - ReadSettingTime(FHost); //SambaÌÝèðÇÝÞ | |
1635 | + //StatusBarɱÌIÌKèlð\¦·é | |
1636 | + StatusBar.Panels[2].Text := 'Samba24Kèl' + IntToStr(ReadSettingTime(FHost)); | |
1637 | 1637 | end; |
1638 | 1638 | end; |
1639 | 1639 | procedure TEditorForm.FormCloseQuery(Sender: TObject; |
@@ -2098,8 +2098,8 @@ begin | ||
2098 | 2098 | |
2099 | 2099 | if ABoard = nil then Exit; |
2100 | 2100 | |
2101 | - URL := ABoard.GETHEADTXTFileName; | |
2102 | - GikoSys.OpenBrowser(URL, gbtAuto); | |
2101 | + URL := ABoard.GETHEADTXTFileName; | |
2102 | + GikoSys.OpenBrowser(URL, gbtAuto); | |
2103 | 2103 | end; |
2104 | 2104 | |
2105 | 2105 | procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject); |
@@ -2112,8 +2112,8 @@ function TEditorForm.LFusianaGet(s: String): Boolean; | ||
2112 | 2112 | var |
2113 | 2113 | i: Integer; |
2114 | 2114 | begin |
2115 | - i := AnsiPos('fusianasan', s); | |
2116 | - if (i > 0) then Result := True else Result := False; | |
2115 | + i := AnsiPos('fusianasan', s); | |
2116 | + if (i > 0) then Result := True else Result := False; | |
2117 | 2117 | end; |
2118 | 2118 | |
2119 | 2119 | procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject); |
@@ -2166,49 +2166,101 @@ begin | ||
2166 | 2166 | end; |
2167 | 2167 | end; |
2168 | 2168 | |
2169 | -//! SambaÌÝèlðXV·é | |
2170 | -procedure TEditorForm.UpdateSamba(const AHost: String; value: Integer); | |
2169 | +//SambaÌÔðÇÝÞ | |
2170 | +procedure TEditorForm.ReadSambaTime(); | |
2171 | 2171 | var |
2172 | 2172 | ini :TMemIniFile; |
2173 | + skey: String; | |
2174 | + board: TBoard; | |
2175 | + tmp: string; | |
2173 | 2176 | begin |
2177 | + Timer1.Enabled := false; //oßb\¦TimerðOffÉ·éi±êªONÌÆ«Samba24ÎôOnj | |
2174 | 2178 | ini := TMemIniFile.Create(GikoSys.GetSambaFileName); |
2175 | 2179 | try |
2176 | - ini.WriteInteger('Setting', AHost, value); | |
2177 | - ini.UpdateFile; | |
2180 | + //¶ñÅÇÝæÁÄAÏ·ÖÅTDateTimeÖ | |
2181 | + if( FThreadItem <> nil ) then | |
2182 | + board := FThreadItem.ParentBoard | |
2183 | + else | |
2184 | + board := FBoard; | |
2185 | + | |
2186 | + if (board <> nil) then begin | |
2187 | + //BBSIDÆzXg¼ªêvµÄ¢½ç BBSID@zXg¼ | |
2188 | + if( board.BBSID = FHost ) then | |
2189 | + skey := board.BBSID + '@' + FHost | |
2190 | + else | |
2191 | + skey := board.BBSID; | |
2192 | + | |
2193 | + tmp := ini.ReadString('Send', skey, DateTimeToStr(ZERO_DATE)); | |
2194 | + | |
2195 | + //BBSIDÌL[ª³¢ÈçFHostÉØèÖ¦ÄÝé | |
2196 | + if (tmp = DateTimeToStr(ZERO_DATE)) then begin | |
2197 | + tmp := ini.ReadString('Send', FHost, DateTimeToStr(ZERO_DATE)); | |
2198 | + end; | |
2199 | + FSambaTime := ConvertDateTimeString(tmp); | |
2200 | + end; | |
2178 | 2201 | finally |
2179 | 2202 | ini.Free; |
2180 | 2203 | end; |
2204 | + FNow := Now(); //»ÝÔðæ¾iTimer\¦pÅACheck·éÆ«ÍÄÑNow()ðÄÔj | |
2205 | + Timer1.Enabled := true; //oßb\¦TimerðOnÉ·éi±êªONÌÆ«Samba24ÎôOnj | |
2181 | 2206 | end; |
2182 | 2207 | |
2183 | -//! ToXVÌANVÌUpdateCxg@ÈP̽ß^C}[Ư¶ÉµÄ¨ | |
2184 | -procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject); | |
2208 | +//SambaÉÔð«Þ | |
2209 | +procedure TEditorForm.WriteSambaTime(ATime: TDateTime); | |
2210 | +var | |
2211 | + ini :TMemIniFile; | |
2185 | 2212 | begin |
2186 | - UpdateSambaAction.Enabled := Timer1.Enabled; | |
2213 | + ini := TMemIniFile.Create(GikoSys.GetSambaFileName); | |
2214 | + try | |
2215 | +// ini.WriteDateTime('Send', AHost, ATime); | |
2216 | + ini.UpdateFile; | |
2217 | + finally | |
2218 | + ini.Free; | |
2219 | + end; | |
2187 | 2220 | end; |
2188 | - | |
2189 | -//! ToXVANV | |
2190 | -procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject); | |
2221 | +//SambaÌÝèlðÇÝÞ | |
2222 | +function TEditorForm.ReadSettingTime(): Integer ; | |
2191 | 2223 | var |
2192 | - input : String; | |
2193 | - i : Integer; | |
2194 | -begin | |
2195 | - if InputQuery('Samba24ÝèlXV', 'Vµ¢Ýèlðü͵ľ³¢', input) then begin | |
2196 | - input := ZenToHan(input); | |
2197 | - if GikoSys.IsNumeric(input) then begin | |
2198 | - UpdateSamba(FHost, StrToInt(input)); | |
2199 | - //SÄÌtH[©çA¯¶zXgÌGfB^ÉÇÝÝw¦ | |
2200 | - for i := 0 to Screen.FormCount - 1 do begin | |
2201 | - if Screen.Forms[i] is TEditorForm then begin | |
2202 | - if FHost = TEditorForm(Screen.Forms[i]).FHost then begin | |
2203 | - TEditorForm(Screen.Forms[i]).ReadSettingTime(FHost); | |
2204 | - end; | |
2205 | - end; | |
2224 | + ini :TMemIniFile; | |
2225 | + skey: String; | |
2226 | + board: TBoard; | |
2227 | +begin | |
2228 | + ini := TMemIniFile.Create(GikoSys.GetSambaFileName); | |
2229 | + try | |
2230 | + if( FThreadItem <> nil ) then | |
2231 | + board := FThreadItem.ParentBoard | |
2232 | + else | |
2233 | + board := FBoard; | |
2234 | + | |
2235 | + if (board <> nil) then begin | |
2236 | + //BBSIDÆzXg¼ªêvµÄ¢½ç BBSID@zXg¼ | |
2237 | + if( board.BBSID = FHost ) then | |
2238 | + skey := board.BBSID + '@' + FHost | |
2239 | + else | |
2240 | + skey := board.BBSID; | |
2241 | + | |
2242 | + Result := ini.ReadInteger('Setting', skey, -1); | |
2243 | + //BBSIDÌL[ª³¢ÈçFHostðg¤ | |
2244 | + if( Result = -1 ) then | |
2245 | + Result := ini.ReadInteger('Setting', FHost, -1); | |
2246 | + | |
2247 | + //KèlªÝè³êĢȢƫÍAt@CÉ«½·B | |
2248 | + if Result = -1 then begin | |
2249 | + ini.WriteInteger('Setting', FHost, 0); | |
2250 | + ini.UpdateFile; | |
2206 | 2251 | end; |
2207 | - end else begin | |
2208 | - ShowMessage('lðü͵ľ³¢'); | |
2209 | - UpdateSambaActionExecute(Sender); | |
2210 | - end; | |
2252 | + end; | |
2253 | + finally | |
2254 | + ini.Free; | |
2211 | 2255 | end; |
2212 | 2256 | end; |
2257 | +//SambaÉøÁ©©é©¸·é | |
2258 | +function TEditorForm.CheckSambaTime(ATime: TDateTime): Boolean; | |
2259 | +begin | |
2260 | +end; | |
2261 | +//SambaÌÝèlð«Þ | |
2262 | +procedure TEditorForm.SetSamba24(); | |
2263 | +begin | |
2264 | +end; | |
2213 | 2265 | |
2214 | 2266 | end. |
@@ -50,7 +50,7 @@ type | ||
50 | 50 | { Private é¾ } |
51 | 51 | FStack: TStack; |
52 | 52 | FTreeView: TTreeView; |
53 | - FModified: boolean; | |
53 | + | |
54 | 54 | procedure ReadNode(Node: IXMLNode); |
55 | 55 | procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
56 | 56 | // procedure AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); |
@@ -61,15 +61,14 @@ type | ||
61 | 61 | // procedure SAXCharacters(Sender: TObject; const PCh: SAXString); |
62 | 62 | public |
63 | 63 | { 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; | |
67 | 67 | procedure SetFavTreeView(TreeView: TTreeView); |
68 | 68 | procedure ReadFavorite; |
69 | 69 | procedure WriteFavorite; |
70 | - procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); | |
70 | + procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); | |
71 | 71 | property TreeView: TTreeView read FTreeView; |
72 | - property Modified: boolean read FModified write FModified; | |
73 | 72 | end; |
74 | 73 | |
75 | 74 | var |
@@ -288,8 +287,7 @@ begin | ||
288 | 287 | end; |
289 | 288 | TreeView.Items.Clear; |
290 | 289 | TreeView.Items.EndUpdate; |
291 | - | |
292 | - FavoriteDM.Modified := true; | |
290 | + //TreeView.Free; | |
293 | 291 | end; |
294 | 292 | |
295 | 293 | procedure TFavoriteDM.SetFavTreeView(TreeView: TTreeView); |
@@ -307,7 +305,7 @@ var | ||
307 | 305 | FavFolder: TFavoriteFolder; |
308 | 306 | LinkExists: Boolean; |
309 | 307 | begin |
310 | - FavoriteDM.Modified := true; | |
308 | + | |
311 | 309 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
312 | 310 | |
313 | 311 | FavFolder := TFavoriteFolder.Create; |
@@ -479,7 +477,6 @@ var | ||
479 | 477 | SaveList: TStringList; |
480 | 478 | |
481 | 479 | begin |
482 | - FavoriteDM.Modified := true; | |
483 | 480 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
484 | 481 | if FileExists(FileName) then begin |
485 | 482 | tmpFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME; |
@@ -491,10 +488,7 @@ begin | ||
491 | 488 | try |
492 | 489 | SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); |
493 | 490 | SaveList.Add('<favorite>'); |
494 | - try | |
495 | - AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
496 | - except | |
497 | - end; | |
491 | + AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
498 | 492 | SaveList.Add('</favorite>'); |
499 | 493 | SaveList.SaveToFile(FileName); |
500 | 494 | finally |
@@ -130,6 +130,10 @@ begin | ||
130 | 130 | FLastTime := GetTickCount; |
131 | 131 | FLastPoint := Point(x, y); |
132 | 132 | end; |
133 | + //}EXðÄÝè | |
134 | + if (hwnd <> 0) and (hwnd <> FHandle) then | |
135 | + SetCapture(hwnd); | |
136 | + | |
133 | 137 | Result := True; |
134 | 138 | end; |
135 | 139 | end; |
@@ -139,7 +143,7 @@ begin | ||
139 | 143 | FLastTime := 0; |
140 | 144 | FLastPoint := Point(x, y); |
141 | 145 | FStartPoint := Point(x, y); |
142 | - Result := True; | |
146 | + CheckAction := True; | |
143 | 147 | SetCapture(FHandle); |
144 | 148 | end; |
145 | 149 | end; |
@@ -1,6 +1,6 @@ | ||
1 | 1 | object GikoForm: TGikoForm |
2 | - Left = 363 | |
3 | - Top = 92 | |
2 | + Left = 332 | |
3 | + Top = 101 | |
4 | 4 | HorzScrollBar.Visible = False |
5 | 5 | VertScrollBar.Visible = False |
6 | 6 | AutoScroll = False |
@@ -39,9 +39,6 @@ object GikoForm: TGikoForm | ||
39 | 39 | Width = 500 |
40 | 40 | end |
41 | 41 | item |
42 | - Width = 80 | |
43 | - end | |
44 | - item | |
45 | 42 | Width = 50 |
46 | 43 | end> |
47 | 44 | SimplePanel = False |
@@ -98,6 +95,7 @@ object GikoForm: TGikoForm | ||
98 | 95 | Height = 167 |
99 | 96 | BorderStyle = bsNone |
100 | 97 | ChangeDelay = 50 |
98 | + DragMode = dmAutomatic | |
101 | 99 | HideSelection = False |
102 | 100 | Images = ItemIcon16 |
103 | 101 | Indent = 19 |
@@ -106,12 +104,16 @@ object GikoForm: TGikoForm | ||
106 | 104 | RightClickSelect = True |
107 | 105 | ShowRoot = False |
108 | 106 | TabOrder = 0 |
107 | + OnClick = TreeViewClick | |
109 | 108 | OnCollapsed = TreeViewCollapsed |
109 | + OnCollapsing = TreeViewCollapsing | |
110 | 110 | OnCustomDraw = TreeViewCustomDraw |
111 | 111 | OnCustomDrawItem = TreeViewCustomDrawItem |
112 | + OnDblClick = TreeViewDblClick | |
113 | + OnExpanding = TreeViewExpanding | |
112 | 114 | OnExpanded = TreeViewExpanded |
113 | 115 | OnKeyDown = TreeViewKeyDown |
114 | - OnMouseDown = TreeViewMouseDown | |
116 | + OnMouseUp = TreeViewMouseUp | |
115 | 117 | end |
116 | 118 | object Panel3: TPanel |
117 | 119 | Left = 0 |
@@ -226,13 +228,18 @@ object GikoForm: TGikoForm | ||
226 | 228 | RightClickSelect = True |
227 | 229 | ShowRoot = False |
228 | 230 | TabOrder = 3 |
231 | + OnClick = FavoriteTreeViewClick | |
232 | + OnCollapsing = FavoriteTreeViewCollapsing | |
233 | + OnDblClick = FavoriteTreeViewDblClick | |
229 | 234 | OnDragDrop = FavoriteTreeViewDragDrop |
230 | 235 | OnDragOver = FavoriteTreeViewDragOver |
231 | 236 | OnEdited = FavoriteTreeViewEdited |
232 | 237 | OnEditing = FavoriteTreeViewEditing |
233 | 238 | OnEndDrag = FavoriteTreeViewEndDrag |
239 | + OnExpanding = FavoriteTreeViewExpanding | |
234 | 240 | OnKeyDown = FavoriteTreeViewKeyDown |
235 | 241 | OnMouseDown = FavoriteTreeViewMouseDown |
242 | + OnMouseUp = FavoriteTreeViewMouseUp | |
236 | 243 | end |
237 | 244 | object FavoriteToolBar: TToolBar |
238 | 245 | Left = 0 |
@@ -20,10 +20,6 @@ uses | ||
20 | 20 | ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection, |
21 | 21 | IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord; |
22 | 22 | |
23 | -const | |
24 | - NGWORDNAME_PANEL = 3; | |
25 | - THREADSIZE_PANEL = 2; | |
26 | - | |
27 | 23 | type |
28 | 24 | TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite); |
29 | 25 | TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser); |
@@ -358,7 +354,7 @@ type | ||
358 | 354 | N63: TMenuItem; |
359 | 355 | N64: TMenuItem; |
360 | 356 | dummy1: TMenuItem; |
361 | - TreeSelectLogDeletePopupMenu: TMenuItem; | |
357 | + TreeSelectLogDeletePopupMenu: TMenuItem; | |
362 | 358 | N65: TMenuItem; |
363 | 359 | BBSSelectPopupMenu: TPopupMenu; |
364 | 360 | PlugInMenu: TMenuItem; |
@@ -378,7 +374,7 @@ type | ||
378 | 374 | ResRangeKokoPMenuItem: TMenuItem; |
379 | 375 | ResRangeNewPMenuItem: TMenuItem; |
380 | 376 | ResRangeAllPMenuItem: TMenuItem; |
381 | - BrowsBoradHeadAction1: TMenuItem; | |
377 | + BrowsBoradHeadAction1: TMenuItem; | |
382 | 378 | ThreadRangePopupMenu: TPopupMenu; |
383 | 379 | A15: TMenuItem; |
384 | 380 | L8: TMenuItem; |
@@ -398,7 +394,7 @@ type | ||
398 | 394 | N73: TMenuItem; |
399 | 395 | SelectComboBoxPanel: TPanel; |
400 | 396 | SelectComboBoxSplitter: TImage; |
401 | - ToolButton1: TToolButton; | |
397 | + ToolButton1: TToolButton; | |
402 | 398 | N74: TMenuItem; |
403 | 399 | WikiFAQ: TMenuItem; |
404 | 400 | GikoApplicationEvents: TApplicationEvents; |
@@ -423,6 +419,7 @@ type | ||
423 | 419 | procedure TreeViewCustomDrawItem(Sender: TCustomTreeView; |
424 | 420 | Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); |
425 | 421 | procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode); |
422 | + procedure TreeViewDblClick(Sender: TObject); | |
426 | 423 | procedure ListViewCustomDraw(Sender: TCustomListView; |
427 | 424 | const ARect: TRect; var DefaultDraw: Boolean); |
428 | 425 | procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton; |
@@ -494,6 +491,7 @@ type | ||
494 | 491 | procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word; |
495 | 492 | Shift: TShiftState); |
496 | 493 | procedure FavoriteTreePopupMenuPopup(Sender: TObject); |
494 | + procedure FavoriteTreeViewDblClick(Sender: TObject); | |
497 | 495 | procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer); |
498 | 496 | procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton; |
499 | 497 | Shift: TShiftState; X, Y: Integer); |
@@ -512,12 +510,15 @@ type | ||
512 | 510 | var Handled: Boolean); |
513 | 511 | procedure BrowserTabPopupMenuPopup(Sender: TObject); |
514 | 512 | procedure BrowserTabResize(Sender: TObject); |
513 | + procedure TreeViewClick(Sender: TObject); | |
515 | 514 | procedure TreeViewKeyDown(Sender: TObject; var Key: Word; |
516 | 515 | Shift: TShiftState); |
517 | 516 | procedure FavoriteTreeViewMouseDown(Sender: TObject; |
518 | 517 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
519 | 518 | procedure MessagePanelResize(Sender: TObject); |
520 | 519 | procedure OnResized; |
520 | + procedure FavoriteTreeViewMouseUp(Sender: TObject; | |
521 | + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
521 | 522 | procedure SelectTimerTimer(Sender: TObject); |
522 | 523 | procedure ListViewColumnRightClick(Sender: TObject; |
523 | 524 | Column: TListColumn; Point: TPoint); |
@@ -533,16 +534,27 @@ type | ||
533 | 534 | Shift: TShiftState); |
534 | 535 | procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode; |
535 | 536 | var AllowEdit: Boolean); |
536 | - procedure CabinetCloseSpeedButtonClick(Sender: TObject); | |
537 | + procedure CabinetCloseSpeedButtonClick(Sender: TObject); | |
537 | 538 | procedure FavoriteArrangeToolButtonClick(Sender: TObject); |
538 | 539 | procedure GikoApplicationEventsMessage(var Msg: tagMSG; |
539 | 540 | var Handled: Boolean); |
540 | 541 | procedure GikoApplicationEventsDeactivate(Sender: TObject); |
541 | 542 | procedure GikoApplicationEventsException(Sender: TObject; E: Exception); |
542 | - procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton; | |
543 | + procedure FavoriteTreeViewClick(Sender: TObject); | |
544 | + procedure FavoriteTreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
545 | + var AllowCollapse: Boolean); | |
546 | + procedure FavoriteTreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
547 | + var AllowExpansion: Boolean); | |
548 | + procedure TreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
549 | + var AllowCollapse: Boolean); | |
550 | + procedure TreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
551 | + var AllowExpansion: Boolean); | |
552 | + procedure TreeViewMouseUp(Sender: TObject; Button: TMouseButton; | |
543 | 553 | Shift: TShiftState; X, Y: Integer); |
544 | 554 | private |
545 | 555 | { Private é¾ } |
556 | + FSortIndex: Integer; | |
557 | + FSortOrder: Boolean; | |
546 | 558 | FEnabledCloseButton: Boolean; |
547 | 559 | FClickNode: TTreeNode; |
548 | 560 | FHttpState: Boolean; |
@@ -588,7 +600,6 @@ type | ||
588 | 600 | FIsHandledWheel : Boolean; ///< ùÉó¯æÁ½ WM_MOUSEWHEEL ©Ç¤© |
589 | 601 | DiffComp: Boolean; //Add by Genyakun XªXV³ê½Æ«ÉTrueÉÈé |
590 | 602 | FOrigenCaption: String; //¨CÉüèc[ÌACeÒWÌÒWO̶ñ |
591 | - FPreviewBrowserRect: TRect; ///< vr [Ì\¦ÊuðL¯·é | |
592 | 603 | procedure DownloadEnd(Sender: TObject; Item: TDownloadItem); |
593 | 604 | procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon); |
594 | 605 | procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string); |
@@ -689,6 +700,8 @@ type | ||
689 | 700 | property ToolBarSettingSender : TToolBarSettingSenderType |
690 | 701 | read FToolBarSettingSender write FToolBarSettingSender; |
691 | 702 | property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor; |
703 | + property SortIndex: Integer read FSortIndex write FSortIndex; | |
704 | + property SortOrder: Boolean read FSortOrder write FSortOrder; | |
692 | 705 | property ActiveBBS : TBBS read FActiveBBS write FActiveBBS; |
693 | 706 | property WorkCount: Integer read FWorkCount write FWorkCount; |
694 | 707 | procedure SetContent(inThread: TBrowserRecord); |
@@ -820,7 +833,7 @@ uses | ||
820 | 833 | FavoriteArrange, AddressHistory, Preview, Gesture, |
821 | 834 | About, Option, Round, Splash, Sort, ListSelect, Imm, |
822 | 835 | NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter, |
823 | - HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage; | |
836 | + HTMLCreate, ListViewUtils, GikoDataModule; | |
824 | 837 | |
825 | 838 | const |
826 | 839 | BLANK_HTML: string = 'about:blank'; |
@@ -859,6 +872,7 @@ var | ||
859 | 872 | msg: string; |
860 | 873 | i: Integer; |
861 | 874 | wp: TWindowPlacement; |
875 | + s: string; | |
862 | 876 | begin |
863 | 877 | {$IFDEF DEBUG} |
864 | 878 | AllocConsole; |
@@ -885,6 +899,7 @@ begin | ||
885 | 899 | Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND'); |
886 | 900 | |
887 | 901 | //AhXðÇÝÝ |
902 | + //AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount); | |
888 | 903 | AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount); |
889 | 904 | |
890 | 905 | EnabledCloseButton := True; |
@@ -1162,7 +1177,9 @@ begin | ||
1162 | 1177 | MoveToURL(ParamStr(i)); |
1163 | 1178 | end; |
1164 | 1179 | |
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); | |
1166 | 1183 | StatusBarResize(Sender); |
1167 | 1184 | |
1168 | 1185 | dummy1.Caption := ItemReservPMenu.Caption; |
@@ -1188,7 +1205,7 @@ begin | ||
1188 | 1205 | MouseGesture.SetHook( Handle ); |
1189 | 1206 | |
1190 | 1207 | //2ch¾êÇÝoµ |
1191 | - GikoSys.SetGikoMessage; | |
1208 | + GikoSys.Setting.SetMessages; | |
1192 | 1209 | |
1193 | 1210 | //I[gOC |
1194 | 1211 | if GikoSys.Setting.AutoLogin then |
@@ -1200,7 +1217,6 @@ begin | ||
1200 | 1217 | FavoriteAddToolButton.Caption := 'ÇÁ...'; |
1201 | 1218 | AntiIndivAbonMenuItem.Caption := 'ÂÊ Ú`ñð'; |
1202 | 1219 | |
1203 | - | |
1204 | 1220 | end; |
1205 | 1221 | |
1206 | 1222 | // CoolBar ÌÝèðÏÉÛ¶ |
@@ -1521,6 +1537,7 @@ begin | ||
1521 | 1537 | //AhXðÛ¶ |
1522 | 1538 | try |
1523 | 1539 | //AddressHistoryDMÍ©®¶¬tH[ÈÌÅAðúÍ©®IɳêéB |
1540 | + //AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount); | |
1524 | 1541 | AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount); |
1525 | 1542 | except |
1526 | 1543 | end; |
@@ -1655,6 +1672,7 @@ begin | ||
1655 | 1672 | GikoSys.Setting.ShowDialogForAllTabClose := false; |
1656 | 1673 | GikoDM.AllTabCloseAction.Execute; |
1657 | 1674 | GikoSys.Setting.ShowDialogForAllTabClose := tmpBool; |
1675 | + | |
1658 | 1676 | SetContent(BrowserNullTab); |
1659 | 1677 | //TreeViewNAiBBS2ch.FreeÌãÉNA·éÆXPX^CÉG[oéj |
1660 | 1678 | TreeView.Items.Clear; |
@@ -1985,35 +2003,27 @@ procedure TGikoForm.ListViewColumnClick(Sender: TObject; | ||
1985 | 2003 | var |
1986 | 2004 | id, idx : Integer; |
1987 | 2005 | orderList : TList; |
1988 | - vSortIndex : Integer; | |
1989 | - vSortOrder : Boolean; | |
1990 | 2006 | begin |
1991 | 2007 | 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 | |
2005 | 2016 | Exit; |
2006 | 2017 | |
2007 | 2018 | id := Integer( orderList[ idx ] ); |
2008 | 2019 | |
2009 | - | |
2010 | - if vSortIndex = id then | |
2011 | - vSortOrder := not vSortOrder | |
2020 | + if FSortIndex = id then | |
2021 | + FSortOrder := not FSortOrder | |
2012 | 2022 | else begin |
2013 | - vSortOrder := id = 0; | |
2023 | + FSortOrder := id = 0; | |
2014 | 2024 | end; |
2015 | 2025 | |
2016 | - TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder); | |
2026 | + TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, FSortOrder, FSortIndex ); | |
2017 | 2027 | end; |
2018 | 2028 | |
2019 | 2029 | procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar; |
@@ -2212,13 +2222,31 @@ begin | ||
2212 | 2222 | ListView.SetFocus; |
2213 | 2223 | ListView.SelectAll; |
2214 | 2224 | end; |
2225 | +// ************************************************************************* | |
2226 | +//! c[r [Ì_uNbNCxg | |
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 | + //}EXª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 | + | |
2215 | 2245 | procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon); |
2216 | 2246 | begin |
2217 | 2247 | AddMessageList(Msg, nil, Icon); |
2218 | 2248 | end; |
2219 | -// ************************************************************************* | |
2220 | -//! _E[hª®¹µ½Æ«É¶·éCxg | |
2221 | -// ************************************************************************* | |
2249 | + | |
2222 | 2250 | procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem); |
2223 | 2251 | var |
2224 | 2252 | ATitle: string; |
@@ -2234,21 +2262,16 @@ begin | ||
2234 | 2262 | else |
2235 | 2263 | ATitle := Item.ThreadItem.Title; |
2236 | 2264 | if ATitle = '' then |
2237 | - ATitle := GikoSys.GetGikoMessage(gmUnKnown); | |
2265 | + ATitle := GikoSys.Setting.GetMessage(Ord(gmUnKnown)); | |
2238 | 2266 | |
2239 | 2267 | if Item.State in [gdsComplete, gdsDiffComplete] then begin |
2240 | 2268 | //³íI¹ |
2241 | 2269 | if Item.DownType = gdtBoard then begin |
2242 | 2270 | //Â |
2243 | 2271 | Item.SaveListFile; |
2244 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK); | |
2272 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureItiran)), nil, gmiOK); | |
2245 | 2273 | if GetActiveList = Item.Board then begin |
2246 | 2274 | FActiveList := nil; |
2247 | - //©®\[gÌêÂêÌ\[gðNA·é | |
2248 | - if (GikoSys.Setting.AutoSortThreadList) then begin | |
2249 | - GikoSys.Setting.BoardSortIndex := 0; | |
2250 | - GikoSys.Setting.BoardSortOrder := True; | |
2251 | - end; | |
2252 | 2275 | SetActiveList(Item.Board); |
2253 | 2276 | end; |
2254 | 2277 | Item.Board.Modified := True; |
@@ -2295,12 +2318,12 @@ begin | ||
2295 | 2318 | |
2296 | 2319 | if Item.State = gdsComplete then begin |
2297 | 2320 | PlaySound('New'); |
2298 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK); | |
2321 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureSyutoku)), nil, gmiOK); | |
2299 | 2322 | //Add by Genyakun |
2300 | 2323 | DiffComp := True; |
2301 | 2324 | end else begin |
2302 | 2325 | PlaySound('NewDiff'); |
2303 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK); | |
2326 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmSureDiff)), nil, gmiOK); | |
2304 | 2327 | //Add by Genyakun |
2305 | 2328 | DiffComp := True; |
2306 | 2329 | end; |
@@ -2333,18 +2356,18 @@ begin | ||
2333 | 2356 | //SetContent(Item.ThreadItem); |
2334 | 2357 | InsertBrowserTab(Item.ThreadItem); |
2335 | 2358 | end;} |
2336 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD); | |
2359 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmNotMod)), nil, gmiSAD); | |
2337 | 2360 | PlaySound('NoChange'); |
2338 | 2361 | Screen.Cursor := crDefault; |
2339 | 2362 | end else if Item.State = gdsAbort then begin |
2340 | 2363 | //f |
2341 | - AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK); | |
2364 | + AddMessageList(ATitle + ' ' + GikoSys.Setting.GetMessage(Ord(gmAbort)), nil, gmiOK); | |
2342 | 2365 | end else if Item.State = gdsError then begin |
2343 | 2366 | //G[ |
2344 | 2367 | s := Item.ErrText; |
2345 | 2368 | if s <> '' then |
2346 | 2369 | 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); | |
2348 | 2371 | // if Item.ResponseCode = 302 then |
2349 | 2372 | // AddMessageList('ªÚ]µ½©àµêÈ¢ÌÅÂXVðsÁľ³¢B', nil, gmiNG); |
2350 | 2373 | PlaySound('Error'); |
@@ -2524,9 +2547,6 @@ begin | ||
2524 | 2547 | BrowserNullTab := TBrowserRecord.Create; |
2525 | 2548 | BrowserNullTab.Browser := Browser; |
2526 | 2549 | end; |
2527 | - if BrowserNullTab.thread <> ThreadItem then begin | |
2528 | - BrowserNullTab.Movement := ''; | |
2529 | - end; | |
2530 | 2550 | BrowserNullTab.thread := ThreadItem; |
2531 | 2551 | Result := BrowserNullTab; |
2532 | 2552 | BrowserTab.TabIndex := -1; |
@@ -2556,7 +2576,6 @@ begin | ||
2556 | 2576 | idx := BrowserTab.TabIndex; |
2557 | 2577 | if (FActiveContent <> nil) and |
2558 | 2578 | (FActiveContent.Thread <> Thread.Thread) and |
2559 | - (FActiveContent.Browser <> nil) and | |
2560 | 2579 | (Assigned(FActiveContent.Browser.Document)) then begin |
2561 | 2580 | try |
2562 | 2581 | try |
@@ -2575,7 +2594,7 @@ begin | ||
2575 | 2594 | ItemBoardImage.Picture := nil; |
2576 | 2595 | BrowserNameLabel.Caption := ''; |
2577 | 2596 | ItemImage.Picture := nil; |
2578 | - BrowserNullTab.Thread := nil; | |
2597 | + BrowserNullTab.Thread := nil; | |
2579 | 2598 | //TOleControl(BrowserNullTab.Browser).Visible := true; |
2580 | 2599 | ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW); |
2581 | 2600 | FActiveContent := nil; |
@@ -2632,8 +2651,6 @@ begin | ||
2632 | 2651 | |
2633 | 2652 | if not ThreadIsLog then begin |
2634 | 2653 | Self.Caption := GikoDataModule.CAPTION_NAME ; |
2635 | - //Xe[^Xo[É\¦µÄ¢éXÌeÊðÁ | |
2636 | - StatusBar.Panels[THREADSIZE_PANEL].Text := ''; | |
2637 | 2654 | try |
2638 | 2655 | s := '<HTML><BODY><CENTER>±ÌXbhÍ澵Ģܹñ</CENTER></BODY></HTML>'; |
2639 | 2656 | doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2; |
@@ -2645,10 +2662,6 @@ begin | ||
2645 | 2662 | end; |
2646 | 2663 | end else begin |
2647 | 2664 | Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']'; |
2648 | - //Xe[^Xo[É\¦µÄ¢éXÌeÊð\¦ | |
2649 | - StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]); | |
2650 | - StatusBar.Panels[THREADSIZE_PANEL].Width := | |
2651 | - Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70); | |
2652 | 2665 | //Thread.RepaintÍAXLÌÝèðÏXµ½Æ«AThreadð_E[hµ½Æ« |
2653 | 2666 | //VKÉThreadðJ¢½Æ«É^ÉÈÁÄ¢éB |
2654 | 2667 | if Thread.Repaint then begin |
@@ -2660,7 +2673,7 @@ begin | ||
2660 | 2673 | //GikoSys.CreateHTML2(doc, ThreadItem, sTitle); |
2661 | 2674 | HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle); |
2662 | 2675 | Thread.Browser.OnStatusTextChange := BrowserStatusTextChange; |
2663 | - | |
2676 | + | |
2664 | 2677 | if ThreadItem = nil then begin |
2665 | 2678 | FActiveContent := nil; |
2666 | 2679 | BrowserTab.Repaint; |
@@ -2728,19 +2741,9 @@ begin | ||
2728 | 2741 | ListView.Selected := nil; |
2729 | 2742 | // ListView.Columns.Clear; |
2730 | 2743 | 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 | |
2744 | 2747 | Self.Caption := GikoDataModule.CAPTION_NAME; |
2745 | 2748 | //Application.Title := CAPTION_NAME; |
2746 | 2749 |
@@ -2749,11 +2752,14 @@ begin | ||
2749 | 2752 | Screen.Cursor := crHourGlass; |
2750 | 2753 | try |
2751 | 2754 | 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); | |
2753 | 2757 | 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); | |
2755 | 2760 | 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); | |
2757 | 2763 | end; |
2758 | 2764 | finally |
2759 | 2765 | Screen.Cursor := crDefault; |
@@ -3497,9 +3503,6 @@ begin | ||
3497 | 3503 | end else if TObject(Node.Data) is TBoard then begin |
3498 | 3504 | TBoard(Node.Data).NodeExpand := False; |
3499 | 3505 | end; |
3500 | - if (TreeView.Selected <> nil) and (TreeView.Selected = Node) then begin | |
3501 | - TreeClick(TreeView.Selected); | |
3502 | - end; | |
3503 | 3506 | end; |
3504 | 3507 | |
3505 | 3508 | procedure TGikoForm.MessageListViewResize(Sender: TObject); |
@@ -3928,11 +3931,14 @@ var | ||
3928 | 3931 | idx: Integer; |
3929 | 3932 | begin |
3930 | 3933 | |
3934 | +// if NewTab = -1 then | |
3935 | +// ThreadItem := nil; | |
3931 | 3936 | if not BrowserTab.Dragging then begin |
3932 | 3937 | FTabHintIndex := -1; |
3933 | 3938 | BrowserTab.Hint := ''; |
3934 | 3939 | idx := BrowserTab.TabIndex; |
3935 | 3940 | if idx = -1 then begin |
3941 | + BrowserNullTab.Thread := nil; | |
3936 | 3942 | SetContent(BrowserNullTab); |
3937 | 3943 | |
3938 | 3944 | end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin |
@@ -3958,6 +3964,8 @@ begin | ||
3958 | 3964 | end; |
3959 | 3965 | MoveWindow(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser.Handle, 0, 0, BrowserPanel.Width, BrowserPanel.Height, false); |
3960 | 3966 | 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; | |
3961 | 3969 | SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx])); |
3962 | 3970 | |
3963 | 3971 | if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then |
@@ -4144,11 +4152,6 @@ begin | ||
4144 | 4152 | FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2); |
4145 | 4153 | FEvent.OnContextMenu := OnDocumentContextMenu; |
4146 | 4154 | FEvent.OnClick := WebBrowserClick; //ÇÁµ½OnClickCxg |
4147 | - end else begin | |
4148 | - if FEvent <> nil then begin | |
4149 | - FEvent.Free; | |
4150 | - FEvent := nil; | |
4151 | - end; | |
4152 | 4155 | end; |
4153 | 4156 | |
4154 | 4157 | end; |
@@ -4322,52 +4325,47 @@ procedure TGikoForm.FavoriteMenuClick(Sender: TObject); | ||
4322 | 4325 | var |
4323 | 4326 | NewMenu: TMenuItem; |
4324 | 4327 | begin |
4325 | - if FavoriteDM.Modified then begin | |
4326 | - FavoriteMenu.Clear; | |
4328 | + FavoriteMenu.Clear; | |
4327 | 4329 | |
4328 | - //¨CÉüèÌÇÁ | |
4329 | - NewMenu := TMenuItem.Create(MainMenu); | |
4330 | - NewMenu.Action := GikoDM.FavoriteAddAction; | |
4331 | - FavoriteMenu.Add(NewMenu); | |
4332 | - //¨CÉüèÌ® | |
4333 | - NewMenu := TMenuItem.Create(FavoriteMenu); | |
4334 | - NewMenu.Action := GikoDM.FavoriteArrangeAction; | |
4335 | - FavoriteMenu.Add(NewMenu); | |
4336 | - //Zp[^ | |
4337 | - FavoriteMenu.InsertNewLineAfter(NewMenu); | |
4338 | - CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu); | |
4339 | - FavoriteDM.Modified := false; | |
4340 | - end; | |
4330 | + //¨CÉüèÌÇÁ | |
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 | + //Zp[^ | |
4339 | + NewMenu := TMenuItem.Create(FavoriteMenu); | |
4340 | + NewMenu.Caption := '-'; | |
4341 | + FavoriteMenu.Add(NewMenu); | |
4342 | + | |
4343 | + CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu); | |
4341 | 4344 | end; |
4342 | 4345 | |
4343 | 4346 | procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem); |
4344 | 4347 | var |
4345 | 4348 | i: Integer; |
4346 | - NewMenu: array of TMenuItem; | |
4349 | + NewMenu: TMenuItem; | |
4347 | 4350 | 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); | |
4356 | 4357 | |
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; | |
4366 | 4367 | end; |
4367 | - Inc(i); | |
4368 | - Node := Node.getNextSibling; | |
4369 | 4368 | end; |
4370 | - MenuItem.Add(NewMenu); | |
4371 | 4369 | end; |
4372 | 4370 | |
4373 | 4371 | procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject ); |
@@ -4431,7 +4429,9 @@ end; | ||
4431 | 4429 | |
4432 | 4430 | procedure TGikoForm.FavoriteClick(Sender: TObject); |
4433 | 4431 | begin |
4432 | + | |
4434 | 4433 | FavoriteClick( Sender, True ); |
4434 | + | |
4435 | 4435 | end; |
4436 | 4436 | |
4437 | 4437 | procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean); |
@@ -4950,42 +4950,26 @@ begin | ||
4950 | 4950 | |
4951 | 4951 | SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW); |
4952 | 4952 | ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE); |
4953 | - FPreviewBrowserRect := ARect; | |
4953 | + | |
4954 | 4954 | // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE); |
4955 | 4955 | // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW); |
4956 | 4956 | |
4957 | 4957 | end; |
4958 | 4958 | |
4959 | 4959 | procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor); |
4960 | -var | |
4961 | - Pos : TPoint; | |
4962 | 4960 | begin |
4963 | - | |
4964 | 4961 | if PreviewTimer.Enabled then |
4965 | 4962 | PreviewTimer.Enabled := False; |
4966 | 4963 | if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin |
4967 | 4964 | FHint.ReleaseHandle; |
4968 | 4965 | FHint.ClearAllRes; |
4969 | 4966 | 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); | |
4986 | 4969 | Message.Result := 1; |
4987 | 4970 | inherited; |
4988 | 4971 | end; |
4972 | + | |
4989 | 4973 | procedure TGikoForm.MessageHideButtonClick(Sender: TObject); |
4990 | 4974 | begin |
4991 | 4975 | GikoDM.MsgBarCloseAction.Execute; |
@@ -5913,9 +5897,8 @@ end; | ||
5913 | 5897 | procedure TGikoForm.StatusBarResize(Sender: TObject); |
5914 | 5898 | begin |
5915 | 5899 | 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; | |
5919 | 5902 | end; |
5920 | 5903 | procedure TGikoForm.SelectComboBoxEnter(Sender: TObject); |
5921 | 5904 | begin |
@@ -6053,8 +6036,6 @@ begin | ||
6053 | 6036 | FDropSpaceNode := nil; |
6054 | 6037 | end; |
6055 | 6038 | end; |
6056 | - //XVµ½±Æð³¦é | |
6057 | - FavoriteDM.Modified := true; | |
6058 | 6039 | |
6059 | 6040 | SetLinkBar; |
6060 | 6041 |
@@ -6063,8 +6044,6 @@ end; | ||
6063 | 6044 | procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject; |
6064 | 6045 | Node: TTreeNode; var S: String); |
6065 | 6046 | begin |
6066 | - //XVµ½±Æð³¦é | |
6067 | - FavoriteDM.Modified := true; | |
6068 | 6047 | |
6069 | 6048 | FavoriteTreeView.ReadOnly := True; |
6070 | 6049 | SetLinkBar; |
@@ -6092,10 +6071,7 @@ begin | ||
6092 | 6071 | FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded; |
6093 | 6072 | end; |
6094 | 6073 | VK_SPACE: |
6095 | - begin | |
6096 | - FClickNode := FavoriteTreeView.Selected; | |
6097 | - GikoDM.FavoriteTreeViewReloadActionExecute( Sender ); | |
6098 | - end; | |
6074 | + FavoriteTreeViewDblClick( Sender ); | |
6099 | 6075 | end; |
6100 | 6076 | end else begin |
6101 | 6077 | //ÒWÉESCðµ½çAÒWðI¹µÄA³Ì¶ñÉß· |
@@ -6228,6 +6204,27 @@ begin | ||
6228 | 6204 | end; |
6229 | 6205 | |
6230 | 6206 | end; |
6207 | +// ************************************************************************* | |
6208 | +//! ¨CÉüèc[Ì_uNbNCxg | |
6209 | +// ************************************************************************* | |
6210 | +procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject); | |
6211 | +var | |
6212 | + pos : TPoint; | |
6213 | + rect: TRect; | |
6214 | +begin | |
6215 | + //NbNÌIðCxgƯ¶Èç_uNbNÀs | |
6216 | + pos := FMouseDownPos; | |
6217 | + if (FClickNode <> nil) and (FClickNode = FavoriteTreeView.GetNodeAt(pos.X, pos.Y)) then begin | |
6218 | + //}EXª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 | + | |
6231 | 6228 | function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode; |
6232 | 6229 | var |
6233 | 6230 | Found: TTreeNode; |
@@ -6313,8 +6310,6 @@ begin | ||
6313 | 6310 | finally |
6314 | 6311 | FDropSpaceNode := nil; |
6315 | 6312 | end; |
6316 | - //XVµ½±Æð³¦é | |
6317 | - FavoriteDM.Modified := true; | |
6318 | 6313 | SetLinkBar; |
6319 | 6314 | end; |
6320 | 6315 |
@@ -6658,8 +6653,13 @@ begin | ||
6658 | 6653 | |
6659 | 6654 | end; |
6660 | 6655 | // ************************************************************************* |
6661 | -//! c[r [ÌKeyDownCxg | |
6656 | +//! c[r [ÌNbNCxg | |
6662 | 6657 | // ************************************************************************* |
6658 | +procedure TGikoForm.TreeViewClick(Sender: TObject); | |
6659 | +begin | |
6660 | + FClickNode := TreeView.Selected; | |
6661 | + FMouseDownPos := TreeView.ScreenToClient(Mouse.CursorPos); | |
6662 | +end; | |
6663 | 6663 | procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word; |
6664 | 6664 | Shift: TShiftState); |
6665 | 6665 | begin |
@@ -6672,35 +6672,21 @@ begin | ||
6672 | 6672 | TreeView.Selected.Expanded := not TreeView.Selected.Expanded; |
6673 | 6673 | end; |
6674 | 6674 | end; |
6675 | -//! ¨CÉüèÌMouseDownCxg | |
6675 | + | |
6676 | 6676 | procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject; |
6677 | 6677 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer); |
6678 | 6678 | var |
6679 | 6679 | favItem : TTreeNode; |
6680 | 6680 | favThreadItem : TFavoriteThreadItem; |
6681 | - rect: TRect; | |
6682 | 6681 | begin |
6682 | + | |
6683 | 6683 | case Button of |
6684 | - mbLeft: | |
6684 | +{ mbLeft: | |
6685 | 6685 | begin |
6686 | - if not (ssAlt in Shift) and (FavoriteTreeView.Selected <> nil) and | |
6687 | - (FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y)) then begin | |
6688 | - //}EXªnodeÌãÉ¢é© | |
6689 | - rect := FavoriteTreeView.Selected.DisplayRect(true); | |
6690 | - if ((rect.Left <= X) and (rect.Right >= X)) and | |
6691 | - ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin | |
6692 | - if ssDouble in Shift then begin | |
6693 | - FClickNode := FavoriteTreeView.Selected; | |
6694 | - GikoDM.FavoriteTreeViewReloadActionExecute(Sender); | |
6695 | - FClickNode := nil; | |
6696 | - end else begin | |
6697 | - FavoriteClick( | |
6698 | - TObject(FavoriteTreeView.Selected)); | |
6699 | - end; | |
6700 | - end; | |
6701 | - end; | |
6686 | + FMouseDownPos.X := X; | |
6687 | + FMouseDownPos.Y := Y; | |
6702 | 6688 | end; |
6703 | - mbMiddle: | |
6689 | +} mbMiddle: | |
6704 | 6690 | begin |
6705 | 6691 | favItem := FavoriteTreeView.GetNodeAt( X, Y ); |
6706 | 6692 | if favItem = nil then Exit; |
@@ -6760,6 +6746,16 @@ end; | ||
6760 | 6746 | // ************************************************************************* |
6761 | 6747 | //! ¨CÉüèc[Ì}EXAbvCxg |
6762 | 6748 | // ************************************************************************* |
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 | + | |
6763 | 6759 | function TGikoForm.WebBrowserClick(Sender: TObject): WordBool; |
6764 | 6760 | var |
6765 | 6761 | p : TPoint; |
@@ -6838,21 +6834,18 @@ var | ||
6838 | 6834 | rec : TBrowserRecord; |
6839 | 6835 | i, bound : Integer; |
6840 | 6836 | begin |
6841 | - bound := BrowserTab.Tabs.Count -1; | |
6837 | + bound := BrowserTab.Tabs.Count -1; | |
6842 | 6838 | if bound = -1 then begin |
6843 | 6839 | Result := False; |
6844 | 6840 | Exit; //forÉòÎÈ¢Åìð²¯é |
6845 | - end; | |
6841 | + end; | |
6846 | 6842 | |
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; | |
6856 | 6849 | end; |
6857 | 6850 | |
6858 | 6851 | function TGikoForm.SaveTabURLs : Boolean; |
@@ -6867,15 +6860,12 @@ begin | ||
6867 | 6860 | SaveStringList := TStringList.Create; |
6868 | 6861 | try |
6869 | 6862 | 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); | |
6874 | 6866 | |
6875 | - //obNAbvðìéB | |
6876 | - RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename); | |
6877 | - end; | |
6878 | - except | |
6867 | + //obNAbvðìéB | |
6868 | + RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename); | |
6879 | 6869 | end; |
6880 | 6870 | SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename); |
6881 | 6871 | Result := true; |
@@ -6886,8 +6876,6 @@ begin | ||
6886 | 6876 | end; |
6887 | 6877 | |
6888 | 6878 | function TGikoForm.LoadTabURLs : Boolean; |
6889 | -const | |
6890 | - TABFILE = 'tab.sav'; | |
6891 | 6879 | var |
6892 | 6880 | i, bound : Integer; |
6893 | 6881 | item : TThreadItem; |
@@ -6896,7 +6884,7 @@ var | ||
6896 | 6884 | fileName : string; |
6897 | 6885 | begin |
6898 | 6886 | |
6899 | - fileName := ExtractFilePath(Application.ExeName) + TABFILE; | |
6887 | + fileName := ExtractFilePath(Application.ExeName) + 'tab.sav'; | |
6900 | 6888 | URLs := TStringList.Create(); |
6901 | 6889 | GikoTab := GikoSys.Setting.BrowserTabAppend; |
6902 | 6890 | try |
@@ -6912,10 +6900,6 @@ begin | ||
6912 | 6900 | if item <> nil then |
6913 | 6901 | InsertBrowserTab( item, false ); |
6914 | 6902 | end; |
6915 | - //ÅÌPÉÝè AhXÌÝè̽ßÌJÄÑ | |
6916 | - if BrowserTab.Tabs.Count > 0 then begin | |
6917 | - BrowserTab.OnChange(nil); | |
6918 | - end; | |
6919 | 6903 | end else |
6920 | 6904 | Result := False; |
6921 | 6905 | end else |
@@ -7635,6 +7619,61 @@ begin | ||
7635 | 7619 | end; |
7636 | 7620 | end; |
7637 | 7621 | // ************************************************************************* |
7622 | +//! ¨CÉüèc[ÌNbNCxg | |
7623 | +// ************************************************************************* | |
7624 | +procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject); | |
7625 | +begin | |
7626 | + //»ÝIð³êÄ¢éACeðÛ¶ | |
7627 | + FClickNode := FavoriteTreeView.Selected; | |
7628 | + FMouseDownPos := FavoriteTreeView.ScreenToClient(Mouse.CursorPos); | |
7629 | +end; | |
7630 | +// ************************************************************************* | |
7631 | +//! ¨CÉüèc[ÌACeÌk¬Cxg | |
7632 | +// ************************************************************************* | |
7633 | +procedure TGikoForm.FavoriteTreeViewCollapsing(Sender: TObject; | |
7634 | + Node: TTreeNode; var AllowCollapse: Boolean); | |
7635 | +begin | |
7636 | + //k¬³ê½çÛ¶³êÄ¢éNbNIðACeðNA | |
7637 | + FClickNode := nil; | |
7638 | +end; | |
7639 | +// ************************************************************************* | |
7640 | +//! ¨CÉüèc[ÌACeÌWJCxg | |
7641 | +// ************************************************************************* | |
7642 | +procedure TGikoForm.FavoriteTreeViewExpanding(Sender: TObject; | |
7643 | + Node: TTreeNode; var AllowExpansion: Boolean); | |
7644 | +begin | |
7645 | + //WJ³ê½çÛ¶³êÄ¢éNbNIðACeðNA | |
7646 | + FClickNode := nil; | |
7647 | +end; | |
7648 | +// ************************************************************************* | |
7649 | +//! c[r [ÌACeÌk¬Cxg | |
7650 | +// ************************************************************************* | |
7651 | +procedure TGikoForm.TreeViewCollapsing(Sender: TObject; Node: TTreeNode; | |
7652 | + var AllowCollapse: Boolean); | |
7653 | +begin | |
7654 | + FClickNode := nil; | |
7655 | +end; | |
7656 | +// ************************************************************************* | |
7657 | +//! c[r [ÌACeÌWJCxg | |
7658 | +// ************************************************************************* | |
7659 | +procedure TGikoForm.TreeViewExpanding(Sender: TObject; Node: TTreeNode; | |
7660 | + var AllowExpansion: Boolean); | |
7661 | +begin | |
7662 | + FClickNode := nil; | |
7663 | +end; | |
7664 | +// ************************************************************************* | |
7665 | +//! c[r [Ì}EXAbvCxg | |
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 | +// ************************************************************************* | |
7638 | 7677 | //! _E[hRg[Xbh̶¬ |
7639 | 7678 | // ************************************************************************* |
7640 | 7679 | procedure TGikoForm.CreateControlThread(); |
@@ -7742,32 +7781,6 @@ begin | ||
7742 | 7781 | except |
7743 | 7782 | end; |
7744 | 7783 | end; |
7745 | -//! LrlbgÌ}EX_ECxg | |
7746 | -procedure TGikoForm.TreeViewMouseDown(Sender: TObject; | |
7747 | - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); | |
7748 | -var | |
7749 | - rect : TRect; | |
7750 | -begin | |
7751 | - case Button of | |
7752 | - mbLeft: | |
7753 | - begin | |
7754 | - if (TreeView.Selected <> nil) and | |
7755 | - (TreeView.Selected = TreeView.GetNodeAt(X, Y)) then begin | |
7756 | - //}EXªnodeÌãÉ¢é© | |
7757 | - rect := TreeView.Selected.DisplayRect(true); | |
7758 | - if ((rect.Left <= X) and (rect.Right >= X)) and | |
7759 | - ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin | |
7760 | - // NbNÆ_uNbNðRRÅ»è | |
7761 | - if ssDouble in Shift then begin | |
7762 | - TreeDoubleClick( TreeView.Selected ); | |
7763 | - end else begin | |
7764 | - TreeClick(TreeView.Selected); | |
7765 | - end; | |
7766 | - end; | |
7767 | - end; | |
7768 | - end; | |
7769 | - end; | |
7770 | -end; | |
7771 | 7784 | |
7772 | 7785 | initialization |
7773 | 7786 | OleInitialize(nil); |
@@ -1195,12 +1195,6 @@ object GikoDM: TGikoDM | ||
1195 | 1195 | Hint = #12462#12467#12490#12499'Wiki'#12398'FAQ'#12434#34920#31034#12377#12427 |
1196 | 1196 | OnExecute = WikiFAQWebPageActionExecute |
1197 | 1197 | end |
1198 | - object ThreadSizeCalcForFileAction: TAction | |
1199 | - Category = #12484#12540#12523 | |
1200 | - Caption = #12473#12524#12483#12489#12398#23481#37327#12434#12501#12449#12452#12523#12363#12425#20877#35336#31639#12377#12427 | |
1201 | - Hint = #12473#12524#12483#12489#12398#23481#37327#12434#12501#12449#12452#12523#12363#12425#20877#35336#31639#12377#12427 | |
1202 | - OnExecute = ThreadSizeCalcForFileActionExecute | |
1203 | - end | |
1204 | 1198 | end |
1205 | 1199 | object ToobarImageList: TImageList |
1206 | 1200 | Left = 44 |
@@ -211,7 +211,6 @@ type | ||
211 | 211 | WikiFAQWebPageAction: TAction; |
212 | 212 | ToobarImageList: TImageList; |
213 | 213 | SaveDialog: TSaveDialog; |
214 | - ThreadSizeCalcForFileAction: TAction; | |
215 | 214 | procedure EditNGActionExecute(Sender: TObject); |
216 | 215 | procedure ReloadActionExecute(Sender: TObject); |
217 | 216 | procedure GoFowardActionExecute(Sender: TObject); |
@@ -393,9 +392,9 @@ type | ||
393 | 392 | procedure MidokuActionExecute(Sender: TObject); |
394 | 393 | procedure AllSelectActionExecute(Sender: TObject); |
395 | 394 | procedure AllSelectActionUpdate(Sender: TObject); |
396 | - procedure ThreadSizeCalcForFileActionExecute(Sender: TObject); | |
397 | 395 | private |
398 | 396 | { Private é¾ } |
397 | + procedure RepaintStatusBar; | |
399 | 398 | procedure ClearResFilter; |
400 | 399 | procedure SetResRange(range: Integer); |
401 | 400 | procedure SetThreadAreaHorNormal; |
@@ -404,11 +403,8 @@ type | ||
404 | 403 | procedure SetThreadAreaVertical(gls : TGikoListState); |
405 | 404 | procedure SetThreadReadProperty(read: Boolean); |
406 | 405 | procedure SelectThreadSaveToFile(dat: Boolean); |
407 | - function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean; | |
408 | - procedure RecalcThreadSize(limit : Integer); | |
409 | 406 | public |
410 | 407 | { Public é¾ } |
411 | - procedure RepaintStatusBar; | |
412 | 408 | published |
413 | 409 | { Published é¾ } |
414 | 410 | //! TActionÅGetActiveContentªnilÈOÅLøÉÈé |
@@ -434,7 +430,7 @@ uses | ||
434 | 430 | ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon, |
435 | 431 | GikoBayesian, About, ShellAPI, |
436 | 432 | RoundName, RoundData, Menus, ListViewUtils, |
437 | - ThreadControl, GikoMessage; | |
433 | + ThreadControl; | |
438 | 434 | |
439 | 435 | |
440 | 436 | {$R *.dfm} |
@@ -520,10 +516,9 @@ var | ||
520 | 516 | begin |
521 | 517 | //Xe[^XÉ\¦³êéNG[ht@C¼ðXV |
522 | 518 | s := GikoSys.FAbon.NGwordname; |
523 | - GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s; | |
519 | + GikoForm.StatusBar.Panels.Items[2].Text := s; | |
524 | 520 | //Xe[^XÌ\¦TCYÌTCY |
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); | |
527 | 522 | GikoForm.StatusBarResize(nil); |
528 | 523 | end; |
529 | 524 | // ************************************************************************* |
@@ -615,8 +610,7 @@ begin | ||
615 | 610 | end else begin |
616 | 611 | GikoForm.ClickNode.Text := InputBox( '¼OÌÏX', '¨CÉüèÌVµ¢¼Oðü͵ľ³¢', GikoForm.ClickNode.Text ); |
617 | 612 | end; |
618 | - //XVµ½±Æð³¦é | |
619 | - FavoriteDM.Modified := true; | |
613 | + | |
620 | 614 | GikoForm.SetLinkBar; |
621 | 615 | end; |
622 | 616 | // ************************************************************************* |
@@ -644,8 +638,6 @@ begin | ||
644 | 638 | // FClickNode.Selected.Expanded := True; |
645 | 639 | GikoForm.FavoriteTreeView.Selected := Node; |
646 | 640 | GikoForm.ClickNode := Node; |
647 | - //XVµ½±Æð³¦é | |
648 | - FavoriteDM.Modified := true; | |
649 | 641 | FavoriteTreeViewRenameAction.Execute; |
650 | 642 | finally |
651 | 643 | end; |
@@ -676,8 +668,6 @@ begin | ||
676 | 668 | end; |
677 | 669 | |
678 | 670 | GikoForm.ClickNode.Delete; |
679 | - //XVµ½±Æð³¦é | |
680 | - FavoriteDM.Modified := true; | |
681 | 671 | |
682 | 672 | GikoForm.SetLinkBar; |
683 | 673 |
@@ -695,21 +685,26 @@ end; | ||
695 | 685 | // ************************************************************************* |
696 | 686 | procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject); |
697 | 687 | var |
688 | + ThreadItem: TThreadItem; | |
698 | 689 | FavThread: TFavoriteThreadItem; |
690 | + Board: TBoard; | |
699 | 691 | FavBoard: TFavoriteBoardItem; |
700 | 692 | shiftDown: Boolean; |
701 | 693 | begin |
702 | - if (GikoForm.ClickNode = nil) then Exit; | |
694 | + | |
695 | + if GikoForm.ClickNode = nil then Exit; | |
703 | 696 | |
704 | 697 | shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001); |
705 | 698 | |
706 | 699 | if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin |
707 | 700 | 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); | |
710 | 704 | end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin |
711 | 705 | FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data ); |
712 | - GikoForm.DownloadList(FavBoard.Item, shiftDown); | |
706 | + Board := FavBoard.Item; | |
707 | + GikoForm.DownloadList(Board, shiftDown); | |
713 | 708 | end; |
714 | 709 | |
715 | 710 | end; |
@@ -1822,7 +1817,7 @@ begin | ||
1822 | 1817 | //OAEg |
1823 | 1818 | GikoSys.Dolib.Disconnect; |
1824 | 1819 | LoginAction.Checked := False; |
1825 | - GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK); | |
1820 | + GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK); | |
1826 | 1821 | LoginAction.Caption := 'OC(&L)'; |
1827 | 1822 | end else begin |
1828 | 1823 | TmpCursor := GikoForm.ScreenCursor; |
@@ -1842,7 +1837,7 @@ begin | ||
1842 | 1837 | end; |
1843 | 1838 | if GikoSys.Dolib.Connect then begin |
1844 | 1839 | 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); | |
1846 | 1841 | LoginAction.Caption := 'OAEg(&L)'; |
1847 | 1842 | //LoginToolButton.Style := tbsCheck; |
1848 | 1843 | end else begin |
@@ -1872,7 +1867,7 @@ begin | ||
1872 | 1867 | GikoSys.Dolib.ForcedConnect; |
1873 | 1868 | if GikoSys.Dolib.Connect then begin |
1874 | 1869 | 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); | |
1876 | 1871 | LoginAction.Caption := 'OAEg(&L)'; |
1877 | 1872 | //LoginToolButton.Style := tbsCheck; |
1878 | 1873 | end else begin |
@@ -3048,44 +3043,26 @@ begin | ||
3048 | 3043 | |
3049 | 3044 | end; |
3050 | 3045 | // ************************************************************************* |
3051 | -//! XêÌ\¦µÄ¢éàeɵ½ªÁÄA\[gJÌÊuÆûüðæ¾·é | |
3052 | -// ************************************************************************* | |
3053 | -function TGikoDM.GetSortProperties(List: TObject; | |
3054 | - var vSortOrder: Boolean): Boolean; | |
3055 | -begin | |
3056 | - Result := True; | |
3057 | - if (List <> nil) then begin | |
3058 | - if (List is TBBS) then begin | |
3059 | - vSortOrder := GikoSys.Setting.BBSSortOrder; | |
3060 | - end else if (List is TCategory) then begin | |
3061 | - vSortOrder := GikoSys.Setting.CategorySortOrder; | |
3062 | - end else if (List is TBoard) then begin | |
3063 | - vSortOrder := GikoSys.Setting.BoardSortOrder; | |
3064 | - end else begin | |
3065 | - Result := False; | |
3066 | - end; | |
3067 | - end else begin | |
3068 | - Result := False; | |
3069 | - end; | |
3070 | -end; | |
3071 | -// ************************************************************************* | |
3072 | 3046 | //! »ÝÌJð\[g·é |
3073 | 3047 | // ************************************************************************* |
3074 | 3048 | procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject); |
3075 | 3049 | var |
3076 | 3050 | i : Integer; |
3077 | 3051 | so : boolean; |
3052 | + si : Integer; | |
3078 | 3053 | 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; | |
3089 | 3066 | end; |
3090 | 3067 | end; |
3091 | 3068 | end; |
@@ -3095,6 +3072,8 @@ end; | ||
3095 | 3072 | procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject); |
3096 | 3073 | var |
3097 | 3074 | i, id : Integer; |
3075 | + so : boolean; | |
3076 | + si : Integer; | |
3098 | 3077 | begin |
3099 | 3078 | for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin |
3100 | 3079 | if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or |
@@ -3102,9 +3081,14 @@ begin | ||
3102 | 3081 | id := i + 1; |
3103 | 3082 | if id > GikoForm.ListView.Columns.Count - 1 then |
3104 | 3083 | id := 0; |
3084 | + GikoForm.SortOrder := id = 0; | |
3085 | + so := GikoForm.SortOrder; | |
3086 | + si := GikoForm.SortIndex; | |
3105 | 3087 | TListViewUtils.ListViewSort( nil, GikoForm.ListView, |
3106 | 3088 | GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, |
3107 | - id = 0); | |
3089 | + so, si ); | |
3090 | + GikoForm.SortIndex := si; | |
3091 | + GikoForm.SortOrder := so; | |
3108 | 3092 | break; |
3109 | 3093 | end; |
3110 | 3094 | end; |
@@ -3115,6 +3099,8 @@ end; | ||
3115 | 3099 | procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject); |
3116 | 3100 | var |
3117 | 3101 | i, id : Integer; |
3102 | + so : boolean; | |
3103 | + si : Integer; | |
3118 | 3104 | begin |
3119 | 3105 | for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin |
3120 | 3106 | if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or |
@@ -3122,9 +3108,14 @@ begin | ||
3122 | 3108 | id := i - 1; |
3123 | 3109 | if id < 0 then |
3124 | 3110 | id := GikoForm.ListView.Columns.Count - 1; |
3111 | + GikoForm.SortOrder := id = 0; | |
3112 | + so := GikoForm.SortOrder; | |
3113 | + si := GikoForm.SortIndex; | |
3125 | 3114 | TListViewUtils.ListViewSort( nil, GikoForm.ListView, |
3126 | 3115 | GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked, |
3127 | - id = 0); | |
3116 | + so, si ); | |
3117 | + GikoForm.SortIndex := si; | |
3118 | + GikoForm.SortOrder := so; | |
3128 | 3119 | break; |
3129 | 3120 | end; |
3130 | 3121 | end; |
@@ -3700,88 +3691,5 @@ begin | ||
3700 | 3691 | AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0; |
3701 | 3692 | end; |
3702 | 3693 | ////////////////////////////////ÒWÜŨµÜ¢///////////////////// |
3703 | -//! XbhÌTCYðÄvZ·é | |
3704 | -procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject); | |
3705 | -const | |
3706 | - RECALC_MES : String = 'XbhÌeÊðt@C©çÄvZµÜ·B'#13#10 + | |
3707 | - '±ÌìAMRir̼Ììð·éÆf[^ªjó³êé°êª èÜ·B' + | |
3708 | - 'ܽ±ÌìÍAñíÉÔª©©éêª èÜ·ªAæ뵢ŷ©H'; | |
3709 | - RECALC_TITLE : String = 'XbhÌeÊðt@C©çÄvZ'; | |
3710 | - LIMIT_SIZE = 1024; | |
3711 | -var | |
3712 | - limitSize : Integer; | |
3713 | - limitStr : String; | |
3714 | -begin | |
3715 | -{ ܸAÔª©©é±Æðx·ébZ[WðoÍ | |
3716 | - ÄvZ·éXbhÌTCYÌèliftHg1024B)ðmF | |
3717 | - vOCðpµÈ¢Æ±ëÅSÄÌOLèXbhðõ | |
3718 | - èlȺÌTCYÌêADATÌt@CTCYÆärA¸êÄ¢êÎA | |
3719 | - DATÌt@CTCYÅXV·é | |
3720 | -} | |
3721 | - if MsgBox(GikoForm.Handle, RECALC_MES, | |
3722 | - RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin | |
3723 | - //èlÌmF | |
3724 | - limitSize := LIMIT_SIZE; | |
3725 | - limitStr := IntToStr(limitSize); | |
3726 | - if InputQuery('èlüÍ', 'wèµ½l BȺÌeÊÌXbhÌÝÄvZµÜ·', limitStr) then begin | |
3727 | - limitSize := StrToInt(MojuUtils.ZenToHan(limitStr)); | |
3728 | - if (limitSize < 0) then begin | |
3729 | - ShowMessage('èlÉÍwèūܹñI'); | |
3730 | - ThreadSizeCalcForFileActionExecute(nil); | |
3731 | - end else begin | |
3732 | - RecalcThreadSize(limitSize); | |
3733 | - end; | |
3734 | - end; | |
3735 | - end; | |
3736 | -end; | |
3737 | -//! limitæèàTCY̬³¢XbhÌeÊðDATt@C©çvZ | |
3738 | -procedure TGikoDM.RecalcThreadSize(limit : Integer); | |
3739 | -var | |
3740 | - i, j, tmpSize : Integer; | |
3741 | - Obj : TObject; | |
3742 | - Board : TBoard; | |
3743 | - Thread: TThreadItem; | |
3744 | - dat : TStringList; | |
3745 | -begin | |
3746 | - // ÄvZX^[g@vOCðpµÈ¢Æ±ëðS©éI | |
3747 | - GikoForm.ScreenCursor := crHourGlass; | |
3748 | - try | |
3749 | - GikoForm.ProgressBar.Max := BoardGroups[0].Count; | |
3750 | - for i := 0 to BoardGroups[0].Count - 1 do begin | |
3751 | - Obj := BoardGroups[0].Objects[i]; | |
3752 | - if (Obj <> nil) then begin | |
3753 | - Board := TBoard(Obj); | |
3754 | - if not Board.IsThreadDatRead then begin | |
3755 | - GikoSys.ReadSubjectFile(Board); | |
3756 | - end; | |
3757 | - for j := 0 to Board.Count - 1 do begin | |
3758 | - Thread := Board.Items[j]; | |
3759 | - if (Thread <> nil) and (Thread.IsLogFile) | |
3760 | - and (Thread.Size <= limit) then begin | |
3761 | - dat := TStringList.Create; | |
3762 | - try | |
3763 | - tmpSize := Thread.Size; | |
3764 | - try | |
3765 | - dat.LoadFromFile(Thread.GetThreadFileName); | |
3766 | - tmpSize := Length(dat.Text); | |
3767 | - tmpSize := tmpSize - dat.Count; | |
3768 | - except | |
3769 | - end; | |
3770 | - Thread.Size := tmpSize; | |
3771 | - finally | |
3772 | - dat.Free; | |
3773 | - end; | |
3774 | - end; | |
3775 | - end; | |
3776 | - end; | |
3777 | - GikoForm.ProgressBar.StepBy(1); | |
3778 | - end; | |
3779 | - finally | |
3780 | - GikoForm.ScreenCursor := crDefault; | |
3781 | - end; | |
3782 | - GikoForm.ProgressBar.Position := 0; | |
3783 | - ShowMessage('vZI¹µÜµ½B'); | |
3784 | -end; | |
3785 | - | |
3786 | 3694 | end. |
3787 | 3695 |
@@ -1,68 +0,0 @@ | ||
1 | -unit GikoMessage; | |
2 | - | |
3 | -interface | |
4 | - | |
5 | -uses | |
6 | - Classes, IniFiles; | |
7 | - | |
8 | -type | |
9 | - //! MessageList | |
10 | - TGikoMessageListType = (gmLogout, gmLogin, gmForceLogin, gmSureItiran, | |
11 | - gmUnKnown, gmSureSyutoku, gmSureDiff, gmNotMod, gmAbort, gmError, | |
12 | - gmNewRes, gmNewSure, gmResError, gmSureError); | |
13 | - | |
14 | - TGikoMessage = class(THashedStringList) | |
15 | - private | |
16 | - public | |
17 | - constructor Create; | |
18 | - function GetMessage(MesType: TGikoMessageListType): String; | |
19 | - end; | |
20 | - | |
21 | -implementation | |
22 | - | |
23 | -const | |
24 | - DEF_MESSAGES : array[0..13] of string = ( 'OAEgµÜµ½', | |
25 | - 'OCµÜµ½ - ', | |
26 | - '§OCµÜµ½ - ', | |
27 | - '[Xêæ¾®¹]', | |
28 | - '(¼Ìs¾j', | |
29 | - '[Xæ¾®¹]', | |
30 | - '[X·ªæ¾®¹]', | |
31 | - '[¢XV]', | |
32 | - '[f]', | |
33 | - '[G[]', | |
34 | - '[XMI¹]', | |
35 | - '[VXMI¹]', | |
36 | - '[XM¸s]', | |
37 | - '[VXM¸s]'); | |
38 | - | |
39 | - MESSAGE_KEYS : array[0..13] of String = ( 'Logout', 'Login', | |
40 | - 'ForceLogin', 'SureItiran', | |
41 | - 'UnKnown', 'SureSyutoku', | |
42 | - 'SureDiff', 'NotMod', | |
43 | - 'Abort', 'Error', | |
44 | - 'NewRes', 'NewSure', | |
45 | - 'ResError', 'SureError'); | |
46 | - | |
47 | -constructor TGikoMessage.Create; | |
48 | -begin | |
49 | - inherited Create; | |
50 | - Self.Sorted := true; | |
51 | - Self.Duplicates := dupIgnore; | |
52 | -end; | |
53 | -//! MesTypeÅwè³ê½bZ[W¶ñðæ¾·é | |
54 | -function TGikoMessage.GetMessage(MesType: TGikoMessageListType): String; | |
55 | -begin | |
56 | - Result := ''; | |
57 | - if MesType in [gmLogout..gmSureError] then begin | |
58 | - //KeyÅõµÄ©Â©êλêðÔ· | |
59 | - Result := Self.Values[MESSAGE_KEYS[Ord(MesType)]]; | |
60 | - if Result = '' then begin | |
61 | - //©Â©çÈ¢ÌÅAftHgÅÔ· | |
62 | - Result := DEF_MESSAGES[Ord(MesType)]; | |
63 | - end; | |
64 | - end; | |
65 | -end; | |
66 | - | |
67 | -end. | |
68 | - | |
\ No newline at end of file |
@@ -15,7 +15,7 @@ uses | ||
15 | 15 | {HttpApp,} URLMon, IdGlobal, IdURI, {Masks,} |
16 | 16 | Setting, BoardGroup, gzip, Dolib, bmRegExp, AbonUnit, |
17 | 17 | ExternalBoardManager, ExternalBoardPlugInMain, |
18 | - GikoBayesian, GikoMessage; | |
18 | + GikoBayesian; | |
19 | 19 | |
20 | 20 | type |
21 | 21 | TVerResourceKey = ( |
@@ -102,6 +102,11 @@ type | ||
102 | 102 | FNoParam: Boolean; //!< XÔp[^ȵ |
103 | 103 | end; |
104 | 104 | |
105 | + //! MessageList | |
106 | + TGikoMessageListType = (gmLogout, gmLogin, gmForceLogin, gmSureItiran, | |
107 | + gmUnKnown, gmSureSyutoku, gmSureDiff, gmNotMod, gmAbort, gmError, | |
108 | + gmNewRes, gmNewSure, gmResError, gmSureError); | |
109 | + | |
105 | 110 | TGikoSys = class(TObject) |
106 | 111 | private |
107 | 112 | { Private é¾ } |
@@ -111,7 +116,8 @@ type | ||
111 | 116 | FResRange : Longint; |
112 | 117 | FBayesian : TGikoBayesian; //!< xCWAtB^ |
113 | 118 | FVersion : String; //!< t@Co[W |
114 | - FGikoMessage: TGikoMessage; | |
119 | +// FExitWrite: TStringList; | |
120 | +// function StrToFloatDef(s: string; Default: Double): Double; | |
115 | 121 | public |
116 | 122 | { Public é¾ } |
117 | 123 | FAbon : TAbon; |
@@ -241,10 +247,7 @@ type | ||
241 | 247 | //! IEÌo[WîñÌæ¾ |
242 | 248 | function GetIEVersion: string; |
243 | 249 | function SetUserOptionalStyle(): string; |
244 | - //! MRirÌbZ[WðÝè·é | |
245 | - procedure SetGikoMessage; | |
246 | - //! MRirÌbZ[Wðæ¾·é | |
247 | - function GetGikoMessage(MesType: TGikoMessageListType): String; | |
250 | + | |
248 | 251 | end; |
249 | 252 | |
250 | 253 | var |
@@ -321,8 +324,6 @@ begin | ||
321 | 324 | FVersion := Trim(GetVersionInfo(vrFileVersion)); |
322 | 325 | FBayesian := TGikoBayesian.Create; |
323 | 326 | //FBoardURLList := TStringList.Create; |
324 | - //bZ[WÌì¬ | |
325 | - FGikoMessage := TGikoMessage.Create; | |
326 | 327 | end; |
327 | 328 | |
328 | 329 | // ************************************************************************* |
@@ -343,7 +344,6 @@ begin | ||
343 | 344 | FDolib.Free; |
344 | 345 | FAbon.Free; |
345 | 346 | FSelectResFilter.Free; |
346 | - FGikoMessage.Free; | |
347 | 347 | //FBoardURLList.Free; |
348 | 348 | //e|HTMLðí |
349 | 349 | FileList := TStringList.Create; |
@@ -720,7 +720,7 @@ begin | ||
720 | 720 | ThreadItem.RoundDate := ZERO_DATE; |
721 | 721 | ThreadItem.LastModified := ZERO_DATE; |
722 | 722 | ThreadItem.Kokomade := -1; |
723 | - ThreadItem.NewReceive := 0; | |
723 | + ThreadItem.NewReceive := ThreadItem.Count; | |
724 | 724 | ThreadItem.ParentBoard := Board; |
725 | 725 | ThreadItem.IsLogFile := True; |
726 | 726 | ThreadItem.Round := False; |
@@ -3249,33 +3249,6 @@ begin | ||
3249 | 3249 | Result := Setting.GetEditorKeyFileName; |
3250 | 3250 | end; |
3251 | 3251 | |
3252 | -//! MRirÌbZ[WðÝè·é | |
3253 | -procedure TGikoSys.SetGikoMessage; | |
3254 | -begin | |
3255 | - if FGikoMessage = nil then begin | |
3256 | - FGikoMessage := TGikoMessage.Create; | |
3257 | - end else begin | |
3258 | - FGikoMessage.Clear; | |
3259 | - end; | |
3260 | - | |
3261 | - if (Setting.GengoSupport) then begin | |
3262 | - try | |
3263 | - if (FileExists(Setting.GetLanguageFileName)) then begin | |
3264 | - FGikoMessage.LoadFromFile(Setting.GetLanguageFileName); | |
3265 | - end; | |
3266 | - except | |
3267 | - FGikoMessage.Clear; | |
3268 | - end; | |
3269 | - end; | |
3270 | -end; | |
3271 | -//! MRirÌbZ[Wðæ¾·é | |
3272 | -function TGikoSys.GetGikoMessage(MesType: TGikoMessageListType): String; | |
3273 | -begin | |
3274 | - Result := ''; | |
3275 | - if FGikoMessage <> nil then begin | |
3276 | - Result := FGikoMessage.GetMessage(MesType); | |
3277 | - end; | |
3278 | -end; | |
3279 | 3252 | |
3280 | 3253 | initialization |
3281 | 3254 | GikoSys := TGikoSys.Create; |
@@ -506,18 +506,17 @@ function THTMLCreate.checkComma( | ||
506 | 506 | var |
507 | 507 | bType : TMbcsByteType; |
508 | 508 | begin |
509 | - Result := false; | |
510 | - if (Length(s) > 0) then begin | |
511 | - bType := ByteType(s, j); | |
512 | - if ((bType = mbSingleByte) and (s[j] = ',') or | |
513 | - ((bType = mbLeadByte) and (ZenToHan(Copy(s, j ,2)) = ','))) then begin | |
514 | - Result := true; | |
515 | - if (bType = mbSingleByte) then | |
516 | - Inc(j) | |
517 | - else | |
518 | - Inc(j, 2); | |
519 | - No := ''; | |
520 | - end; | |
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; | |
521 | 520 | end; |
522 | 521 | end; |
523 | 522 | function THTMLCreate.addResAnchor( |
@@ -53,7 +53,7 @@ type | ||
53 | 53 | function ParseCgiStatus(Content: string): TCgiStatus; |
54 | 54 | function CgiDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime): Boolean; |
55 | 55 | function DatDownload(ItemType: TGikoDownloadType; URL: string; Modified: TDateTime; RangeStart: Integer; AdjustLen: Integer): Boolean; |
56 | - procedure DeleteStatusLine(Item: TDownloadItem); | |
56 | + function DeleteStatusLine(Content: string): string; | |
57 | 57 | procedure InitHttpClient(client: TIdHttp); |
58 | 58 | procedure ClearHttpClient(client: TIdHttp); |
59 | 59 | protected |
@@ -532,7 +532,8 @@ begin | ||
532 | 532 | Writeln('CGIStatus: OK'); |
533 | 533 | {$ENDIF} |
534 | 534 | Item.ResponseCode := 200; |
535 | - DeleteStatusLine(Item); | |
535 | + Item.Content := DeleteStatusLine(Item.Content); | |
536 | + Item.ContentLength := CgiStatus.FSize; | |
536 | 537 | end; |
537 | 538 | gcsINCR: begin |
538 | 539 | //¡Í è¦È¢ |
@@ -540,7 +541,8 @@ begin | ||
540 | 541 | Writeln('CGIStatus: 206'); |
541 | 542 | {$ENDIF} |
542 | 543 | Item.ResponseCode := 206; |
543 | - DeleteStatusLine(Item); | |
544 | + Item.Content := DeleteStatusLine(Item.Content); | |
545 | + Item.ContentLength := CgiStatus.FSize; | |
544 | 546 | end; |
545 | 547 | gcsERR: begin |
546 | 548 | {$IFDEF DEBUG} |
@@ -889,20 +891,17 @@ begin | ||
889 | 891 | end; |
890 | 892 | end; |
891 | 893 | |
892 | -//PsÚðÁµÄARecTCYðÝè·é | |
893 | -procedure TDownloadThread.DeleteStatusLine(Item: TDownloadItem); | |
894 | +//貫ÈÅ1sÚðÁ· | |
895 | +function TDownloadThread.DeleteStatusLine(Content: string): string; | |
894 | 896 | var |
895 | 897 | SList: TStringList; |
896 | 898 | begin |
897 | 899 | SList := TStringList.Create; |
898 | 900 | try |
899 | - SList.Text := Item.Content; | |
900 | - //1sÚðí | |
901 | + SList.Text := Content; | |
901 | 902 | if SList.Count > 1 then |
902 | 903 | SList.Delete(0); |
903 | - Item.Content := SList.Text; | |
904 | - //üsR[hðCRLF -> LFÆl¦ÄAsª¾¯}CiX | |
905 | - Item.ContentLength := Length(SList.Text) - SList.Count; | |
904 | + Result := SList.Text; | |
906 | 905 | finally |
907 | 906 | SList.Free; |
908 | 907 | end; |
@@ -136,7 +136,7 @@ begin | ||
136 | 136 | GikoSys.Setting.TimeAdjust := PutPostTimeRadioButton.Checked; |
137 | 137 | //2ch¾êT|[g |
138 | 138 | GikoSys.Setting.GengoSupport := GengoSupport.Checked; |
139 | - GikoSys.SetGikoMessage; | |
139 | + GikoSys.Setting.SetMessages; | |
140 | 140 | //[JE[g̼±Åx |
141 | 141 | GikoSys.Setting.LocalTrapAtt := LocalTrapAtt.Checked; |
142 | 142 | GikoSys.Setting.RemoteTrapAtt := RemoteTrapAtt.Checked; |
@@ -10,24 +10,20 @@ type | ||
10 | 10 | TListViewUtils = class(TObject) |
11 | 11 | private |
12 | 12 | {Private é¾} |
13 | - class procedure DrawCategoryItem(BBS: TBBS; Item: TListItem; ListView: TListView); | |
14 | - class procedure DrawBoardItem(Category: TCategory; Item: TListItem; ListView: TListView); | |
15 | - class procedure DrawThreadItem(Board: TBoard; Item: TListItem; ListView: TListView); | |
16 | - class procedure DrawItemLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
17 | - class procedure DrawItemNoLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
18 | 13 | public |
19 | 14 | {Public é¾} |
20 | 15 | class procedure SetBoardTreeNode(inBBS : TBBS; treeView: TTreeView); |
21 | 16 | class function SetCategoryListItem(ABBS2ch: TBBS; ListView: TListView; |
22 | - NumberVisible: Boolean): Integer; | |
17 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
23 | 18 | class procedure ListViewSort(Sender: TObject; ListView: TListView; Column: TListColumn; |
24 | - NumberVisible: Boolean; vSortOrder: Boolean); | |
19 | + NumberVisible: Boolean; var vSortOrder: Boolean; var vSortIndex: Integer); | |
25 | 20 | class function ActiveListTrueColumn( column : TListColumn ) : TListColumn; |
26 | 21 | class function SetBoardListItem(Category: TCategory; ListView: TListView; |
27 | - NumberVisible: Boolean): Integer; | |
22 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
28 | 23 | class function SetThreadListItem(Board: TBoard; ListView: TListView; |
29 | - NumberVisible: Boolean): Integer; | |
24 | + NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer; | |
30 | 25 | class procedure ListViewData(Sender: TObject; Item: TListItem); |
26 | + | |
31 | 27 | end; |
32 | 28 | |
33 | 29 |
@@ -141,7 +137,9 @@ end; | ||
141 | 137 | class function TListViewUtils.SetCategoryListItem( |
142 | 138 | ABBS2ch: TBBS; |
143 | 139 | ListView: TListView; |
144 | - NumberVisible: Boolean | |
140 | + NumberVisible: Boolean; | |
141 | + var vSortIndex: Integer; | |
142 | + var vSortOrder: Boolean | |
145 | 143 | ): Integer; |
146 | 144 | var |
147 | 145 | TitleColumn : TListColumn; |
@@ -181,13 +179,12 @@ begin | ||
181 | 179 | GikoForm.FolderImage.Picture := nil; |
182 | 180 | GikoForm.ItemIcon16.GetBitmap(1, GikoForm.FolderImage.Picture.Bitmap); |
183 | 181 | |
182 | + vSortIndex := GikoSys.Setting.BBSSortIndex; | |
183 | + vSortOrder := GikoSys.Setting.BBSSortOrder; | |
184 | 184 | for i := ListView.Columns.Count - 1 downto 0 do begin |
185 | - if (GikoSys.Setting.BBSSortIndex | |
186 | - = Integer(GikoSys.Setting.BBSColumnOrder[ ListView.Column[ i ].Tag ])) then begin | |
187 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
188 | - NumberVisible, GikoSys.Setting.BBSSortOrder); | |
189 | - Break; | |
190 | - end; | |
185 | + idx := ListView.Column[ i ].Tag; | |
186 | + if vSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then | |
187 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
191 | 188 | end; |
192 | 189 | |
193 | 190 | Result := ABBS2ch.Count; |
@@ -201,10 +198,11 @@ class procedure TListViewUtils.ListViewSort( | ||
201 | 198 | ListView: TListView; |
202 | 199 | Column: TListColumn; |
203 | 200 | NumberVisible: Boolean; |
204 | - vSortOrder: Boolean | |
201 | + var vSortOrder: Boolean; | |
202 | + var vSortIndex: Integer | |
205 | 203 | ); |
206 | 204 | var |
207 | - i, idx : Integer; | |
205 | + i, id, idx : Integer; | |
208 | 206 | orderList : TList; |
209 | 207 | wkBBS: TBBS; |
210 | 208 | wkCategory: TCategory; |
@@ -215,41 +213,53 @@ begin | ||
215 | 213 | for i := 0 to ListView.Columns.Count - 1 do begin |
216 | 214 | ListView.Column[i].ImageIndex := -1; |
217 | 215 | end; |
218 | - if vSortOrder then | |
216 | + | |
217 | + if SortOrder then | |
219 | 218 | ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1 |
220 | 219 | else |
221 | 220 | ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2; |
222 | 221 | |
223 | - | |
224 | 222 | Sort.SortNoFlag := NumberVisible; |
225 | 223 | |
224 | + //if TObject(TreeView.Selected.Data) is TBBS then begin | |
226 | 225 | if TObject( GikoForm.ActiveList ) is TBBS then begin |
226 | + //wkBBS := TBBS(TreeView.Selected.Data); | |
227 | 227 | wkBBS := TBBS( GikoForm.ActiveList ); |
228 | 228 | orderList := GikoSys.Setting.BBSColumnOrder; |
229 | + id := Integer( orderList[ idx ] ); | |
229 | 230 | Sort.SortOrder := vSortOrder; |
230 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
231 | - GikoSys.Setting.BBSSortIndex := Sort.SortIndex; | |
232 | - GikoSys.Setting.BBSSortOrder := Sort.SortOrder; | |
231 | + Sort.SortIndex := id; | |
232 | + GikoSys.Setting.BBSSortIndex := id; | |
233 | + GikoSys.Setting.BBSSortOrder := vSortOrder; | |
233 | 234 | wkBBS.Sort(Sort.CategorySortProc); |
235 | + //end else if TObject(TreeView.Selected.Data) is TCategory then begin | |
234 | 236 | end else if TObject( GikoForm.ActiveList ) is TCategory then begin |
237 | + //wkCategory := TCategory(TreeView.Selected.Data); | |
235 | 238 | wkCategory := TCategory( GikoForm.ActiveList ); |
236 | 239 | orderList := GikoSys.Setting.CategoryColumnOrder; |
240 | + id := Integer( orderList[ idx ] ); | |
237 | 241 | Sort.SortOrder := vSortOrder; |
238 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
239 | - GikoSys.Setting.CategorySortIndex := Sort.SortIndex; | |
240 | - GikoSys.Setting.CategorySortOrder := Sort.SortOrder; | |
242 | + Sort.SortIndex := id; | |
243 | + GikoSys.Setting.CategorySortIndex := id; | |
244 | + GikoSys.Setting.CategorySortOrder := vSortOrder; | |
241 | 245 | wkCategory.CustomSort(BoardSortProc); |
246 | + //end else if TObject(TreeView.Selected.Data) is TBoard then begin | |
242 | 247 | end else if TObject( GikoForm.ActiveList ) is TBoard then begin |
248 | + //wkBoard := TBoard(TreeView.Selected.Data); | |
243 | 249 | wkBoard := TBoard( GikoForm.ActiveList ); |
244 | 250 | orderList := GikoSys.Setting.BoardColumnOrder; |
251 | + id := Integer( orderList[ idx ] ); | |
245 | 252 | Sort.SortOrder := vSortOrder; |
246 | - Sort.SortIndex := Integer( orderList[ idx ] ); | |
247 | - GikoSys.Setting.BoardSortIndex := Sort.SortIndex; | |
248 | - GikoSys.Setting.BoardSortOrder := Sort.SortOrder; | |
253 | + Sort.SortIndex := id; | |
254 | + GikoSys.Setting.BoardSortIndex := id; | |
255 | + GikoSys.Setting.BoardSortOrder := vSortOrder; | |
249 | 256 | wkBoard.CustomSort(ThreadItemSortProc); |
257 | + end else begin | |
258 | + id := 0; | |
250 | 259 | end; |
251 | 260 | |
252 | 261 | ListView.Refresh; |
262 | + vSortIndex := id; | |
253 | 263 | end; |
254 | 264 | |
255 | 265 | {! |
@@ -259,16 +269,49 @@ Delphi 6 Personal | ||
259 | 269 | ³µ¢Jªn³êÈ¢½ßA³µ¢JÉÏ·µÜ·B |
260 | 270 | } |
261 | 271 | class function TListViewUtils.ActiveListTrueColumn( column : TListColumn ) : TListColumn; |
272 | +{* | |
273 | +var | |
274 | + i, idx : Integer; | |
275 | + orderList : TList; | |
276 | +*} | |
262 | 277 | begin |
278 | + | |
263 | 279 | // ³µÏ··éû@ªª©çÈ¢ÌÅÛ¯ |
264 | 280 | Result := column; |
265 | 281 | Exit; |
282 | +{* | |
283 | + Result := column; | |
284 | + | |
285 | + if TObject( FActiveList ) is TBBS then | |
286 | + orderList := GikoSys.Setting.BBSColumnOrder | |
287 | + else if TObject( FActiveList ) is TCategory then | |
288 | + orderList := GikoSys.Setting.CategoryColumnOrder | |
289 | + else if TObject( FActiveList ) is TBoard then | |
290 | + orderList := GikoSys.Setting.BoardColumnOrder | |
291 | + else | |
292 | + Exit; | |
293 | + | |
294 | + idx := column.Tag; | |
295 | + | |
296 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
297 | + if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin | |
298 | + if idx = 0 then | |
299 | + Result := ListView.Column[ i ] | |
300 | + else if idx <= i then | |
301 | + Result := ListView.Column[ idx - 1 ]; | |
302 | + Exit; | |
303 | + end; | |
304 | + end; | |
305 | +*} | |
306 | + | |
266 | 307 | end; |
267 | 308 | //ListViewÉBoardItemðÝè·é |
268 | 309 | class function TListViewUtils.SetBoardListItem( |
269 | 310 | Category: TCategory; |
270 | 311 | ListView: TListView; |
271 | - NumberVisible: Boolean | |
312 | + NumberVisible: Boolean; | |
313 | + var vSortIndex: Integer; | |
314 | + var vSortOrder: Boolean | |
272 | 315 | ): Integer; |
273 | 316 | var |
274 | 317 | TitleColumn : TListColumn; |
@@ -323,13 +366,12 @@ begin | ||
323 | 366 | GikoForm.FolderImage.Picture := nil; |
324 | 367 | GikoForm.ItemIcon16.GetBitmap(3, GikoForm.FolderImage.Picture.Bitmap); |
325 | 368 | |
369 | + vSortIndex := GikoSys.Setting.CategorySortIndex; | |
370 | + vSortOrder := GikoSys.Setting.CategorySortOrder; | |
326 | 371 | for i := ListView.Columns.Count - 1 downto 0 do begin |
327 | - if (GikoSys.Setting.CategorySortIndex = | |
328 | - Integer( GikoSys.Setting.CategoryColumnOrder[ ListView.Columns[i].Tag ] )) then begin | |
329 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
330 | - NumberVisible, GikoSys.Setting.CategorySortOrder); | |
331 | - Break; | |
332 | - end; | |
372 | + idx := ListView.Column[ i ].Tag; | |
373 | + if vSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then | |
374 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
333 | 375 | end; |
334 | 376 | |
335 | 377 | Result := Category.Count; |
@@ -341,7 +383,9 @@ end; | ||
341 | 383 | class function TListViewUtils.SetThreadListItem( |
342 | 384 | Board: TBoard; |
343 | 385 | ListView: TListView; |
344 | - NumberVisible: Boolean | |
386 | + NumberVisible: Boolean; | |
387 | + var vSortIndex: Integer; | |
388 | + var vSortOrder: Boolean | |
345 | 389 | ): Integer; |
346 | 390 | var |
347 | 391 | TitleColumn : TListColumn; |
@@ -416,13 +460,12 @@ begin | ||
416 | 460 | GikoForm.FolderImage.Picture := nil; |
417 | 461 | GikoForm.ItemIcon16.GetBitmap(5, GikoForm.FolderImage.Picture.Bitmap); |
418 | 462 | |
463 | + vSortIndex := GikoSys.Setting.BoardSortIndex; | |
464 | + vSortOrder := GikoSys.Setting.BoardSortOrder; | |
419 | 465 | for i := ListView.Columns.Count - 1 downto 0 do begin |
420 | - if (GikoSys.Setting.BoardSortIndex | |
421 | - = Integer( GikoSys.Setting.BoardColumnOrder[ ListView.Columns[ i ].Tag ] )) then begin | |
422 | - ListViewSort( nil, ListView, ListView.Column[ i ], | |
423 | - NumberVisible, GikoSys.Setting.BoardSortOrder); | |
424 | - Break; | |
425 | - end; | |
466 | + idx := ListView.Column[ i ].Tag; | |
467 | + if vSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then | |
468 | + ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex ); | |
426 | 469 | end; |
427 | 470 | |
428 | 471 | Result := Board.Count; |
@@ -433,268 +476,285 @@ end; | ||
433 | 476 | |
434 | 477 | class procedure TListViewUtils.ListViewData(Sender: TObject; Item: TListItem); |
435 | 478 | var |
436 | - ActivListObj : TObject; | |
479 | +// FileName: string; | |
480 | +// DateTime: TDateTime; | |
481 | + BoardCnt: Integer; | |
482 | + BBS: TBBS; | |
483 | + Category: TCategory; | |
484 | + Board: TBoard; | |
485 | + ThreadItem: TThreadItem; | |
486 | + RepStr: string; | |
487 | + ActivListObj : TObject; | |
488 | + i, idx : Integer; | |
437 | 489 | ListView : TListView; |
438 | 490 | begin |
439 | 491 | if (Sender <> nil) and (Sender is TListView) then begin |
440 | - ListView := TListView(Sender); | |
441 | - ActivListObj := GikoForm.ActiveList; | |
442 | - if ActivListObj is TBBS then begin | |
443 | - DrawCategoryItem(TBBS(ActivListObj), Item, ListView); | |
444 | - end else if ActivListObj is TCategory then begin | |
445 | - DrawBoardItem(TCategory(ActivListObj), Item, ListView); | |
446 | - end else if ActivListObj is TBoard then begin | |
447 | - DrawThreadItem(TBoard(ActivListObj), Item, ListView); | |
448 | - end; | |
492 | + ListView := TListView(Sender) | |
493 | + end else begin | |
494 | + Exit; | |
449 | 495 | end; |
450 | -end; | |
451 | -//! Xgr [ÌACeð`æ·éiJeS[pj | |
452 | -class procedure TListViewUtils.DrawCategoryItem( | |
453 | - BBS: TBBS; Item: TListItem; ListView: TListView | |
454 | -); | |
455 | -var | |
456 | - Category : TCategory; | |
457 | -begin | |
458 | 496 | |
459 | - //===== JeSXg ===== | |
460 | - ListView.StateImages := nil; | |
497 | + ActivListObj := GikoForm.ActiveList; | |
498 | + if ActivListObj is TBBS then begin | |
499 | + //===== JeSXg ===== | |
500 | + BBS := TBBS(ActivListObj); | |
461 | 501 | |
462 | - if (BBS = nil) or (BBS.Count <= 0) or (Item = nil) | |
463 | - or (Item.Index >= BBS.Count) or (ListView.Items.Count = 0) | |
464 | - or (not (BBS.Items[Item.index] is TCategory)) then Exit; | |
502 | + GikoForm.ListView.StateImages := nil; | |
465 | 503 | |
466 | - Category := TCategory(BBS.Items[Item.index]); | |
504 | + if (BBS = nil) or (BBS.Count <= 0) or (Item = nil) | |
505 | + or (Item.Index >= BBS.Count) or (ListView.Items.Count = 0) | |
506 | + or (not (BBS.Items[Item.index] is TCategory)) then Exit; | |
507 | + //if BBS.Count <= 0 then Exit; | |
508 | + //if Item = nil then Exit; | |
509 | + //if Item.Index >= BBS.Count then Exit; | |
510 | + //if ListView.Items.Count = 0 then Exit; | |
467 | 511 | |
468 | - if (Category = nil) then Exit; | |
512 | + //if not (BBS.Items[Item.index] is TCategory) then Exit; | |
513 | + Category := TCategory(BBS.Items[Item.index]); | |
469 | 514 | |
470 | - if GikoDM.ListNumberVisibleAction.Checked then | |
471 | - Item.Caption := IntToStr(Category.No) + ': ' + Category.Title | |
472 | - else | |
473 | - Item.Caption := Category.Title; | |
515 | + if Category = nil then Exit; | |
474 | 516 | |
475 | - Item.ImageIndex := ITEM_ICON_CATEGORY1; | |
476 | - Item.Data := Category; | |
477 | -end; | |
478 | -//! Xgr [ÌACeð`æ·éiÂpj | |
479 | -class procedure TListViewUtils.DrawBoardItem( | |
480 | - Category: TCategory; Item: TListItem; ListView: TListView | |
481 | -); | |
482 | -var | |
483 | - Board: TBoard; | |
484 | - i, idx : Integer; | |
485 | -begin | |
486 | - //===== ÂXg ===== | |
487 | - ListView.StateImages := nil; | |
517 | + if GikoDM.ListNumberVisibleAction.Checked then | |
518 | + Item.Caption := IntToStr(Category.No) + ': ' + Category.Title | |
519 | + else | |
520 | + Item.Caption := Category.Title; | |
488 | 521 | |
489 | - if (Category = nil) or (Category.Count <= 0) or (Item = nil) | |
490 | - or (Item.Index >= Category.Count) or (ListView.Items.Count = 0) | |
491 | - or (not (Category.Items[Item.Index] is TBoard)) then Exit; | |
522 | + Item.ImageIndex := ITEM_ICON_CATEGORY1; | |
523 | + Item.Data := Category; | |
492 | 524 | |
493 | - Board := TBoard(Category.Items[Item.Index]); | |
525 | + end else if ActivListObj is TCategory then begin | |
494 | 526 | |
495 | - if (Board = nil) then Exit; | |
527 | + //===== ÂXg ===== | |
528 | + Category := TCategory(ActivListObj); | |
496 | 529 | |
497 | - if GikoDM.ListNumberVisibleAction.Checked then | |
498 | - Item.Caption := IntToStr(Board.No) + ': ' + Board.Title | |
499 | - else | |
500 | - Item.Caption := Board.Title; | |
530 | + ListView.StateImages := nil; | |
501 | 531 | |
502 | - if Item.SubItems.Count <> ListView.Columns.Count then begin | |
503 | - Item.SubItems.Clear; | |
504 | - Item.SubItems.Capacity := GikoSys.Setting.CategoryColumnOrder.Count; | |
505 | - for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do | |
506 | - Item.SubItems.Add(''); | |
507 | - end; | |
532 | + if (Category = nil) or (Category.Count <= 0) or (Item = nil) | |
533 | + or (Item.Index >= Category.Count) or (ListView.Items.Count = 0) | |
534 | + or (not (Category.Items[Item.Index] is TBoard)) then Exit; | |
535 | + //if Category.Count <= 0 then Exit; | |
536 | + //if Item = nil then Exit; | |
537 | + //if Item.Index >= Category.Count then Exit; | |
538 | + //if ListView.Items.Count = 0 then Exit; | |
508 | 539 | |
509 | - Item.ImageIndex := ITEM_ICON_BOARD1; | |
510 | - idx := 0; | |
511 | - for i := 0 to ListView.Columns.Count - 1 do begin | |
512 | - if GikoSys.Setting.CategoryColumnOrder.Count <= i then | |
513 | - Break; | |
514 | - case GikoSys.Setting.CategoryColumnOrder[ i ] of | |
515 | - gccTitle: | |
516 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
517 | - Dec( idx ); | |
518 | - | |
519 | - gccRoundName: | |
520 | - if Board.Round then | |
521 | - Item.SubItems[ idx ] := Board.RoundName // '\ñ' | |
522 | - else | |
523 | - Item.SubItems[ idx ] := ''; | |
540 | + //if not (Category.Items[Item.Index] is TBoard) then Exit; | |
541 | + Board := TBoard(Category.Items[Item.Index]); | |
524 | 542 | |
525 | - gccLastModified: | |
526 | - if Board.RoundDate = ZERO_DATE then begin | |
527 | - Item.SubItems[ idx ] := ''; | |
528 | - end else | |
529 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate); | |
530 | - end; | |
531 | - Inc( idx ); | |
532 | - end; | |
543 | + if Board = nil then Exit; | |
533 | 544 | |
534 | - Item.Data := Board; | |
545 | + if GikoDM.ListNumberVisibleAction.Checked then | |
546 | + Item.Caption := IntToStr(Board.No) + ': ' + Board.Title | |
547 | + //Item.Caption := IntToStr(Item.Index + 1) + ': ' + Board.Title | |
548 | + else | |
549 | + Item.Caption := Board.Title; | |
535 | 550 | |
536 | -end; | |
537 | -//! Xgr [ÌACeð`æ·éiXbhpj | |
538 | -class procedure TListViewUtils.DrawThreadItem( | |
539 | - Board: TBoard; Item: TListItem;ListView : TListView | |
540 | -); | |
541 | -var | |
542 | - ThreadItem: TThreadItem; | |
543 | - BoardCnt: Integer; | |
544 | - RepStr: String; | |
545 | - i: Integer; | |
546 | -begin | |
547 | - //===== XXg ===== | |
548 | - if GikoSys.Setting.ListIconVisible then | |
549 | - ListView.StateImages := GikoForm.StateIconImageList | |
550 | - else | |
551 | - ListView.StateImages := nil; | |
551 | + if Item.SubItems.Count <> ListView.Columns.Count then begin | |
552 | + Item.SubItems.Clear; | |
553 | + Item.SubItems.Capacity := GikoSys.Setting.CategoryColumnOrder.Count; | |
554 | + for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do | |
555 | + Item.SubItems.Add(''); | |
556 | + end; | |
552 | 557 | |
558 | + Item.ImageIndex := ITEM_ICON_BOARD1; | |
559 | + idx := 0; | |
560 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
561 | + if GikoSys.Setting.CategoryColumnOrder.Count <= i then | |
562 | + Break; | |
563 | +// case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of | |
564 | + case GikoSys.Setting.CategoryColumnOrder[ i ] of | |
565 | + gccTitle: | |
566 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
567 | + Dec( idx ); | |
568 | + | |
569 | + gccRoundName: | |
570 | + if Board.Round then | |
571 | + Item.SubItems[ idx ] := Board.RoundName // '\ñ' | |
572 | + else | |
573 | + Item.SubItems[ idx ] := ''; | |
574 | + | |
575 | + gccLastModified: | |
576 | + if Board.RoundDate = ZERO_DATE then begin | |
577 | + Item.SubItems[ idx ] := ''; | |
578 | + end else | |
579 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate); | |
580 | + end; | |
581 | + Inc( idx ); | |
582 | + end; | |
553 | 583 | |
554 | - case GikoForm.ViewType of | |
555 | - gvtAll: BoardCnt := Board.Count; | |
556 | - gvtLog: BoardCnt := Board.LogThreadCount; | |
557 | - gvtNew: BoardCnt := Board.NewThreadCount; | |
558 | - gvtUser: BoardCnt := Board.UserThreadCount; | |
559 | - else | |
560 | - BoardCnt := 0; | |
561 | - end; | |
584 | + Item.Data := Board; | |
562 | 585 | |
563 | - if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt) | |
564 | - or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit; | |
565 | - | |
566 | - //üP·×«ubN///////////////////////////////////////////////////// | |
567 | - ThreadItem := nil; | |
568 | - case GikoForm.ViewType of | |
569 | - gvtAll: if Item.Index >= Board.Count then Exit else | |
570 | - ThreadItem := TThreadItem(Board.Items[Item.Index]); | |
571 | - gvtLog: ThreadItem := Board.GetLogThread(Item.Index); | |
572 | - gvtNew: ThreadItem := Board.GetNewThread(Item.Index); | |
573 | - gvtUser: ThreadItem := Board.GetUserThread(Item.Index); | |
574 | - end; | |
575 | - ////////////////////////////////////////////////////////////////////////// | |
576 | - | |
577 | - if (ThreadItem = nil) then Exit; | |
578 | - | |
579 | - RepStr := CustomStringReplace(ThreadItem.Title, '<', '<' ); | |
580 | - RepStr := CustomStringReplace(RepStr, '>', '>' ); | |
581 | - RepStr := CustomStringReplace(RepStr, '"', '"' ); | |
582 | - RepStr := CustomStringReplace(RepStr, '&', '&' ); | |
583 | - //RepStr := StringReplace(RepStr, 'M', ',', [rfReplaceAll]); | |
584 | - if Item.SubItems.Count <> ListView.Columns.Count then begin | |
585 | - Item.SubItems.Clear; | |
586 | - Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count; | |
587 | - for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do | |
588 | - Item.SubItems.Add(''); | |
589 | - end; | |
586 | + end else if ActivListObj is TBoard then begin | |
590 | 587 | |
591 | - if GikoDM.ListNumberVisibleAction.Checked then | |
592 | - Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr | |
593 | - else | |
594 | - Item.Caption := RepStr; | |
588 | + //===== XXg ===== | |
589 | + Board := TBoard(ActivListObj); | |
595 | 590 | |
596 | - case ThreadItem.AgeSage of | |
597 | - gasNone: Item.StateIndex := -1; | |
598 | - gasNew: Item.StateIndex := 0; | |
599 | - gasAge: Item.StateIndex := 1; | |
600 | - gasSage: Item.StateIndex := 2; | |
601 | - end; | |
591 | + if GikoSys.Setting.ListIconVisible then | |
592 | + ListView.StateImages := GikoForm.StateIconImageList | |
593 | + else | |
594 | + ListView.StateImages := nil; | |
602 | 595 | |
603 | - if ThreadItem.IsLogFile then begin | |
604 | - DrawItemLogThread(ThreadItem, Item, ListView.Columns.Count); | |
605 | - end else begin | |
606 | - DrawItemNoLogThread(ThreadItem, Item, GikoSys.Setting.BoardColumnOrder.Count); | |
607 | - end; | |
608 | 596 | |
609 | - Item.Data := ThreadItem; | |
610 | -end; | |
611 | -//! OLèXbhð`æ·é | |
612 | -class procedure TListViewUtils.DrawItemLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
613 | -var | |
614 | - i, idx : Integer; | |
615 | -begin | |
616 | - idx := 0; | |
617 | - for i := 0 to ColumnCount - 1 do begin | |
618 | - if GikoSys.Setting.BoardColumnOrder.Count <= i then | |
619 | - Break; | |
620 | - | |
621 | - case GikoSys.Setting.BoardColumnOrder[ i ] of | |
622 | - gbcTitle: | |
623 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
624 | - Dec( idx ); | |
625 | - gbcAllCount: | |
626 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount); | |
627 | - gbcLocalCount: | |
628 | - Item.SubItems[ idx ] := IntToStr(Thread.Count); | |
629 | - gbcNonAcqCount: | |
630 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount - Thread.Count); | |
631 | - gbcNewCount: | |
632 | - if Thread.NewResCount = 0 then | |
633 | - Item.SubItems[ idx ] := '' | |
597 | + case GikoForm.ViewType of | |
598 | + gvtAll: BoardCnt := Board.Count; | |
599 | + gvtLog: BoardCnt := Board.LogThreadCount; | |
600 | + gvtNew: BoardCnt := Board.NewThreadCount; | |
601 | + gvtUser: BoardCnt := Board.UserThreadCount; | |
634 | 602 | else |
635 | - Item.SubItems[ idx ] := IntToStr(Thread.NewResCount); | |
636 | - gbcUnReadCount: | |
637 | - Item.SubItems[ idx ] := ''; | |
638 | - gbcRoundName: | |
639 | - if Thread.Round then | |
640 | - Item.SubItems[ idx ] := Thread.RoundName | |
603 | + BoardCnt := 0; | |
604 | + end; | |
605 | + { | |
606 | + case GikoForm.ViewType of | |
607 | + gvtAll: BoardCnt := Board.Count; | |
608 | + gvtLog: BoardCnt := Board.GetLogThreadCount; | |
609 | + gvtNew: BoardCnt := Board.GetNewThreadCount; | |
610 | + gvtUser: BoardCnt := Board.GetUserThreadCount; | |
641 | 611 | else |
642 | - Item.SubItems[ idx ] := ''; | |
643 | - gbcRoundDate://gbcLastModified: | |
644 | - if (Thread.RoundDate = ZERO_DATE) then begin | |
645 | - Item.SubItems[ idx ] := ''; | |
646 | - end else | |
647 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.RoundDate); | |
648 | - gbcCreated: | |
649 | - if Thread.CreateDate = ZERO_DATE then begin | |
650 | - Item.SubItems[ idx ] := ''; | |
651 | - end else | |
652 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.CreateDate); | |
653 | - gbcLastModified: | |
654 | - if (Thread.LastModified = ZERO_DATE) then begin | |
655 | - Item.SubItems[ idx ] := ''; | |
656 | - end else | |
657 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.LastModified); | |
612 | + BoardCnt := 0; | |
658 | 613 | end; |
659 | - Inc( idx ); | |
660 | - end; | |
614 | + } | |
615 | +// if Board = nil then Exit; | |
616 | + if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt) | |
617 | + or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit; | |
661 | 618 | |
662 | - if Thread.NewArrival then | |
663 | - Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
664 | - else | |
665 | - Item.ImageIndex := ITEM_ICON_THREADLOG1; | |
666 | -end; | |
667 | -//! OȵXbhð`æ·é | |
668 | -class procedure TListViewUtils.DrawItemNoLogThread(Thread: TThreadItem; Item: TListItem; ColumnCount: Integer); | |
669 | -var | |
670 | - i, idx: Integer; | |
671 | -begin | |
672 | - idx := 0; | |
673 | - for i := 0 to ColumnCount - 1do begin | |
674 | - case GikoSys.Setting.BoardColumnOrder[ i ] of | |
675 | - gbcTitle: | |
676 | - // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
677 | - Dec( idx ); | |
678 | - gbcAllCount: | |
679 | - Item.SubItems[ idx ] := IntToStr(Thread.AllResCount); | |
680 | - gbcRoundDate://gbcLastModified: | |
681 | - Item.SubItems[ idx ] := ''; | |
682 | - gbcCreated: | |
683 | - if Thread.CreateDate = ZERO_DATE then begin | |
684 | - Item.SubItems[ idx ] := ''; | |
685 | - end else | |
686 | - Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Thread.CreateDate); | |
687 | - gbcLastModified: | |
688 | - Item.SubItems[ idx ] := ''; | |
619 | + //üP·×«ubN///////////////////////////////////////////////////// | |
620 | + ThreadItem := nil; | |
621 | + case GikoForm.ViewType of | |
622 | + gvtAll: if Item.Index >= Board.Count then Exit else | |
623 | + ThreadItem := TThreadItem(Board.Items[Item.Index]); | |
624 | + gvtLog: ThreadItem := Board.GetLogThread(Item.Index); | |
625 | + gvtNew: ThreadItem := Board.GetNewThread(Item.Index); | |
626 | + gvtUser: ThreadItem := Board.GetUserThread(Item.Index); | |
627 | + end; | |
628 | + ////////////////////////////////////////////////////////////////////////// | |
629 | + | |
630 | + if ThreadItem = nil then Exit; | |
631 | + | |
632 | + RepStr := CustomStringReplace(ThreadItem.Title, '<', '<' ); | |
633 | + RepStr := CustomStringReplace(RepStr, '>', '>' ); | |
634 | + RepStr := CustomStringReplace(RepStr, '"', '"' ); | |
635 | + RepStr := CustomStringReplace(RepStr, '&', '&' ); | |
636 | + //RepStr := StringReplace(RepStr, 'M', ',', [rfReplaceAll]); | |
637 | + if Item.SubItems.Count <> ListView.Columns.Count then begin | |
638 | + Item.SubItems.Clear; | |
639 | + Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count; | |
640 | + for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do | |
641 | + Item.SubItems.Add(''); | |
642 | + end; | |
643 | + | |
644 | + if GikoDM.ListNumberVisibleAction.Checked then | |
645 | + Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr | |
689 | 646 | else |
690 | - Item.SubItems[ idx ] := ''; | |
647 | + Item.Caption := RepStr; | |
648 | + | |
649 | + case ThreadItem.AgeSage of | |
650 | + gasNone: Item.StateIndex := -1; | |
651 | + gasNew: Item.StateIndex := 0; | |
652 | + gasAge: Item.StateIndex := 1; | |
653 | + gasSage: Item.StateIndex := 2; | |
654 | + end; | |
655 | + | |
656 | + if ThreadItem.IsLogFile then begin | |
657 | + idx := 0; | |
658 | + for i := 0 to ListView.Columns.Count - 1 do begin | |
659 | + if GikoSys.Setting.BoardColumnOrder.Count <= i then | |
660 | + Break; | |
661 | +// case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of | |
662 | + case GikoSys.Setting.BoardColumnOrder[ i ] of | |
663 | + gbcTitle: | |
664 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
665 | + Dec( idx ); | |
666 | + | |
667 | + gbcAllCount: | |
668 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount); | |
669 | + | |
670 | + gbcLocalCount: | |
671 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.Count); | |
672 | + | |
673 | + gbcNonAcqCount: | |
674 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count); | |
675 | + | |
676 | + gbcNewCount: | |
677 | + if ThreadItem.NewResCount = 0 then | |
678 | + Item.SubItems[ idx ] := '' | |
679 | + else | |
680 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount); | |
681 | + | |
682 | + gbcUnReadCount: | |
683 | + Item.SubItems[ idx ] := ''; | |
684 | + | |
685 | + gbcRoundName: | |
686 | + if ThreadItem.Round then | |
687 | + Item.SubItems[ idx ] := ThreadItem.RoundName | |
688 | + else | |
689 | + Item.SubItems[ idx ] := ''; | |
690 | + | |
691 | + gbcRoundDate://gbcLastModified: | |
692 | + if (ThreadItem.RoundDate = ZERO_DATE) then begin | |
693 | + Item.SubItems[ idx ] := ''; | |
694 | + end else | |
695 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate); | |
696 | + | |
697 | + gbcCreated: | |
698 | + if ThreadItem.CreateDate = ZERO_DATE then begin | |
699 | + Item.SubItems[ idx ] := ''; | |
700 | + end else | |
701 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate); | |
702 | + | |
703 | + gbcLastModified: | |
704 | + if (ThreadItem.LastModified = ZERO_DATE) then begin | |
705 | + Item.SubItems[ idx ] := ''; | |
706 | + end else | |
707 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.LastModified); | |
708 | + | |
709 | + | |
710 | + end; | |
711 | + Inc( idx ); | |
712 | + end; | |
713 | + | |
714 | + if ThreadItem.NewArrival then | |
715 | + Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
716 | + else | |
717 | + Item.ImageIndex := ITEM_ICON_THREADLOG1; | |
718 | + | |
719 | + | |
720 | + end else begin | |
721 | + idx := 0; | |
722 | + for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin | |
723 | +// case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of | |
724 | + case GikoSys.Setting.BoardColumnOrder[ i ] of | |
725 | + gbcTitle: | |
726 | + // Item.Caption Í SubItems ÉÜÜê³¢ÌÅ | |
727 | + Dec( idx ); | |
728 | + | |
729 | + gbcAllCount: | |
730 | + Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount); | |
731 | + | |
732 | + gbcRoundDate://gbcLastModified: | |
733 | + Item.SubItems[ idx ] := ''; | |
734 | + | |
735 | + gbcCreated: | |
736 | + if ThreadItem.CreateDate = ZERO_DATE then begin | |
737 | + Item.SubItems[ idx ] := ''; | |
738 | + end else | |
739 | + Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate); | |
740 | + | |
741 | + gbcLastModified: | |
742 | + Item.SubItems[ idx ] := ''; | |
743 | + | |
744 | + else | |
745 | + Item.SubItems[ idx ] := ''; | |
746 | + end; | |
747 | + Inc( idx ); | |
748 | + end; | |
749 | + if ThreadItem.NewArrival then | |
750 | + Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
751 | + else | |
752 | + Item.ImageIndex := ITEM_ICON_THREAD1; | |
691 | 753 | end; |
692 | - Inc( idx ); | |
754 | + | |
755 | + Item.Data := ThreadItem; | |
756 | + | |
693 | 757 | end; |
694 | - if Thread.NewArrival then | |
695 | - Item.ImageIndex := ITEM_ICON_THREADNEW1 | |
696 | - else | |
697 | - Item.ImageIndex := ITEM_ICON_THREAD1; | |
698 | 758 | end; |
699 | 759 | |
700 | 760 | end. |
@@ -36,9 +36,8 @@ type | ||
36 | 36 | { Private é¾ } |
37 | 37 | IgnoreLists : TStringList; |
38 | 38 | FAbort: Boolean; |
39 | - function BoardDownload(const URL: String): TNewBoardItem; | |
40 | - function BoardLoardFromFile(const FilePath: String): String; | |
41 | - function UpdateURL(s: string): boolean; | |
39 | + function BoardDownload: TNewBoardItem; | |
40 | + procedure UpdateURL(s: string); | |
42 | 41 | procedure SetIgnoreCategory(b: boolean); |
43 | 42 | procedure EditIgnoreList(Sender: TObject); |
44 | 43 | procedure UpdateIgnoreList(Sender: TObject); |
@@ -59,24 +58,15 @@ uses Giko, IdHeaderList, MojuUtils, GikoDataModule; | ||
59 | 58 | procedure TNewBoardDialog.UpdateButtonClick(Sender: TObject); |
60 | 59 | var |
61 | 60 | Item: TNewBoardItem; |
62 | - URL : String; | |
63 | - protocol, host, path, document, port, bookmark: String; | |
64 | 61 | begin |
65 | 62 | try |
66 | - MessageMemo.Clear; | |
67 | 63 | GikoSys.Setting.BoardURLSelected := BoardURLComboBox.ItemIndex + 1; |
68 | 64 | FAbort := False; |
69 | 65 | UpdateButton.Enabled := False; |
70 | 66 | StopButton.Enabled := True; |
71 | 67 | CloseButton.Enabled := False; |
72 | 68 | EditIgnoreListsButton.Enabled := False; |
73 | - URL := BoardURLComboBox.Text; | |
74 | - GikoSys.ParseURI(URL, protocol, host, path, document, port, bookmark); | |
75 | - if (protocol = '') then begin | |
76 | - Item.FContent := BoardLoardFromFile(URL); | |
77 | - end else if (AnsiPos('http', protocol) > 0) then begin | |
78 | - Item := BoardDownload(URL); | |
79 | - end; | |
69 | + Item := BoardDownload; | |
80 | 70 | StopButton.Enabled := False; |
81 | 71 | if FAbort then |
82 | 72 | Exit; |
@@ -84,9 +74,8 @@ begin | ||
84 | 74 | GikoDM.TabsSaveAction.Tag := 1; |
85 | 75 | GikoDM.TabsOpenAction.Tag := 1; |
86 | 76 | GikoDM.TabsSaveAction.Execute; |
87 | - if (UpdateURL(Item.FContent)) then begin | |
88 | - GikoForm.ReloadBBS; | |
89 | - end; | |
77 | + UpdateURL(Item.FContent); | |
78 | + GikoForm.ReloadBBS; | |
90 | 79 | GikoDM.TabsSaveAction.Tag := 0; |
91 | 80 | GikoDM.TabsOpenAction.Tag := 0; |
92 | 81 | end else |
@@ -110,12 +99,14 @@ begin | ||
110 | 99 | Close; |
111 | 100 | end; |
112 | 101 | |
113 | -function TNewBoardDialog.BoardDownload(const URL: String): TNewBoardItem; | |
102 | +function TNewBoardDialog.BoardDownload: TNewBoardItem; | |
114 | 103 | var |
104 | + URL: string; | |
115 | 105 | Stream: TMemoryStream; |
116 | 106 | s: string; |
117 | 107 | i: Integer; |
118 | 108 | begin |
109 | + MessageMemo.Clear; | |
119 | 110 | Indy.Request.Clear; |
120 | 111 | Indy.RecvBufferSize := Gikosys.Setting.RecvBufferSize; |
121 | 112 | Indy.ProxyParams.BasicAuthentication := False; |
@@ -141,7 +132,7 @@ begin | ||
141 | 132 | Indy.ProxyParams.ProxyPassword := ''; |
142 | 133 | end; |
143 | 134 | //URL := GikoSys.Setting.BoardURL2ch; |
144 | - //URL := BoardURLComboBox.Text; | |
135 | + URL := BoardURLComboBox.Text; | |
145 | 136 | Indy.Request.UserAgent := GikoSys.GetUserAgent; |
146 | 137 | Indy.Request.Referer := ''; |
147 | 138 | Indy.Request.AcceptEncoding := 'gzip'; |
@@ -196,9 +187,10 @@ begin | ||
196 | 187 | end; |
197 | 188 | end; |
198 | 189 | |
199 | -function TNewBoardDialog.UpdateURL(s: string): boolean; | |
190 | +procedure TNewBoardDialog.UpdateURL(s: string); | |
200 | 191 | var |
201 | 192 | i: Integer; |
193 | +// j: Integer; | |
202 | 194 | idx: Integer; |
203 | 195 | idx1: Integer; |
204 | 196 | idx2: Integer; |
@@ -334,7 +326,6 @@ begin | ||
334 | 326 | oldURLs.Free; |
335 | 327 | newURLs.Free; |
336 | 328 | end; |
337 | - Result := Change; | |
338 | 329 | end; |
339 | 330 | |
340 | 331 | procedure TNewBoardDialog.FormCreate(Sender: TObject); |
@@ -413,21 +404,5 @@ procedure TNewBoardDialog.FormClose(Sender: TObject; | ||
413 | 404 | begin |
414 | 405 | IgnoreLists.Free; |
415 | 406 | end; |
416 | -//! [Jt@Cð[h·é | |
417 | -function TNewBoardDialog.BoardLoardFromFile(const FilePath: String): String; | |
418 | -var | |
419 | - html : TStringList; | |
420 | -begin | |
421 | - Result := ''; | |
422 | - // t@Cª¶ÝµÄ¢é©`FbN | |
423 | - if (FileExists(FilePath)) then begin | |
424 | - html := TStringList.Create(); | |
425 | - try | |
426 | - html.LoadFromFile(FilePath); | |
427 | - Result := html.Text; | |
428 | - finally | |
429 | - html.Free; | |
430 | - end; | |
431 | - end; | |
432 | -end; | |
407 | + | |
433 | 408 | end. |
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog | ||
61 | 61 | Top = 4 |
62 | 62 | Width = 509 |
63 | 63 | Height = 389 |
64 | - ActivePage = TabSheet3 | |
64 | + ActivePage = CSSTabSheet | |
65 | 65 | MultiLine = True |
66 | - TabIndex = 3 | |
66 | + TabIndex = 2 | |
67 | 67 | TabOrder = 3 |
68 | 68 | OnChange = OptionTabChange |
69 | 69 | object ConnectSheet: TTabSheet |
@@ -687,7 +687,7 @@ object OptionDialog: TOptionDialog | ||
687 | 687 | Left = 12 |
688 | 688 | Top = 52 |
689 | 689 | Width = 477 |
690 | - Height = 45 | |
690 | + Height = 64 | |
691 | 691 | Caption = #12473#12524#20316#25104#26085#26178#34920#31034#35373#23450 |
692 | 692 | TabOrder = 1 |
693 | 693 | object CreationTimeLogsCheckBox: TCheckBox |
@@ -699,8 +699,8 @@ object OptionDialog: TOptionDialog | ||
699 | 699 | TabOrder = 0 |
700 | 700 | end |
701 | 701 | object FutureThreadCheckBox: TCheckBox |
702 | - Left = 204 | |
703 | - Top = 16 | |
702 | + Left = 12 | |
703 | + Top = 40 | |
704 | 704 | Width = 265 |
705 | 705 | Height = 17 |
706 | 706 | Caption = #26085#20184#12364#26410#26469#12398#12418#12398#12399#34920#31034#12375#12394#12356#65288'492'#12473#12524#31995#65289 |
@@ -709,7 +709,7 @@ object OptionDialog: TOptionDialog | ||
709 | 709 | end |
710 | 710 | object GroupBox5: TGroupBox |
711 | 711 | Left = 12 |
712 | - Top = 105 | |
712 | + Top = 121 | |
713 | 713 | Width = 477 |
714 | 714 | Height = 86 |
715 | 715 | Caption = #12502#12521#12454#12470#12398#26368#22823#21270 |
@@ -737,35 +737,35 @@ object OptionDialog: TOptionDialog | ||
737 | 737 | end |
738 | 738 | object GroupBox17: TGroupBox |
739 | 739 | Left = 12 |
740 | - Top = 196 | |
740 | + Top = 212 | |
741 | 741 | Width = 477 |
742 | - Height = 45 | |
742 | + Height = 63 | |
743 | 743 | Caption = #12502#12521#12454#12470#12479#12502#38750#34920#31034#26178#35373#23450 |
744 | 744 | TabOrder = 3 |
745 | 745 | object SelectIntervalLabel: TLabel |
746 | - Left = 10 | |
747 | - Top = 20 | |
746 | + Left = 13 | |
747 | + Top = 24 | |
748 | 748 | Width = 199 |
749 | 749 | Height = 12 |
750 | 750 | Caption = #12459#12540#12477#12523#12461#12540#12391#12398#31227#21205#26178#12398#28961#21453#24540#26178#38291 |
751 | 751 | end |
752 | 752 | object Label4: TLabel |
753 | - Left = 271 | |
754 | - Top = 20 | |
753 | + Left = 292 | |
754 | + Top = 24 | |
755 | 755 | Width = 29 |
756 | 756 | Height = 12 |
757 | 757 | Caption = #12511#12522#31186 |
758 | 758 | end |
759 | 759 | object Label6: TLabel |
760 | - Left = 305 | |
761 | - Top = 20 | |
760 | + Left = 14 | |
761 | + Top = 40 | |
762 | 762 | Width = 164 |
763 | 763 | Height = 12 |
764 | 764 | Caption = #65288'55'#12511#12522#31186#20197#19978#12395#35373#23450#12375#12390#19979#12373#12356#65289 |
765 | 765 | end |
766 | 766 | object SelectIntervalEdit: TEdit |
767 | - Left = 214 | |
768 | - Top = 16 | |
767 | + Left = 235 | |
768 | + Top = 20 | |
769 | 769 | Width = 49 |
770 | 770 | Height = 20 |
771 | 771 | ImeMode = imClose |
@@ -775,7 +775,7 @@ object OptionDialog: TOptionDialog | ||
775 | 775 | end |
776 | 776 | object GroupBox18: TGroupBox |
777 | 777 | Left = 12 |
778 | - Top = 246 | |
778 | + Top = 278 | |
779 | 779 | Width = 477 |
780 | 780 | Height = 43 |
781 | 781 | Caption = 'dat'#33853#12385#12473#12524#12477#12540#12488#38918 |
@@ -800,29 +800,6 @@ object OptionDialog: TOptionDialog | ||
800 | 800 | #12473#12524#26368#32066#26356#26032#26085#26178#65288#38477#38918#65289) |
801 | 801 | end |
802 | 802 | end |
803 | - object GroupBox20: TGroupBox | |
804 | - Left = 12 | |
805 | - Top = 291 | |
806 | - Width = 477 | |
807 | - Height = 41 | |
808 | - Caption = #12473#12524#12483#12489#19968#35239#12480#12454#12531#12525#12540#12489#24460#12398#21205#20316 | |
809 | - TabOrder = 5 | |
810 | - object Label24: TLabel | |
811 | - Left = 219 | |
812 | - Top = 18 | |
813 | - Width = 142 | |
814 | - Height = 12 | |
815 | - Caption = #65288#12481#12455#12483#12463#12375#12394#12356#22580#21512#28961#20966#29702#65289 | |
816 | - end | |
817 | - object AutoSortCheckBox: TCheckBox | |
818 | - Left = 10 | |
819 | - Top = 16 | |
820 | - Width = 207 | |
821 | - Height = 17 | |
822 | - Caption = #33258#21205#12391#12473#12524#12483#12489#21517#12391#26119#38918#12477#12540#12488#12377#12427 | |
823 | - TabOrder = 0 | |
824 | - end | |
825 | - end | |
826 | 803 | end |
827 | 804 | object ThreadSheet: TTabSheet |
828 | 805 | Caption = #12473#12524#12483#12489#65297 |
@@ -202,9 +202,6 @@ type | ||
202 | 202 | UnFocusedBoldCheckBox: TCheckBox; |
203 | 203 | IgnoreKanaCheckBox: TCheckBox; |
204 | 204 | UseKatjuTypeSkinCheckBox: TCheckBox; |
205 | - GroupBox20: TGroupBox; | |
206 | - AutoSortCheckBox: TCheckBox; | |
207 | - Label24: TLabel; | |
208 | 205 | procedure FormCreate(Sender: TObject); |
209 | 206 | procedure FormDestroy(Sender: TObject); |
210 | 207 | procedure ApplyButtonClick(Sender: TObject); |
@@ -356,7 +353,7 @@ begin | ||
356 | 353 | FClose := False; |
357 | 354 | Exit; |
358 | 355 | end; |
359 | - SetAbonpropertys; | |
356 | + SetAbonpropertys; | |
360 | 357 | SaveSetting; |
361 | 358 | SettingApply; |
362 | 359 |
@@ -824,8 +821,7 @@ begin | ||
824 | 821 | else |
825 | 822 | DatOchiSortCombo.ItemIndex := 0; |
826 | 823 | end; |
827 | - AutoSortCheckBox.Checked := GikoSys.Setting.AutoSortThreadList; | |
828 | - | |
824 | + | |
829 | 825 | // Ú`ñ |
830 | 826 | RloCheckBox.Checked := GikoSys.Setting.AbonDeleterlo; |
831 | 827 | ReplaceulCheckBox.Checked := GikoSys.Setting.AbonReplaceul; |
@@ -1102,7 +1098,6 @@ begin | ||
1102 | 1098 | GikoSys.Setting.DatOchiSortIndex := Ord( gbcLastModified );{gbcLastModified} |
1103 | 1099 | end; |
1104 | 1100 | end; |
1105 | - GikoSys.Setting.AutoSortThreadList := AutoSortCheckBox.Checked; | |
1106 | 1101 | |
1107 | 1102 | GikoSys.Setting.WriteSystemSettingFile; |
1108 | 1103 | GikoSys.Setting.WriteBoardURLSettingFile; |
@@ -1,6 +1,5 @@ | ||
1 | 1 | unit Setting; |
2 | 2 | |
3 | - | |
4 | 3 | interface |
5 | 4 | |
6 | 5 | uses |
@@ -12,7 +11,33 @@ const | ||
12 | 11 | LIST_COOLBAND_COUNT = 2; //ÂCoolBandÌ |
13 | 12 | BROWSER_COOLBAND_COUNT = 3; //uEUCoolBandÌ |
14 | 13 | |
15 | - | |
14 | + BOARD_FILE_NAME = 'board.2ch'; | |
15 | + CUSTOMBOARD_FILE_NAME = 'custom.2ch'; | |
16 | + BOARD_DIR_NAME = 'Board'; | |
17 | + KEY_SETTING_FILE_NAME = 'key.ini'; | |
18 | + EKEY_SETTING_FILE_NAME = 'Ekey.ini'; | |
19 | + TEMP_FOLDER = 'Temp'; | |
20 | + OUTBOX_FILE_NAME = 'outbox.ini'; | |
21 | + SENT_FILE_NAME = 'sent.ini'; | |
22 | + CONFIG_DIR_NAME = 'config'; | |
23 | + CSS_DIR_NAME = 'css'; | |
24 | + SKIN_DIR_NAME = 'skin'; | |
25 | + SKIN_HEADER_FILE_NAME = 'Header.html'; | |
26 | + SKIN_FOOTER_FILE_NAME = 'Footer.html'; | |
27 | + SKIN_NEWRES_FILE_NAME = 'NewRes.html'; | |
28 | + SKIN_RES_FILE_NAME = 'Res.html'; | |
29 | + SKIN_BOOKMARK_FILE_NAME = 'Bookmark.html'; | |
30 | + SKIN_NEWMARK_FILE_NAME = 'Newmark.html'; | |
31 | + NGWORDs_DIR_NAME : String = 'NGwords'; | |
32 | + BOARD_PLUGIN_DIR_NAME = 'BoardPlugin'; | |
33 | + SAMBATIME_FILE_NAME : String = 'Samba.ini'; | |
34 | + IGNORE_FILE_NAME : String = 'Ignore.txt'; | |
35 | +// DOLIB_LOGIN_URL = '/~tora3n2c/futen.cgi'; | |
36 | + MAX_POPUP_RES : Integer = 10; | |
37 | + GESTURE_FILE_NAME = 'Gestures.ini'; | |
38 | + SPAMFILTER_FILE_NAME = 'SpamFilter.ini'; | |
39 | + LANGUAGE_FILE_NAME = 'language.ini'; | |
40 | + | |
16 | 41 | type |
17 | 42 | TGikoTabPosition = (gtpTop, gtpBottom); // ^uÊu |
18 | 43 | TGikoTabAppend = (gtaFirst, gtpLast); // ^uÇÁÊu |
@@ -399,6 +424,9 @@ type | ||
399 | 424 | //! }EXWFX`[ðgp·é©Ç¤© |
400 | 425 | FGestureEnabled : Boolean; |
401 | 426 | |
427 | + //2ch¾êÝè | |
428 | + //F2chLanguage : TStringList; | |
429 | + | |
402 | 430 | //tVAigbvÝè |
403 | 431 | FLocalTrapAtt : Boolean; |
404 | 432 | FRemoteTrapAtt : Boolean; |
@@ -410,6 +438,8 @@ type | ||
410 | 438 | FMute: Boolean; |
411 | 439 | //XiÝÅ¢mè¶àLøÉ·é© |
412 | 440 | FUseUndecided: Boolean; |
441 | + //MessageListÉoͳêébZ[W | |
442 | + FMessageList : array[0..13] of string; | |
413 | 443 | |
414 | 444 | //Be2ch |
415 | 445 | //FØp[UIDEpX[h |
@@ -420,8 +450,6 @@ type | ||
420 | 450 | //ðÌÅåÛ¶ |
421 | 451 | FMaxRecordCount : Integer; |
422 | 452 | |
423 | - //Xbhêð_E[hãÉ\[g·é© | |
424 | - FAutoSortThreadList : Boolean; | |
425 | 453 | function GetMainCoolSet(Index: Integer): TCoolSet; |
426 | 454 | function GetBoardCoolSet(Index: Integer): TCoolSet; |
427 | 455 | function GetBrowserCoolSet(Index: Integer): TCoolSet; |
@@ -487,7 +515,9 @@ type | ||
487 | 515 | function GetIgnoreFileName: string; |
488 | 516 | function GetGestureFileName : string; |
489 | 517 | function GetSpamFilterFileName : string; |
490 | - function GetLanguageFileName: string; | |
518 | + function GetLanguageFileName: string; | |
519 | + procedure SetMessages; | |
520 | + function GetMessage(AType :Integer): string; | |
491 | 521 | function GetMainKeyFileName: String; |
492 | 522 | function GetEditorKeyFileName: String; |
493 | 523 | procedure WriteLogFolder(AVal : String); |
@@ -737,42 +767,8 @@ type | ||
737 | 767 | property BeAutoLogin: Boolean read FBeAutoLogin write FBeAutoLogin; |
738 | 768 | property BeLogin: Boolean read FBeLogin write FBeLogin; |
739 | 769 | property MaxRecordCount : Integer read FMaxRecordCount write FMaxRecordCount; |
740 | - //! Xbhê_E[hãÉXbh¼Å¸\[g·é© | |
741 | - property AutoSortThreadList : Boolean read FAutoSortThreadList write FAutoSortThreadList; | |
742 | -end; | |
743 | 770 | |
744 | - | |
745 | -const | |
746 | -// MAIN_COOLBAND_COUNT = 4; //CCoolBandÌ | |
747 | -// LIST_COOLBAND_COUNT = 2; //ÂCoolBandÌ | |
748 | -// BROWSER_COOLBAND_COUNT = 3; //uEUCoolBandÌ | |
749 | - | |
750 | - BOARD_FILE_NAME = 'board.2ch'; | |
751 | - CUSTOMBOARD_FILE_NAME = 'custom.2ch'; | |
752 | - BOARD_DIR_NAME = 'Board'; | |
753 | - KEY_SETTING_FILE_NAME = 'key.ini'; | |
754 | - EKEY_SETTING_FILE_NAME = 'Ekey.ini'; | |
755 | - TEMP_FOLDER = 'Temp'; | |
756 | - OUTBOX_FILE_NAME = 'outbox.ini'; | |
757 | - SENT_FILE_NAME = 'sent.ini'; | |
758 | - CONFIG_DIR_NAME = 'config'; | |
759 | - CSS_DIR_NAME = 'css'; | |
760 | - SKIN_DIR_NAME = 'skin'; | |
761 | - SKIN_HEADER_FILE_NAME = 'Header.html'; | |
762 | - SKIN_FOOTER_FILE_NAME = 'Footer.html'; | |
763 | - SKIN_NEWRES_FILE_NAME = 'NewRes.html'; | |
764 | - SKIN_RES_FILE_NAME = 'Res.html'; | |
765 | - SKIN_BOOKMARK_FILE_NAME = 'Bookmark.html'; | |
766 | - SKIN_NEWMARK_FILE_NAME = 'Newmark.html'; | |
767 | - NGWORDs_DIR_NAME : String = 'NGwords'; | |
768 | - BOARD_PLUGIN_DIR_NAME = 'BoardPlugin'; | |
769 | - SAMBATIME_FILE_NAME : String = 'Samba.ini'; | |
770 | - IGNORE_FILE_NAME : String = 'Ignore.txt'; | |
771 | -// DOLIB_LOGIN_URL = '/~tora3n2c/futen.cgi'; | |
772 | - MAX_POPUP_RES : Integer = 10; | |
773 | - GESTURE_FILE_NAME = 'Gestures.ini'; | |
774 | - SPAMFILTER_FILE_NAME = 'SpamFilter.ini'; | |
775 | - LANGUAGE_FILE_NAME = 'language.ini'; | |
771 | +end; | |
776 | 772 | |
777 | 773 | |
778 | 774 |
@@ -798,8 +794,25 @@ const | ||
798 | 794 | DEFAULT_TAB_FONT_NAME: string = 'lr oSVbN'; |
799 | 795 | DEFAULT_TAB_FONT_SIZE: Integer = 9; |
800 | 796 | 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'; | |
801 | 800 | GIKO_ENCRYPT_TEXT: string = 'gikoNaviEncryptText'; |
802 | 801 | |
802 | + DEF_MESSAGES : array[0..13] of string = ( 'OAEgµÜµ½', | |
803 | + 'OCµÜµ½ - ', | |
804 | + '§OCµÜµ½ - ', | |
805 | + '[Xêæ¾®¹]', | |
806 | + '(¼Ìs¾j', | |
807 | + '[Xæ¾®¹]', | |
808 | + '[X·ªæ¾®¹]', | |
809 | + '[¢XV]', | |
810 | + '[f]', | |
811 | + '[G[]', | |
812 | + '[XMI¹]', | |
813 | + '[VXMI¹]', | |
814 | + '[XM¸s]', | |
815 | + '[VXM¸s]'); | |
803 | 816 | var |
804 | 817 | SOUND_NAME: array[0..4] of TSoundName = ( |
805 | 818 | (Name: 'New'; ViewName: '澬÷'; FileName: ''), |
@@ -1256,8 +1269,6 @@ begin | ||
1256 | 1269 | FCategorySortOrder := ini.ReadBool('ThreadList', 'CategorySortOrder', True); |
1257 | 1270 | FBoardSortIndex := ini.ReadInteger('ThreadList', 'BoardSortIndex', 0); |
1258 | 1271 | FBoardSortOrder := ini.ReadBool('ThreadList', 'BoardSortOrder', True); |
1259 | - // DLãÌ©®\[g | |
1260 | - FAutoSortThreadList := ini.ReadBool('ThreadList', 'AutoSort', True); | |
1261 | 1272 | //Dat¿X\[g |
1262 | 1273 | FDatOchiSortIndex := ini.ReadInteger('ThreadList', 'DatOchiSortIndex', -1); |
1263 | 1274 | FDatOchiSortOrder := ini.ReadBool('ThreadList', 'DatOchiSortOrder', False); |
@@ -1592,8 +1603,6 @@ begin | ||
1592 | 1603 | ini.WriteBool('ThreadList', 'BoardSortOrder', FBoardSortOrder); |
1593 | 1604 | ini.WriteInteger('ThreadList', 'DatOchiSortIndex', FDatOchiSortIndex); |
1594 | 1605 | ini.WriteBool('ThreadList', 'DatOchiSortOrder', FDatOchiSortOrder); |
1595 | - // DLãÌ©®\[g | |
1596 | - ini.WriteBool('ThreadList', 'AutoSort', FAutoSortThreadList); | |
1597 | 1606 | |
1598 | 1607 | //«Ý}VgpÝè |
1599 | 1608 | ini.WriteBool('PostTime', 'UseMachineTime', FUseMachineTime); |
@@ -2164,6 +2173,62 @@ function TSetting.GetLanguageFileName: string; | ||
2164 | 2173 | begin |
2165 | 2174 | Result := GetConfigDir + LANGUAGE_FILE_NAME; |
2166 | 2175 | end; |
2176 | +//MessagelistÉoͳêébZ[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 | + 'OAEgµÜµ½', | |
2188 | + 'OCµÜµ½ - ', | |
2189 | + '§OCµÜµ½ - ', | |
2190 | + '[Xêæ¾®¹]', | |
2191 | + '(¼Ìs¾j', | |
2192 | + '[Xæ¾®¹]', | |
2193 | + '[X·ªæ¾®¹]', | |
2194 | + '[¢XV]', | |
2195 | + '[f]', | |
2196 | + '[G[]', | |
2197 | + '[XMI¹]', | |
2198 | + '[VXMI¹]', | |
2199 | + '[XM¸s]', | |
2200 | + '[VXM¸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; | |
2167 | 2232 | procedure TSetting.WriteLogFolder(AVal : String); |
2168 | 2233 | begin |
2169 | 2234 | FLogFolder := AVal; |
@@ -70,8 +70,7 @@ uses | ||
70 | 70 | HTMLCreate in 'HTMLCreate.pas', |
71 | 71 | ListViewUtils in 'ListViewUtils.pas', |
72 | 72 | GikoDataModule in 'GikoDataModule.pas' {GikoDM: TDataModule}, |
73 | - BrowserRecord in 'BrowserRecord.pas', | |
74 | - GikoMessage in 'GikoMessage.pas'; | |
73 | + BrowserRecord in 'BrowserRecord.pas'; | |
75 | 74 | |
76 | 75 | {$R *.RES} |
77 | 76 | {$R gikoResource.res} |
@@ -1,15 +0,0 @@ | ||
1 | -[Language] | |
2 | -Logout=OAEgµÜ·½ | |
3 | -Login=OCµÜ·½ - | |
4 | -ForceLogin=§OCµÜ·½ - | |
5 | -SureItiran=[Xê澵ܷ½] | |
6 | -Unknown=i¼Ìs¾ÅÂj | |
7 | -SureSyutoku=[Xæ¾®¹µÜ·½] | |
8 | -SureDiff=[X·ªæ¾®¹µÜ·½] | |
9 | -NotMod=[¢XV@࿯Â] | |
10 | -Abort=[f¥¥¥Q|P|] | |
11 | -Error=[G[¶·Àª(ßÍß)ª!!] | |
12 | -NewRes=[VXMI¹µÜ·½(M¥Ö¥L)] | |
13 | -NewSure=[VXMI¹µÜ·½(M¥Ö¥L)] | |
14 | -ResError=[XM¸s(L¥Ö¥`)] | |
15 | -SureError= [VXM¸s(L¥Ö¥`)] |
@@ -109,19 +109,6 @@ LICENSE | ||
109 | 109 | ------------------------------ |
110 | 110 | 200X/XX/XX |
111 | 111 | Version ÊÞÀ51 |
112 | -@Xbh`æÌÅK» | |
113 | -@XÔwèURLðNbNµ½Æ«Ì®ìÅAæ¾ÏÝOÌXÔÌê©®ÅDL·éæ¤ÉÏX | |
114 | -@XGfB^©çSambaÌÝèlðÏXÅ«éæ¤ÉÏX | |
115 | -@LrlbgãÅNbNE_uNbNCxgªßèɶ·ésïÌC³ | |
116 | -@}EXWFX`[LøÉvr [ãÅENbNÅ«È¢sïÌC³ | |
117 | -@CtH[ãÅÌV[gJbgL[ÌDæʪMRir©ÌªÅãÊÉÏX | |
118 | -@Cj [̨CÉüèÌ`æ̬» | |
119 | -@Xe[^Xo[É»Ý\¦µÄ¢éXbhÌeÊð\¦·éæ¤Éµ½ | |
120 | -@DAT¿µ½XÌeÊðæ¾Å«È¢sïÌC³ | |
121 | -@ÂXVÅ[Jt@CðwèÅ«éæ¤ÉÏX | |
122 | -@Xbhê_E[hãÌ\[gðIvV» | |
123 | -@NG[hÉS¼pÐçªÈJ^JiÌá¢ð¯ê·éIvVÌÇÁ | |
124 | -@XÌiÝÅS¼pÐçªÈJ^J^Ìá¢ð³·éæ¤ÉÏX | |
125 | 112 | |
126 | 113 | 2005/10/10 |
127 | 114 | Version ÊÞÀ50 [X3 |