• R/O
  • HTTP
  • SSH
  • HTTPS

gikonavi: Commit


Commit MetaInfo

Revisionc5a4d9bc8011a752bef0380d8b12f73c3f13f4eb (tree)
Time2006-08-09 00:29:00
Authorcvs2git <cvs2git>
Commitercvs2git

Log Message

This commit was manufactured by cvs2svn to create tag 'v1_54_0_675'.

Change Summary

Incremental Difference

--- a/AbonUnit.pas
+++ b/AbonUnit.pas
@@ -883,8 +883,11 @@ begin
883883 Dec(ps);
884884
885885 //シリア語ブラクラのでない
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;
888891
889892 Delete(AString, 1, ps - PChar(AString) + 1);
890893 end else begin
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -159,7 +159,7 @@ object GikoForm: TGikoForm
159159 object ToolBar1: TToolBar
160160 Left = 2
161161 Top = 4
162- Width = 15
162+ Width = 16
163163 Height = 18
164164 Align = alNone
165165 AutoSize = True
@@ -971,7 +971,7 @@ object GikoForm: TGikoForm
971971 OnResize = AddressToolBarResize
972972 object AddressComboBox: TComboBox
973973 Left = 0
974- Top = 0
974+ Top = 1
975975 Width = 177
976976 Height = 20
977977 DropDownCount = 20
@@ -4520,6 +4520,12 @@ object GikoForm: TGikoForm
45204520 object N61: TMenuItem
45214521 Caption = '-'
45224522 end
4523+ object N77: TMenuItem
4524+ Action = GikoDM.StoredTaskTrayAction
4525+ end
4526+ object N78: TMenuItem
4527+ Caption = '-'
4528+ end
45234529 object ExitMenu: TMenuItem
45244530 Action = GikoDM.ExitAction
45254531 end
--- a/Giko.pas
+++ b/Giko.pas
@@ -18,7 +18,8 @@ uses
1818 Editor, RoundData, GikoPanel, Favorite, HTMLDocumentEvent,
1919 HintWindow, GikoCoolBar, GikoListView, Search, ExternalBoardManager,
2020 ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection,
21- IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord;
21+ IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord, MoveHistoryItem,
22+ ShellAPI;
2223
2324 const
2425 NGWORDNAME_PANEL = 3;
@@ -409,6 +410,8 @@ type
409410 DAT3: TMenuItem;
410411 N76: TMenuItem;
411412 FavoriteTreeItemNameCopyPopupMenu: TMenuItem;
413+ N77: TMenuItem;
414+ N78: TMenuItem;
412415 procedure FormCreate(Sender: TObject);
413416 procedure FormDestroy(Sender: TObject);
414417 procedure BrowserStatusTextChange(Sender: TObject;
@@ -594,6 +597,7 @@ type
594597 FOrigenCaption: String; //お気に入りツリーのアイテム編集時の編集前の文字列
595598 FPreviewBrowserRect: TRect; ///< プレビューの表示位置を記憶する
596599 FActionListGroupIndexes: array of Integer; ///<GikoDM上のアクションリストの各アクションに設定されたGroupIndexを保存する配列
600+
597601 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
598602 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
599603 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
@@ -665,6 +669,8 @@ type
665669 procedure RefreshListView(Thread: TThreadItem);
666670 //! スレッド一覧の表示範囲設定チェッククリア
667671 procedure ClearThreadRengeAction;
672+ //! タスクトレイのアイコン削除&フォーム表示
673+ procedure UnStoredTaskTray;
668674 protected
669675 procedure CreateParams(var Params: TCreateParams); override;
670676 procedure WndProc(var Message: TMessage); override;
@@ -677,6 +683,7 @@ type
677683 LastRoundTime: TDateTime;
678684 BrowserNullTab: TBrowserRecord;
679685 FControlThread: TThreadControl;
686+ FIconData : TNotifyIconData;
680687 procedure MoveToURL(const inURL: string);
681688 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
682689 procedure ReloadBBS;
@@ -788,6 +795,10 @@ type
788795 //! ツールバーにスレ絞込みコンボボックスを設定する
789796 procedure SetSelectComboBox();
790797
798+ //! タスクトレイに格納したアイコンをクリックしたときの処理
799+ procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010;
800+ //! タスクトレイにアイコン登録&フォーム隠し
801+ procedure StoredTaskTray;
791802 published
792803 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
793804 end;
@@ -820,7 +831,7 @@ implementation
820831
821832 uses
822833 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
823- YofUtils, ShellAPI, ToolBarUtil, ToolBarSetting,
834+ YofUtils, ToolBarUtil, ToolBarSetting,
824835 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
825836 FavoriteArrange, AddressHistory, Preview, Gesture,
826837 About, Option, Round, Splash, Sort, ListSelect, Imm,
@@ -843,6 +854,7 @@ const
843854 USER_MINIMIZED = WM_USER + 2002;
844855 USER_SETLINKBAR = WM_USER + 2003;
845856 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
857+ USER_TASKTRAY = WM_USER + 2010;
846858 {$R *.DFM}
847859
848860 procedure TGikoForm.CreateParams(var Params: TCreateParams);
@@ -889,7 +901,8 @@ begin
889901 GetGroupIndex(GikoDM.GikoFormActionList);
890902 FSearchDialog := nil;
891903 CreateBrowsers(BROWSER_COUNT);
892-
904+ FIconData.uID := 0;
905+
893906 //メニューフォント
894907 SetMenuFont;
895908
@@ -1287,6 +1300,7 @@ begin
12871300
12881301 //入力アシスト機構の初期化
12891302 InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1303+
12901304 end;
12911305
12921306 // CoolBar の設定を変数に保存
@@ -3884,15 +3898,17 @@ var
38843898 wkIntTo: Integer;
38853899 BNum, BRes: string;
38863900 threadItem: TThreadItem;
3901+ aElement : IHTMLElement;
38873902 begin
3888-
38893903 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;
38933908 if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
38943909 or (AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1) then begin
38953910 if GikoSys.Setting.ResAnchorJamp then begin
3911+
38963912 Text := ZenToHan(Trim(Text));
38973913
38983914 if(AnsiPos('>>', Text) = 1) then begin
@@ -3915,6 +3931,7 @@ begin
39153931
39163932 if wkIntSt <> 0 then begin
39173933 FActiveContent.IDAnchorPopup('');
3934+ MoveHisotryManager.pushItem(FActiveContent);
39183935 BrowserMovement(IntToStr(wkIntSt));
39193936 end;
39203937
@@ -3948,6 +3965,7 @@ begin
39483965 AddressComboBox.Items.Insert(0, URL);
39493966 end;
39503967 end;
3968+ MoveHisotryManager.pushItem(FActiveContent);
39513969 MoveToURL( URL );
39523970 end;
39533971 end;
@@ -4823,14 +4841,21 @@ begin
48234841 if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then
48244842 Exit;
48254843 WM_SYSCOMMAND:
4826- if Message.WParam = SC_MINIMIZE then
4844+ if Message.WParam = SC_MINIMIZE then begin
48274845 OnMinimize;
4846+ PostMessage(Handle, USER_MINIMIZED, 0, 0);
4847+ end;
48284848 USER_TREECLICK:
48294849 TreeClick( TreeView.Selected );
48304850 USER_RESIZED:
48314851 OnResized;
48324852 USER_MINIMIZED:
4833- OnMinimized;
4853+ begin
4854+ if (GikoSys.Setting.StoredTaskTray) then begin
4855+ StoredTaskTray;
4856+ end;
4857+ OnMinimized;
4858+ end;
48344859 USER_SETLINKBAR:
48354860 SetLinkBar;
48364861 USER_DOCUMENTCOMPLETE:
@@ -7696,6 +7721,53 @@ begin
76967721 end;
76977722 end;
76987723
7724+procedure TGikoForm.TaskTrayIconMessage(var Msg: TMsg);
7725+begin
7726+ // 左クリックなら復元する
7727+ if (Msg.wParam = WM_LBUTTONUP) then begin
7728+ UnStoredTaskTray;
7729+ end;
7730+end;
7731+//! タスクトレイにアイコン登録&フォーム隠し
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; {アイコン指定}
7742+ FIconData.szTip := 'ギコナビ'; {ヒント文字列}
7743+ Shell_NotifyIcon(NIM_ADD, @FIconData);
7744+
7745+ ShowWindow(Self.Handle, SW_HIDE);
7746+ end;
7747+ except
7748+ end;
7749+end;
7750+//! タスクトレイのアイコン削除&フォーム表示
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から格納したときはTagの値は0以外
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+
76997771 initialization
77007772 OleInitialize(nil);
77017773 finalization
--- a/GikoDataModule.dfm
+++ b/GikoDataModule.dfm
@@ -696,7 +696,7 @@ object GikoDM: TGikoDM
696696 Hint = #24038#12398#12479#12502#12434#36984#25246#12377#12427
697697 ImageIndex = 48
698698 OnExecute = LeftTabSelectActionExecute
699- OnUpdate = LeftmostTabSelectActionUpdate
699+ OnUpdate = LeftTabSelectActionUpdate
700700 end
701701 object RightTabSelectAction: TAction
702702 Category = #12473#12524#12483#12489
@@ -712,7 +712,7 @@ object GikoDM: TGikoDM
712712 Hint = #19968#30058#21491#12398#12479#12502#12434#36984#25246#12377#12427
713713 ImageIndex = 49
714714 OnExecute = RightmostTabSelectActionExecute
715- OnUpdate = RightTabSelectActionUpdate
715+ OnUpdate = RightmostTabSelectActionUpdate
716716 end
717717 object FavoriteAddAction: TAction
718718 Category = #12362#27671#12395#20837#12426
@@ -1235,6 +1235,56 @@ object GikoDM: TGikoDM
12351235 OnExecute = CloseAllEditorActionExecute
12361236 OnUpdate = CloseAllEditorActionUpdate
12371237 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
12381288 end
12391289 object ToobarImageList: TImageList
12401290 Left = 44
--- a/GikoDataModule.pas
+++ b/GikoDataModule.pas
@@ -12,7 +12,7 @@ uses
1212 MSHTML_TLB,
1313 {$IFEND}
1414 ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs,
15- ActiveX;
15+ ActiveX, MoveHistoryItem;
1616
1717 const
1818 CAPTION_NAME: string = 'ギコナビ';
@@ -219,6 +219,14 @@ type
219219 LiveItemAction: TAction;
220220 FavoriteTreeViewItemNameCopyAction: TAction;
221221 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;
222230 procedure EditNGActionExecute(Sender: TObject);
223231 procedure ReloadActionExecute(Sender: TObject);
224232 procedure GoFowardActionExecute(Sender: TObject);
@@ -406,6 +414,18 @@ type
406414 procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject);
407415 procedure CloseAllEditorActionExecute(Sender: TObject);
408416 procedure CloseAllEditorActionUpdate(Sender: TObject);
417+ procedure PrevMoveHistoryUpdate(Sender: TObject);
418+ procedure PrevMoveHistoryExecute(Sender: TObject);
419+ procedure NextMoveHistoryUpdate(Sender: TObject);
420+ procedure NextMoveHistoryExecute(Sender: TObject);
421+ procedure ClickActiveElementActionExecute(Sender: TObject);
422+ procedure VKDownActionExecute(Sender: TObject);
423+ procedure VKUpActionExecute(Sender: TObject);
424+ procedure VKRightActionExecute(Sender: TObject);
425+ procedure VKLeftActionExecute(Sender: TObject);
426+ procedure StoredTaskTrayActionExecute(Sender: TObject);
427+ procedure LeftTabSelectActionUpdate(Sender: TObject);
428+ procedure RightmostTabSelectActionUpdate(Sender: TObject);
409429 private
410430 { Private 宣言 }
411431 procedure ClearResFilter;
@@ -421,6 +441,8 @@ type
421441 procedure ClearSelectComboBox;
422442 procedure ClearMailAllEditor();
423443 procedure ClearNameTextAllEditor();
444+ procedure MoveURLWithHistory(URL : String);
445+ procedure BackToHistory(item: TMoveHistoryItem);
424446 public
425447 { Public 宣言 }
426448 procedure RepaintStatusBar;
@@ -554,24 +576,10 @@ end;
554576 //! アドレスバーに表示しているアドレスへ移動する
555577 // *************************************************************************
556578 procedure TGikoDM.MoveToActionExecute(Sender: TObject);
557-var
558- URL: string;
559- idx: Integer;
560579 begin
561580 //アドレスコンボボックスからURLを取得
562- URL := Trim(GikoForm.AddressComboBox.Text);
563581 //URLに移動
564- GikoForm.MoveToURL(URL);
565- //以下、履歴の処理
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;
582+ MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) );
575583 end;
576584 // *************************************************************************
577585 //! お気に入りの追加ダイアログを開く
@@ -1277,6 +1285,18 @@ begin
12771285 end;
12781286 end;
12791287 // *************************************************************************
1288+//! 左のタブを選択するのUpdateイベント
1289+// *************************************************************************
1290+procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject);
1291+begin
1292+ if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1293+ LeftmostTabSelectActionUpdate(Sender);
1294+ end else begin
1295+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1296+ end;
1297+end;
1298+
1299+// *************************************************************************
12801300 //! タブの数が1以上で、タブのインデックスが0以外で有効になるUpdateイベント
12811301 // *************************************************************************
12821302 procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
@@ -1296,7 +1316,13 @@ begin
12961316 end else if GikoForm.BrowserTab.TabIndex > 0 then begin
12971317 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
12981318 GikoForm.BrowserTab.OnChange(nil);
1299- end;
1319+ end else begin
1320+ if (GikoSys.Setting.LoopBrowserTabs) and
1321+ (GikoForm.BrowserTab.TabIndex = 0) then begin
1322+ GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1323+ GikoForm.BrowserTab.OnChange(nil);
1324+ end;
1325+ end;
13001326 end;
13011327 end;
13021328 // *************************************************************************
@@ -1311,17 +1337,27 @@ begin
13111337 end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
13121338 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
13131339 GikoForm.BrowserTab.OnChange(nil);
1314- end;
1340+ end else begin
1341+ if (GikoSys.Setting.LoopBrowserTabs) and
1342+ (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin
1343+ GikoForm.BrowserTab.TabIndex := 0;
1344+ GikoForm.BrowserTab.OnChange(nil);
1345+ end;
1346+ end;
13151347 end;
13161348 end;
13171349 // *************************************************************************
1318-//! タブの数が1以上で、タブが右端以外で有効になるUpdateイベント
1350+//! 右のタブを選択するUpdateイベント
13191351 // *************************************************************************
13201352 procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
13211353 begin
1322- TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1323- and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1354+ if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1355+ RightmostTabSelectActionUpdate(Sender);
1356+ end else begin
1357+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1358+ end;
13241359 end;
1360+
13251361 // *************************************************************************
13261362 //! 一番右のタブを選択する
13271363 // *************************************************************************
@@ -1333,6 +1369,15 @@ begin
13331369 end;
13341370 end;
13351371 // *************************************************************************
1372+//! 一番右のタブを選択するのUpdateイベント
1373+// *************************************************************************
1374+procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject);
1375+begin
1376+ TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1377+ and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1378+
1379+end;
1380+// *************************************************************************
13361381 //! 選択されているスレッドをお気に入りに追加
13371382 // *************************************************************************
13381383 procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
@@ -2235,7 +2280,8 @@ begin
22352280 URLs.Free;
22362281 end;
22372282
2238- if (GikoForm.BrowserTab.Tabs.Count = 0) then begin
2283+ if (GikoForm.BrowserTab.Tabs.Count = 0) and
2284+ (TabsOpenAction.Tag <> 1) then begin
22392285 ShowMessage('表示するタブがありません。');
22402286 end;
22412287 end;
@@ -3685,7 +3731,7 @@ end;
36853731 // *************************************************************************
36863732 procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject);
36873733 begin
3688- GikoForm.ActiveContent.Browser.SetFocus;
3734+ GikoForm.ActiveContent.Browser.SetFocus;
36893735 end;
36903736 // *************************************************************************
36913737 //! ブラウザにフォーカスを当てるUpdateイベント
@@ -4038,5 +4084,139 @@ begin
40384084 end;
40394085 end;
40404086
4087+// *************************************************************************
4088+//! リンク履歴を戻るの更新処理
4089+// *************************************************************************
4090+procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject);
4091+begin
4092+ PrevMoveHistory.Enabled :=
4093+ (MoveHisotryManager.HisotryIndex > 0)
4094+end;
4095+// *************************************************************************
4096+//! リンク履歴を戻る
4097+// *************************************************************************
4098+procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject);
4099+begin
4100+ if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin
4101+ BackToHistory(MoveHisotryManager.getPrevItem
4102+ (TBrowserRecord(GikoForm.BrowserTab.Tabs
4103+ .Objects[GikoForm.BrowserTab.TabIndex])));
4104+ end else begin
4105+ BackToHistory(MoveHisotryManager.getPrevItem( nil ) );
4106+ end;
4107+end;
4108+//! リンク履歴処理
4109+procedure TGikoDM.BackToHistory(item: TMoveHistoryItem);
4110+var
4111+ browser : TWebBrowser;
4112+ doc : OleVariant;
4113+begin
4114+ if ( item <> nil ) then begin
4115+ if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin
4116+ browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4117+ .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4118+ if (browser <> nil) then begin
4119+ try
4120+ doc := Idispatch( olevariant(browser.ControlInterface).Document) as IHTMLDocument2;
4121+ doc.Body.ScrollTop := item.ScrollTop;
4122+ except
4123+ end;
4124+ end;
4125+ end else begin
4126+ //URLに移動
4127+ MoveURLWithHistory(item.ThreadItem.URL);
4128+ end;
4129+ end;
4130+end;
4131+//! 履歴処理つきURL移動
4132+procedure TGikoDM.MoveURLWithHistory(URL : String);
4133+var
4134+ idx : Integer;
4135+begin
4136+ //URLに移動
4137+ GikoForm.MoveToURL(URL);
4138+ //以下、履歴の処理
4139+ idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
4140+ if idx = -1 then begin
4141+ GikoForm.AddressComboBox.Items.Insert(0, URL);
4142+ if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
4143+ GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
4144+ end else begin
4145+ GikoForm.AddressComboBox.Items.Delete(idx);
4146+ GikoForm.AddressComboBox.Items.Insert(0, URL);
4147+ end;
4148+end;
4149+// *************************************************************************
4150+//! リンク履歴を進むの更新処理
4151+// *************************************************************************
4152+procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject);
4153+begin
4154+ NextMoveHistory.Enabled :=
4155+ (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1);
4156+end;
4157+// *************************************************************************
4158+//! リンク履歴を進む
4159+// *************************************************************************
4160+procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject);
4161+begin
4162+ BackToHistory(MoveHisotryManager.getNextItem);
4163+end;
4164+// *************************************************************************
4165+//! アクティブ要素のクリック
4166+// *************************************************************************
4167+procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject);
4168+var
4169+ browser : TWebBrowser;
4170+ elem : IHTMLElement;
4171+begin
4172+ if (GikoForm.GetActiveContent <> nil) then begin
4173+ if (GikoForm.BrowserTab.Tabs.Count > 0) and
4174+ (GikoForm.BrowserTab.TabIndex >= 0) then begin
4175+ browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4176+ .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4177+ if (browser <> nil) then begin
4178+ try
4179+ elem := IHTMLDocument2(browser.Document).activeElement;
4180+ elem.click;
4181+ except
4182+ end;
4183+ end;
4184+
4185+ end;
4186+ end;
4187+end;
4188+//! ↓キーのエミュレートアクション
4189+procedure TGikoDM.VKDownActionExecute(Sender: TObject);
4190+begin
4191+ keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
4192+ keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4193+end;
4194+//! ↑キーのエミュレートアクション
4195+procedure TGikoDM.VKUpActionExecute(Sender: TObject);
4196+begin
4197+ keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
4198+ keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4199+end;
4200+//! →キーのエミュレートアクション
4201+procedure TGikoDM.VKRightActionExecute(Sender: TObject);
4202+begin
4203+ keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4204+ keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4205+end;
4206+//! ←キーのエミュレートアクション
4207+procedure TGikoDM.VKLeftActionExecute(Sender: TObject);
4208+begin
4209+ keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4210+ keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4211+end;
4212+//! タスクトレイに格納する
4213+procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject);
4214+begin
4215+ GikoForm.StoredTaskTray;
4216+ StoredTaskTrayAction.Tag := -1;
4217+end;
4218+
4219+
4220+
40414221 end.
40424222
--- a/GikoSystem.pas
+++ b/GikoSystem.pas
@@ -256,7 +256,7 @@ const
256256 ZERO_DATE: Integer = 25569;
257257 BETA_VERSION_NAME_E = 'beta';
258258 BETA_VERSION_NAME_J = 'バタ';
259- BETA_VERSION = 53;
259+ BETA_VERSION = 54;
260260 BETA_VERSION_BUILD = ''; //!< debug版など
261261 APP_NAME = 'gikoNavi';
262262 BE_PHP_URL = 'http://be.2ch.net/test/p.php?i=';
--- a/KuroutSetting.dfm
+++ b/KuroutSetting.dfm
@@ -395,6 +395,35 @@ object KuroutOption: TKuroutOption
395395 TabOrder = 0
396396 end
397397 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
398427 end
399428 end
400429 object OkBotton: TButton
--- a/KuroutSetting.pas
+++ b/KuroutSetting.pas
@@ -61,6 +61,10 @@ type
6161 Label8: TLabel;
6262 FixedCookieEdit: TEdit;
6363 Label9: TLabel;
64+ GroupBox3: TGroupBox;
65+ Label10: TLabel;
66+ MoveHistoryMaxEdit: TEdit;
67+ Label11: TLabel;
6468 procedure OkBottonClick(Sender: TObject);
6569 procedure FormCreate(Sender: TObject);
6670 procedure CDeleteButtonClick(Sender: TObject);
@@ -123,6 +127,8 @@ begin
123127 RemoteTrapAtt.Checked := GikoSys.Setting.RemoteTrapAtt;
124128 // Cookie
125129 FixedCookieEdit.Text := GikoSys.Setting.FixedCookie;
130+ // リンク移動履歴
131+ MoveHistoryMaxEdit.Text := IntToStr( GikoSys.Setting.MoveHistorySize );
126132 end;
127133
128134 procedure TKuroutOption.SaveSetting;
@@ -150,6 +156,9 @@ begin
150156 // Cookie
151157 GikoSys.Setting.FixedCookie := FixedCookieEdit.Text;
152158
159+ // リンク移動履歴
160+ GikoSys.Setting.MoveHistorySize :=
161+ StrToIntDef( MoveHistoryMaxEdit.Text, 20 );
153162
154163 GikoSys.Setting.KuroutSettingTabIndex := PageControl1.ActivePageIndex;
155164 end;
--- /dev/null
+++ b/MoveHistoryItem.pas
@@ -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 リンク移動履歴最大保持数を設定する。
32+ \param AVal 保持数
33+ }
34+ procedure SetHistoryMax(AVal: Integer);
35+ {
36+ \brief リンク移動履歴最大保持数を取得する。
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+//! コンストラクタ
61+constructor TMoveHistory.Create( max : Integer );
62+begin
63+ inherited Create;
64+
65+ FIndex := 0;
66+
67+ SetHistoryMax( GikoSys.Setting.MoveHistorySize );
68+end;
69+//! 移動履歴のアイテム追加
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+ // 保持数の最大値を超える場合先頭を削除
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より後ろのアイテムを削除する
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+//! 移動履歴のアイテム追加
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+//! 一つ前の履歴アイテム取得
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+//! 一つ後ろの履歴アイテム取得
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+//! 履歴の全消去
141+procedure TMoveHistory.clear;
142+var
143+ i : Integer;
144+begin
145+ // アイテムを削除する
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+ // 履歴のサイズは0より大きくないといけない
160+ if ( AVal > 0 ) then begin
161+ if ((AVal + 1) <> FHistoryMax) then begin
162+ Self.clear;
163+ // 移動した際に、戻るリンクを1つ足すので
164+ FHistoryMax := AVal + 1;
165+ end;
166+ end;
167+end;
168+function TMoveHistory.GetHistoryMax: Integer;
169+begin
170+ // 移動した際に、戻るリンクを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.
--- a/Option.dfm
+++ b/Option.dfm
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog
6161 Top = 4
6262 Width = 509
6363 Height = 389
64- ActivePage = TabSheet3
64+ ActivePage = TabSheet4
6565 MultiLine = True
66- TabIndex = 3
66+ TabIndex = 7
6767 TabOrder = 3
6868 OnChange = OptionTabChange
6969 object ConnectSheet: TTabSheet
@@ -1207,9 +1207,9 @@ object OptionDialog: TOptionDialog
12071207 end
12081208 end
12091209 object GroupBox19: TGroupBox
1210- Left = 11
1210+ Left = 12
12111211 Top = 74
1212- Width = 465
1212+ Width = 473
12131213 Height = 49
12141214 Caption = #23653#27508
12151215 TabOrder = 1
@@ -1238,6 +1238,22 @@ object OptionDialog: TOptionDialog
12381238 OnExit = MaxRecordCountEditExit
12391239 end
12401240 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
12411257 end
12421258 object SoundSheet: TTabSheet
12431259 Caption = #12469#12454#12531#12489
@@ -1591,6 +1607,22 @@ object OptionDialog: TOptionDialog
15911607 TabOrder = 4
15921608 OnClick = OkBottonClick
15931609 end
1610+ object GroupBox22: TGroupBox
1611+ Left = 20
1612+ Top = 240
1613+ Width = 473
1614+ Height = 52
1615+ Caption = #12502#12521#12454#12470#12479#12502
1616+ TabOrder = 5
1617+ object LoopBrowserTabsCB: TCheckBox
1618+ Left = 11
1619+ Top = 24
1620+ Width = 134
1621+ Height = 17
1622+ Caption = #12523#12540#12503#12375#12390#31227#21205#12377#12427
1623+ TabOrder = 0
1624+ end
1625+ end
15941626 object FontDialog: TFontDialog
15951627 Font.Charset = SHIFTJIS_CHARSET
15961628 Font.Color = clWindowText
--- a/Option.pas
+++ b/Option.pas
@@ -205,6 +205,10 @@ type
205205 GroupBox20: TGroupBox;
206206 AutoSortCheckBox: TCheckBox;
207207 Label24: TLabel;
208+ GroupBox21: TGroupBox;
209+ StoredTaskTrayCB: TCheckBox;
210+ GroupBox22: TGroupBox;
211+ LoopBrowserTabsCB: TCheckBox;
208212 procedure FormCreate(Sender: TObject);
209213 procedure FormDestroy(Sender: TObject);
210214 procedure ApplyButtonClick(Sender: TObject);
@@ -864,6 +868,10 @@ begin
864868 BeAutoLoginCheckBox.Checked := GikoSys.Setting.BeAutoLogin;
865869 //履歴の最大保存数
866870 MaxRecordCountEdit.Text := IntToStr(GikoSys.Setting.MaxRecordCount);
871+ // 最小化時にタスクトレイに格納するか
872+ StoredTaskTrayCB.Checked := GikoSys.Setting.StoredTaskTray;
873+ // ブラウザタブの移動でループを許可するか
874+ LoopBrowserTabsCB.Checked := GikoSys.Setting.LoopBrowserTabs;
867875 end;
868876
869877 procedure TOptionDialog.SaveSetting;
@@ -1151,6 +1159,9 @@ begin
11511159 GikoSys.Setting.BeAutoLogin := BeAutoLoginCheckBox.Checked;
11521160 //履歴の最大保存数
11531161 GikoSys.Setting.MaxRecordCount := Max(StrToInt64Def(MaxRecordCountEdit.Text,100),1);
1162+ GikoSys.Setting.StoredTaskTray := StoredTaskTrayCB.Checked;
1163+ GikoSys.Setting.LoopBrowserTabs := LoopBrowserTabsCB.Checked;
1164+
11541165 end;
11551166
11561167 procedure TOptionDialog.SettingApply;
--- a/Setting.pas
+++ b/Setting.pas
@@ -5,7 +5,7 @@ interface
55
66 uses
77 SysUtils, Classes, Graphics, Forms, {Math, IniFiles, UCryptAuto, UBase64,}
8- ComCtrls, GestureModel;
8+ ComCtrls, GestureModel, IniFiles;
99
1010 const
1111 MAIN_COOLBAND_COUNT = 4; //メインCoolBandの数
@@ -430,9 +430,14 @@ type
430430 FInputAssistFormWidth: Integer;
431431 FInputAssistFormHeight: Integer;
432432
433- // Cookieに付加する固定コード
433+ //! Cookieに付加する固定コード
434434 FFixedCookie: String;
435-
435+ //! リンク移動履歴の保持数
436+ FMoveHistorySize : Integer;
437+ //! 最小化したときにタスクトレイに格納するか
438+ FStoredTaskTray : Boolean;
439+ //! タブの移動でループを許可する
440+ FLoopBrowserTabs : Boolean;
436441 function GetMainCoolSet(Index: Integer): TCoolSet;
437442 function GetBoardCoolSet(Index: Integer): TCoolSet;
438443 function GetBrowserCoolSet(Index: Integer): TCoolSet;
@@ -458,6 +463,16 @@ type
458463
459464 procedure SetUseCSS( value: Boolean );
460465 procedure SetCSSFileName( fileName: string );
466+ //! プロキシ設定読み込み
467+ procedure ReadProxySettings(memIni: TMemIniFile);
468+ //! 各種ウィンドウ設定読み込み
469+ procedure ReadWindowSettings(memIni: TMemIniFile);
470+ //! 入力履歴読み込み(検索+メール欄+名前)
471+ procedure ReadInputHisotrys(memIni: TMemIniFile);
472+ //! リストカラム幅読み込み
473+ procedure ReadListColumnWidth(memIni: TMemIniFile);
474+ //! カテゴリリストカラム順序読み込み
475+ procedure ReadOrdColumn(memIni: TMemIniFile);
461476 protected
462477
463478 public
@@ -503,6 +518,11 @@ type
503518 function GetEditorKeyFileName: String;
504519 procedure WriteLogFolder(AVal : String);
505520 function GetInputAssistFileName : String;
521+ {
522+ \brief リンク履歴の保持サイズのsetter
523+ \param AVal 設定するサイズ( >0)
524+ }
525+ procedure SetMoveHistorySize(AVal : Integer);
506526 //受信バッファサイズ
507527 property RecvBufferSize: Integer read FRecvBufferSize write FRecvBufferSize;
508528 //HTTP1.1使用
@@ -758,7 +778,12 @@ type
758778 property InputAssistFormHeight: Integer read FInputAssistFormHeight write FInputAssistFormHeight;
759779 //! Cookieに付加する固定コード
760780 property FixedCookie: String read FFixedCookie write FFixedCookie;
761-
781+ //! リンク移動履歴の保持数
782+ property MoveHistorySize : Integer read FMoveHistorySize write SetMoveHistorySize;
783+ //! 最小化時にタスクトレイに格納するか
784+ property StoredTaskTray : Boolean read FStoredTaskTray write FStoredTaskTray;
785+ //! ブラウザタブのループを許可する
786+ property LoopBrowserTabs : Boolean read FLoopBrowserTabs write FLoopBrowserTabs;
762787 end;
763788
764789
@@ -800,7 +825,7 @@ const
800825 implementation
801826
802827 uses
803- Math, IniFiles, UCryptAuto, UBase64;
828+ Math, UCryptAuto, UBase64;
804829
805830 type
806831 TSoundName = record
@@ -953,20 +978,11 @@ end;
953978
954979 //設定ファイル読込
955980 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;
961981 var
962982 ini: TMemIniFile;
963983 i: Integer;
964- id, code : Integer;
965- wkList: TStringList;
966- wkStr: string;
967984 Exists: Boolean;
968985 s: string;
969-// id: Integer;
970986 CoolSet: TCoolSet;
971987 begin
972988 Exists := FileExists(GetFileName);
@@ -979,60 +995,11 @@ begin
979995 //プロキシ接続HTTP1.1使用
980996 FProxyProtocol := ini.ReadBool('HTTP', 'ProxyProtocol', False);
981997
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+ // プロキシ設定読み込み
999+ ReadProxySettings( ini );
1000+
1001+ // 各種ウィンドウの設定読み込み
1002+ ReadWindowSettings( ini );
10361003
10371004 FWindowTop := ini.ReadInteger('WindowSize', 'Top', -1);
10381005 FWindowLeft := ini.ReadInteger('WindowSize', 'Left', -1);
@@ -1089,112 +1056,14 @@ begin
10891056 // FListHeightMax := ini.ReadBool('List', 'HeightMax', False);
10901057 // FListWidthMax := ini.ReadBool('List', 'WidthMax', False);
10911058
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 );
11151061
11161062 // リストカラム幅
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 );
11491064
11501065 // カテゴリリストカラム順序
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- // 勢いのカラムはデフォルトで非表示にする
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 );
11981067
11991068 //リスト番号
12001069 FListViewNo := ini.ReadBool('Function', 'ListViewNo', True);
@@ -1381,6 +1250,12 @@ begin
13811250 // Cookieに付加する固定コード
13821251 FFixedCookie := ini.ReadString('Cookie', 'fixedString', FIXED_COOKIE);
13831252
1253+ // リンク移動履歴の最大保持数
1254+ FMoveHistorySize := ini.ReadInteger('MoveHisotry', 'Max', 20);
1255+
1256+ FStoredTaskTray := ini.ReadBool('Function', 'StroedTaskTray', false);
1257+ FLoopBrowserTabs := ini.ReadBool('Function', 'LoopBrowserTabs', false);
1258+
13841259 ini.UpdateFile;
13851260 finally
13861261 ini.Free;
@@ -1752,6 +1627,11 @@ begin
17521627 // 固定のCookie文字列
17531628 ini.WriteString('Cookie', 'fixedString', FFixedCookie);
17541629
1630+ // リンク移動履歴の最大保持数
1631+ ini.WriteInteger('MoveHisotry', 'Max', FMoveHistorySize);
1632+
1633+ ini.WriteBool('Function', 'StroedTaskTray', FStoredTaskTray);
1634+ ini.WriteBool('Function', 'LoopBrowserTabs', FLoopBrowserTabs);
17551635 ini.UpdateFile;
17561636 finally
17571637 ini.Free;
@@ -2225,7 +2105,238 @@ function TSetting.GetInputAssistFileName : String;
22252105 begin
22262106 Result := GetConfigDir + INPUTASSIST_FILE_NAME;
22272107 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 プロキシ設定読み込み
2116+\param memIni iniファイル
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 各種ウィンドウ設定読み込み
2144+\param menIni iniファイル
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 入力履歴読み込み(検索+メール欄+名前)
2197+\param memIni iniファイル
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 リストカラム幅読み込み
2231+\param memIni iniファイル
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+ // リストカラム幅
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+//! カテゴリリストカラム順序読み込み
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;
22282306
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;
22302319
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+ // 勢いのカラムはデフォルトで非表示にする
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.
22312342
--- a/Trip.pas
+++ b/Trip.pas
@@ -33,6 +33,16 @@ function get_2ch_trip(
3333 const pw : PChar
3434 ) : string;
3535
36+{!
37+\brief トリップの生成に必要なsaltの生成
38+\parm pw saltの元になるパスワード
39+\param salt 生成したsaltが格納される (array[0..2] of char)
40+}
41+procedure get_salt(
42+ const pw : PChar;
43+ salt : PChar
44+);
45+
3646 const
3747 kCryptInitialTr : CryptOrdering = ( o_data: (
3848 #58,#50,#42,#34,#26,#18,#10, #2,#60,#52,#44,#36,#28,#20,#12, #4,
@@ -413,18 +423,30 @@ function get_2ch_trip(
413423 var
414424 s : CryptData;
415425 salt : array [0..2] of char;
416-
417- i : Integer;
418- len : Integer;
419426 begin
420427
421- salt[ 0 ] := #0;
422428 if pw[ 0 ] = #0 then
423429 begin
424430 Result := '';
425431 Exit;
426432 end;
427433
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+
428450 if pw[ 1 ] <> #0 then
429451 begin
430452 if pw[ 2 ] <> #0 then
@@ -438,8 +460,11 @@ begin
438460 else
439461 salt[ i ] := '.';
440462
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;
443468 end;
444469 if len = 1 then
445470 salt[ 1 ] := 'H';
@@ -448,9 +473,6 @@ begin
448473 salt[ 0 ] := 'H';
449474 salt[ 1 ] := '.';
450475 end;
451-
452- Result := Copy( crypt_r( pw, salt, s ), 4, 100 );
453-
454476 end;
455477
456478 end.
--- a/gikoNavi.dpr
+++ b/gikoNavi.dpr
@@ -72,7 +72,8 @@ uses
7272 GikoMessage in 'GikoMessage.pas',
7373 InputAssist in 'InputAssist.pas' {InputAssistForm},
7474 InputAssistDataModule in 'InputAssistDataModule.pas' {InputAssistDM: TDataModule},
75- DefaultFileManager in 'DefaultFileManager.pas';
75+ DefaultFileManager in 'DefaultFileManager.pas',
76+ MoveHistoryItem in 'MoveHistoryItem.pas';
7677
7778 {$R *.RES}
7879 {$R gikoResource.res}
Binary files a/gikoNavi.res and b/gikoNavi.res differ
--- a/readme/readme.txt
+++ b/readme/readme.txt
@@ -1,4 +1,4 @@
1-■ギコナビ Version1.00 バタ53 Readme.txt
1+■ギコナビ Version1.00 バタ54 Readme.txt
22
33
44 ------------------------------
@@ -50,7 +50,7 @@
5050 ------------------------------
5151 バグや要望は、ギコナビスレッドで受け付けております。
5252 ギコナビサイト:http://gikonavi.sourceforge.jp/
53-ギコナビスレ:http://pc7.2ch.net/test/read.cgi/software/1149268313/l50
53+ギコナビスレ:http://pc7.2ch.net/test/read.cgi/software/1151728347/l50
5454
5555 ------------------------------
5656 転載について
@@ -107,7 +107,12 @@ LICENSE
107107 ------------------------------
108108 履歴
109109 ------------------------------
110-2006/XX/XX
110+2006/12/XX
111+ Version バタ54
112+ スレッド内でのリンクで移動したときの履歴を辿れる機能を追加
113+ タスクトレイに格納する機能を追加(オプションで最小化時も)
114+
115+2006/08/07
111116 Version バタ53
112117  IE7(beta)をインストールするとレスアンカーのポップアップで表示されない不具合の修正
113118  したらばJBBS板更新が、動作しない不具合の修正
@@ -116,8 +121,8 @@ LICENSE
116121  巡回予約名の変更が反映されない不具合の修正
117122  履歴削除に伴う不具合の修正
118123  カンマで連続するレスアンカーにリンクが設定されない不具合の修正
119- 
120-
124+ デフォルトの設定ファイルの扱いを統一
125+ レスエディタのプレビューで表示されるトリップキーと実際のトリップキーが異なる不具合の修正
121126
122127 2006/06/18
123128 Version バタ52
--- a/res/default/Samba.default
+++ b/res/default/Samba.default
@@ -3,15 +3,14 @@ aa5=30
33 academy4=30
44 anime=45
55 book3=30
6-bubble4=120
6+bubble4=30
77 comic6=30
88 etc3=30
99 etc4=30
1010 ex9=15
1111 ex11=15
12-ex12=15
13-ex13=15
14-ex14=15
12+ex13=120
13+ex16=15
1514 food6=30
1615 game9=30
1716 game10=30
@@ -22,29 +21,31 @@ life7=30
2221 live14=10
2322 live19=10
2423 live22x=10
24+live23=10
2525 love3=30
2626 money4=30
27-music4=30
2827 music5=30
28+music6=30
2929 news18=30
3030 news19=120
31+news20=120
3132 off3=30
3233 pc7=30
3334 pc8=30
3435 qa=30
35-qb5=30
36+qb5=120
3637 qb6=30
3738 school5=30
3839 science4=30
3940 society3=30
4041 sports9=60
4142 that4=30
42-tmp5=45
43-travel2=30
43+tmp6=45
44+travel2=120
4445 tv7=30
45-tv8=60
46-pie=30
46+tv8=120
4747 idol=30
48+pie=30
4849 sakura01=30
4950 sakura02=30
50-sakura03=30
51+sakura03=120
Show on old repository browser