OSDN Git Service

1.52.1.658
[gikonavigoeson/gikonavi.git] / FavoriteAdd.pas
1 unit FavoriteAdd;
2
3 interface
4
5 uses
6         Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7         Dialogs, ComCtrls, StdCtrls, Favorite, ImgList, BoardGroup, NewFavoriteFolder;
8
9 type
10         TFavoriteAddDialog = class(TForm)
11     TitleLabel: TLabel;
12     NameLabel: TLabel;
13                 Label3: TLabel;
14     NameEdit: TEdit;
15                 CaptionEdit: TEdit;
16                 OKButton: TButton;
17                 CancelButton: TButton;
18                 NewFolderButton: TButton;
19                 FolderTreeView: TTreeView;
20                 Label4: TLabel;
21                 procedure FormCreate(Sender: TObject);
22                 procedure OKButtonClick(Sender: TObject);
23                 procedure CancelButtonClick(Sender: TObject);
24                 procedure NewFolderButtonClick(Sender: TObject);
25         private
26                 { Private \90é\8c¾ }
27                 FBoard: TBoard;
28                 FThreadItem: TThreadItem;
29                 procedure CopyTree( dst, src : TTreeNode );
30 //              procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
31                 function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
32         public
33                 { Public \90é\8c¾ }
34                 procedure SetBoard(Board: TBoard);
35                 procedure SetThreadItem(ThreadItem: TThreadItem);
36         end;
37
38 var
39         FavoriteAddDialog: TFavoriteAddDialog;
40
41 implementation
42
43 uses Giko;
44
45 {$R *.dfm}
46
47 procedure TFavoriteAddDialog.CopyTree( dst, src : TTreeNode );
48 var
49         newNode : TTreeNode;
50 begin
51         while src <> nil do begin
52                 if TObject( src.Data ) is TFavoriteFolder then begin
53                         newNode := FolderTreeView.Items.AddChildObject( dst, src.Text, src.Data );
54                         newNode.ImageIndex              := src.ImageIndex;
55                         newNode.SelectedIndex   := src.SelectedIndex;
56                         CopyTree( newNode, src.getFirstChild );
57                 end;
58                 src := src.getNextSibling;
59         end;
60 end;
61
62 procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
63 var
64         src             : TTreeNode;
65         node    : TTreeNode;
66 begin
67         FolderTreeView.Items.BeginUpdate;
68
69         // FavoriteDM \82Ì\83t\83H\83\8b\83_\8aK\91w\82ð\83R\83s\81[
70         FolderTreeView.Items.Clear;
71         src             := FavoriteDM.TreeView.Items.GetFirstNode;
72         node    := TTreeNode.Create( FolderTreeView.Items );
73         node := FolderTreeView.Items.AddFirst( node, src.Text );
74         node.Data                                               := src.Data;
75         node.ImageIndex                 := src.ImageIndex;
76         node.SelectedIndex      := src.SelectedIndex;
77         CopyTree( node, src.getFirstChild );
78
79         if FolderTreeView.Items.GetFirstNode <> nil then begin
80                 FolderTreeView.Items.GetFirstNode.Expanded := True;
81                 FolderTreeView.Items.GetFirstNode.Selected := True;
82         end;
83         FolderTreeView.Items.EndUpdate;
84
85 {       Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
86         Node.ImageIndex := 0;
87         Node.Data := GikoForm.Favorite.Root;
88         PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
89         Node.Expanded := True;
90         Node.Selected := True;}
91 end;
92
93
94 {procedure TFavoriteAddDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
95 var
96         i: Integer;
97         ChildFavo: TFavoriteItem;
98         ChildNode: TTreeNode;
99 begin
100         for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
101
102                 ChildFavo := TFavoriteFolder(Favo).Items[i];
103                 if ChildFavo is TFavoriteFolder then begin
104                         ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
105                         ChildNode.ImageIndex := 0;
106                         ChildNode.Data := ChildFavo;
107                         PrepareFavoriteTree(ChildFavo, ChildNode);
108                 end else if ChildFavo is TFavoriteBoardItem then begin
109                 end else if ChildFavo is TFavoriteThreadItem then begin
110                 end;
111         end;
112 end;}
113
114 procedure TFavoriteAddDialog.OKButtonClick(Sender: TObject);
115 var
116         Node                                            : TTreeNode;
117         NewNode                                 : TTreeNode;
118         FavoBoardItem           : TFavoriteBoardItem;
119         FavoThreadItem  : TFavoriteThreadItem;
120         FavNode                                 : TTreeNode;
121 begin
122         if FolderTreeView.Selected = nil then
123                 Exit;
124
125         Node            := FolderTreeView.Items.GetFirstNode;
126         while Node <> nil do begin
127                 FavNode := GetGikoFavoriteNode(Node.Data);
128                 if FavNode = nil then begin
129                         if Node.Parent <> nil then
130                                 FavNode := GetGikoFavoriteNode(Node.Parent.Data);
131                         if FavNode <> nil then begin
132                                 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Node.Text, Node.Data);
133                                 NewNode.ImageIndex := 14;
134                                 NewNode.SelectedIndex := 14;
135                         end;
136                 end;
137                 Node := Node.GetNext;
138         end;
139
140         FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
141         if FavNode <> nil then begin
142                 if FBoard <> nil then begin
143                         FavoBoardItem := TFavoriteBoardItem.Create( FBoard.URL, FBoard.Title, FBoard );
144                         NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
145                         NewNode.ImageIndex := 15;
146                         NewNode.SelectedIndex := 15;
147                 end else if FThreadItem <> nil then begin
148                         FavoThreadItem := TFavoriteThreadItem.Create( FThreadItem.URL, FThreadItem.Title, FThreadItem );
149                         NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
150                         NewNode.ImageIndex := 16;
151                         NewNode.SelectedIndex := 16;
152                 end;
153         end;
154
155         FavoriteDM.WriteFavorite;
156         Close;
157 end;
158
159 procedure TFavoriteAddDialog.CancelButtonClick(Sender: TObject);
160 begin
161         Close;
162 end;
163
164 procedure TFavoriteAddDialog.NewFolderButtonClick(Sender: TObject);
165 var
166         Dlg: TNewFavoriteFolderDialog;
167         Node: TTreeNode;
168         FavFolder: TFavoriteFolder;
169 begin
170         if FolderTreeView.Selected = nil then
171                 Exit;
172
173         Dlg := TNewFavoriteFolderDialog.Create(Self);
174         try
175                 Dlg.ShowModal;
176                 if Dlg.ModalResult = mrOK then begin
177                         if Length(Dlg.FolderEdit.Text) = 0 then
178                                 Exit;
179                         FavFolder := TFavoriteFolder.Create;
180                         Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, FavFolder);
181                         Node.ImageIndex := 14;
182                         Node.SelectedIndex := 14;
183                         FolderTreeView.Selected := Node;
184                 end;
185         finally
186                 Dlg.Free;
187         end;
188 end;
189
190 procedure TFavoriteAddDialog.SetBoard(Board: TBoard);
191 begin
192         FBoard := Board;
193         if Board = nil then Exit;
194
195         NameEdit.Text := Board.Title;
196         CaptionEdit.Text := Board.Title;
197         TitleLabel.Caption := '\82±\82Ì\94Â\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
198         NameLabel.Caption := '\94Â\96¼:';
199 end;
200
201 procedure TFavoriteAddDialog.SetThreadItem(ThreadItem: TThreadItem);
202 begin
203         FThreadItem := ThreadItem;
204         if ThreadItem = nil then Exit;
205
206         NameEdit.Text := ThreadItem.Title;
207         CaptionEdit.Text := ThreadItem.Title;
208         TitleLabel.Caption := '\82±\82Ì\83X\83\8c\83b\83h\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
209         NameLabel.Caption := '\83X\83\8c\83b\83h\96¼:';
210 end;
211
212 function TFavoriteAddDialog.GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
213 var
214         Node    : TTreeNode;
215 begin
216         Result  := nil;
217         Node            := FavoriteDM.TreeView.Items.GetFirstNode;
218         while Node <> nil do begin
219                 if Node.Data = FavFolder then begin
220                         Result := Node;
221                         Exit;
222                 end;
223                 Node := Node.GetNext;
224         end;
225 end;
226
227 end.