OSDN Git Service

設定保存完了時にメッセージを表示するように修正
[gikonavigoeson/gikonavi.git] / FavoriteAdd.pas
index 7991c99..2bf2192 100644 (file)
@@ -26,6 +26,7 @@ type
                { Private \90é\8c¾ }
                FBoard: TBoard;
                FThreadItem: TThreadItem;
+               procedure CopyTree( dst, src : TTreeNode );
 //             procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
                function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
        public
@@ -43,23 +44,37 @@ uses Giko;
 
 {$R *.dfm}
 
-procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
+procedure TFavoriteAddDialog.CopyTree( dst, src : TTreeNode );
 var
-       Node            : TTreeNode;
-       TmpNode : TTreeNode;
+       newNode : TTreeNode;
 begin
-       FolderTreeView.Items.BeginUpdate;
-       FolderTreeView.Items := FavoriteDM.TreeView.Items;
-       Node := FolderTreeView.Items.GetFirstNode;
-       while Node <> nil do begin
-               if not (TObject(Node.Data) is TFavoriteFolder) then begin
-                       TmpNode := Node;
-                       Node := Node.GetNext;
-                       TmpNode.Delete;
-               end else begin
-                       Node := Node.GetNext;
+       while src <> nil do begin
+               if TObject( src.Data ) is TFavoriteFolder then begin
+                       newNode := FolderTreeView.Items.AddChildObject( dst, src.Text, src.Data );
+                       newNode.ImageIndex              := src.ImageIndex;
+                       newNode.SelectedIndex   := src.SelectedIndex;
+                       CopyTree( newNode, src.getFirstChild );
                end;
+               src := src.getNextSibling;
        end;
+end;
+
+procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
+var
+       src             : TTreeNode;
+       node    : TTreeNode;
+begin
+       FolderTreeView.Items.BeginUpdate;
+
+       // FavoriteDM \82Ì\83t\83H\83\8b\83_\8aK\91w\82ð\83R\83s\81[
+       FolderTreeView.Items.Clear;
+       src             := FavoriteDM.TreeView.Items.GetFirstNode;
+       node    := TTreeNode.Create( FolderTreeView.Items );
+       node := FolderTreeView.Items.AddFirst( node, src.Text );
+       node.Data                                               := src.Data;
+       node.ImageIndex                 := src.ImageIndex;
+       node.SelectedIndex      := src.SelectedIndex;
+       CopyTree( node, src.getFirstChild );
 
        if FolderTreeView.Items.GetFirstNode <> nil then begin
                FolderTreeView.Items.GetFirstNode.Expanded := True;
@@ -107,12 +122,12 @@ begin
        if FolderTreeView.Selected = nil then
                Exit;
 
-       NewNode := nil;
        Node            := FolderTreeView.Items.GetFirstNode;
        while Node <> nil do begin
                FavNode := GetGikoFavoriteNode(Node.Data);
                if FavNode = nil then begin
-                       FavNode := GetGikoFavoriteNode(Node.Parent.Data);
+                       if Node.Parent <> nil then
+                               FavNode := GetGikoFavoriteNode(Node.Parent.Data);
                        if FavNode <> nil then begin
                                NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Node.Text, Node.Data);
                                NewNode.ImageIndex := 14;