OSDN Git Service

ハ゛タ62の変更点を追加
[gikonavigoeson/gikonavi.git] / GikoDataModule.pas
index 23b68c1..3bc16ed 100644 (file)
@@ -42,7 +42,7 @@ const
        //! 2\82¿\82á\82ñ\82Ë\82é\82ÌURL
        URL_2ch: string = 'www.2ch.net/';
        //! \83M\83R\83i\83rWiki\82ÌURL
-       URL_Wiki: string = 'gikowiki.dyndns.info/index.php?FAQ';
+       URL_Wiki: string = 'sourceforge.jp/projects/gikonavi/wiki/FAQ';
 
        SELECTCOMBOBOX_NAME: string = ''; // '\83X\83\8c\83b\83h\8di\8d\9e\8c\9f\8dõ';
        SELECTCOMBOBOX_COLOR: TColor = clWindow;
@@ -243,6 +243,9 @@ type
     ShowTabListAction: TAction;
     DereferenceResAction: TAction;
     UpdateGikonaviAction: TAction;
+    konoURLPATHAction: TAction;
+    konoURLQueryAction: TAction;
+    PopupMenuSettingAction: TAction;
        procedure EditNGActionExecute(Sender: TObject);
        procedure ReloadActionExecute(Sender: TObject);
        procedure GoFowardActionExecute(Sender: TObject);
@@ -331,7 +334,6 @@ type
        procedure TabsSaveActionExecute(Sender: TObject);
        procedure TabsOpenActionExecute(Sender: TObject);
        procedure BeLogInOutActionExecute(Sender: TObject);
-       procedure BeLogInOutActionUpdate(Sender: TObject);
        procedure KokomadeActionExecute(Sender: TObject);
        procedure ZenbuActionExecute(Sender: TObject);
        procedure KokoResActionExecute(Sender: TObject);
@@ -456,6 +458,10 @@ type
     procedure ShowTabListActionExecute(Sender: TObject);
     procedure DereferenceResActionExecute(Sender: TObject);
     procedure UpdateGikonaviActionExecute(Sender: TObject);
+    procedure konoURLPATHActionExecute(Sender: TObject);
+    procedure konoURLQueryActionExecute(Sender: TObject);
+    procedure konoURLQueryActionUpdate(Sender: TObject);
+    procedure PopupMenuSettingActionExecute(Sender: TObject);
   private
        { Private \90é\8c¾ }
        procedure ClearResFilter;
@@ -471,7 +477,7 @@ type
        procedure ClearSelectComboBox;
     procedure ClearMailAllEditor();
     procedure ClearNameTextAllEditor();
-    procedure MoveURLWithHistory(URL : String);
+    procedure MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
     procedure BackToHistory(item: TMoveHistoryItem);
     function GetActiveThreadLinks : IHTMLElementCollection;
     procedure GetLinkURLs(links : IHTMLElementCollection;
@@ -510,7 +516,8 @@ uses
        GikoBayesian, About, ShellAPI,
        RoundName, RoundData, Menus, ListViewUtils,
        ThreadControl, GikoMessage, InputAssist,
-    DefaultFileManager, Forms, NewBoardURL, UpdateCheck;
+    DefaultFileManager, Forms, NewBoardURL, UpdateCheck,
+    PopupMenuSetting;
 
 const
        MSG_ERROR : string = '\83G\83\89\81[';
@@ -2333,20 +2340,41 @@ end;
 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
 // *************************************************************************
 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
+var
+       TmpCursor: TCursor;
+       msg : String;
 begin
-       GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
-end;
-// *************************************************************************
-//! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é\82ÌUpdate\83C\83x\83\93\83g
-// *************************************************************************
-procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
-begin
-       if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
-               if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true
-               else BeLogInOutAction.Checked := false;
-               BeLogInOutAction.Enabled := true
-       end else
-               BeLogInOutAction.Enabled := false;
+       if GikoSys.Belib.Connected then begin
+               //\83\8d\83O\83A\83E\83g
+               GikoSys.Belib.Disconnect;
+               BeLogInOutAction.Checked := False;
+               GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmBeLogout), nil, gmiOK);
+       end else begin
+               TmpCursor := GikoForm.ScreenCursor;
+               GikoForm.ScreenCursor := crHourGlass;
+               try
+                       GikoSys.Belib.ClientUA := 'gikoNavi/1.00';
+                       GikoSys.Belib.UserName := GikoSys.Setting.BeUserID;
+                       GikoSys.Belib.Password := GikoSys.Setting.BePassword;
+            if GikoSys.Setting.ReadProxy then begin
+                               GikoSys.Belib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
+                               GikoSys.Belib.ProxyPort := GikoSys.Setting.ReadProxyPort;
+                       end else begin
+                GikoSys.Belib.ProxyAddress := '';
+                               GikoSys.Belib.ProxyPort := 0;
+            end;
+            if GikoSys.Belib.Connect then begin
+                GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmBeLogin) + GikoSys.Setting.BeUserID, nil, gmiOK);
+                BeLogInOutAction.Checked := True;
+            end else begin
+                GikoForm.AddMessageList(GikoSys.Belib.ErrorMsg, nil, gmiNG);
+                GikoForm.PlaySound('Error');
+                BeLogInOutAction.Checked := False;
+                       end;
+               finally
+                       GikoForm.ScreenCursor := TmpCursor;
+               end;
+       end;
 end;
 ////////////////////////////////\83t\83@\83C\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
 // *************************************************************************
@@ -2360,7 +2388,7 @@ begin
        No := GikoForm.KokoPopupMenu.Tag;
        if No = 0
         then Exit;
-       ThreadItem := GikoForm.GetActiveContent(True);
+       ThreadItem := GikoForm.KokoPopupThreadItem;
        if not Assigned(ThreadItem) then
         Exit;
        ThreadItem.Kokomade := No;
@@ -2397,7 +2425,7 @@ var
 begin
        Number := GikoForm.KokoPopupMenu.Tag;
        if Number = 0 then Exit;
-       Item := GikoForm.GetActiveContent(True);
+       Item := GikoForm.KokoPopupThreadItem;
        if Item = nil then Exit;
 
        Editor := TEditorForm.Create(GikoForm);
@@ -2426,7 +2454,7 @@ var
 begin
        No := GikoForm.KokoPopupMenu.Tag;
        if No = 0 then Exit;
-       ThreadItem := GikoForm.GetActiveContent(True);
+       ThreadItem := GikoForm.KokoPopupThreadItem;
        if ThreadItem = nil then Exit;
 
     AID := GikoSys.GetResID(No, ThreadItem);
@@ -4138,17 +4166,17 @@ begin
             end;
         end else begin
             //URL\82É\88Ú\93®
-            MoveURLWithHistory(item.ThreadItem.URL);
+            MoveURLWithHistory(item.ThreadItem.URL, True);
         end;
     end;
 end;
 //! \97\9a\97ð\8f\88\97\9d\82Â\82«URL\88Ú\93®
-procedure TGikoDM.MoveURLWithHistory(URL : String);
+procedure TGikoDM.MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
 var
     idx : Integer;
 begin
     //URL\82É\88Ú\93®
-    GikoForm.MoveToURL(URL);
+    GikoForm.MoveToURL(URL, KeyMask);
     //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
     if idx = -1 then begin
@@ -4513,7 +4541,7 @@ begin
        No := GikoForm.KokoPopupMenu.Tag;
        if No = 0 then Exit;
 
-    ThreadItem := GikoForm.GetActiveContent;
+    ThreadItem := GikoForm.KokoPopupThreadItem;
     // \83A\83N\83e\83B\83u\83^\83u\82©\82ç\91S\82Ä\82Ì\83\8a\83\93\83N\82ð\8eæ\93¾\82·\82é
     links := GetActiveThreadLinks;
     if (ThreadItem <> nil) and (links <> nil) then begin
@@ -4595,6 +4623,88 @@ begin
     end;
 
 end;
+//! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iPATH_INFO)
+procedure TGikoDM.konoURLPATHActionExecute(Sender: TObject);
+var
+    No : Integer;
+    ThreadItem : TThreadItem;
+    URL, Protocol, Host, Path, Document, Port, Bookmark : String;
+begin
+       No := GikoForm.KokoPopupMenu.Tag;
+       if No = 0 then Exit;
+
+    ThreadItem := GikoForm.KokoPopupThreadItem;
+    if (ThreadItem.ParentBoard.Is2ch) or not (Pos('?', ThreadItem.URL) > 0) then begin
+        GikoSys.ParseURI(ThreadItem.URL,Protocol, Host, Path, Document, Port, Bookmark);
+        URL := Protocol + '://' + Host + Path + IntToStr(No);
+    end else begin
+        if Pos('?', ThreadItem.URL) > 0 then begin
+            URL := Copy(ThreadItem.URL, 1, Pos('?', ThreadItem.URL)-1);
+            // \82Ü\82¿BBS\97p\8f\88\92u
+            URL := MojuUtils.CustomStringReplace(URL, 'read.pl', 'read.cgi');
+            URL := URL + '/' + ThreadItem.ParentBoard.BBSID + '/' + ChangeFileExt(ThreadItem.FileName, '')  + '/' + IntToStr(No);
+        end;
+    end;
+    Clipboard.SetTextBuf( PChar(URL) );
+end;
+//! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING)
+procedure TGikoDM.konoURLQueryActionExecute(Sender: TObject);
+var
+    No : Integer;
+    ThreadItem : TThreadItem;
+    URL, Protocol, Host, Path, Document, Port, Bookmark : String;
+begin
+       No := GikoForm.KokoPopupMenu.Tag;
+       if No = 0 then Exit;
+
+    ThreadItem := GikoForm.KokoPopupThreadItem;
+    // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\81A\83\8c\83X\94Ô\8d\86\82ð\82¤\82Ü\82­\8f\88\97\9d\82µ\82Ä\82­\82ê\82È\82¢\82Ì\82Å\97\98\97p\95s\89Â
+    if ThreadItem.ParentBoard.Is2ch or not (Pos('?', ThreadItem.URL) > 0) then begin
+        GikoSys.ParseURI(ThreadItem.URL, Protocol, Host, Path, Document, Port, Bookmark);
+        URL := Protocol + '://' + Host + '/test/read.cgi?bbs=' + ThreadItem.ParentBoard.BBSID
+            + '&key=' + ChangeFileExt(ThreadItem.FileName, '') + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
+    end else begin
+        URL := ThreadItem.URL;
+        // \82Ü\82¿BBS
+        if Pos('&LAST=', URL) > 0 then begin
+            URL := Copy(URL, 1, Pos('&LAST=', URL) - 1);
+            URL := URL + '&START=' + IntToStr(No) + '&END=' + IntToStr(No);
+        end;
+        // \82»\82Ì\91¼\8aO\95\94\94Â
+        if Pos('&ls=', URL) > 0 then begin
+            URL := Copy(URL, 1, Pos('&ls=', URL) - 1);
+            URL := URL + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
+        end;
+
+    end;
+    Clipboard.SetTextBuf( PChar(URL) );
+end;
+//! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING\81j\82Ì\97\98\97p\83`\83F\83b\83N
+procedure TGikoDM.konoURLQueryActionUpdate(Sender: TObject);
+const
+       LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
+begin
+    // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\97\98\97p\82Å\82«\82È\82¢\82æ\82¤\82É\82·\82é\81i\82¤\82Ü\82­\83\8c\83X\8ew\92è\82Å\82«\82È\82¢\82Ì\82Å\81j
+    konoURLQueryAction.Enabled := false;
+    if (GikoForm.KokoPopupThreadItem <> nil) then begin
+        konoURLQueryAction.Enabled := not GikoForm.KokoPopupThreadItem.ParentBoard.Is2ch;
+        if konoURLQueryAction.Enabled then begin
+            konoURLQueryAction.Enabled := not (Pos(LIVEDOOR_URL, GikoForm.KokoPopupThreadItem.URL) = 1);
+        end;
+    end;
+end;
+//! \83|\83b\83v\83A\83b\83v\83\81\83j\83\85\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
+procedure TGikoDM.PopupMenuSettingActionExecute(Sender: TObject);
+var
+       Dlg: TPopupMenuSettingDialog;
+begin
+       Dlg := TPopupMenuSettingDialog.Create(GikoForm, GikoFormActionList);
+       try
+               Dlg.ShowModal;
+       finally
+               Dlg.Release;
+       end;
+end;
 
 end.