OSDN Git Service

TListの解放し忘れがあったので解放するようにした。
[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 PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
30                 function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
31         public
32                 { Public \90é\8c¾ }
33                 procedure SetBoard(Board: TBoard);
34                 procedure SetThreadItem(ThreadItem: TThreadItem);
35         end;
36
37 var
38         FavoriteAddDialog: TFavoriteAddDialog;
39
40 implementation
41
42 uses Giko;
43
44 {$R *.dfm}
45
46 procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
47 var
48         i: Integer;
49 begin
50         FolderTreeView.Items.BeginUpdate;
51         FolderTreeView.Items := FavoriteDM.TreeView.Items;
52         for i := FolderTreeView.Items.Count - 1 downto 0 do begin
53                 if not (TObject(FolderTreeView.Items[i].Data) is TFavoriteFolder) then
54                         FolderTreeView.Items[i].Delete;
55         end;
56
57         if FolderTreeView.Items.GetFirstNode <> nil then begin
58                 FolderTreeView.Items.GetFirstNode.Expanded := True;
59                 FolderTreeView.Items.GetFirstNode.Selected := True;
60         end;
61     FolderTreeView.Items.EndUpdate;
62
63 {       Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
64         Node.ImageIndex := 0;
65         Node.Data := GikoForm.Favorite.Root;
66         PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
67         Node.Expanded := True;
68         Node.Selected := True;}
69 end;
70
71
72 {procedure TFavoriteAddDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
73 var
74         i: Integer;
75         ChildFavo: TFavoriteItem;
76         ChildNode: TTreeNode;
77 begin
78         for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
79
80                 ChildFavo := TFavoriteFolder(Favo).Items[i];
81                 if ChildFavo is TFavoriteFolder then begin
82                         ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
83                         ChildNode.ImageIndex := 0;
84                         ChildNode.Data := ChildFavo;
85                         PrepareFavoriteTree(ChildFavo, ChildNode);
86                 end else if ChildFavo is TFavoriteBoardItem then begin
87                 end else if ChildFavo is TFavoriteThreadItem then begin
88                 end;
89         end;
90 end;}
91
92 procedure TFavoriteAddDialog.OKButtonClick(Sender: TObject);
93 var
94         i: Integer;
95         Node: TTreeNode;
96         FavoBoardItem: TFavoriteBoardItem;
97         FavoThreadItem: TFavoriteThreadItem;
98         FavNode: TTreeNode;
99 begin
100         if FolderTreeView.Selected = nil then
101                 Exit;
102     Node := nil;
103         for i := 0 to FolderTreeView.Items.Count - 1 do begin
104
105                 FavNode := GetGikoFavoriteNode(FolderTreeView.Items[i].Data);
106                 if FavNode = nil then begin
107                         FavNode := GetGikoFavoriteNode(FolderTreeView.Items[i].Parent.Data);
108                         if FavNode <> nil then
109                                 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, FolderTreeView.Items[i].Text, FolderTreeView.Items[i].Data);
110                                 Node.ImageIndex := 14;
111                                 Node.SelectedIndex := 14;
112                 end;
113         end;
114
115
116         FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
117         if FavNode <> nil then begin
118                 if FBoard <> nil then begin
119                         FavoBoardItem := TFavoriteBoardItem.Create( FBoard.URL, FBoard.Title, FBoard );
120                         Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
121                         Node.ImageIndex := 15;
122                         Node.SelectedIndex := 15;
123                 end else if FThreadItem <> nil then begin
124                         FavoThreadItem := TFavoriteThreadItem.Create( FThreadItem.URL, FThreadItem.Title, FThreadItem );
125                         Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
126                         Node.ImageIndex := 16;
127                         Node.SelectedIndex := 16;
128                 end;
129         end;
130
131         FavoriteDM.WriteFavorite;
132         Close;
133 end;
134
135 procedure TFavoriteAddDialog.CancelButtonClick(Sender: TObject);
136 begin
137         Close;
138 end;
139
140 procedure TFavoriteAddDialog.NewFolderButtonClick(Sender: TObject);
141 var
142         Dlg: TNewFavoriteFolderDialog;
143         Node: TTreeNode;
144         FavFolder: TFavoriteFolder;
145 begin
146         if FolderTreeView.Selected = nil then
147                 Exit;
148
149         Dlg := TNewFavoriteFolderDialog.Create(Self);
150         try
151                 Dlg.ShowModal;
152                 if Dlg.ModalResult = mrOK then begin
153                         if Length(Dlg.FolderEdit.Text) = 0 then
154                                 Exit;
155                         FavFolder := TFavoriteFolder.Create;
156                         Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, FavFolder);
157                         Node.ImageIndex := 14;
158                         Node.SelectedIndex := 14;
159                         FolderTreeView.Selected := Node;
160                 end;
161         finally
162                 Dlg.Free;
163         end;
164 end;
165
166 procedure TFavoriteAddDialog.SetBoard(Board: TBoard);
167 begin
168         FBoard := Board;
169         if Board = nil then Exit;
170
171         NameEdit.Text := Board.Title;
172         CaptionEdit.Text := Board.Title;
173         TitleLabel.Caption := '\82±\82Ì\94Â\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
174         NameLabel.Caption := '\94Â\96¼:';
175 end;
176
177 procedure TFavoriteAddDialog.SetThreadItem(ThreadItem: TThreadItem);
178 begin
179         FThreadItem := ThreadItem;
180         if ThreadItem = nil then Exit;
181
182         NameEdit.Text := ThreadItem.Title;
183         CaptionEdit.Text := ThreadItem.Title;
184         TitleLabel.Caption := '\82±\82Ì\83X\83\8c\83b\83h\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
185         NameLabel.Caption := '\83X\83\8c\83b\83h\96¼:';
186 end;
187
188 function TFavoriteAddDialog.GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
189 var
190         i: Integer;
191 begin
192         Result := nil;
193         for i := 0 to FavoriteDM.TreeView.Items.Count - 1 do begin
194                 if FavoriteDM.TreeView.Items[i].Data = FavFolder then begin
195                         Result := FavoriteDM.TreeView.Items[i];
196                         Exit;
197                 end;
198         end;
199 end;
200
201 end.