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.595 - (hide annotations) (download) (as text)
Sat Feb 25 02:43:51 2006 UTC (18 years, 1 month ago) by h677
Branch: MAIN
Changes since 1.594: +5 -16 lines
File MIME type: text/x-pascal
スレッドの描画部を修正

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