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.640 - (hide annotations) (download) (as text)
Wed Aug 1 15:02:42 2007 UTC (16 years, 8 months ago) by h677
Branch: MAIN
CVS Tags: v1_57_0_719
Changes since 1.639: +11 -6 lines
File MIME type: text/x-pascal
Folder.idxファイル読み込み時にdatファイルをチェックしないオプションを追加
最小化時にブラウザがスクロールしそうな部分に手を入れてみた。

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.636 {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.636 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.636 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.636 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
688     procedure CreateResPopupBrowser;
689 h677 1.639 //! D&D鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
690     procedure WMDropFiles(var Msg: TWMDropFiles); Message WM_DropFiles;
691     //! 鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?
692     function isValidFile(FileName: String) : boolean;
693 hi_ 1.1 protected
694     procedure CreateParams(var Params: TCreateParams); override;
695 yoffy 1.2 procedure WndProc(var Message: TMessage); override;
696 hi_ 1.1 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
697     procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
698     procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
699 yoffy 1.216
700 hi_ 1.1 public
701     { Public 鐃緒申鐃緒申 }
702 h677 1.533 LastRoundTime: TDateTime;
703     BrowserNullTab: TBrowserRecord;
704 hi_ 1.1 FControlThread: TThreadControl;
705 h677 1.614 FIconData : TNotifyIconData;
706 yoffy 1.444 procedure MoveToURL(const inURL: string);
707 h677 1.530 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
708 hi_ 1.1 procedure ReloadBBS;
709     function GetHttpState: Boolean;
710     procedure SetEnabledCloseButton(Enabled: Boolean);
711     function GetTreeNode(Data: TObject): TTreeNode;
712     procedure ListViewAllSelect;
713     property ListStyle: TViewStyle read FListStyle write FListStyle;
714     property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
715     property ViewType: TGikoViewType read FViewType write FViewType;
716     property NameCookie: string read FNameCookie write FNameCookie;
717     property MailCookie: string read FMailCookie write FMailCookie;
718 h677 1.532 property ClickNode: TTreeNode read FClickNode write FClickNode;
719 h677 1.538 property TreeType: TGikoTreeType read FTreeType write FTreeType;
720 h677 1.534 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
721 h677 1.533 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
722 h677 1.534 property SelectResWord : string read FSelectResWord write FSelectResWord;
723     property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
724     property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
725     property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
726     property ToolBarSettingSender : TToolBarSettingSenderType
727     read FToolBarSettingSender write FToolBarSettingSender;
728 h677 1.535 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
729 h677 1.538 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
730     property WorkCount: Integer read FWorkCount write FWorkCount;
731 h677 1.299 procedure SetContent(inThread: TBrowserRecord);
732 h677 1.636 function GetActiveContent(popup :Boolean = false): TThreadItem;
733 hi_ 1.1 function GetActiveList: TObject;
734 h677 1.533
735 hi_ 1.1 procedure SetListViewType(AViewType: TGikoViewType); overload;
736     procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
737     procedure PlaySound(SoundEventName: string);
738 yoffy 1.123 procedure ShowBBSTree( inBBS : TBBS );
739 yoffy 1.248 procedure ShowBBSTreeOld( inBBS : TBBS );
740 hi_ 1.1 procedure ShowHistoryTree;
741     procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
742     procedure SetBrowserTabState;
743 yoffy 1.2 procedure SetToolBarPopup;
744 yoffy 1.100 procedure ShowFavoriteAddDialog( Item : TObject );
745 h677 1.433 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
746     procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
747 yoffy 1.143 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
748     property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
749     property OddColor : TColor read FOddColor write FOddColor;
750 yoffy 1.209 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
751 yoffy 1.218 procedure OnPlugInMenuItem( Sender : TObject );
752 h677 1.433 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
753     /// ListView 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申 KuroutSetting鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
754     procedure ActiveListColumnSave;
755     procedure SetActiveList(Obj: TObject);
756     property ActiveList: TObject read GetActiveList write SetActiveList;
757 h677 1.482 /// CoolBar 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
758     procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
759 h677 1.485 //鐃緒申鐃緒申ID鐃緒申鐃緒申鐃緒申鐃?鐃緒申
760     procedure IndividualAbonID(Atype : Integer);
761     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
762     procedure IndividualAbon(Atag, Atype : Integer);
763 h677 1.532 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申 true:鐃?鐃緒申鐃緒申鐃?鐃? false:鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
764     procedure RepaintAllTabsBrowser();
765     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
766     procedure SetLinkBar;
767     procedure FavoriteBrowseFolder( node: TTreeNode );
768     //鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
769     procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
770     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
771     procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
772     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
773     procedure DeleteHistory( threadItem: TThreadItem );
774 h677 1.606 //鐃?鐃?鐃緒申鐃緒申鐃緒申 鐃?鐃緒申鐃?鐃?鐃?鐃緒申
775 h677 1.532 procedure DeleteTab(ThreadItem: TThreadItem); overload;
776 h677 1.606 //鐃?鐃?鐃緒申鐃緒申鐃緒申 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
777 h677 1.533 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
778 h677 1.606 // 鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
779     procedure DeleteTab(index, selectIndex: Integer); overload;
780 h677 1.533 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
781 h677 1.634 procedure BrowserMovement(const AName: string); overload;
782     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
783     procedure BrowserMovement(scroll: Integer); overload;
784 h677 1.533 //Application鐃緒申MainForm鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
785 h677 1.534 function GetMainForm(): TComponent;
786 h677 1.533 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
787 h677 1.534 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?
788     procedure OnGestureStart(Sender: TObject);
789     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申
790     procedure OnGestureMove(Sender: TObject);
791     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
792     procedure OnGestureEnd(Sender: TObject);
793     /// 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
794     procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
795 h677 1.535 //ListView鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
796     procedure SelectListItem(List: TList);
797 h677 1.536 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
798     procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
799 h677 1.537 //
800     procedure ModifySelectList;
801     //
802     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
803     //
804     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
805 h677 1.538 //
806 h677 1.537 procedure SetSelectRoundName(Sender: TObject);
807 h677 1.538 //
808     function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
809     //
810     function WebBrowserClick(Sender: TObject): WordBool;
811 h677 1.550 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
812     procedure SetSelectComboBox();
813 h677 1.585
814 h677 1.614 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
815     procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010;
816 h677 1.615 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申
817     procedure StoredTaskTray;
818 hi_ 1.1 published
819     property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
820     end;
821    
822     TFavoriteMenuItem = class(TMenuItem)
823     private
824     FData : Pointer;
825     public
826     property Data: Pointer read FData write FData;
827     end;
828    
829 yoffy 1.123 TBBSMenuItem = class(TMenuItem)
830     private
831     FData : Pointer;
832     public
833     property Data: Pointer read FData write FData;
834     end;
835    
836 hi_ 1.1 TLinkToolButton = class(TToolButton)
837     private
838     FData : Pointer;
839     public
840     property Data: Pointer read FData write FData;
841     end;
842    
843     var
844     GikoForm: TGikoForm;
845    
846     implementation
847    
848     uses
849 h677 1.536 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
850 h677 1.614 YofUtils, ToolBarUtil, ToolBarSetting,
851 h677 1.536 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
852 h677 1.619 FavoriteArrange, AddressHistory, Gesture,
853 yoffy 1.480 About, Option, Round, Splash, Sort, ListSelect, Imm,
854 h677 1.521 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
855 h677 1.583 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
856 h677 1.630 InputAssistDataModule, Types, ReplaceDataModule;
857 hi_ 1.1
858     const
859     BLANK_HTML: string = 'about:blank';
860 h677 1.542 BROWSER_COUNT = 5; //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
861     //D&D鐃緒申鐃?
862     DandD_THRESHOLD = 5; //D&D鐃緒申鐃緒申鐃?鐃?pixcel)
863     //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
864     HTML_FILE_NAME = 'temp_preview.html';
865     //鐃緒申鐃?鐃?鐃?鐃?ID
866 yoffy 1.278 USER_TREECLICK = WM_USER + 2000;
867     USER_RESIZED = WM_USER + 2001;
868     USER_MINIMIZED = WM_USER + 2002;
869     USER_SETLINKBAR = WM_USER + 2003;
870 yoffy 1.434 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
871 h677 1.614 USER_TASKTRAY = WM_USER + 2010;
872 hi_ 1.1 {$R *.DFM}
873    
874     procedure TGikoForm.CreateParams(var Params: TCreateParams);
875     begin
876     inherited;
877     if FormStyle in [fsNormal, fsStayOnTop] then begin
878     if BorderStyle in [bsSingle, bsSizeable] then begin
879     Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
880     Params.WndParent := 0;
881     end;
882     end;
883     end;
884    
885     procedure TGikoForm.FormCreate(Sender: TObject);
886     const
887     TVS_NOTOOLTIPS = $0080;
888     var
889     FileName: string;
890     Style: DWORD;
891     msg: string;
892     i: Integer;
893     wp: TWindowPlacement;
894     begin
895     {$IFDEF DEBUG}
896     AllocConsole;
897     Writeln('============================================================');
898     Writeln(' 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃? 鐃?鐃緒申鐃?鐃?鐃緒申');
899     Writeln('');
900     Writeln(' 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
901     Writeln(' 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
902     Writeln('============================================================');
903     {$ENDIF}
904 h677 1.580 //try
905 h677 1.586 Sort.SetSortDate(Now());
906    
907 h677 1.514 FTreeType := gttNone;
908     // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
909 h677 1.471 FStartUp := true;
910 hi_ 1.1 Application.HookMainWindow(Hook);
911 h677 1.514 FIsIgnoreResize := rtResizing;
912 h677 1.581 //ActionList鐃緒申GuoupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?0鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
913     //(鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申Down鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)
914     //鐃緒申鐃緒申鐃緒申鐃緒申Set鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?Action鐃緒申Checked鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
915     GetGroupIndex(GikoDM.GikoFormActionList);
916 yoffy 1.51 FSearchDialog := nil;
917 h677 1.636 FResPopupBrowser := nil;
918 h677 1.550 CreateBrowsers(BROWSER_COUNT);
919 h677 1.615 FIconData.uID := 0;
920 h677 1.636
921 h677 1.514 //鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?
922     SetMenuFont;
923 yoffy 1.216
924 hi_ 1.1 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
925     Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
926    
927     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
928 h677 1.513 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
929 hi_ 1.1
930     EnabledCloseButton := True;
931 h677 1.176
932 hi_ 1.1 //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
933     ListView.ViewStyle := GikoSys.Setting.ListStyle;
934    
935     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
936     AnimePanel.Top := 0;
937     AnimePanel.Left := 0;
938    
939     //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
940    
941     //鐃?鐃緒申鐃?鐃?鐃?鐃?
942     CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
943    
944     //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
945 h677 1.539 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
946     GikoDM.MsgBarVisibleActionExecute(nil);
947 hi_ 1.1 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
948    
949     //鐃?鐃?鐃?鐃?鐃?鐃?鐃?
950 h677 1.539 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
951     GikoDM.StatusBarVisibleActionExecute(nil);
952 hi_ 1.1
953     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
954     TreeView.Items.BeginUpdate;
955 yoffy 1.100 FavoriteTreeView.Items.BeginUpdate;
956 hi_ 1.1 ListView.Items.BeginUpdate;
957     try
958     TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
959     TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
960     TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
961     TreeView.Color := GikoSys.Setting.CabinetBackColor;
962 h677 1.473 FavoriteTreeView.Font.Assign(TreeView.Font);
963 yoffy 1.67 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
964    
965 hi_ 1.1 ListView.Font.Name := GikoSys.Setting.ListFontName;
966     ListView.Font.Size := GikoSys.Setting.ListFontSize;
967     ListView.Font.Color := GikoSys.Setting.ListFontColor;
968 h677 1.473 ListView.Font.Style := [];
969     if GikoSys.Setting.ListFontBold then
970     ListView.Font.Style := [fsbold];
971     if GikoSys.Setting.ListFontItalic then
972     ListView.Font.Style := ListView.Font.Style + [fsitalic];
973    
974 yoffy 1.418 ListViewBackGroundColor := clWhite; // 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
975     ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
976 yoffy 1.236 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
977     FOddColor := GikoSys.Setting.OddColor;
978 h677 1.109
979 hi_ 1.1 finally
980     TreeView.Items.EndUpdate;
981 yoffy 1.100 FavoriteTreeView.Items.EndUpdate;
982 hi_ 1.1 ListView.Items.EndUpdate;
983     end;
984     //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
985 h677 1.539 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
986 hi_ 1.1
987 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
988     GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
989    
990     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
991     FResRangeMenuSelect := GikoSys.ResRange;
992     case GikoSys.ResRange of
993     Ord( grrAll ):
994     begin
995     GikoDM.AllResAction.Execute;
996     end;
997     Ord( grrSelect ):
998     begin
999     SelectComboBox.Text := SelectComboBox.Items[ 1 ];
1000     GikoDM.SelectResAction.Checked := True;
1001     end;
1002     else
1003     case FResRangeMenuSelect of
1004     Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
1005     Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
1006     100: GikoDM.OnlyAHundredResAction.Checked := True;
1007     end;
1008     end;
1009    
1010     // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1011     case GikoSys.Setting.ThreadRange of
1012     gtrAll:
1013     begin
1014     GikoDM.AllItemAction.Checked := True;
1015     ViewType := gvtAll;
1016     end;
1017     gtrLog:
1018     begin
1019     GikoDM.LogItemAction.Checked := True;
1020     ViewType := gvtLog;
1021     end;
1022     gtrNew:
1023     begin
1024     GikoDM.NewItemAction.Checked := True;
1025     ViewType := gvtNew;
1026     end;
1027 h677 1.592 gtrLive:
1028     begin
1029     GikoDM.LiveItemAction.Checked := True;
1030     ViewType := gvtLive;
1031     end;
1032     gtrArch:
1033     begin
1034     GikoDM.ArchiveItemAction.Checked := True;
1035     ViewType := gvtArch;
1036     end;
1037 h677 1.581 end;
1038    
1039    
1040 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1041     BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1042     BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1043 h677 1.473 BrowserTab.Font.Style := [];
1044     if GikoSys.Setting.BrowserTabFontBold then
1045     BrowserTab.Font.Style := [fsBold];
1046     if GikoSys.Setting.BrowserTabFontItalic then
1047     BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1048 h677 1.582 BrowserTab.DoubleBuffered := True;
1049 yoffy 1.133 FDragWFirst := false;
1050 h677 1.299 SetContent(BrowserNullTab); //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1051    
1052 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃?鐃?
1053     GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1054    
1055     if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1056     GikoDM.BrowserTabTopAction.Checked := True;
1057     end else begin
1058     GikoDM.BrowserTabBottomAction.Checked := True;
1059     end;
1060    
1061     if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1062     GikoDM.BrowserTabTabStyleAction.Checked := True;
1063     end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1064     GikoDM.BrowserTabButtonStyleAction.Checked := True;
1065     end else begin
1066     GikoDM.BrowserTabFlatStyleAction.Checked := True;
1067     end;
1068    
1069 h677 1.514 //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1070     ProgressBar.Parent := StatusBar;
1071     ProgressBar.Top := 2;
1072     ProgressBar.Left := 0;
1073     ProgressBar.Width := StatusBar.Panels[0].Width;
1074     ProgressBar.Height := StatusBar.Height - 2;
1075     ProgressBar.Position := 0;
1076    
1077     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1078     InitializeBoardPlugIns;
1079    
1080     // 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申(ReadFavorite 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1081     GikoSys.ListBoardFile;
1082 h677 1.580 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申
1083     try
1084 h677 1.514 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1085 h677 1.580 if (SplashWindow <> nil) then begin
1086     SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1087     end;
1088     except
1089     end;
1090 h677 1.514 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1091     for i := Length(BBSs) - 1 downto 0 do begin
1092     if not BBSs[i].IsBoardFileRead then
1093     GikoSys.ReadBoardFile(BBSs[i]);
1094    
1095     if SplashWindow <> nil then begin
1096     SplashWindow.ProgressBar.StepBy(20);
1097     SplashWindow.Update;
1098     end;
1099     end;
1100 h677 1.580
1101 h677 1.514 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1102     RoundList := TRoundList.Create;
1103     RoundList.LoadRoundBoardFile;
1104     RoundList.LoadRoundThreadFile;
1105    
1106     //TreeView鐃緒申鐃緒申鐃緒申鐃?鐃緒申ToolTip鐃緒申鐃緒申鐃?鐃緒申
1107     Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1108     Style := Style or TVS_NOTOOLTIPS;
1109     SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1110    
1111     // 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1112     TreeView.Align := alClient;
1113     FavoriteTreeView.Align := alClient;
1114     FavoriteTreeView.Visible := False;
1115    
1116     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1117     SetBBSMenu;
1118 hi_ 1.1
1119     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1120     wp.length := sizeof(wp);
1121     wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1122     wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1123     wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1124     wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1125     wp.showCmd := SW_HIDE;
1126     SetWindowPlacement(Handle, @wp);
1127 h677 1.514 //Self.Update;
1128 hi_ 1.1
1129     if GikoSys.Setting.WindowMax then
1130 h677 1.514 WindowState := wsMaximized;
1131 hi_ 1.1
1132     //鐃?鐃?鐃?鐃?鐃緒申
1133     try
1134     FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1135     if FileExists(FileName) then
1136     Animate.FileName := FileName;
1137     except
1138     end;
1139    
1140     //鐃?鐃?鐃?鐃?
1141     FNameCookie := '';
1142     FMailCookie := '';
1143    
1144     //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1145     FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1146     FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1147    
1148 yoffy 1.420
1149     // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?(LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1150 h677 1.623 FHistoryList := THistoryList.Create;
1151 yoffy 1.420
1152     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1153 h677 1.623 FHistoryList.LoadFromFile(GikoSys.GetConfigDir + 'History.xml',
1154     TreeView, FTreeType);
1155 yoffy 1.420
1156     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1157     FavoriteDM.SetFavTreeView(FavoriteTreeView);
1158     FavoriteDM.ReadFavorite;
1159    
1160 h677 1.539 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1161     GikoDM.ArrangeAction.Execute;
1162 hi_ 1.1
1163     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1164     case GikoSys.Setting.ListWidthState of
1165     glsMax: begin
1166     ViewPanel.Width := 1;
1167 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1168     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1169 hi_ 1.1 end;
1170     glsMin: begin
1171     ViewPanel.Width := GikoSys.Setting.ListWidth;
1172 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1173     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1174 hi_ 1.1 end;
1175     else begin
1176     ViewPanel.Width := GikoSys.Setting.ListWidth;
1177 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1178     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1179 hi_ 1.1 end;
1180     end;
1181     end else begin
1182     case GikoSys.Setting.ListHeightState of
1183     glsMax: begin
1184     ViewPanel.Height := 1;
1185 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1186     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1187 hi_ 1.1 end;
1188     glsMin: begin
1189     ViewPanel.Height := GikoSys.Setting.ListHeight;
1190 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1191     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1192 hi_ 1.1 end;
1193     else begin
1194     ViewPanel.Height := GikoSys.Setting.ListHeight;
1195 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1196     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1197 hi_ 1.1 end;
1198     end;
1199     end;
1200    
1201     //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?
1202 h677 1.550 CreateControlThread();
1203 hi_ 1.1
1204 yoffy 1.51 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1205     SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1206 yoffy 1.2
1207 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
1208     SetBrowserTabState;
1209    
1210     BrowserBoardNameLabel.Caption := '';
1211     BrowserNameLabel.Caption := '';
1212     FWorkCount := 0;
1213    
1214     FTabHintIndex := -1;
1215    
1216     //鐃?鐃?鐃緒申鐃?鐃?Wrapable
1217     ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1218     BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1219    
1220 yoffy 1.236 MakeDefaultINIFile();
1221 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1222 h677 1.539 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1223     ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1224     ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1225 yoffy 1.2 SetToolBarPopup;
1226 yoffy 1.375
1227 h677 1.517 //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1228 h677 1.550 SetSelectComboBox();
1229 h677 1.514
1230     //鐃?鐃?鐃緒申鐃?鐃?鐃?
1231     AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1232    
1233     //鐃緒申鐃緒申鐃?鐃?鐃?
1234     SetLinkBar;
1235 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1236    
1237     //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
1238     if not FileExists(GikoSys.GetBoardFileName) then begin
1239     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10#13#10
1240     + '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申' + #13#10
1241     + '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1242     MsgBox(SplashWindow.Handle, msg, '鐃?鐃?鐃?鐃?', MB_OK or MB_ICONINFORMATION);
1243 h677 1.539 GikoDM.NewBoardAction.Execute;
1244 yoffy 1.2 end;
1245    
1246     //鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1247 h677 1.560 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1248 yoffy 1.2
1249     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1250     // FLastRoundTime := 0;
1251    
1252 h677 1.547 ListView.OnData := TListViewUtils.ListViewData;
1253 h677 1.529
1254 yoffy 1.100 // 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1255 h677 1.299 CabinetVisible( False );
1256 yoffy 1.141 if GikoSys.Setting.CabinetVisible then begin
1257     i := CabinetSelectPopupMenu.Items.Count - 1;
1258     if GikoSys.Setting.CabinetIndex = i - 1 then
1259 h677 1.539 GikoDM.CabinetHistoryAction.Execute
1260 yoffy 1.141 else if GikoSys.Setting.CabinetIndex = i then
1261 h677 1.539 GikoDM.CabinetFavoriteAction.Execute
1262 yoffy 1.141 else begin
1263     if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1264     ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1265 yoffy 1.265 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 2
1266 yoffy 1.424 FIsIgnoreResize := rtResizing;
1267 h677 1.539 GikoDM.CabinetBBSAction.Execute;
1268 yoffy 1.141 end;
1269     end else begin
1270 yoffy 1.248 ShowBBSTreeOld( BBSs[ 0 ] );
1271     PostMessage( Handle, USER_TREECLICK, 0, 0 );
1272 yoffy 1.141 end;
1273 yoffy 1.67
1274 yoffy 1.2 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
1275     for i := 1 to ParamCount do begin
1276     MoveToURL(ParamStr(i));
1277     end;
1278 h677 1.22
1279 h677 1.567 GikoDM.RepaintStatusBar;
1280 hi_ 1.32 StatusBarResize(Sender);
1281 h677 1.187
1282 yoffy 1.236 dummy1.Caption := ItemReservPMenu.Caption;
1283     dummy1.Hint := ItemReservPMenu.Hint;
1284 yoffy 1.216
1285 yoffy 1.500 {$IFDEF SPAM_FILTER_ENABLED}
1286 yoffy 1.468 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1287     GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1288 yoffy 1.500 {$ENDIF}
1289 yoffy 1.468
1290 yoffy 1.456 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1291     MouseGesture := TMouseGesture.Create;
1292     GikoSys.Setting.Gestures.LoadGesture(
1293 h677 1.539 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1294 yoffy 1.456 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1295     MouseGesture.OnGestureStart := OnGestureStart;
1296     MouseGesture.OnGestureMove := OnGestureMove;
1297     MouseGesture.OnGestureEnd := OnGestureEnd;
1298 yoffy 1.457 if GikoSys.Setting.GestureEnabled then
1299     MouseGesture.SetHook( Handle );
1300 genyakun 1.458
1301 h677 1.483 //2ch鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1302 h677 1.562 GikoSys.SetGikoMessage;
1303 h677 1.514
1304 genyakun 1.497 //鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1305     if GikoSys.Setting.AutoLogin then
1306 h677 1.539 GikoDM.LoginAction.Execute;
1307 genyakun 1.497
1308 h677 1.514 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1309 h677 1.541
1310     //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1311     FavoriteAddToolButton.Caption := '鐃緒申鐃緒申...';
1312 h677 1.547 AntiIndivAbonMenuItem.Caption := '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申';
1313 h677 1.541
1314 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1315     InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1316 h677 1.613
1317 h677 1.630 //鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1318     ReplaceDM.LoadFromFile(GikoSys.GetReplaceFileName);
1319 h677 1.639 // D&D鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1320     DragAcceptFiles(Self.Handle, True);
1321 yoffy 1.2 end;
1322    
1323 yoffy 1.216 // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1324     procedure TGikoForm.SaveCoolBarSettings;
1325 yoffy 1.2 begin
1326    
1327 yoffy 1.424 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1328 yoffy 1.216 Exit;
1329 h677 1.471 SaveMainCoolBarSettings;
1330     SaveBoardCoolBarSettings;
1331     SaveBrowserCoolBarSettings;
1332 yoffy 1.2
1333 h677 1.471 end;
1334     procedure TGikoForm.SaveMainCoolBarSettings;
1335     var
1336     i : Integer;
1337     CoolSet : TCoolSet;
1338     begin
1339 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1340     for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1341     CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1342     CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1343     CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1344     GikoSys.Setting.MainCoolSet[i] := CoolSet;
1345     end;
1346 h677 1.471 end;
1347     procedure TGikoForm.SaveBoardCoolBarSettings;
1348     var
1349     i : Integer;
1350     CoolSet : TCoolSet;
1351     begin
1352 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1353     for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1354     CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1355     CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1356     CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1357     GikoSys.Setting.ListCoolSet[i] := CoolSet;
1358     end;
1359 h677 1.471 end;
1360     procedure TGikoForm.SaveBrowserCoolBarSettings;
1361     var
1362     i : Integer;
1363     CoolSet : TCoolSet;
1364     begin
1365 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1366     for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1367     CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1368     CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1369     CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1370     GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1371 yoffy 1.2 end;
1372 yoffy 1.216 end;
1373     // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1374     procedure TGikoForm.LoadCoolBarSettings;
1375     var
1376     i : Integer;
1377     CoolSet : TCoolSet;
1378     begin
1379 yoffy 1.2
1380 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1381     MainCoolBar.Bands.BeginUpdate;
1382     try
1383 yoffy 1.216 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1384     for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1385 hi_ 1.1 CoolSet := GikoSys.Setting.MainCoolSet[i];
1386 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1387 yoffy 1.424 FIsIgnoreResize := rtNone;
1388 yoffy 1.263 SaveCoolBarSettings;
1389     Exit;
1390     end;
1391 hi_ 1.1 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1392     MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1393 yoffy 1.264 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1394 hi_ 1.1 end;
1395     finally
1396     MainCoolBar.Bands.EndUpdate;
1397     end;
1398    
1399     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1400     ListCoolBar.Bands.BeginUpdate;
1401     try
1402 yoffy 1.216 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1403     for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1404 hi_ 1.1 CoolSet := GikoSys.Setting.ListCoolSet[i];
1405 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1406 yoffy 1.424 FIsIgnoreResize := rtNone;
1407 yoffy 1.263 SaveCoolBarSettings;
1408     Exit;
1409     end;
1410 hi_ 1.1 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1411     ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1412     ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1413     end;
1414     finally
1415     ListCoolBar.Bands.EndUpdate;
1416     end;
1417    
1418     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1419     BrowserCoolBar.Bands.BeginUpdate;
1420     try
1421 yoffy 1.216 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1422 h677 1.514 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1423 hi_ 1.1 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1424 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1425 yoffy 1.424 FIsIgnoreResize := rtNone;
1426 yoffy 1.263 SaveCoolBarSettings;
1427     Exit;
1428     end;
1429 hi_ 1.1 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1430     BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1431     BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1432     end;
1433     finally
1434     BrowserCoolBar.Bands.EndUpdate;
1435     end;
1436    
1437     end;
1438 yoffy 1.216 //
1439     procedure TGikoForm.FormShow(Sender: TObject);
1440 h677 1.638 var
1441     item : TThreadItem;
1442 yoffy 1.216 begin
1443 h677 1.471 if FStartUp then begin
1444 h677 1.423 ShowWindow(Application.Handle, SW_HIDE);
1445    
1446     //FormCreate鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1447     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
1448 h677 1.539 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1449     GikoDM.StdToolBarVisibleActionExecute( nil );
1450     GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1451     GikoDM.AddressBarVisibleActionExecute( nil );
1452     GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1453     GikoDM.LinkBarVisibleActionExecute( nil );
1454     GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1455     GikoDM.ListToolBarVisibleActionExecute( nil );
1456     GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1457     GikoDM.ListNameBarVisibleActionExecute( nil );
1458     GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1459     GikoDM.BrowserToolBarVisibleActionExecute( nil );
1460     GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1461     GikoDM.BrowserNameBarVisibleActionExecute( nil );
1462 h677 1.423
1463     // CoolBar 鐃緒申鐃緒申
1464     LoadCoolBarSettings;
1465 yoffy 1.265
1466 h677 1.514 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1467 h677 1.517 // ResetBandInfo( ListCoolBar, ListToolBar );
1468 yoffy 1.424 FIsIgnoreResize := rtNone;
1469 genyakun 1.382
1470 h677 1.423 //FormCrete鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1471     if GikoSys.Setting.TabAutoLoadSave then begin
1472 h677 1.611 GikoDM.TabsOpenAction.Tag := 1;
1473     GikoDM.TabsOpenAction.Execute;
1474     GikoDM.TabsOpenAction.Tag := 0;
1475 h677 1.638 if (GikoSys.Setting.LastCloseTabURL <> '') then begin
1476 h677 1.639 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( FActiveContent.Browser ), 0 );
1477     if ( FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
1478     while (FActiveContent.Browser.ReadyState <> READYSTATE_COMPLETE) and
1479     (FActiveContent.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
1480     Application.ProcessMessages;
1481     end;
1482     end;
1483 h677 1.638 item := BBSsFindThreadFromURL( GikoSys.Setting.LastCloseTabURL );
1484     if (item <> nil) and (item.IsLogFile) then begin
1485     OpenThreadItem(item, item.URL);
1486     end;
1487     GikoSys.Setting.LastCloseTabURL := '';
1488     end;
1489 h677 1.423 end;
1490 h677 1.581
1491     //ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1492     SetGroupIndex(GikoDM.GikoFormActionList);
1493 h677 1.547
1494 h677 1.471 FStartUp := false;
1495 yoffy 1.397 end;
1496 yoffy 1.239 end;
1497 yoffy 1.216
1498 hi_ 1.1 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1499     begin
1500 yoffy 1.331 // if GikoForm.WindowState <> wsMinimized then
1501     // SaveCoolBarSettings;
1502 h677 1.599 CanClose := True;
1503 yoffy 1.236 if ( GikoSys.Setting.ShowDialogForEnd ) and
1504     (MessageDlg('鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1505     CanClose := false;
1506     Exit;
1507 h677 1.599 end;
1508    
1509 h677 1.638 GikoSys.Setting.LastCloseTabURL := '';
1510 h677 1.599 if GikoSys.Setting.TabAutoLoadSave then begin
1511 h677 1.611 GikoDM.TabsSaveAction.Execute;
1512 h677 1.638 if (GetActiveContent <> nil) and
1513     (GetActiveContent.IsLogFile) then begin
1514     GikoSys.Setting.LastCloseTabURL := GetActiveContent.URL;
1515     end;
1516 h677 1.599 end;
1517    
1518     if (SearchDialog <> nil) then begin
1519     if (SearchDialog.Visible) then begin
1520     SearchDialog.Close;
1521     try
1522     SearchDialog.Release;
1523     except
1524     end;
1525     SearchDialog := nil;
1526 yoffy 1.398 end;
1527 yoffy 1.236 end;
1528 h677 1.609
1529     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?EditorForm鐃緒申鐃緒申鐃緒申鐃緒申
1530     GikoDM.CloseAllEditorAction.Execute;
1531    
1532 h677 1.241 Application.UnhookMainWindow(Hook);
1533     Application.Terminate;
1534     end;
1535    
1536     procedure TGikoForm.FormDestroy(Sender: TObject);
1537     var
1538 yoffy 1.376 i : Integer;
1539 h677 1.241 // CoolSet: TCoolSet;
1540 yoffy 1.376 wp : TWindowPlacement;
1541     tmpBool : Boolean;
1542 h677 1.241 begin
1543 yoffy 1.460 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1544 yoffy 1.456 try
1545     MouseGesture.UnHook;
1546     except
1547     end;
1548 yoffy 1.236 try
1549 yoffy 1.410 ActiveListColumnSave;
1550 yoffy 1.236 except
1551     end;
1552     try
1553 h677 1.234 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1554     wp.length := sizeof(wp);
1555     GetWindowPlacement(Handle, @wp);
1556     GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1557     GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1558     GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1559     GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1560     GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1561    
1562     GikoSys.Setting.ListStyle := ListView.ViewStyle;
1563 h677 1.539 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1564 h677 1.234 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1565     GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1566     GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1567 h677 1.539 if GikoDM.ArrangeAction.Checked then
1568 h677 1.234 GikoSys.Setting.ListOrientation := gloVertical
1569     else
1570     GikoSys.Setting.ListOrientation := gloHorizontal;
1571     GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1572 yoffy 1.236 except
1573 yoffy 1.2 end;
1574 yoffy 1.378
1575     try
1576     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
1577     if not GikoSys.Setting.ResRangeHold then
1578 yoffy 1.380 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1579 yoffy 1.378 except
1580     end;
1581 h677 1.483 if WindowState <> wsNormal then
1582     WindowState := wsNormal;
1583     SaveCoolBarSettings;
1584     try
1585     GikoSys.Setting.WriteWindowSettingFile;
1586     GikoSys.Setting.WriteNameMailSettingFile;
1587     except
1588     end;
1589 yoffy 1.378 // 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申 CoolBar 鐃緒申鐃緒申
1590 yoffy 1.216 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1591 h677 1.482
1592 yoffy 1.263 // 鐃緒申FormDestroy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?2004/04/09鐃?
1593 yoffy 1.216 // CoolBar 鐃緒申鐃緒申
1594 h677 1.482 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1595 h677 1.483
1596 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1597     InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1598 yoffy 1.2
1599     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1600 hi_ 1.1 try
1601 yoffy 1.236 //FavoriteDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1602 yoffy 1.2 FavoriteDM.WriteFavorite;
1603 yoffy 1.236 FavoriteDM.Clear;
1604 hi_ 1.1 except
1605     end;
1606 h677 1.483 LockWindowUpdate(Self.Handle);
1607 hi_ 1.1 try
1608     //鐃?鐃?鐃?鐃緒申鐃?鐃?
1609 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1610     GikoSys.Setting.ShowDialogForAllTabClose := false;
1611 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1612 h677 1.483 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1613 h677 1.299 except
1614     end;
1615 h677 1.321 try
1616     for i := FBrowsers.Count - 1 downto 0 do begin
1617     TWebBrowser(FBrowsers[i]).Free;
1618     end;
1619     FBrowsers.Clear;
1620     FBrowsers.Capacity := 0;
1621     finally
1622     FBrowsers.Free;
1623 h677 1.303 end;
1624 h677 1.299 try
1625     if BrowserNullTab <> nil then begin
1626     BrowserNullTab.Browser := nil; {*BrowserNullTab鐃緒申Browser鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
1627     *鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Free鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1628     *}
1629     BrowserNullTab.Free;
1630 hi_ 1.1 end;
1631     except
1632     end;
1633 h677 1.483
1634 h677 1.224 try
1635 yoffy 1.236 TreeView.Items.BeginUpdate;
1636 yoffy 1.380 TreeView.Items.GetFirstNode.Free;
1637 yoffy 1.236 TreeView.Items.Clear;
1638     TreeView.Items.EndUpdate;
1639 h677 1.224 except
1640     end;
1641 h677 1.230
1642 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1643     try
1644 yoffy 1.236 //AddressHistoryDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1645 h677 1.513 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1646 hi_ 1.1 except
1647     end;
1648    
1649 h677 1.234 //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1650 hi_ 1.1 try
1651 h677 1.623 FHistoryList.SaveToFile(GikoSys.GetConfigDir + 'History.xml');
1652 hi_ 1.1 except
1653     end;
1654 yoffy 1.236 try
1655     try
1656 h677 1.623 FHistoryList.Clear;
1657 yoffy 1.236 except
1658     end;
1659     finally
1660     FHistoryList.Free;
1661     end;
1662 h677 1.221
1663 h677 1.182 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申&鐃?鐃緒申
1664     try
1665     RoundList.SaveRoundFile;
1666     except
1667     end;
1668 yoffy 1.236 try
1669 h677 1.234 try
1670 yoffy 1.236 RoundList.Clear;
1671 h677 1.234 except
1672     end;
1673 yoffy 1.236 finally
1674     RoundList.Free;
1675     end;
1676 h677 1.182
1677 yoffy 1.236 try
1678 h677 1.234 try
1679     FControlThread.Terminate;
1680 yoffy 1.236 FControlThread.WaitFor;
1681 h677 1.234 except
1682 h677 1.219 end;
1683 yoffy 1.236 finally
1684     FControlThread.Free;
1685     end;
1686 h677 1.609 // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1687     for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
1688     GikoForm.PlugInMenu.items[i].Free;
1689     end;
1690     GikoForm.PlugInMenu.Clear;
1691    
1692 h677 1.230
1693 yoffy 1.155 // TBBS 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 TCategory, TBoard, TThreadItem 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1694     // TBoard, TThreadItem 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1695     // BoardPluteIns 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1696 h677 1.550 for i := Length(BoardGroups) - 1 downto 0 do begin
1697 h677 1.517 //BoardGroups[i].Clear;
1698     BoardGroups[i].Free;
1699 h677 1.550 end;
1700 h677 1.514
1701 yoffy 1.126 try
1702 h677 1.220 for i := Length( BBSs ) - 1 downto 0 do begin
1703 h677 1.153 if BBSs[ i ] <> nil then
1704     BBSs[ i ].Free;
1705     BBSs[ i ] := nil;
1706     end;
1707     except
1708     end;
1709 yoffy 1.155
1710 h677 1.234 try
1711 yoffy 1.236 if FEvent <> nil then
1712     FEvent.Free;
1713 h677 1.181
1714 h677 1.636 // TODO 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申
1715     try
1716     if FResPopupBrowser <> nil then begin
1717     TOleControl(FResPopupBrowser).Parent := nil;
1718     FResPopupBrowser.Free;
1719     end;
1720    
1721     except
1722     end;
1723 yoffy 1.2 //Preview鐃?鐃緒申
1724 h677 1.636 if FPreviewBrowser <> nil then begin
1725 yoffy 1.2 FPreviewBrowser.Free;
1726     FPreviewBrowser := nil;
1727     end;
1728     except
1729     end;
1730 h677 1.550 LockWindowUpdate(0);
1731 hi_ 1.1 end;
1732    
1733 yoffy 1.289 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
1734     procedure TGikoForm.SetBBSMenu;
1735 yoffy 1.123 var
1736     i : Integer;
1737 yoffy 1.149 item : TBBSMenuItem;
1738 hi_ 1.1 begin
1739    
1740 yoffy 1.148 // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1741     for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1742     try
1743     if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1744 yoffy 1.155 CabinetSelectPopupMenu.Items[ i ].Free;
1745     CabinetMenu.Items[ i ].Free;
1746 yoffy 1.289 BBSSelectPopupMenu.Items[ i ].Free;
1747 yoffy 1.148 end;
1748     except
1749     end;
1750     end;
1751 yoffy 1.289
1752     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1753 yoffy 1.148 for i := Length( BBSs ) - 1 downto 0 do begin
1754     try
1755     item := TBBSMenuItem.Create( PopupMenu );
1756     item.Caption := BBSs[ i ].Title;
1757     item.Data := BBSs[ i ];
1758     item.OnClick := BBSMenuItemOnClick;
1759     CabinetSelectPopupMenu.Items.Insert( 0, item );
1760     item := TBBSMenuItem.Create( PopupMenu );
1761     item.Caption := BBSs[ i ].Title;
1762     item.Data := BBSs[ i ];
1763     item.OnClick := BBSMenuItemOnClick;
1764     CabinetMenu.Insert( 0, item );
1765 yoffy 1.289 item := TBBSMenuItem.Create( PopupMenu );
1766     item.Caption := BBSs[ i ].Title;
1767     item.Data := BBSs[ i ];
1768     item.OnClick := BBSMenuItemOnClick;
1769     BBSSelectPopupMenu.Items.Insert( 0, Item );
1770 yoffy 1.148 except
1771     end;
1772     end;
1773 yoffy 1.289
1774     end;
1775    
1776     procedure TGikoForm.ReloadBBS;
1777     var
1778     i : Integer;
1779 h677 1.321 tmpBool: Boolean;
1780 yoffy 1.289 begin
1781 h677 1.517 LockWindowUpdate(Self.Handle);
1782    
1783 yoffy 1.289 //鐃?鐃?鐃?鐃緒申鐃?鐃?
1784 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1785     GikoSys.Setting.ShowDialogForAllTabClose := false;
1786 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1787 h677 1.321 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1788 h677 1.320 SetContent(BrowserNullTab);
1789 yoffy 1.289 //TreeView鐃?鐃緒申鐃?鐃?BBS2ch.Free鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申XP鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?
1790     TreeView.Items.Clear;
1791    
1792 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1793     try
1794     RoundList.SaveRoundFile;
1795     except
1796     end;
1797     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
1798     try
1799     RoundList.Clear;
1800     except
1801     end;
1802    
1803     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1804 h677 1.517 try
1805 h677 1.623 FHistoryList.SaveToFile(GikoSys.GetConfigDir + 'History.xml');
1806     FHistoryList.Clear;
1807 h677 1.517 except
1808     end;
1809 h677 1.515
1810     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1811 h677 1.517 try
1812     FavoriteDM.WriteFavorite;
1813     FavoriteDM.Clear;
1814     except
1815     end;
1816 h677 1.515
1817 h677 1.516 //鐃緒申鐃?鐃?鐃緒申鐃?PLUGIN鐃緒申鐃?鐃緒申
1818     for i := Length(BoardGroups) - 1 downto 0 do begin
1819 h677 1.517 try
1820     BoardGroups[i].Free;
1821     except
1822     end;
1823 h677 1.516 end;
1824 yoffy 1.289 //BBS鐃?鐃緒申
1825     try
1826     for i := Length( BBSs ) - 1 downto 0 do begin
1827     if BBSs[ i ] <> nil then
1828     BBSs[ i ].Free;
1829     BBSs[ i ] := nil;
1830     end;
1831     except
1832     end;
1833    
1834     ActiveList := nil;
1835    
1836     FTreeType := gttNone;
1837 h677 1.516
1838     //============鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申================================//
1839    
1840     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1841     InitializeBoardPlugIns;
1842    
1843 yoffy 1.289 GikoSys.ListBoardFile; //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1844    
1845 h677 1.515 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1846     for i := Length(BBSs) - 1 downto 0 do begin
1847     if not BBSs[i].IsBoardFileRead then
1848     GikoSys.ReadBoardFile(BBSs[i]);
1849     end;
1850    
1851 yoffy 1.289 // BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?
1852     SetBBSMenu;
1853    
1854 yoffy 1.123 ShowBBSTree( BBSs[ 0 ] );
1855 yoffy 1.143
1856     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1857 h677 1.623 FHistoryList.LoadFromFile(GikoSys.GetConfigDir + 'History.xml',
1858     TreeView, FTreeType);
1859 yoffy 1.143
1860     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1861     FavoriteDM.ReadFavorite;
1862 yoffy 1.279
1863 yoffy 1.143 SetLinkBar;
1864    
1865 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1866 h677 1.514 RoundList.LoadRoundBoardFile;
1867     RoundList.LoadRoundThreadFile;
1868    
1869 h677 1.517 LockWindowUpdate(0);
1870 hi_ 1.1 end;
1871    
1872 yoffy 1.602 {!
1873     \todo 鐃緒申鐃緒申 IE 7 鐃緒申鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1874     (IE 7 鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)
1875     鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1876     }
1877 hi_ 1.1 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1878     var
1879     p: TPoint;
1880     s: string;
1881     tmp2: string;
1882     URL: string;
1883     ATitle: Boolean;
1884    
1885 yoffy 1.130 threadItem : TThreadItem;
1886     board : TBoard;
1887 yoffy 1.163 Protocol, Host, Path, Document, Port, Bookmark: string;
1888 yoffy 1.130
1889 h677 1.333 wkInt: Integer;
1890 hi_ 1.1 wkIntSt: Integer;
1891     wkIntTo: Integer;
1892     ActiveFileName: string;
1893     e: IHTMLElement;
1894     Ext: string;
1895     PathRec: TPathRec;
1896 yoffy 1.602 Text2: string;
1897 h677 1.636 cResPopup: TResPopupBrowser;
1898 hi_ 1.1 begin
1899 yoffy 1.602 // 鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申 about:blank.. 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1900     // IE 7 鐃緒申鐃緒申 about:blank.. 鐃緒申鐃緒申鐃緒申鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申)
1901     if Pos('about:..', Text) = 1 then
1902 yoffy 1.603 Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
1903     else
1904     Text2 := Text;
1905 h677 1.316 if not( TObject(Sender) is TWebBrowser )then
1906     Exit;
1907 hi_ 1.1 try
1908     try
1909 h677 1.316 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1910     if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1911     OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1912 h677 1.306 end;
1913 hi_ 1.1 end;
1914     except
1915     end;
1916     finally
1917     end;
1918     if PreviewTimer.Enabled then
1919     PreviewTimer.Enabled := False;
1920     Application.CancelHint;
1921 h677 1.333 try
1922     if GetActiveContent <> nil then
1923     ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1924     else
1925     ActiveFileName := '';
1926     except
1927     FActiveContent := nil;
1928     Exit;
1929     end;
1930 h677 1.628 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1931     if (StatusBar.Panels[1].Text = Text2) then begin
1932 h677 1.636 if Text2 = '' then begin
1933     if FResPopupBrowser <> nil then begin
1934     if not(Sender is TResPopupBrowser) then
1935     FResPopupBrowser.Clear
1936     else begin
1937     TResPopupBrowser(Sender).ChildClear;
1938     end;
1939     end;
1940     end;
1941 h677 1.628 Exit;
1942     end;
1943 yoffy 1.602 StatusBar.Panels[1].Text := Text2;
1944 hi_ 1.1
1945 h677 1.636
1946 hi_ 1.1 if FPreviewBrowser <> nil then
1947     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1948    
1949 h677 1.636 if FResPopupBrowser <> nil then begin
1950     if not(Sender is TResPopupBrowser) then begin
1951     if (FResPopupBrowser.Visible) then begin
1952     FResPopupBrowser.Clear;
1953     end;
1954     end else begin
1955     TResPopupBrowser(Sender).ChildClear;
1956     end;
1957     end;
1958     cResPopup := nil;
1959    
1960     if not(Sender is TResPopupBrowser) then
1961     if not GikoSys.Setting.UnActivePopup then
1962     if not GikoForm.Active then
1963     Exit;
1964 hi_ 1.1
1965 h677 1.628
1966    
1967 hi_ 1.1 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1968     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1969    
1970     s := '';
1971 yoffy 1.602 Ext := AnsiLowerCase(ExtractFileExt(Text2));
1972     if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
1973 hi_ 1.1 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1974     if FPreviewBrowser = nil then begin
1975     FPreviewBrowser := TPreviewBrowser.Create(Self);
1976     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1977     TOleControl(FPreviewBrowser).Parent := nil;
1978     end;
1979 h677 1.316 FPreviewBrowser.Navigate(BLANK_HTML);//鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1980 yoffy 1.602 FPreviewURL := Text2;
1981 hi_ 1.1 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1982     PreviewTimer.Enabled := True;
1983 yoffy 1.602 end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
1984     if Pos('mailto:', Text2) = 1 then begin
1985     s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
1986 hi_ 1.1 //鐃?鐃?鐃?鐃?鐃?鐃緒申 鐃?鐃?鐃?3鐃緒申466鐃緒申鐃緒申鐃緒申鐃緒申
1987     GetCursorPos(p);
1988     p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1989     p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1990     e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1991     if (Assigned(e)) then begin
1992 h677 1.636 CreateResPopupBrowser;
1993     cResPopup := FResPopupBrowser.CreateNewBrowser;
1994 h677 1.297 tmp2 := ZenToHan(e.Get_outerText);
1995 hi_ 1.1 if (GikoSys.IsNumeric(tmp2)) then begin
1996     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1997 h677 1.600 wkIntSt := StrToInt64(tmp2);
1998     wkIntTo := StrToInt64(tmp2);
1999 h677 1.636 cResPopup.PopupType := gptThread;
2000 h677 1.637 HTMLCreater.SetResPopupText(cResPopup, GetActiveContent(true), wkIntSt, wkIntTo, False, False);
2001 hi_ 1.1 end else begin
2002 h677 1.636 cResPopup.PopupType := gptRaw;
2003     cResPopup.Title := s;
2004 hi_ 1.1 end;
2005     end;
2006     end else begin
2007 h677 1.637 threadItem := GetActiveContent(true);
2008 yoffy 1.602 URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
2009 yoffy 1.274 PathRec := Gikosys.Parse2chURL2(URL);
2010 q9_ 1.354 if (PathRec.FNoParam) then begin
2011     PathRec.FSt := 1;
2012     PathRec.FTo := 1;
2013 h677 1.447 end else begin
2014 q9_ 1.352 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2015 h677 1.447 end;
2016 yoffy 1.163 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
2017 hi_ 1.1
2018 h677 1.168 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
2019 yoffy 1.162
2020 yoffy 1.163 URL := GikoSys.GetBrowsableThreadURL( URL );
2021 yoffy 1.274 wkIntSt := PathRec.FSt;
2022     wkIntTo := PathRec.FTo;
2023 hi_ 1.1
2024     if (wkIntSt = 0) and (wkIntTo = 0) then begin
2025     wkIntSt := 1;
2026     wkIntTo := 1;
2027     end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
2028     wkIntSt := wkIntTo;
2029     end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
2030     wkIntTo := wkIntSt;
2031     end else if wkIntSt > wkIntTo then begin
2032 h677 1.333 wkInt := wkIntTo;
2033 hi_ 1.1 wkIntTo := wkIntSt;
2034 h677 1.333 wkIntSt := wkInt;
2035 hi_ 1.1 end;
2036 h677 1.299 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
2037 yoffy 1.274 ATitle := false
2038     else
2039     ATitle := true;
2040 hi_ 1.1
2041 yoffy 1.160 threadItem := BBSsFindThreadFromURL( URL );
2042 h677 1.170
2043 yoffy 1.163 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
2044     board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
2045 yoffy 1.274 if board <> nil then begin
2046     if not board.IsThreadDatRead then
2047     GikoSys.ReadSubjectFile( board );
2048 yoffy 1.270 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
2049 yoffy 1.274 end;
2050 yoffy 1.130 end;
2051 h677 1.319
2052 yoffy 1.130 if threadItem <> nil then begin
2053 yoffy 1.127 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
2054 h677 1.512 //URL鐃緒申鐃緒申鐃緒申鐃緒申/鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
2055     if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
2056     wkIntSt := 1;
2057     wkIntTo := 1;
2058     end;
2059 h677 1.636 CreateResPopupBrowser;
2060     cResPopup := FResPopupBrowser.CreateNewBrowser;
2061     cResPopup.PopupType := gptThread;
2062     HTMLCreater.SetResPopupText(cResPopup, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
2063 yoffy 1.127 end;
2064 hi_ 1.1 end;
2065 h677 1.168 end;
2066 h677 1.636 if (cResPopup <> nil) then begin
2067     if cResPopup.PopupType = gptRaw then begin
2068     if cResPopup.Title <> '' then begin
2069     cResPopup.TitlePopup;
2070     end;
2071     end else begin
2072     if cResPopup.RawDocument <> '' then begin
2073     cResPopup.Popup;
2074     end else if cResPopup.Title <> '' then begin
2075     cResPopup.TitlePopup;
2076     end;
2077     end;
2078     end;
2079 hi_ 1.1 end;
2080     end;
2081    
2082     procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2083     var
2084     SysMenu: HMenu;
2085     begin
2086     FEnabledCloseButton := Enabled;
2087     SysMenu := GetSystemMenu(Handle, False);
2088    
2089     if Enabled then begin
2090     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2091     end else begin
2092     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2093     end;
2094    
2095     DrawMenuBar(Handle);
2096     end;
2097    
2098     procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2099     var AllowChange: Boolean);
2100     begin
2101 q9_ 1.369 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2102     // if FTreeType = gtt2ch then
2103     // FSortIndex := -1;
2104 hi_ 1.1 end;
2105    
2106     procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2107     Shift: TShiftState);
2108 yoffy 1.428 var
2109     pos : TPoint;
2110 hi_ 1.1 begin
2111 yoffy 1.236 if GetActiveList is TBoard then begin
2112 yoffy 1.428 case Key of
2113     VK_BACK:; // UpFolderButtonClick(Sender);
2114     VK_SPACE: ListDoubleClick(Shift);
2115     VK_RETURN: ListClick;
2116     VK_APPS:
2117     begin
2118     if ListView.Selected <> nil then begin
2119     pos.X := ListView.Column[ 0 ].Width;
2120     pos.Y := ListView.Selected.Top;
2121     end else begin
2122     pos.X := ListView.Left;
2123     pos.Y := ListView.Top;
2124     end;
2125     Windows.ClientToScreen( ListView.Handle, pos );
2126     ListPopupMenu.Popup( pos.X, pos.Y );
2127     end;
2128 yoffy 1.236 end;
2129     end else begin // TBBS, TCategory
2130 yoffy 1.428 case Key of
2131     VK_BACK:; // UpFolderButtonClick(Sender);
2132     VK_SPACE: ListClick;
2133     VK_RETURN: ListDoubleClick(Shift);
2134     VK_APPS:
2135     begin
2136     if ListView.Selected <> nil then begin
2137     pos.X := ListView.Column[ 0 ].Width;
2138     pos.Y := ListView.Selected.Top;
2139     end else begin
2140     pos.X := ListView.Left;
2141     pos.Y := ListView.Top;
2142     end;
2143     Windows.ClientToScreen( ListView.Handle, pos );
2144     ListPopupMenu.Popup( pos.X, pos.Y );
2145     end;
2146 yoffy 1.236 end;
2147 hi_ 1.1 end;
2148     end;
2149    
2150     function TGikoForm.GetHttpState: Boolean;
2151     begin
2152     Result := FHttpState;
2153     end;
2154    
2155     procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2156     Column: TListColumn);
2157 yoffy 1.413 var
2158     id, idx : Integer;
2159     orderList : TList;
2160 h677 1.570 vSortIndex : Integer;
2161     vSortOrder : Boolean;
2162 hi_ 1.1 begin
2163 h677 1.530 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2164 h677 1.570 if TObject( FActiveList ) is TBBS then begin
2165     orderList := GikoSys.Setting.BBSColumnOrder;
2166     vSortIndex := GikoSys.Setting.BBSSortIndex;
2167     vSortOrder := GikoSys.Setting.BBSSortOrder;
2168     end else if TObject( FActiveList ) is TCategory then begin
2169     orderList := GikoSys.Setting.CategoryColumnOrder;
2170     vSortIndex := GikoSys.Setting.CategorySortIndex;
2171     vSortOrder := GikoSys.Setting.CategorySortOrder;
2172     end else if TObject( FActiveList ) is TBoard then begin
2173     orderList := GikoSys.Setting.BoardColumnOrder;
2174     vSortIndex := GikoSys.Setting.BoardSortIndex;
2175     vSortOrder := GikoSys.Setting.BoardSortOrder;
2176     end else
2177 yoffy 1.413 Exit;
2178    
2179     id := Integer( orderList[ idx ] );
2180    
2181 h677 1.570
2182     if vSortIndex = id then
2183     vSortOrder := not vSortOrder
2184 h677 1.464 else begin
2185 h677 1.572 vSortOrder := id = 0;
2186 h677 1.570 end;
2187 h677 1.572
2188 h677 1.570 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2189 hi_ 1.1 end;
2190    
2191     procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2192     Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2193     var
2194     ARect: TRect;
2195     begin
2196 yoffy 1.2 DefaultDraw := True;
2197     Exit;
2198 hi_ 1.1 DefaultDraw := False;
2199     if (cdsSelected in State) or (cdsHot in State) then begin
2200     Sender.Canvas.Brush.Color := clHighlight;
2201     Sender.Canvas.Font.Color := clHighlightText;
2202     end else begin
2203     Sender.Canvas.Brush.Color := clBtnFace;
2204     Sender.Canvas.Font.Color := clBtnText;
2205     end;
2206     ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2207     Sender.Canvas.FillRect(ARect);
2208     DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2209     end;
2210    
2211     function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2212     var
2213     Nodes: TTreeNodes;
2214     i: integer;
2215     begin
2216     Nodes := TreeView.Items;
2217    
2218     for i := 0 to Nodes.Count - 1 do begin
2219     if Nodes.Item[i].Data = Data then begin
2220     Result := Nodes.Item[i];
2221     Exit;
2222     end;
2223     end;
2224     Result := nil;
2225     end;
2226    
2227     procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2228     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2229     Headers: OleVariant; var Cancel: WordBool);
2230     var
2231     sNo: string;
2232     p: TPoint;
2233 yoffy 1.56 const
2234     kMenuName: string = 'menu:';
2235 hi_ 1.1