OSDN Git Service

・タブをリンクバーやお気に入りキャビネットにドロップするだけでお気に入り登録が可能になった。
authoryoffy <yoffy>
Sun, 28 Sep 2003 11:00:53 +0000 (11:00 +0000)
committeryoffy <yoffy>
Sun, 28 Sep 2003 11:00:53 +0000 (11:00 +0000)
Giko.dfm
Giko.pas
gikoNavi.res
readme/readme.txt

index e7d36d8..815faa2 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -795,6 +795,7 @@ object GikoForm: TGikoForm
                 Width = 625
                 Height = 18
                 Align = alClient
+                DragMode = dmAutomatic
                 Font.Charset = SHIFTJIS_CHARSET
                 Font.Color = clWindowText
                 Font.Height = -11
@@ -1112,6 +1113,8 @@ object GikoForm: TGikoForm
           TabOrder = 3
           Transparent = True
           Wrapable = False
+          OnDragDrop = LinkToolBarDragDrop
+          OnDragOver = LinkToolBarDragOver
         end
       end
     end
index 106b560..508b6b4 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -791,6 +791,9 @@ type
     procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
     procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
     procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
+    procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
        private
                { Private \90é\8c¾ }
 
@@ -7388,6 +7391,8 @@ end;
 
 procedure TGikoForm.FavoriteTreeViewDragOver(Sender, Source: TObject; X,
   Y: Integer; State: TDragState; var Accept: Boolean);
+var
+       Node: TTreeNode;
 begin
        if Source = FavoriteTreeView then begin
                if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
@@ -7395,27 +7400,62 @@ begin
                        Exit;
                end;
                Accept := True;
-       end else
+  end else if Source = BrowserTab then
+         Accept := True
+       else
                Accept := False;
 end;
 
 procedure TGikoForm.FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
   Y: Integer);
+var
+       idx: Integer;
+       ThreadItem: TThreadItem;
+  Node: TTreeNode;
+  FavNode: TTreeNode;
+       FavoThreadItem: TFavoriteThreadItem;
 begin
 
-       if FavoriteTreeView.GetNodeAt(X, Y) = nil then
-               Exit;
-       if Source <> FavoriteTreeView then
-               Exit;
-       if FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y) then
+       Node := FavoriteTreeView.GetNodeAt(X, Y);
+
+       if Node = nil then
                Exit;
+  if Source <> BrowserTab then begin
+    if Source <> FavoriteTreeView then
+      Exit;
+    if FavoriteTreeView.Selected = Node then
+      Exit;
+  end;
+
+  if Source = BrowserTab then begin
+
+    idx := BrowserTab.TabIndex;
+    if BrowserTab.Tabs.Objects[idx] is TThreadItem then begin
+      ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
+      if not (TObject(Node.Data) is TFavoriteFolder) then
+       FavNode := Node.Parent
+      else
+       FavNode := Node;
+
+                       FavoThreadItem := TFavoriteThreadItem.Create;
+                       FavoThreadItem.BBSID := ThreadItem.ParentBoard.BBSID;
+                       FavoThreadItem.ThreadID := ThreadItem.FileName;
+                       FavoThreadItem.ThreadName := ThreadItem.Title;
+      Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
+      Node.ImageIndex := 16;
+      Node.SelectedIndex := 16;
+    end;
+
+  end else begin
 
-       if TObject(FavoriteTreeView.GetNodeAt(X, Y).Data) is TFavoriteFolder then
-               FavoriteTreeView.Selected.MoveTo(FavoriteTreeView.GetNodeAt(X, Y), naAddChild)
-       else if TObject(FavoriteTreeView.GetNodeAt(X, Y).Data) is TFavoriteBoardItem then
-               FavoriteTreeView.Selected.MoveTo(FavoriteTreeView.GetNodeAt(X, Y), naInsert)
-       else if TObject(FavoriteTreeView.GetNodeAt(X, Y).Data) is TFavoriteThreadItem then
-               FavoriteTreeView.Selected.MoveTo(FavoriteTreeView.GetNodeAt(X, Y), naInsert);
+    if TObject(Node.Data) is TFavoriteFolder then
+      FavoriteTreeView.Selected.MoveTo(Node, naAddChild)
+    else if TObject(Node.Data) is TFavoriteBoardItem then
+      FavoriteTreeView.Selected.MoveTo(Node, naInsert)
+    else if TObject(Node.Data) is TFavoriteThreadItem then
+      FavoriteTreeView.Selected.MoveTo(Node, naInsert);
+
+  end;
 
   SetLinkBar;
 
@@ -7780,6 +7820,77 @@ begin
 
 end;
 
+procedure TGikoForm.LinkToolBarDragDrop(Sender, Source: TObject; X,
+  Y: Integer);
+var
+       i, idx: Integer;
+       ThreadItem: TThreadItem;
+  Node: TTreeNode;
+  FavNode: TTreeNode;
+       FavoThreadItem: TFavoriteThreadItem;
+begin
+
+  for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
+    if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
+       Node := FavoriteTreeView.Items[i];
+                       Break;
+    end;
+  end;
+
+       if Node = nil then
+               Exit;
+  if Source <> BrowserTab then begin
+    if Source <> FavoriteTreeView then
+      Exit;
+    if FavoriteTreeView.Selected = Node then
+      Exit;
+  end;
+
+  if Source = BrowserTab then begin
+
+    idx := BrowserTab.TabIndex;
+    if BrowserTab.Tabs.Objects[idx] is TThreadItem then begin
+      ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
+      if not (TObject(Node.Data) is TFavoriteFolder) then
+       FavNode := Node.Parent
+      else
+       FavNode := Node;
+
+                       FavoThreadItem := TFavoriteThreadItem.Create;
+                       FavoThreadItem.BBSID := ThreadItem.ParentBoard.BBSID;
+                       FavoThreadItem.ThreadID := ThreadItem.FileName;
+                       FavoThreadItem.ThreadName := ThreadItem.Title;
+      Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
+      Node.ImageIndex := 16;
+      Node.SelectedIndex := 16;
+    end;
+
+  end;
+
+  SetLinkBar;
+
+
+end;
+
+procedure TGikoForm.LinkToolBarDragOver(Sender, Source: TObject; X,
+  Y: Integer; State: TDragState; var Accept: Boolean);
+var
+       Node: TTreeNode;
+begin
+
+       if Source = FavoriteTreeView then begin
+               if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
+                       Accept := False;
+                       Exit;
+               end;
+               Accept := True;
+  end else if Source = BrowserTab then
+       Accept := True
+       else
+               Accept := False;
+
+end;
+
 initialization
                                OleInitialize(nil);
 finalization
index ba0df62..e8ac7c6 100644 (file)
Binary files a/gikoNavi.res and b/gikoNavi.res differ
index 7c11a6f..b1e2cf4 100644 (file)
@@ -90,6 +90,7 @@ Windows Server 2003 Enterprise Edition IE6
 ------------------------------
 2003/09/28
   Version ÊÞÀ42
+  \83^\83u\82ð\83\8a\83\93\83N\83o\81[\82â\82¨\8bC\82É\93ü\82è\83L\83\83\83r\83l\83b\83g\82É\83h\83\8d\83b\83v\82·\82é\82¾\82¯\82Å\82¨\8bC\82É\93ü\82è\93o\98^\82ª\89Â\94\\82É\82È\82Á\82½\81B
   \83X\83L\83\93\91Î\89\9e\83^\83O\82É BBSNAME, BOARDNAME, BOARDURL, THREADURL \82ð\92Ç\89Á\81B
   \83I\83v\83V\83\87\83\93\83_\83C\83A\83\8d\83O\82É\82æ\82é\83X\83^\83C\83\8b\83V\81[\83g\82â\83X\83L\83\93\82Ì\95Ï\8dX\82ª\81A\8c»\8dÝ\95\\8e¦\92\86\82Ì\83X\83\8c\83b\83h\82É\94½\89f\82³\82ê\82é\82æ\82¤\82É\82È\82Á\82½\81B
   \83I\83v\83V\83\87\83\93\83_\83C\83A\83\8d\83O\82Ì\83^\83u\81A\82¨\82æ\82Ñ\8dÅ\8cã\82É\95\\8e¦\82µ\82½\83L\83\83\83r\83l\83b\83g\82ð\8ao\82¦\82é\82æ\82¤\82É\82È\82Á\82½\81B