Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/Giko.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.596 - (hide annotations) (download) (as text)
Sun Feb 26 04:05:52 2006 UTC (18 years, 1 month ago) by h677
Branch: MAIN
CVS Tags: v1_52_0_649
Changes since 1.595: +16 -11 lines
File MIME type: text/x-pascal
スレッド一覧の更新を関数化

1 hi_ 1.1 unit Giko;
2    
3     interface
4    
5     uses
6     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 h677 1.536 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils,
8 hi_ 1.4 {$IF Defined(DELPRO) }
9 yoffy 1.138 SHDocVw,
10 hi_ 1.4 MSHTML,
11     {$ELSE}
12     SHDocVw_TLB,
13     MSHTML_TLB,
14     {$IFEND}
15 h677 1.183 IdHTTP, ActiveX, ActnList, ImgList,
16 h677 1.536 ToolWin, Buttons, IdComponent, UrlMon, Tabs, IdGlobal, StrUtils,
17     CommCtrl, Dialogs, GikoSystem, Setting, BoardGroup, ThreadControl, ItemDownload,
18     Editor, RoundData, GikoPanel, Favorite, HTMLDocumentEvent,
19     HintWindow, GikoCoolBar, GikoListView, Search, ExternalBoardManager,
20     ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection,
21 h677 1.551 IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord;
22 hi_ 1.1
23 h677 1.567 const
24     NGWORDNAME_PANEL = 3;
25     THREADSIZE_PANEL = 2;
26    
27 hi_ 1.1 type
28 yoffy 1.138 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
29 yoffy 1.258 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
30 yoffy 1.280 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
31 yoffy 1.424 TResizeType = (rtNone, rtResizing);
32 hi_ 1.1
33 h677 1.551 // TBrowserRecord = class;
34 h677 1.299
35 hi_ 1.1 TGikoForm = class(TForm)
36     StatusBar: TStatusBar;
37     MainPanel: TPanel;
38     ClientPanel: TPanel;
39     TreeSplitter: TSplitter;
40     CabinetPanel: TPanel;
41     TreeView: TTreeView;
42     ThreadMainPanel: TPanel;
43     ListSplitter: TSplitter;
44     ViewPanel: TPanel;
45 yoffy 1.51 ListView: TGikoListView;
46 hi_ 1.1 ThreadPanel: TPanel;
47     MessagePanel: TPanel;
48     MessageBar: TPanel;
49     MessageHideButton: TSpeedButton;
50     MessageListView: TListView;
51     MessageSplitter: TSplitter;
52     Panel3: TPanel;
53 h677 1.541 CabinetCloseSpeedButton: TSpeedButton;
54 hi_ 1.1 ToolBar1: TToolBar;
55     CabinetSelectToolButton: TToolButton;
56     HistoryToolBar: TToolBar;
57 h677 1.541 HistoryShowToolButton: TToolButton;
58     HistoryAllClearToolButton: TToolButton;
59 hi_ 1.1 ItemIcon16: TImageList;
60     ItemIcon32: TImageList;
61 yoffy 1.2 HotToobarImageList: TImageList;
62 hi_ 1.1 ItemImageList: TImageList;
63     MainMenu: TMainMenu;
64     FileMenu: TMenuItem;
65 yoffy 1.51 DeleteMenu: TMenuItem;
66     ExitMenu: TMenuItem;
67     KidokuMenu: TMenuItem;
68 hi_ 1.1 MidokuMenu: TMenuItem;
69 yoffy 1.51 AllSelectMenu: TMenuItem;
70 hi_ 1.1 ViewMenu: TMenuItem;
71     StdToolBarMenu: TMenuItem;
72     CabinetMenu: TMenuItem;
73 yoffy 1.51 H1: TMenuItem;
74 hi_ 1.1 N4: TMenuItem;
75 yoffy 1.51 CabinetVisibleMenu: TMenuItem;
76 hi_ 1.1 MessageMenu: TMenuItem;
77     StatusBarMenu: TMenuItem;
78     MMSep03: TMenuItem;
79 yoffy 1.51 LargeIconMenu: TMenuItem;
80 hi_ 1.1 SmallIconMenu: TMenuItem;
81     ListMenu: TMenuItem;
82     DetailMenu: TMenuItem;
83 yoffy 1.51 ToolMenu: TMenuItem;
84 hi_ 1.1 Find1: TMenuItem;
85     RoundMenu: TMenuItem;
86     MMSep04: TMenuItem;
87     OptionMenu: TMenuItem;
88     HelpMenu: TMenuItem;
89     G1: TMenuItem;
90 yoffy 1.51 N1: TMenuItem;
91 hi_ 1.1 AboutMenu: TMenuItem;
92     BrowserPopupMenu: TPopupMenu;
93 yoffy 1.51 ShowThreadMenu: TMenuItem;
94 yoffy 1.2 ShowBoardMenu: TMenuItem;
95 hi_ 1.1 ListIconPopupMenu: TPopupMenu;
96     LargeIconPMenu: TMenuItem;
97     SmallIconPMenu: TMenuItem;
98     ListPMenu: TMenuItem;
99 yoffy 1.51 DetailPMenu: TMenuItem;
100 hi_ 1.1 ClosePopupMenu: TPopupMenu;
101 yoffy 1.51 CloseMenu: TMenuItem;
102 hi_ 1.1 U1: TMenuItem;
103     N3: TMenuItem;
104     B1: TMenuItem;
105     S1: TMenuItem;
106     N2: TMenuItem;
107     A1: TMenuItem;
108     L1: TMenuItem;
109     N5: TMenuItem;
110     S2: TMenuItem;
111     ListPopupMenu: TPopupMenu;
112 yoffy 1.51 ListRoundPMenu: TMenuItem;
113 hi_ 1.1 ListReservPMenu: TMenuItem;
114     LPMSep01: TMenuItem;
115 yoffy 1.51 ItemRoundPMenu: TMenuItem;
116 hi_ 1.1 LPMSep02: TMenuItem;
117 yoffy 1.2 KidokuPMenu: TMenuItem;
118 hi_ 1.1 MidokuPMenu: TMenuItem;
119     AllSelectPMenu: TMenuItem;
120     UrlCopyPMenu: TMenuItem;
121     LPMSep05: TMenuItem;
122     DeletePMenu: TMenuItem;
123     LPMSep06: TMenuItem;
124     ViewPMenu: TMenuItem;
125     LargeIconLPMenu: TMenuItem;
126     SmallIconLPMenu: TMenuItem;
127     ListLPMenu: TMenuItem;
128     DetailLPMenu: TMenuItem;
129     T1: TMenuItem;
130     B2: TMenuItem;
131     N8: TMenuItem;
132 yoffy 1.51 URLC1: TMenuItem;
133     N9: TMenuItem;
134 hi_ 1.1 N10: TMenuItem;
135     G2: TMenuItem;
136     N11: TMenuItem;
137     T3: TMenuItem;
138     L2: TMenuItem;
139     N12: TMenuItem;
140     K1: TMenuItem;
141     N13: TMenuItem;
142     N14: TMenuItem;
143     R1: TMenuItem;
144     A2: TMenuItem;
145     N15: TMenuItem;
146     KokoPopupMenu: TPopupMenu;
147     KokomadePMenu: TMenuItem;
148 yoffy 1.2 AllPMenu: TMenuItem;
149 hi_ 1.1 MenuItem1: TMenuItem;
150     MenuItem2: TMenuItem;
151     BrowserTabPopupMenu: TPopupMenu;
152 yoffy 1.51 Close1: TMenuItem;
153 hi_ 1.1 A3: TMenuItem;
154 yoffy 1.51 N16: TMenuItem;
155 hi_ 1.1 A4: TMenuItem;
156     TreePopupMenu: TPopupMenu;
157     TreeSelectThreadPupupMenu: TMenuItem;
158 yoffy 1.51 TreeSelectBoardPupupMenu: TMenuItem;
159 hi_ 1.1 TPMSep01: TMenuItem;
160     TreeSelectURLPupupMenu: TMenuItem;
161     T2: TMenuItem;
162 yoffy 1.2 L3: TMenuItem;
163 hi_ 1.1 B3: TMenuItem;
164     BrowserBottomPanel: TGikoPanel;
165     CabinetSelectPopupMenu: TPopupMenu;
166     H2: TMenuItem;
167 yoffy 1.51 ItemReservPMenu: TMenuItem;
168     RoundNamePopupMenu: TPopupMenu;
169 yoffy 1.2 N7: TMenuItem;
170 hi_ 1.1 B4: TMenuItem;
171     L4: TMenuItem;
172     K2: TMenuItem;
173 yoffy 1.51 A5: TMenuItem;
174 hi_ 1.1 A6: TMenuItem;
175 yoffy 1.51 C1: TMenuItem;
176     V1: TMenuItem;
177     N19: TMenuItem;
178 hi_ 1.1 D1: TMenuItem;
179 yoffy 1.51 D2: TMenuItem;
180     MessageImageList: TImageList;
181     ProgressBar: TProgressBar;
182     URL1: TMenuItem;
183 hi_ 1.1 NameUrlCopyPMenu: TMenuItem;
184     URLC2: TMenuItem;
185 yoffy 1.51 URLN1: TMenuItem;
186     N21: TMenuItem;
187     URLC3: TMenuItem;
188 yoffy 1.2 URLN2: TMenuItem;
189 yoffy 1.51 N23: TMenuItem;
190 yoffy 1.2 ListCoolBar: TGikoCoolBar;
191 hi_ 1.1 ListToolBar: TToolBar;
192 yoffy 1.2 BrowserCoolBar: TGikoCoolBar;
193 hi_ 1.1 BrowserToolBar: TToolBar;
194     ToolButton3: TToolButton;
195 yoffy 1.51 ToolButton9: TToolButton;
196 hi_ 1.1 ToolButton11: TToolButton;
197 yoffy 1.51 ToolButton5: TToolButton;
198 hi_ 1.1 ListNameToolBar: TToolBar;
199 yoffy 1.51 ListNameLabel: TLabel;
200 hi_ 1.1 FolderImage: TImage;
201     BrowserNameToolBar: TToolBar;
202     ItemBoardImage: TImage;
203     BrowserBoardNameLabel: TLabel;
204 yoffy 1.51 ItemImage: TImage;
205     BrowserNameLabel: TLabel;
206     D3: TMenuItem;
207     N25: TMenuItem;
208 hi_ 1.1 N26: TMenuItem;
209     D4: TMenuItem;
210     S3: TMenuItem;
211 yoffy 1.51 R2: TMenuItem;
212     TreeSelectNameURLPupupMenu: TMenuItem;
213     N27: TMenuItem;
214 hi_ 1.1 H3: TMenuItem;
215 yoffy 1.51 I1: TMenuItem;
216     BrowserTabToolBar: TToolBar;
217     BrowserTab: TTabControl;
218     About1: TMenuItem;
219     N28: TMenuItem;
220     S4: TMenuItem;
221 yoffy 1.2 N29: TMenuItem;
222     N30: TMenuItem;
223     N31: TMenuItem;
224 hi_ 1.1 L5: TMenuItem;
225 yoffy 1.51 L6: TMenuItem;
226 hi_ 1.1 A7: TMenuItem;
227 yoffy 1.51 R3: TMenuItem;
228 hi_ 1.1 FavoriteMenu: TMenuItem;
229 yoffy 1.51 N32: TMenuItem;
230 hi_ 1.1 BoardFavoriteAddMenu: TMenuItem;
231     ThreadFavoriteAddMenu: TMenuItem;
232 yoffy 1.2 N33: TMenuItem;
233 hi_ 1.1 TreeSelectFavoriteAddPupupMenu: TMenuItem;
234     FavoriteTreeView: TTreeView;
235 yoffy 1.51 StateIconImageList: TImageList;
236     TopPanel: TPanel;
237     TopRightPanel: TPanel;
238     AnimePanel: TPanel;
239 hi_ 1.1 Animate: TAnimate;
240     TopCoolPanel: TPanel;
241 yoffy 1.51 MainCoolBar: TGikoCoolBar;
242     MenuToolBar: TToolBar;
243     StdToolBar: TToolBar;
244     AddressToolBar: TToolBar;
245     AddressComboBox: TComboBox;
246     MoveToToolButton: TToolButton;
247     AddressImageList: TImageList;
248     AddressToolBarMenu: TMenuItem;
249     T4: TMenuItem;
250     Show1: TMenuItem;
251     N34: TMenuItem;
252 hi_ 1.1 T5: TMenuItem;
253     B5: TMenuItem;
254 yoffy 1.51 N35: TMenuItem;
255     A8: TMenuItem;
256     U2: TMenuItem;
257 hi_ 1.1 F1: TMenuItem;
258     PreviewTimer: TTimer;
259 yoffy 1.51 MonazillaWebPageAction1: TMenuItem;
260     N36: TMenuItem;
261     H4: TMenuItem;
262     K3: TMenuItem;
263     L7: TMenuItem;
264     N37: TMenuItem;
265     A9: TMenuItem;
266 yoffy 1.2 ChevronPopupMenu: TPopupMenu;
267     N2N1: TMenuItem;
268 hi_ 1.1 N38: TMenuItem;
269 yoffy 1.2 F2: TMenuItem;
270 yoffy 1.51 LinkToolBar: TToolBar;
271     a10: TMenuItem;
272     N39: TMenuItem;
273     T6: TMenuItem;
274     N40: TMenuItem;
275 yoffy 1.2 LinkBarPopupMenu: TPopupMenu;
276 yoffy 1.51 T7: TMenuItem;
277     ThreadPopupMenu: TPopupMenu;
278     MenuItem4: TMenuItem;
279     MenuItem5: TMenuItem;
280     MenuItem6: TMenuItem;
281 yoffy 1.2 T8: TMenuItem;
282 yoffy 1.51 URLN3: TMenuItem;
283 yoffy 1.2 SelectItemNameCopyAction1: TMenuItem;
284 yoffy 1.51 B6: TMenuItem;
285     T9: TMenuItem;
286     C2: TMenuItem;
287     SelectComboBox: TComboBox;
288     MainCoolBarPopupMenu: TPopupMenu;
289     StdToolBarVisiblePMenu: TMenuItem;
290     AddressToolBarVisiblePMenu: TMenuItem;
291     LinkToolBarVisiblePMenu: TMenuItem;
292     NG1: TMenuItem;
293     NG2: TMenuItem;
294     N43: TMenuItem;
295     N44: TMenuItem;
296     L9: TMenuItem;
297     I3: TMenuItem;
298     N45: TMenuItem;
299     B9: TMenuItem;
300     R5: TMenuItem;
301     T12: TMenuItem;
302     Show3: TMenuItem;
303     N46: TMenuItem;
304     T13: TMenuItem;
305     B10: TMenuItem;
306     N47: TMenuItem;
307     A12: TMenuItem;
308     U4: TMenuItem;
309     F4: TMenuItem;
310     N48: TMenuItem;
311     T14: TMenuItem;
312     ToolButton16: TToolButton;
313     N50: TMenuItem;
314     A11: TMenuItem;
315     S5: TMenuItem;
316     Reload: TMenuItem;
317     GoBack: TMenuItem;
318     GoFoward: TMenuItem;
319     IndividualAbon1: TMenuItem;
320     N41: TMenuItem;
321     IndividualAbon2: TMenuItem;
322 h677 1.543 AntiIndivAbonMenuItem: TMenuItem;
323 yoffy 1.51 AntiIndividualAbon: TMenuItem;
324     N49: TMenuItem;
325     N51: TMenuItem;
326     N52: TMenuItem;
327     SearchBoardName: TMenuItem;
328 yoffy 1.205 TreeSelectLogDeleteSeparator: TMenuItem;
329 yoffy 1.100 N54: TMenuItem;
330     A13: TMenuItem;
331     FavoriteTreePopupMenu: TPopupMenu;
332     FavoriteTreeRenamePopupMenu: TMenuItem;
333     FavoriteTreeNewFolderPopupMenu: TMenuItem;
334     N56: TMenuItem;
335     FavoriteTreeDeletePopupMenu: TMenuItem;
336     FavoriteToolBar: TToolBar;
337 h677 1.541 FavoriteAddToolButton: TToolButton;
338     FavoriteArrangeToolButton: TToolButton;
339 yoffy 1.100 FavoriteTreeBrowseFolderPopupMenu: TMenuItem;
340     N57: TMenuItem;
341     FavoriteTreeReloadPopupMenu: TMenuItem;
342     N58: TMenuItem;
343     FavoriteTreeURLCopyPopupMenu: TMenuItem;
344     FavoriteTreeNameCopyPopupMenu: TMenuItem;
345     FavoriteTreeLogDeletePopupMenu: TMenuItem;
346     N59: TMenuItem;
347     FavoriteTreeNameURLCopyPopupMenu: TMenuItem;
348     ToolButton20: TToolButton;
349     N60: TMenuItem;
350 yoffy 1.107 ExportFavoriteFileAction1: TMenuItem;
351 yoffy 1.142 N6: TMenuItem;
352     N17: TMenuItem;
353 h677 1.174 N18: TMenuItem;
354     N20: TMenuItem;
355 h677 1.532 N24: TMenuItem;
356 h677 1.174 N62: TMenuItem;
357 h677 1.514 N61: TMenuItem;
358 h677 1.478 N63: TMenuItem;
359 h677 1.183 N64: TMenuItem;
360 h677 1.187 dummy1: TMenuItem;
361 h677 1.570 TreeSelectLogDeletePopupMenu: TMenuItem;
362 h677 1.485 N65: TMenuItem;
363 yoffy 1.209 BBSSelectPopupMenu: TPopupMenu;
364 yoffy 1.218 PlugInMenu: TMenuItem;
365 h677 1.542 TreeSelectNamePupupMenu: TMenuItem;
366 h677 1.299 BrowserPanel: TPanel;
367 h677 1.514 SelectTimer: TTimer;
368 h677 1.340 SelectThreadSave: TMenuItem;
369 h677 1.342 N55: TMenuItem;
370 h677 1.343 N66: TMenuItem;
371     dat1: TMenuItem;
372 yoffy 1.397 OpenLogFolder: TMenuItem;
373 h677 1.346 Browser: TWebBrowser;
374 genyakun 1.353 TabSave: TMenuItem;
375 h677 1.407 TabOpen: TMenuItem;
376 yoffy 1.375 ResRangePopupMenu: TPopupMenu;
377 h677 1.547 ResRangeHundPMenuItem: TMenuItem;
378     ResRangeKokoPMenuItem: TMenuItem;
379     ResRangeNewPMenuItem: TMenuItem;
380     ResRangeAllPMenuItem: TMenuItem;
381 h677 1.570 BrowsBoradHeadAction1: TMenuItem;
382 yoffy 1.390 ThreadRangePopupMenu: TPopupMenu;
383     A15: TMenuItem;
384     L8: TMenuItem;
385 h677 1.542 N67: TMenuItem;
386 yoffy 1.390 N68: TMenuItem;
387     S6: TMenuItem;
388     N69: TMenuItem;
389 h677 1.547 ResRangeSelectPMenuItem: TMenuItem;
390 yoffy 1.415 ListColumnPopupMenu: TPopupMenu;
391 h677 1.485 N70: TMenuItem;
392     ID1: TMenuItem;
393     ID2: TMenuItem;
394     N53: TMenuItem;
395     ID3: TMenuItem;
396     N71: TMenuItem;
397 h677 1.487 N72: TMenuItem;
398     N73: TMenuItem;
399 h677 1.517 SelectComboBoxPanel: TPanel;
400     SelectComboBoxSplitter: TImage;
401 h677 1.570 ToolButton1: TToolButton;
402 h677 1.517 N74: TMenuItem;
403 genyakun 1.527 WikiFAQ: TMenuItem;
404 h677 1.542 GikoApplicationEvents: TApplicationEvents;
405 h677 1.583 N22: TMenuItem;
406     N42: TMenuItem;
407 h677 1.592 DAT2: TMenuItem;
408     N75: TMenuItem;
409     DAT3: TMenuItem;
410     N76: TMenuItem;
411 yoffy 1.251 procedure FormCreate(Sender: TObject);
412 hi_ 1.1 procedure FormDestroy(Sender: TObject);
413     procedure BrowserStatusTextChange(Sender: TObject;
414     const Text: WideString);
415     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
416     procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
417     var AllowChange: Boolean);
418     procedure ListViewKeyDown(Sender: TObject; var Key: Word;
419     Shift: TShiftState);
420     procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
421     procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
422     Button: TToolButton; State: TCustomDrawState;
423     var DefaultDraw: Boolean);
424     procedure BrowserBeforeNavigate2(Sender: TObject;
425     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
426     Headers: OleVariant; var Cancel: WordBool);
427     procedure TreeViewCustomDraw(Sender: TCustomTreeView;
428     const ARect: TRect; var DefaultDraw: Boolean);
429     procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
430     Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
431     procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
432     procedure ListViewCustomDraw(Sender: TCustomListView;
433     const ARect: TRect; var DefaultDraw: Boolean);
434     procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
435     Shift: TShiftState; X, Y: Integer);
436     procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
437     procedure MessageListViewResize(Sender: TObject);
438 yoffy 1.138 procedure CabinetVisible( isVisible : Boolean );
439 hi_ 1.1 procedure FormResize(Sender: TObject);
440     procedure ListPopupMenuPopup(Sender: TObject);
441     procedure TreePopupMenuPopup(Sender: TObject);
442     procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
443     var Cancel: WordBool);
444     procedure ListSplitterMoved(Sender: TObject);
445     procedure BrowserTabChange(Sender: TObject);
446     procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
447     Shift: TShiftState; X, Y: Integer);
448     procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
449     State: TDragState; var Accept: Boolean);
450     procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
451     procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
452     Y: Integer);
453     procedure BrowserDocumentComplete(Sender: TObject;
454     const pDisp: IDispatch; var URL: OleVariant);
455     procedure RoundNamePopupMenuPopup(Sender: TObject);
456     procedure FormShow(Sender: TObject);
457     procedure BrowserTabToolBarResize(Sender: TObject);
458     procedure FavoriteMenuClick(Sender: TObject);
459 yoffy 1.2 procedure MainCoolBarResize(Sender: TObject);
460     procedure AddressToolBarResize(Sender: TObject);
461 hi_ 1.1 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
462     Shift: TShiftState);
463 yoffy 1.2 procedure BrowserEnter(Sender: TObject);
464 hi_ 1.1 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
465     procedure PreviewTimerTimer(Sender: TObject);
466     procedure MessageHideButtonClick(Sender: TObject);
467 h677 1.541 procedure HistoryAllClearToolButtonClick(Sender: TObject);
468 yoffy 1.2 procedure MainCoolBarBandInfo(Sender: TObject;
469     var BandInfo: PReBarBandInfoA);
470     procedure MainCoolBarChevronClick(Sender: TObject;
471 yoffy 1.51 RebarChevron: PNMRebarChevron);
472     procedure ListCoolBarBandInfo(Sender: TObject;
473     var BandInfo: PReBarBandInfoA);
474     procedure ListCoolBarChevronClick(Sender: TObject;
475     RebarChevron: PNMRebarChevron);
476     procedure BrowserCoolBarBandInfo(Sender: TObject;
477     var BandInfo: PReBarBandInfoA);
478 yoffy 1.2 procedure BrowserCoolBarChevronClick(Sender: TObject;
479 yoffy 1.51 RebarChevron: PNMRebarChevron);
480     procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
481     procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
482     WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
483     procedure SelectComboBoxChange(Sender: TObject);
484     procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
485     Shift: TShiftState);
486     procedure SelectComboBoxExit(Sender: TObject);
487     procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
488     Shift: TShiftState; X, Y: Integer);
489     procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
490     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
491     procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
492     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
493     procedure StatusBarResize(Sender: TObject);
494     procedure SelectComboBoxEnter(Sender: TObject);
495 yoffy 1.100 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
496     Y: Integer);
497 yoffy 1.71 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
498 yoffy 1.100 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
499     var S: String);
500     procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
501     Shift: TShiftState);
502     procedure FavoriteTreePopupMenuPopup(Sender: TObject);
503     procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
504     procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
505     Shift: TShiftState; X, Y: Integer);
506     procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
507     State: TDragState; var Accept: Boolean);
508     procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
509     Y: Integer);
510     procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
511     var Handled: Boolean);
512     procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
513     var Handled: Boolean);
514     procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
515     var Handled: Boolean);
516 yoffy 1.142 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
517 h677 1.174 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
518     var Handled: Boolean);
519 h677 1.187 procedure BrowserTabPopupMenuPopup(Sender: TObject);
520 yoffy 1.216 procedure BrowserTabResize(Sender: TObject);
521 yoffy 1.236 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
522     Shift: TShiftState);
523 yoffy 1.246 procedure FavoriteTreeViewMouseDown(Sender: TObject;
524 yoffy 1.248 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
525 yoffy 1.250 procedure MessagePanelResize(Sender: TObject);
526 yoffy 1.276 procedure OnResized;
527 h677 1.539 procedure SelectTimerTimer(Sender: TObject);
528 yoffy 1.425 procedure ListViewColumnRightClick(Sender: TObject;
529 yoffy 1.415 Column: TListColumn; Point: TPoint);
530 h677 1.478 procedure ListViewCustomDrawItem(Sender: TCustomListView;
531 h677 1.463 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
532     procedure FormActivate(Sender: TObject);
533 h677 1.472 procedure BrowserPanelResize(Sender: TObject);
534 h677 1.482 procedure MenuToolBarResize(Sender: TObject);
535     procedure ListToolBarResize(Sender: TObject);
536     procedure BrowserToolBarResize(Sender: TObject);
537 h677 1.539 procedure KokoPopupMenuPopup(Sender: TObject);
538 h677 1.517 procedure ListViewKeyUp(Sender: TObject; var Key: Word;
539     Shift: TShiftState);
540     procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
541     var AllowEdit: Boolean);
542 h677 1.570 procedure CabinetCloseSpeedButtonClick(Sender: TObject);
543 h677 1.541 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
544 h677 1.542 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
545     var Handled: Boolean);
546     procedure GikoApplicationEventsDeactivate(Sender: TObject);
547     procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
548 h677 1.574 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
549 h677 1.548 Shift: TShiftState; X, Y: Integer);
550 h677 1.585 procedure GetResURLMenuClick(Sender: TObject);
551 hi_ 1.1 private
552     { Private 鐃緒申鐃緒申 }
553     FEnabledCloseButton: Boolean;
554     FClickNode: TTreeNode;
555     FHttpState: Boolean;
556     FHint: TResPopup;
557 h677 1.453 FPreviewBrowser: TWebBrowser;
558 hi_ 1.1 FPreviewURL: string;
559     FBrowserSizeHeight: Integer;
560     FBrowserSizeWidth: Integer;
561     FTabHintIndex: Integer;
562     FListStyle: TViewStyle; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
563     FItemNoVisible: Boolean; //鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
564     FViewType: TGikoViewType; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?
565 h677 1.517 FActiveList: TObject;
566 h677 1.299 FActiveContent: TBrowserRecord; //
567 yoffy 1.133 FActiveBBS : TBBS;
568 hi_ 1.1 FHistoryList: TList; //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?
569     FTreeType: TGikoTreeType;
570     FWorkCount: Integer;
571     FNameCookie: string;
572     FMailCookie: string;
573     FDownloadTitle: string; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
574     FDownloadMax: Integer; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
575     FEvent: THTMLDocumentEventSink;//鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?
576 yoffy 1.51 IsDraggingSelectComboBox : Boolean;
577     DraggingSelectComboBoxPosition : TPoint;
578 yoffy 1.54 FSearchDialog: TSearchDialog;
579 yoffy 1.100 FDropSpaceNode: TTreeNode;
580 yoffy 1.424 FDragTime : Cardinal; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?
581     FDragButton : TToolButton; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?鐃緒申Drag鐃緒申鐃緒申鐃緒申Button鐃緒申鐃緒申
582     FDragWFirst : Boolean; ///< WebTab鐃緒申D&D鐃?
583     FListViewBackGroundColor : TColor; ///< ListView鐃緒申BackGroundColor
584     FUseOddResOddColor : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
585     FOddColor : TColor; ///< 鐃緒申鐃緒申鐃?
586     FSelectResWord : string; ///< 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
587     FIsIgnoreResize : TResizeType; ///< 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
588     FIsMinimize : TMinimizeType; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
589     FOldFormWidth : Integer; ///< 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
590     FToolBarSettingSender : TToolBarSettingSenderType; ///< 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?
591     FMouseDownPos : TPoint; ///< 鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
592 h677 1.303 FBrowsers: TList;
593 yoffy 1.424 FResRangeMenuSelect : Longint; ///< ResRangeButton 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 (鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申 ResRange 鐃緒申鐃緒申)
594 h677 1.423 FStartUp : Boolean;
595 yoffy 1.427 FIsHandledWheel : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 WM_MOUSEWHEEL 鐃緒申鐃緒申鐃緒申鐃緒申
596 h677 1.517 DiffComp: Boolean; //Add by Genyakun 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申True鐃緒申鐃緒申鐃緒申
597 h677 1.548 FOrigenCaption: String; //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
598 h677 1.581 FPreviewBrowserRect: TRect; ///< 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
599     FActionListGroupIndexes: array of Integer; ///<GikoDM鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
600 hi_ 1.1 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
601     procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
602 q9_ 1.233 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
603 hi_ 1.1 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
604     procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
605     procedure ListClick;
606 h677 1.295 procedure ListDoubleClick(Shift: TShiftState);
607 hi_ 1.1 function Hook(var Message: TMessage): Boolean;
608     procedure AddRoundNameMenu(MenuItem: TMenuItem);
609     procedure SetMenuFont;
610     procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
611 yoffy 1.62 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
612     procedure FavoriteClick(Sender: TObject); overload;
613 yoffy 1.100 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
614 hi_ 1.1 function OnDocumentContextMenu(Sender: TObject): WordBool;
615     procedure ShowTextPopup;
616     function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
617 yoffy 1.2 procedure MenuBarChevronMenu;
618     procedure LinkBarChevronMenu;
619     procedure ToolBarChevronMenu(ToolBar: TToolBar);
620 yoffy 1.100 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
621     procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
622     procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
623     procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
624 yoffy 1.85 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
625 yoffy 1.72 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
626 yoffy 1.100 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
627     procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
628 yoffy 1.72 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
629 yoffy 1.236 //
630 yoffy 1.143 procedure SetListViewBackGroundColor(value: TColor);
631 yoffy 1.123 procedure BBSMenuItemOnClick( Sender : TObject );
632 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
633 yoffy 1.216 procedure SaveCoolBarSettings;
634 h677 1.471 procedure SaveMainCoolBarSettings;
635     procedure SaveBoardCoolBarSettings;
636     procedure SaveBrowserCoolBarSettings;
637 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
638 yoffy 1.216 procedure LoadCoolBarSettings;
639 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
640 yoffy 1.276 procedure OnMinimize;
641 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
642 yoffy 1.248 procedure OnMinimized;
643 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
644 yoffy 1.236 procedure TreeClick( Node : TTreeNode );
645 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
646 yoffy 1.236 procedure TreeDoubleClick( Node : TTreeNode );
647 yoffy 1.424 /// 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
648 yoffy 1.289 procedure SetBBSMenu;
649 yoffy 1.424 /// 鐃?鐃?鐃緒申鐃緒申
650 yoffy 1.397 function GetTabURLs(AStringList: TStringList) : Boolean;
651 yoffy 1.415 /// ListColumnPopupMenu 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?
652     procedure ListColumnPopupMenuOnClick( Sender : TObject );
653 yoffy 1.480 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
654     procedure SetSelectWord( const text : string );
655 h677 1.535 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
656     function GetScreenCursor(): TCursor;
657     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
658     procedure SetScreenCursor(Cursor : TCursor);
659 h677 1.550 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
660     procedure CreateControlThread();
661     //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
662     procedure CreateBrowsers(count: Integer);
663 h677 1.581 //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
664     procedure GetGroupIndex(ActionList: TActionList);
665     //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
666     procedure SetGroupIndex(ActionList: TActionList);
667 h677 1.585 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申(鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 or 鐃?鐃緒申JUMP鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申DL鐃緒申鐃緒申)
668     procedure OpenThreadItem(Thread: TThreadItem; URL: String);
669 h677 1.596 //! ListView鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
670     procedure RefreshListView(Thread: TThreadItem);
671 hi_ 1.1 protected
672     procedure CreateParams(var Params: TCreateParams); override;
673 yoffy 1.2 procedure WndProc(var Message: TMessage); override;
674 hi_ 1.1 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
675     procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
676     procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
677 yoffy 1.216
678 hi_ 1.1 public
679     { Public 鐃緒申鐃緒申 }
680 h677 1.533 LastRoundTime: TDateTime;
681     BrowserNullTab: TBrowserRecord;
682 hi_ 1.1 FControlThread: TThreadControl;
683 yoffy 1.444 procedure MoveToURL(const inURL: string);
684 h677 1.530 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
685 hi_ 1.1 procedure ReloadBBS;
686     function GetHttpState: Boolean;
687     procedure SetEnabledCloseButton(Enabled: Boolean);
688     function GetTreeNode(Data: TObject): TTreeNode;
689     procedure ListViewAllSelect;
690     property ListStyle: TViewStyle read FListStyle write FListStyle;
691     property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
692     property ViewType: TGikoViewType read FViewType write FViewType;
693     property NameCookie: string read FNameCookie write FNameCookie;
694     property MailCookie: string read FMailCookie write FMailCookie;
695 h677 1.532 property ClickNode: TTreeNode read FClickNode write FClickNode;
696 h677 1.538 property TreeType: TGikoTreeType read FTreeType write FTreeType;
697 h677 1.534 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
698 h677 1.533 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
699 h677 1.534 property SelectResWord : string read FSelectResWord write FSelectResWord;
700     property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
701     property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
702     property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
703     property ToolBarSettingSender : TToolBarSettingSenderType
704     read FToolBarSettingSender write FToolBarSettingSender;
705 h677 1.535 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
706 h677 1.538 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
707     property WorkCount: Integer read FWorkCount write FWorkCount;
708 h677 1.299 procedure SetContent(inThread: TBrowserRecord);
709 hi_ 1.1 function GetActiveContent: TThreadItem;
710     function GetActiveList: TObject;
711 h677 1.533
712 hi_ 1.1 procedure SetListViewType(AViewType: TGikoViewType); overload;
713     procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
714     procedure PlaySound(SoundEventName: string);
715 yoffy 1.136 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
716 hi_ 1.1 procedure ClearHistory;
717 yoffy 1.135 procedure SaveHistory;
718     procedure LoadHistory;
719 yoffy 1.123 procedure ShowBBSTree( inBBS : TBBS );
720 yoffy 1.248 procedure ShowBBSTreeOld( inBBS : TBBS );
721 hi_ 1.1 procedure ShowHistoryTree;
722     procedure SetHistoryTreeNode;
723     procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
724     procedure SetBrowserTabState;
725 yoffy 1.2 procedure SetToolBarPopup;
726 yoffy 1.100 procedure ShowFavoriteAddDialog( Item : TObject );
727 h677 1.433 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
728     procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
729 yoffy 1.143 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
730     property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
731     property OddColor : TColor read FOddColor write FOddColor;
732 yoffy 1.209 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
733 yoffy 1.218 procedure OnPlugInMenuItem( Sender : TObject );
734 h677 1.433 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
735     /// ListView 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申 KuroutSetting鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
736     procedure ActiveListColumnSave;
737     procedure SetActiveList(Obj: TObject);
738     property ActiveList: TObject read GetActiveList write SetActiveList;
739 h677 1.482 /// CoolBar 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
740     procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
741 h677 1.485 //鐃緒申鐃緒申ID鐃緒申鐃緒申鐃緒申鐃?鐃緒申
742     procedure IndividualAbonID(Atype : Integer);
743     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
744     procedure IndividualAbon(Atag, Atype : Integer);
745 h677 1.532 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申 true:鐃?鐃緒申鐃緒申鐃?鐃? false:鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
746     procedure RepaintAllTabsBrowser();
747     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
748     procedure SetLinkBar;
749     procedure FavoriteBrowseFolder( node: TTreeNode );
750     //鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
751     procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
752     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
753     procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
754     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
755     procedure DeleteHistory( threadItem: TThreadItem );
756     //鐃?鐃?鐃緒申鐃緒申鐃緒申
757     procedure DeleteTab(ThreadItem: TThreadItem); overload;
758 h677 1.533 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
759     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
760 h677 1.552 procedure BrowserMovement(const AName: string);
761 h677 1.533 //Application鐃緒申MainForm鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
762 h677 1.534 function GetMainForm(): TComponent;
763 h677 1.533 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
764 h677 1.534 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?
765     procedure OnGestureStart(Sender: TObject);
766     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申
767     procedure OnGestureMove(Sender: TObject);
768     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
769     procedure OnGestureEnd(Sender: TObject);
770     /// 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
771     procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
772 h677 1.535 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃緒申
773     function EditorFormExists(): boolean;
774     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
775     procedure AllEditroFormNameTextClearClear();
776     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
777     procedure AllEditroFormMailTextClearClear();
778     //ListView鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
779     procedure SelectListItem(List: TList);
780     /// 鐃?鐃?鐃緒申鐃緒申
781     function SaveTabURLs : Boolean;
782     /// 鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申
783     function LoadTabURLs : Boolean;
784 h677 1.536 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
785     procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
786 h677 1.537 //
787     procedure ModifySelectList;
788     //
789     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
790     //
791     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
792 h677 1.538 //
793 h677 1.537 procedure SetSelectRoundName(Sender: TObject);
794 h677 1.538 //
795     function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
796     //
797     function WebBrowserClick(Sender: TObject): WordBool;
798 h677 1.550 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
799     procedure SetSelectComboBox();
800 h677 1.585
801 hi_ 1.1 published
802     property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
803     end;
804    
805     TFavoriteMenuItem = class(TMenuItem)
806     private
807     FData : Pointer;
808     public
809     property Data: Pointer read FData write FData;
810     end;
811    
812 yoffy 1.123 TBBSMenuItem = class(TMenuItem)
813     private
814     FData : Pointer;
815     public
816     property Data: Pointer read FData write FData;
817     end;
818    
819 hi_ 1.1 TLinkToolButton = class(TToolButton)
820     private
821     FData : Pointer;
822     public
823     property Data: Pointer read FData write FData;
824     end;
825    
826     var
827     GikoForm: TGikoForm;
828    
829     implementation
830    
831     uses
832 h677 1.536 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
833     YofUtils, ShellAPI, ToolBarUtil, ToolBarSetting,
834     GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
835 h677 1.542 FavoriteArrange, AddressHistory, Preview, Gesture,
836 yoffy 1.480 About, Option, Round, Splash, Sort, ListSelect, Imm,
837 h677 1.521 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
838 h677 1.583 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
839     InputAssistDataModule;
840 hi_ 1.1
841     const
842     BLANK_HTML: string = 'about:blank';
843 h677 1.542 BROWSER_COUNT = 5; //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
844     //D&D鐃緒申鐃?
845     DandD_THRESHOLD = 5; //D&D鐃緒申鐃緒申鐃?鐃?pixcel)
846     //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
847     HTML_FILE_NAME = 'temp_preview.html';
848     ITEM_ICON_THREADLOG1 = 6; //鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
849     ITEM_ICON_THREADLOG2 = 7; //鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
850     //鐃緒申鐃?鐃?鐃?鐃?ID
851 yoffy 1.278 USER_TREECLICK = WM_USER + 2000;
852     USER_RESIZED = WM_USER + 2001;
853     USER_MINIMIZED = WM_USER + 2002;
854     USER_SETLINKBAR = WM_USER + 2003;
855 yoffy 1.434 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
856 hi_ 1.1 {$R *.DFM}
857    
858     procedure TGikoForm.CreateParams(var Params: TCreateParams);
859     begin
860     inherited;
861     if FormStyle in [fsNormal, fsStayOnTop] then begin
862     if BorderStyle in [bsSingle, bsSizeable] then begin
863     Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
864     Params.WndParent := 0;
865     end;
866     end;
867     end;
868    
869     procedure TGikoForm.FormCreate(Sender: TObject);
870     const
871     TVS_NOTOOLTIPS = $0080;
872     var
873     FileName: string;
874     Style: DWORD;
875     msg: string;
876     i: Integer;
877     wp: TWindowPlacement;
878     begin
879     {$IFDEF DEBUG}
880     AllocConsole;
881     Writeln('============================================================');
882     Writeln(' 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃? 鐃?鐃緒申鐃?鐃?鐃緒申');
883     Writeln('');
884     Writeln(' 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
885     Writeln(' 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
886     Writeln('============================================================');
887     {$ENDIF}
888 h677 1.580 //try
889 h677 1.586 Sort.SetSortDate(Now());
890    
891 h677 1.514 FTreeType := gttNone;
892     // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
893 h677 1.471 FStartUp := true;
894 hi_ 1.1 Application.HookMainWindow(Hook);
895 h677 1.514 FIsIgnoreResize := rtResizing;
896 h677 1.581 //ActionList鐃緒申GuoupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?0鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
897     //(鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申Down鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)
898     //鐃緒申鐃緒申鐃緒申鐃緒申Set鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?Action鐃緒申Checked鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
899     GetGroupIndex(GikoDM.GikoFormActionList);
900 yoffy 1.51 FSearchDialog := nil;
901 h677 1.550 CreateBrowsers(BROWSER_COUNT);
902 h677 1.303
903 h677 1.514 //鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?
904     SetMenuFont;
905 yoffy 1.216
906 hi_ 1.1 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
907     Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
908    
909     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
910 h677 1.513 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
911 hi_ 1.1
912     EnabledCloseButton := True;
913 h677 1.176
914 hi_ 1.1 //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
915     ListView.ViewStyle := GikoSys.Setting.ListStyle;
916    
917     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
918     AnimePanel.Top := 0;
919     AnimePanel.Left := 0;
920    
921     //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
922    
923     //鐃?鐃緒申鐃?鐃?鐃?鐃?
924     CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
925    
926     //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
927 h677 1.539 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
928     GikoDM.MsgBarVisibleActionExecute(nil);
929 hi_ 1.1 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
930    
931     //鐃?鐃?鐃?鐃?鐃?鐃?鐃?
932 h677 1.539 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
933     GikoDM.StatusBarVisibleActionExecute(nil);
934 hi_ 1.1
935     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
936     TreeView.Items.BeginUpdate;
937 yoffy 1.100 FavoriteTreeView.Items.BeginUpdate;
938 hi_ 1.1 ListView.Items.BeginUpdate;
939     try
940     TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
941     TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
942     TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
943     TreeView.Color := GikoSys.Setting.CabinetBackColor;
944 h677 1.473 FavoriteTreeView.Font.Assign(TreeView.Font);
945 yoffy 1.67 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
946    
947 hi_ 1.1 ListView.Font.Name := GikoSys.Setting.ListFontName;
948     ListView.Font.Size := GikoSys.Setting.ListFontSize;
949     ListView.Font.Color := GikoSys.Setting.ListFontColor;
950 h677 1.473 ListView.Font.Style := [];
951     if GikoSys.Setting.ListFontBold then
952     ListView.Font.Style := [fsbold];
953     if GikoSys.Setting.ListFontItalic then
954     ListView.Font.Style := ListView.Font.Style + [fsitalic];
955    
956 yoffy 1.418 ListViewBackGroundColor := clWhite; // 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
957     ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
958 yoffy 1.236 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
959     FOddColor := GikoSys.Setting.OddColor;
960 h677 1.109
961 hi_ 1.1 finally
962     TreeView.Items.EndUpdate;
963 yoffy 1.100 FavoriteTreeView.Items.EndUpdate;
964 hi_ 1.1 ListView.Items.EndUpdate;
965     end;
966     //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
967 h677 1.539 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
968 hi_ 1.1
969 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
970     GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
971    
972     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
973     FResRangeMenuSelect := GikoSys.ResRange;
974     case GikoSys.ResRange of
975     Ord( grrAll ):
976     begin
977     GikoDM.AllResAction.Execute;
978     end;
979     Ord( grrSelect ):
980     begin
981     SelectComboBox.Text := SelectComboBox.Items[ 1 ];
982     GikoDM.SelectResAction.Checked := True;
983     end;
984     else
985     case FResRangeMenuSelect of
986     Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
987     Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
988     100: GikoDM.OnlyAHundredResAction.Checked := True;
989     end;
990     end;
991    
992     // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
993     case GikoSys.Setting.ThreadRange of
994     gtrAll:
995     begin
996     GikoDM.AllItemAction.Checked := True;
997     ViewType := gvtAll;
998     end;
999     gtrLog:
1000     begin
1001     GikoDM.LogItemAction.Checked := True;
1002     ViewType := gvtLog;
1003     end;
1004     gtrNew:
1005     begin
1006     GikoDM.NewItemAction.Checked := True;
1007     ViewType := gvtNew;
1008     end;
1009 h677 1.592 gtrLive:
1010     begin
1011     GikoDM.LiveItemAction.Checked := True;
1012     ViewType := gvtLive;
1013     end;
1014     gtrArch:
1015     begin
1016     GikoDM.ArchiveItemAction.Checked := True;
1017     ViewType := gvtArch;
1018     end;
1019 h677 1.581 end;
1020    
1021    
1022 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1023     BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1024     BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1025 h677 1.473 BrowserTab.Font.Style := [];
1026     if GikoSys.Setting.BrowserTabFontBold then
1027     BrowserTab.Font.Style := [fsBold];
1028     if GikoSys.Setting.BrowserTabFontItalic then
1029     BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1030 h677 1.582 BrowserTab.DoubleBuffered := True;
1031 yoffy 1.133 FDragWFirst := false;
1032 h677 1.299 SetContent(BrowserNullTab); //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1033    
1034 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃?鐃?
1035     GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1036    
1037     if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1038     GikoDM.BrowserTabTopAction.Checked := True;
1039     end else begin
1040     GikoDM.BrowserTabBottomAction.Checked := True;
1041     end;
1042    
1043     if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1044     GikoDM.BrowserTabTabStyleAction.Checked := True;
1045     end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1046     GikoDM.BrowserTabButtonStyleAction.Checked := True;
1047     end else begin
1048     GikoDM.BrowserTabFlatStyleAction.Checked := True;
1049     end;
1050    
1051 h677 1.514 //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1052     ProgressBar.Parent := StatusBar;
1053     ProgressBar.Top := 2;
1054     ProgressBar.Left := 0;
1055     ProgressBar.Width := StatusBar.Panels[0].Width;
1056     ProgressBar.Height := StatusBar.Height - 2;
1057     ProgressBar.Position := 0;
1058    
1059     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1060     InitializeBoardPlugIns;
1061    
1062     // 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申(ReadFavorite 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1063     GikoSys.ListBoardFile;
1064 h677 1.580 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申
1065     try
1066 h677 1.514 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1067 h677 1.580 if (SplashWindow <> nil) then begin
1068     SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1069     end;
1070     except
1071     end;
1072 h677 1.514 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1073     for i := Length(BBSs) - 1 downto 0 do begin
1074     if not BBSs[i].IsBoardFileRead then
1075     GikoSys.ReadBoardFile(BBSs[i]);
1076    
1077     if SplashWindow <> nil then begin
1078     SplashWindow.ProgressBar.StepBy(20);
1079     SplashWindow.Update;
1080     end;
1081     end;
1082 h677 1.580
1083 h677 1.514 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1084     RoundList := TRoundList.Create;
1085     RoundList.LoadRoundBoardFile;
1086     RoundList.LoadRoundThreadFile;
1087    
1088     //TreeView鐃緒申鐃緒申鐃緒申鐃?鐃緒申ToolTip鐃緒申鐃緒申鐃?鐃緒申
1089     Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1090     Style := Style or TVS_NOTOOLTIPS;
1091     SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1092    
1093     // 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1094     TreeView.Align := alClient;
1095     FavoriteTreeView.Align := alClient;
1096     FavoriteTreeView.Visible := False;
1097    
1098     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1099     SetBBSMenu;
1100 hi_ 1.1
1101     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1102     wp.length := sizeof(wp);
1103     wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1104     wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1105     wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1106     wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1107     wp.showCmd := SW_HIDE;
1108     SetWindowPlacement(Handle, @wp);
1109 h677 1.514 //Self.Update;
1110 hi_ 1.1
1111     if GikoSys.Setting.WindowMax then
1112 h677 1.514 WindowState := wsMaximized;
1113 hi_ 1.1
1114     //鐃?鐃?鐃?鐃?鐃緒申
1115     try
1116     FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1117     if FileExists(FileName) then
1118     Animate.FileName := FileName;
1119     except
1120     end;
1121    
1122     //鐃?鐃?鐃?鐃?
1123     FNameCookie := '';
1124     FMailCookie := '';
1125    
1126     //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1127     FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1128     FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1129    
1130 yoffy 1.420
1131     // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?(LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1132     FHistoryList := TList.Create;
1133    
1134     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1135     LoadHistory;
1136    
1137     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1138     FavoriteDM.SetFavTreeView(FavoriteTreeView);
1139     FavoriteDM.ReadFavorite;
1140    
1141 h677 1.539 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1142     GikoDM.ArrangeAction.Execute;
1143 hi_ 1.1
1144     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1145     case GikoSys.Setting.ListWidthState of
1146     glsMax: begin
1147     ViewPanel.Width := 1;
1148 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1149     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1150 hi_ 1.1 end;
1151     glsMin: begin
1152     ViewPanel.Width := GikoSys.Setting.ListWidth;
1153 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1154     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1155 hi_ 1.1 end;
1156     else begin
1157     ViewPanel.Width := GikoSys.Setting.ListWidth;
1158 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1159     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1160 hi_ 1.1 end;
1161     end;
1162     end else begin
1163     case GikoSys.Setting.ListHeightState of
1164     glsMax: begin
1165     ViewPanel.Height := 1;
1166 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1167     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1168 hi_ 1.1 end;
1169     glsMin: begin
1170     ViewPanel.Height := GikoSys.Setting.ListHeight;
1171 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1172     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1173 hi_ 1.1 end;
1174     else begin
1175     ViewPanel.Height := GikoSys.Setting.ListHeight;
1176 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1177     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1178 hi_ 1.1 end;
1179     end;
1180     end;
1181    
1182     //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?
1183 h677 1.550 CreateControlThread();
1184 hi_ 1.1
1185 yoffy 1.51 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1186     SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1187 yoffy 1.2
1188 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
1189     SetBrowserTabState;
1190    
1191     BrowserBoardNameLabel.Caption := '';
1192     BrowserNameLabel.Caption := '';
1193     FWorkCount := 0;
1194    
1195     FTabHintIndex := -1;
1196    
1197     //鐃?鐃?鐃緒申鐃?鐃?Wrapable
1198     ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1199     BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1200    
1201 yoffy 1.236 MakeDefaultINIFile();
1202 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1203 h677 1.539 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1204     ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1205     ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1206 yoffy 1.2 SetToolBarPopup;
1207 yoffy 1.375
1208 h677 1.517 //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1209 h677 1.550 SetSelectComboBox();
1210 h677 1.514
1211     //鐃?鐃?鐃緒申鐃?鐃?鐃?
1212     AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1213    
1214     //鐃緒申鐃緒申鐃?鐃?鐃?
1215     SetLinkBar;
1216 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1217    
1218     //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
1219     if not FileExists(GikoSys.GetBoardFileName) then begin
1220     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10#13#10
1221     + '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申' + #13#10
1222     + '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1223     MsgBox(SplashWindow.Handle, msg, '鐃?鐃?鐃?鐃?', MB_OK or MB_ICONINFORMATION);
1224 h677 1.539 GikoDM.NewBoardAction.Execute;
1225 yoffy 1.2 end;
1226    
1227     //鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1228 h677 1.560 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1229 yoffy 1.2
1230     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1231     // FLastRoundTime := 0;
1232    
1233     //ResHint
1234     FHint := TResPopup.Create(Self);
1235    
1236 h677 1.547 ListView.OnData := TListViewUtils.ListViewData;
1237 h677 1.529
1238 yoffy 1.100 // 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1239 h677 1.299 CabinetVisible( False );
1240 yoffy 1.141 if GikoSys.Setting.CabinetVisible then begin
1241     i := CabinetSelectPopupMenu.Items.Count - 1;
1242     if GikoSys.Setting.CabinetIndex = i - 1 then
1243 h677 1.539 GikoDM.CabinetHistoryAction.Execute
1244 yoffy 1.141 else if GikoSys.Setting.CabinetIndex = i then
1245 h677 1.539 GikoDM.CabinetFavoriteAction.Execute
1246 yoffy 1.141 else begin
1247     if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1248     ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1249 yoffy 1.265 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 2
1250 yoffy 1.424 FIsIgnoreResize := rtResizing;
1251 h677 1.539 GikoDM.CabinetBBSAction.Execute;
1252 yoffy 1.141 end;
1253     end else begin
1254 yoffy 1.248 ShowBBSTreeOld( BBSs[ 0 ] );
1255     PostMessage( Handle, USER_TREECLICK, 0, 0 );
1256 yoffy 1.141 end;
1257 yoffy 1.67
1258 yoffy 1.2 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
1259     for i := 1 to ParamCount do begin
1260     MoveToURL(ParamStr(i));
1261     end;
1262 h677 1.22
1263 h677 1.567 GikoDM.RepaintStatusBar;
1264 hi_ 1.32 StatusBarResize(Sender);
1265 h677 1.187
1266 yoffy 1.236 dummy1.Caption := ItemReservPMenu.Caption;
1267     dummy1.Hint := ItemReservPMenu.Hint;
1268 yoffy 1.216
1269 yoffy 1.236 //Samba24鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?
1270     GikoSys.SambaFileExists();
1271 h677 1.299
1272 yoffy 1.500 {$IFDEF SPAM_FILTER_ENABLED}
1273 yoffy 1.468 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1274     GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1275 yoffy 1.500 {$ENDIF}
1276 yoffy 1.468
1277 yoffy 1.456 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1278     MouseGesture := TMouseGesture.Create;
1279     GikoSys.Setting.Gestures.LoadGesture(
1280 h677 1.539 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1281 yoffy 1.456 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1282     MouseGesture.OnGestureStart := OnGestureStart;
1283     MouseGesture.OnGestureMove := OnGestureMove;
1284     MouseGesture.OnGestureEnd := OnGestureEnd;
1285 yoffy 1.457 if GikoSys.Setting.GestureEnabled then
1286     MouseGesture.SetHook( Handle );
1287 genyakun 1.458
1288 h677 1.483 //2ch鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1289 h677 1.562 GikoSys.SetGikoMessage;
1290 h677 1.514
1291 genyakun 1.497 //鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1292     if GikoSys.Setting.AutoLogin then
1293 h677 1.539 GikoDM.LoginAction.Execute;
1294 genyakun 1.497
1295 h677 1.514 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1296 h677 1.541
1297     //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1298     FavoriteAddToolButton.Caption := '鐃緒申鐃緒申...';
1299 h677 1.547 AntiIndivAbonMenuItem.Caption := '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申';
1300 h677 1.541
1301 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1302     InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1303 yoffy 1.2 end;
1304    
1305 yoffy 1.216 // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1306     procedure TGikoForm.SaveCoolBarSettings;
1307 yoffy 1.2 begin
1308    
1309 yoffy 1.424 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1310 yoffy 1.216 Exit;
1311 h677 1.471 SaveMainCoolBarSettings;
1312     SaveBoardCoolBarSettings;
1313     SaveBrowserCoolBarSettings;
1314 yoffy 1.2
1315 h677 1.471 end;
1316     procedure TGikoForm.SaveMainCoolBarSettings;
1317     var
1318     i : Integer;
1319     CoolSet : TCoolSet;
1320     begin
1321 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1322     for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1323     CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1324     CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1325     CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1326     GikoSys.Setting.MainCoolSet[i] := CoolSet;
1327     end;
1328 h677 1.471 end;
1329     procedure TGikoForm.SaveBoardCoolBarSettings;
1330     var
1331     i : Integer;
1332     CoolSet : TCoolSet;
1333     begin
1334 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1335     for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1336     CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1337     CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1338     CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1339     GikoSys.Setting.ListCoolSet[i] := CoolSet;
1340     end;
1341 h677 1.471 end;
1342     procedure TGikoForm.SaveBrowserCoolBarSettings;
1343     var
1344     i : Integer;
1345     CoolSet : TCoolSet;
1346     begin
1347 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1348     for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1349     CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1350     CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1351     CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1352     GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1353 yoffy 1.2 end;
1354 yoffy 1.216 end;
1355     // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1356     procedure TGikoForm.LoadCoolBarSettings;
1357     var
1358     i : Integer;
1359     CoolSet : TCoolSet;
1360     begin
1361 yoffy 1.2
1362 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1363     MainCoolBar.Bands.BeginUpdate;
1364     try
1365 yoffy 1.216 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1366     for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1367 hi_ 1.1 CoolSet := GikoSys.Setting.MainCoolSet[i];
1368 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1369 yoffy 1.424 FIsIgnoreResize := rtNone;
1370 yoffy 1.263 SaveCoolBarSettings;
1371     Exit;
1372     end;
1373 hi_ 1.1 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1374     MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1375 yoffy 1.264 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1376 hi_ 1.1 end;
1377     finally
1378     MainCoolBar.Bands.EndUpdate;
1379     end;
1380    
1381     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1382     ListCoolBar.Bands.BeginUpdate;
1383     try
1384 yoffy 1.216 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1385     for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1386 hi_ 1.1 CoolSet := GikoSys.Setting.ListCoolSet[i];
1387 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1388 yoffy 1.424 FIsIgnoreResize := rtNone;
1389 yoffy 1.263 SaveCoolBarSettings;
1390     Exit;
1391     end;
1392 hi_ 1.1 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1393     ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1394     ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1395     end;
1396     finally
1397     ListCoolBar.Bands.EndUpdate;
1398     end;
1399    
1400     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1401     BrowserCoolBar.Bands.BeginUpdate;
1402     try
1403 yoffy 1.216 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1404 h677 1.514 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1405 hi_ 1.1 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1406 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1407 yoffy 1.424 FIsIgnoreResize := rtNone;
1408 yoffy 1.263 SaveCoolBarSettings;
1409     Exit;
1410     end;
1411 hi_ 1.1 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1412     BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1413     BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1414     end;
1415     finally
1416     BrowserCoolBar.Bands.EndUpdate;
1417     end;
1418    
1419     end;
1420 yoffy 1.216 //
1421     procedure TGikoForm.FormShow(Sender: TObject);
1422     begin
1423 h677 1.471 if FStartUp then begin
1424 h677 1.423 ShowWindow(Application.Handle, SW_HIDE);
1425    
1426     //FormCreate鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1427     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
1428 h677 1.539 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1429     GikoDM.StdToolBarVisibleActionExecute( nil );
1430     GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1431     GikoDM.AddressBarVisibleActionExecute( nil );
1432     GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1433     GikoDM.LinkBarVisibleActionExecute( nil );
1434     GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1435     GikoDM.ListToolBarVisibleActionExecute( nil );
1436     GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1437     GikoDM.ListNameBarVisibleActionExecute( nil );
1438     GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1439     GikoDM.BrowserToolBarVisibleActionExecute( nil );
1440     GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1441     GikoDM.BrowserNameBarVisibleActionExecute( nil );
1442 h677 1.423
1443     // CoolBar 鐃緒申鐃緒申
1444     LoadCoolBarSettings;
1445 yoffy 1.265
1446 h677 1.514 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1447 h677 1.517 // ResetBandInfo( ListCoolBar, ListToolBar );
1448 yoffy 1.424 FIsIgnoreResize := rtNone;
1449 genyakun 1.382
1450 h677 1.423 //FormCrete鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1451     if GikoSys.Setting.TabAutoLoadSave then begin
1452 h677 1.539 GikoDM.TabAutoLoadAction.Execute;
1453 h677 1.423 end;
1454 h677 1.581
1455     //ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1456     SetGroupIndex(GikoDM.GikoFormActionList);
1457 h677 1.547
1458 h677 1.471 FStartUp := false;
1459 yoffy 1.397 end;
1460 yoffy 1.239 end;
1461 yoffy 1.216
1462 hi_ 1.1 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1463     begin
1464 yoffy 1.331 // if GikoForm.WindowState <> wsMinimized then
1465     // SaveCoolBarSettings;
1466 yoffy 1.236 if ( GikoSys.Setting.ShowDialogForEnd ) and
1467     (MessageDlg('鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1468     CanClose := false;
1469     Exit;
1470     end else begin
1471     CanClose := True;
1472 yoffy 1.398 if GikoSys.Setting.TabAutoLoadSave then begin
1473 h677 1.539 GikoDM.TabAutoSaveAction.Execute;
1474 yoffy 1.398 end;
1475 yoffy 1.236 end;
1476 h677 1.498 { //2ch鐃緒申鐃緒申鐃緒申鐃緒申Free
1477 h677 1.462 if GikoSys.Setting.Gengo <> nil then begin
1478     GikoSys.Setting.Gengo.Free;
1479 genyakun 1.458 end;
1480 h677 1.498 }
1481 h677 1.241 Application.UnhookMainWindow(Hook);
1482     Application.Terminate;
1483     end;
1484    
1485     procedure TGikoForm.FormDestroy(Sender: TObject);
1486     var
1487 yoffy 1.376 i : Integer;
1488 h677 1.241 // CoolSet: TCoolSet;
1489 yoffy 1.376 wp : TWindowPlacement;
1490     tmpBool : Boolean;
1491 h677 1.241 begin
1492 yoffy 1.460 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1493 yoffy 1.456 try
1494     MouseGesture.UnHook;
1495     except
1496     end;
1497 yoffy 1.236 try
1498 yoffy 1.410 ActiveListColumnSave;
1499 yoffy 1.236 except
1500     end;
1501     try
1502 h677 1.234 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1503     wp.length := sizeof(wp);
1504     GetWindowPlacement(Handle, @wp);
1505     GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1506     GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1507     GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1508     GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1509     GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1510    
1511     GikoSys.Setting.ListStyle := ListView.ViewStyle;
1512 h677 1.539 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1513 h677 1.234 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1514     GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1515     GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1516 h677 1.539 if GikoDM.ArrangeAction.Checked then
1517 h677 1.234 GikoSys.Setting.ListOrientation := gloVertical
1518     else
1519     GikoSys.Setting.ListOrientation := gloHorizontal;
1520     GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1521 yoffy 1.236 except
1522 yoffy 1.2 end;
1523 yoffy 1.378
1524     try
1525     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
1526     if not GikoSys.Setting.ResRangeHold then
1527 yoffy 1.380 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1528 yoffy 1.378 except
1529     end;
1530 h677 1.483 if WindowState <> wsNormal then
1531     WindowState := wsNormal;
1532     SaveCoolBarSettings;
1533     try
1534     GikoSys.Setting.WriteWindowSettingFile;
1535     GikoSys.Setting.WriteNameMailSettingFile;
1536     except
1537     end;
1538 yoffy 1.378 // 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申 CoolBar 鐃緒申鐃緒申
1539 yoffy 1.216 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1540 h677 1.482
1541 yoffy 1.263 // 鐃緒申FormDestroy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?2004/04/09鐃?
1542 yoffy 1.216 // CoolBar 鐃緒申鐃緒申
1543 h677 1.482 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1544 h677 1.483
1545 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1546     InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1547 yoffy 1.2
1548     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1549 hi_ 1.1 try
1550 yoffy 1.236 //FavoriteDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1551 yoffy 1.2 FavoriteDM.WriteFavorite;
1552 yoffy 1.236 FavoriteDM.Clear;
1553 hi_ 1.1 except
1554     end;
1555 h677 1.483 LockWindowUpdate(Self.Handle);
1556 hi_ 1.1 try
1557     //鐃?鐃?鐃?鐃緒申鐃?鐃?
1558 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1559     GikoSys.Setting.ShowDialogForAllTabClose := false;
1560 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1561 h677 1.483 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1562 h677 1.299 except
1563     end;
1564 h677 1.321 try
1565     for i := FBrowsers.Count - 1 downto 0 do begin
1566     TWebBrowser(FBrowsers[i]).Free;
1567     end;
1568     FBrowsers.Clear;
1569     FBrowsers.Capacity := 0;
1570     finally
1571     FBrowsers.Free;
1572 h677 1.303 end;
1573 h677 1.299 try
1574     if BrowserNullTab <> nil then begin
1575     BrowserNullTab.Browser := nil; {*BrowserNullTab鐃緒申Browser鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
1576     *鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Free鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1577     *}
1578     BrowserNullTab.Free;
1579 hi_ 1.1 end;
1580     except
1581     end;
1582 h677 1.483
1583 h677 1.224 try
1584 yoffy 1.236 TreeView.Items.BeginUpdate;
1585 yoffy 1.380 TreeView.Items.GetFirstNode.Free;
1586 yoffy 1.236 TreeView.Items.Clear;
1587     TreeView.Items.EndUpdate;
1588 h677 1.224 except
1589     end;
1590 h677 1.230
1591 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1592     try
1593 yoffy 1.236 //AddressHistoryDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1594 h677 1.513 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1595 hi_ 1.1 except
1596     end;
1597    
1598 h677 1.234 //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1599 hi_ 1.1 try
1600 h677 1.234 SaveHistory;
1601 hi_ 1.1 except
1602     end;
1603 yoffy 1.236 try
1604     try
1605     ClearHistory;
1606     except
1607     end;
1608     finally
1609     FHistoryList.Free;
1610     end;
1611 h677 1.221
1612 h677 1.182 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申&鐃?鐃緒申
1613     try
1614     RoundList.SaveRoundFile;
1615     except
1616     end;
1617 yoffy 1.236 try
1618 h677 1.234 try
1619 yoffy 1.236 RoundList.Clear;
1620 h677 1.234 except
1621     end;
1622 yoffy 1.236 finally
1623     RoundList.Free;
1624     end;
1625 h677 1.182
1626 yoffy 1.236 try
1627 h677 1.234 try
1628     FControlThread.Terminate;
1629 yoffy 1.236 FControlThread.WaitFor;
1630 h677 1.234 except
1631 h677 1.219 end;
1632 yoffy 1.236 finally
1633     FControlThread.Free;
1634     end;
1635 h677 1.230
1636 yoffy 1.155 // TBBS 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 TCategory, TBoard, TThreadItem 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1637     // TBoard, TThreadItem 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1638     // BoardPluteIns 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1639 h677 1.550 for i := Length(BoardGroups) - 1 downto 0 do begin
1640 h677 1.517 //BoardGroups[i].Clear;
1641     BoardGroups[i].Free;
1642 h677 1.550 end;
1643 h677 1.514
1644 yoffy 1.126 try
1645 h677 1.220 for i := Length( BBSs ) - 1 downto 0 do begin
1646 h677 1.153 if BBSs[ i ] <> nil then
1647     BBSs[ i ].Free;
1648     BBSs[ i ] := nil;
1649     end;
1650     except
1651     end;
1652 yoffy 1.155
1653 h677 1.234 try
1654 yoffy 1.236 if FEvent <> nil then
1655     FEvent.Free;
1656 h677 1.181
1657 yoffy 1.2 //Hint鐃?鐃緒申
1658     if FHint <> nil then begin
1659     FHint.ReleaseHandle;
1660     FHint.Free;
1661     FHint := nil;
1662     end;
1663     //Preview鐃?鐃緒申
1664     if TPreviewBrowser <> nil then begin
1665     FPreviewBrowser.Free;
1666     FPreviewBrowser := nil;
1667     end;
1668     except
1669     end;
1670 h677 1.550 LockWindowUpdate(0);
1671 hi_ 1.1 end;
1672    
1673 yoffy 1.289 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
1674     procedure TGikoForm.SetBBSMenu;
1675 yoffy 1.123 var
1676     i : Integer;
1677 yoffy 1.149 item : TBBSMenuItem;
1678 hi_ 1.1 begin
1679    
1680 yoffy 1.148 // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1681     for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1682     try
1683     if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1684 yoffy 1.155 CabinetSelectPopupMenu.Items[ i ].Free;
1685     CabinetMenu.Items[ i ].Free;
1686 yoffy 1.289 BBSSelectPopupMenu.Items[ i ].Free;
1687 yoffy 1.148 end;
1688     except
1689     end;
1690     end;
1691 yoffy 1.289
1692     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1693 yoffy 1.148 for i := Length( BBSs ) - 1 downto 0 do begin
1694     try
1695     item := TBBSMenuItem.Create( PopupMenu );
1696     item.Caption := BBSs[ i ].Title;
1697     item.Data := BBSs[ i ];
1698     item.OnClick := BBSMenuItemOnClick;
1699     CabinetSelectPopupMenu.Items.Insert( 0, item );
1700     item := TBBSMenuItem.Create( PopupMenu );
1701     item.Caption := BBSs[ i ].Title;
1702     item.Data := BBSs[ i ];
1703     item.OnClick := BBSMenuItemOnClick;
1704     CabinetMenu.Insert( 0, item );
1705 yoffy 1.289 item := TBBSMenuItem.Create( PopupMenu );
1706     item.Caption := BBSs[ i ].Title;
1707     item.Data := BBSs[ i ];
1708     item.OnClick := BBSMenuItemOnClick;
1709     BBSSelectPopupMenu.Items.Insert( 0, Item );
1710 yoffy 1.148 except
1711     end;
1712     end;
1713 yoffy 1.289
1714     end;
1715    
1716     procedure TGikoForm.ReloadBBS;
1717     var
1718     i : Integer;
1719 h677 1.321 tmpBool: Boolean;
1720 yoffy 1.289 begin
1721 h677 1.517 LockWindowUpdate(Self.Handle);
1722    
1723 yoffy 1.289 //鐃?鐃?鐃?鐃緒申鐃?鐃?
1724 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1725     GikoSys.Setting.ShowDialogForAllTabClose := false;
1726 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1727 h677 1.321 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1728 h677 1.320 SetContent(BrowserNullTab);
1729 yoffy 1.289 //TreeView鐃?鐃緒申鐃?鐃?BBS2ch.Free鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申XP鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?
1730     TreeView.Items.Clear;
1731    
1732 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1733     try
1734     RoundList.SaveRoundFile;
1735     except
1736     end;
1737     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
1738     try
1739     RoundList.Clear;
1740     except
1741     end;
1742    
1743     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1744 h677 1.517 try
1745     SaveHistory;
1746     ClearHistory;
1747     except
1748     end;
1749 h677 1.515
1750     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1751 h677 1.517 try
1752     FavoriteDM.WriteFavorite;
1753     FavoriteDM.Clear;
1754     except
1755     end;
1756 h677 1.515
1757 h677 1.516 //鐃緒申鐃?鐃?鐃緒申鐃?PLUGIN鐃緒申鐃?鐃緒申
1758     for i := Length(BoardGroups) - 1 downto 0 do begin
1759 h677 1.517 try
1760     BoardGroups[i].Free;
1761     except
1762     end;
1763 h677 1.516 end;
1764 yoffy 1.289 //BBS鐃?鐃緒申
1765     try
1766     for i := Length( BBSs ) - 1 downto 0 do begin
1767     if BBSs[ i ] <> nil then
1768     BBSs[ i ].Free;
1769     BBSs[ i ] := nil;
1770     end;
1771     except
1772     end;
1773    
1774     ActiveList := nil;
1775    
1776     FTreeType := gttNone;
1777 h677 1.516
1778     //============鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申================================//
1779    
1780     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1781     InitializeBoardPlugIns;
1782    
1783 yoffy 1.289 GikoSys.ListBoardFile; //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1784    
1785 h677 1.515 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1786     for i := Length(BBSs) - 1 downto 0 do begin
1787     if not BBSs[i].IsBoardFileRead then
1788     GikoSys.ReadBoardFile(BBSs[i]);
1789     end;
1790    
1791 yoffy 1.289 // BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?
1792     SetBBSMenu;
1793    
1794 yoffy 1.123 ShowBBSTree( BBSs[ 0 ] );
1795 yoffy 1.143
1796     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1797     LoadHistory;
1798    
1799     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1800     FavoriteDM.ReadFavorite;
1801 yoffy 1.279
1802 yoffy 1.143 SetLinkBar;
1803    
1804 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1805 h677 1.514 RoundList.LoadRoundBoardFile;
1806     RoundList.LoadRoundThreadFile;
1807    
1808 h677 1.517 LockWindowUpdate(0);
1809 h677 1.476 //
1810 h677 1.539 GikoDM.TabsOpenAction.Execute;
1811 hi_ 1.1 end;
1812    
1813    
1814     procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1815     var
1816     p: TPoint;
1817     s: string;
1818     tmp2: string;
1819     URL: string;
1820     ATitle: Boolean;
1821    
1822 yoffy 1.130 threadItem : TThreadItem;
1823     board : TBoard;
1824 yoffy 1.163 Protocol, Host, Path, Document, Port, Bookmark: string;
1825 yoffy 1.130
1826 h677 1.333 wkInt: Integer;
1827 hi_ 1.1 wkIntSt: Integer;
1828     wkIntTo: Integer;
1829     ActiveFileName: string;
1830     e: IHTMLElement;
1831     Ext: string;
1832     PathRec: TPathRec;
1833     begin
1834 h677 1.316 if not( TObject(Sender) is TWebBrowser )then
1835     Exit;
1836 hi_ 1.1 try
1837     try
1838 h677 1.316 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1839     if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1840     OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1841 h677 1.306 end;
1842 hi_ 1.1 end;
1843     except
1844     end;
1845     finally
1846     end;
1847     if PreviewTimer.Enabled then
1848     PreviewTimer.Enabled := False;
1849     Application.CancelHint;
1850 h677 1.333 try
1851     if GetActiveContent <> nil then
1852     ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1853     else
1854     ActiveFileName := '';
1855     except
1856     FActiveContent := nil;
1857     Exit;
1858     end;
1859 hi_ 1.1
1860     StatusBar.Panels[1].Text := Text;
1861    
1862     if FHint <> nil then begin
1863     FHint.ReleaseHandle;
1864     FHint.ClearAllRes;
1865     end;
1866     if FPreviewBrowser <> nil then
1867     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1868    
1869     if not GikoSys.Setting.UnActivePopup then
1870     if not GikoForm.Active then
1871     Exit;
1872    
1873     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1874     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1875    
1876     s := '';
1877     Ext := AnsiLowerCase(ExtractFileExt(Text));
1878     if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
1879     ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1880     if FPreviewBrowser = nil then begin
1881     FPreviewBrowser := TPreviewBrowser.Create(Self);
1882     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1883     TOleControl(FPreviewBrowser).Parent := nil;
1884     end;
1885 h677 1.316 FPreviewBrowser.Navigate(BLANK_HTML);//鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1886 hi_ 1.1 FPreviewURL := Text;
1887     PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1888     PreviewTimer.Enabled := True;
1889     end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
1890     if Pos('mailto:', Text) = 1 then begin
1891     s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
1892     //鐃?鐃?鐃?鐃?鐃?鐃緒申 鐃?鐃?鐃?3鐃緒申466鐃緒申鐃緒申鐃緒申鐃緒申
1893     GetCursorPos(p);
1894     p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1895     p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1896     e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1897     if (Assigned(e)) then begin
1898 h677 1.297 tmp2 := ZenToHan(e.Get_outerText);
1899 hi_ 1.1 if (GikoSys.IsNumeric(tmp2)) then begin
1900     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1901     wkIntSt := StrToInt(tmp2);
1902     wkIntTo := StrToInt(tmp2);
1903     //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1904     FHint.PopupType := gptThread;
1905 h677 1.530 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1906 hi_ 1.1 end else begin
1907     FHint.PopupType := gptRaw;
1908     FHint.Caption := s;
1909     end;
1910     end;
1911     end else begin
1912 h677 1.319 threadItem := GetActiveContent;
1913 h677 1.530 URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
1914 yoffy 1.274 PathRec := Gikosys.Parse2chURL2(URL);
1915 q9_ 1.354 if (PathRec.FNoParam) then begin
1916     PathRec.FSt := 1;
1917     PathRec.FTo := 1;
1918 h677 1.447 end else begin
1919 q9_ 1.352 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1920 h677 1.447 end;
1921 yoffy 1.163 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1922 hi_ 1.1
1923 h677 1.168 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1924 yoffy 1.162
1925 yoffy 1.163 URL := GikoSys.GetBrowsableThreadURL( URL );
1926 yoffy 1.274 wkIntSt := PathRec.FSt;
1927     wkIntTo := PathRec.FTo;
1928 hi_ 1.1
1929     if (wkIntSt = 0) and (wkIntTo = 0) then begin
1930     wkIntSt := 1;
1931     wkIntTo := 1;
1932     end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1933     wkIntSt := wkIntTo;
1934     end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1935     wkIntTo := wkIntSt;
1936     end else if wkIntSt > wkIntTo then begin
1937 h677 1.333 wkInt := wkIntTo;
1938 hi_ 1.1 wkIntTo := wkIntSt;
1939 h677 1.333 wkIntSt := wkInt;
1940 hi_ 1.1 end;
1941 h677 1.299 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1942 yoffy 1.274 ATitle := false
1943     else
1944     ATitle := true;
1945 hi_ 1.1
1946 yoffy 1.160 threadItem := BBSsFindThreadFromURL( URL );
1947 h677 1.170
1948 yoffy 1.163 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1949     board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1950 yoffy 1.274 if board <> nil then begin
1951     if not board.IsThreadDatRead then
1952     GikoSys.ReadSubjectFile( board );
1953 yoffy 1.270 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1954 yoffy 1.274 end;
1955 yoffy 1.130 end;
1956 h677 1.319
1957 yoffy 1.130 if threadItem <> nil then begin
1958 yoffy 1.127 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1959 h677 1.512 //URL鐃緒申鐃緒申鐃緒申鐃緒申/鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1960     if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1961     wkIntSt := 1;
1962     wkIntTo := 1;
1963     end;
1964 yoffy 1.127 FHint.PopupType := gptThread;
1965 h677 1.530 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1966 yoffy 1.127 end;
1967 hi_ 1.1 end;
1968 h677 1.168 end;
1969 hi_ 1.1
1970     if FHint.PopupType = gptRaw then begin
1971     if FHint.Caption <> '' then
1972     ShowTextPopup;
1973     end else begin
1974 yoffy 1.2 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
1975 hi_ 1.1 ShowTextPopup;
1976     end;
1977     end;
1978     end;
1979    
1980     procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
1981     var
1982     SysMenu: HMenu;
1983     begin
1984     FEnabledCloseButton := Enabled;
1985     SysMenu := GetSystemMenu(Handle, False);
1986    
1987     if Enabled then begin
1988     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
1989     end else begin
1990     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
1991     end;
1992    
1993     DrawMenuBar(Handle);
1994     end;
1995    
1996     procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
1997     var AllowChange: Boolean);
1998     begin
1999 q9_ 1.369 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2000     // if FTreeType = gtt2ch then
2001     // FSortIndex := -1;
2002 hi_ 1.1 end;
2003    
2004     procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2005     Shift: TShiftState);
2006 yoffy 1.428 var
2007     pos : TPoint;
2008 hi_ 1.1 begin
2009 yoffy 1.236 if GetActiveList is TBoard then begin
2010 yoffy 1.428 case Key of
2011     VK_BACK:; // UpFolderButtonClick(Sender);
2012     VK_SPACE: ListDoubleClick(Shift);
2013     VK_RETURN: ListClick;
2014     VK_APPS:
2015     begin
2016     if ListView.Selected <> nil then begin
2017     pos.X := ListView.Column[ 0 ].Width;
2018     pos.Y := ListView.Selected.Top;
2019     end else begin
2020     pos.X := ListView.Left;
2021     pos.Y := ListView.Top;
2022     end;
2023     Windows.ClientToScreen( ListView.Handle, pos );
2024     ListPopupMenu.Popup( pos.X, pos.Y );
2025     end;
2026 yoffy 1.236 end;
2027     end else begin // TBBS, TCategory
2028 yoffy 1.428 case Key of
2029     VK_BACK:; // UpFolderButtonClick(Sender);
2030     VK_SPACE: ListClick;
2031     VK_RETURN: ListDoubleClick(Shift);
2032     VK_APPS:
2033     begin
2034     if ListView.Selected <> nil then begin
2035     pos.X := ListView.Column[ 0 ].Width;
2036     pos.Y := ListView.Selected.Top;
2037     end else begin
2038     pos.X := ListView.Left;
2039     pos.Y := ListView.Top;
2040     end;
2041     Windows.ClientToScreen( ListView.Handle, pos );
2042     ListPopupMenu.Popup( pos.X, pos.Y );
2043     end;
2044 yoffy 1.236 end;
2045 hi_ 1.1 end;
2046     end;
2047    
2048     function TGikoForm.GetHttpState: Boolean;
2049     begin
2050     Result := FHttpState;
2051     end;
2052    
2053     procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2054     Column: TListColumn);
2055 yoffy 1.413 var
2056     id, idx : Integer;
2057     orderList : TList;
2058 h677 1.570 vSortIndex : Integer;
2059     vSortOrder : Boolean;
2060 hi_ 1.1 begin
2061 h677 1.530 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2062 h677 1.570 if TObject( FActiveList ) is TBBS then begin
2063     orderList := GikoSys.Setting.BBSColumnOrder;
2064     vSortIndex := GikoSys.Setting.BBSSortIndex;
2065     vSortOrder := GikoSys.Setting.BBSSortOrder;
2066     end else if TObject( FActiveList ) is TCategory then begin
2067     orderList := GikoSys.Setting.CategoryColumnOrder;
2068     vSortIndex := GikoSys.Setting.CategorySortIndex;
2069     vSortOrder := GikoSys.Setting.CategorySortOrder;
2070     end else if TObject( FActiveList ) is TBoard then begin
2071     orderList := GikoSys.Setting.BoardColumnOrder;
2072     vSortIndex := GikoSys.Setting.BoardSortIndex;
2073     vSortOrder := GikoSys.Setting.BoardSortOrder;
2074     end else
2075 yoffy 1.413 Exit;
2076    
2077     id := Integer( orderList[ idx ] );
2078    
2079 h677 1.570
2080     if vSortIndex = id then
2081     vSortOrder := not vSortOrder
2082 h677 1.464 else begin
2083 h677 1.572 vSortOrder := id = 0;
2084 h677 1.570 end;
2085 h677 1.572
2086 h677 1.570 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2087 hi_ 1.1 end;
2088    
2089     procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2090     Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2091     var
2092     ARect: TRect;
2093     begin
2094 yoffy 1.2 DefaultDraw := True;
2095     Exit;
2096 hi_ 1.1 DefaultDraw := False;
2097     if (cdsSelected in State) or (cdsHot in State) then begin
2098     Sender.Canvas.Brush.Color := clHighlight;
2099     Sender.Canvas.Font.Color := clHighlightText;
2100     end else begin
2101     Sender.Canvas.Brush.Color := clBtnFace;
2102     Sender.Canvas.Font.Color := clBtnText;
2103     end;
2104     ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2105     Sender.Canvas.FillRect(ARect);
2106     DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2107     end;
2108    
2109     function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2110     var
2111     Nodes: TTreeNodes;
2112     i: integer;
2113     begin
2114     Nodes := TreeView.Items;
2115    
2116     for i := 0 to Nodes.Count - 1 do begin
2117     if Nodes.Item[i].Data = Data then begin
2118     Result := Nodes.Item[i];
2119     Exit;
2120     end;
2121     end;
2122     Result := nil;
2123     end;
2124    
2125     procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2126     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2127     Headers: OleVariant; var Cancel: WordBool);
2128     var
2129     sNo: string;
2130     p: TPoint;
2131 yoffy 1.56 const
2132     kMenuName: string = 'menu:';
2133 hi_ 1.1 begin
2134 yoffy 1.56
2135     if Pos(kMenuName, URL) <> 0 then begin
2136 yoffy 1.100 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2137    
2138 hi_ 1.1 if not GikoSys.IsNumeric(sNo) then Exit;
2139    
2140     Cancel := True;
2141     GetCursorpos(p);
2142     KokoPopupMenu.Tag := StrToInt(sNo);
2143     KokoPopupMenu.Popup(p.x, p.y);
2144     end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2145     Cancel := not GikoSys.Setting.OpenMailer;
2146     end;
2147 yoffy 1.56
2148 hi_ 1.1 end;
2149    
2150     procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2151     const ARect: TRect; var DefaultDraw: Boolean);
2152     var
2153     NodeRect: TRect;
2154     i, j: Integer;
2155     IsBoardNode: Boolean;
2156     Cnt: Integer;
2157     CntText: string;
2158     TextWidth: Integer;
2159     TextRect: TRect;
2160     Board: TBoard;
2161     Category: TCategory;
2162     Bitmap: TBitmap;
2163     NodeWidth: Integer;
2164     begin
2165     DefaultDraw := True;
2166    
2167     if FTreeType = gttHistory then Exit;
2168    
2169     TreeView.Canvas.Font.Color := clBlue;
2170     IsBoardNode := False;
2171 h677 1.95 for i := 0 to TreeView.Items.Count - 1 do begin
2172 yoffy 1.51 Cnt := 0;
2173 hi_ 1.1 if not TreeView.Items[i].IsVisible then
2174     continue;
2175    
2176     if TObject(TreeView.Items[i].Data) is TCategory then begin
2177     if TreeView.Items[i].Expanded then
2178     continue;
2179    
2180     IsBoardNode := False;
2181     Category := TCategory(TreeView.Items[i].Data);
2182     for j := 0 to Category.Count - 1 do begin
2183     Board := Category.Items[j];
2184     if Board <> nil then begin
2185     if Board.UnRead > 0 then begin
2186     Cnt := 1;
2187     Break;
2188     end;
2189     end;
2190     end;
2191     if Cnt <> 1 then
2192     continue;
2193     end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2194     IsBoardNode := True;
2195     Board := TBoard(TreeView.Items[i].Data);
2196 h677 1.514
2197 hi_ 1.1 Cnt := Board.UnRead;
2198     if Cnt <= 0 then
2199     continue;
2200     end else
2201     continue;
2202    
2203     Bitmap := TBitmap.Create;
2204     try
2205     Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2206     Bitmap.Canvas.Font.Style := [fsBold];
2207     NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2208     finally
2209     Bitmap.Free;
2210     end;
2211    
2212     NodeRect := TreeView.Items[i].DisplayRect(True);
2213    
2214     if IsBoardNode then
2215     CntText := '(' + IntToStr(Cnt) + ')'
2216 h677 1.95 else if Cnt = 1 then
2217 hi_ 1.1 CntText := '(+)';
2218 h677 1.95
2219 hi_ 1.1
2220     TextWidth := TreeView.Canvas.TextWidth(CntText);
2221    
2222     TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2223     NodeRect.Top,
2224     NodeRect.Left + NodeWidth + TextWidth + 8,
2225     NodeRect.Bottom);
2226     DrawText(TreeView.Canvas.Handle,
2227     PChar(CntText),
2228     -1,
2229     TextRect,
2230     DT_SINGLELINE or DT_VCENTER);
2231     end;
2232     TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
2233     end;
2234    
2235     procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
2236     Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
2237     var
2238     Board: TBoard;
2239     Category: TCategory;
2240     i: Integer;
2241     begin
2242     DefaultDraw := True;
2243    
2244     if