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