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.617 - (show annotations) (download) (as text)
Sat Aug 12 22:19:35 2006 UTC (17 years, 8 months ago) by h677
Branch: MAIN
CVS Tags: v1_54_0_678
Changes since 1.616: +19 -1 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 //! ?ス?ス?スX?スG?スf?スB?ス^?ス?ス?ス\?ス?ス?ス?ス?ス\?ス?ス
675 procedure ShowEditors(nCmdShow: Integer);
676 protected
677 procedure CreateParams(var Params: TCreateParams); override;
678 procedure WndProc(var Message: TMessage); override;
679 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
680 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
681 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
682
683 public
684 { Public ?ス?ス?ス?ス }
685 LastRoundTime: TDateTime;
686 BrowserNullTab: TBrowserRecord;
687 FControlThread: TThreadControl;
688 FIconData : TNotifyIconData;
689 procedure MoveToURL(const inURL: string);
690 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
691 procedure ReloadBBS;
692 function GetHttpState: Boolean;
693 procedure SetEnabledCloseButton(Enabled: Boolean);
694 function GetTreeNode(Data: TObject): TTreeNode;
695 procedure ListViewAllSelect;
696 property ListStyle: TViewStyle read FListStyle write FListStyle;
697 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
698 property ViewType: TGikoViewType read FViewType write FViewType;
699 property NameCookie: string read FNameCookie write FNameCookie;
700 property MailCookie: string read FMailCookie write FMailCookie;
701 property ClickNode: TTreeNode read FClickNode write FClickNode;
702 property TreeType: TGikoTreeType read FTreeType write FTreeType;
703 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
704 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
705 property SelectResWord : string read FSelectResWord write FSelectResWord;
706 property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
707 property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
708 property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
709 property ToolBarSettingSender : TToolBarSettingSenderType
710 read FToolBarSettingSender write FToolBarSettingSender;
711 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
712 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
713 property WorkCount: Integer read FWorkCount write FWorkCount;
714 procedure SetContent(inThread: TBrowserRecord);
715 function GetActiveContent: TThreadItem;
716 function GetActiveList: TObject;
717
718 procedure SetListViewType(AViewType: TGikoViewType); overload;
719 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
720 procedure PlaySound(SoundEventName: string);
721 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
722 procedure ClearHistory;
723 procedure SaveHistory;
724 procedure LoadHistory;
725 procedure ShowBBSTree( inBBS : TBBS );
726 procedure ShowBBSTreeOld( inBBS : TBBS );
727 procedure ShowHistoryTree;
728 procedure SetHistoryTreeNode;
729 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
730 procedure SetBrowserTabState;
731 procedure SetToolBarPopup;
732 procedure ShowFavoriteAddDialog( Item : TObject );
733 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
734 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
735 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
736 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
737 property OddColor : TColor read FOddColor write FOddColor;
738 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
739 procedure OnPlugInMenuItem( Sender : TObject );
740 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
741 /// ListView ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スu?ス?ス?ス?ス?ス?ス KuroutSetting?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
742 procedure ActiveListColumnSave;
743 procedure SetActiveList(Obj: TObject);
744 property ActiveList: TObject read GetActiveList write SetActiveList;
745 /// CoolBar ?ス?ス?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス
746 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
747 //?ス?ス?ス?スID?ス?ス?ス?ス?ス?ス?ス`?ス?ス
748 procedure IndividualAbonID(Atype : Integer);
749 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス`?ス?ス
750 procedure IndividualAbon(Atag, Atype : Integer);
751 //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス`?ス?ス true:?スS?ス?ス?ス?ス?ス^?スu false:?スA?スN?スe?スB?スu?ス?ス?ス^?スu?ス?ス?ス?ス
752 procedure RepaintAllTabsBrowser();
753 //?ス?ス?ス?ス?スN?スo?ス[?ス?ス?ス?ス
754 procedure SetLinkBar;
755 procedure FavoriteBrowseFolder( node: TTreeNode );
756 //?スX?ス?ス?スb?スh?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
757 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
758 //?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
759 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
760 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
761 procedure DeleteHistory( threadItem: TThreadItem );
762 //?ス^?スu?ス?ス?ス?ス?ス?ス ?スX?ス?ス?スb?スh?スw?ス?ス
763 procedure DeleteTab(ThreadItem: TThreadItem); overload;
764 //?ス^?スu?ス?ス?ス?ス?ス?ス ?スu?ス?ス?スE?スU?ス?ス?スR?ス[?スh?スi?ス^?スu?スj?スw?ス?ス
765 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
766 // ?ス^?スu?ス?ス?ス?ス?スi?ス?ス?ス?ス?ス?ス?スj
767 procedure DeleteTab(index, selectIndex: Integer); overload;
768 //?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?スX?スN?ス?ス?ス[?ス?ス
769 procedure BrowserMovement(const AName: string);
770 //Application?ス?スMainForm?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
771 function GetMainForm(): TComponent;
772 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
773 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?スn
774 procedure OnGestureStart(Sender: TObject);
775 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?ス?ス
776 procedure OnGestureMove(Sender: TObject);
777 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スI?ス?ス
778 procedure OnGestureEnd(Sender: TObject);
779 /// ?スo?ス?ス?スh?ス?ス?ス?ス?ス?ス?スv?スZ?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
780 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
781 //ListView?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
782 procedure SelectListItem(List: TList);
783 //?スw?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スR?スs?ス[?ス?ス?ス?ス
784 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
785 //
786 procedure ModifySelectList;
787 //
788 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
789 //
790 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
791 //
792 procedure SetSelectRoundName(Sender: TObject);
793 //
794 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
795 //
796 function WebBrowserClick(Sender: TObject): WordBool;
797 //! ?スc?ス[?ス?ス?スo?ス[?ス?ス?スX?ス?ス?スi?ス?ス?ス?ス?スR?ス?ス?ス{?ス{?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
798 procedure SetSelectComboBox();
799
800 //! ?ス^?スX?スN?スg?ス?ス?スC?ス?ス?スi?ス[?ス?ス?ス?ス?スA?スC?スR?ス?ス?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
801 procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010;
802 //! ?ス^?スX?スN?スg?ス?ス?スC?ス?ス?スA?スC?スR?ス?ス?スo?ス^?ス?ス?スt?スH?ス[?ス?ス?スB?ス?ス
803 procedure StoredTaskTray;
804 published
805 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
806 end;
807
808 TFavoriteMenuItem = class(TMenuItem)
809 private
810 FData : Pointer;
811 public
812 property Data: Pointer read FData write FData;
813 end;
814
815 TBBSMenuItem = class(TMenuItem)
816 private
817 FData : Pointer;
818 public
819 property Data: Pointer read FData write FData;
820 end;
821
822 TLinkToolButton = class(TToolButton)
823 private
824 FData : Pointer;
825 public
826 property Data: Pointer read FData write FData;
827 end;
828
829 var
830 GikoForm: TGikoForm;
831
832 implementation
833
834 uses
835 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
836 YofUtils, ToolBarUtil, ToolBarSetting,
837 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
838 FavoriteArrange, AddressHistory, Preview, Gesture,
839 About, Option, Round, Splash, Sort, ListSelect, Imm,
840 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
841 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
842 InputAssistDataModule;
843
844 const
845 BLANK_HTML: string = 'about:blank';
846 BROWSER_COUNT = 5; //?スu?ス?ス?スE?スU?ス?ス?ス?ス
847 //D&D?ス?ス?スl
848 DandD_THRESHOLD = 5; //D&D?ス?ス?ス?ス?スl?スipixcel)
849 //?スv?ス?ス?スr?ス?ス?ス[?スt?ス@?スC?ス?ス?ス?ス
850 HTML_FILE_NAME = 'temp_preview.html';
851 ITEM_ICON_THREADLOG1 = 6; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
852 ITEM_ICON_THREADLOG2 = 7; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
853 //?ス?ス?スb?スZ?ス[?スWID
854 USER_TREECLICK = WM_USER + 2000;
855 USER_RESIZED = WM_USER + 2001;
856 USER_MINIMIZED = WM_USER + 2002;
857 USER_SETLINKBAR = WM_USER + 2003;
858 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
859 USER_TASKTRAY = WM_USER + 2010;
860 {$R *.DFM}
861
862 procedure TGikoForm.CreateParams(var Params: TCreateParams);
863 begin
864 inherited;
865 if FormStyle in [fsNormal, fsStayOnTop] then begin
866 if BorderStyle in [bsSingle, bsSizeable] then begin
867 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
868 Params.WndParent := 0;
869 end;
870 end;
871 end;
872
873 procedure TGikoForm.FormCreate(Sender: TObject);
874 const
875 TVS_NOTOOLTIPS = $0080;
876 var
877 FileName: string;
878 Style: DWORD;
879 msg: string;
880 i: Integer;
881 wp: TWindowPlacement;
882 begin
883 {$IFDEF DEBUG}
884 AllocConsole;
885 Writeln('============================================================');
886 Writeln(' ?スM?スR?スi?スr?スf?スo?スb?スO ?スR?ス?ス?ス\?ス[?ス?ス');
887 Writeln('');
888 Writeln(' ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB');
889 Writeln(' ?スI?ス?ス?ス?ス?ス?ス?スA?スM?スR?スi?スr?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス');
890 Writeln('============================================================');
891 {$ENDIF}
892 //try
893 Sort.SetSortDate(Now());
894
895 FTreeType := gttNone;
896 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
897 FStartUp := true;
898 Application.HookMainWindow(Hook);
899 FIsIgnoreResize := rtResizing;
900 //ActionList?ス?スGuoupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA0?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?スB
901 //(?スN?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?スDown?スv?ス?ス?スp?スe?スB?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス)
902 //?ス?ス?ス?ス?ス?ス?ス?スSet?ス`?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAAction?ス?スChecked?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI
903 GetGroupIndex(GikoDM.GikoFormActionList);
904 FSearchDialog := nil;
905 CreateBrowsers(BROWSER_COUNT);
906 FIconData.uID := 0;
907
908 //?ス?ス?スj?ス?ス?ス[?スt?スH?ス?ス?スg
909 SetMenuFont;
910
911 //?ス?ス?ス?ス?スJ?ス[?ス\?ス?ス
912 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
913
914 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
915 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
916
917 EnabledCloseButton := True;
918
919 //?ス?ス?スX?スg?スX?ス^?スC?ス?ス
920 ListView.ViewStyle := GikoSys.Setting.ListStyle;
921
922 //?スA?スj?ス?ス?スp?スl?ス?ス?ス?ス?スu
923 AnimePanel.Top := 0;
924 AnimePanel.Left := 0;
925
926 //?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
927
928 //?スL?ス?ス?スr?スl?スb?スg
929 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
930
931 //?ス?ス?スb?スZ?ス[?スW?スo?ス[
932 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
933 GikoDM.MsgBarVisibleActionExecute(nil);
934 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
935
936 //?スX?スe?ス[?ス^?スX?スo?ス[
937 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
938 GikoDM.StatusBarVisibleActionExecute(nil);
939
940 //?スt?スH?ス?ス?スg?スE?スF?ス?ス?ス?ス
941 TreeView.Items.BeginUpdate;
942 FavoriteTreeView.Items.BeginUpdate;
943 ListView.Items.BeginUpdate;
944 try
945 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
946 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
947 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
948 TreeView.Color := GikoSys.Setting.CabinetBackColor;
949 FavoriteTreeView.Font.Assign(TreeView.Font);
950 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
951
952 ListView.Font.Name := GikoSys.Setting.ListFontName;
953 ListView.Font.Size := GikoSys.Setting.ListFontSize;
954 ListView.Font.Color := GikoSys.Setting.ListFontColor;
955 ListView.Font.Style := [];
956 if GikoSys.Setting.ListFontBold then
957 ListView.Font.Style := [fsbold];
958 if GikoSys.Setting.ListFontItalic then
959 ListView.Font.Style := ListView.Font.Style + [fsitalic];
960
961 ListViewBackGroundColor := clWhite; // ?スf?スt?スH?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
962 ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // ?ス?ス?ス[?スU?ス?ス?ス`?ス?ス?ス?ス?スX
963 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
964 FOddColor := GikoSys.Setting.OddColor;
965
966 finally
967 TreeView.Items.EndUpdate;
968 FavoriteTreeView.Items.EndUpdate;
969 ListView.Items.EndUpdate;
970 end;
971 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
972 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
973
974 //?ス~?ス?ス?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
975 GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
976
977 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
978 FResRangeMenuSelect := GikoSys.ResRange;
979 case GikoSys.ResRange of
980 Ord( grrAll ):
981 begin
982 GikoDM.AllResAction.Execute;
983 end;
984 Ord( grrSelect ):
985 begin
986 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
987 GikoDM.SelectResAction.Checked := True;
988 end;
989 else
990 case FResRangeMenuSelect of
991 Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
992 Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
993 100: GikoDM.OnlyAHundredResAction.Checked := True;
994 end;
995 end;
996
997 // ?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス
998 case GikoSys.Setting.ThreadRange of
999 gtrAll:
1000 begin
1001 GikoDM.AllItemAction.Checked := True;
1002 ViewType := gvtAll;
1003 end;
1004 gtrLog:
1005 begin
1006 GikoDM.LogItemAction.Checked := True;
1007 ViewType := gvtLog;
1008 end;
1009 gtrNew:
1010 begin
1011 GikoDM.NewItemAction.Checked := True;
1012 ViewType := gvtNew;
1013 end;
1014 gtrLive:
1015 begin
1016 GikoDM.LiveItemAction.Checked := True;
1017 ViewType := gvtLive;
1018 end;
1019 gtrArch:
1020 begin
1021 GikoDM.ArchiveItemAction.Checked := True;
1022 ViewType := gvtArch;
1023 end;
1024 end;
1025
1026
1027 //?スu?ス?ス?スE?スU?ス^?スu?スt?スH?ス?ス?スg
1028 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1029 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1030 BrowserTab.Font.Style := [];
1031 if GikoSys.Setting.BrowserTabFontBold then
1032 BrowserTab.Font.Style := [fsBold];
1033 if GikoSys.Setting.BrowserTabFontItalic then
1034 BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1035 BrowserTab.DoubleBuffered := True;
1036 FDragWFirst := false;
1037 SetContent(BrowserNullTab); //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス\?ス?ス
1038
1039 //?スu?ス?ス?スE?スU?ス^?スu
1040 GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1041
1042 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1043 GikoDM.BrowserTabTopAction.Checked := True;
1044 end else begin
1045 GikoDM.BrowserTabBottomAction.Checked := True;
1046 end;
1047
1048 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1049 GikoDM.BrowserTabTabStyleAction.Checked := True;
1050 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1051 GikoDM.BrowserTabButtonStyleAction.Checked := True;
1052 end else begin
1053 GikoDM.BrowserTabFlatStyleAction.Checked := True;
1054 end;
1055
1056 //?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス?ス?ス
1057 ProgressBar.Parent := StatusBar;
1058 ProgressBar.Top := 2;
1059 ProgressBar.Left := 0;
1060 ProgressBar.Width := StatusBar.Panels[0].Width;
1061 ProgressBar.Height := StatusBar.Height - 2;
1062 ProgressBar.Position := 0;
1063
1064 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1065 InitializeBoardPlugIns;
1066
1067 // ?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス(ReadFavorite ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1068 GikoSys.ListBoardFile;
1069 //?ス@?スA?ス?ス?スN?ス?ス?ス?ス?ス?ス?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス
1070 try
1071 // ?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス
1072 if (SplashWindow <> nil) then begin
1073 SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1074 end;
1075 except
1076 end;
1077 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1078 for i := Length(BBSs) - 1 downto 0 do begin
1079 if not BBSs[i].IsBoardFileRead then
1080 GikoSys.ReadBoardFile(BBSs[i]);
1081
1082 if SplashWindow <> nil then begin
1083 SplashWindow.ProgressBar.StepBy(20);
1084 SplashWindow.Update;
1085 end;
1086 end;
1087
1088 //?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス
1089 RoundList := TRoundList.Create;
1090 RoundList.LoadRoundBoardFile;
1091 RoundList.LoadRoundThreadFile;
1092
1093 //TreeView?ス?ス?ス?ス?ス?ス?スL?ス?スToolTip?ス?ス?ス?ス?ス\?ス?ス
1094 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1095 Style := Style or TVS_NOTOOLTIPS;
1096 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1097
1098 // ?スc?ス?ス?ス[?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1099 TreeView.Align := alClient;
1100 FavoriteTreeView.Align := alClient;
1101 FavoriteTreeView.Visible := False;
1102
1103 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1104 SetBBSMenu;
1105
1106 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1107 wp.length := sizeof(wp);
1108 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1109 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1110 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1111 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1112 wp.showCmd := SW_HIDE;
1113 SetWindowPlacement(Handle, @wp);
1114 //Self.Update;
1115
1116 if GikoSys.Setting.WindowMax then
1117 WindowState := wsMaximized;
1118
1119 //?スM?スR?スA?スj?ス?ス
1120 try
1121 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1122 if FileExists(FileName) then
1123 Animate.FileName := FileName;
1124 except
1125 end;
1126
1127 //?スN?スb?スL?ス[
1128 FNameCookie := '';
1129 FMailCookie := '';
1130
1131 //?スu?ス?ス?スE?スU?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1132 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1133 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1134
1135
1136 // ?スq?スX?スg?ス?ス?ス?ス?スX?スg(LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1137 FHistoryList := TList.Create;
1138
1139 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1140 LoadHistory;
1141
1142 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1143 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1144 FavoriteDM.ReadFavorite;
1145
1146 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1147 GikoDM.ArrangeAction.Execute;
1148
1149 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1150 case GikoSys.Setting.ListWidthState of
1151 glsMax: begin
1152 ViewPanel.Width := 1;
1153 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1154 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1155 end;
1156 glsMin: begin
1157 ViewPanel.Width := GikoSys.Setting.ListWidth;
1158 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1159 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1160 end;
1161 else begin
1162 ViewPanel.Width := GikoSys.Setting.ListWidth;
1163 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1164 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1165 end;
1166 end;
1167 end else begin
1168 case GikoSys.Setting.ListHeightState of
1169 glsMax: begin
1170 ViewPanel.Height := 1;
1171 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1172 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1173 end;
1174 glsMin: begin
1175 ViewPanel.Height := GikoSys.Setting.ListHeight;
1176 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1177 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1178 end;
1179 else begin
1180 ViewPanel.Height := GikoSys.Setting.ListHeight;
1181 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1182 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1183 end;
1184 end;
1185 end;
1186
1187 //?ス_?スE?ス?ス?ス?ス?ス[?スh?スI?スu?スW?スF?スN?スg
1188 CreateControlThread();
1189
1190 // ?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1191 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1192
1193 //?スu?ス?ス?スE?スU?ス^?スu?ス?ス?ス?ス
1194 SetBrowserTabState;
1195
1196 BrowserBoardNameLabel.Caption := '';
1197 BrowserNameLabel.Caption := '';
1198 FWorkCount := 0;
1199
1200 FTabHintIndex := -1;
1201
1202 //?スc?ス[?ス?ス?スo?ス[Wrapable
1203 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1204 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1205
1206 MakeDefaultINIFile();
1207 //?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1208 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1209 ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1210 ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1211 SetToolBarPopup;
1212
1213 //ListToolBar?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スi?ス?ス?ス?スComboBox?ス?ス?スz?スu
1214 SetSelectComboBox();
1215
1216 //?スA?スh?ス?ス?スX?スo?ス[
1217 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1218
1219 //?ス?ス?ス?ス?スN?スo?ス[
1220 SetLinkBar;
1221 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1222
1223 //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス\?ス?ス
1224 if not FileExists(GikoSys.GetBoardFileName) then begin
1225 msg := '?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?スM?スR?スi?スr?ス?ス?ス?ス?ス?ス?ス?ス?スg?スp?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス' + #13#10#13#10
1226 + '?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スQ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス' + #13#10
1227 + '?ス?ス?ス?ス?スo?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スX?スV?スv?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
1228 MsgBox(SplashWindow.Handle, msg, '?スM?スR?スi?スr', MB_OK or MB_ICONINFORMATION);
1229 GikoDM.NewBoardAction.Execute;
1230 end;
1231
1232 //?スL?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1233 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1234
1235 //?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1236 // FLastRoundTime := 0;
1237
1238 //ResHint
1239 FHint := TResPopup.Create(Self);
1240
1241 ListView.OnData := TListViewUtils.ListViewData;
1242
1243 // ?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?ス?ス?ス?ス?ス?ス
1244 CabinetVisible( False );
1245 if GikoSys.Setting.CabinetVisible then begin
1246 i := CabinetSelectPopupMenu.Items.Count - 1;
1247 if GikoSys.Setting.CabinetIndex = i - 1 then
1248 GikoDM.CabinetHistoryAction.Execute
1249 else if GikoSys.Setting.CabinetIndex = i then
1250 GikoDM.CabinetFavoriteAction.Execute
1251 else begin
1252 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1253 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1254 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス 2
1255 FIsIgnoreResize := rtResizing;
1256 GikoDM.CabinetBBSAction.Execute;
1257 end;
1258 end else begin
1259 ShowBBSTreeOld( BBSs[ 0 ] );
1260 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1261 end;
1262
1263 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スJ?ス?ス?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?スj
1264 for i := 1 to ParamCount do begin
1265 MoveToURL(ParamStr(i));
1266 end;
1267
1268 GikoDM.RepaintStatusBar;
1269 StatusBarResize(Sender);
1270
1271 dummy1.Caption := ItemReservPMenu.Caption;
1272 dummy1.Hint := ItemReservPMenu.Hint;
1273
1274 {$IFDEF SPAM_FILTER_ENABLED}
1275 // ?スX?スp?ス?ス?スt?スB?ス?ス?ス^?スw?スK?ス?ス?ス?ス
1276 GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1277 {$ENDIF}
1278
1279 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[
1280 MouseGesture := TMouseGesture.Create;
1281 GikoSys.Setting.Gestures.LoadGesture(
1282 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1283 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1284 MouseGesture.OnGestureStart := OnGestureStart;
1285 MouseGesture.OnGestureMove := OnGestureMove;
1286 MouseGesture.OnGestureEnd := OnGestureEnd;
1287 if GikoSys.Setting.GestureEnabled then
1288 MouseGesture.SetHook( Handle );
1289
1290 //2ch?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス
1291 GikoSys.SetGikoMessage;
1292
1293 //?スI?ス[?スg?ス?ス?スO?スC?ス?ス
1294 if GikoSys.Setting.AutoLogin then
1295 GikoDM.LoginAction.Execute;
1296
1297 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1298
1299 //?スL?ス?ス?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1300 FavoriteAddToolButton.Caption := '?ス?ス?ス?ス...';
1301 AntiIndivAbonMenuItem.Caption := '?ス?ス?ス?ス?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス';
1302
1303 //?ス?ス?ス?ス?スA?スV?スX?スg?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス
1304 InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1305
1306 end;
1307
1308 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1309 procedure TGikoForm.SaveCoolBarSettings;
1310 begin
1311
1312 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1313 Exit;
1314 SaveMainCoolBarSettings;
1315 SaveBoardCoolBarSettings;
1316 SaveBrowserCoolBarSettings;
1317
1318 end;
1319 procedure TGikoForm.SaveMainCoolBarSettings;
1320 var
1321 i : Integer;
1322 CoolSet : TCoolSet;
1323 begin
1324 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1325 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1326 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1327 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1328 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1329 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1330 end;
1331 end;
1332 procedure TGikoForm.SaveBoardCoolBarSettings;
1333 var
1334 i : Integer;
1335 CoolSet : TCoolSet;
1336 begin
1337 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1338 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1339 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1340 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1341 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1342 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1343 end;
1344 end;
1345 procedure TGikoForm.SaveBrowserCoolBarSettings;
1346 var
1347 i : Integer;
1348 CoolSet : TCoolSet;
1349 begin
1350 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1351 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1352 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1353 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1354 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1355 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1356 end;
1357 end;
1358 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1359 procedure TGikoForm.LoadCoolBarSettings;
1360 var
1361 i : Integer;
1362 CoolSet : TCoolSet;
1363 begin
1364
1365 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1366 MainCoolBar.Bands.BeginUpdate;
1367 try
1368 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1369 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1370 CoolSet := GikoSys.Setting.MainCoolSet[i];
1371 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1372 FIsIgnoreResize := rtNone;
1373 SaveCoolBarSettings;
1374 Exit;
1375 end;
1376 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1377 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1378 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1379 end;
1380 finally
1381 MainCoolBar.Bands.EndUpdate;
1382 end;
1383
1384 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1385 ListCoolBar.Bands.BeginUpdate;
1386 try
1387 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1388 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1389 CoolSet := GikoSys.Setting.ListCoolSet[i];
1390 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1391 FIsIgnoreResize := rtNone;
1392 SaveCoolBarSettings;
1393 Exit;
1394 end;
1395 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1396 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1397 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1398 end;
1399 finally
1400 ListCoolBar.Bands.EndUpdate;
1401 end;
1402
1403 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1404 BrowserCoolBar.Bands.BeginUpdate;
1405 try
1406 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1407 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1408 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1409 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1410 FIsIgnoreResize := rtNone;
1411 SaveCoolBarSettings;
1412 Exit;
1413 end;
1414 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1415 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1416 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1417 end;
1418 finally
1419 BrowserCoolBar.Bands.EndUpdate;
1420 end;
1421
1422 end;
1423 //
1424 procedure TGikoForm.FormShow(Sender: TObject);
1425 begin
1426 if FStartUp then begin
1427 ShowWindow(Application.Handle, SW_HIDE);
1428
1429 //FormCreate?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1430 //?スc?ス[?ス?ス?スo?ス[?ス\?ス?ス
1431 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1432 GikoDM.StdToolBarVisibleActionExecute( nil );
1433 GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1434 GikoDM.AddressBarVisibleActionExecute( nil );
1435 GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1436 GikoDM.LinkBarVisibleActionExecute( nil );
1437 GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1438 GikoDM.ListToolBarVisibleActionExecute( nil );
1439 GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1440 GikoDM.ListNameBarVisibleActionExecute( nil );
1441 GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1442 GikoDM.BrowserToolBarVisibleActionExecute( nil );
1443 GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1444 GikoDM.BrowserNameBarVisibleActionExecute( nil );
1445
1446 // CoolBar ?ス?ス?ス?ス
1447 LoadCoolBarSettings;
1448
1449 //?スd?スv?ス@?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1450 // ResetBandInfo( ListCoolBar, ListToolBar );
1451 FIsIgnoreResize := rtNone;
1452
1453 //FormCrete?ス?ス?ス?ス?ス?ス?ス?ス?スB
1454 if GikoSys.Setting.TabAutoLoadSave then begin
1455 GikoDM.TabsOpenAction.Tag := 1;
1456 GikoDM.TabsOpenAction.Execute;
1457 GikoDM.TabsOpenAction.Tag := 0;
1458 end;
1459
1460 //ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1461 SetGroupIndex(GikoDM.GikoFormActionList);
1462
1463 FStartUp := false;
1464 end;
1465 end;
1466
1467 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1468 begin
1469 // if GikoForm.WindowState <> wsMinimized then
1470 // SaveCoolBarSettings;
1471 CanClose := True;
1472 if ( GikoSys.Setting.ShowDialogForEnd ) and
1473 (MessageDlg('?スM?スR?スi?スr?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1474 CanClose := false;
1475 Exit;
1476 end;
1477
1478 if GikoSys.Setting.TabAutoLoadSave then begin
1479 GikoDM.TabsSaveAction.Execute;
1480 end;
1481
1482 if (SearchDialog <> nil) then begin
1483 if (SearchDialog.Visible) then begin
1484 SearchDialog.Close;
1485 try
1486 SearchDialog.Release;
1487 except
1488 end;
1489 SearchDialog := nil;
1490 end;
1491 end;
1492
1493 //?スX?スN?ス?ス?ス[?ス?ス?ス?ス?ス?ス?スS?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?スAEditorForm?ス?ス?ス?ス?ス?ス?ス?ス
1494 GikoDM.CloseAllEditorAction.Execute;
1495
1496 Application.UnhookMainWindow(Hook);
1497 Application.Terminate;
1498 end;
1499
1500 procedure TGikoForm.FormDestroy(Sender: TObject);
1501 var
1502 i : Integer;
1503 // CoolSet: TCoolSet;
1504 wp : TWindowPlacement;
1505 tmpBool : Boolean;
1506 begin
1507 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?ス?ス
1508 try
1509 MouseGesture.UnHook;
1510 except
1511 end;
1512 try
1513 ActiveListColumnSave;
1514 except
1515 end;
1516 try
1517 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1518 wp.length := sizeof(wp);
1519 GetWindowPlacement(Handle, @wp);
1520 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1521 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1522 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1523 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1524 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1525
1526 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1527 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1528 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1529 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1530 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1531 if GikoDM.ArrangeAction.Checked then
1532 GikoSys.Setting.ListOrientation := gloVertical
1533 else
1534 GikoSys.Setting.ListOrientation := gloHorizontal;
1535 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1536 except
1537 end;
1538
1539 try
1540 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
1541 if not GikoSys.Setting.ResRangeHold then
1542 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1543 except
1544 end;
1545 if WindowState <> wsNormal then
1546 WindowState := wsNormal;
1547 SaveCoolBarSettings;
1548 try
1549 GikoSys.Setting.WriteWindowSettingFile;
1550 GikoSys.Setting.WriteNameMailSettingFile;
1551 except
1552 end;
1553 // ?ス?ス?スA?ス?ス?ス^?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?スA?スE?スB?ス?ス?スh?スE?スT?スC?スY?ス?ス CoolBar ?ス?ス?ス?ス
1554 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スl?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1555
1556 // ?ス?スFormDestroy?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スB?スi?ス?ス?ス?ス?ス?ス?ス@2004/04/09?スj
1557 // CoolBar ?ス?ス?ス?ス
1558 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1559
1560 //?ス?ス?ス?ス?スA?スV?スX?スg?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1561 InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1562
1563 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1564 try
1565 //FavoriteDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1566 FavoriteDM.WriteFavorite;
1567 FavoriteDM.Clear;
1568 except
1569 end;
1570 LockWindowUpdate(Self.Handle);
1571 try
1572 //?ス^?スu?スN?ス?ス?ス[?スY
1573 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1574 GikoSys.Setting.ShowDialogForAllTabClose := false;
1575 GikoDM.AllTabCloseAction.Execute;
1576 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1577 except
1578 end;
1579 try
1580 for i := FBrowsers.Count - 1 downto 0 do begin
1581 TWebBrowser(FBrowsers[i]).Free;
1582 end;
1583 FBrowsers.Clear;
1584 FBrowsers.Capacity := 0;
1585 finally
1586 FBrowsers.Free;
1587 end;
1588 try
1589 if BrowserNullTab <> nil then begin
1590 BrowserNullTab.Browser := nil; {*BrowserNullTab?ス?スBrowser?ス?ス?ス?ス?スv?ス?ス?ス?ス?ス\?ス?ス?スt?ス?ス?ス?ス?ス?ス?スz
1591 *?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFree?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1592 *}
1593 BrowserNullTab.Free;
1594 end;
1595 except
1596 end;
1597
1598 try
1599 TreeView.Items.BeginUpdate;
1600 TreeView.Items.GetFirstNode.Free;
1601 TreeView.Items.Clear;
1602 TreeView.Items.EndUpdate;
1603 except
1604 end;
1605
1606 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1607 try
1608 //AddressHistoryDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スB
1609 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1610 except
1611 end;
1612
1613 //?スq?スX?スg?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1614 try
1615 SaveHistory;
1616 except
1617 end;
1618 try
1619 try
1620 ClearHistory;
1621 except
1622 end;
1623 finally
1624 FHistoryList.Free;
1625 end;
1626
1627 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス&?スj?ス?ス
1628 try
1629 RoundList.SaveRoundFile;
1630 except
1631 end;
1632 try
1633 try
1634 RoundList.Clear;
1635 except
1636 end;
1637 finally
1638 RoundList.Free;
1639 end;
1640
1641 try
1642 try
1643 FControlThread.Terminate;
1644 FControlThread.WaitFor;
1645 except
1646 end;
1647 finally
1648 FControlThread.Free;
1649 end;
1650 // ?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス?ス[?ス?ス?スJ?ス?ス?ス?ス?ス?ス
1651 for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
1652 GikoForm.PlugInMenu.items[i].Free;
1653 end;
1654 GikoForm.PlugInMenu.Clear;
1655
1656
1657 // TBBS ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス TCategory, TBoard, TThreadItem ?ス?ス?ス?ス?ス?ス?ス?ス?スJ?ス?ス?ス?ス?ス?ス
1658 // TBoard, TThreadItem ?ス?ス?スf?スX?スg?ス?ス?スN?ス^?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?スj?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス?ス?ス
1659 // BoardPluteIns ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス
1660 for i := Length(BoardGroups) - 1 downto 0 do begin
1661 //BoardGroups[i].Clear;
1662 BoardGroups[i].Free;
1663 end;
1664
1665 try
1666 for i := Length( BBSs ) - 1 downto 0 do begin
1667 if BBSs[ i ] <> nil then
1668 BBSs[ i ].Free;
1669 BBSs[ i ] := nil;
1670 end;
1671 except
1672 end;
1673
1674 try
1675 if FEvent <> nil then
1676 FEvent.Free;
1677
1678 //Hint?スj?ス?ス
1679 if FHint <> nil then begin
1680 FHint.ReleaseHandle;
1681 FHint.Free;
1682 FHint := nil;
1683 end;
1684 //Preview?スj?ス?ス
1685 if TPreviewBrowser <> nil then begin
1686 FPreviewBrowser.Free;
1687 FPreviewBrowser := nil;
1688 end;
1689 except
1690 end;
1691 LockWindowUpdate(0);
1692 end;
1693
1694 // ?スe?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?スE BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スZ?スb?スg?ス^?スX?スV
1695 procedure TGikoForm.SetBBSMenu;
1696 var
1697 i : Integer;
1698 item : TBBSMenuItem;
1699 begin
1700
1701 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1702 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1703 try
1704 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1705 CabinetSelectPopupMenu.Items[ i ].Free;
1706 CabinetMenu.Items[ i ].Free;
1707 BBSSelectPopupMenu.Items[ i ].Free;
1708 end;
1709 except
1710 end;
1711 end;
1712
1713 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1714 for i := Length( BBSs ) - 1 downto 0 do begin
1715 try
1716 item := TBBSMenuItem.Create( PopupMenu );
1717 item.Caption := BBSs[ i ].Title;
1718 item.Data := BBSs[ i ];
1719 item.OnClick := BBSMenuItemOnClick;
1720 CabinetSelectPopupMenu.Items.Insert( 0, item );
1721 item := TBBSMenuItem.Create( PopupMenu );
1722 item.Caption := BBSs[ i ].Title;
1723 item.Data := BBSs[ i ];
1724 item.OnClick := BBSMenuItemOnClick;
1725 CabinetMenu.Insert( 0, item );
1726 item := TBBSMenuItem.Create( PopupMenu );
1727 item.Caption := BBSs[ i ].Title;
1728 item.Data := BBSs[ i ];
1729 item.OnClick := BBSMenuItemOnClick;
1730 BBSSelectPopupMenu.Items.Insert( 0, Item );
1731 except
1732 end;
1733 end;
1734
1735 end;
1736
1737 procedure TGikoForm.ReloadBBS;
1738 var
1739 i : Integer;
1740 tmpBool: Boolean;
1741 begin
1742 LockWindowUpdate(Self.Handle);
1743
1744 //?ス^?スu?スN?ス?ス?ス[?スY
1745 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1746 GikoSys.Setting.ShowDialogForAllTabClose := false;
1747 GikoDM.AllTabCloseAction.Execute;
1748 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1749 SetContent(BrowserNullTab);
1750 //TreeView?スN?ス?ス?スA?スiBBS2ch.Free?ス?ス?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?スXP?スX?ス^?スC?ス?ス?ス?ス?ス?ス?スG?ス?ス?ス[?スo?ス?ス?スj
1751 TreeView.Items.Clear;
1752
1753 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1754 try
1755 RoundList.SaveRoundFile;
1756 except
1757 end;
1758 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?スj?ス?ス
1759 try
1760 RoundList.Clear;
1761 except
1762 end;
1763
1764 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1765 try
1766 SaveHistory;
1767 ClearHistory;
1768 except
1769 end;
1770
1771 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1772 try
1773 FavoriteDM.WriteFavorite;
1774 FavoriteDM.Clear;
1775 except
1776 end;
1777
1778 //?ス?ス?スE?スX?ス?ス?スEPLUGIN?ス?ス?スj?ス?ス
1779 for i := Length(BoardGroups) - 1 downto 0 do begin
1780 try
1781 BoardGroups[i].Free;
1782 except
1783 end;
1784 end;
1785 //BBS?スj?ス?ス
1786 try
1787 for i := Length( BBSs ) - 1 downto 0 do begin
1788 if BBSs[ i ] <> nil then
1789 BBSs[ i ].Free;
1790 BBSs[ i ] := nil;
1791 end;
1792 except
1793 end;
1794
1795 ActiveList := nil;
1796
1797 FTreeType := gttNone;
1798
1799 //============?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス================================//
1800
1801 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1802 InitializeBoardPlugIns;
1803
1804 GikoSys.ListBoardFile; //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス
1805
1806 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1807 for i := Length(BBSs) - 1 downto 0 do begin
1808 if not BBSs[i].IsBoardFileRead then
1809 GikoSys.ReadBoardFile(BBSs[i]);
1810 end;
1811
1812 // BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スX?スV
1813 SetBBSMenu;
1814
1815 ShowBBSTree( BBSs[ 0 ] );
1816
1817 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1818 LoadHistory;
1819
1820 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1821 FavoriteDM.ReadFavorite;
1822
1823 SetLinkBar;
1824
1825 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1826 RoundList.LoadRoundBoardFile;
1827 RoundList.LoadRoundThreadFile;
1828
1829 LockWindowUpdate(0);
1830 end;
1831
1832 {!
1833 \todo ?ス?ス?ス?ス IE 7 ?ス?ス?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1834 (IE 7 ?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スM?スR?スi?スr?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス)
1835 ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1836 }
1837 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1838 var
1839 p: TPoint;
1840 s: string;
1841 tmp2: string;
1842 URL: string;
1843 ATitle: Boolean;
1844
1845 threadItem : TThreadItem;
1846 board : TBoard;
1847 Protocol, Host, Path, Document, Port, Bookmark: string;
1848
1849 wkInt: Integer;
1850 wkIntSt: Integer;
1851 wkIntTo: Integer;
1852 ActiveFileName: string;
1853 e: IHTMLElement;
1854 Ext: string;
1855 PathRec: TPathRec;
1856 Text2: string;
1857 begin
1858 // ?スM?スR?スi?スr?ス?ス?ス?ス?スX?スA?ス?ス?スJ?ス[?ス?ス about:blank.. ?ス?ス?スn?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1859 // IE 7 ?ス?ス?ス?ス about:blank.. ?ス?ス?ス?ス?ス?ス?ス?ス about:.. ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?ス?ス?ス?ス?ス?ス(?ス?ス?ス?ス?ス?ス?ス?ス)
1860 if Pos('about:..', Text) = 1 then
1861 Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
1862 else
1863 Text2 := Text;
1864 if not( TObject(Sender) is TWebBrowser )then
1865 Exit;
1866 try
1867 try
1868 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1869 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1870 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1871 end;
1872 end;
1873 except
1874 end;
1875 finally
1876 end;
1877 if PreviewTimer.Enabled then
1878 PreviewTimer.Enabled := False;
1879 Application.CancelHint;
1880 try
1881 if GetActiveContent <> nil then
1882 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1883 else
1884 ActiveFileName := '';
1885 except
1886 FActiveContent := nil;
1887 Exit;
1888 end;
1889
1890 StatusBar.Panels[1].Text := Text2;
1891
1892 if FHint <> nil then begin
1893 FHint.ReleaseHandle;
1894 FHint.ClearAllRes;
1895 end;
1896 if FPreviewBrowser <> nil then
1897 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1898
1899 if not GikoSys.Setting.UnActivePopup then
1900 if not GikoForm.Active then
1901 Exit;
1902
1903 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1904 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1905
1906 s := '';
1907 Ext := AnsiLowerCase(ExtractFileExt(Text2));
1908 if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
1909 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1910 if FPreviewBrowser = nil then begin
1911 FPreviewBrowser := TPreviewBrowser.Create(Self);
1912 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1913 TOleControl(FPreviewBrowser).Parent := nil;
1914 end;
1915 FPreviewBrowser.Navigate(BLANK_HTML);//?スO?ス?ス?ス?ス?スv?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スp
1916 FPreviewURL := Text2;
1917 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1918 PreviewTimer.Enabled := True;
1919 end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
1920 if Pos('mailto:', Text2) = 1 then begin
1921 s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
1922 //?スM?スR?スi?スr?スX?ス?ス ?スp?ス[?スg3?ス?ス466?ス?ス?ス?ス?ス?ス?ス?ス
1923 GetCursorPos(p);
1924 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1925 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1926 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1927 if (Assigned(e)) then begin
1928 tmp2 := ZenToHan(e.Get_outerText);
1929 if (GikoSys.IsNumeric(tmp2)) then begin
1930 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1931 wkIntSt := StrToInt64(tmp2);
1932 wkIntTo := StrToInt64(tmp2);
1933 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1934 FHint.PopupType := gptThread;
1935 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1936 end else begin
1937 FHint.PopupType := gptRaw;
1938 FHint.Caption := s;
1939 end;
1940 end;
1941 end else begin
1942 threadItem := GetActiveContent;
1943 URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
1944 PathRec := Gikosys.Parse2chURL2(URL);
1945 if (PathRec.FNoParam) then begin
1946 PathRec.FSt := 1;
1947 PathRec.FTo := 1;
1948 end else begin
1949 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1950 end;
1951 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1952
1953 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1954
1955 URL := GikoSys.GetBrowsableThreadURL( URL );
1956 wkIntSt := PathRec.FSt;
1957 wkIntTo := PathRec.FTo;
1958
1959 if (wkIntSt = 0) and (wkIntTo = 0) then begin
1960 wkIntSt := 1;
1961 wkIntTo := 1;
1962 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1963 wkIntSt := wkIntTo;
1964 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1965 wkIntTo := wkIntSt;
1966 end else if wkIntSt > wkIntTo then begin
1967 wkInt := wkIntTo;
1968 wkIntTo := wkIntSt;
1969 wkIntSt := wkInt;
1970 end;
1971 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1972 ATitle := false
1973 else
1974 ATitle := true;
1975
1976 threadItem := BBSsFindThreadFromURL( URL );
1977
1978 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1979 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1980 if board <> nil then begin
1981 if not board.IsThreadDatRead then
1982 GikoSys.ReadSubjectFile( board );
1983 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1984 end;
1985 end;
1986
1987 if threadItem <> nil then begin
1988 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1989 //URL?ス?ス?ス?ス?ス?ス?ス?ス/?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スp
1990 if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1991 wkIntSt := 1;
1992 wkIntTo := 1;
1993 end;
1994 FHint.PopupType := gptThread;
1995 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1996 end;
1997 end;
1998 end;
1999
2000 if FHint.PopupType = gptRaw then begin
2001 if FHint.Caption <> '' then
2002 ShowTextPopup;
2003 end else begin
2004 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2005 ShowTextPopup;
2006 end;
2007 end;
2008 end;
2009
2010 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2011 var
2012 SysMenu: HMenu;
2013 begin
2014 FEnabledCloseButton := Enabled;
2015 SysMenu := GetSystemMenu(Handle, False);
2016
2017 if Enabled then begin
2018 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2019 end else begin
2020 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2021 end;
2022
2023 DrawMenuBar(Handle);
2024 end;
2025
2026 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2027 var AllowChange: Boolean);
2028 begin
2029 //?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2030 // if FTreeType = gtt2ch then
2031 // FSortIndex := -1;
2032 end;
2033
2034 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2035 Shift: TShiftState);
2036 var
2037 pos : TPoint;
2038 begin
2039 if GetActiveList is TBoard then begin
2040 case Key of
2041 VK_BACK:; // UpFolderButtonClick(Sender);
2042 VK_SPACE: ListDoubleClick(Shift);
2043 VK_RETURN: ListClick;
2044 VK_APPS:
2045 begin
2046 if ListView.Selected <> nil then begin
2047 pos.X := ListView.Column[ 0 ].Width;
2048 pos.Y := ListView.Selected.Top;
2049 end else begin
2050 pos.X := ListView.Left;
2051 pos.Y := ListView.Top;
2052 end;
2053 Windows.ClientToScreen( ListView.Handle, pos );
2054 ListPopupMenu.Popup( pos.X, pos.Y );
2055 end;
2056 end;
2057 end else begin // TBBS, TCategory
2058 case Key of
2059 VK_BACK:; // UpFolderButtonClick(Sender);
2060 VK_SPACE: ListClick;
2061 VK_RETURN: ListDoubleClick(Shift);
2062 VK_APPS:
2063 begin
2064 if ListView.Selected <> nil then begin
2065 pos.X := ListView.Column[ 0 ].Width;
2066 pos.Y := ListView.Selected.Top;
2067 end else begin
2068 pos.X := ListView.Left;
2069 pos.Y := ListView.Top;
2070 end;
2071 Windows.ClientToScreen( ListView.Handle, pos );
2072 ListPopupMenu.Popup( pos.X, pos.Y );
2073 end;
2074 end;
2075 end;
2076 end;
2077
2078 function TGikoForm.GetHttpState: Boolean;
2079 begin
2080 Result := FHttpState;
2081 end;
2082
2083 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2084 Column: TListColumn);
2085 var
2086 id, idx : Integer;
2087 orderList : TList;
2088 vSortIndex : Integer;
2089 vSortOrder : Boolean;
2090 begin
2091 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2092 if TObject( FActiveList ) is TBBS then begin
2093 orderList := GikoSys.Setting.BBSColumnOrder;
2094 vSortIndex := GikoSys.Setting.BBSSortIndex;
2095 vSortOrder := GikoSys.Setting.BBSSortOrder;
2096 end else if TObject( FActiveList ) is TCategory then begin
2097 orderList := GikoSys.Setting.CategoryColumnOrder;
2098 vSortIndex := GikoSys.Setting.CategorySortIndex;
2099 vSortOrder := GikoSys.Setting.CategorySortOrder;
2100 end else if TObject( FActiveList ) is TBoard then begin
2101 orderList := GikoSys.Setting.BoardColumnOrder;
2102 vSortIndex := GikoSys.Setting.BoardSortIndex;
2103 vSortOrder := GikoSys.Setting.BoardSortOrder;
2104 end else
2105 Exit;
2106
2107 id := Integer( orderList[ idx ] );
2108
2109
2110 if vSortIndex = id then
2111 vSortOrder := not vSortOrder
2112 else begin
2113 vSortOrder := id = 0;
2114 end;
2115
2116 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2117 end;
2118
2119 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2120 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2121 var
2122 ARect: TRect;
2123 begin
2124 DefaultDraw := True;
2125 Exit;
2126 DefaultDraw := False;
2127 if (cdsSelected in State) or (cdsHot in State) then begin
2128 Sender.Canvas.Brush.Color := clHighlight;
2129 Sender.Canvas.Font.Color := clHighlightText;
2130 end else begin
2131 Sender.Canvas.Brush.Color := clBtnFace;
2132 Sender.Canvas.Font.Color := clBtnText;
2133 end;
2134 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2135 Sender.Canvas.FillRect(ARect);
2136 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2137 end;
2138
2139 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2140 var
2141 Nodes: TTreeNodes;
2142 i: integer;
2143 begin
2144 Nodes := TreeView.Items;
2145
2146 for i := 0 to Nodes.Count - 1 do begin
2147 if Nodes.Item[i].Data = Data then begin
2148 Result := Nodes.Item[i];
2149 Exit;
2150 end;
2151 end;
2152 Result := nil;
2153 end;
2154
2155 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2156 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2157 Headers: OleVariant; var Cancel: WordBool);
2158 var
2159 sNo: string;
2160 p: TPoint;
2161 const
2162 kMenuName: string = 'menu:';
2163 begin
2164
2165 if Pos(kMenuName, URL) <> 0 then begin
2166 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2167
2168 if not GikoSys.IsNumeric(sNo) then Exit;
2169
2170 Cancel := True;
2171 GetCursorpos(p);
2172 KokoPopupMenu.Tag := StrToInt(sNo);
2173 KokoPopupMenu.Popup(p.x, p.y);
2174 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2175 Cancel := not GikoSys.Setting.OpenMailer;
2176 end;
2177
2178 end;
2179
2180 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2181 const ARect: TRect; var DefaultDraw: Boolean);
2182 var
2183 NodeRect: TRect;
2184 i, j: Integer;
2185 IsBoardNode: Boolean;
2186 Cnt: Integer;
2187 CntText: string;
2188 TextWidth: Integer;
2189 TextRect: TRect;
2190 Board: TBoard;
2191 Category: TCategory;
2192 Bitmap: TBitmap;
2193 NodeWidth: Integer;
2194 begin
2195 DefaultDraw := True;
2196
2197 if FTreeType = gttHistory then Exit;
2198
2199 TreeView.Canvas.Font.Color := clBlue;
2200 IsBoardNode := False;
2201 for i := 0 to TreeView.Items.Count - 1 do begin
2202 Cnt := 0;
2203 if not TreeView.Items[i].IsVisible then
2204 continue;
2205
2206 if TObject(TreeView.Items[i].Data) is TCategory then begin
2207 if TreeView.Items[i].Expanded then
2208 continue;
2209
2210 IsBoardNode := False;
2211 Category := TCategory(TreeView.Items[i].Data);
2212 for j := 0 to Category.Count - 1 do begin
2213 Board := Category.Items[j];
2214 if Board <> nil then begin
2215 if Board.UnRead > 0 then begin
2216 Cnt := 1;
2217 Break;
2218 end;
2219 end;
2220 end;
2221 if Cnt <> 1 then
2222 continue;
2223 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2224 IsBoardNode := True;
2225 Board := TBoard(TreeView.Items[i].Data);
2226
2227 Cnt := Board.UnRead;
2228 if Cnt <= 0 then
2229 continue;
2230 end else
2231 continue;
2232
2233 Bitmap := TBitmap.Create;
2234 try
2235 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2236 Bitmap.Canvas.Font.Style := [fsBold];
2237 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2238 finally
2239 Bitmap.Free;
2240 end;
2241
2242 NodeRect := TreeView.Items[i].DisplayRect(True);
2243
2244 if IsBoardNode then
2245 CntText := '(' + IntToStr(Cnt) + ')'
2246 else if Cnt = 1 then
2247 CntText := '(+)';
2248
2249
2250 TextWidth := TreeView.Canvas.TextWidth(CntText);
2251
2252 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2253 NodeRect.Top,
2254 NodeRect.Left + NodeWidth + TextWidth + 8,
2255 NodeRect.Bottom);
2256 DrawText(TreeView.Canvas.Handle,
2257 PChar(CntText),
2258 -1,
2259 TextRect,
2260 DT_SINGLELINE or DT_VCENTER);
2261 end;
2262 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
2263 end;
2264
2265 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
2266 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
2267 var
2268 Board: TBoard;
2269 Category: TCategory;
2270 i: Integer;
2271 begin
2272 DefaultDraw := True;
2273
2274 if FTreeType = gttHistory then Exit;
2275
2276 TreeView.Canvas.Font.Style := [];
2277 if Node <> nil then begin
2278 if TObject(Node.Data) is TCategory then begin
2279 Category := TCategory(Node.Data);
2280 for i := 0 to Category.Count - 1 do begin
2281 Board := Category.Items[i];
2282 if Board <> nil then begin
2283 if Board.UnRead > 0 then begin
2284 TreeView.Canvas.Font.Style := [fsBold];
2285 Break;
2286 end;
2287 end;
2288 end;
2289 end else if TObject(Node.Data) is TBoard then begin
2290 Board := TBoard(Node.Data);
2291 if Board.UnRead > 0 then
2292 TreeView.Canvas.Font.Style := [fsBold];
2293 end;
2294 end;
2295 end;
2296
2297 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
2298 begin
2299 TreeView.Invalidate;
2300
2301 if TObject(Node.Data) is TBBS then begin
2302 TBBS(Node.Data).NodeExpand := True;
2303 end else if TObject(Node.Data) is TCategory then begin
2304 TCategory(Node.Data).NodeExpand := True;
2305 end else if TObject(Node.Data) is TBoard then begin
2306 TBoard(Node.Data).NodeExpand := True;
2307 end;
2308 end;
2309
2310 procedure TGikoForm.ListViewAllSelect;
2311 begin
2312 ListView.SetFocus;
2313 ListView.SelectAll;
2314 end;
2315 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
2316 begin
2317 AddMessageList(Msg, nil, Icon);
2318 end;
2319 // *************************************************************************
2320 //! ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?スx?ス?ス?スg
2321 // *************************************************************************
2322 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
2323 var
2324 ATitle: string;
2325 s: string;
2326 boardPlugIn : TBoardPlugIn;
2327 i: Integer;
2328 Res : TResRec;
2329 begin
2330 try
2331 if Item.DownType = gdtBoard then
2332 ATitle := Item.Board.Title
2333 else
2334 ATitle := Item.ThreadItem.Title;
2335 if ATitle = '' then
2336 ATitle := GikoSys.GetGikoMessage(gmUnKnown);
2337
2338 if Item.State in [gdsComplete, gdsDiffComplete] then begin
2339 //?ス?ス?ス?ス?スI?ス?ス
2340 if Item.DownType = gdtBoard then begin
2341 //?ス?ス
2342 Item.SaveListFile;
2343 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK);
2344 if GetActiveList = Item.Board then begin
2345 FActiveList := nil;
2346 //?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス
2347 if (GikoSys.Setting.AutoSortThreadList) then begin
2348 GikoSys.Setting.BoardSortIndex := 0;
2349 GikoSys.Setting.BoardSortOrder := True;
2350 end;
2351 Sort.SetSortDate(Now());
2352 SetActiveList(Item.Board);
2353 end;
2354 Item.Board.Modified := True;
2355 Item.Board.IsThreadDatRead := True;
2356 PlaySound('New');
2357 ListView.Refresh;
2358 end else if Item.DownType = gdtThread then begin
2359 //?スX?ス?ス
2360 Item.SaveItemFile;
2361 Item.ThreadItem.NewArrival := True;
2362 //if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2363 if (Item.ThreadItem.ParentBoard.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2364 //boardPlugIn := Item.ThreadItem.BoardPlugIn;
2365 boardPlugIn := Item.ThreadItem.ParentBoard.BoardPlugIn;
2366 THTMLCreate.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 ), @Res);
2367 Item.ThreadItem.Title := Res.FTitle;
2368 ATitle := Item.ThreadItem.Title;
2369 end else if ATitle = '?スi?ス?ス?ス?ス?スs?ス?ス?スj' then begin
2370 THTMLCreate.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1), @Res);
2371 ATitle := Res.FTitle;
2372 end;
2373 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2374 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin
2375 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2376 break;
2377 end;
2378 end;
2379 if GikoSys.Setting.BrowserTabVisible then begin
2380 if GetActiveContent = Item.ThreadItem then
2381 InsertBrowserTab(Item.ThreadItem)
2382 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
2383 InsertBrowserTab(Item.ThreadItem, True)
2384 else
2385 InsertBrowserTab(Item.ThreadItem, False);
2386
2387 end else begin
2388 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
2389 InsertBrowserTab(Item.ThreadItem);
2390 end;
2391
2392 Application.ProcessMessages;
2393
2394 if Item.State = gdsComplete then begin
2395 PlaySound('New');
2396 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK);
2397 //Add by Genyakun
2398 DiffComp := True;
2399 end else begin
2400 PlaySound('NewDiff');
2401 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK);
2402 //Add by Genyakun
2403 DiffComp := True;
2404 end;
2405
2406 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?スO?スO?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2407 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
2408 Item.ThreadItem.Round := False;
2409 //Item.ThreadItem.RoundName := '';
2410 AddMessageList('?ス?ス1000?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス - [' + Item.ThreadItem.Title + ']', nil, gmiOK);
2411 end;
2412 TreeView.Refresh;
2413 //ListView?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス
2414 if (ActiveList <> nil) and (ActiveList is TBoard) then begin
2415 TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
2416 TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
2417 TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
2418 //ListView?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV
2419 case GikoForm.ViewType of
2420 gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
2421 gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
2422 gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
2423 gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
2424 gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
2425 gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
2426 end;
2427 end;
2428 RefreshListView(Item.ThreadItem);
2429 end;
2430
2431 end else if Item.State = gdsNotModify then begin
2432 //?ス?ス?スX?スi?スV
2433 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
2434 //SetContent(Item.ThreadItem);
2435 InsertBrowserTab(Item.ThreadItem);
2436 end;}
2437 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD);
2438 PlaySound('NoChange');
2439 Screen.Cursor := crDefault;
2440 end else if Item.State = gdsAbort then begin
2441 //?ス?ス?スf
2442 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
2443 end else if Item.State = gdsError then begin
2444 //?スG?ス?ス?ス[
2445 s := Item.ErrText;
2446 if s <> '' then
2447 s := ':' + s;
2448 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmError) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG);
2449 // if Item.ResponseCode = 302 then
2450 // AddMessageList('?ス?ス?ス?ス?ス?ス?ス]?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?スs?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB', nil, gmiNG);
2451 PlaySound('Error');
2452 end;
2453 finally
2454 Item.Free;
2455 Dec(FWorkCount);
2456 if FWorkCount < 0 then FWorkCount := 0;
2457 if FWorkCount = 0 then begin
2458 try
2459 Animate.Active := False;
2460 finally
2461 Screen.Cursor := crDefault;
2462 end;
2463 end;
2464
2465 end;
2466 end;
2467
2468 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
2469 begin
2470 // SetProgressValue(Number, 0, AWorkCountMax);
2471 // ProgressBar.Visible := True;
2472 ProgressBar.Position := 0;
2473 ProgressBar.Max := AWorkCountMax;
2474 FDownloadTitle := AWorkTitle;
2475 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?スJ?スn?ス?ス?ス?ス?ス?ス';
2476 FDownloadMax := AWorkCountMax;
2477 end;
2478
2479 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
2480 begin
2481 ProgressBar.Position := 0;
2482 if FDownloadMax <> 0 then
2483 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス';
2484 end;
2485
2486 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
2487 begin
2488 ProgressBar.Position := AWorkCount;
2489 // SetProgressValue(Number, AWorkCount);
2490 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
2491 end;
2492
2493 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
2494 var
2495 ListItem: TListItem;
2496 begin
2497 MessageListView.Items.BeginUpdate;
2498 try
2499 ListItem := MessageListView.Items.Add;
2500 ListItem.Caption := ACaption;
2501 ListItem.Data := AObject;
2502 ListItem.MakeVisible(False);
2503 case Icon of
2504 gmiOK: ListItem.ImageIndex := 0;
2505 gmiSAD: ListItem.ImageIndex := 1;
2506 gmiNG: ListItem.ImageIndex := 2;
2507 gmiWhat: ListItem.ImageIndex := 3;
2508 end;
2509 finally
2510 MessageListView.Items.EndUpdate;
2511 end;
2512 end;
2513
2514
2515 function TGikoForm.InsertBrowserTab(
2516 ThreadItem : TThreadItem;
2517 ActiveTab : Boolean = True
2518 ) : TBrowserRecord;
2519 var
2520 i, j, idx : Integer;
2521 favItem : TFavoriteThreadItem;
2522 newBrowser : TBrowserRecord;
2523 begin
2524
2525 Result := nil;
2526 if Threaditem = nil then Exit;
2527
2528 if ThreadItem.IsLogFile then begin
2529 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?スS?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?スJ?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?スbrowser?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2530 //?ス?ス?ス?ス?スS?ス?ス?ス?ス?ス?スActive?ス?ス?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2531 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
2532 (FActiveContent.Browser <> BrowserNullTab.Browser)then begin
2533 j := FBrowsers.IndexOf(FActiveContent.Browser);
2534 if j = BROWSER_COUNT - 1 then
2535 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2536 end;
2537 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
2538 if not AddHistory( favItem ) then
2539 favItem.Free;
2540
2541 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
2542 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
2543 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
2544 Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] );
2545 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = nil then begin
2546 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2547 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2548 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2549 break;
2550 end;
2551 end;
2552 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2553 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2554 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2555 end;
2556 if ActiveTab then begin
2557 BrowserTab.TabIndex := i;
2558 BrowserTab.OnChange(nil);
2559 BrowserTab.Repaint;
2560 end;
2561 Exit;
2562 end;
2563 end;
2564 end;
2565 idx := BrowserTab.TabIndex;
2566 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
2567 newBrowser := TBrowserRecord.Create;
2568 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2569 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2570 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2571 break;
2572 end;
2573 end;
2574 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2575 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2576 //newBrowser.Browser.Navigate(BLANK_HTML);
2577 newBrowser.thread := ThreadItem;
2578 newBrowser.Repaint := true;
2579 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2580
2581 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2582 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2583 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
2584 end;// else begin
2585 //end;
2586 BrowserTab.Repaint;
2587 if ActiveTab then begin
2588 BrowserTab.TabIndex := 0;
2589 end;
2590
2591 end else begin
2592 newBrowser := TBrowserRecord.Create;
2593 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2594 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2595 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2596 break;
2597 end;
2598 end;
2599 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2600 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2601 //newBrowser.Browser.Navigate(BLANK_HTML);
2602 newBrowser.thread := ThreadItem;
2603 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2604 newBrowser.Repaint := true;
2605
2606 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2607 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2608 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
2609 end;
2610 //end;
2611 BrowserTab.Repaint;
2612 if ActiveTab then begin
2613 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
2614 BrowserTab.TabIndex := 0
2615 else
2616 BrowserTab.TabIndex := i;
2617 end;
2618 end;
2619 Result := newBrowser;
2620 if(ActiveTab) or (idx = -1) then begin
2621 BrowserTab.OnChange(nil);
2622 end;
2623 end else begin
2624 if BrowserNullTab = nil then begin
2625 BrowserNullTab := TBrowserRecord.Create;
2626 BrowserNullTab.Browser := Browser;
2627 end;
2628 // if BrowserNullTab.thread <> ThreadItem then begin
2629 // BrowserNullTab.Movement := '';
2630 // end;
2631 BrowserNullTab.thread := ThreadItem;
2632 Result := BrowserNullTab;
2633 BrowserTab.TabIndex := -1;
2634 SetContent(BrowserNullTab);
2635 end;
2636
2637 if GikoSys.Setting.URLDisplay then
2638 AddressComboBox.Text := ThreadItem.URL;
2639
2640 end;
2641
2642 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
2643 var
2644 BBSID: string;
2645 FileName: string;
2646 sTitle: string;
2647 doc: Variant;
2648 s: string;
2649 i: Integer;
2650 idx: Integer;
2651 ThreadItem: TThreadItem;
2652 Thread: TBrowserRecord;
2653 ThreadTitle, ThreadPTitle: string;
2654 ThreadIsLog, {ThreadUnRead,} ThreadNewArraical: boolean;
2655 begin
2656 Thread := inThread;
2657 idx := BrowserTab.TabIndex;
2658 if (FActiveContent <> nil) and
2659 (FActiveContent.Thread <> Thread.Thread) and
2660 (FActiveContent.Browser <> nil) and
2661 (Assigned(FActiveContent.Browser.Document)) then begin
2662 try
2663 try
2664 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
2665 except
2666 on E: Exception do
2667 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
2668 end;
2669 finally
2670 end;
2671 end;
2672 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
2673 Thread.Browser.Navigate(BLANK_HTML);
2674 BrowserBoardNameLabel.Caption := '';
2675 ItemBoardImage.Picture := nil;
2676 BrowserNameLabel.Caption := '';
2677 ItemImage.Picture := nil;
2678 BrowserNullTab.Thread := nil;
2679 //TOleControl(BrowserNullTab.Browser).Visible := true;
2680 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
2681 FActiveContent := nil;
2682 Exit;
2683 end else if Thread.Browser = nil then begin
2684 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
2685 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2686 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2687 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2688 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
2689 break;
2690 end;
2691 end;
2692 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2693 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2694 end;
2695
2696 ThreadTitle := Thread.Thread.Title;
2697 ThreadPTitle := Thread.Thread.ParentBoard.Title;
2698 //ThreadScrollTop := Thread.Thread.ScrollTop;
2699 ThreadIsLog := Thread.Thread.IsLogFile;
2700 ThreadItem := Thread.Thread;
2701 ThreadNewArraical := Thread.Thread.NewArrival;
2702 //ThreadUnRead := Thread.Thread.UnRead;
2703 BBSID := ThreadItem.ParentBoard.BBSID;
2704 FileName := ThreadItem.FileName;
2705
2706 if GetCapture = ListView.Handle then
2707 ReleaseCapture;
2708
2709 Screen.Cursor := crHourGlass;
2710
2711
2712 try
2713 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
2714 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
2715 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
2716 end;
2717 ShowWindow(Thread.Browser.Handle, SW_SHOW);
2718 if (not Assigned(Thread.Browser.Document)) then begin
2719 Thread.Browser.Navigate('about:blank');
2720 end;
2721 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
2722 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
2723 Application.ProcessMessages;
2724 if idx <> BrowserTab.TabIndex then begin
2725 Exit;
2726 end;
2727 end;
2728
2729 if (Thread <> nil) and (ThreadItem <>nil) then begin
2730 BrowserBoardNameLabel.Caption := ThreadPTitle;
2731 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
2732 BrowserNameLabel.Caption := ThreadTitle;
2733 ItemImage.Picture := nil;
2734 if ThreadIsLog then
2735 if ThreadNewArraical then
2736 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
2737 else
2738 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
2739 else
2740 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
2741
2742 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
2743 BrowserNameLabel.Left := ItemImage.Left + 20;
2744
2745 end;
2746 //ActiveContent?ス@?ス?ス?スX?スV
2747 FActiveContent := Thread;
2748
2749 if not ThreadIsLog then begin
2750 Self.Caption := GikoDataModule.CAPTION_NAME ;
2751 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス?ス?ス?ス
2752 StatusBar.Panels[THREADSIZE_PANEL].Text := '';
2753 try
2754 Thread.Browser.BringToFront;
2755 s := '<HTML><BODY><CENTER>?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス</CENTER></BODY></HTML>';
2756 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
2757 doc.open;
2758 doc.charset := 'Shift_JIS';
2759 doc.Write(s);
2760 doc.Close;
2761 finally
2762
2763 end;
2764 end else begin
2765 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
2766 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス\?ス?ス
2767 StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]);
2768 StatusBar.Panels[THREADSIZE_PANEL].Width :=
2769 Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70);
2770 //Thread.Repaint?ス?ス?スA?スX?スL?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?スAThread?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス
2771 //?スV?スK?ス?スThread?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
2772 if Thread.Repaint then begin
2773 Thread.Repaint := false;
2774
2775 Thread.Browser.OnStatusTextChange := nil;
2776 LockWindowUpdate(Thread.Browser.ParentWindow);
2777 HTMLCreater.CreateHTML2(Thread.Browser, ThreadItem, sTitle);
2778 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
2779 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
2780 end;
2781 end;
2782
2783 RefreshListView(ThreadItem);
2784 finally
2785 Screen.Cursor := crDefault;
2786 end;
2787 end;
2788
2789 function TGikoForm.GetActiveContent: TThreadItem;
2790 begin
2791 try
2792 if FActiveContent <> nil then
2793 Result := FActiveContent.Thread
2794 else
2795 Result := nil;
2796 except
2797 Result := nil;
2798 end;
2799
2800 end;
2801
2802 procedure TGikoForm.SetActiveList(Obj: TObject);
2803 var
2804 idx : Integer;
2805 begin
2806 // if FActiveList <> Obj then begin
2807 FActiveList := Obj;
2808 try
2809 if ListView.Selected <> nil then
2810 idx := ListView.Selected.Index
2811 else
2812 idx := -1;
2813 except
2814 idx := -1;
2815 end;
2816 ListView.Items.Count := 0;
2817 ListView.Items.Clear;
2818 ListView.Selected := nil;
2819 // ListView.Columns.Clear;
2820 if (FActiveContent <> nil) and (FActiveContent.Thread <> nil)
2821 and (FActiveContent.Thread.IsLogFile) then begin
2822 try
2823 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']'
2824 except
2825 on E: Exception do begin
2826 //?スX?ス?ス?ス?ス?ス?スDL?ス?ス?ス?ス?ス?ス?ス?スFActiveContent?ス?ス?ス?ス?ス?スThread?ス?ス
2827 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2828 ReleaseBrowser(FActiveContent);
2829 FActiveContent.Thread := nil;
2830 Self.Caption := GikoDataModule.CAPTION_NAME;
2831 end;
2832 end;
2833 end else
2834 Self.Caption := GikoDataModule.CAPTION_NAME;
2835 //Application.Title := CAPTION_NAME;
2836
2837 // ActiveListColumnSave;
2838
2839 Screen.Cursor := crHourGlass;
2840 try
2841 if Obj is TBBS then begin
2842 TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2843 end else if Obj is TCategory then begin
2844 TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2845 end else if Obj is TBoard then begin
2846 TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2847 end;
2848 finally
2849 Screen.Cursor := crDefault;
2850 end;
2851
2852 if idx >= 0 then begin
2853 if idx >= ListView.Items.Count then
2854 idx := ListView.Items.Count - 1;
2855 ListView.ItemIndex := idx;
2856 ListView.ItemFocused := ListView.Items.Item[ idx ];
2857 end;
2858 // end;
2859 end;
2860
2861
2862 //?ス?ス?ス?ス?スq?ス?ス?ス?ス?スL?ス?ス?ス?ス
2863 //?ス?ス?ス?ス?ス?ス?ス?スinterface?ス?ス?スg?ス?ス
2864 function TGikoForm.GetActiveList: TObject;
2865 begin
2866 Result := FActiveList;
2867 end;
2868
2869 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
2870 begin
2871 SetListViewType(AViewType, '', False);
2872 end;
2873
2874 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
2875 var
2876 Board: TBoard;
2877 i: Integer;
2878 begin
2879 for i := Length( BBSs ) - 1 downto 0 do begin
2880 BBSs[i].SelectText := SelectText;
2881 BBSs[i].KubetsuChk := KubetsuChk;
2882 end;
2883 ViewType := AViewType;
2884 if ActiveList is TBoard then begin
2885 Board := TBoard(ActiveList);
2886 case ViewType of
2887 //gvtAll: ListView.Items.Count := Board.Count;
2888 gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
2889 gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
2890 gvtArch: Board.ArchiveThreadCount := Board.GetArchiveThreadCount;
2891 gvtLive: Board.LiveThreadCount := Board.GetLiveThreadCount;
2892 gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
2893
2894 end;
2895
2896 SetActiveList(Board);
2897 end;
2898 end;
2899
2900 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
2901 const ARect: TRect; var DefaultDraw: Boolean);
2902 var
2903 s: string;
2904 p: TPoint;