OSDN Git Service

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