6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, Favorite, ImgList, BoardGroup, NewFavoriteFolder;
10 TFavoriteAddDialog = class(TForm)
17 CancelButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
21 procedure FormCreate(Sender: TObject);
22 procedure OKButtonClick(Sender: TObject);
23 procedure CancelButtonClick(Sender: TObject);
24 procedure NewFolderButtonClick(Sender: TObject);
28 FThreadItem: TThreadItem;
29 procedure CopyTree( dst, src : TTreeNode );
30 // procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
31 function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
34 procedure SetBoard(Board: TBoard);
35 procedure SetThreadItem(ThreadItem: TThreadItem);
39 FavoriteAddDialog: TFavoriteAddDialog;
47 procedure TFavoriteAddDialog.CopyTree( dst, src : TTreeNode );
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 );
58 src := src.getNextSibling;
62 procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
66 CenterForm: TCustomForm;
68 CenterForm := TCustomForm(Owner);
69 if Assigned(CenterForm) then begin
70 Left := ((CenterForm.Width - Width) div 2) + CenterForm.Left;
71 Top := ((CenterForm.Height - Height) div 2) + CenterForm.Top;
73 Left := (Screen.Width - Width) div 2;
74 Top := (Screen.Height - Height) div 2;
77 FolderTreeView.Items.BeginUpdate;
79 // FavoriteDM
\82Ì
\83t
\83H
\83\8b\83_
\8aK
\91w
\82ð
\83R
\83s
\81[
80 FolderTreeView.Items.Clear;
81 src := FavoriteDM.TreeView.Items.GetFirstNode;
82 node := TTreeNode.Create( FolderTreeView.Items );
83 node := FolderTreeView.Items.AddFirst( node, src.Text );
84 node.Data := src.Data;
85 node.ImageIndex := src.ImageIndex;
86 node.SelectedIndex := src.SelectedIndex;
87 CopyTree( node, src.getFirstChild );
89 if FolderTreeView.Items.GetFirstNode <> nil then begin
90 FolderTreeView.Items.GetFirstNode.Expanded := True;
91 FolderTreeView.Items.GetFirstNode.Selected := True;
93 FolderTreeView.Items.EndUpdate;
95 { Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
97 Node.Data := GikoForm.Favorite.Root;
98 PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
99 Node.Expanded := True;
100 Node.Selected := True;}
104 {procedure TFavoriteAddDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
107 ChildFavo: TFavoriteItem;
108 ChildNode: TTreeNode;
110 for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
112 ChildFavo := TFavoriteFolder(Favo).Items[i];
113 if ChildFavo is TFavoriteFolder then begin
114 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
115 ChildNode.ImageIndex := 0;
116 ChildNode.Data := ChildFavo;
117 PrepareFavoriteTree(ChildFavo, ChildNode);
118 end else if ChildFavo is TFavoriteBoardItem then begin
119 end else if ChildFavo is TFavoriteThreadItem then begin
124 procedure TFavoriteAddDialog.OKButtonClick(Sender: TObject);
128 FavoBoardItem : TFavoriteBoardItem;
129 FavoThreadItem : TFavoriteThreadItem;
132 if FolderTreeView.Selected = nil then
135 Node := FolderTreeView.Items.GetFirstNode;
136 while Node <> nil do begin
137 FavNode := GetGikoFavoriteNode(Node.Data);
138 if FavNode = nil then begin
139 if Node.Parent <> nil then
140 FavNode := GetGikoFavoriteNode(Node.Parent.Data);
141 if FavNode <> nil then begin
142 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Node.Text, Node.Data);
143 NewNode.ImageIndex := 14;
144 NewNode.SelectedIndex := 14;
147 Node := Node.GetNext;
150 FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
151 if FavNode <> nil then begin
152 if FBoard <> nil then begin
153 FavoBoardItem := TFavoriteBoardItem.Create( FBoard.URL, FBoard.Title, FBoard );
154 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
155 NewNode.ImageIndex := 15;
156 NewNode.SelectedIndex := 15;
157 end else if FThreadItem <> nil then begin
158 FavoThreadItem := TFavoriteThreadItem.Create( FThreadItem.URL, FThreadItem.Title, FThreadItem );
159 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
160 NewNode.ImageIndex := 16;
161 NewNode.SelectedIndex := 16;
165 FavoriteDM.WriteFavorite;
169 procedure TFavoriteAddDialog.CancelButtonClick(Sender: TObject);
174 procedure TFavoriteAddDialog.NewFolderButtonClick(Sender: TObject);
176 Dlg: TNewFavoriteFolderDialog;
178 FavFolder: TFavoriteFolder;
180 if FolderTreeView.Selected = nil then
183 Dlg := TNewFavoriteFolderDialog.Create(Self);
186 if Dlg.ModalResult = mrOK then begin
187 if Length(Dlg.FolderEdit.Text) = 0 then
189 FavFolder := TFavoriteFolder.Create;
190 Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, FavFolder);
191 Node.ImageIndex := 14;
192 Node.SelectedIndex := 14;
193 FolderTreeView.Selected := Node;
200 procedure TFavoriteAddDialog.SetBoard(Board: TBoard);
203 if Board = nil then Exit;
205 NameEdit.Text := Board.Title;
206 CaptionEdit.Text := Board.Title;
207 TitleLabel.Caption := '
\82±
\82Ì
\94Â
\82ª
\82¨
\8bC
\82É
\93ü
\82è
\82É
\92Ç
\89Á
\82³
\82ê
\82Ü
\82·';
208 NameLabel.Caption := '
\94Â
\96¼:';
211 procedure TFavoriteAddDialog.SetThreadItem(ThreadItem: TThreadItem);
213 FThreadItem := ThreadItem;
214 if ThreadItem = nil then Exit;
216 NameEdit.Text := ThreadItem.Title;
217 CaptionEdit.Text := ThreadItem.Title;
218 TitleLabel.Caption := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82ª
\82¨
\8bC
\82É
\93ü
\82è
\82É
\92Ç
\89Á
\82³
\82ê
\82Ü
\82·';
219 NameLabel.Caption := '
\83X
\83\8c\83b
\83h
\96¼:';
222 function TFavoriteAddDialog.GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
227 Node := FavoriteDM.TreeView.Items.GetFirstNode;
228 while Node <> nil do begin
229 if Node.Data = FavFolder then begin
233 Node := Node.GetNext;