Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/Giko.pas

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


Revision 1.616 - (show annotations) (download) (as text)
Tue Aug 8 15:28:59 2006 UTC (17 years, 8 months ago) by h677
Branch: MAIN
CVS Tags: v1_54_0_677, v1_54_0_676, v1_54_0_675
Changes since 1.615: +5 -4 lines
File MIME type: text/x-pascal
スレを表示していない状態で、最小化でタスクトレイに格納されない不具合の修正

1 unit Giko;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils,
8 {$IF Defined(DELPRO) }
9 SHDocVw,
10 MSHTML,
11 {$ELSE}
12 SHDocVw_TLB,
13 MSHTML_TLB,
14 {$IFEND}
15 IdHTTP, ActiveX, ActnList, ImgList,
16 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 IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord, MoveHistoryItem,
22 ShellAPI;
23
24 const
25 NGWORDNAME_PANEL = 3;
26 THREADSIZE_PANEL = 2;
27
28 type
29 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
30 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
31 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
32 TResizeType = (rtNone, rtResizing);
33
34 // TBrowserRecord = class;
35
36 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 ListView: TGikoListView;
47 ThreadPanel: TPanel;
48 MessagePanel: TPanel;
49 MessageBar: TPanel;
50 MessageHideButton: TSpeedButton;
51 MessageListView: TListView;
52 MessageSplitter: TSplitter;
53 Panel3: TPanel;
54 CabinetCloseSpeedButton: TSpeedButton;
55 ToolBar1: TToolBar;
56 CabinetSelectToolButton: TToolButton;
57 HistoryToolBar: TToolBar;
58 HistoryShowToolButton: TToolButton;
59 HistoryAllClearToolButton: TToolButton;
60 ItemIcon16: TImageList;
61 ItemIcon32: TImageList;
62 HotToobarImageList: TImageList;
63 ItemImageList: TImageList;
64 MainMenu: TMainMenu;
65 FileMenu: TMenuItem;
66 DeleteMenu: TMenuItem;
67 ExitMenu: TMenuItem;
68 KidokuMenu: TMenuItem;
69 MidokuMenu: TMenuItem;
70 AllSelectMenu: TMenuItem;
71 ViewMenu: TMenuItem;
72 StdToolBarMenu: TMenuItem;
73 CabinetMenu: TMenuItem;
74 H1: TMenuItem;
75 N4: TMenuItem;
76 CabinetVisibleMenu: TMenuItem;
77 MessageMenu: TMenuItem;
78 StatusBarMenu: TMenuItem;
79 MMSep03: TMenuItem;
80 LargeIconMenu: TMenuItem;
81 SmallIconMenu: TMenuItem;
82 ListMenu: TMenuItem;
83 DetailMenu: TMenuItem;
84 ToolMenu: TMenuItem;
85 Find1: TMenuItem;
86 RoundMenu: TMenuItem;
87 MMSep04: TMenuItem;
88 OptionMenu: TMenuItem;
89 HelpMenu: TMenuItem;
90 G1: TMenuItem;
91 N1: TMenuItem;
92 AboutMenu: TMenuItem;
93 BrowserPopupMenu: TPopupMenu;
94 ShowThreadMenu: TMenuItem;
95 ShowBoardMenu: TMenuItem;
96 ListIconPopupMenu: TPopupMenu;
97 LargeIconPMenu: TMenuItem;
98 SmallIconPMenu: TMenuItem;
99 ListPMenu: TMenuItem;
100 DetailPMenu: TMenuItem;
101 ClosePopupMenu: TPopupMenu;
102 CloseMenu: TMenuItem;
103 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 ListRoundPMenu: TMenuItem;
114 ListReservPMenu: TMenuItem;
115 LPMSep01: TMenuItem;
116 ItemRoundPMenu: TMenuItem;
117 LPMSep02: TMenuItem;
118 KidokuPMenu: TMenuItem;
119 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 URLC1: TMenuItem;
134 N9: TMenuItem;
135 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 AllPMenu: TMenuItem;
150 MenuItem1: TMenuItem;
151 MenuItem2: TMenuItem;
152 BrowserTabPopupMenu: TPopupMenu;
153 Close1: TMenuItem;
154 A3: TMenuItem;
155 N16: TMenuItem;
156 A4: TMenuItem;
157 TreePopupMenu: TPopupMenu;
158 TreeSelectThreadPupupMenu: TMenuItem;
159 TreeSelectBoardPupupMenu: TMenuItem;
160 TPMSep01: TMenuItem;
161 TreeSelectURLPupupMenu: TMenuItem;
162 T2: TMenuItem;
163 L3: TMenuItem;
164 B3: TMenuItem;
165 BrowserBottomPanel: TGikoPanel;
166 CabinetSelectPopupMenu: TPopupMenu;
167 H2: TMenuItem;
168 ItemReservPMenu: TMenuItem;
169 RoundNamePopupMenu: TPopupMenu;
170 N7: TMenuItem;
171 B4: TMenuItem;
172 L4: TMenuItem;
173 K2: TMenuItem;
174 A5: TMenuItem;
175 A6: TMenuItem;
176 C1: TMenuItem;
177 V1: TMenuItem;
178 N19: TMenuItem;
179 D1: TMenuItem;
180 D2: TMenuItem;
181 MessageImageList: TImageList;
182 ProgressBar: TProgressBar;
183 URL1: TMenuItem;
184 NameUrlCopyPMenu: TMenuItem;
185 URLC2: TMenuItem;
186 URLN1: TMenuItem;
187 N21: TMenuItem;
188 URLC3: TMenuItem;
189 URLN2: TMenuItem;
190 N23: TMenuItem;
191 ListCoolBar: TGikoCoolBar;
192 ListToolBar: TToolBar;
193 BrowserCoolBar: TGikoCoolBar;
194 BrowserToolBar: TToolBar;
195 ToolButton3: TToolButton;
196 ToolButton9: TToolButton;
197 ToolButton11: TToolButton;
198 ToolButton5: TToolButton;
199 ListNameToolBar: TToolBar;
200 ListNameLabel: TLabel;
201 FolderImage: TImage;
202 BrowserNameToolBar: TToolBar;
203 ItemBoardImage: TImage;
204 BrowserBoardNameLabel: TLabel;
205 ItemImage: TImage;
206 BrowserNameLabel: TLabel;
207 D3: TMenuItem;
208 N25: TMenuItem;
209 N26: TMenuItem;
210 D4: TMenuItem;
211 S3: TMenuItem;
212 R2: TMenuItem;
213 TreeSelectNameURLPupupMenu: TMenuItem;
214 N27: TMenuItem;
215 H3: TMenuItem;
216 I1: TMenuItem;
217 BrowserTabToolBar: TToolBar;
218 BrowserTab: TTabControl;
219 About1: TMenuItem;
220 N28: TMenuItem;
221 S4: TMenuItem;
222 N29: TMenuItem;
223 N30: TMenuItem;
224 N31: TMenuItem;
225 L5: TMenuItem;
226 L6: TMenuItem;
227 A7: TMenuItem;
228 R3: TMenuItem;
229 FavoriteMenu: TMenuItem;
230 N32: TMenuItem;
231 BoardFavoriteAddMenu: TMenuItem;
232 ThreadFavoriteAddMenu: TMenuItem;
233 N33: TMenuItem;
234 TreeSelectFavoriteAddPupupMenu: TMenuItem;
235 FavoriteTreeView: TTreeView;
236 StateIconImageList: TImageList;
237 TopPanel: TPanel;
238 TopRightPanel: TPanel;
239 AnimePanel: TPanel;
240 Animate: TAnimate;
241 TopCoolPanel: TPanel;
242 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 T5: TMenuItem;
254 B5: TMenuItem;
255 N35: TMenuItem;
256 A8: TMenuItem;
257 U2: TMenuItem;
258 F1: TMenuItem;
259 PreviewTimer: TTimer;
260 MonazillaWebPageAction1: TMenuItem;
261 N36: TMenuItem;
262 H4: TMenuItem;
263 K3: TMenuItem;
264 L7: TMenuItem;
265 N37: TMenuItem;
266 A9: TMenuItem;
267 ChevronPopupMenu: TPopupMenu;
268 N2N1: TMenuItem;
269 N38: TMenuItem;
270 F2: TMenuItem;
271 LinkToolBar: TToolBar;
272 a10: TMenuItem;
273 N39: TMenuItem;
274 T6: TMenuItem;
275 N40: TMenuItem;
276 LinkBarPopupMenu: TPopupMenu;
277 T7: TMenuItem;
278 ThreadPopupMenu: TPopupMenu;
279 MenuItem4: TMenuItem;
280 MenuItem5: TMenuItem;
281 MenuItem6: TMenuItem;
282 T8: TMenuItem;
283 URLN3: TMenuItem;
284 SelectItemNameCopyAction1: TMenuItem;
285 B6: TMenuItem;
286 T9: TMenuItem;
287 C2: TMenuItem;
288 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 AntiIndivAbonMenuItem: TMenuItem;
324 AntiIndividualAbon: TMenuItem;
325 N49: TMenuItem;
326 N51: TMenuItem;
327 N52: TMenuItem;
328 SearchBoardName: TMenuItem;
329 TreeSelectLogDeleteSeparator: TMenuItem;
330 N54: TMenuItem;
331 A13: TMenuItem;
332 FavoriteTreePopupMenu: TPopupMenu;
333 FavoriteTreeRenamePopupMenu: TMenuItem;
334 FavoriteTreeNewFolderPopupMenu: TMenuItem;
335 N56: TMenuItem;
336 FavoriteTreeDeletePopupMenu: TMenuItem;
337 FavoriteToolBar: TToolBar;
338 FavoriteAddToolButton: TToolButton;
339 FavoriteArrangeToolButton: TToolButton;
340 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 ExportFavoriteFileAction1: TMenuItem;
352 N6: TMenuItem;
353 N17: TMenuItem;
354 N18: TMenuItem;
355 N20: TMenuItem;
356 N24: TMenuItem;
357 N62: TMenuItem;
358 N61: TMenuItem;
359 N63: TMenuItem;
360 N64: TMenuItem;
361 dummy1: TMenuItem;
362 TreeSelectLogDeletePopupMenu: TMenuItem;
363 N65: TMenuItem;
364 BBSSelectPopupMenu: TPopupMenu;
365 PlugInMenu: TMenuItem;
366 TreeSelectNamePupupMenu: TMenuItem;
367 BrowserPanel: TPanel;
368 SelectTimer: TTimer;
369 SelectThreadSave: TMenuItem;
370 N55: TMenuItem;
371 N66: TMenuItem;
372 dat1: TMenuItem;
373 OpenLogFolder: TMenuItem;
374 Browser: TWebBrowser;
375 TabSave: TMenuItem;
376 TabOpen: TMenuItem;
377 ResRangePopupMenu: TPopupMenu;
378 ResRangeHundPMenuItem: TMenuItem;
379 ResRangeKokoPMenuItem: TMenuItem;
380 ResRangeNewPMenuItem: TMenuItem;
381 ResRangeAllPMenuItem: TMenuItem;
382 BrowsBoradHeadAction1: TMenuItem;
383 ThreadRangePopupMenu: TPopupMenu;
384 A15: TMenuItem;
385 L8: TMenuItem;
386 N67: TMenuItem;
387 N68: TMenuItem;
388 S6: TMenuItem;
389 N69: TMenuItem;
390 ResRangeSelectPMenuItem: TMenuItem;
391 ListColumnPopupMenu: TPopupMenu;
392 N70: TMenuItem;
393 ID1: TMenuItem;
394 ID2: TMenuItem;
395 N53: TMenuItem;
396 ID3: TMenuItem;
397 N71: TMenuItem;
398 N72: TMenuItem;
399 N73: TMenuItem;
400 SelectComboBoxPanel: TPanel;
401 SelectComboBoxSplitter: TImage;
402 ToolButton1: TToolButton;
403 N74: TMenuItem;
404 WikiFAQ: TMenuItem;
405 GikoApplicationEvents: TApplicationEvents;
406 N22: TMenuItem;
407 N42: TMenuItem;
408 DAT2: TMenuItem;
409 N75: TMenuItem;
410 DAT3: TMenuItem;
411 N76: TMenuItem;
412 FavoriteTreeItemNameCopyPopupMenu: TMenuItem;
413 N77: TMenuItem;
414 N78: TMenuItem;
415 procedure FormCreate(Sender: TObject);
416 procedure FormDestroy(Sender: TObject);
417 procedure BrowserStatusTextChange(Sender: TObject;
418 const Text: WideString);
419 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
420 procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
421 var AllowChange: Boolean);
422 procedure ListViewKeyDown(Sender: TObject; var Key: Word;
423 Shift: TShiftState);
424 procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
425 procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
426 Button: TToolButton; State: TCustomDrawState;
427 var DefaultDraw: Boolean);
428 procedure BrowserBeforeNavigate2(Sender: TObject;
429 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
430 Headers: OleVariant; var Cancel: WordBool);
431 procedure TreeViewCustomDraw(Sender: TCustomTreeView;
432 const ARect: TRect; var DefaultDraw: Boolean);
433 procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
434 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
435 procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
436 procedure ListViewCustomDraw(Sender: TCustomListView;
437 const ARect: TRect; var DefaultDraw: Boolean);
438 procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
439 Shift: TShiftState; X, Y: Integer);
440 procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
441 procedure MessageListViewResize(Sender: TObject);
442 procedure CabinetVisible( isVisible : Boolean );
443 procedure FormResize(Sender: TObject);
444 procedure ListPopupMenuPopup(Sender: TObject);
445 procedure TreePopupMenuPopup(Sender: TObject);
446 procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
447 var Cancel: WordBool);
448 procedure ListSplitterMoved(Sender: TObject);
449 procedure BrowserTabChange(Sender: TObject);
450 procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
451 Shift: TShiftState; X, Y: Integer);
452 procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
453 State: TDragState; var Accept: Boolean);
454 procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
455 procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
456 Y: Integer);
457 procedure BrowserDocumentComplete(Sender: TObject;
458 const pDisp: IDispatch; var URL: OleVariant);
459 procedure RoundNamePopupMenuPopup(Sender: TObject);
460 procedure FormShow(Sender: TObject);
461 procedure BrowserTabToolBarResize(Sender: TObject);
462 procedure FavoriteMenuClick(Sender: TObject);
463 procedure MainCoolBarResize(Sender: TObject);
464 procedure AddressToolBarResize(Sender: TObject);
465 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
466 Shift: TShiftState);
467 procedure BrowserEnter(Sender: TObject);
468 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
469 procedure PreviewTimerTimer(Sender: TObject);
470 procedure MessageHideButtonClick(Sender: TObject);
471 procedure HistoryAllClearToolButtonClick(Sender: TObject);
472 procedure MainCoolBarBandInfo(Sender: TObject;
473 var BandInfo: PReBarBandInfoA);
474 procedure MainCoolBarChevronClick(Sender: TObject;
475 RebarChevron: PNMRebarChevron);
476 procedure ListCoolBarBandInfo(Sender: TObject;
477 var BandInfo: PReBarBandInfoA);
478 procedure ListCoolBarChevronClick(Sender: TObject;
479 RebarChevron: PNMRebarChevron);
480 procedure BrowserCoolBarBandInfo(Sender: TObject;
481 var BandInfo: PReBarBandInfoA);
482 procedure BrowserCoolBarChevronClick(Sender: TObject;
483 RebarChevron: PNMRebarChevron);
484 procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
485 procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
486 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
487 procedure SelectComboBoxChange(Sender: TObject);
488 procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
489 Shift: TShiftState);
490 procedure SelectComboBoxExit(Sender: TObject);
491 procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
492 Shift: TShiftState; X, Y: Integer);
493 procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
494 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
495 procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
496 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
497 procedure StatusBarResize(Sender: TObject);
498 procedure SelectComboBoxEnter(Sender: TObject);
499 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
500 Y: Integer);
501 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
502 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
503 var S: String);
504 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
505 Shift: TShiftState);
506 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
507 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
508 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
509 Shift: TShiftState; X, Y: Integer);
510 procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
511 State: TDragState; var Accept: Boolean);
512 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
513 Y: Integer);
514 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
515 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
516 var Handled: Boolean);
517 procedure BrowserTabPopupMenuPopup(Sender: TObject);
518 procedure BrowserTabResize(Sender: TObject);
519 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
520 Shift: TShiftState);
521 procedure FavoriteTreeViewMouseDown(Sender: TObject;
522 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
523 procedure MessagePanelResize(Sender: TObject);
524 procedure OnResized;
525 procedure SelectTimerTimer(Sender: TObject);
526 procedure ListViewColumnRightClick(Sender: TObject;
527 Column: TListColumn; Point: TPoint);
528 procedure ListViewCustomDrawItem(Sender: TCustomListView;
529 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
530 procedure FormActivate(Sender: TObject);
531 procedure BrowserPanelResize(Sender: TObject);
532 procedure MenuToolBarResize(Sender: TObject);
533 procedure ListToolBarResize(Sender: TObject);
534 procedure BrowserToolBarResize(Sender: TObject);
535 procedure KokoPopupMenuPopup(Sender: TObject);
536 procedure ListViewKeyUp(Sender: TObject; var Key: Word;
537 Shift: TShiftState);
538 procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
539 var AllowEdit: Boolean);
540 procedure CabinetCloseSpeedButtonClick(Sender: TObject);
541 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
542 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
543 var Handled: Boolean);
544 procedure GikoApplicationEventsDeactivate(Sender: TObject);
545 procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
546 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
547 Shift: TShiftState; X, Y: Integer);
548 procedure GetResURLMenuClick(Sender: TObject);
549 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
550 var Handled: Boolean);
551 private
552 { Private ?ス?ス?ス?ス }
553 FEnabledCloseButton: Boolean;
554 FClickNode: TTreeNode;
555 FHttpState: Boolean;
556 FHint: TResPopup;
557 FPreviewBrowser: TWebBrowser;
558 FPreviewURL: string;
559 FBrowserSizeHeight: Integer;
560 FBrowserSizeWidth: Integer;
561 FTabHintIndex: Integer;
562 FListStyle: TViewStyle; //?ス?ス?スX?スg?スA?スC?スR?ス?ス?スX?ス^?スC?ス?ス
563 FItemNoVisible: Boolean; //?ス?ス?スX?スg?ス?ス?ス?ス?ス\?ス?ス?スt?ス?ス?スO
564 FViewType: TGikoViewType; //?ス?ス?スX?スg?スA?スC?スe?ス?ス?ス\?ス?ス?ス^?スC?スv
565 FActiveList: TObject;
566 FActiveContent: TBrowserRecord; //
567 FActiveBBS : TBBS;
568 FHistoryList: TList; //?スq?スX?スg?ス?ス?ス?ス?スX?スg
569 FTreeType: TGikoTreeType;
570 FWorkCount: Integer;
571 FNameCookie: string;
572 FMailCookie: string;
573 FDownloadTitle: string; //?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス^?スC?スg?ス?ス?ス?ス
574 FDownloadMax: Integer; //?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?スT?スC?スY
575 FEvent: THTMLDocumentEventSink;//?スu?ス?ス?スE?スU?スh?スL?ス?ス?ス?ス?ス?ス?スg?スC?スx?ス?ス?スg
576 IsDraggingSelectComboBox : Boolean;
577 DraggingSelectComboBoxPosition : TPoint;
578 FSearchDialog: TSearchDialog;
579 FDropSpaceNode: TTreeNode;
580 FDragTime : Cardinal; ///< ?ス?ス?ス?ス?スN?ス?スD&D?スp
581 FDragButton : TToolButton; ///< ?ス?ス?ス?ス?スN?ス?スD&D?スp?ス?スDrag?ス?ス?ス?ス?ス?スButton?ス?ス?ス?ス
582 FDragWFirst : Boolean; ///< WebTab?ス?スD&D?スp
583 FListViewBackGroundColor : TColor; ///< ListView?ス?スBackGroundColor
584 FUseOddResOddColor : Boolean; ///< ?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スF?ス?ス?ス\?ス?ス
585 FOddColor : TColor; ///< ?ス?ス?ス?ス?スF
586 FSelectResWord : string; ///< ?ス?ス?スX?スi?ス?ス?ス?ス?ス[?スh
587 FIsIgnoreResize : TResizeType; ///< ?ス?ス?スT?スC?スY?スC?スx?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
588 FIsMinimize : TMinimizeType; ///< ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
589 FOldFormWidth : Integer; ///< ?ス?ス?スO?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス
590 FToolBarSettingSender : TToolBarSettingSenderType; ///< ?スc?ス[?ス?ス?スo?ス[?ス?ス?ス?ス?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?スN?ス[?ス?ス?スo?ス[
591 FMouseDownPos : TPoint; ///< ?スu?ス?ス?スE?スU?ス^?スu?ス?ス?ス}?スE?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スW
592 FBrowsers: TList;
593 FResRangeMenuSelect : Longint; ///< ResRangeButton ?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス (?スt?スH?ス[?ス}?スb?スg?ス?ス ResRange ?ス?ス?ス?ス)
594 FStartUp : Boolean;
595 FIsHandledWheel : Boolean; ///< ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス WM_MOUSEWHEEL ?ス?ス?ス?ス?ス?ス?ス?ス
596 DiffComp: Boolean; //Add by Genyakun ?スX?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スTrue?ス?ス?ス?ス?ス?ス
597 FOrigenCaption: String; //?ス?ス?スC?ス?ス?ス?ス?ス?ス?スc?ス?ス?ス[?ス?ス?スA?スC?スe?ス?ス?ス?ス?スW?ス?ス?ス?ス?ス?ス?スW?スO?ス?ス?ス?ス?ス?ス?ス?ス
598 FPreviewBrowserRect: TRect; ///< ?スv?ス?ス?スr?ス?ス?ス[?ス?ス?ス\?ス?ス?ス?ス?スu?ス?ス?スL?ス?ス?ス?ス?ス?ス
599 FActionListGroupIndexes: array of Integer; ///<GikoDM?ス?ス?ス?ス?スA?スN?スV?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?スe?スA?スN?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スz?ス?ス
600
601 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
602 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
603 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
604 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
605 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
606 procedure ListClick;
607 procedure ListDoubleClick(Shift: TShiftState);
608 function Hook(var Message: TMessage): Boolean;
609 procedure AddRoundNameMenu(MenuItem: TMenuItem);
610 procedure SetMenuFont;
611 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
612 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
613 procedure FavoriteClick(Sender: TObject); overload;
614 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
615 function OnDocumentContextMenu(Sender: TObject): WordBool;
616 procedure ShowTextPopup;
617 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
618 procedure MenuBarChevronMenu;
619 procedure LinkBarChevronMenu;
620 procedure ToolBarChevronMenu(ToolBar: TToolBar);
621 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
622 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
623 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
624 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
625 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
626 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
627 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
628 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
629 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
630 //
631 procedure SetListViewBackGroundColor(value: TColor);
632 procedure BBSMenuItemOnClick( Sender : TObject );
633 /// CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
634 procedure SaveCoolBarSettings;
635 procedure SaveMainCoolBarSettings;
636 procedure SaveBoardCoolBarSettings;
637 procedure SaveBrowserCoolBarSettings;
638 /// CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
639 procedure LoadCoolBarSettings;
640 /// ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
641 procedure OnMinimize;
642 /// ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
643 procedure OnMinimized;
644 /// TreeView ?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス
645 procedure TreeClick( Node : TTreeNode );
646 /// TreeView ?ス?ス?ス_?スu?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス
647 procedure TreeDoubleClick( Node : TTreeNode );
648 /// ?スe?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?スE BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スZ?スb?スg?ス^?スX?スV
649 procedure SetBBSMenu;
650 /// ListColumnPopupMenu ?スA?スC?スe?ス?ス?ス?ス?スN?ス?ス?スb?スN?スC?スx?ス?ス?スg
651 procedure ListColumnPopupMenuOnClick( Sender : TObject );
652 //! ?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
653 procedure SetSelectWord( const text : string );
654 //?ス?ス?ス?ス?ス?ス?スJ?ス[?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
655 function GetScreenCursor(): TCursor;
656 //?スJ?ス[?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
657 procedure SetScreenCursor(Cursor : TCursor);
658 //! ?ス_?スE?ス?ス?ス?ス?ス[?スh?スR?ス?ス?スg?ス?ス?ス[?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス
659 procedure CreateControlThread();
660 //! ?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス
661 procedure CreateBrowsers(count: Integer);
662 //! ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス
663 procedure GetGroupIndex(ActionList: TActionList);
664 //! ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス
665 procedure SetGroupIndex(ActionList: TActionList);
666 //! ?スw?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?スJ?ス?ス(?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス or ?スw?ス?スJUMP?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スDL?ス?ス?ス?ス)
667 procedure OpenThreadItem(Thread: TThreadItem; URL: String);
668 //! ListView?スi?スX?ス?ス?スb?スh?ス?ス?ス?ス?スj?ス?ス?スX?スV?ス?ス?ス?ス
669 procedure RefreshListView(Thread: TThreadItem);
670 //! ?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス`?スF?スb?スN?スN?ス?ス?スA
671 procedure ClearThreadRengeAction;
672 //! ?ス^?スX?スN?スg?ス?ス?スC?ス?ス?スA?スC?スR?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス\?ス?ス
673 procedure UnStoredTaskTray;
674 protected
675 procedure CreateParams(var Params: TCreateParams); override;
676 procedure WndProc(var Message: TMessage); override;
677 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
678 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
679 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
680
681 public
682 { Public ?ス?ス?ス?ス }
683 LastRoundTime: TDateTime;
684 BrowserNullTab: TBrowserRecord;
685 FControlThread: TThreadControl;
686 FIconData : TNotifyIconData;
687 procedure MoveToURL(const inURL: string);
688 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
689 procedure ReloadBBS;
690 function GetHttpState: Boolean;
691 procedure SetEnabledCloseButton(Enabled: Boolean);
692 function GetTreeNode(Data: TObject): TTreeNode;
693 procedure ListViewAllSelect;
694 property ListStyle: TViewStyle read FListStyle write FListStyle;
695 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
696 property ViewType: TGikoViewType read FViewType write FViewType;
697 property NameCookie: string read FNameCookie write FNameCookie;
698 property MailCookie: string read FMailCookie write FMailCookie;
699 property ClickNode: TTreeNode read FClickNode write FClickNode;
700 property TreeType: TGikoTreeType read FTreeType write FTreeType;
701 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
702 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
703 property SelectResWord : string read FSelectResWord write FSelectResWord;
704 property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
705 property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
706 property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
707 property ToolBarSettingSender : TToolBarSettingSenderType
708 read FToolBarSettingSender write FToolBarSettingSender;
709 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
710 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
711 property WorkCount: Integer read FWorkCount write FWorkCount;
712 procedure SetContent(inThread: TBrowserRecord);
713 function GetActiveContent: TThreadItem;
714 function GetActiveList: TObject;
715
716 procedure SetListViewType(AViewType: TGikoViewType); overload;
717 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
718 procedure PlaySound(SoundEventName: string);
719 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
720 procedure ClearHistory;
721 procedure SaveHistory;
722 procedure LoadHistory;
723 procedure ShowBBSTree( inBBS : TBBS );
724 procedure ShowBBSTreeOld( inBBS : TBBS );
725 procedure ShowHistoryTree;
726 procedure SetHistoryTreeNode;
727 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
728 procedure SetBrowserTabState;
729 procedure SetToolBarPopup;
730 procedure ShowFavoriteAddDialog( Item : TObject );
731 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
732 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
733 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
734 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
735 property OddColor : TColor read FOddColor write FOddColor;
736 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
737 procedure OnPlugInMenuItem( Sender : TObject );
738 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
739 /// ListView ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スu?ス?ス?ス?ス?ス?ス KuroutSetting?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
740 procedure ActiveListColumnSave;
741 procedure SetActiveList(Obj: TObject);
742 property ActiveList: TObject read GetActiveList write SetActiveList;
743 /// CoolBar ?ス?ス?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス
744 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
745 //?ス?ス?ス?スID?ス?ス?ス?ス?ス?ス?ス`?ス?ス
746 procedure IndividualAbonID(Atype : Integer);
747 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス`?ス?ス
748 procedure IndividualAbon(Atag, Atype : Integer);
749 //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス`?ス?ス true:?スS?ス?ス?ス?ス?ス^?スu false:?スA?スN?スe?スB?スu?ス?ス?ス^?スu?ス?ス?ス?ス
750 procedure RepaintAllTabsBrowser();
751 //?ス?ス?ス?ス?スN?スo?ス[?ス?ス?ス?ス
752 procedure SetLinkBar;
753 procedure FavoriteBrowseFolder( node: TTreeNode );
754 //?スX?ス?ス?スb?スh?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
755 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
756 //?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
757 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
758 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
759 procedure DeleteHistory( threadItem: TThreadItem );
760 //?ス^?スu?ス?ス?ス?ス?ス?ス ?スX?ス?ス?スb?スh?スw?ス?ス
761 procedure DeleteTab(ThreadItem: TThreadItem); overload;
762 //?ス^?スu?ス?ス?ス?ス?ス?ス ?スu?ス?ス?スE?スU?ス?ス?スR?ス[?スh?スi?ス^?スu?スj?スw?ス?ス
763 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
764 // ?ス^?スu?ス?ス?ス?ス?スi?ス?ス?ス?ス?ス?ス?スj
765 procedure DeleteTab(index, selectIndex: Integer); overload;
766 //?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?スX?スN?ス?ス?ス[?ス?ス
767 procedure BrowserMovement(const AName: string);
768 //Application?ス?スMainForm?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
769 function GetMainForm(): TComponent;
770 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
771 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?スn
772 procedure OnGestureStart(Sender: TObject);
773 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?ス?ス
774 procedure OnGestureMove(Sender: TObject);
775 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スI?ス?ス
776 procedure OnGestureEnd(Sender: TObject);
777 /// ?スo?ス?ス?スh?ス?ス?ス?ス?ス?ス?スv?スZ?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
778 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
779 //ListView?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
780 procedure SelectListItem(List: TList);
781 //?スw?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スR?スs?ス[?ス?ス?ス?ス
782 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
783 //
784 procedure ModifySelectList;
785 //
786 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
787 //
788 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
789 //
790 procedure SetSelectRoundName(Sender: TObject);
791 //
792 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
793 //
794 function WebBrowserClick(Sender: TObject): WordBool;
795 //! ?スc?ス[?ス?ス?スo?ス[?ス?ス?スX?ス?ス?スi?ス?ス?ス?ス?スR?ス?ス?ス{?ス{?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
796 procedure SetSelectComboBox();
797
798 //! ?ス^?スX?スN?スg?ス?ス?スC?ス?ス?スi?ス[?ス?ス?ス?ス?スA?スC?スR?ス?ス?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
799 procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010;
800 //! ?ス^?スX?スN?スg?ス?ス?スC?ス?ス?スA?スC?スR?ス?ス?スo?ス^?ス?ス?スt?スH?ス[?ス?ス?スB?ス?ス
801 procedure StoredTaskTray;
802 published
803 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
804 end;
805
806 TFavoriteMenuItem = class(TMenuItem)
807 private
808 FData : Pointer;
809 public
810 property Data: Pointer read FData write FData;
811 end;
812
813 TBBSMenuItem = class(TMenuItem)
814 private
815 FData : Pointer;
816 public
817 property Data: Pointer read FData write FData;
818 end;
819
820 TLinkToolButton = class(TToolButton)
821 private
822 FData : Pointer;
823 public
824 property Data: Pointer read FData write FData;
825 end;
826
827 var
828 GikoForm: TGikoForm;
829
830 implementation
831
832 uses
833 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
834 YofUtils, ToolBarUtil, ToolBarSetting,
835 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
836 FavoriteArrange, AddressHistory, Preview, Gesture,
837 About, Option, Round, Splash, Sort, ListSelect, Imm,
838 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
839 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
840 InputAssistDataModule;
841
842 const
843 BLANK_HTML: string = 'about:blank';
844 BROWSER_COUNT = 5; //?スu?ス?ス?スE?スU?ス?ス?ス?ス
845 //D&D?ス?ス?スl
846 DandD_THRESHOLD = 5; //D&D?ス?ス?ス?ス?スl?スipixcel)
847 //?スv?ス?ス?スr?ス?ス?ス[?スt?ス@?スC?ス?ス?ス?ス
848 HTML_FILE_NAME = 'temp_preview.html';
849 ITEM_ICON_THREADLOG1 = 6; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
850 ITEM_ICON_THREADLOG2 = 7; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
851 //?ス?ス?スb?スZ?ス[?スWID
852 USER_TREECLICK = WM_USER + 2000;
853 USER_RESIZED = WM_USER + 2001;
854 USER_MINIMIZED = WM_USER + 2002;
855 USER_SETLINKBAR = WM_USER + 2003;
856 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
857 USER_TASKTRAY = WM_USER + 2010;
858 {$R *.DFM}
859
860 procedure TGikoForm.CreateParams(var Params: TCreateParams);
861 begin
862 inherited;
863 if FormStyle in [fsNormal, fsStayOnTop] then begin
864 if BorderStyle in [bsSingle, bsSizeable] then begin
865 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
866 Params.WndParent := 0;
867 end;
868 end;
869 end;
870
871 procedure TGikoForm.FormCreate(Sender: TObject);
872 const
873 TVS_NOTOOLTIPS = $0080;
874 var
875 FileName: string;
876 Style: DWORD;
877 msg: string;
878 i: Integer;
879 wp: TWindowPlacement;
880 begin
881 {$IFDEF DEBUG}
882 AllocConsole;
883 Writeln('============================================================');
884 Writeln(' ?スM?スR?スi?スr?スf?スo?スb?スO ?スR?ス?ス?ス\?ス[?ス?ス');
885 Writeln('');
886 Writeln(' ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB');
887 Writeln(' ?スI?ス?ス?ス?ス?ス?ス?スA?スM?スR?スi?スr?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス');
888 Writeln('============================================================');
889 {$ENDIF}
890 //try
891 Sort.SetSortDate(Now());
892
893 FTreeType := gttNone;
894 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
895 FStartUp := true;
896 Application.HookMainWindow(Hook);
897 FIsIgnoreResize := rtResizing;
898 //ActionList?ス?スGuoupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA0?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?スB
899 //(?スN?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?スDown?スv?ス?ス?スp?スe?スB?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス)
900 //?ス?ス?ス?ス?ス?ス?ス?スSet?ス`?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAAction?ス?スChecked?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI
901 GetGroupIndex(GikoDM.GikoFormActionList);
902 FSearchDialog := nil;
903 CreateBrowsers(BROWSER_COUNT);
904 FIconData.uID := 0;
905
906 //?ス?ス?スj?ス?ス?ス[?スt?スH?ス?ス?スg
907 SetMenuFont;
908
909 //?ス?ス?ス?ス?スJ?ス[?ス\?ス?ス
910 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
911
912 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
913 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
914
915 EnabledCloseButton := True;
916
917 //?ス?ス?スX?スg?スX?ス^?スC?ス?ス
918 ListView.ViewStyle := GikoSys.Setting.ListStyle;
919
920 //?スA?スj?ス?ス?スp?スl?ス?ス?ス?ス?スu
921 AnimePanel.Top := 0;
922 AnimePanel.Left := 0;
923
924 //?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
925
926 //?スL?ス?ス?スr?スl?スb?スg
927 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
928
929 //?ス?ス?スb?スZ?ス[?スW?スo?ス[
930 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
931 GikoDM.MsgBarVisibleActionExecute(nil);
932 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
933
934 //?スX?スe?ス[?ス^?スX?スo?ス[
935 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
936 GikoDM.StatusBarVisibleActionExecute(nil);
937
938 //?スt?スH?ス?ス?スg?スE?スF?ス?ス?ス?ス
939 TreeView.Items.BeginUpdate;
940 FavoriteTreeView.Items.BeginUpdate;
941 ListView.Items.BeginUpdate;
942 try
943 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
944 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
945 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
946 TreeView.Color := GikoSys.Setting.CabinetBackColor;
947 FavoriteTreeView.Font.Assign(TreeView.Font);
948 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
949
950 ListView.Font.Name := GikoSys.Setting.ListFontName;
951 ListView.Font.Size := GikoSys.Setting.ListFontSize;
952 ListView.Font.Color := GikoSys.Setting.ListFontColor;
953 ListView.Font.Style := [];
954 if GikoSys.Setting.ListFontBold then
955 ListView.Font.Style := [fsbold];
956 if GikoSys.Setting.ListFontItalic then
957 ListView.Font.Style := ListView.Font.Style + [fsitalic];
958
959 ListViewBackGroundColor := clWhite; // ?スf?スt?スH?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
960 ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // ?ス?ス?ス[?スU?ス?ス?ス`?ス?ス?ス?ス?スX
961 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
962 FOddColor := GikoSys.Setting.OddColor;
963
964 finally
965 TreeView.Items.EndUpdate;
966 FavoriteTreeView.Items.EndUpdate;
967 ListView.Items.EndUpdate;
968 end;
969 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
970 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
971
972 //?ス~?ス?ス?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
973 GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
974
975 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
976 FResRangeMenuSelect := GikoSys.ResRange;
977 case GikoSys.ResRange of
978 Ord( grrAll ):
979 begin
980 GikoDM.AllResAction.Execute;
981 end;
982 Ord( grrSelect ):
983 begin
984 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
985 GikoDM.SelectResAction.Checked := True;
986 end;
987 else
988 case FResRangeMenuSelect of
989 Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
990 Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
991 100: GikoDM.OnlyAHundredResAction.Checked := True;
992 end;
993 end;
994
995 // ?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス
996 case GikoSys.Setting.ThreadRange of
997 gtrAll:
998 begin
999 GikoDM.AllItemAction.Checked := True;
1000 ViewType := gvtAll;
1001 end;
1002 gtrLog:
1003 begin
1004 GikoDM.LogItemAction.Checked := True;
1005 ViewType := gvtLog;
1006 end;
1007 gtrNew:
1008 begin
1009 GikoDM.NewItemAction.Checked := True;
1010 ViewType := gvtNew;
1011 end;
1012 gtrLive:
1013 begin
1014 GikoDM.LiveItemAction.Checked := True;
1015 ViewType := gvtLive;
1016 end;
1017 gtrArch:
1018 begin
1019 GikoDM.ArchiveItemAction.Checked := True;
1020 ViewType := gvtArch;
1021 end;
1022 end;
1023
1024
1025 //?スu?ス?ス?スE?スU?ス^?スu?スt?スH?ス?ス?スg
1026 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1027 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1028 BrowserTab.Font.Style := [];
1029 if GikoSys.Setting.BrowserTabFontBold then
1030 BrowserTab.Font.Style := [fsBold];
1031 if GikoSys.Setting.BrowserTabFontItalic then
1032 BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1033 BrowserTab.DoubleBuffered := True;
1034 FDragWFirst := false;
1035 SetContent(BrowserNullTab); //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス\?ス?ス
1036
1037 //?スu?ス?ス?スE?スU?ス^?スu
1038 GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1039
1040 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1041 GikoDM.BrowserTabTopAction.Checked := True;
1042 end else begin
1043 GikoDM.BrowserTabBottomAction.Checked := True;
1044 end;
1045
1046 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1047 GikoDM.BrowserTabTabStyleAction.Checked := True;
1048 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1049 GikoDM.BrowserTabButtonStyleAction.Checked := True;
1050 end else begin
1051 GikoDM.BrowserTabFlatStyleAction.Checked := True;
1052 end;
1053
1054 //?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス?ス?ス
1055 ProgressBar.Parent := StatusBar;
1056 ProgressBar.Top := 2;
1057 ProgressBar.Left := 0;
1058 ProgressBar.Width := StatusBar.Panels[0].Width;
1059 ProgressBar.Height := StatusBar.Height - 2;
1060 ProgressBar.Position := 0;
1061
1062 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1063 InitializeBoardPlugIns;
1064
1065 // ?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス(ReadFavorite ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1066 GikoSys.ListBoardFile;
1067 //?ス@?スA?ス?ス?スN?ス?ス?ス?ス?ス?ス?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス
1068 try
1069 // ?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス
1070 if (SplashWindow <> nil) then begin
1071 SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1072 end;
1073 except
1074 end;
1075 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1076 for i := Length(BBSs) - 1 downto 0 do begin
1077 if not BBSs[i].IsBoardFileRead then
1078 GikoSys.ReadBoardFile(BBSs[i]);
1079
1080 if SplashWindow <> nil then begin
1081 SplashWindow.ProgressBar.StepBy(20);
1082 SplashWindow.Update;
1083 end;
1084 end;
1085
1086 //?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス
1087 RoundList := TRoundList.Create;
1088 RoundList.LoadRoundBoardFile;
1089 RoundList.LoadRoundThreadFile;
1090
1091 //TreeView?ス?ス?ス?ス?ス?ス?スL?ス?スToolTip?ス?ス?ス?ス?ス\?ス?ス
1092 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1093 Style := Style or TVS_NOTOOLTIPS;
1094 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1095
1096 // ?スc?ス?ス?ス[?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1097 TreeView.Align := alClient;
1098 FavoriteTreeView.Align := alClient;
1099 FavoriteTreeView.Visible := False;
1100
1101 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1102 SetBBSMenu;
1103
1104 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1105 wp.length := sizeof(wp);
1106 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1107 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1108 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1109 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1110 wp.showCmd := SW_HIDE;
1111 SetWindowPlacement(Handle, @wp);
1112 //Self.Update;
1113
1114 if GikoSys.Setting.WindowMax then
1115 WindowState := wsMaximized;
1116
1117 //?スM?スR?スA?スj?ス?ス
1118 try
1119 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1120 if FileExists(FileName) then
1121 Animate.FileName := FileName;
1122 except
1123 end;
1124
1125 //?スN?スb?スL?ス[
1126 FNameCookie := '';
1127 FMailCookie := '';
1128
1129 //?スu?ス?ス?スE?スU?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1130 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1131 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1132
1133
1134 // ?スq?スX?スg?ス?ス?ス?ス?スX?スg(LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1135 FHistoryList := TList.Create;
1136
1137 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1138 LoadHistory;
1139
1140 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1141 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1142 FavoriteDM.ReadFavorite;
1143
1144 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1145 GikoDM.ArrangeAction.Execute;
1146
1147 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1148 case GikoSys.Setting.ListWidthState of
1149 glsMax: begin
1150 ViewPanel.Width := 1;
1151 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1152 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1153 end;
1154 glsMin: begin
1155 ViewPanel.Width := GikoSys.Setting.ListWidth;
1156 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1157 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1158 end;
1159 else begin
1160 ViewPanel.Width := GikoSys.Setting.ListWidth;
1161 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1162 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1163 end;
1164 end;
1165 end else begin
1166 case GikoSys.Setting.ListHeightState of
1167 glsMax: begin
1168 ViewPanel.Height := 1;
1169 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1170 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1171 end;
1172 glsMin: begin
1173 ViewPanel.Height := GikoSys.Setting.ListHeight;
1174 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1175 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1176 end;
1177 else begin
1178 ViewPanel.Height := GikoSys.Setting.ListHeight;
1179 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1180 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1181 end;
1182 end;
1183 end;
1184
1185 //?ス_?スE?ス?ス?ス?ス?ス[?スh?スI?スu?スW?スF?スN?スg
1186 CreateControlThread();
1187
1188 // ?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1189 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1190
1191 //?スu?ス?ス?スE?スU?ス^?スu?ス?ス?ス?ス
1192 SetBrowserTabState;
1193
1194 BrowserBoardNameLabel.Caption := '';
1195 BrowserNameLabel.Caption := '';
1196 FWorkCount := 0;
1197
1198 FTabHintIndex := -1;
1199
1200 //?スc?ス[?ス?ス?スo?ス[Wrapable
1201 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1202 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1203
1204 MakeDefaultINIFile();
1205 //?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1206 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1207 ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1208 ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1209 SetToolBarPopup;
1210
1211 //ListToolBar?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スi?ス?ス?ス?スComboBox?ス?ス?スz?スu
1212 SetSelectComboBox();
1213
1214 //?スA?スh?ス?ス?スX?スo?ス[
1215 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1216
1217 //?ス?ス?ス?ス?スN?スo?ス[
1218 SetLinkBar;
1219 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1220
1221 //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス\?ス?ス
1222 if not FileExists(GikoSys.GetBoardFileName) then begin
1223 msg := '?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?スM?スR?スi?スr?ス?ス?ス?ス?ス?ス?ス?ス?スg?スp?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス' + #13#10#13#10
1224 + '?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スQ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス' + #13#10
1225 + '?ス?ス?ス?ス?スo?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スX?スV?スv?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
1226 MsgBox(SplashWindow.Handle, msg, '?スM?スR?スi?スr', MB_OK or MB_ICONINFORMATION);
1227 GikoDM.NewBoardAction.Execute;
1228 end;
1229
1230 //?スL?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1231 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1232
1233 //?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1234 // FLastRoundTime := 0;
1235
1236 //ResHint
1237 FHint := TResPopup.Create(Self);
1238
1239 ListView.OnData := TListViewUtils.ListViewData;
1240
1241 // ?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?ス?ス?ス?ス?ス?ス
1242 CabinetVisible( False );
1243 if GikoSys.Setting.CabinetVisible then begin
1244 i := CabinetSelectPopupMenu.Items.Count - 1;
1245 if GikoSys.Setting.CabinetIndex = i - 1 then
1246 GikoDM.CabinetHistoryAction.Execute
1247 else if GikoSys.Setting.CabinetIndex = i then
1248 GikoDM.CabinetFavoriteAction.Execute
1249 else begin
1250 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1251 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1252 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス 2
1253 FIsIgnoreResize := rtResizing;
1254 GikoDM.CabinetBBSAction.Execute;
1255 end;
1256 end else begin
1257 ShowBBSTreeOld( BBSs[ 0 ] );
1258 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1259 end;
1260
1261 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スJ?ス?ス?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?スj
1262 for i := 1 to ParamCount do begin
1263 MoveToURL(ParamStr(i));
1264 end;
1265
1266 GikoDM.RepaintStatusBar;
1267 StatusBarResize(Sender);
1268
1269 dummy1.Caption := ItemReservPMenu.Caption;
1270 dummy1.Hint := ItemReservPMenu.Hint;
1271
1272 {$IFDEF SPAM_FILTER_ENABLED}
1273 // ?スX?スp?ス?ス?スt?スB?ス?ス?ス^?スw?スK?ス?ス?ス?ス
1274 GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1275 {$ENDIF}
1276
1277 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[
1278 MouseGesture := TMouseGesture.Create;
1279 GikoSys.Setting.Gestures.LoadGesture(
1280 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1281 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1282 MouseGesture.OnGestureStart := OnGestureStart;
1283 MouseGesture.OnGestureMove := OnGestureMove;
1284 MouseGesture.OnGestureEnd := OnGestureEnd;
1285 if GikoSys.Setting.GestureEnabled then
1286 MouseGesture.SetHook( Handle );
1287
1288 //2ch?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス
1289 GikoSys.SetGikoMessage;
1290
1291 //?スI?ス[?スg?ス?ス?スO?スC?ス?ス
1292 if GikoSys.Setting.AutoLogin then
1293 GikoDM.LoginAction.Execute;
1294
1295 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1296
1297 //?スL?ス?ス?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1298 FavoriteAddToolButton.Caption := '?ス?ス?ス?ス...';
1299 AntiIndivAbonMenuItem.Caption := '?ス?ス?ス?ス?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス';
1300
1301 //?ス?ス?ス?ス?スA?スV?スX?スg?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス
1302 InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1303
1304 end;
1305
1306 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1307 procedure TGikoForm.SaveCoolBarSettings;
1308 begin
1309
1310 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1311 Exit;
1312 SaveMainCoolBarSettings;
1313 SaveBoardCoolBarSettings;
1314 SaveBrowserCoolBarSettings;
1315
1316 end;
1317 procedure TGikoForm.SaveMainCoolBarSettings;
1318 var
1319 i : Integer;
1320 CoolSet : TCoolSet;
1321 begin
1322 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1323 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1324 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1325 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1326 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1327 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1328 end;
1329 end;
1330 procedure TGikoForm.SaveBoardCoolBarSettings;
1331 var
1332 i : Integer;
1333 CoolSet : TCoolSet;
1334 begin
1335 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1336 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1337 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1338 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1339 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1340 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1341 end;
1342 end;
1343 procedure TGikoForm.SaveBrowserCoolBarSettings;
1344 var
1345 i : Integer;
1346 CoolSet : TCoolSet;
1347 begin
1348 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1349 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1350 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1351 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1352 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1353 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1354 end;
1355 end;
1356 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1357 procedure TGikoForm.LoadCoolBarSettings;
1358 var
1359 i : Integer;
1360 CoolSet : TCoolSet;
1361 begin
1362
1363 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1364 MainCoolBar.Bands.BeginUpdate;
1365 try
1366 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1367 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1368 CoolSet := GikoSys.Setting.MainCoolSet[i];
1369 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1370 FIsIgnoreResize := rtNone;
1371 SaveCoolBarSettings;
1372 Exit;
1373 end;
1374 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1375 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1376 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1377 end;
1378 finally
1379 MainCoolBar.Bands.EndUpdate;
1380 end;
1381
1382 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1383 ListCoolBar.Bands.BeginUpdate;
1384 try
1385 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1386 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1387 CoolSet := GikoSys.Setting.ListCoolSet[i];
1388 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1389 FIsIgnoreResize := rtNone;
1390 SaveCoolBarSettings;
1391 Exit;
1392 end;
1393 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1394 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1395 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1396 end;
1397 finally
1398 ListCoolBar.Bands.EndUpdate;
1399 end;
1400
1401 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1402 BrowserCoolBar.Bands.BeginUpdate;
1403 try
1404 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1405 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1406 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1407 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1408 FIsIgnoreResize := rtNone;
1409 SaveCoolBarSettings;
1410 Exit;
1411 end;
1412 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1413 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1414 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1415 end;
1416 finally
1417 BrowserCoolBar.Bands.EndUpdate;
1418 end;
1419
1420 end;
1421 //
1422 procedure TGikoForm.FormShow(Sender: TObject);
1423 begin
1424 if FStartUp then begin
1425 ShowWindow(Application.Handle, SW_HIDE);
1426
1427 //FormCreate?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1428 //?スc?ス[?ス?ス?スo?ス[?ス\?ス?ス
1429 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1430 GikoDM.StdToolBarVisibleActionExecute( nil );
1431 GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1432 GikoDM.AddressBarVisibleActionExecute( nil );
1433 GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1434 GikoDM.LinkBarVisibleActionExecute( nil );
1435 GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1436 GikoDM.ListToolBarVisibleActionExecute( nil );
1437 GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1438 GikoDM.ListNameBarVisibleActionExecute( nil );
1439 GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1440 GikoDM.BrowserToolBarVisibleActionExecute( nil );
1441 GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1442 GikoDM.BrowserNameBarVisibleActionExecute( nil );
1443
1444 // CoolBar ?ス?ス?ス?ス
1445 LoadCoolBarSettings;
1446
1447 //?スd?スv?ス@?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1448 // ResetBandInfo( ListCoolBar, ListToolBar );
1449 FIsIgnoreResize := rtNone;
1450
1451 //FormCrete?ス?ス?ス?ス?ス?ス?ス?ス?スB
1452 if GikoSys.Setting.TabAutoLoadSave then begin
1453 GikoDM.TabsOpenAction.Tag := 1;
1454 GikoDM.TabsOpenAction.Execute;
1455 GikoDM.TabsOpenAction.Tag := 0;
1456 end;
1457
1458 //ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1459 SetGroupIndex(GikoDM.GikoFormActionList);
1460
1461 FStartUp := false;
1462 end;
1463 end;
1464
1465 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1466 begin
1467 // if GikoForm.WindowState <> wsMinimized then
1468 // SaveCoolBarSettings;
1469 CanClose := True;
1470 if ( GikoSys.Setting.ShowDialogForEnd ) and
1471 (MessageDlg('?スM?スR?スi?スr?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1472 CanClose := false;
1473 Exit;
1474 end;
1475
1476 if GikoSys.Setting.TabAutoLoadSave then begin
1477 GikoDM.TabsSaveAction.Execute;
1478 end;
1479
1480 if (SearchDialog <> nil) then begin
1481 if (SearchDialog.Visible) then begin
1482 SearchDialog.Close;
1483 try
1484 SearchDialog.Release;
1485 except
1486 end;
1487 SearchDialog := nil;
1488 end;
1489 end;
1490
1491 //?スX?スN?ス?ス?ス[?ス?ス?ス?ス?ス?ス?スS?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?スAEditorForm?ス?ス?ス?ス?ス?ス?ス?ス
1492 GikoDM.CloseAllEditorAction.Execute;
1493
1494 Application.UnhookMainWindow(Hook);
1495 Application.Terminate;
1496 end;
1497
1498 procedure TGikoForm.FormDestroy(Sender: TObject);
1499 var
1500 i : Integer;
1501 // CoolSet: TCoolSet;
1502 wp : TWindowPlacement;
1503 tmpBool : Boolean;
1504 begin
1505 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?ス?ス
1506 try
1507 MouseGesture.UnHook;
1508 except
1509 end;
1510 try
1511 ActiveListColumnSave;
1512 except
1513 end;
1514 try
1515 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1516 wp.length := sizeof(wp);
1517 GetWindowPlacement(Handle, @wp);
1518 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1519 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1520 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1521 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1522 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1523
1524 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1525 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1526 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1527 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1528 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1529 if GikoDM.ArrangeAction.Checked then
1530 GikoSys.Setting.ListOrientation := gloVertical
1531 else
1532 GikoSys.Setting.ListOrientation := gloHorizontal;
1533 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1534 except
1535 end;
1536
1537 try
1538 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
1539 if not GikoSys.Setting.ResRangeHold then
1540 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1541 except
1542 end;
1543 if WindowState <> wsNormal then
1544 WindowState := wsNormal;
1545 SaveCoolBarSettings;
1546 try
1547 GikoSys.Setting.WriteWindowSettingFile;
1548 GikoSys.Setting.WriteNameMailSettingFile;
1549 except
1550 end;
1551 // ?ス?ス?スA?ス?ス?ス^?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?スA?スE?スB?ス?ス?スh?スE?スT?スC?スY?ス?ス CoolBar ?ス?ス?ス?ス
1552 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スl?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1553
1554 // ?ス?スFormDestroy?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スB?スi?ス?ス?ス?ス?ス?ス?ス@2004/04/09?スj
1555 // CoolBar ?ス?ス?ス?ス
1556 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1557
1558 //?ス?ス?ス?ス?スA?スV?スX?スg?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1559 InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1560
1561 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1562 try
1563 //FavoriteDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1564 FavoriteDM.WriteFavorite;
1565 FavoriteDM.Clear;
1566 except
1567 end;
1568 LockWindowUpdate(Self.Handle);
1569 try
1570 //?ス^?スu?スN?ス?ス?ス[?スY
1571 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1572 GikoSys.Setting.ShowDialogForAllTabClose := false;
1573 GikoDM.AllTabCloseAction.Execute;
1574 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1575 except
1576 end;
1577 try
1578 for i := FBrowsers.Count - 1 downto 0 do begin
1579 TWebBrowser(FBrowsers[i]).Free;
1580 end;
1581 FBrowsers.Clear;
1582 FBrowsers.Capacity := 0;
1583 finally
1584 FBrowsers.Free;
1585 end;
1586 try
1587 if BrowserNullTab <> nil then begin
1588 BrowserNullTab.Browser := nil; {*BrowserNullTab?ス?スBrowser?ス?ス?ス?ス?スv?ス?ス?ス?ス?ス\?ス?ス?スt?ス?ス?ス?ス?ス?ス?スz
1589 *?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFree?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1590 *}
1591 BrowserNullTab.Free;
1592 end;
1593 except
1594 end;
1595
1596 try
1597 TreeView.Items.BeginUpdate;
1598 TreeView.Items.GetFirstNode.Free;
1599 TreeView.Items.Clear;
1600 TreeView.Items.EndUpdate;
1601 except
1602 end;
1603
1604 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1605 try
1606 //AddressHistoryDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スB
1607 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1608 except
1609 end;
1610
1611 //?スq?スX?スg?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1612 try
1613 SaveHistory;
1614 except
1615 end;
1616 try
1617 try
1618 ClearHistory;
1619 except
1620 end;
1621 finally
1622 FHistoryList.Free;
1623 end;
1624
1625 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス&?スj?ス?ス
1626 try
1627 RoundList.SaveRoundFile;
1628 except
1629 end;
1630 try
1631 try
1632 RoundList.Clear;
1633 except
1634 end;
1635 finally
1636 RoundList.Free;
1637 end;
1638
1639 try
1640 try
1641 FControlThread.Terminate;
1642 FControlThread.WaitFor;
1643 except
1644 end;
1645 finally
1646 FControlThread.Free;
1647 end;
1648 // ?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス?ス[?ス?ス?スJ?ス?ス?ス?ス?ス?ス
1649 for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
1650 GikoForm.PlugInMenu.items[i].Free;
1651 end;
1652 GikoForm.PlugInMenu.Clear;
1653
1654
1655 // TBBS ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス TCategory, TBoard, TThreadItem ?ス?ス?ス?ス?ス?ス?ス?ス?スJ?ス?ス?ス?ス?ス?ス
1656 // TBoard, TThreadItem ?ス?ス?スf?スX?スg?ス?ス?スN?ス^?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?スj?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス?ス?ス
1657 // BoardPluteIns ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス
1658 for i := Length(BoardGroups) - 1 downto 0 do begin
1659 //BoardGroups[i].Clear;
1660 BoardGroups[i].Free;
1661 end;
1662
1663 try
1664 for i := Length( BBSs ) - 1 downto 0 do begin
1665 if BBSs[ i ] <> nil then
1666 BBSs[ i ].Free;
1667 BBSs[ i ] := nil;
1668 end;
1669 except
1670 end;
1671
1672 try
1673 if FEvent <> nil then
1674 FEvent.Free;
1675
1676 //Hint?スj?ス?ス
1677 if FHint <> nil then begin
1678 FHint.ReleaseHandle;
1679 FHint.Free;
1680 FHint := nil;
1681 end;
1682 //Preview?スj?ス?ス
1683 if TPreviewBrowser <> nil then begin
1684 FPreviewBrowser.Free;
1685 FPreviewBrowser := nil;
1686 end;
1687 except
1688 end;
1689 LockWindowUpdate(0);
1690 end;
1691
1692 // ?スe?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?スE BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スZ?スb?スg?ス^?スX?スV
1693 procedure TGikoForm.SetBBSMenu;
1694 var
1695 i : Integer;
1696 item : TBBSMenuItem;
1697 begin
1698
1699 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1700 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1701 try
1702 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1703 CabinetSelectPopupMenu.Items[ i ].Free;
1704 CabinetMenu.Items[ i ].Free;
1705 BBSSelectPopupMenu.Items[ i ].Free;
1706 end;
1707 except
1708 end;
1709 end;
1710
1711 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1712 for i := Length( BBSs ) - 1 downto 0 do begin
1713 try
1714 item := TBBSMenuItem.Create( PopupMenu );
1715 item.Caption := BBSs[ i ].Title;
1716 item.Data := BBSs[ i ];
1717 item.OnClick := BBSMenuItemOnClick;
1718 CabinetSelectPopupMenu.Items.Insert( 0, item );
1719 item := TBBSMenuItem.Create( PopupMenu );
1720 item.Caption := BBSs[ i ].Title;
1721 item.Data := BBSs[ i ];
1722 item.OnClick := BBSMenuItemOnClick;
1723 CabinetMenu.Insert( 0, item );
1724 item := TBBSMenuItem.Create( PopupMenu );
1725 item.Caption := BBSs[ i ].Title;
1726 item.Data := BBSs[ i ];
1727 item.OnClick := BBSMenuItemOnClick;
1728 BBSSelectPopupMenu.Items.Insert( 0, Item );
1729 except
1730 end;
1731 end;
1732
1733 end;
1734
1735 procedure TGikoForm.ReloadBBS;
1736 var
1737 i : Integer;
1738 tmpBool: Boolean;
1739 begin
1740 LockWindowUpdate(Self.Handle);
1741
1742 //?ス^?スu?スN?ス?ス?ス[?スY
1743 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1744 GikoSys.Setting.ShowDialogForAllTabClose := false;
1745 GikoDM.AllTabCloseAction.Execute;
1746 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1747 SetContent(BrowserNullTab);
1748 //TreeView?スN?ス?ス?スA?スiBBS2ch.Free?ス?ス?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?スXP?スX?ス^?スC?ス?ス?ス?ス?ス?ス?スG?ス?ス?ス[?スo?ス?ス?スj
1749 TreeView.Items.Clear;
1750
1751 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1752 try
1753 RoundList.SaveRoundFile;
1754 except
1755 end;
1756 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?スj?ス?ス
1757 try
1758 RoundList.Clear;
1759 except
1760 end;
1761
1762 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1763 try
1764 SaveHistory;
1765 ClearHistory;
1766 except
1767 end;
1768
1769 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1770 try
1771 FavoriteDM.WriteFavorite;
1772 FavoriteDM.Clear;
1773 except
1774 end;
1775
1776 //?ス?ス?スE?スX?ス?ス?スEPLUGIN?ス?ス?スj?ス?ス
1777 for i := Length(BoardGroups) - 1 downto 0 do begin
1778 try
1779 BoardGroups[i].Free;
1780 except
1781 end;
1782 end;
1783 //BBS?スj?ス?ス
1784 try
1785 for i := Length( BBSs ) - 1 downto 0 do begin
1786 if BBSs[ i ] <> nil then
1787 BBSs[ i ].Free;
1788 BBSs[ i ] := nil;
1789 end;
1790 except
1791 end;
1792
1793 ActiveList := nil;
1794
1795 FTreeType := gttNone;
1796
1797 //============?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス================================//
1798
1799 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1800 InitializeBoardPlugIns;
1801
1802 GikoSys.ListBoardFile; //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス
1803
1804 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1805 for i := Length(BBSs) - 1 downto 0 do begin
1806 if not BBSs[i].IsBoardFileRead then
1807 GikoSys.ReadBoardFile(BBSs[i]);
1808 end;
1809
1810 // BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スX?スV
1811 SetBBSMenu;
1812
1813 ShowBBSTree( BBSs[ 0 ] );
1814
1815 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1816 LoadHistory;
1817
1818 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1819 FavoriteDM.ReadFavorite;
1820
1821 SetLinkBar;
1822
1823 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1824 RoundList.LoadRoundBoardFile;
1825 RoundList.LoadRoundThreadFile;
1826
1827 LockWindowUpdate(0);
1828 end;
1829
1830 {!
1831 \todo ?ス?ス?ス?ス IE 7 ?ス?ス?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1832 (IE 7 ?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スM?スR?スi?スr?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス)
1833 ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1834 }
1835 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1836 var
1837 p: TPoint;
1838 s: string;
1839 tmp2: string;
1840 URL: string;
1841 ATitle: Boolean;
1842
1843 threadItem : TThreadItem;
1844 board : TBoard;
1845 Protocol, Host, Path, Document, Port, Bookmark: string;
1846
1847 wkInt: Integer;
1848 wkIntSt: Integer;
1849 wkIntTo: Integer;
1850 ActiveFileName: string;
1851 e: IHTMLElement;
1852 Ext: string;
1853 PathRec: TPathRec;
1854 Text2: string;
1855 begin
1856 // ?スM?スR?スi?スr?ス?ス?ス?ス?スX?スA?ス?ス?スJ?ス[?ス?ス about:blank.. ?ス?ス?スn?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1857 // IE 7 ?ス?ス?ス?ス about:blank.. ?ス?ス?ス?ス?ス?ス?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?ス?ス?ス?ス?ス?ス(?ス?ス?ス?ス?ス?ス?ス?ス)
1858 if Pos('about:..', Text) = 1 then
1859 Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
1860 else
1861 Text2 := Text;
1862 if not( TObject(Sender) is TWebBrowser )then
1863 Exit;
1864 try
1865 try
1866 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1867 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1868 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1869 end;
1870 end;
1871 except
1872 end;
1873 finally
1874 end;
1875 if PreviewTimer.Enabled then
1876 PreviewTimer.Enabled := False;
1877 Application.CancelHint;
1878 try
1879 if GetActiveContent <> nil then
1880 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1881 else
1882 ActiveFileName := '';
1883 except
1884 FActiveContent := nil;
1885 Exit;
1886 end;
1887
1888 StatusBar.Panels[1].Text := Text2;
1889
1890 if FHint <> nil then begin
1891 FHint.ReleaseHandle;
1892 FHint.ClearAllRes;
1893 end;
1894 if FPreviewBrowser <> nil then
1895 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1896
1897 if not GikoSys.Setting.UnActivePopup then
1898 if not GikoForm.Active then
1899 Exit;
1900
1901 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1902 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1903
1904 s := '';
1905 Ext := AnsiLowerCase(ExtractFileExt(Text2));
1906 if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
1907 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1908 if FPreviewBrowser = nil then begin
1909 FPreviewBrowser := TPreviewBrowser.Create(Self);
1910 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1911 TOleControl(FPreviewBrowser).Parent := nil;
1912 end;
1913 FPreviewBrowser.Navigate(BLANK_HTML);//?スO?ス?ス?ス?ス?スv?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スp
1914 FPreviewURL := Text2;
1915 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1916 PreviewTimer.Enabled := True;
1917 end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
1918 if Pos('mailto:', Text2) = 1 then begin
1919 s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
1920 //?スM?スR?スi?スr?スX?ス?ス ?スp?ス[?スg3?ス?ス466?ス?ス?ス?ス?ス?ス?ス?ス
1921 GetCursorPos(p);
1922 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1923 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1924 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1925 if (Assigned(e)) then begin
1926 tmp2 := ZenToHan(e.Get_outerText);
1927 if (GikoSys.IsNumeric(tmp2)) then begin
1928 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1929 wkIntSt := StrToInt64(tmp2);
1930 wkIntTo := StrToInt64(tmp2);
1931 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1932 FHint.PopupType := gptThread;
1933 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1934 end else begin
1935 FHint.PopupType := gptRaw;
1936 FHint.Caption := s;
1937 end;
1938 end;
1939 end else begin
1940 threadItem := GetActiveContent;
1941 URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
1942 PathRec := Gikosys.Parse2chURL2(URL);
1943 if (PathRec.FNoParam) then begin
1944 PathRec.FSt := 1;
1945 PathRec.FTo := 1;
1946 end else begin
1947 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1948 end;
1949 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1950
1951 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1952
1953 URL := GikoSys.GetBrowsableThreadURL( URL );
1954 wkIntSt := PathRec.FSt;
1955 wkIntTo := PathRec.FTo;
1956
1957 if (wkIntSt = 0) and (wkIntTo = 0) then begin
1958 wkIntSt := 1;
1959 wkIntTo := 1;
1960 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1961 wkIntSt := wkIntTo;
1962 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1963 wkIntTo := wkIntSt;
1964 end else if wkIntSt > wkIntTo then begin
1965 wkInt := wkIntTo;
1966 wkIntTo := wkIntSt;
1967 wkIntSt := wkInt;
1968 end;
1969 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1970 ATitle := false
1971 else
1972 ATitle := true;
1973
1974 threadItem := BBSsFindThreadFromURL( URL );
1975
1976 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1977 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1978 if board <> nil then begin
1979 if not board.IsThreadDatRead then
1980 GikoSys.ReadSubjectFile( board );
1981 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1982 end;
1983 end;
1984
1985 if threadItem <> nil then begin
1986 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1987 //URL?ス?ス?ス?ス?ス?ス?ス?ス/?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スp
1988 if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1989 wkIntSt := 1;
1990 wkIntTo := 1;
1991 end;
1992 FHint.PopupType := gptThread;
1993 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1994 end;
1995 end;
1996 end;
1997
1998 if FHint.PopupType = gptRaw then begin
1999 if FHint.Caption <> '' then
2000 ShowTextPopup;
2001 end else begin
2002 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2003 ShowTextPopup;
2004 end;
2005 end;
2006 end;
2007
2008 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2009 var
2010 SysMenu: HMenu;
2011 begin
2012 FEnabledCloseButton := Enabled;
2013 SysMenu := GetSystemMenu(Handle, False);
2014
2015 if Enabled then begin
2016 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2017 end else begin
2018 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2019 end;
2020
2021 DrawMenuBar(Handle);
2022 end;
2023
2024 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2025 var AllowChange: Boolean);
2026 begin
2027 //?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2028 // if FTreeType = gtt2ch then
2029 // FSortIndex := -1;
2030 end;
2031
2032 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2033 Shift: TShiftState);
2034 var
2035 pos : TPoint;
2036 begin
2037 if GetActiveList is TBoard then begin
2038 case Key of
2039 VK_BACK:; // UpFolderButtonClick(Sender);
2040 VK_SPACE: ListDoubleClick(Shift);
2041 VK_RETURN: ListClick;
2042 VK_APPS:
2043 begin
2044 if ListView.Selected <> nil then begin
2045 pos.X := ListView.Column[ 0 ].Width;
2046 pos.Y := ListView.Selected.Top;
2047 end else begin
2048 pos.X := ListView.Left;
2049 pos.Y := ListView.Top;
2050 end;
2051 Windows.ClientToScreen( ListView.Handle, pos );
2052 ListPopupMenu.Popup( pos.X, pos.Y );
2053 end;
2054 end;
2055 end else begin // TBBS, TCategory
2056 case Key of
2057 VK_BACK:; // UpFolderButtonClick(Sender);
2058 VK_SPACE: ListClick;
2059 VK_RETURN: ListDoubleClick(Shift);
2060 VK_APPS:
2061 begin
2062 if ListView.Selected <> nil then begin
2063 pos.X := ListView.Column[ 0 ].Width;
2064 pos.Y := ListView.Selected.Top;
2065 end else begin
2066 pos.X := ListView.Left;
2067 pos.Y := ListView.Top;
2068 end;
2069 Windows.ClientToScreen( ListView.Handle, pos );
2070 ListPopupMenu.Popup( pos.X, pos.Y );
2071 end;
2072 end;
2073 end;
2074 end;
2075
2076 function TGikoForm.GetHttpState: Boolean;
2077 begin
2078 Result := FHttpState;
2079 end;
2080
2081 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2082 Column: TListColumn);
2083 var
2084 id, idx : Integer;
2085 orderList : TList;
2086 vSortIndex : Integer;
2087 vSortOrder : Boolean;
2088 begin
2089 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2090 if TObject( FActiveList ) is TBBS then begin
2091 orderList := GikoSys.Setting.BBSColumnOrder;
2092 vSortIndex := GikoSys.Setting.BBSSortIndex;
2093 vSortOrder := GikoSys.Setting.BBSSortOrder;
2094 end else if TObject( FActiveList ) is TCategory then begin
2095 orderList := GikoSys.Setting.CategoryColumnOrder;
2096 vSortIndex := GikoSys.Setting.CategorySortIndex;
2097 vSortOrder := GikoSys.Setting.CategorySortOrder;
2098 end else if TObject( FActiveList ) is TBoard then begin
2099 orderList := GikoSys.Setting.BoardColumnOrder;
2100 vSortIndex := GikoSys.Setting.BoardSortIndex;
2101 vSortOrder := GikoSys.Setting.BoardSortOrder;
2102 end else
2103 Exit;
2104
2105 id := Integer( orderList[ idx ] );
2106
2107
2108 if vSortIndex = id then
2109 vSortOrder := not vSortOrder
2110 else begin
2111 vSortOrder := id = 0;
2112 end;
2113
2114 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2115 end;
2116
2117 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2118 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2119 var
2120 ARect: TRect;
2121 begin
2122 DefaultDraw := True;
2123 Exit;
2124 DefaultDraw := False;
2125 if (cdsSelected in State) or (cdsHot in State) then begin
2126 Sender.Canvas.Brush.Color := clHighlight;
2127 Sender.Canvas.Font.Color := clHighlightText;
2128 end else begin
2129 Sender.Canvas.Brush.Color := clBtnFace;
2130 Sender.Canvas.Font.Color := clBtnText;
2131 end;
2132 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2133 Sender.Canvas.FillRect(ARect);
2134 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2135 end;
2136
2137 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2138 var
2139 Nodes: TTreeNodes;
2140 i: integer;
2141 begin
2142 Nodes := TreeView.Items;
2143
2144 for i := 0 to Nodes.Count - 1 do begin
2145 if Nodes.Item[i].Data = Data then begin
2146 Result := Nodes.Item[i];
2147 Exit;
2148 end;
2149 end;
2150 Result := nil;
2151 end;
2152
2153 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2154 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2155 Headers: OleVariant; var Cancel: WordBool);
2156 var
2157 sNo: string;
2158 p: TPoint;
2159 const
2160 kMenuName: string = 'menu:';
2161 begin
2162
2163 if Pos(kMenuName, URL) <> 0 then begin
2164 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2165
2166 if not GikoSys.IsNumeric(sNo) then Exit;
2167
2168 Cancel := True;
2169 GetCursorpos(p);
2170 KokoPopupMenu.Tag := StrToInt(sNo);
2171 KokoPopupMenu.Popup(p.x, p.y);
2172 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2173 Cancel := not GikoSys.Setting.OpenMailer;
2174 end;
2175
2176 end;
2177
2178 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2179 const ARect: TRect; var DefaultDraw: Boolean);
2180 var
2181 NodeRect: TRect;
2182 i, j: Integer;
2183 IsBoardNode: Boolean;
2184 Cnt: Integer;
2185 CntText: string;
2186 TextWidth: Integer;
2187 TextRect: TRect;
2188 Board: TBoard;
2189 Category: TCategory;
2190 Bitmap: TBitmap;
2191 NodeWidth: Integer;
2192 begin
2193 DefaultDraw := True;
2194
2195 if FTreeType = gttHistory then Exit;
2196
2197 TreeView.Canvas.Font.Color := clBlue;
2198 IsBoardNode := False;
2199 for i := 0 to TreeView.Items.Count - 1 do begin
2200 Cnt := 0;
2201 if not TreeView.Items[i].IsVisible then
2202 continue;
2203
2204 if TObject(TreeView.Items[i].Data) is TCategory then begin
2205 if TreeView.Items[i].Expanded then
2206 continue;
2207
2208 IsBoardNode := False;
2209 Category := TCategory(TreeView.Items[i].Data);
2210 for j := 0 to Category.Count - 1 do begin
2211 Board := Category.Items[j];
2212 if Board <> nil then begin
2213 if Board.UnRead > 0 then begin
2214 Cnt := 1;
2215 Break;
2216 end;
2217 end;
2218 end;
2219 if Cnt <> 1 then
2220 continue;
2221 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2222 IsBoardNode := True;
2223 Board := TBoard(TreeView.Items[i].Data);
2224
2225 Cnt := Board.UnRead;
2226 if Cnt <= 0 then
2227 continue;
2228 end else
2229 continue;
2230
2231 Bitmap := TBitmap.Create;
2232 try
2233 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2234 Bitmap.Canvas.Font.Style := [fsBold];
2235 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2236 finally
2237 Bitmap.Free;
2238 end;
2239
2240 NodeRect := TreeView.Items[i].DisplayRect(True);
2241
2242 if IsBoardNode then
2243 CntText := '(' + IntToStr(Cnt) + ')'
2244 else if Cnt = 1 then
2245 CntText := '(+)';
2246
2247
2248 TextWidth := TreeView.Canvas.TextWidth(CntText);
2249
2250 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2251 NodeRect.Top,
2252 NodeRect.Left + NodeWidth + TextWidth + 8,
2253 NodeRect.Bottom);
2254 DrawText(TreeView.Canvas.Handle,
2255 PChar(CntText),
2256 -1,
2257 TextRect,
2258 DT_SINGLELINE or DT_VCENTER);
2259 end;
2260 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
2261 end;
2262
2263 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
2264 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
2265 var
2266 Board: TBoard;
2267 Category: TCategory;
2268 i: Integer;
2269 begin
2270 DefaultDraw := True;
2271
2272 if FTreeType = gttHistory then Exit;
2273
2274 TreeView.Canvas.Font.Style := [];
2275 if Node <> nil then begin
2276 if TObject(Node.Data) is TCategory then begin
2277 Category := TCategory(Node.Data);
2278 for i := 0 to Category.Count - 1 do begin
2279 Board := Category.Items[i];
2280 if Board <> nil then begin
2281 if Board.UnRead > 0 then begin
2282 TreeView.Canvas.Font.Style := [fsBold];
2283 Break;
2284 end;
2285 end;
2286 end;
2287 end else if TObject(Node.Data) is TBoard then begin
2288 Board := TBoard(Node.Data);
2289 if Board.UnRead > 0 then
2290 TreeView.Canvas.Font.Style := [fsBold];
2291 end;
2292 end;
2293 end;
2294
2295 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
2296 begin
2297 TreeView.Invalidate;
2298
2299 if TObject(Node.Data) is TBBS then begin
2300 TBBS(Node.Data).NodeExpand := True;
2301 end else if TObject(Node.Data) is TCategory then begin
2302 TCategory(Node.Data).NodeExpand := True;
2303 end else if TObject(Node.Data) is TBoard then begin
2304 TBoard(Node.Data).NodeExpand := True;
2305 end;
2306 end;
2307
2308 procedure TGikoForm.ListViewAllSelect;
2309 begin
2310 ListView.SetFocus;
2311 ListView.SelectAll;
2312 end;
2313 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
2314 begin
2315 AddMessageList(Msg, nil, Icon);
2316 end;
2317 // *************************************************************************
2318 //! ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?スx?ス?ス?スg
2319 // *************************************************************************
2320 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
2321 var
2322 ATitle: string;
2323 s: string;
2324 boardPlugIn : TBoardPlugIn;
2325 i: Integer;
2326 Res : TResRec;
2327 begin
2328 try
2329 if Item.DownType = gdtBoard then
2330 ATitle := Item.Board.Title
2331 else
2332 ATitle := Item.ThreadItem.Title;
2333 if ATitle = '' then
2334 ATitle := GikoSys.GetGikoMessage(gmUnKnown);
2335
2336 if Item.State in [gdsComplete, gdsDiffComplete] then begin
2337 //?ス?ス?ス?ス?スI?ス?ス
2338 if Item.DownType = gdtBoard then begin
2339 //?ス?ス
2340 Item.SaveListFile;
2341 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK);
2342 if GetActiveList = Item.Board then begin
2343 FActiveList := nil;
2344 //?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス
2345 if (GikoSys.Setting.AutoSortThreadList) then begin
2346 GikoSys.Setting.BoardSortIndex := 0;
2347 GikoSys.Setting.BoardSortOrder := True;
2348 end;
2349 Sort.SetSortDate(Now());
2350 SetActiveList(Item.Board);
2351 end;
2352 Item.Board.Modified := True;
2353 Item.Board.IsThreadDatRead := True;
2354 PlaySound('New');
2355 ListView.Refresh;
2356 end else if Item.DownType = gdtThread then begin
2357 //?スX?ス?ス
2358 Item.SaveItemFile;
2359 Item.ThreadItem.NewArrival := True;
2360 //if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2361 if (Item.ThreadItem.ParentBoard.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2362 //boardPlugIn := Item.ThreadItem.BoardPlugIn;
2363 boardPlugIn := Item.ThreadItem.ParentBoard.BoardPlugIn;
2364 THTMLCreate.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 ), @Res);
2365 Item.ThreadItem.Title := Res.FTitle;
2366 ATitle := Item.ThreadItem.Title;
2367 end else if ATitle = '?スi?ス?ス?ス?ス?スs?ス?ス?スj' then begin
2368 THTMLCreate.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1), @Res);
2369 ATitle := Res.FTitle;
2370 end;
2371 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2372 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin
2373 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2374 break;
2375 end;
2376 end;
2377 if GikoSys.Setting.BrowserTabVisible then begin
2378 if GetActiveContent = Item.ThreadItem then
2379 InsertBrowserTab(Item.ThreadItem)
2380 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
2381 InsertBrowserTab(Item.ThreadItem, True)
2382 else
2383 InsertBrowserTab(Item.ThreadItem, False);
2384
2385 end else begin
2386 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
2387 InsertBrowserTab(Item.ThreadItem);
2388 end;
2389
2390 Application.ProcessMessages;
2391
2392 if Item.State = gdsComplete then begin
2393 PlaySound('New');
2394 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK);
2395 //Add by Genyakun
2396 DiffComp := True;
2397 end else begin
2398 PlaySound('NewDiff');
2399 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK);
2400 //Add by Genyakun
2401 DiffComp := True;
2402 end;
2403
2404 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?スO?スO?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2405 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
2406 Item.ThreadItem.Round := False;
2407 //Item.ThreadItem.RoundName := '';
2408 AddMessageList('?ス?ス1000?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス - [' + Item.ThreadItem.Title + ']', nil, gmiOK);
2409 end;
2410 TreeView.Refresh;
2411 //ListView?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス
2412 if (ActiveList <> nil) and (ActiveList is TBoard) then begin
2413 TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
2414 TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
2415 TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
2416 //ListView?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV
2417 case GikoForm.ViewType of
2418 gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
2419 gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
2420 gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
2421 gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
2422 gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
2423 gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
2424 end;
2425 end;
2426 RefreshListView(Item.ThreadItem);
2427 end;
2428
2429 end else if Item.State = gdsNotModify then begin
2430 //?ス?ス?スX?スi?スV
2431 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
2432 //SetContent(Item.ThreadItem);
2433 InsertBrowserTab(Item.ThreadItem);
2434 end;}
2435 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD);
2436 PlaySound('NoChange');
2437 Screen.Cursor := crDefault;
2438 end else if Item.State = gdsAbort then begin
2439 //?ス?ス?スf
2440 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
2441 end else if Item.State = gdsError then begin
2442 //?スG?ス?ス?ス[
2443 s := Item.ErrText;
2444 if s <> '' then
2445 s := ':' + s;
2446 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmError) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG);
2447 // if Item.ResponseCode = 302 then
2448 // AddMessageList('?ス?ス?ス?ス?ス?ス?ス]?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?スs?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB', nil, gmiNG);
2449 PlaySound('Error');
2450 end;
2451 finally
2452 Item.Free;
2453 Dec(FWorkCount);
2454 if FWorkCount < 0 then FWorkCount := 0;
2455 if FWorkCount = 0 then begin
2456 try
2457 Animate.Active := False;
2458 finally
2459 Screen.Cursor := crDefault;
2460 end;
2461 end;
2462
2463 end;
2464 end;
2465
2466 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
2467 begin
2468 // SetProgressValue(Number, 0, AWorkCountMax);
2469 // ProgressBar.Visible := True;
2470 ProgressBar.Position := 0;
2471 ProgressBar.Max := AWorkCountMax;
2472 FDownloadTitle := AWorkTitle;
2473 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?スJ?スn?ス?ス?ス?ス?ス?ス';
2474 FDownloadMax := AWorkCountMax;
2475 end;
2476
2477 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
2478 begin
2479 ProgressBar.Position := 0;
2480 if FDownloadMax <> 0 then
2481 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス';
2482 end;
2483
2484 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
2485 begin
2486 ProgressBar.Position := AWorkCount;
2487 // SetProgressValue(Number, AWorkCount);
2488 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
2489 end;
2490
2491 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
2492 var
2493 ListItem: TListItem;
2494 begin
2495 MessageListView.Items.BeginUpdate;
2496 try
2497 ListItem := MessageListView.Items.Add;
2498 ListItem.Caption := ACaption;
2499 ListItem.Data := AObject;
2500 ListItem.MakeVisible(False);
2501 case Icon of
2502 gmiOK: ListItem.ImageIndex := 0;
2503 gmiSAD: ListItem.ImageIndex := 1;
2504 gmiNG: ListItem.ImageIndex := 2;
2505 gmiWhat: ListItem.ImageIndex := 3;
2506 end;
2507 finally
2508 MessageListView.Items.EndUpdate;
2509 end;
2510 end;
2511
2512
2513 function TGikoForm.InsertBrowserTab(
2514 ThreadItem : TThreadItem;
2515 ActiveTab : Boolean = True
2516 ) : TBrowserRecord;
2517 var
2518 i, j, idx : Integer;
2519 favItem : TFavoriteThreadItem;
2520 newBrowser : TBrowserRecord;
2521 begin
2522
2523 Result := nil;
2524 if Threaditem = nil then Exit;
2525
2526 if ThreadItem.IsLogFile then begin
2527 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?スS?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?スJ?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?スbrowser?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2528 //?ス?ス?ス?ス?スS?ス?ス?ス?ス?ス?スActive?ス?ス?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2529 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
2530 (FActiveContent.Browser <> BrowserNullTab.Browser)then begin
2531 j := FBrowsers.IndexOf(FActiveContent.Browser);
2532 if j = BROWSER_COUNT - 1 then
2533 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2534 end;
2535 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
2536 if not AddHistory( favItem ) then
2537 favItem.Free;
2538
2539 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
2540 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
2541 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
2542 Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] );
2543 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = nil then begin
2544 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2545 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2546 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2547 break;
2548 end;
2549 end;
2550 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2551 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2552 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2553 end;
2554 if ActiveTab then begin
2555 BrowserTab.TabIndex := i;
2556 BrowserTab.OnChange(nil);
2557 BrowserTab.Repaint;
2558 end;
2559 Exit;
2560 end;
2561 end;
2562 end;
2563 idx := BrowserTab.TabIndex;
2564 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
2565 newBrowser := TBrowserRecord.Create;
2566 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2567 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2568 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2569 break;
2570 end;
2571 end;
2572 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2573 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2574 //newBrowser.Browser.Navigate(BLANK_HTML);
2575 newBrowser.thread := ThreadItem;
2576 newBrowser.Repaint := true;
2577 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2578
2579 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2580 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2581 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
2582 end;// else begin
2583 //end;
2584 BrowserTab.Repaint;
2585 if ActiveTab then begin
2586 BrowserTab.TabIndex := 0;
2587 end;
2588
2589 end else begin
2590 newBrowser := TBrowserRecord.Create;
2591 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2592 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2593 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2594 break;
2595 end;
2596 end;
2597 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2598 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2599 //newBrowser.Browser.Navigate(BLANK_HTML);
2600 newBrowser.thread := ThreadItem;
2601 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2602 newBrowser.Repaint := true;
2603
2604 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2605 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2606 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
2607 end;
2608 //end;
2609 BrowserTab.Repaint;
2610 if ActiveTab then begin
2611 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
2612 BrowserTab.TabIndex := 0
2613 else
2614 BrowserTab.TabIndex := i;
2615 end;
2616 end;
2617 Result := newBrowser;
2618 if(ActiveTab) or (idx = -1) then begin
2619 BrowserTab.OnChange(nil);
2620 end;
2621 end else begin
2622 if BrowserNullTab = nil then begin
2623 BrowserNullTab := TBrowserRecord.Create;
2624 BrowserNullTab.Browser := Browser;
2625 end;
2626 // if BrowserNullTab.thread <> ThreadItem then begin
2627 // BrowserNullTab.Movement := '';
2628 // end;
2629 BrowserNullTab.thread := ThreadItem;
2630 Result := BrowserNullTab;
2631 BrowserTab.TabIndex := -1;
2632 SetContent(BrowserNullTab);
2633 end;
2634
2635 if GikoSys.Setting.URLDisplay then
2636 AddressComboBox.Text := ThreadItem.URL;
2637
2638 end;
2639
2640 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
2641 var
2642 BBSID: string;
2643 FileName: string;
2644 sTitle: string;
2645 doc: Variant;
2646 s: string;
2647 i: Integer;
2648 idx: Integer;
2649 ThreadItem: TThreadItem;
2650 Thread: TBrowserRecord;
2651 ThreadTitle, ThreadPTitle: string;
2652 ThreadIsLog, {ThreadUnRead,} ThreadNewArraical: boolean;
2653 begin
2654 Thread := inThread;
2655 idx := BrowserTab.TabIndex;
2656 if (FActiveContent <> nil) and
2657 (FActiveContent.Thread <> Thread.Thread) and
2658 (FActiveContent.Browser <> nil) and
2659 (Assigned(FActiveContent.Browser.Document)) then begin
2660 try
2661 try
2662 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
2663 except
2664 on E: Exception do
2665 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
2666 end;
2667 finally
2668 end;
2669 end;
2670 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
2671 Thread.Browser.Navigate(BLANK_HTML);
2672 BrowserBoardNameLabel.Caption := '';
2673 ItemBoardImage.Picture := nil;
2674 BrowserNameLabel.Caption := '';
2675 ItemImage.Picture := nil;
2676 BrowserNullTab.Thread := nil;
2677 //TOleControl(BrowserNullTab.Browser).Visible := true;
2678 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
2679 FActiveContent := nil;
2680 Exit;
2681 end else if Thread.Browser = nil then begin
2682 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
2683 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2684 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2685 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2686 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
2687 break;
2688 end;
2689 end;
2690 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2691 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2692 end;
2693
2694 ThreadTitle := Thread.Thread.Title;
2695 ThreadPTitle := Thread.Thread.ParentBoard.Title;
2696 //ThreadScrollTop := Thread.Thread.ScrollTop;
2697 ThreadIsLog := Thread.Thread.IsLogFile;
2698 ThreadItem := Thread.Thread;
2699 ThreadNewArraical := Thread.Thread.NewArrival;
2700 //ThreadUnRead := Thread.Thread.UnRead;
2701 BBSID := ThreadItem.ParentBoard.BBSID;
2702 FileName := ThreadItem.FileName;
2703
2704 if GetCapture = ListView.Handle then
2705 ReleaseCapture;
2706
2707 Screen.Cursor := crHourGlass;
2708
2709
2710 try
2711 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
2712 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
2713 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
2714 end;
2715 ShowWindow(Thread.Browser.Handle, SW_SHOW);
2716 if (not Assigned(Thread.Browser.Document)) then begin
2717 Thread.Browser.Navigate('about:blank');
2718 end;
2719 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
2720 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
2721 Application.ProcessMessages;
2722 if idx <> BrowserTab.TabIndex then begin
2723 Exit;
2724 end;
2725 end;
2726
2727 if (Thread <> nil) and (ThreadItem <>nil) then begin
2728 BrowserBoardNameLabel.Caption := ThreadPTitle;
2729 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
2730 BrowserNameLabel.Caption := ThreadTitle;
2731 ItemImage.Picture := nil;
2732 if ThreadIsLog then
2733 if ThreadNewArraical then
2734 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
2735 else
2736 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
2737 else
2738 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
2739
2740 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
2741 BrowserNameLabel.Left := ItemImage.Left + 20;
2742
2743 end;
2744 //ActiveContent?ス@?ス?ス?スX?スV
2745 FActiveContent := Thread;
2746
2747 if not ThreadIsLog then begin
2748 Self.Caption := GikoDataModule.CAPTION_NAME ;
2749 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス?ス?ス?ス
2750 StatusBar.Panels[THREADSIZE_PANEL].Text := '';
2751 try
2752 Thread.Browser.BringToFront;
2753 s := '<HTML><BODY><CENTER>?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス</CENTER></BODY></HTML>';
2754 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
2755 doc.open;
2756 doc.charset := 'Shift_JIS';
2757 doc.Write(s);
2758 doc.Close;
2759 finally
2760
2761 end;
2762 end else begin
2763 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
2764 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス\?ス?ス
2765 StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]);
2766 StatusBar.Panels[THREADSIZE_PANEL].Width :=
2767 Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70);
2768 //Thread.Repaint?ス?ス?スA?スX?スL?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?スAThread?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス
2769 //?スV?スK?ス?スThread?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
2770 if Thread.Repaint then begin
2771 Thread.Repaint := false;
2772
2773 Thread.Browser.OnStatusTextChange := nil;
2774 LockWindowUpdate(Thread.Browser.ParentWindow);
2775 HTMLCreater.CreateHTML2(Thread.Browser, ThreadItem, sTitle);
2776 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
2777 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
2778 end;
2779 end;
2780
2781 RefreshListView(ThreadItem);
2782 finally
2783 Screen.Cursor := crDefault;
2784 end;
2785 end;
2786
2787 function TGikoForm.GetActiveContent: TThreadItem;
2788 begin
2789 try
2790 if FActiveContent <> nil then
2791 Result := FActiveContent.Thread
2792 else
2793 Result := nil;
2794 except
2795 Result := nil;
2796 end;
2797
2798 end;
2799
2800 procedure TGikoForm.SetActiveList(Obj: TObject);
2801 var
2802 idx : Integer;
2803 begin
2804 // if FActiveList <> Obj then begin
2805 FActiveList := Obj;
2806 try
2807 if ListView.Selected <> nil then
2808 idx := ListView.Selected.Index
2809 else
2810 idx := -1;
2811 except
2812 idx := -1;
2813 end;
2814 ListView.Items.Count := 0;
2815 ListView.Items.Clear;
2816 ListView.Selected := nil;
2817 // ListView.Columns.Clear;
2818 if (FActiveContent <> nil) and (FActiveContent.Thread <> nil)
2819 and (FActiveContent.Thread.IsLogFile) then begin
2820 try
2821 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']'
2822 except
2823 on E: Exception do begin
2824 //?スX?ス?ス?ス?ス?ス?スDL?ス?ス?ス?ス?ス?ス?ス?スFActiveContent?ス?ス?ス?ス?ス?スThread?ス?ス
2825 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2826 ReleaseBrowser(FActiveContent);
2827 FActiveContent.Thread := nil;
2828 Self.Caption := GikoDataModule.CAPTION_NAME;
2829 end;
2830 end;
2831 end else
2832 Self.Caption := GikoDataModule.CAPTION_NAME;
2833 //Application.Title := CAPTION_NAME;
2834
2835 // ActiveListColumnSave;
2836
2837 Screen.Cursor := crHourGlass;
2838 try
2839 if Obj is TBBS then begin
2840 TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2841 end else if Obj is TCategory then begin
2842 TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2843 end else if Obj is TBoard then begin
2844 TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2845 end;
2846 finally
2847 Screen.Cursor := crDefault;
2848 end;
2849
2850 if idx >= 0 then begin
2851 if idx >= ListView.Items.Count then
2852 idx := ListView.Items.Count - 1;
2853 ListView.ItemIndex := idx;
2854 ListView.ItemFocused := ListView.Items.Item[ idx ];
2855 end;
2856 // end;
2857 end;
2858
2859
2860 //?ス?ス?ス?ス?スq?ス?ス?ス?ス?スL?ス?ス?ス?ス
2861 //?ス?ス?ス?ス?ス?ス?ス?スinterface?ス?ス?スg?ス?ス
2862 function TGikoForm.GetActiveList: TObject;
2863 begin
2864 Result := FActiveList;
2865 end;
2866
2867 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
2868 begin
2869 SetListViewType(AViewType, '', False);
2870 end;
2871
2872 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
2873 var
2874 Board: TBoard;
2875 i: Integer;
2876 begin
2877 for i := Length( BBSs ) - 1 downto 0 do begin
2878 BBSs[i].SelectText := SelectText;
2879 BBSs[i].KubetsuChk := KubetsuChk;
2880 end;
2881 ViewType := AViewType;
2882 if ActiveList is TBoard then begin
2883 Board := TBoard(ActiveList);
2884 case ViewType of
2885 //gvtAll: ListView.Items.Count := Board.Count;
2886 gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
2887 gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
2888 gvtArch: Board.ArchiveThreadCount := Board.GetArchiveThreadCount;
2889 gvtLive: Board.LiveThreadCount := Board.GetLiveThreadCount;
2890 gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
2891
2892 end;
2893
2894 SetActiveList(Board);
2895 end;
2896 end;
2897
2898 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
2899 const ARect: TRect; var DefaultDraw: Boolean);
2900 var
2901 s: string;
2902 p: TPoint;
2903 // Board: TBoard;
2904 begin
2905 if ListView.Items.Count = 0 then begin
2906 DefaultDraw := true;
2907 ListView.Canvas.Brush.Color := ListView.Color;
2908 ListView.Canvas.FillRect(ARect);
2909