ギコナビ
Revisão | 0d665e731bf0bf1acd4d6d7f3d0bce5e922de1d0 (tree) |
---|---|
Hora | 2006-08-12 19:31:11 |
Autor | cvs2git <cvs2git> |
Commiter | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_54_0_677'.
@@ -883,8 +883,11 @@ begin | ||
883 | 883 | Dec(ps); |
884 | 884 | |
885 | 885 | //VAêuNÌÅÈ¢ |
886 | - if (icode <1792) or (icode > 1871) then | |
887 | - Result := Result + Copy(AString, 1, ps - PChar(AString) + 1); | |
886 | + if ( icode < 1758) or | |
887 | + ((icode > 1871) and (icode < 1958)) or | |
888 | + (icode > 1968) then begin | |
889 | + Result := Result + Copy(AString, 1, ps - PChar(AString) + 1); | |
890 | + end; | |
888 | 891 | |
889 | 892 | Delete(AString, 1, ps - PChar(AString) + 1); |
890 | 893 | end else begin |
@@ -159,7 +159,7 @@ object GikoForm: TGikoForm | ||
159 | 159 | object ToolBar1: TToolBar |
160 | 160 | Left = 2 |
161 | 161 | Top = 4 |
162 | - Width = 15 | |
162 | + Width = 16 | |
163 | 163 | Height = 18 |
164 | 164 | Align = alNone |
165 | 165 | AutoSize = True |
@@ -971,7 +971,7 @@ object GikoForm: TGikoForm | ||
971 | 971 | OnResize = AddressToolBarResize |
972 | 972 | object AddressComboBox: TComboBox |
973 | 973 | Left = 0 |
974 | - Top = 0 | |
974 | + Top = 1 | |
975 | 975 | Width = 177 |
976 | 976 | Height = 20 |
977 | 977 | DropDownCount = 20 |
@@ -4520,6 +4520,12 @@ object GikoForm: TGikoForm | ||
4520 | 4520 | object N61: TMenuItem |
4521 | 4521 | Caption = '-' |
4522 | 4522 | end |
4523 | + object N77: TMenuItem | |
4524 | + Action = GikoDM.StoredTaskTrayAction | |
4525 | + end | |
4526 | + object N78: TMenuItem | |
4527 | + Caption = '-' | |
4528 | + end | |
4523 | 4529 | object ExitMenu: TMenuItem |
4524 | 4530 | Action = GikoDM.ExitAction |
4525 | 4531 | end |
@@ -18,7 +18,8 @@ uses | ||
18 | 18 | Editor, RoundData, GikoPanel, Favorite, HTMLDocumentEvent, |
19 | 19 | HintWindow, GikoCoolBar, GikoListView, Search, ExternalBoardManager, |
20 | 20 | ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection, |
21 | - IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord; | |
21 | + IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord, MoveHistoryItem, | |
22 | + ShellAPI; | |
22 | 23 | |
23 | 24 | const |
24 | 25 | NGWORDNAME_PANEL = 3; |
@@ -409,6 +410,8 @@ type | ||
409 | 410 | DAT3: TMenuItem; |
410 | 411 | N76: TMenuItem; |
411 | 412 | FavoriteTreeItemNameCopyPopupMenu: TMenuItem; |
413 | + N77: TMenuItem; | |
414 | + N78: TMenuItem; | |
412 | 415 | procedure FormCreate(Sender: TObject); |
413 | 416 | procedure FormDestroy(Sender: TObject); |
414 | 417 | procedure BrowserStatusTextChange(Sender: TObject; |
@@ -594,6 +597,7 @@ type | ||
594 | 597 | FOrigenCaption: String; //¨CÉüèc[ÌACeÒWÌÒWO̶ñ |
595 | 598 | FPreviewBrowserRect: TRect; ///< vr [Ì\¦ÊuðL¯·é |
596 | 599 | FActionListGroupIndexes: array of Integer; ///<GikoDMãÌANVXgÌeANVÉÝè³ê½GroupIndexðÛ¶·ézñ |
600 | + | |
597 | 601 | procedure DownloadEnd(Sender: TObject; Item: TDownloadItem); |
598 | 602 | procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon); |
599 | 603 | procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string); |
@@ -665,6 +669,8 @@ type | ||
665 | 669 | procedure RefreshListView(Thread: TThreadItem); |
666 | 670 | //! XbhêÌ\¦ÍÍÝè`FbNNA |
667 | 671 | procedure ClearThreadRengeAction; |
672 | + //! ^XNgCÌACRítH[\¦ | |
673 | + procedure UnStoredTaskTray; | |
668 | 674 | protected |
669 | 675 | procedure CreateParams(var Params: TCreateParams); override; |
670 | 676 | procedure WndProc(var Message: TMessage); override; |
@@ -677,6 +683,7 @@ type | ||
677 | 683 | LastRoundTime: TDateTime; |
678 | 684 | BrowserNullTab: TBrowserRecord; |
679 | 685 | FControlThread: TThreadControl; |
686 | + FIconData : TNotifyIconData; | |
680 | 687 | procedure MoveToURL(const inURL: string); |
681 | 688 | function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord; |
682 | 689 | procedure ReloadBBS; |
@@ -788,6 +795,10 @@ type | ||
788 | 795 | //! c[o[ÉXiÝR{{bNXðÝè·é |
789 | 796 | procedure SetSelectComboBox(); |
790 | 797 | |
798 | + //! ^XNgCÉi[µ½ACRðNbNµ½Æ«Ì | |
799 | + procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010; | |
800 | + //! ^XNgCÉACRo^tH[Bµ | |
801 | + procedure StoredTaskTray; | |
791 | 802 | published |
792 | 803 | property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton; |
793 | 804 | end; |
@@ -820,7 +831,7 @@ implementation | ||
820 | 831 | |
821 | 832 | uses |
822 | 833 | GikoUtil, IndividualAbon, Math, Kotehan, KeySetting, |
823 | - YofUtils, ShellAPI, ToolBarUtil, ToolBarSetting, | |
834 | + YofUtils, ToolBarUtil, ToolBarSetting, | |
824 | 835 | GikoXMLDoc, RoundName, IniFiles, FavoriteAdd, |
825 | 836 | FavoriteArrange, AddressHistory, Preview, Gesture, |
826 | 837 | About, Option, Round, Splash, Sort, ListSelect, Imm, |
@@ -843,6 +854,7 @@ const | ||
843 | 854 | USER_MINIMIZED = WM_USER + 2002; |
844 | 855 | USER_SETLINKBAR = WM_USER + 2003; |
845 | 856 | USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser |
857 | + USER_TASKTRAY = WM_USER + 2010; | |
846 | 858 | {$R *.DFM} |
847 | 859 | |
848 | 860 | procedure TGikoForm.CreateParams(var Params: TCreateParams); |
@@ -889,7 +901,8 @@ begin | ||
889 | 901 | GetGroupIndex(GikoDM.GikoFormActionList); |
890 | 902 | FSearchDialog := nil; |
891 | 903 | CreateBrowsers(BROWSER_COUNT); |
892 | - | |
904 | + FIconData.uID := 0; | |
905 | + | |
893 | 906 | //j [tHg |
894 | 907 | SetMenuFont; |
895 | 908 |
@@ -1287,6 +1300,7 @@ begin | ||
1287 | 1300 | |
1288 | 1301 | //üÍAVXg@\Ìú» |
1289 | 1302 | InputAssistDM.Init(GikoSys.GetInputAssistFileName); |
1303 | + | |
1290 | 1304 | end; |
1291 | 1305 | |
1292 | 1306 | // CoolBar ÌÝèðÏÉÛ¶ |
@@ -3884,15 +3898,17 @@ var | ||
3884 | 3898 | wkIntTo: Integer; |
3885 | 3899 | BNum, BRes: string; |
3886 | 3900 | threadItem: TThreadItem; |
3901 | + aElement : IHTMLElement; | |
3887 | 3902 | begin |
3888 | - | |
3889 | 3903 | Cancel := True; |
3890 | - if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin | |
3891 | - Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText; | |
3892 | - Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML; | |
3904 | + aElement := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement; | |
3905 | + if ( aElement <> nil) then begin | |
3906 | + Text := aElement.Get_outerText; | |
3907 | + Html := aElement.Get_outerHTML; | |
3893 | 3908 | if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1) |
3894 | 3909 | or (AnsiPos('', Text) = 1) or (AnsiPos('', Text) = 1) then begin |
3895 | 3910 | if GikoSys.Setting.ResAnchorJamp then begin |
3911 | + | |
3896 | 3912 | Text := ZenToHan(Trim(Text)); |
3897 | 3913 | |
3898 | 3914 | if(AnsiPos('>>', Text) = 1) then begin |
@@ -3915,6 +3931,7 @@ begin | ||
3915 | 3931 | |
3916 | 3932 | if wkIntSt <> 0 then begin |
3917 | 3933 | FActiveContent.IDAnchorPopup(''); |
3934 | + MoveHisotryManager.pushItem(FActiveContent); | |
3918 | 3935 | BrowserMovement(IntToStr(wkIntSt)); |
3919 | 3936 | end; |
3920 | 3937 |
@@ -3948,6 +3965,7 @@ begin | ||
3948 | 3965 | AddressComboBox.Items.Insert(0, URL); |
3949 | 3966 | end; |
3950 | 3967 | end; |
3968 | + MoveHisotryManager.pushItem(FActiveContent); | |
3951 | 3969 | MoveToURL( URL ); |
3952 | 3970 | end; |
3953 | 3971 | end; |
@@ -4823,14 +4841,21 @@ begin | ||
4823 | 4841 | if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then |
4824 | 4842 | Exit; |
4825 | 4843 | WM_SYSCOMMAND: |
4826 | - if Message.WParam = SC_MINIMIZE then | |
4844 | + if Message.WParam = SC_MINIMIZE then begin | |
4827 | 4845 | OnMinimize; |
4846 | + PostMessage(Handle, USER_MINIMIZED, 0, 0); | |
4847 | + end; | |
4828 | 4848 | USER_TREECLICK: |
4829 | 4849 | TreeClick( TreeView.Selected ); |
4830 | 4850 | USER_RESIZED: |
4831 | 4851 | OnResized; |
4832 | 4852 | USER_MINIMIZED: |
4833 | - OnMinimized; | |
4853 | + begin | |
4854 | + if (GikoSys.Setting.StoredTaskTray) then begin | |
4855 | + StoredTaskTray; | |
4856 | + end; | |
4857 | + OnMinimized; | |
4858 | + end; | |
4834 | 4859 | USER_SETLINKBAR: |
4835 | 4860 | SetLinkBar; |
4836 | 4861 | USER_DOCUMENTCOMPLETE: |
@@ -7696,6 +7721,53 @@ begin | ||
7696 | 7721 | end; |
7697 | 7722 | end; |
7698 | 7723 | |
7724 | +procedure TGikoForm.TaskTrayIconMessage(var Msg: TMsg); | |
7725 | +begin | |
7726 | + // ¶NbNÈç³·é | |
7727 | + if (Msg.wParam = WM_LBUTTONUP) then begin | |
7728 | + UnStoredTaskTray; | |
7729 | + end; | |
7730 | +end; | |
7731 | +//! ^XNgCÉACRo^tH[Bµ | |
7732 | +procedure TGikoForm.StoredTaskTray; | |
7733 | +begin | |
7734 | + try | |
7735 | + if (FIconData.uID = 0) then begin | |
7736 | + FIconData.cbSize := SizeOf(TNotifyIconData); | |
7737 | + FIconData.uID := Self.Handle; | |
7738 | + FIconData.Wnd := Handle; | |
7739 | + FIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; | |
7740 | + FIconData.uCallbackMessage := USER_TASKTRAY; | |
7741 | + FIconData.hIcon := Application.Icon.Handle; {ACRwè} | |
7742 | + FIconData.szTip := 'MRir'; {qg¶ñ} | |
7743 | + Shell_NotifyIcon(NIM_ADD, @FIconData); | |
7744 | + | |
7745 | + ShowWindow(Self.Handle, SW_HIDE); | |
7746 | + end; | |
7747 | + except | |
7748 | + end; | |
7749 | +end; | |
7750 | +//! ^XNgCÌACRítH[\¦ | |
7751 | +procedure TGikoForm.UnStoredTaskTray; | |
7752 | +begin | |
7753 | + try | |
7754 | + try | |
7755 | + Shell_NotifyIcon(NIM_DELETE, @FIconData); | |
7756 | + SetForegroundWindow(Application.Handle); | |
7757 | + except | |
7758 | + end; | |
7759 | + finally | |
7760 | + FIconData.uID := 0; | |
7761 | + // Action©çi[µ½Æ«ÍTagÌlÍ0ÈO | |
7762 | + if (GikoDM.StoredTaskTrayAction.Tag = 0) then begin | |
7763 | + ShowWindow(Self.Handle, SW_RESTORE); | |
7764 | + end else begin | |
7765 | + ShowWindow(Self.Handle, SW_SHOW); | |
7766 | + end; | |
7767 | + GikoDM.StoredTaskTrayAction.Tag := 0; | |
7768 | + end; | |
7769 | +end; | |
7770 | + | |
7699 | 7771 | initialization |
7700 | 7772 | OleInitialize(nil); |
7701 | 7773 | finalization |
@@ -696,7 +696,7 @@ object GikoDM: TGikoDM | ||
696 | 696 | Hint = #24038#12398#12479#12502#12434#36984#25246#12377#12427 |
697 | 697 | ImageIndex = 48 |
698 | 698 | OnExecute = LeftTabSelectActionExecute |
699 | - OnUpdate = LeftmostTabSelectActionUpdate | |
699 | + OnUpdate = LeftTabSelectActionUpdate | |
700 | 700 | end |
701 | 701 | object RightTabSelectAction: TAction |
702 | 702 | Category = #12473#12524#12483#12489 |
@@ -712,7 +712,7 @@ object GikoDM: TGikoDM | ||
712 | 712 | Hint = #19968#30058#21491#12398#12479#12502#12434#36984#25246#12377#12427 |
713 | 713 | ImageIndex = 49 |
714 | 714 | OnExecute = RightmostTabSelectActionExecute |
715 | - OnUpdate = RightTabSelectActionUpdate | |
715 | + OnUpdate = RightmostTabSelectActionUpdate | |
716 | 716 | end |
717 | 717 | object FavoriteAddAction: TAction |
718 | 718 | Category = #12362#27671#12395#20837#12426 |
@@ -1235,6 +1235,70 @@ object GikoDM: TGikoDM | ||
1235 | 1235 | OnExecute = CloseAllEditorActionExecute |
1236 | 1236 | OnUpdate = CloseAllEditorActionUpdate |
1237 | 1237 | end |
1238 | + object PrevMoveHistory: TAction | |
1239 | + Category = #25805#20316 | |
1240 | + Caption = #12522#12531#12463#23653#27508#12434#25147#12427 | |
1241 | + Hint = #12522#12531#12463#23653#27508#12434#25147#12427 | |
1242 | + OnExecute = PrevMoveHistoryExecute | |
1243 | + OnUpdate = PrevMoveHistoryUpdate | |
1244 | + end | |
1245 | + object NextMoveHistory: TAction | |
1246 | + Category = #25805#20316 | |
1247 | + Caption = #12522#12531#12463#23653#27508#12434#36914#12416 | |
1248 | + Hint = #12522#12531#12463#23653#27508#12434#36914#12416 | |
1249 | + OnExecute = NextMoveHistoryExecute | |
1250 | + OnUpdate = NextMoveHistoryUpdate | |
1251 | + end | |
1252 | + object ClickActiveElementAction: TAction | |
1253 | + Category = #12473#12524#12483#12489 | |
1254 | + Caption = #12450#12463#12486#12451#12502#12394#35201#32032#12434#12463#12522#12483#12463#12377#12427 | |
1255 | + Hint = #12450#12463#12486#12451#12502#12394#35201#32032#12434#12463#12522#12483#12463#12377#12427 | |
1256 | + OnExecute = ClickActiveElementActionExecute | |
1257 | + end | |
1258 | + object VKDownAction: TAction | |
1259 | + Category = #25805#20316 | |
1260 | + Caption = #19979#30690#21360#12461#12540#25276#19979 | |
1261 | + Hint = #19979#30690#21360#12461#12540#25276#19979 | |
1262 | + OnExecute = VKDownActionExecute | |
1263 | + end | |
1264 | + object VKUpAction: TAction | |
1265 | + Category = #25805#20316 | |
1266 | + Caption = #19978#30690#21360#12461#12540#25276#19979 | |
1267 | + Hint = #19978#30690#21360#12461#12540#25276#19979 | |
1268 | + OnExecute = VKUpActionExecute | |
1269 | + end | |
1270 | + object VKRightAction: TAction | |
1271 | + Category = #25805#20316 | |
1272 | + Caption = #21491#30690#21360#12461#12540#25276#19979 | |
1273 | + Hint = #21491#30690#21360#12461#12540#25276#19979 | |
1274 | + OnExecute = VKRightActionExecute | |
1275 | + end | |
1276 | + object VKLeftAction: TAction | |
1277 | + Category = #25805#20316 | |
1278 | + Caption = #24038#30690#21360#12461#12540#25276#19979 | |
1279 | + Hint = #24038#30690#21360#12461#12540#25276#19979 | |
1280 | + OnExecute = VKLeftActionExecute | |
1281 | + end | |
1282 | + object StoredTaskTrayAction: TAction | |
1283 | + Category = #25805#20316 | |
1284 | + Caption = #12479#12473#12463#12488#12524#12452#12395#26684#32013#12377#12427 | |
1285 | + Hint = #12479#12473#12463#12488#12524#12452#12395#26684#32013#12377#12427 | |
1286 | + OnExecute = StoredTaskTrayActionExecute | |
1287 | + end | |
1288 | + object AllImageLinkToClipbordAction: TAction | |
1289 | + Category = #12473#12524#12483#12489 | |
1290 | + Caption = #12452#12513#12540#12472#12522#12531#12463'URL'#21462#24471 | |
1291 | + Hint = #12377#12409#12390#12398#12524#12473#12363#12425#12452#12513#12540#12472#12408#12398#12522#12531#12463'URL'#12434#12463#12522#12483#12503#12508#12540#12489#12395#12467#12500#12540#12377#12427 | |
1292 | + OnExecute = AllImageLinkToClipbordActionExecute | |
1293 | + OnUpdate = DependActiveCntentLogActionUpdate | |
1294 | + end | |
1295 | + object NewImageLinkToClipBoardAction: TAction | |
1296 | + Category = #12473#12524#12483#12489 | |
1297 | + Caption = #26032#30528#12524#12473#12452#12513#12540#12472#12522#12531#12463'URL'#21462#24471 | |
1298 | + Hint = #26032#30528#12524#12473#12363#12425#12452#12513#12540#12472#12408#12398#12522#12531#12463'URL'#12434#12463#12522#12483#12503#12508#12540#12489#12395#12467#12500#12540#12377#12427 | |
1299 | + OnExecute = NewImageLinkToClipBoardActionExecute | |
1300 | + OnUpdate = DependActiveCntentLogActionUpdate | |
1301 | + end | |
1238 | 1302 | end |
1239 | 1303 | object ToobarImageList: TImageList |
1240 | 1304 | Left = 44 |
@@ -12,7 +12,7 @@ uses | ||
12 | 12 | MSHTML_TLB, |
13 | 13 | {$IFEND} |
14 | 14 | ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs, |
15 | - ActiveX; | |
15 | + ActiveX, MoveHistoryItem; | |
16 | 16 | |
17 | 17 | const |
18 | 18 | CAPTION_NAME: string = 'MRir'; |
@@ -219,6 +219,16 @@ type | ||
219 | 219 | LiveItemAction: TAction; |
220 | 220 | FavoriteTreeViewItemNameCopyAction: TAction; |
221 | 221 | CloseAllEditorAction: TAction; |
222 | + PrevMoveHistory: TAction; | |
223 | + NextMoveHistory: TAction; | |
224 | + ClickActiveElementAction: TAction; | |
225 | + VKDownAction: TAction; | |
226 | + VKUpAction: TAction; | |
227 | + VKRightAction: TAction; | |
228 | + VKLeftAction: TAction; | |
229 | + StoredTaskTrayAction: TAction; | |
230 | + AllImageLinkToClipbordAction: TAction; | |
231 | + NewImageLinkToClipBoardAction: TAction; | |
222 | 232 | procedure EditNGActionExecute(Sender: TObject); |
223 | 233 | procedure ReloadActionExecute(Sender: TObject); |
224 | 234 | procedure GoFowardActionExecute(Sender: TObject); |
@@ -406,6 +416,20 @@ type | ||
406 | 416 | procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject); |
407 | 417 | procedure CloseAllEditorActionExecute(Sender: TObject); |
408 | 418 | procedure CloseAllEditorActionUpdate(Sender: TObject); |
419 | + procedure PrevMoveHistoryUpdate(Sender: TObject); | |
420 | + procedure PrevMoveHistoryExecute(Sender: TObject); | |
421 | + procedure NextMoveHistoryUpdate(Sender: TObject); | |
422 | + procedure NextMoveHistoryExecute(Sender: TObject); | |
423 | + procedure ClickActiveElementActionExecute(Sender: TObject); | |
424 | + procedure VKDownActionExecute(Sender: TObject); | |
425 | + procedure VKUpActionExecute(Sender: TObject); | |
426 | + procedure VKRightActionExecute(Sender: TObject); | |
427 | + procedure VKLeftActionExecute(Sender: TObject); | |
428 | + procedure StoredTaskTrayActionExecute(Sender: TObject); | |
429 | + procedure LeftTabSelectActionUpdate(Sender: TObject); | |
430 | + procedure RightmostTabSelectActionUpdate(Sender: TObject); | |
431 | + procedure NewImageLinkToClipBoardActionExecute(Sender: TObject); | |
432 | + procedure AllImageLinkToClipbordActionExecute(Sender: TObject); | |
409 | 433 | private |
410 | 434 | { Private é¾ } |
411 | 435 | procedure ClearResFilter; |
@@ -421,6 +445,11 @@ type | ||
421 | 445 | procedure ClearSelectComboBox; |
422 | 446 | procedure ClearMailAllEditor(); |
423 | 447 | procedure ClearNameTextAllEditor(); |
448 | + procedure MoveURLWithHistory(URL : String); | |
449 | + procedure BackToHistory(item: TMoveHistoryItem); | |
450 | + function GetActiveThreadLinks : IHTMLElementCollection; | |
451 | + procedure GetImageLinkURLs(links : IHTMLElementCollection; | |
452 | + URLs : TStringList; const Start: Integer); | |
424 | 453 | public |
425 | 454 | { Public é¾ } |
426 | 455 | procedure RepaintStatusBar; |
@@ -554,24 +583,10 @@ end; | ||
554 | 583 | //! AhXo[É\¦µÄ¢éAhXÖÚ®·é |
555 | 584 | // ************************************************************************* |
556 | 585 | procedure TGikoDM.MoveToActionExecute(Sender: TObject); |
557 | -var | |
558 | - URL: string; | |
559 | - idx: Integer; | |
560 | 586 | begin |
561 | 587 | //AhXR{{bNX©çURLðæ¾ |
562 | - URL := Trim(GikoForm.AddressComboBox.Text); | |
563 | 588 | //URLÉÚ® |
564 | - GikoForm.MoveToURL(URL); | |
565 | - //ȺAðÌ | |
566 | - idx := GikoForm.AddressComboBox.Items.IndexOf(URL); | |
567 | - if idx = -1 then begin | |
568 | - GikoForm.AddressComboBox.Items.Insert(0, URL); | |
569 | - if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then | |
570 | - GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1); | |
571 | - end else begin | |
572 | - GikoForm.AddressComboBox.Items.Delete(idx); | |
573 | - GikoForm.AddressComboBox.Items.Insert(0, URL); | |
574 | - end; | |
589 | + MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) ); | |
575 | 590 | end; |
576 | 591 | // ************************************************************************* |
577 | 592 | //! ¨CÉüèÌÇÁ_CAOðJ |
@@ -1277,6 +1292,18 @@ begin | ||
1277 | 1292 | end; |
1278 | 1293 | end; |
1279 | 1294 | // ************************************************************************* |
1295 | +//! ¶Ì^uðIð·éÌUpdateCxg | |
1296 | +// ************************************************************************* | |
1297 | +procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject); | |
1298 | +begin | |
1299 | + if ( not GikoSys.Setting.LoopBrowserTabs ) then begin | |
1300 | + LeftmostTabSelectActionUpdate(Sender); | |
1301 | + end else begin | |
1302 | + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); | |
1303 | + end; | |
1304 | +end; | |
1305 | + | |
1306 | +// ************************************************************************* | |
1280 | 1307 | //! ^u̪PÈãÅA^uÌCfbNXªOÈOÅLøÉÈéUpdateCxg |
1281 | 1308 | // ************************************************************************* |
1282 | 1309 | procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject); |
@@ -1296,7 +1323,13 @@ begin | ||
1296 | 1323 | end else if GikoForm.BrowserTab.TabIndex > 0 then begin |
1297 | 1324 | GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1; |
1298 | 1325 | GikoForm.BrowserTab.OnChange(nil); |
1299 | - end; | |
1326 | + end else begin | |
1327 | + if (GikoSys.Setting.LoopBrowserTabs) and | |
1328 | + (GikoForm.BrowserTab.TabIndex = 0) then begin | |
1329 | + GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1; | |
1330 | + GikoForm.BrowserTab.OnChange(nil); | |
1331 | + end; | |
1332 | + end; | |
1300 | 1333 | end; |
1301 | 1334 | end; |
1302 | 1335 | // ************************************************************************* |
@@ -1311,17 +1344,27 @@ begin | ||
1311 | 1344 | end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin |
1312 | 1345 | GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1; |
1313 | 1346 | GikoForm.BrowserTab.OnChange(nil); |
1314 | - end; | |
1347 | + end else begin | |
1348 | + if (GikoSys.Setting.LoopBrowserTabs) and | |
1349 | + (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin | |
1350 | + GikoForm.BrowserTab.TabIndex := 0; | |
1351 | + GikoForm.BrowserTab.OnChange(nil); | |
1352 | + end; | |
1353 | + end; | |
1315 | 1354 | end; |
1316 | 1355 | end; |
1317 | 1356 | // ************************************************************************* |
1318 | -//! ^u̪PÈãÅA^uªE[ÈOÅLøÉÈéUpdateCxg | |
1357 | +//! EÌ^uðIð·éUpdateCxg | |
1319 | 1358 | // ************************************************************************* |
1320 | 1359 | procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject); |
1321 | 1360 | begin |
1322 | - TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0) | |
1323 | - and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1); | |
1361 | + if ( not GikoSys.Setting.LoopBrowserTabs ) then begin | |
1362 | + RightmostTabSelectActionUpdate(Sender); | |
1363 | + end else begin | |
1364 | + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1); | |
1365 | + end; | |
1324 | 1366 | end; |
1367 | + | |
1325 | 1368 | // ************************************************************************* |
1326 | 1369 | //! êÔEÌ^uðIð·é |
1327 | 1370 | // ************************************************************************* |
@@ -1333,6 +1376,15 @@ begin | ||
1333 | 1376 | end; |
1334 | 1377 | end; |
1335 | 1378 | // ************************************************************************* |
1379 | +//! êÔEÌ^uðIð·éÌUpdateCxg | |
1380 | +// ************************************************************************* | |
1381 | +procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject); | |
1382 | +begin | |
1383 | + TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0) | |
1384 | + and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1); | |
1385 | + | |
1386 | +end; | |
1387 | +// ************************************************************************* | |
1336 | 1388 | //! Ið³êÄ¢éXbhð¨CÉüèÉÇÁ |
1337 | 1389 | // ************************************************************************* |
1338 | 1390 | procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject); |
@@ -2235,7 +2287,8 @@ begin | ||
2235 | 2287 | URLs.Free; |
2236 | 2288 | end; |
2237 | 2289 | |
2238 | - if (GikoForm.BrowserTab.Tabs.Count = 0) then begin | |
2290 | + if (GikoForm.BrowserTab.Tabs.Count = 0) and | |
2291 | + (TabsOpenAction.Tag <> 1) then begin | |
2239 | 2292 | ShowMessage('\¦·é^uª èܹñB'); |
2240 | 2293 | end; |
2241 | 2294 | end; |
@@ -3685,7 +3738,7 @@ end; | ||
3685 | 3738 | // ************************************************************************* |
3686 | 3739 | procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject); |
3687 | 3740 | begin |
3688 | - GikoForm.ActiveContent.Browser.SetFocus; | |
3741 | + GikoForm.ActiveContent.Browser.SetFocus; | |
3689 | 3742 | end; |
3690 | 3743 | // ************************************************************************* |
3691 | 3744 | //! uEUÉtH[JXðÄéUpdateCxg |
@@ -4038,5 +4091,246 @@ begin | ||
4038 | 4091 | end; |
4039 | 4092 | end; |
4040 | 4093 | |
4094 | +// ************************************************************************* | |
4095 | +//! NððßéÌXV | |
4096 | +// ************************************************************************* | |
4097 | +procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject); | |
4098 | +begin | |
4099 | + PrevMoveHistory.Enabled := | |
4100 | + (MoveHisotryManager.HisotryIndex > 0) | |
4101 | +end; | |
4102 | +// ************************************************************************* | |
4103 | +//! Nððßé | |
4104 | +// ************************************************************************* | |
4105 | +procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject); | |
4106 | +begin | |
4107 | + if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin | |
4108 | + BackToHistory(MoveHisotryManager.getPrevItem | |
4109 | + (TBrowserRecord(GikoForm.BrowserTab.Tabs | |
4110 | + .Objects[GikoForm.BrowserTab.TabIndex]))); | |
4111 | + end else begin | |
4112 | + BackToHistory(MoveHisotryManager.getPrevItem( nil ) ); | |
4113 | + end; | |
4114 | +end; | |
4115 | +//! Nð | |
4116 | +procedure TGikoDM.BackToHistory(item: TMoveHistoryItem); | |
4117 | +var | |
4118 | + browser : TWebBrowser; | |
4119 | + doc : OleVariant; | |
4120 | +begin | |
4121 | + if ( item <> nil ) then begin | |
4122 | + if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin | |
4123 | + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs | |
4124 | + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; | |
4125 | + if (browser <> nil) then begin | |
4126 | + try | |
4127 | + doc := Idispatch( olevariant(browser.ControlInterface).Document) as IHTMLDocument2; | |
4128 | + doc.Body.ScrollTop := item.ScrollTop; | |
4129 | + except | |
4130 | + end; | |
4131 | + end; | |
4132 | + end else begin | |
4133 | + //URLÉÚ® | |
4134 | + MoveURLWithHistory(item.ThreadItem.URL); | |
4135 | + end; | |
4136 | + end; | |
4137 | +end; | |
4138 | +//! ð«URLÚ® | |
4139 | +procedure TGikoDM.MoveURLWithHistory(URL : String); | |
4140 | +var | |
4141 | + idx : Integer; | |
4142 | +begin | |
4143 | + //URLÉÚ® | |
4144 | + GikoForm.MoveToURL(URL); | |
4145 | + //ȺAðÌ | |
4146 | + idx := GikoForm.AddressComboBox.Items.IndexOf(URL); | |
4147 | + if idx = -1 then begin | |
4148 | + GikoForm.AddressComboBox.Items.Insert(0, URL); | |
4149 | + if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then | |
4150 | + GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1); | |
4151 | + end else begin | |
4152 | + GikoForm.AddressComboBox.Items.Delete(idx); | |
4153 | + GikoForm.AddressComboBox.Items.Insert(0, URL); | |
4154 | + end; | |
4155 | +end; | |
4156 | +// ************************************************************************* | |
4157 | +//! NððiÞÌXV | |
4158 | +// ************************************************************************* | |
4159 | +procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject); | |
4160 | +begin | |
4161 | + NextMoveHistory.Enabled := | |
4162 | + (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1); | |
4163 | +end; | |
4164 | +// ************************************************************************* | |
4165 | +//! NððiÞ | |
4166 | +// ************************************************************************* | |
4167 | +procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject); | |
4168 | +begin | |
4169 | + BackToHistory(MoveHisotryManager.getNextItem); | |
4170 | +end; | |
4171 | +// ************************************************************************* | |
4172 | +//! ANeBuvfÌNbN | |
4173 | +// ************************************************************************* | |
4174 | +procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject); | |
4175 | +var | |
4176 | + browser : TWebBrowser; | |
4177 | + elem : IHTMLElement; | |
4178 | +begin | |
4179 | + if (GikoForm.GetActiveContent <> nil) then begin | |
4180 | + if (GikoForm.BrowserTab.Tabs.Count > 0) and | |
4181 | + (GikoForm.BrowserTab.TabIndex >= 0) then begin | |
4182 | + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs | |
4183 | + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; | |
4184 | + if (browser <> nil) then begin | |
4185 | + try | |
4186 | + elem := IHTMLDocument2(browser.Document).activeElement; | |
4187 | + elem.click; | |
4188 | + except | |
4189 | + end; | |
4190 | + end; | |
4191 | + | |
4192 | + end; | |
4193 | + end; | |
4194 | +end; | |
4195 | +//! «L[ÌG~ [gANV | |
4196 | +procedure TGikoDM.VKDownActionExecute(Sender: TObject); | |
4197 | +begin | |
4198 | + keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0); | |
4199 | + keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); | |
4200 | +end; | |
4201 | +//! ªL[ÌG~ [gANV | |
4202 | +procedure TGikoDM.VKUpActionExecute(Sender: TObject); | |
4203 | +begin | |
4204 | + keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0); | |
4205 | + keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); | |
4206 | +end; | |
4207 | +//! ¨L[ÌG~ [gANV | |
4208 | +procedure TGikoDM.VKRightActionExecute(Sender: TObject); | |
4209 | +begin | |
4210 | + keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0); | |
4211 | + keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); | |
4212 | +end; | |
4213 | +//! ©L[ÌG~ [gANV | |
4214 | +procedure TGikoDM.VKLeftActionExecute(Sender: TObject); | |
4215 | +begin | |
4216 | + keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0); | |
4217 | + keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); | |
4218 | +end; | |
4219 | +//! ^XNgCÉi[·é | |
4220 | +procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject); | |
4221 | +begin | |
4222 | + GikoForm.StoredTaskTray; | |
4223 | + StoredTaskTrayAction.Tag := -1; | |
4224 | +end; | |
4225 | + | |
4226 | +{ | |
4227 | +\breif NC[Wæ¾ | |
4228 | +C[WÍC*.jpg, *.jpeg, *.gif, *.png | |
4229 | +} | |
4230 | +procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject); | |
4231 | +var | |
4232 | + links : IHTMLElementCollection; | |
4233 | + urls : TStringList; | |
4234 | +begin | |
4235 | + links := GetActiveThreadLinks; | |
4236 | + if (links <> nil) then begin | |
4237 | + urls := TStringList.Create; | |
4238 | + try | |
4239 | + GetImageLinkURLs(links, urls, 0); | |
4240 | + Clipboard.SetTextBuf(urls.GetText); | |
4241 | + finally | |
4242 | + urls.Free; | |
4243 | + end; | |
4244 | + end; | |
4245 | +end; | |
4246 | + | |
4247 | +{ | |
4248 | +\breif V XÌNC[Wæ¾ | |
4249 | +C[WÍC*.jpg, *.jpeg, *.gif, *.png | |
4250 | +} | |
4251 | +procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject); | |
4252 | +var | |
4253 | + links : IHTMLElementCollection; | |
4254 | + urls : TStringList; | |
4255 | + ThreadItem : TThreadItem; | |
4256 | +begin | |
4257 | + ThreadItem := GikoForm.GetActiveContent; | |
4258 | + links := GetActiveThreadLinks; | |
4259 | + if (ThreadItem <> nil) and (links <> nil) then begin | |
4260 | + urls := TStringList.Create; | |
4261 | + try | |
4262 | + GetImageLinkURLs(links, urls, | |
4263 | + (ThreadItem.Count - ThreadItem.NewResCount + 1) ); | |
4264 | + Clipboard.SetTextBuf(urls.GetText); | |
4265 | + finally | |
4266 | + urls.Free; | |
4267 | + end; | |
4268 | + end; | |
4269 | +end; | |
4270 | +{ | |
4271 | +\brief »Ý\¦µÄ¢éXbhÌ·×ÄÌNðæ¾·éB | |
4272 | +\return IHTMLElementCollection NÌRNV | |
4273 | +} | |
4274 | +function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection; | |
4275 | +var | |
4276 | + browser : TWebBrowser; | |
4277 | +begin | |
4278 | + Result := nil; | |
4279 | + if (GikoForm.GetActiveContent <> nil) then begin | |
4280 | + if (GikoForm.BrowserTab.Tabs.Count > 0) and | |
4281 | + (GikoForm.BrowserTab.TabIndex >= 0) then begin | |
4282 | + browser := TBrowserRecord(GikoForm.BrowserTab.Tabs | |
4283 | + .Objects[GikoForm.BrowserTab.TabIndex]).Browser; | |
4284 | + if (browser <> nil) then begin | |
4285 | + try | |
4286 | + Result := IHTMLDocument2(browser.Document).links; | |
4287 | + except | |
4288 | + Result := nil; | |
4289 | + end; | |
4290 | + end; | |
4291 | + | |
4292 | + end; | |
4293 | + end; | |
4294 | +end; | |
4295 | +{ | |
4296 | +\brief C[WÖÌNÌURLðæ¾·é | |
4297 | +\param links æ¾·éNÌSÌÌRNV | |
4298 | +\param URLs æ¾µ½URLÌÛ¶æ | |
4299 | +\param Start Ýèµ½XÔÈ~ðæ¾( > 0) | |
4300 | +} | |
4301 | +procedure TGikoDM.GetImageLinkURLs(links : IHTMLElementCollection; | |
4302 | + URLs : TStringList; const Start: Integer); | |
4303 | +var | |
4304 | + index ,i : Integer; | |
4305 | + item : IHTMLElement; | |
4306 | + url, ext : string; | |
4307 | +begin | |
4308 | + if (links <> nil) then begin | |
4309 | + index := 0; | |
4310 | + for i := 0 to links.length - 1 do begin | |
4311 | + item := links.item(i, 0) as IHTMLElement; | |
4312 | + if (item <> nil) then begin | |
4313 | + url := item.getAttribute('href', 0); | |
4314 | + // XÌÔðXV | |
4315 | + if (Pos('menu:', url) > 0) then begin | |
4316 | + index := StrToInt64Def( | |
4317 | + Copy(url, 5, Length(url)), index + 1 | |
4318 | + ); | |
4319 | + end else begin | |
4320 | + // JnXÔÈ~©`FbN | |
4321 | + if (index >= Start) then begin | |
4322 | + ext := ExtractFileExt( AnsiLowerCase(url) ); | |
4323 | + // jpg,jpeg,gif,pngð`FbN | |
4324 | + if (ext = '.jpg') or (ext = '.jpeg') or | |
4325 | + (ext = '.gif') or (ext = '.png') then begin | |
4326 | + urls.Add(url) | |
4327 | + end; | |
4328 | + end; | |
4329 | + end; | |
4330 | + end; | |
4331 | + end; | |
4332 | + end; | |
4333 | +end; | |
4334 | + | |
4041 | 4335 | end. |
4042 | 4336 |
@@ -114,6 +114,8 @@ type | ||
114 | 114 | FGikoMessage: TGikoMessage; |
115 | 115 | //! éZp[^ÅæØç꽶ñ©çÔÚ̶ñðæèo· |
116 | 116 | function ChooseString(const Text, Separator: string; Index: integer): string; |
117 | + //! êt@C©çÌ | |
118 | + procedure RestoreThreadData(Board: TBoard); | |
117 | 119 | public |
118 | 120 | { Public é¾ } |
119 | 121 | FAbon : TAbon; |
@@ -256,7 +258,7 @@ const | ||
256 | 258 | ZERO_DATE: Integer = 25569; |
257 | 259 | BETA_VERSION_NAME_E = 'beta'; |
258 | 260 | BETA_VERSION_NAME_J = 'ÊÞÀ'; |
259 | - BETA_VERSION = 53; | |
261 | + BETA_VERSION = 54; | |
260 | 262 | BETA_VERSION_BUILD = ''; //!< debugÅÈÇ |
261 | 263 | APP_NAME = 'gikoNavi'; |
262 | 264 | BE_PHP_URL = 'http://be.2ch.net/test/p.php?i='; |
@@ -554,24 +556,17 @@ var | ||
554 | 556 | ThreadItem: TThreadItem; |
555 | 557 | FileName: string; |
556 | 558 | FileList: TStringList; |
557 | - TmpFileList: TStringList; | |
558 | 559 | Index: Integer; |
559 | 560 | sl: TStringList; |
560 | 561 | i: Integer; |
561 | 562 | Rec: TIndexRec; |
562 | 563 | UnRead: Integer; |
563 | - ini: TMemIniFile; | |
564 | 564 | ResRec: TResRec; |
565 | -// RoundItem: TRoundItem; | |
566 | -// idx: Integer; | |
567 | 565 | usePlugIn : Boolean; |
568 | - tmpStr: string; | |
569 | 566 | BoardPath : String; |
570 | 567 | server : String; |
571 | 568 | islog : Boolean; |
572 | 569 | urlHead: String; |
573 | - //protocol, host, path, document, port, bookmark : string; | |
574 | - //is2ch : Boolean; | |
575 | 570 | {* |
576 | 571 | FavoThreadItem : TFavoriteThreadItem; |
577 | 572 | Node: TTreeNode; |
@@ -581,25 +576,17 @@ begin | ||
581 | 576 | Exit; |
582 | 577 | Board.Clear; |
583 | 578 | UnRead := 0; |
584 | - //is2ch := false; | |
585 | 579 | usePlugIn := Board.IsBoardPlugInAvailable; |
586 | 580 | server := UrlToServer( Board.URL ); |
587 | - //is2ch := Is2chHost(server); | |
588 | 581 | |
589 | 582 | FileName := Board.GetFolderIndexFileName; |
590 | 583 | |
591 | 584 | FileList := TStringList.Create; |
592 | 585 | FileList.Sorted := True; |
593 | 586 | FileList.BeginUpdate; |
594 | - TmpFileList := TStringList.Create; | |
595 | - TmpFileList.Sorted := True; | |
596 | - TmpFileList.BeginUpdate; | |
597 | 587 | //IsLogFilepDATt@CXg |
598 | 588 | GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False); |
599 | 589 | FileList.EndUpdate; |
600 | - //OñÙíI¹pTmpt@CXg | |
601 | - GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.tmp', TmpFileList, False); | |
602 | - TmpFileList.EndUpdate; | |
603 | 590 | |
604 | 591 | // d¡ðh® |
605 | 592 | Board.BeginUpdate; |
@@ -650,8 +637,7 @@ begin | ||
650 | 637 | |
651 | 638 | ThreadItem.No := Rec.FNo; |
652 | 639 | ThreadItem.FileName := Rec.FFileName; |
653 | - ThreadItem.Title := Rec.FTitle; | |
654 | - //ThreadItem.ShortTitle := CustomStringReplace(ZenToHan(ThreadItem.Title), ' ', ''); | |
640 | + ThreadItem.Title := MojuUtils.UnSanitize(Rec.FTitle); | |
655 | 641 | ThreadItem.Count := Rec.FCount; |
656 | 642 | ThreadItem.Size := Rec.FSize; |
657 | 643 | ThreadItem.RoundDate := Rec.FRoundDate; |
@@ -724,50 +710,12 @@ begin | ||
724 | 710 | Board.Add(ThreadItem); |
725 | 711 | end; |
726 | 712 | Board.EndUpdate; |
727 | - | |
728 | - //OñÙíI¹`FbN | |
729 | - for i := TmpFileList.Count - 1 downto 0 do begin | |
730 | - //if TmpFileList.Count <> 0 then begin | |
731 | - ThreadItem := Board.FindThreadFromFileName(ChangeFileExt(TmpFileList[i], '.dat')); | |
732 | - if ThreadItem <> nil then begin | |
733 | - //if TmpFileList.Find(ChangeFileExt(ThreadItem.FileName, '.tmp'), Index) then begin | |
734 | - ini := TMemIniFile.Create(Boardpath + TmpFileList[i]); | |
735 | - try | |
736 | - tmpStr := ini.ReadString('Setting', 'RoundDate', DateTimeToStr(ZERO_DATE)); | |
737 | - ThreadItem.RoundDate := ConvertDateTimeString(tmpStr); | |
738 | - | |
739 | - tmpStr := ini.ReadString('Setting', 'LastModified', DateTimeToStr(ZERO_DATE)); | |
740 | - ThreadItem.LastModified := ConvertDateTimeString(tmpStr); | |
741 | - ThreadItem.Count := ini.ReadInteger('Setting', 'Count', 0); | |
742 | - ThreadItem.NewReceive := ini.ReadInteger('Setting', 'NewReceive', 0); | |
743 | - | |
744 | - ThreadItem.Size := ini.ReadInteger('Setting', 'Size', 0); | |
745 | - if(ThreadItem.Size = 0) and (FileExists(ThreadItem.GetThreadFileName)) then begin | |
746 | - try | |
747 | - ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count; | |
748 | - except | |
749 | - end; | |
750 | - end; | |
751 | - | |
752 | - //ñÌÝèÍRoundDataÌûªâé©çèÉÝèµÄÍ_I@by à¶ã | |
753 | - //ThreadItem.Round := ini.ReadBool('Setting', 'Round', False); | |
754 | - //ThreadItem.RoundName := ini.ReadString('Setting', 'RoundName', ThreadItem.RoundName); | |
755 | - ThreadItem.UnRead := False;//ini.ReadBool('Setting', 'UnRead', False); | |
756 | - ThreadItem.ScrollTop := ini.ReadInteger('Setting', 'ScrollTop', 0); | |
757 | - ThreadItem.AllResCount := ini.ReadInteger('Setting', 'AllResCount', ThreadItem.Count); | |
758 | - ThreadItem.NewResCount := ini.ReadInteger('Setting', 'NewResCount', 0); | |
759 | - ThreadItem.AgeSage := TGikoAgeSage(ini.ReadInteger('Setting', 'AgeSage', Ord(gasNone))); | |
760 | - finally | |
761 | - ini.Free; | |
762 | - end; | |
763 | - DeleteFile(Boardpath + TmpFileList[i]); | |
764 | - end; | |
765 | - end; | |
766 | - | |
713 | + | |
714 | + //OñÙíI¹`FbN | |
715 | + RestoreThreadData( Board ); | |
767 | 716 | finally |
768 | 717 | sl.Free; |
769 | 718 | FileList.Free; |
770 | - TmpFileList.Free; | |
771 | 719 | Board.Sorted := False; |
772 | 720 | end; |
773 | 721 | Board.IsThreadDatRead := True; |
@@ -824,7 +772,7 @@ begin | ||
824 | 772 | '%s'#1'%x'#1'%x'#1'%x'#1'%x'#1'%x', |
825 | 773 | [cnt, //Ô |
826 | 774 | Rec.FFileName, //t@C¼ |
827 | - Rec.FTitle, //^Cg | |
775 | + MojuUtils.Sanitize(Rec.FTitle), //^Cg | |
828 | 776 | Rec.FCount, //JEg |
829 | 777 | 0, //size |
830 | 778 | 0, //RoundDate |
@@ -894,7 +842,7 @@ begin | ||
894 | 842 | '%s'#1'%x'#1'%x'#1'%x'#1'%x'#1'%x', |
895 | 843 | [Board.Items[i].No, //Ô |
896 | 844 | Board.Items[i].FileName, //t@C¼ |
897 | - Board.Items[i].Title, //^Cg | |
845 | + MojuUtils.Sanitize(Board.Items[i].Title), //^Cg | |
898 | 846 | Board.Items[i].Count, //JEg |
899 | 847 | Board.Items[i].Size, //size |
900 | 848 | DateTimeToInt(Board.Items[i].RoundDate), //RoundDate |
@@ -933,7 +881,7 @@ function TGikoSys.ParseIndexLine(Line: string): TIndexRec; | ||
933 | 881 | begin |
934 | 882 | Result.FNo := StrToIntDef('$' + RemoveToken(Line, #1), 0); |
935 | 883 | Result.FFileName := RemoveToken(Line, #1); |
936 | - Result.FTitle := RemoveToken(Line, #1); | |
884 | + Result.FTitle := MojuUtils.UnSanitize(RemoveToken(Line, #1)); | |
937 | 885 | Result.FCount := StrToIntDef('$' + RemoveToken(Line, #1), 0); |
938 | 886 | Result.FSize := StrToIntDef('$' + RemoveToken(Line, #1), 0); |
939 | 887 | Result.FRoundDate := IntToDateTime(StrToIntDef('$' + RemoveToken(Line, #1), ZERO_DATE)); |
@@ -3306,6 +3254,67 @@ begin | ||
3306 | 3254 | p := AnsiPos(Separator, S); |
3307 | 3255 | if (p > 0) then Result := Copy(S, 1, p - 1) else Result := S; |
3308 | 3256 | end; |
3257 | +//! êt@C©çÌ | |
3258 | +procedure TGikoSys.RestoreThreadData(Board : TBoard); | |
3259 | +const | |
3260 | + SECTION = 'Setting'; | |
3261 | +var | |
3262 | + TmpFileList : TStringList; | |
3263 | + i : Integer; | |
3264 | + ini : TMemIniFile; | |
3265 | + ThreadItem : TThreadItem; | |
3266 | + Boardpath, tmpStr : string; | |
3267 | +begin | |
3268 | + Boardpath := ExtractFilePath(Board.GetFolderIndexFileName); | |
3269 | + | |
3270 | + TmpFileList := TStringList.Create; | |
3271 | + TmpFileList.Sorted := True; | |
3272 | + TmpFileList.BeginUpdate; | |
3273 | + try | |
3274 | + //OñÙíI¹pTmpt@CXg | |
3275 | + GetFileList(Boardpath, '*.tmp', TmpFileList, False); | |
3276 | + TmpFileList.EndUpdate; | |
3277 | + //OñÙíI¹`FbN | |
3278 | + for i := TmpFileList.Count - 1 downto 0 do begin | |
3279 | + ThreadItem := Board.FindThreadFromFileName(ChangeFileExt(TmpFileList[i], '.dat')); | |
3280 | + if ThreadItem <> nil then begin | |
3281 | + ini := TMemIniFile.Create(Boardpath + TmpFileList[i]); | |
3282 | + try | |
3283 | + tmpStr := ini.ReadString(SECTION, 'RoundDate', DateTimeToStr(ZERO_DATE)); | |
3284 | + ThreadItem.RoundDate := ConvertDateTimeString(tmpStr); | |
3285 | + | |
3286 | + tmpStr := ini.ReadString(SECTION, 'LastModified', DateTimeToStr(ZERO_DATE)); | |
3287 | + ThreadItem.LastModified := ConvertDateTimeString(tmpStr); | |
3288 | + ThreadItem.Count := ini.ReadInteger(SECTION, 'Count', 0); | |
3289 | + ThreadItem.NewReceive := ini.ReadInteger(SECTION, 'NewReceive', 0); | |
3290 | + | |
3291 | + ThreadItem.Size := ini.ReadInteger(SECTION, 'Size', 0); | |
3292 | + if(ThreadItem.Size = 0) and (FileExists(ThreadItem.GetThreadFileName)) then begin | |
3293 | + try | |
3294 | + ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count; | |
3295 | + except | |
3296 | + end; | |
3297 | + end; | |
3298 | + | |
3299 | + //ñÌÝèÍRoundDataÌûªâé©çèÉÝèµÄÍ_I@by à¶ã | |
3300 | + //ThreadItem.Round := ini.ReadBool('Setting', 'Round', False); | |
3301 | + //ThreadItem.RoundName := ini.ReadString('Setting', 'RoundName', ThreadItem.RoundName); | |
3302 | + ThreadItem.UnRead := False;//ini.ReadBool('Setting', 'UnRead', False); | |
3303 | + ThreadItem.ScrollTop := ini.ReadInteger(SECTION, 'ScrollTop', 0); | |
3304 | + ThreadItem.AllResCount := ini.ReadInteger(SECTION, 'AllResCount', ThreadItem.Count); | |
3305 | + ThreadItem.NewResCount := ini.ReadInteger(SECTION, 'NewResCount', 0); | |
3306 | + ThreadItem.AgeSage := TGikoAgeSage(ini.ReadInteger(SECTION, 'AgeSage', Ord(gasNone))); | |
3307 | + finally | |
3308 | + ini.Free; | |
3309 | + end; | |
3310 | + DeleteFile(Boardpath + TmpFileList[i]); | |
3311 | + end; | |
3312 | + end; | |
3313 | + finally | |
3314 | + TmpFileList.Clear; | |
3315 | + TmpFileList.Free; | |
3316 | + end; | |
3317 | +end; | |
3309 | 3318 | |
3310 | 3319 | initialization |
3311 | 3320 | GikoSys := TGikoSys.Create; |
@@ -1089,6 +1089,7 @@ begin | ||
1089 | 1089 | end; |
1090 | 1090 | //Xg(subject.txt)ðÛ¶ |
1091 | 1091 | GikoSys.ForceDirectoriesEx(ExtractFilePath(Board.GetSubjectFileName)); |
1092 | + Body.Text := MojuUtils.Sanitize(Body.Text); | |
1092 | 1093 | Body.SaveToFile(Board.GetSubjectFileName); |
1093 | 1094 | end; |
1094 | 1095 | finally |
@@ -395,6 +395,35 @@ object KuroutOption: TKuroutOption | ||
395 | 395 | TabOrder = 0 |
396 | 396 | end |
397 | 397 | end |
398 | + object GroupBox3: TGroupBox | |
399 | + Left = 16 | |
400 | + Top = 126 | |
401 | + Width = 473 | |
402 | + Height = 51 | |
403 | + Caption = #12522#12531#12463#31227#21205#23653#27508 | |
404 | + TabOrder = 1 | |
405 | + object Label10: TLabel | |
406 | + Left = 8 | |
407 | + Top = 20 | |
408 | + Width = 84 | |
409 | + Height = 12 | |
410 | + Caption = #23653#27508#26368#22823#20445#25345#25968 | |
411 | + end | |
412 | + object Label11: TLabel | |
413 | + Left = 227 | |
414 | + Top = 20 | |
415 | + Width = 158 | |
416 | + Height = 12 | |
417 | + Caption = #65288#12487#12501#12457#12523#12488'=20 '#20877#36215#21205#24460#26377#21177#65289 | |
418 | + end | |
419 | + object MoveHistoryMaxEdit: TEdit | |
420 | + Left = 112 | |
421 | + Top = 16 | |
422 | + Width = 105 | |
423 | + Height = 20 | |
424 | + TabOrder = 0 | |
425 | + end | |
426 | + end | |
398 | 427 | end |
399 | 428 | end |
400 | 429 | object OkBotton: TButton |
@@ -61,6 +61,10 @@ type | ||
61 | 61 | Label8: TLabel; |
62 | 62 | FixedCookieEdit: TEdit; |
63 | 63 | Label9: TLabel; |
64 | + GroupBox3: TGroupBox; | |
65 | + Label10: TLabel; | |
66 | + MoveHistoryMaxEdit: TEdit; | |
67 | + Label11: TLabel; | |
64 | 68 | procedure OkBottonClick(Sender: TObject); |
65 | 69 | procedure FormCreate(Sender: TObject); |
66 | 70 | procedure CDeleteButtonClick(Sender: TObject); |
@@ -123,6 +127,8 @@ begin | ||
123 | 127 | RemoteTrapAtt.Checked := GikoSys.Setting.RemoteTrapAtt; |
124 | 128 | // Cookie |
125 | 129 | FixedCookieEdit.Text := GikoSys.Setting.FixedCookie; |
130 | + // NÚ®ð | |
131 | + MoveHistoryMaxEdit.Text := IntToStr( GikoSys.Setting.MoveHistorySize ); | |
126 | 132 | end; |
127 | 133 | |
128 | 134 | procedure TKuroutOption.SaveSetting; |
@@ -150,6 +156,9 @@ begin | ||
150 | 156 | // Cookie |
151 | 157 | GikoSys.Setting.FixedCookie := FixedCookieEdit.Text; |
152 | 158 | |
159 | + // NÚ®ð | |
160 | + GikoSys.Setting.MoveHistorySize := | |
161 | + StrToIntDef( MoveHistoryMaxEdit.Text, 20 ); | |
153 | 162 | |
154 | 163 | GikoSys.Setting.KuroutSettingTabIndex := PageControl1.ActivePageIndex; |
155 | 164 | end; |
@@ -0,0 +1,182 @@ | ||
1 | +unit MoveHistoryItem; | |
2 | + | |
3 | +interface | |
4 | + | |
5 | +uses | |
6 | + SysUtils, Classes, BoardGroup, BrowserRecord, | |
7 | +{$IF Defined(DELPRO) } | |
8 | + SHDocVw, | |
9 | + MSHTML, | |
10 | +{$ELSE} | |
11 | + SHDocVw_TLB, | |
12 | + MSHTML_TLB, | |
13 | +{$IFEND} | |
14 | + OleCtrls, ActiveX; | |
15 | +type | |
16 | + | |
17 | + TMoveHistoryItem = class(TObject) | |
18 | + private | |
19 | + FThreadItem : TThreadItem; | |
20 | + FScrollTop : Integer; | |
21 | + public | |
22 | + property ThreadItem : TThreadItem read FThreadItem write FThreadItem; | |
23 | + property ScrollTop : Integer read FScrollTop write FScrollTop; | |
24 | + end; | |
25 | + | |
26 | + TMoveHistory = class(TList) | |
27 | + private | |
28 | + FHistoryMax : Integer; | |
29 | + FIndex : Integer; | |
30 | + { | |
31 | + \brief NÚ®ðÅåÛðÝè·éB | |
32 | + \param AVal Û | |
33 | + } | |
34 | + procedure SetHistoryMax(AVal: Integer); | |
35 | + { | |
36 | + \brief NÚ®ðÅåÛðæ¾·éB | |
37 | + \return Û( > 0 ) | |
38 | + } | |
39 | + function GetHistoryMax: Integer; | |
40 | + public | |
41 | + constructor Create( max : Integer ); overload; | |
42 | + function pushItem( item: TMoveHistoryItem): Integer; overload; | |
43 | + function pushItem( item: TBrowserRecord): Integer; overload; | |
44 | + function getPrevItem( item: TBrowserRecord): TMoveHistoryItem; | |
45 | + function getNextItem: TMoveHistoryItem; | |
46 | + procedure clear; override; | |
47 | + property HistoryMax : Integer read GetHistoryMax write SetHistoryMax; | |
48 | + property HisotryIndex: Integer read FIndex; | |
49 | + end; | |
50 | + | |
51 | +var | |
52 | + MoveHisotryManager : TMoveHistory; | |
53 | + | |
54 | +implementation | |
55 | + | |
56 | +uses | |
57 | + GikoSystem; | |
58 | + | |
59 | + | |
60 | +//! RXgN^ | |
61 | +constructor TMoveHistory.Create( max : Integer ); | |
62 | +begin | |
63 | + inherited Create; | |
64 | + | |
65 | + FIndex := 0; | |
66 | + | |
67 | + SetHistoryMax( GikoSys.Setting.MoveHistorySize ); | |
68 | +end; | |
69 | +//! Ú®ðÌACeÇÁ | |
70 | +function TMoveHistory.pushItem( item: TMoveHistoryItem): Integer; | |
71 | +var | |
72 | + i : Integer; | |
73 | + top: TMoveHistoryItem; | |
74 | +begin | |
75 | + Result := -1; | |
76 | + if (Self.Count > 0) then begin | |
77 | + top := TMoveHistoryItem( Self.Items[Self.Count - 1] ); | |
78 | + if (top.FThreadItem = item.FThreadItem) and | |
79 | + (top.FScrollTop = item.FScrollTop) then begin | |
80 | + Exit; | |
81 | + end; | |
82 | + end; | |
83 | + // ÛÌÅålð´¦éêæªðí | |
84 | + if (FIndex + 1 > FHistoryMax) then begin | |
85 | + if ( Self.Items[0] <> nil ) then begin | |
86 | + TMoveHistoryItem( Self.Items[0] ).Free; | |
87 | + end; | |
88 | + Self.Delete(0); | |
89 | + Dec(Findex); | |
90 | + end; | |
91 | + // FIndexæèãëÌACeðí·é | |
92 | + for i := Self.Count - 1 downto Findex do begin | |
93 | + if (Self.Items [i] <> nil) then begin | |
94 | + TMoveHistoryItem( Self.Items[i] ).Free; | |
95 | + end; | |
96 | + Self.Delete(i); | |
97 | + end; | |
98 | + Inc(FIndex); | |
99 | + Result := Self.Add( item ); | |
100 | +end; | |
101 | +//! Ú®ðÌACeÇÁ | |
102 | +function TMoveHistory.pushItem( item: TBrowserRecord): Integer; | |
103 | +var | |
104 | + history : TMoveHistoryItem; | |
105 | + doc : OleVariant; | |
106 | +begin | |
107 | + Result := -1; | |
108 | + if ( item <> nil ) and ( item.Thread <> nil ) | |
109 | + and ( item.Browser <> nil) then begin | |
110 | + history := TMoveHistoryItem.Create; | |
111 | + history.FThreadItem := item.Thread; | |
112 | + doc := Idispatch( olevariant(item.Browser.ControlInterface).Document) as IHTMLDocument2; | |
113 | + history.ScrollTop := doc.Body.ScrollTop; | |
114 | + | |
115 | + Result := pushItem( history ); | |
116 | + end; | |
117 | +end; | |
118 | +//! êÂOÌðACeæ¾ | |
119 | +function TMoveHistory.getPrevItem(item: TBrowserRecord): TMoveHistoryItem; | |
120 | +begin | |
121 | + Result := nil; | |
122 | + if (FIndex = Self.Count) and (item <> nil) then begin | |
123 | + pushItem( item ); | |
124 | + Dec(FIndex); | |
125 | + end; | |
126 | + if ( FIndex > 0 ) then begin | |
127 | + Dec( FIndex ); | |
128 | + Result := TMoveHistoryItem( Self.items[ FIndex ] ); | |
129 | + end; | |
130 | +end; | |
131 | +//! êÂãëÌðACeæ¾ | |
132 | +function TMoveHistory.getNextItem: TMoveHistoryItem; | |
133 | +begin | |
134 | + Result := nil; | |
135 | + if ( FIndex < Self.Count - 1 ) then begin | |
136 | + Inc( FIndex ); | |
137 | + Result := TMoveHistoryItem( Self.items[ FIndex ] ); | |
138 | + end; | |
139 | +end; | |
140 | +//! ðÌSÁ | |
141 | +procedure TMoveHistory.clear; | |
142 | +var | |
143 | + i : Integer; | |
144 | +begin | |
145 | + // ACeðí·é | |
146 | + for i := Self.Count - 1 downto 0 do begin | |
147 | + if (Self.Items [i] <> nil) then begin | |
148 | + TMoveHistoryItem( Self.Items[i] ).Free; | |
149 | + end; | |
150 | + Self.Delete(i); | |
151 | + end; | |
152 | + Self.Capacity := 0; | |
153 | + FIndex := 0; | |
154 | + inherited; | |
155 | +end; | |
156 | + | |
157 | +procedure TMoveHistory.SetHistoryMax(AVal: Integer); | |
158 | +begin | |
159 | + // ðÌTCYÍ0æèå«È¢Æ¢¯È¢ | |
160 | + if ( AVal > 0 ) then begin | |
161 | + if ((AVal + 1) <> FHistoryMax) then begin | |
162 | + Self.clear; | |
163 | + // Ú®µ½ÛÉAßéNð1«·ÌÅ | |
164 | + FHistoryMax := AVal + 1; | |
165 | + end; | |
166 | + end; | |
167 | +end; | |
168 | +function TMoveHistory.GetHistoryMax: Integer; | |
169 | +begin | |
170 | + // Ú®µ½ÛÉAßéNð1«·ÌÅ | |
171 | + Result := FHistoryMax - 1; | |
172 | +end; | |
173 | +initialization | |
174 | + MoveHisotryManager := TMoveHistory.Create( 20 ); | |
175 | + | |
176 | +finalization | |
177 | + if MoveHisotryManager <> nil then begin | |
178 | + MoveHisotryManager.clear; | |
179 | + MoveHisotryManager.Free; | |
180 | + MoveHisotryManager := nil; | |
181 | + end; | |
182 | +end. |
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog | ||
61 | 61 | Top = 4 |
62 | 62 | Width = 509 |
63 | 63 | Height = 389 |
64 | - ActivePage = TabSheet3 | |
64 | + ActivePage = TabSheet4 | |
65 | 65 | MultiLine = True |
66 | - TabIndex = 3 | |
66 | + TabIndex = 7 | |
67 | 67 | TabOrder = 3 |
68 | 68 | OnChange = OptionTabChange |
69 | 69 | object ConnectSheet: TTabSheet |
@@ -1207,9 +1207,9 @@ object OptionDialog: TOptionDialog | ||
1207 | 1207 | end |
1208 | 1208 | end |
1209 | 1209 | object GroupBox19: TGroupBox |
1210 | - Left = 11 | |
1210 | + Left = 12 | |
1211 | 1211 | Top = 74 |
1212 | - Width = 465 | |
1212 | + Width = 473 | |
1213 | 1213 | Height = 49 |
1214 | 1214 | Caption = #23653#27508 |
1215 | 1215 | TabOrder = 1 |
@@ -1238,6 +1238,38 @@ object OptionDialog: TOptionDialog | ||
1238 | 1238 | OnExit = MaxRecordCountEditExit |
1239 | 1239 | end |
1240 | 1240 | end |
1241 | + object GroupBox21: TGroupBox | |
1242 | + Left = 11 | |
1243 | + Top = 133 | |
1244 | + Width = 473 | |
1245 | + Height = 52 | |
1246 | + Caption = #26368#23567#21270#26178#12479#12473#12463#12488#12524#12452 | |
1247 | + TabOrder = 2 | |
1248 | + object StoredTaskTrayCB: TCheckBox | |
1249 | + Left = 11 | |
1250 | + Top = 24 | |
1251 | + Width = 118 | |
1252 | + Height = 17 | |
1253 | + Caption = #26377#21177#12395#12377#12427 | |
1254 | + TabOrder = 0 | |
1255 | + end | |
1256 | + end | |
1257 | + object GroupBox22: TGroupBox | |
1258 | + Left = 12 | |
1259 | + Top = 200 | |
1260 | + Width = 473 | |
1261 | + Height = 52 | |
1262 | + Caption = #12502#12521#12454#12470#12479#12502 | |
1263 | + TabOrder = 3 | |
1264 | + object LoopBrowserTabsCB: TCheckBox | |
1265 | + Left = 11 | |
1266 | + Top = 24 | |
1267 | + Width = 134 | |
1268 | + Height = 17 | |
1269 | + Caption = #12523#12540#12503#12375#12390#31227#21205#12377#12427 | |
1270 | + TabOrder = 0 | |
1271 | + end | |
1272 | + end | |
1241 | 1273 | end |
1242 | 1274 | object SoundSheet: TTabSheet |
1243 | 1275 | Caption = #12469#12454#12531#12489 |
@@ -205,6 +205,10 @@ type | ||
205 | 205 | GroupBox20: TGroupBox; |
206 | 206 | AutoSortCheckBox: TCheckBox; |
207 | 207 | Label24: TLabel; |
208 | + GroupBox21: TGroupBox; | |
209 | + StoredTaskTrayCB: TCheckBox; | |
210 | + GroupBox22: TGroupBox; | |
211 | + LoopBrowserTabsCB: TCheckBox; | |
208 | 212 | procedure FormCreate(Sender: TObject); |
209 | 213 | procedure FormDestroy(Sender: TObject); |
210 | 214 | procedure ApplyButtonClick(Sender: TObject); |
@@ -864,6 +868,10 @@ begin | ||
864 | 868 | BeAutoLoginCheckBox.Checked := GikoSys.Setting.BeAutoLogin; |
865 | 869 | //ðÌÅåÛ¶ |
866 | 870 | MaxRecordCountEdit.Text := IntToStr(GikoSys.Setting.MaxRecordCount); |
871 | + // Ŭ»É^XNgCÉi[·é© | |
872 | + StoredTaskTrayCB.Checked := GikoSys.Setting.StoredTaskTray; | |
873 | + // uEU^uÌÚ®Å[vðÂ·é© | |
874 | + LoopBrowserTabsCB.Checked := GikoSys.Setting.LoopBrowserTabs; | |
867 | 875 | end; |
868 | 876 | |
869 | 877 | procedure TOptionDialog.SaveSetting; |
@@ -1151,6 +1159,9 @@ begin | ||
1151 | 1159 | GikoSys.Setting.BeAutoLogin := BeAutoLoginCheckBox.Checked; |
1152 | 1160 | //ðÌÅåÛ¶ |
1153 | 1161 | GikoSys.Setting.MaxRecordCount := Max(StrToInt64Def(MaxRecordCountEdit.Text,100),1); |
1162 | + GikoSys.Setting.StoredTaskTray := StoredTaskTrayCB.Checked; | |
1163 | + GikoSys.Setting.LoopBrowserTabs := LoopBrowserTabsCB.Checked; | |
1164 | + | |
1154 | 1165 | end; |
1155 | 1166 | |
1156 | 1167 | procedure TOptionDialog.SettingApply; |
@@ -5,7 +5,7 @@ interface | ||
5 | 5 | |
6 | 6 | uses |
7 | 7 | SysUtils, Classes, Graphics, Forms, {Math, IniFiles, UCryptAuto, UBase64,} |
8 | - ComCtrls, GestureModel; | |
8 | + ComCtrls, GestureModel, IniFiles; | |
9 | 9 | |
10 | 10 | const |
11 | 11 | MAIN_COOLBAND_COUNT = 4; //CCoolBandÌ |
@@ -430,9 +430,14 @@ type | ||
430 | 430 | FInputAssistFormWidth: Integer; |
431 | 431 | FInputAssistFormHeight: Integer; |
432 | 432 | |
433 | - // CookieÉtÁ·éÅèR[h | |
433 | + //! CookieÉtÁ·éÅèR[h | |
434 | 434 | FFixedCookie: String; |
435 | - | |
435 | + //! NÚ®ðÌÛ | |
436 | + FMoveHistorySize : Integer; | |
437 | + //! Ŭ»µ½Æ«É^XNgCÉi[·é© | |
438 | + FStoredTaskTray : Boolean; | |
439 | + //! ^uÌÚ®Å[vð·é | |
440 | + FLoopBrowserTabs : Boolean; | |
436 | 441 | function GetMainCoolSet(Index: Integer): TCoolSet; |
437 | 442 | function GetBoardCoolSet(Index: Integer): TCoolSet; |
438 | 443 | function GetBrowserCoolSet(Index: Integer): TCoolSet; |
@@ -458,6 +463,16 @@ type | ||
458 | 463 | |
459 | 464 | procedure SetUseCSS( value: Boolean ); |
460 | 465 | procedure SetCSSFileName( fileName: string ); |
466 | + //! vLVÝèÇÝÝ | |
467 | + procedure ReadProxySettings(memIni: TMemIniFile); | |
468 | + //! eíEBhEÝèÇÝÝ | |
469 | + procedure ReadWindowSettings(memIni: TMemIniFile); | |
470 | + //! üÍðÇÝÝiõ{[{¼Oj | |
471 | + procedure ReadInputHisotrys(memIni: TMemIniFile); | |
472 | + //! XgJÇÝÝ | |
473 | + procedure ReadListColumnWidth(memIni: TMemIniFile); | |
474 | + //! JeSXgJÇÝÝ | |
475 | + procedure ReadOrdColumn(memIni: TMemIniFile); | |
461 | 476 | protected |
462 | 477 | |
463 | 478 | public |
@@ -503,6 +518,11 @@ type | ||
503 | 518 | function GetEditorKeyFileName: String; |
504 | 519 | procedure WriteLogFolder(AVal : String); |
505 | 520 | function GetInputAssistFileName : String; |
521 | + { | |
522 | + \brief NðÌÛTCYÌsetter | |
523 | + \param AVal Ýè·éTCY( >0) | |
524 | + } | |
525 | + procedure SetMoveHistorySize(AVal : Integer); | |
506 | 526 | //óMobt@TCY |
507 | 527 | property RecvBufferSize: Integer read FRecvBufferSize write FRecvBufferSize; |
508 | 528 | //HTTP1.1gp |
@@ -758,7 +778,12 @@ type | ||
758 | 778 | property InputAssistFormHeight: Integer read FInputAssistFormHeight write FInputAssistFormHeight; |
759 | 779 | //! CookieÉtÁ·éÅèR[h |
760 | 780 | property FixedCookie: String read FFixedCookie write FFixedCookie; |
761 | - | |
781 | + //! NÚ®ðÌÛ | |
782 | + property MoveHistorySize : Integer read FMoveHistorySize write SetMoveHistorySize; | |
783 | + //! Ŭ»É^XNgCÉi[·é© | |
784 | + property StoredTaskTray : Boolean read FStoredTaskTray write FStoredTaskTray; | |
785 | + //! uEU^uÌ[vð·é | |
786 | + property LoopBrowserTabs : Boolean read FLoopBrowserTabs write FLoopBrowserTabs; | |
762 | 787 | end; |
763 | 788 | |
764 | 789 |
@@ -800,7 +825,7 @@ const | ||
800 | 825 | implementation |
801 | 826 | |
802 | 827 | uses |
803 | - Math, IniFiles, UCryptAuto, UBase64; | |
828 | + Math, UCryptAuto, UBase64; | |
804 | 829 | |
805 | 830 | type |
806 | 831 | TSoundName = record |
@@ -953,20 +978,11 @@ end; | ||
953 | 978 | |
954 | 979 | //Ýèt@CÇ |
955 | 980 | procedure TSetting.ReadSettingFile(); |
956 | -const | |
957 | - DEFAULT_BBS_WIDTH: array[0..0] of Integer = (140); | |
958 | - DEFAULT_CATEGORY_WIDTH: array[0..2] of Integer = (150, 80, 130); | |
959 | - DEFAULT_BOARD_WIDTH: array[0..10] of Integer = (350, 60, 60, 60, 60, 60, 80, 130, 130, 130, 60); | |
960 | - MAX_WIDTH: Integer = 2000; | |
961 | 981 | var |
962 | 982 | ini: TMemIniFile; |
963 | 983 | i: Integer; |
964 | - id, code : Integer; | |
965 | - wkList: TStringList; | |
966 | - wkStr: string; | |
967 | 984 | Exists: Boolean; |
968 | 985 | s: string; |
969 | -// id: Integer; | |
970 | 986 | CoolSet: TCoolSet; |
971 | 987 | begin |
972 | 988 | Exists := FileExists(GetFileName); |
@@ -979,60 +995,11 @@ begin | ||
979 | 995 | //vLVÚ±HTTP1.1gp |
980 | 996 | FProxyProtocol := ini.ReadBool('HTTP', 'ProxyProtocol', False); |
981 | 997 | |
982 | - FReadProxy := ini.ReadBool('ReadProxy', 'Proxy', false); | |
983 | - FReadProxyAddress := ini.ReadString('ReadProxy', 'Address', ''); | |
984 | - FReadProxyPort := ini.ReadInteger('ReadProxy', 'Port', 0); | |
985 | - FReadProxyUserID := ini.ReadString('ReadProxy', 'UserID', ''); | |
986 | - FReadProxyPassword := ini.ReadString('ReadProxy', 'Password', ''); | |
987 | - | |
988 | - FWriteProxy := ini.ReadBool('WriteProxy', 'Proxy', false); | |
989 | - FWriteProxyAddress := ini.ReadString('WriteProxy', 'Address', ''); | |
990 | - FWriteProxyPort := ini.ReadInteger('WriteProxy', 'Port', 0); | |
991 | - FWriteProxyUserID := ini.ReadString('WriteProxy', 'UserID', ''); | |
992 | - FWriteProxyPassword := ini.ReadString('WriteProxy', 'Password', ''); | |
993 | - | |
994 | - FBrowserFontName := ini.ReadString('Window', 'BrowserFontName', ''); | |
995 | - FBrowserFontSize := ini.ReadInteger('Window', 'BrowserFontSize', 0); | |
996 | - FBrowserFontBold := ini.ReadInteger('Window', 'BrowserFontBold', 0); | |
997 | - FBrowserFontItalic := ini.ReadInteger('Window', 'BrowserFontItalic', 0); | |
998 | - FBrowserFontColor := ini.ReadInteger('Window', 'BrowserFontColor', -1); | |
999 | - FBrowserBackColor := ini.ReadInteger('Window', 'BrowserBackColor', -1); | |
1000 | - | |
1001 | - FCabinetFontName := ini.ReadString('Window', 'CabinetFontName', DEFAULT_FONT_NAME); | |
1002 | - FCabinetFontSize := ini.ReadInteger('Window', 'CabinetFontSize', DEFAULT_FONT_SIZE); | |
1003 | - FCabinetFontBold := ini.ReadBool('Window', 'CabinetFontBold', False); | |
1004 | - FCabinetFontItalic := ini.ReadBool('Window', 'CabinetFontItalic', False); | |
1005 | - FCabinetFontColor := StringToColor(ini.ReadString('Window', 'CabinetFontColor', DEFAULT_FONT_COLOR)); | |
1006 | - FCabinetBackColor := StringToColor(ini.ReadString('Window', 'CabinetBackColor', DEFAULT_WINDOW_COLOR)); | |
1007 | - | |
1008 | - FListFontName := ini.ReadString('Window', 'ListFontName', DEFAULT_FONT_NAME); | |
1009 | - FListFontSize := ini.ReadInteger('Window', 'ListFontSize', DEFAULT_FONT_SIZE); | |
1010 | - FListFontBold := ini.ReadBool('Window', 'ListFontBold', False); | |
1011 | - FListFontItalic := ini.ReadBool('Window', 'ListFontItalic', False); | |
1012 | - FListFontColor := StringToColor(ini.ReadString('Window', 'ListFontColor', DEFAULT_FONT_COLOR)); | |
1013 | - FListBackColor := StringToColor(ini.ReadString('Window', 'ListBackColor', DEFAULT_WINDOW_COLOR)); | |
1014 | - FUseOddColorOddResNum := ini.ReadBool('Window','UseOddColor', False); | |
1015 | - FOddColor := StringToColor(ini.ReadString('Window', 'OddColor', DEFAULT_WINDOW_COLOR)); | |
1016 | - FUnFocusedBold := ini.ReadBool('Window','UnFocusedBold', False); | |
1017 | - | |
1018 | - FEditorFontName := ini.ReadString('Window', 'EditorFontName', DEFAULT_FONT_NAME); | |
1019 | - FEditorFontSize := ini.ReadInteger('Window', 'EditorFontSize', DEFAULT_FONT_SIZE); | |
1020 | - FEditorFontBold := ini.ReadBool('Window', 'EditorFontBold', False); | |
1021 | - FEditorFontItalic := ini.ReadBool('Window', 'EditorFontItalic', False); | |
1022 | - FEditorFontColor := StringToColor(ini.ReadString('Window', 'EditorFontColor', DEFAULT_FONT_COLOR)); | |
1023 | - FEditorBackColor := StringToColor(ini.ReadString('Window', 'EditorBackColor', DEFAULT_WINDOW_COLOR)); | |
1024 | - | |
1025 | - FBrowserTabFontName := ini.ReadString('Window', 'BrowserTabFontName', DEFAULT_TAB_FONT_NAME); | |
1026 | - FBrowserTabFontSize := ini.ReadInteger('Window', 'BrowserTabFontSize', DEFAULT_TAB_FONT_SIZE); | |
1027 | - FBrowserTabFontBold := ini.ReadBool('Window', 'BrowserTabFontBold', False); | |
1028 | - FBrowserTabFontItalic := ini.ReadBool('Window', 'BrowserTabFontItalic', False); | |
1029 | - | |
1030 | - FHintFontName := ini.ReadString('Window', 'HintFontName', Screen.HintFont.Name); | |
1031 | - FHintFontSize := ini.ReadInteger('Window', 'HintFontSize', Screen.HintFont.Size); | |
1032 | - //FHintFontBold := ini.ReadBool('Window', 'HintFontBold', False); | |
1033 | - //FHintFontItalic := ini.ReadBool('Window', 'HintFontItalic', False); | |
1034 | - FHintFontColor := StringToColor(ini.ReadString('Window', 'HintFontColor', DEFAULT_FONT_COLOR)); | |
1035 | - FHintBackColor := StringToColor(ini.ReadString('Window', 'HintBackColor', 'clInfoBk')); | |
998 | + // vLVÝèÇÝÝ | |
999 | + ReadProxySettings( ini ); | |
1000 | + | |
1001 | + // eíEBhEÌÝèÇÝÝ | |
1002 | + ReadWindowSettings( ini ); | |
1036 | 1003 | |
1037 | 1004 | FWindowTop := ini.ReadInteger('WindowSize', 'Top', -1); |
1038 | 1005 | FWindowLeft := ini.ReadInteger('WindowSize', 'Left', -1); |
@@ -1089,112 +1056,14 @@ begin | ||
1089 | 1056 | // FListHeightMax := ini.ReadBool('List', 'HeightMax', False); |
1090 | 1057 | // FListWidthMax := ini.ReadBool('List', 'WidthMax', False); |
1091 | 1058 | |
1092 | - wkList := TStringList.Create; | |
1093 | - try | |
1094 | - ini.ReadSection('Name', wkList); | |
1095 | - for i := 0 to wkList.Count - 1 do begin | |
1096 | - wkStr := ini.ReadString('Name', wkList[i], ''); | |
1097 | - if (wkStr <> '') and (FNameList.IndexOf(wkStr) = -1) then | |
1098 | - FNameList.Add(wkStr); | |
1099 | - end; | |
1100 | - ini.ReadSection('Mail', wkList); | |
1101 | - for i := 0 to wkList.Count - 1 do begin | |
1102 | - wkStr := ini.ReadString('Mail', wkList[i], ''); | |
1103 | - if (wkStr <> '') and (FMailList.IndexOf(wkStr) = -1) then | |
1104 | - FMailList.Add(wkStr); | |
1105 | - end; | |
1106 | - ini.ReadSection('SelectText', wkList); | |
1107 | - for i := 0 to wkList.Count - 1 do begin | |
1108 | - wkStr := ini.ReadString('SelectText', wkList[i], ''); | |
1109 | - if (wkStr <> '') and (FSelectTextList.IndexOf(wkStr) = -1) then | |
1110 | - FSelectTextList.Add(wkStr); | |
1111 | - end; | |
1112 | - finally | |
1113 | - wkList.Free; | |
1114 | - end; | |
1059 | + // üÍÚÌððÇÝÞ | |
1060 | + ReadInputHisotrys( ini ); | |
1115 | 1061 | |
1116 | 1062 | // XgJ |
1117 | - wkList := TStringList.Create; | |
1118 | - try | |
1119 | - ini.ReadSection('BBSColumnWidth', wkList); | |
1120 | - if Length(FBBSColumnWidth) <> wkList.Count then begin | |
1121 | - ini.EraseSection('BBSColumnWidth'); | |
1122 | - end; | |
1123 | - for i := 0 to Length(FBBSColumnWidth) - 1 do begin | |
1124 | - BBSColumnWidth[i] := ini.ReadInteger('BBSColumnWidth', 'ID' + IntToStr(i), DEFAULT_BBS_WIDTH[i]); | |
1125 | - if BBSColumnWidth[i] > MAX_WIDTH then | |
1126 | - BBSColumnWidth[i] := DEFAULT_BBS_WIDTH[i]; | |
1127 | - end; | |
1128 | - ini.ReadSection('CategoryColumnWidth', wkList); | |
1129 | - if Length(FCategoryColumnWidth) <> wkList.Count then begin | |
1130 | - ini.EraseSection('CategoryColumnWidth'); | |
1131 | - end; | |
1132 | - for i := 0 to Length(FCategoryColumnWidth) - 1 do begin | |
1133 | - CategoryColumnWidth[i] := ini.ReadInteger('CategoryColumnWidth', 'ID' + IntToStr(i), DEFAULT_CATEGORY_WIDTH[i]); | |
1134 | - if CategoryColumnWidth[i] > MAX_WIDTH then | |
1135 | - CategoryColumnWidth[i] := DEFAULT_CATEGORY_WIDTH[i]; | |
1136 | - end; | |
1137 | - ini.ReadSection('BoardColumnWidth', wkList); | |
1138 | - if Length(FBoardColumnWidth) <> wkList.Count then begin | |
1139 | - ini.EraseSection('BoardColumnWidth'); | |
1140 | - end; | |
1141 | - for i := 0 to Length(FBoardColumnWidth) - 1 do begin | |
1142 | - BoardColumnWidth[i] := ini.ReadInteger('BoardColumnWidth', 'ID' + IntToStr(i), DEFAULT_BOARD_WIDTH[i]); | |
1143 | - if BoardColumnWidth[i] > MAX_WIDTH then | |
1144 | - BoardColumnWidth[i] := DEFAULT_BOARD_WIDTH[i]; | |
1145 | - end; | |
1146 | - finally | |
1147 | - wkList.Free; | |
1148 | - end; | |
1063 | + ReadListColumnWidth( ini ); | |
1149 | 1064 | |
1150 | 1065 | // JeSXgJ |
1151 | - wkList := TStringList.Create; | |
1152 | - try | |
1153 | - ini.ReadSection( 'BBSColumnOrder', wkList ); | |
1154 | - for i := 0 to wkList.Count - 1 do begin | |
1155 | - wkStr := ini.ReadString( 'BBSColumnOrder', 'ID' + IntToStr( i ), '' ); | |
1156 | - Val( wkStr, id, code ); | |
1157 | - if code = 0 then | |
1158 | - FBBSColumnOrder.Add( TGikoBBSColumnID( id ) ); | |
1159 | - end; | |
1160 | - if FBBSColumnOrder.Count = 0 then begin | |
1161 | - // Ý誳¢ÌÅì¬ | |
1162 | - for i := 0 to Integer( High( TGikoBBSColumnID ) ) do | |
1163 | - FBBSColumnOrder.Add( TGikoBBSColumnID( i ) ); | |
1164 | - end; | |
1165 | - | |
1166 | - ini.ReadSection( 'CategoryColumnOrder', wkList ); | |
1167 | - for i := 0 to wkList.Count - 1 do begin | |
1168 | - wkStr := ini.ReadString( 'CategoryColumnOrder', 'ID' + IntToStr( i ), '' ); | |
1169 | - Val( wkStr, id, code ); | |
1170 | - if code = 0 then | |
1171 | - FCategoryColumnOrder.Add( TGikoCategoryColumnID( id ) ); | |
1172 | - end; | |
1173 | - if FCategoryColumnOrder.Count = 0 then begin | |
1174 | - // Ý誳¢ÌÅì¬ | |
1175 | - for i := 0 to Integer( High( TGikoCategoryColumnID ) ) do | |
1176 | - FCategoryColumnOrder.Add( TGikoCategoryColumnID( i ) ); | |
1177 | - end; | |
1178 | - | |
1179 | - ini.ReadSection( 'BoardColumnOrder', wkList ); | |
1180 | - for i := 0 to wkList.Count - 1 do begin | |
1181 | - wkStr := ini.ReadString( 'BoardColumnOrder', 'ID' + IntToStr( i ), '' ); | |
1182 | - Val( wkStr, id, code ); | |
1183 | - if code = 0 then | |
1184 | - FBoardColumnOrder.Add( TGikoBoardColumnID( id ) ); | |
1185 | - end; | |
1186 | - if FBoardColumnOrder.Count = 0 then begin | |
1187 | - // Ý誳¢ÌÅì¬ | |
1188 | - for i := 0 to Integer( High( TGikoBoardColumnID ) ) do begin | |
1189 | - // ¨¢ÌJÍftHgÅñ\¦É·é | |
1190 | - if ( i <> Ord(gbcVigor) ) then begin | |
1191 | - FBoardColumnOrder.Add( TGikoBoardColumnID( i ) ); | |
1192 | - end; | |
1193 | - end; | |
1194 | - end; | |
1195 | - finally | |
1196 | - wkList.Free; | |
1197 | - end; | |
1066 | + ReadOrdColumn( ini ); | |
1198 | 1067 | |
1199 | 1068 | //XgÔ |
1200 | 1069 | FListViewNo := ini.ReadBool('Function', 'ListViewNo', True); |
@@ -1381,6 +1250,12 @@ begin | ||
1381 | 1250 | // CookieÉtÁ·éÅèR[h |
1382 | 1251 | FFixedCookie := ini.ReadString('Cookie', 'fixedString', FIXED_COOKIE); |
1383 | 1252 | |
1253 | + // NÚ®ðÌÅåÛ | |
1254 | + FMoveHistorySize := ini.ReadInteger('MoveHisotry', 'Max', 20); | |
1255 | + | |
1256 | + FStoredTaskTray := ini.ReadBool('Function', 'StroedTaskTray', false); | |
1257 | + FLoopBrowserTabs := ini.ReadBool('Function', 'LoopBrowserTabs', false); | |
1258 | + | |
1384 | 1259 | ini.UpdateFile; |
1385 | 1260 | finally |
1386 | 1261 | ini.Free; |
@@ -1752,6 +1627,11 @@ begin | ||
1752 | 1627 | // ÅèÌCookie¶ñ |
1753 | 1628 | ini.WriteString('Cookie', 'fixedString', FFixedCookie); |
1754 | 1629 | |
1630 | + // NÚ®ðÌÅåÛ | |
1631 | + ini.WriteInteger('MoveHisotry', 'Max', FMoveHistorySize); | |
1632 | + | |
1633 | + ini.WriteBool('Function', 'StroedTaskTray', FStoredTaskTray); | |
1634 | + ini.WriteBool('Function', 'LoopBrowserTabs', FLoopBrowserTabs); | |
1755 | 1635 | ini.UpdateFile; |
1756 | 1636 | finally |
1757 | 1637 | ini.Free; |
@@ -2225,7 +2105,238 @@ function TSetting.GetInputAssistFileName : String; | ||
2225 | 2105 | begin |
2226 | 2106 | Result := GetConfigDir + INPUTASSIST_FILE_NAME; |
2227 | 2107 | end; |
2108 | +procedure TSetting.SetMoveHistorySize(AVal : Integer); | |
2109 | +begin | |
2110 | + if (AVal > 0) then begin | |
2111 | + FMoveHistorySize := AVal; | |
2112 | + end; | |
2113 | +end; | |
2114 | +{ | |
2115 | +\brief vLVÝèÇÝÝ | |
2116 | +\param memIni init@C | |
2117 | +} | |
2118 | +procedure TSetting.ReadProxySettings(memIni: TMemIniFile); | |
2119 | +const | |
2120 | + READ_SECTION = 'ReadProxy'; | |
2121 | + WRITE_SECTION= 'WriteProxy'; | |
2122 | + PROXY_KEY = 'Proxy'; | |
2123 | + ADDRE_KEY = 'Address'; | |
2124 | + PORT_KEY = 'Port'; | |
2125 | + UID_KEY = 'UserID'; | |
2126 | + PASS_KEY = 'Password'; | |
2127 | +begin | |
2128 | + if (memIni <> nil) then begin | |
2129 | + FReadProxy := memIni.ReadBool(READ_SECTION, PROXY_KEY, false); | |
2130 | + FReadProxyAddress := memIni.ReadString(READ_SECTION, ADDRE_KEY, ''); | |
2131 | + FReadProxyPort := memIni.ReadInteger(READ_SECTION, PORT_KEY, 0); | |
2132 | + FReadProxyUserID := memIni.ReadString(READ_SECTION, UID_KEY, ''); | |
2133 | + FReadProxyPassword := memIni.ReadString(READ_SECTION, PASS_KEY, ''); | |
2134 | + | |
2135 | + FWriteProxy := memIni.ReadBool(WRITE_SECTION, PROXY_KEY, false); | |
2136 | + FWriteProxyAddress := memIni.ReadString(WRITE_SECTION, ADDRE_KEY, ''); | |
2137 | + FWriteProxyPort := memIni.ReadInteger(WRITE_SECTION, PORT_KEY, 0); | |
2138 | + FWriteProxyUserID := memIni.ReadString(WRITE_SECTION, UID_KEY, ''); | |
2139 | + FWriteProxyPassword := memIni.ReadString(WRITE_SECTION, PASS_KEY, ''); | |
2140 | + end; | |
2141 | +end; | |
2142 | +{ | |
2143 | +\brief eíEBhEÝèÇÝÝ | |
2144 | +\param menIni init@C | |
2145 | +} | |
2146 | +procedure TSetting.ReadWindowSettings(memIni: TMemIniFile); | |
2147 | +const | |
2148 | + WINDOW_SECTION = 'Window'; | |
2149 | +begin | |
2150 | + if (memIni <> nil) then begin | |
2151 | + FBrowserFontName := memIni.ReadString(WINDOW_SECTION, 'BrowserFontName', ''); | |
2152 | + FBrowserFontSize := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontSize', 0); | |
2153 | + FBrowserFontBold := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontBold', 0); | |
2154 | + FBrowserFontItalic := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontItalic', 0); | |
2155 | + FBrowserFontColor := memIni.ReadInteger(WINDOW_SECTION, 'BrowserFontColor', -1); | |
2156 | + FBrowserBackColor := memIni.ReadInteger(WINDOW_SECTION, 'BrowserBackColor', -1); | |
2157 | + | |
2158 | + FCabinetFontName := memIni.ReadString(WINDOW_SECTION, 'CabinetFontName', DEFAULT_FONT_NAME); | |
2159 | + FCabinetFontSize := memIni.ReadInteger(WINDOW_SECTION, 'CabinetFontSize', DEFAULT_FONT_SIZE); | |
2160 | + FCabinetFontBold := memIni.ReadBool(WINDOW_SECTION, 'CabinetFontBold', False); | |
2161 | + FCabinetFontItalic := memIni.ReadBool(WINDOW_SECTION, 'CabinetFontItalic', False); | |
2162 | + FCabinetFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'CabinetFontColor', DEFAULT_FONT_COLOR)); | |
2163 | + FCabinetBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'CabinetBackColor', DEFAULT_WINDOW_COLOR)); | |
2164 | + | |
2165 | + FListFontName := memIni.ReadString(WINDOW_SECTION, 'ListFontName', DEFAULT_FONT_NAME); | |
2166 | + FListFontSize := memIni.ReadInteger(WINDOW_SECTION, 'ListFontSize', DEFAULT_FONT_SIZE); | |
2167 | + FListFontBold := memIni.ReadBool(WINDOW_SECTION, 'ListFontBold', False); | |
2168 | + FListFontItalic := memIni.ReadBool(WINDOW_SECTION, 'ListFontItalic', False); | |
2169 | + FListFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'ListFontColor', DEFAULT_FONT_COLOR)); | |
2170 | + FListBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'ListBackColor', DEFAULT_WINDOW_COLOR)); | |
2171 | + FUseOddColorOddResNum := memIni.ReadBool(WINDOW_SECTION,'UseOddColor', False); | |
2172 | + FOddColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'OddColor', DEFAULT_WINDOW_COLOR)); | |
2173 | + FUnFocusedBold := memIni.ReadBool(WINDOW_SECTION,'UnFocusedBold', False); | |
2174 | + | |
2175 | + FEditorFontName := memIni.ReadString(WINDOW_SECTION, 'EditorFontName', DEFAULT_FONT_NAME); | |
2176 | + FEditorFontSize := memIni.ReadInteger(WINDOW_SECTION, 'EditorFontSize', DEFAULT_FONT_SIZE); | |
2177 | + FEditorFontBold := memIni.ReadBool(WINDOW_SECTION, 'EditorFontBold', False); | |
2178 | + FEditorFontItalic := memIni.ReadBool(WINDOW_SECTION, 'EditorFontItalic', False); | |
2179 | + FEditorFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'EditorFontColor', DEFAULT_FONT_COLOR)); | |
2180 | + FEditorBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'EditorBackColor', DEFAULT_WINDOW_COLOR)); | |
2181 | + | |
2182 | + FBrowserTabFontName := memIni.ReadString(WINDOW_SECTION, 'BrowserTabFontName', DEFAULT_TAB_FONT_NAME); | |
2183 | + FBrowserTabFontSize := memIni.ReadInteger(WINDOW_SECTION, 'BrowserTabFontSize', DEFAULT_TAB_FONT_SIZE); | |
2184 | + FBrowserTabFontBold := memIni.ReadBool(WINDOW_SECTION, 'BrowserTabFontBold', False); | |
2185 | + FBrowserTabFontItalic := memIni.ReadBool(WINDOW_SECTION, 'BrowserTabFontItalic', False); | |
2186 | + | |
2187 | + FHintFontName := memIni.ReadString(WINDOW_SECTION, 'HintFontName', Screen.HintFont.Name); | |
2188 | + FHintFontSize := memIni.ReadInteger(WINDOW_SECTION, 'HintFontSize', Screen.HintFont.Size); | |
2189 | + //FHintFontBold := memIni.ReadBool(WINDOW_SECTION, 'HintFontBold', False); | |
2190 | + //FHintFontItalic := memIni.ReadBool(WINDOW_SECTION, 'HintFontItalic', False); | |
2191 | + FHintFontColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'HintFontColor', DEFAULT_FONT_COLOR)); | |
2192 | + FHintBackColor := StringToColor(memIni.ReadString(WINDOW_SECTION, 'HintBackColor', 'clInfoBk')); | |
2193 | + end; | |
2194 | +end; | |
2195 | +{ | |
2196 | +\brief üÍðÇÝÝiõ{[{¼Oj | |
2197 | +\param memIni init@C | |
2198 | +} | |
2199 | +procedure TSetting.ReadInputHisotrys(memIni: TMemIniFile); | |
2200 | +const | |
2201 | + SECTIONS : array[0..2] of string = ('Name', 'Mail', 'SelectText'); | |
2202 | +var | |
2203 | + wkList : TStringList; | |
2204 | + wkStr : string; | |
2205 | + i, j : Integer; | |
2206 | + listArray : array[0..2] of TStringList; | |
2207 | +begin | |
2208 | + if (memIni <> nil) then begin | |
2209 | + listArray[0] := FNameList; | |
2210 | + listArray[1] := FMailList; | |
2211 | + listArray[2] := FSelectTextList; | |
2212 | + wkList := TStringList.Create; | |
2213 | + try | |
2214 | + for i := 0 to High(listArray) do begin | |
2215 | + memIni.ReadSection(SECTIONS[i], wkList); | |
2216 | + for j := 0 to wkList.Count -1 do begin | |
2217 | + wkStr := memIni.ReadString(SECTIONS[i], wkList[j], ''); | |
2218 | + if (wkStr <> '') and | |
2219 | + (listArray[i].IndexOf(wkStr) = -1) then begin | |
2220 | + listArray[i].Add(wkStr); | |
2221 | + end; | |
2222 | + end; | |
2223 | + end; | |
2224 | + finally | |
2225 | + wkList.Free; | |
2226 | + end; | |
2227 | + end; | |
2228 | +end; | |
2229 | +{ | |
2230 | +\breif XgJÇÝÝ | |
2231 | +\param memIni init@C | |
2232 | +} | |
2233 | +procedure TSetting.ReadListColumnWidth(memIni: TMemIniFile); | |
2234 | +const | |
2235 | + SECTIONS : array[0..2] of string = | |
2236 | + ('BBSColumnWidth', 'CategoryColumnWidth', 'BoardColumnWidth'); | |
2237 | + DEFAULT_BBS_WIDTH: array[0..0] of Integer = (140); | |
2238 | + DEFAULT_CATEGORY_WIDTH: array[0..2] of Integer = (150, 80, 130); | |
2239 | + DEFAULT_BOARD_WIDTH: array[0..10] of Integer = (350, 60, 60, 60, 60, 60, 80, 130, 130, 130, 60); | |
2240 | + MAX_WIDTH: Integer = 2000; | |
2241 | +var | |
2242 | + wkList : TStringList; | |
2243 | + i : Integer; | |
2244 | +begin | |
2245 | + if (memIni <> nil) then begin | |
2246 | + // XgJ | |
2247 | + wkList := TStringList.Create; | |
2248 | + try | |
2249 | + memIni.ReadSection(SECTIONS[0], wkList); | |
2250 | + if Length(FBBSColumnWidth) <> wkList.Count then begin | |
2251 | + memIni.EraseSection(SECTIONS[0]); | |
2252 | + end; | |
2253 | + for i := 0 to High(FBBSColumnWidth) do begin | |
2254 | + BBSColumnWidth[i] := memIni.ReadInteger(SECTIONS[0], | |
2255 | + 'ID' + IntToStr(i), DEFAULT_BBS_WIDTH[i]); | |
2256 | + if BBSColumnWidth[i] > MAX_WIDTH then | |
2257 | + BBSColumnWidth[i] := DEFAULT_BBS_WIDTH[i]; | |
2258 | + end; | |
2259 | + memIni.ReadSection(SECTIONS[1], wkList); | |
2260 | + if Length(FCategoryColumnWidth) <> wkList.Count then begin | |
2261 | + memIni.EraseSection(SECTIONS[1]); | |
2262 | + end; | |
2263 | + for i := 0 to High(FCategoryColumnWidth) do begin | |
2264 | + CategoryColumnWidth[i] := memIni.ReadInteger(SECTIONS[1], | |
2265 | + 'ID' + IntToStr(i), DEFAULT_CATEGORY_WIDTH[i]); | |
2266 | + if CategoryColumnWidth[i] > MAX_WIDTH then | |
2267 | + CategoryColumnWidth[i] := DEFAULT_CATEGORY_WIDTH[i]; | |
2268 | + end; | |
2269 | + memIni.ReadSection(SECTIONS[2], wkList); | |
2270 | + if Length(FBoardColumnWidth) <> wkList.Count then begin | |
2271 | + memIni.EraseSection(SECTIONS[2]); | |
2272 | + end; | |
2273 | + for i := 0 to High(FBoardColumnWidth) do begin | |
2274 | + BoardColumnWidth[i] := memIni.ReadInteger(SECTIONS[2], | |
2275 | + 'ID' + IntToStr(i), DEFAULT_BOARD_WIDTH[i]); | |
2276 | + if BoardColumnWidth[i] > MAX_WIDTH then | |
2277 | + BoardColumnWidth[i] := DEFAULT_BOARD_WIDTH[i]; | |
2278 | + end; | |
2279 | + finally | |
2280 | + wkList.Free; | |
2281 | + end; | |
2282 | + end; | |
2283 | +end; | |
2284 | +//! JeSXgJÇÝÝ | |
2285 | +procedure TSetting.ReadOrdColumn(memIni: TMemIniFile); | |
2286 | +var | |
2287 | + wkList : TStringList; | |
2288 | + wkStr : string; | |
2289 | + i, id, code : Integer; | |
2290 | +begin | |
2291 | + if (memIni <> nil) then begin | |
2292 | + wkList := TStringList.Create; | |
2293 | + try | |
2294 | + memIni.ReadSection( 'BBSColumnOrder', wkList ); | |
2295 | + for i := 0 to wkList.Count - 1 do begin | |
2296 | + wkStr := memIni.ReadString( 'BBSColumnOrder', 'ID' + IntToStr( i ), '' ); | |
2297 | + Val( wkStr, id, code ); | |
2298 | + if code = 0 then | |
2299 | + FBBSColumnOrder.Add( TGikoBBSColumnID( id ) ); | |
2300 | + end; | |
2301 | + if FBBSColumnOrder.Count = 0 then begin | |
2302 | + // Ý誳¢ÌÅì¬ | |
2303 | + for i := 0 to Integer( High( TGikoBBSColumnID ) ) do | |
2304 | + FBBSColumnOrder.Add( TGikoBBSColumnID( i ) ); | |
2305 | + end; | |
2228 | 2306 | |
2229 | -end. | |
2307 | + memIni.ReadSection( 'CategoryColumnOrder', wkList ); | |
2308 | + for i := 0 to wkList.Count - 1 do begin | |
2309 | + wkStr := memIni.ReadString( 'CategoryColumnOrder', 'ID' + IntToStr( i ), '' ); | |
2310 | + Val( wkStr, id, code ); | |
2311 | + if code = 0 then | |
2312 | + FCategoryColumnOrder.Add( TGikoCategoryColumnID( id ) ); | |
2313 | + end; | |
2314 | + if FCategoryColumnOrder.Count = 0 then begin | |
2315 | + // Ý誳¢ÌÅì¬ | |
2316 | + for i := 0 to Integer( High( TGikoCategoryColumnID ) ) do | |
2317 | + FCategoryColumnOrder.Add( TGikoCategoryColumnID( i ) ); | |
2318 | + end; | |
2230 | 2319 | |
2320 | + memIni.ReadSection( 'BoardColumnOrder', wkList ); | |
2321 | + for i := 0 to wkList.Count - 1 do begin | |
2322 | + wkStr := memIni.ReadString( 'BoardColumnOrder', 'ID' + IntToStr( i ), '' ); | |
2323 | + Val( wkStr, id, code ); | |
2324 | + if code = 0 then | |
2325 | + FBoardColumnOrder.Add( TGikoBoardColumnID( id ) ); | |
2326 | + end; | |
2327 | + if FBoardColumnOrder.Count = 0 then begin | |
2328 | + // Ý誳¢ÌÅì¬ | |
2329 | + for i := 0 to Integer( High( TGikoBoardColumnID ) ) do begin | |
2330 | + // ¨¢ÌJÍftHgÅñ\¦É·é | |
2331 | + if ( i <> Ord(gbcVigor) ) then begin | |
2332 | + FBoardColumnOrder.Add( TGikoBoardColumnID( i ) ); | |
2333 | + end; | |
2334 | + end; | |
2335 | + end; | |
2336 | + finally | |
2337 | + wkList.Free; | |
2338 | + end; | |
2339 | + end; | |
2340 | +end; | |
2341 | +end. | |
2231 | 2342 |
@@ -33,6 +33,16 @@ function get_2ch_trip( | ||
33 | 33 | const pw : PChar |
34 | 34 | ) : string; |
35 | 35 | |
36 | +{! | |
37 | +\brief gbv̶¬ÉKvÈsalt̶¬ | |
38 | +\parm pw salt̳ÉÈépX[h | |
39 | +\param salt ¶¬µ½saltªi[³êé (array[0..2] of char) | |
40 | +} | |
41 | +procedure get_salt( | |
42 | + const pw : PChar; | |
43 | + salt : PChar | |
44 | +); | |
45 | + | |
36 | 46 | const |
37 | 47 | kCryptInitialTr : CryptOrdering = ( o_data: ( |
38 | 48 | #58,#50,#42,#34,#26,#18,#10, #2,#60,#52,#44,#36,#28,#20,#12, #4, |
@@ -413,18 +423,30 @@ function get_2ch_trip( | ||
413 | 423 | var |
414 | 424 | s : CryptData; |
415 | 425 | salt : array [0..2] of char; |
416 | - | |
417 | - i : Integer; | |
418 | - len : Integer; | |
419 | 426 | begin |
420 | 427 | |
421 | - salt[ 0 ] := #0; | |
422 | 428 | if pw[ 0 ] = #0 then |
423 | 429 | begin |
424 | 430 | Result := ''; |
425 | 431 | Exit; |
426 | 432 | end; |
427 | 433 | |
434 | + get_salt( pw, salt ); | |
435 | + | |
436 | + | |
437 | + Result := Copy( crypt_r( pw, salt, s ), 4, 100 ); | |
438 | + | |
439 | +end; | |
440 | + | |
441 | +procedure get_salt( | |
442 | + const pw : PChar; | |
443 | + salt : PChar | |
444 | +); | |
445 | +var | |
446 | + i, len : Integer; | |
447 | +begin | |
448 | + salt[ 0 ] := #0; | |
449 | + | |
428 | 450 | if pw[ 1 ] <> #0 then |
429 | 451 | begin |
430 | 452 | if pw[ 2 ] <> #0 then |
@@ -438,8 +460,11 @@ begin | ||
438 | 460 | else |
439 | 461 | salt[ i ] := '.'; |
440 | 462 | |
441 | - if Pos( salt[ i ], ':;<=>?@[\\]^_`' ) > 0 then | |
442 | - salt[ i ] := Char( Integer( salt[ i ] ) + 7 ); | |
463 | + if Pos ( salt[ i ], ':;<=>?@' ) > 0 then begin | |
464 | + salt[ i ] := Char( Integer( salt[ i ] ) + 7 ); | |
465 | + end else if Pos( salt[ i ], '[\\]^_`' ) > 0 then begin | |
466 | + salt[ i ] := Char( Integer( salt[ i ] ) + 6 ); | |
467 | + end; | |
443 | 468 | end; |
444 | 469 | if len = 1 then |
445 | 470 | salt[ 1 ] := 'H'; |
@@ -448,9 +473,6 @@ begin | ||
448 | 473 | salt[ 0 ] := 'H'; |
449 | 474 | salt[ 1 ] := '.'; |
450 | 475 | end; |
451 | - | |
452 | - Result := Copy( crypt_r( pw, salt, s ), 4, 100 ); | |
453 | - | |
454 | 476 | end; |
455 | 477 | |
456 | 478 | end. |
@@ -72,7 +72,8 @@ uses | ||
72 | 72 | GikoMessage in 'GikoMessage.pas', |
73 | 73 | InputAssist in 'InputAssist.pas' {InputAssistForm}, |
74 | 74 | InputAssistDataModule in 'InputAssistDataModule.pas' {InputAssistDM: TDataModule}, |
75 | - DefaultFileManager in 'DefaultFileManager.pas'; | |
75 | + DefaultFileManager in 'DefaultFileManager.pas', | |
76 | + MoveHistoryItem in 'MoveHistoryItem.pas'; | |
76 | 77 | |
77 | 78 | {$R *.RES} |
78 | 79 | {$R gikoResource.res} |
@@ -1,4 +1,4 @@ | ||
1 | -¡MRir Version1.00 ÊÞÀ53 Readme.txt | |
1 | +¡MRir Version1.00 ÊÞÀ54 Readme.txt | |
2 | 2 | |
3 | 3 | |
4 | 4 | ------------------------------ |
@@ -50,7 +50,7 @@ | ||
50 | 50 | ------------------------------ |
51 | 51 | oOâv]ÍAMRirXbhÅó¯t¯Ä¨èÜ·B |
52 | 52 | MRirTCgFhttp://gikonavi.sourceforge.jp/ |
53 | -MRirXFhttp://pc7.2ch.net/test/read.cgi/software/1149268313/l50 | |
53 | +MRirXFhttp://pc7.2ch.net/test/read.cgi/software/1151728347/l50 | |
54 | 54 | |
55 | 55 | ------------------------------ |
56 | 56 | ]ÚÉ墀 |
@@ -107,7 +107,12 @@ LICENSE | ||
107 | 107 | ------------------------------ |
108 | 108 | ð |
109 | 109 | ------------------------------ |
110 | -2006/XX/XX | |
110 | +2006/12/XX | |
111 | + Version ÊÞÀ54 | |
112 | +@XbhàÅÌNÅÚ®µ½Æ«ÌððHêé@\ðÇÁ | |
113 | +@^XNgCÉi[·é@\ðÇÁiIvVÅŬ»àj | |
114 | + | |
115 | +2006/08/07 | |
111 | 116 | Version ÊÞÀ53 |
112 | 117 | @IE7(beta)ðCXg[·éÆXAJ[Ì|bvAbvÅ\¦³êÈ¢sïÌC³ |
113 | 118 | @µ½çÎJBBSÂXVªA®ìµÈ¢sïÌC³ |
@@ -116,8 +121,8 @@ LICENSE | ||
116 | 121 | @ñ\ñ¼ÌÏXª½f³êÈ¢sïÌC³ |
117 | 122 | @ðíɺ¤sïÌC³ |
118 | 123 | @J}ÅA±·éXAJ[ÉNªÝè³êÈ¢sïÌC³ |
119 | -@ | |
120 | - | |
124 | +@ftHgÌÝèt@C̵¢ðê | |
125 | +@XGfB^Ìvr [Å\¦³êégbvL[ÆÀÛÌgbvL[ªÙÈésïÌC³ | |
121 | 126 | |
122 | 127 | 2006/06/18 |
123 | 128 | Version ÊÞÀ52 |
@@ -3,15 +3,14 @@ aa5=30 | ||
3 | 3 | academy4=30 |
4 | 4 | anime=45 |
5 | 5 | book3=30 |
6 | -bubble4=120 | |
6 | +bubble4=30 | |
7 | 7 | comic6=30 |
8 | 8 | etc3=30 |
9 | 9 | etc4=30 |
10 | 10 | ex9=15 |
11 | 11 | ex11=15 |
12 | -ex12=15 | |
13 | -ex13=15 | |
14 | -ex14=15 | |
12 | +ex13=120 | |
13 | +ex16=15 | |
15 | 14 | food6=30 |
16 | 15 | game9=30 |
17 | 16 | game10=30 |
@@ -22,29 +21,31 @@ life7=30 | ||
22 | 21 | live14=10 |
23 | 22 | live19=10 |
24 | 23 | live22x=10 |
24 | +live23=10 | |
25 | 25 | love3=30 |
26 | 26 | money4=30 |
27 | -music4=30 | |
28 | 27 | music5=30 |
28 | +music6=30 | |
29 | 29 | news18=30 |
30 | 30 | news19=120 |
31 | +news20=120 | |
31 | 32 | off3=30 |
32 | 33 | pc7=30 |
33 | 34 | pc8=30 |
34 | 35 | qa=30 |
35 | -qb5=30 | |
36 | +qb5=120 | |
36 | 37 | qb6=30 |
37 | 38 | school5=30 |
38 | 39 | science4=30 |
39 | 40 | society3=30 |
40 | 41 | sports9=60 |
41 | 42 | that4=30 |
42 | -tmp5=45 | |
43 | -travel2=30 | |
43 | +tmp6=45 | |
44 | +travel2=120 | |
44 | 45 | tv7=30 |
45 | -tv8=60 | |
46 | -pie=30 | |
46 | +tv8=120 | |
47 | 47 | idol=30 |
48 | +pie=30 | |
48 | 49 | sakura01=30 |
49 | 50 | sakura02=30 |
50 | -sakura03=30 | |
51 | +sakura03=120 |